remote-codex 0.11.1 → 0.11.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/apps/supervisor-api/dist/index.js +2271 -773
- package/apps/supervisor-web/dist/assets/core-DIQen2lE.js +12 -0
- package/apps/supervisor-web/dist/assets/{css-DPfMkruS.js → css-CLj8gQPS.js} +1 -1
- package/apps/supervisor-web/dist/assets/engine-javascript-DBd1bXLz.js +141 -0
- package/apps/supervisor-web/dist/assets/graph-vendor-C5ap-Sga.css +1 -0
- package/apps/supervisor-web/dist/assets/graph-vendor-CGzY-MFv.js +23 -0
- package/apps/supervisor-web/dist/assets/{html-GMplVEZG.js → html-pp8916En.js} +1 -1
- package/apps/supervisor-web/dist/assets/index-CbDzXN9T.css +1 -0
- package/apps/supervisor-web/dist/assets/index-DQpHiQXN.js +4 -0
- package/apps/supervisor-web/dist/assets/markdown-vendor-hBDTCSB-.js +291 -0
- package/apps/supervisor-web/dist/assets/react-vendor-o1Xrx7m4.js +60 -0
- package/apps/supervisor-web/dist/assets/{shellscript-Yzrsuije.js → shellscript-CEILq0vU.js} +1 -1
- package/apps/supervisor-web/dist/assets/{sql-BLtJtn59.js → sql-CRqJ_cUM.js} +1 -1
- package/apps/supervisor-web/dist/assets/terminal-vendor-Beg8tuEN.css +32 -0
- package/apps/supervisor-web/dist/assets/{xterm-D92BViLH.js → terminal-vendor-CLGgN91S.js} +17 -6
- package/apps/supervisor-web/dist/assets/thread-ui-BEieA99i.css +1 -0
- package/apps/supervisor-web/dist/assets/thread-ui-CDk3ExRH.js +3516 -0
- package/apps/supervisor-web/dist/assets/ui-vendor-CgOZX1B8.js +425 -0
- package/apps/supervisor-web/dist/index.html +11 -2
- package/apps/supervisor-web/dist/vendor/3Dmol-min.js +2 -0
- package/bin/remote-codex-plugin-mcp.mjs +140 -0
- package/package.json +6 -1
- package/packages/agent-runtime/src/types.ts +1 -0
- package/packages/agent-runtime/src/unavailable-runtime.ts +5 -13
- package/packages/claude/src/runtimeAdapter.ts +7 -5
- package/packages/codex/src/appServerManager.ts +3 -3
- package/packages/codex/src/historyItems.test.ts +2 -4
- package/packages/codex/src/historyItems.ts +13 -18
- package/packages/codex/src/runtime-errors.ts +0 -5
- package/packages/codex/src/runtimeAdapter.ts +3 -0
- package/packages/codex/src/types.ts +1 -0
- package/packages/db/migrations/0018_shell_session_label.sql +1 -0
- package/packages/db/src/repositories.ts +12 -0
- package/packages/db/src/schema.ts +1 -0
- package/packages/opencode/src/historyItems.ts +0 -17
- package/packages/plugin-terminal/package.json +17 -0
- package/packages/plugin-terminal/plugin.json +25 -0
- package/packages/plugin-terminal/src/index.ts +2 -0
- package/packages/plugin-terminal/src/manifest.ts +51 -0
- package/packages/shared/src/index.ts +59 -0
- package/apps/supervisor-api/dist/chunk-6M32PPHZ.js +0 -24507
- package/apps/supervisor-api/dist/chunk-7AA2MFXK.js +0 -24499
- package/apps/supervisor-api/dist/chunk-HKBFCPHH.js +0 -24511
- package/apps/supervisor-api/dist/worker-index.d.ts +0 -2
- package/apps/supervisor-api/dist/worker-index.js +0 -33
- package/apps/supervisor-web/dist/assets/abap-BdImnpbu.js +0 -1
- package/apps/supervisor-web/dist/assets/actionscript-3-CoDkCxhg.js +0 -1
- package/apps/supervisor-web/dist/assets/ada-bCR0ucgS.js +0 -1
- package/apps/supervisor-web/dist/assets/addon-fit-YJmn1quW.js +0 -12
- package/apps/supervisor-web/dist/assets/andromeeda-C4gqWexZ.js +0 -1
- package/apps/supervisor-web/dist/assets/angular-html-CU67Zn6k.js +0 -1
- package/apps/supervisor-web/dist/assets/angular-ts-BwZT4LLn.js +0 -1
- package/apps/supervisor-web/dist/assets/apache-Pmp26Uib.js +0 -1
- package/apps/supervisor-web/dist/assets/apex-D8_7TLub.js +0 -1
- package/apps/supervisor-web/dist/assets/apl-dKokRX4l.js +0 -1
- package/apps/supervisor-web/dist/assets/applescript-Co6uUVPk.js +0 -1
- package/apps/supervisor-web/dist/assets/ara-BRHolxvo.js +0 -1
- package/apps/supervisor-web/dist/assets/asciidoc-Ve4PFQV2.js +0 -1
- package/apps/supervisor-web/dist/assets/asm-D_Q5rh1f.js +0 -1
- package/apps/supervisor-web/dist/assets/astro-CbQHKStN.js +0 -1
- package/apps/supervisor-web/dist/assets/aurora-x-D-2ljcwZ.js +0 -1
- package/apps/supervisor-web/dist/assets/awk-DMzUqQB5.js +0 -1
- package/apps/supervisor-web/dist/assets/ayu-mirage-32ctXXKs.js +0 -1
- package/apps/supervisor-web/dist/assets/ballerina-BFfxhgS-.js +0 -1
- package/apps/supervisor-web/dist/assets/bat-BkioyH1T.js +0 -1
- package/apps/supervisor-web/dist/assets/beancount-k_qm7-4y.js +0 -1
- package/apps/supervisor-web/dist/assets/berry-uYugtg8r.js +0 -1
- package/apps/supervisor-web/dist/assets/bibtex-CHM0blh-.js +0 -1
- package/apps/supervisor-web/dist/assets/bicep-Bmn6On1c.js +0 -1
- package/apps/supervisor-web/dist/assets/bird2-DPOp833l.js +0 -1
- package/apps/supervisor-web/dist/assets/blade-D4QpJJKB.js +0 -1
- package/apps/supervisor-web/dist/assets/bsl-BO_Y6i37.js +0 -1
- package/apps/supervisor-web/dist/assets/c-BIGW1oBm.js +0 -1
- package/apps/supervisor-web/dist/assets/c3-eo99z4R2.js +0 -1
- package/apps/supervisor-web/dist/assets/cadence-Bv_4Rxtq.js +0 -1
- package/apps/supervisor-web/dist/assets/cairo-KRGpt6FW.js +0 -1
- package/apps/supervisor-web/dist/assets/catppuccin-frappe-DFWUc33u.js +0 -1
- package/apps/supervisor-web/dist/assets/catppuccin-latte-C9dUb6Cb.js +0 -1
- package/apps/supervisor-web/dist/assets/catppuccin-macchiato-DQyhUUbL.js +0 -1
- package/apps/supervisor-web/dist/assets/catppuccin-mocha-D87Tk5Gz.js +0 -1
- package/apps/supervisor-web/dist/assets/clarity-D53aC0YG.js +0 -1
- package/apps/supervisor-web/dist/assets/clojure-P80f7IUj.js +0 -1
- package/apps/supervisor-web/dist/assets/cmake-D1j8_8rp.js +0 -1
- package/apps/supervisor-web/dist/assets/cobol-nwyudZeR.js +0 -1
- package/apps/supervisor-web/dist/assets/codeowners-Bp6g37R7.js +0 -1
- package/apps/supervisor-web/dist/assets/codeql-DsOJ9woJ.js +0 -1
- package/apps/supervisor-web/dist/assets/coffee-Ch7k5sss.js +0 -1
- package/apps/supervisor-web/dist/assets/common-lisp-Cg-RD9OK.js +0 -1
- package/apps/supervisor-web/dist/assets/coq-DkFqJrB1.js +0 -1
- package/apps/supervisor-web/dist/assets/cpp-CofmeUqb.js +0 -1
- package/apps/supervisor-web/dist/assets/crystal-tKQVLTB8.js +0 -1
- package/apps/supervisor-web/dist/assets/csharp-COcwbKMJ.js +0 -1
- package/apps/supervisor-web/dist/assets/cue-D82EKSYY.js +0 -1
- package/apps/supervisor-web/dist/assets/cypher-COkxafJQ.js +0 -1
- package/apps/supervisor-web/dist/assets/d-85-TOEBH.js +0 -1
- package/apps/supervisor-web/dist/assets/dark-plus-C3mMm8J8.js +0 -1
- package/apps/supervisor-web/dist/assets/dart-CF10PKvl.js +0 -1
- package/apps/supervisor-web/dist/assets/dax-CEL-wOlO.js +0 -1
- package/apps/supervisor-web/dist/assets/desktop-BmXAJ9_W.js +0 -1
- package/apps/supervisor-web/dist/assets/diff-D97Zzqfu.js +0 -1
- package/apps/supervisor-web/dist/assets/docker-BcOcwvcX.js +0 -1
- package/apps/supervisor-web/dist/assets/dotenv-Da5cRb03.js +0 -1
- package/apps/supervisor-web/dist/assets/dracula-BzJJZx-M.js +0 -1
- package/apps/supervisor-web/dist/assets/dracula-soft-BXkSAIEj.js +0 -1
- package/apps/supervisor-web/dist/assets/dream-maker-BtqSS_iP.js +0 -1
- package/apps/supervisor-web/dist/assets/edge-BkV0erSs.js +0 -1
- package/apps/supervisor-web/dist/assets/elixir-CDX3lj18.js +0 -1
- package/apps/supervisor-web/dist/assets/elm-DbKCFpqz.js +0 -1
- package/apps/supervisor-web/dist/assets/emacs-lisp-C9XAeP06.js +0 -1
- package/apps/supervisor-web/dist/assets/erb-B12qg9BL.js +0 -1
- package/apps/supervisor-web/dist/assets/erlang-DsQrWhSR.js +0 -1
- package/apps/supervisor-web/dist/assets/everforest-dark-BgDCqdQA.js +0 -1
- package/apps/supervisor-web/dist/assets/everforest-light-C8M2exoo.js +0 -1
- package/apps/supervisor-web/dist/assets/fennel-BYunw83y.js +0 -1
- package/apps/supervisor-web/dist/assets/fish-BvzEVeQv.js +0 -1
- package/apps/supervisor-web/dist/assets/fluent-C4IJs8-o.js +0 -1
- package/apps/supervisor-web/dist/assets/fortran-fixed-form-CkoXwp7k.js +0 -1
- package/apps/supervisor-web/dist/assets/fortran-free-form-BxgE0vQu.js +0 -1
- package/apps/supervisor-web/dist/assets/fsharp-CXgrBDvD.js +0 -1
- package/apps/supervisor-web/dist/assets/gdresource-BOOCDP_w.js +0 -1
- package/apps/supervisor-web/dist/assets/gdscript-C5YyOfLZ.js +0 -1
- package/apps/supervisor-web/dist/assets/gdshader-DkwncUOv.js +0 -1
- package/apps/supervisor-web/dist/assets/genie-D0YGMca9.js +0 -1
- package/apps/supervisor-web/dist/assets/gherkin-DyxjwDmM.js +0 -1
- package/apps/supervisor-web/dist/assets/git-commit-F4YmCXRG.js +0 -1
- package/apps/supervisor-web/dist/assets/git-rebase-r7XF79zn.js +0 -1
- package/apps/supervisor-web/dist/assets/github-dark-DHJKELXO.js +0 -1
- package/apps/supervisor-web/dist/assets/github-dark-default-Cuk6v7N8.js +0 -1
- package/apps/supervisor-web/dist/assets/github-dark-dimmed-DH5Ifo-i.js +0 -1
- package/apps/supervisor-web/dist/assets/github-dark-high-contrast-E3gJ1_iC.js +0 -1
- package/apps/supervisor-web/dist/assets/github-light-DAi9KRSo.js +0 -1
- package/apps/supervisor-web/dist/assets/github-light-default-D7oLnXFd.js +0 -1
- package/apps/supervisor-web/dist/assets/github-light-high-contrast-BfjtVDDH.js +0 -1
- package/apps/supervisor-web/dist/assets/gleam-BspZqrRM.js +0 -1
- package/apps/supervisor-web/dist/assets/glimmer-js-Rg0-pVw9.js +0 -1
- package/apps/supervisor-web/dist/assets/glimmer-ts-U6CK756n.js +0 -1
- package/apps/supervisor-web/dist/assets/glsl-DplSGwfg.js +0 -1
- package/apps/supervisor-web/dist/assets/gn-n2N0HUVH.js +0 -1
- package/apps/supervisor-web/dist/assets/gnuplot-DdkO51Og.js +0 -1
- package/apps/supervisor-web/dist/assets/go-CxLEBnE3.js +0 -1
- package/apps/supervisor-web/dist/assets/graphql-ChdNCCLP.js +0 -1
- package/apps/supervisor-web/dist/assets/groovy-gcz8RCvz.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-dark-hard-CFHQjOhq.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-dark-medium-GsRaNv29.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-dark-soft-CVdnzihN.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-light-hard-CH1njM8p.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-light-medium-DRw_LuNl.js +0 -1
- package/apps/supervisor-web/dist/assets/gruvbox-light-soft-hJgmCMqR.js +0 -1
- package/apps/supervisor-web/dist/assets/hack-CaT9iCJl.js +0 -1
- package/apps/supervisor-web/dist/assets/haml-B8DHNrY2.js +0 -1
- package/apps/supervisor-web/dist/assets/handlebars-BL8al0AC.js +0 -1
- package/apps/supervisor-web/dist/assets/haskell-Df6bDoY_.js +0 -1
- package/apps/supervisor-web/dist/assets/haxe-CzTSHFRz.js +0 -1
- package/apps/supervisor-web/dist/assets/hcl-BWvSN4gD.js +0 -1
- package/apps/supervisor-web/dist/assets/highlighted-body-OFNGDK62-p31aS0f0.js +0 -1
- package/apps/supervisor-web/dist/assets/hjson-D5-asLiD.js +0 -1
- package/apps/supervisor-web/dist/assets/hlsl-D3lLCCz7.js +0 -1
- package/apps/supervisor-web/dist/assets/horizon-BUw7H-hv.js +0 -1
- package/apps/supervisor-web/dist/assets/horizon-bright-Cn-bp-IR.js +0 -1
- package/apps/supervisor-web/dist/assets/houston-DnULxvSX.js +0 -1
- package/apps/supervisor-web/dist/assets/html-derivative-BFtXZ54Q.js +0 -1
- package/apps/supervisor-web/dist/assets/http-jrhK8wxY.js +0 -1
- package/apps/supervisor-web/dist/assets/hurl-irOxFIW8.js +0 -1
- package/apps/supervisor-web/dist/assets/hxml-Bvhsp5Yf.js +0 -1
- package/apps/supervisor-web/dist/assets/hy-DFXneXwc.js +0 -1
- package/apps/supervisor-web/dist/assets/imba-DGztddWO.js +0 -1
- package/apps/supervisor-web/dist/assets/index-BiuFei_K.css +0 -32
- package/apps/supervisor-web/dist/assets/index-D1R9CUnx.js +0 -2161
- package/apps/supervisor-web/dist/assets/ini-BEwlwnbL.js +0 -1
- package/apps/supervisor-web/dist/assets/java-CylS5w8V.js +0 -1
- package/apps/supervisor-web/dist/assets/jinja-4LBKfQ-Z.js +0 -1
- package/apps/supervisor-web/dist/assets/jison-wvAkD_A8.js +0 -1
- package/apps/supervisor-web/dist/assets/json5-C9tS-k6U.js +0 -1
- package/apps/supervisor-web/dist/assets/jsonc-Des-eS-w.js +0 -1
- package/apps/supervisor-web/dist/assets/jsonl-DcaNXYhu.js +0 -1
- package/apps/supervisor-web/dist/assets/jsonnet-DFQXde-d.js +0 -1
- package/apps/supervisor-web/dist/assets/jssm-C2t-YnRu.js +0 -1
- package/apps/supervisor-web/dist/assets/julia-CxzCAyBv.js +0 -1
- package/apps/supervisor-web/dist/assets/just-Cw27pwNe.js +0 -1
- package/apps/supervisor-web/dist/assets/kanagawa-dragon-CkXjmgJE.js +0 -1
- package/apps/supervisor-web/dist/assets/kanagawa-lotus-CfQXZHmo.js +0 -1
- package/apps/supervisor-web/dist/assets/kanagawa-wave-DWedfzmr.js +0 -1
- package/apps/supervisor-web/dist/assets/kdl-DV7GczEv.js +0 -1
- package/apps/supervisor-web/dist/assets/kotlin-BdnUsdx6.js +0 -1
- package/apps/supervisor-web/dist/assets/kusto-DZf3V79B.js +0 -1
- package/apps/supervisor-web/dist/assets/laserwave-DUszq2jm.js +0 -1
- package/apps/supervisor-web/dist/assets/latex-CWtU0Tv5.js +0 -1
- package/apps/supervisor-web/dist/assets/lean-BZvkOJ9d.js +0 -1
- package/apps/supervisor-web/dist/assets/less-B1dDrJ26.js +0 -1
- package/apps/supervisor-web/dist/assets/light-plus-B7mTdjB0.js +0 -1
- package/apps/supervisor-web/dist/assets/liquid-DYVedYrR.js +0 -1
- package/apps/supervisor-web/dist/assets/llvm-DjAJT7YJ.js +0 -1
- package/apps/supervisor-web/dist/assets/log-2UxHyX5q.js +0 -1
- package/apps/supervisor-web/dist/assets/logo-BtOb2qkB.js +0 -1
- package/apps/supervisor-web/dist/assets/lua-BaeVxFsk.js +0 -1
- package/apps/supervisor-web/dist/assets/luau-C-HG3fhB.js +0 -1
- package/apps/supervisor-web/dist/assets/make-CHLpvVh8.js +0 -1
- package/apps/supervisor-web/dist/assets/marko-CnJfTvn9.js +0 -1
- package/apps/supervisor-web/dist/assets/material-theme-D5KoaKCx.js +0 -1
- package/apps/supervisor-web/dist/assets/material-theme-darker-BfHTSMKl.js +0 -1
- package/apps/supervisor-web/dist/assets/material-theme-lighter-B0m2ddpp.js +0 -1
- package/apps/supervisor-web/dist/assets/material-theme-ocean-CyktbL80.js +0 -1
- package/apps/supervisor-web/dist/assets/material-theme-palenight-Csfq5Kiy.js +0 -1
- package/apps/supervisor-web/dist/assets/matlab-D7o27uSR.js +0 -1
- package/apps/supervisor-web/dist/assets/mdc-BMNejdWA.js +0 -1
- package/apps/supervisor-web/dist/assets/mdx-Cmh6b_Ma.js +0 -1
- package/apps/supervisor-web/dist/assets/mermaid-mWjccvbQ.js +0 -1
- package/apps/supervisor-web/dist/assets/min-dark-CafNBF8u.js +0 -1
- package/apps/supervisor-web/dist/assets/min-light-CTRr51gU.js +0 -1
- package/apps/supervisor-web/dist/assets/mipsasm-CKIfxQSi.js +0 -1
- package/apps/supervisor-web/dist/assets/mojo-rZm6bMo-.js +0 -1
- package/apps/supervisor-web/dist/assets/monokai-D4h5O-jR.js +0 -1
- package/apps/supervisor-web/dist/assets/moonbit-_H4v1dQx.js +0 -1
- package/apps/supervisor-web/dist/assets/move-IF9eRakj.js +0 -1
- package/apps/supervisor-web/dist/assets/narrat-DRg8JJMk.js +0 -1
- package/apps/supervisor-web/dist/assets/nextflow-Zz6hmt5N.js +0 -1
- package/apps/supervisor-web/dist/assets/nextflow-groovy-BeH2EWoN.js +0 -1
- package/apps/supervisor-web/dist/assets/nginx-BpAMiNFr.js +0 -1
- package/apps/supervisor-web/dist/assets/night-owl-C39BiMTA.js +0 -1
- package/apps/supervisor-web/dist/assets/night-owl-light-CMTm3GFP.js +0 -1
- package/apps/supervisor-web/dist/assets/nim-CVrawwO9.js +0 -1
- package/apps/supervisor-web/dist/assets/nix-CwoSXNpI.js +0 -1
- package/apps/supervisor-web/dist/assets/nord-Ddv68eIx.js +0 -1
- package/apps/supervisor-web/dist/assets/nushell-Cz2AlsmD.js +0 -1
- package/apps/supervisor-web/dist/assets/objective-c-DXmwc3jG.js +0 -1
- package/apps/supervisor-web/dist/assets/objective-cpp-CLxacb5B.js +0 -1
- package/apps/supervisor-web/dist/assets/ocaml-C0hk2d4L.js +0 -1
- package/apps/supervisor-web/dist/assets/odin-BBf5iR-q.js +0 -1
- package/apps/supervisor-web/dist/assets/one-dark-pro-DVMEJ2y_.js +0 -1
- package/apps/supervisor-web/dist/assets/one-light-C3Wv6jpd.js +0 -1
- package/apps/supervisor-web/dist/assets/openscad-C4EeE6gA.js +0 -1
- package/apps/supervisor-web/dist/assets/pascal-D93ZcfNL.js +0 -1
- package/apps/supervisor-web/dist/assets/perl-C0TMdlhV.js +0 -1
- package/apps/supervisor-web/dist/assets/php-Dhbhpdrm.js +0 -1
- package/apps/supervisor-web/dist/assets/pkl-u5AG7uiY.js +0 -1
- package/apps/supervisor-web/dist/assets/plastic-3e1v2bzS.js +0 -1
- package/apps/supervisor-web/dist/assets/plsql-ChMvpjG-.js +0 -1
- package/apps/supervisor-web/dist/assets/po-BTJTHyun.js +0 -1
- package/apps/supervisor-web/dist/assets/poimandres-CS3Unz2-.js +0 -1
- package/apps/supervisor-web/dist/assets/polar-C0HS_06l.js +0 -1
- package/apps/supervisor-web/dist/assets/postcss-CXtECtnM.js +0 -1
- package/apps/supervisor-web/dist/assets/powerquery-CEu0bR-o.js +0 -1
- package/apps/supervisor-web/dist/assets/powershell-Dpen1YoG.js +0 -1
- package/apps/supervisor-web/dist/assets/prisma-Dd19v3D-.js +0 -1
- package/apps/supervisor-web/dist/assets/prolog-CbFg5uaA.js +0 -1
- package/apps/supervisor-web/dist/assets/proto-C7zT0LnQ.js +0 -1
- package/apps/supervisor-web/dist/assets/pug-CGlum2m_.js +0 -1
- package/apps/supervisor-web/dist/assets/puppet-BMWR74SV.js +0 -1
- package/apps/supervisor-web/dist/assets/purescript-CklMAg4u.js +0 -1
- package/apps/supervisor-web/dist/assets/qml-3beO22l8.js +0 -1
- package/apps/supervisor-web/dist/assets/qmldir-C8lEn-DE.js +0 -1
- package/apps/supervisor-web/dist/assets/qss-IeuSbFQv.js +0 -1
- package/apps/supervisor-web/dist/assets/r-Dspwwk_N.js +0 -1
- package/apps/supervisor-web/dist/assets/racket-BqYA7rlc.js +0 -1
- package/apps/supervisor-web/dist/assets/raku-DXvB9xmW.js +0 -1
- package/apps/supervisor-web/dist/assets/razor-Uh8Bk_45.js +0 -1
- package/apps/supervisor-web/dist/assets/red-bN70gL4F.js +0 -1
- package/apps/supervisor-web/dist/assets/reg-C-SQnVFl.js +0 -1
- package/apps/supervisor-web/dist/assets/regexp-CDVJQ6XC.js +0 -1
- package/apps/supervisor-web/dist/assets/rel-C3B-1QV4.js +0 -1
- package/apps/supervisor-web/dist/assets/riscv-BM1_JUlF.js +0 -1
- package/apps/supervisor-web/dist/assets/ron-D8l8udqQ.js +0 -1
- package/apps/supervisor-web/dist/assets/rose-pine-dawn-DHQR4-dF.js +0 -1
- package/apps/supervisor-web/dist/assets/rose-pine-moon-D4_iv3hh.js +0 -1
- package/apps/supervisor-web/dist/assets/rose-pine-qdsjHGoJ.js +0 -1
- package/apps/supervisor-web/dist/assets/rosmsg-BJDFO7_C.js +0 -1
- package/apps/supervisor-web/dist/assets/rst-BrH8l1NY.js +0 -1
- package/apps/supervisor-web/dist/assets/ruby-Dw2BHqvy.js +0 -1
- package/apps/supervisor-web/dist/assets/rust-B1yitclQ.js +0 -1
- package/apps/supervisor-web/dist/assets/sas-cz2c8ADy.js +0 -1
- package/apps/supervisor-web/dist/assets/sass-Cj5Yp3dK.js +0 -1
- package/apps/supervisor-web/dist/assets/scala-C151Ov-r.js +0 -1
- package/apps/supervisor-web/dist/assets/scheme-C98Dy4si.js +0 -1
- package/apps/supervisor-web/dist/assets/scss-OYdSNvt2.js +0 -1
- package/apps/supervisor-web/dist/assets/sdbl-DVxCFoDh.js +0 -1
- package/apps/supervisor-web/dist/assets/shaderlab-Dg9Lc6iA.js +0 -1
- package/apps/supervisor-web/dist/assets/shellsession-BADoaaVG.js +0 -1
- package/apps/supervisor-web/dist/assets/slack-dark-BthQWCQV.js +0 -1
- package/apps/supervisor-web/dist/assets/slack-ochin-DqwNpetd.js +0 -1
- package/apps/supervisor-web/dist/assets/smalltalk-BERRCDM3.js +0 -1
- package/apps/supervisor-web/dist/assets/snazzy-light-Bw305WKR.js +0 -1
- package/apps/supervisor-web/dist/assets/solarized-dark-DXbdFlpD.js +0 -1
- package/apps/supervisor-web/dist/assets/solarized-light-L9t79GZl.js +0 -1
- package/apps/supervisor-web/dist/assets/solidity-rGO070M0.js +0 -1
- package/apps/supervisor-web/dist/assets/soy-Brmx7dQM.js +0 -1
- package/apps/supervisor-web/dist/assets/sparql-rVzFXLq3.js +0 -1
- package/apps/supervisor-web/dist/assets/splunk-BtCnVYZw.js +0 -1
- package/apps/supervisor-web/dist/assets/ssh-config-_ykCGR6B.js +0 -1
- package/apps/supervisor-web/dist/assets/stata-BH5u7GGu.js +0 -1
- package/apps/supervisor-web/dist/assets/stylus-BEDo0Tqx.js +0 -1
- package/apps/supervisor-web/dist/assets/surrealql-Bq5Q-fJD.js +0 -1
- package/apps/supervisor-web/dist/assets/svelte-C_ipcX3V.js +0 -1
- package/apps/supervisor-web/dist/assets/swift-D82vCrfD.js +0 -1
- package/apps/supervisor-web/dist/assets/synthwave-84-CbfX1IO0.js +0 -1
- package/apps/supervisor-web/dist/assets/system-verilog-CnnmHF94.js +0 -1
- package/apps/supervisor-web/dist/assets/systemd-4A_iFExJ.js +0 -1
- package/apps/supervisor-web/dist/assets/talonscript-CkByrt1z.js +0 -1
- package/apps/supervisor-web/dist/assets/tasl-QIJgUcNo.js +0 -1
- package/apps/supervisor-web/dist/assets/tcl-dwOrl1Do.js +0 -1
- package/apps/supervisor-web/dist/assets/templ-P3uqSqPl.js +0 -1
- package/apps/supervisor-web/dist/assets/terraform-BETggiCN.js +0 -1
- package/apps/supervisor-web/dist/assets/tex-idrVyKtj.js +0 -1
- package/apps/supervisor-web/dist/assets/tokyo-night-hegEt444.js +0 -1
- package/apps/supervisor-web/dist/assets/ts-tags-zn1MmPIZ.js +0 -1
- package/apps/supervisor-web/dist/assets/tsv-B_m7g4N7.js +0 -1
- package/apps/supervisor-web/dist/assets/turtle-BsS91CYL.js +0 -1
- package/apps/supervisor-web/dist/assets/twig-DNn4PbVi.js +0 -1
- package/apps/supervisor-web/dist/assets/typespec-BGHnOYBU.js +0 -1
- package/apps/supervisor-web/dist/assets/typst-DHCkPAjA.js +0 -1
- package/apps/supervisor-web/dist/assets/v-BcVCzyr7.js +0 -1
- package/apps/supervisor-web/dist/assets/vala-CsfeWuGM.js +0 -1
- package/apps/supervisor-web/dist/assets/vb-D17OF-Vu.js +0 -1
- package/apps/supervisor-web/dist/assets/verilog-BQ8w6xss.js +0 -1
- package/apps/supervisor-web/dist/assets/vesper-DU1UobuO.js +0 -1
- package/apps/supervisor-web/dist/assets/vhdl-CeAyd5Ju.js +0 -1
- package/apps/supervisor-web/dist/assets/viml-CJc9bBzg.js +0 -1
- package/apps/supervisor-web/dist/assets/vitesse-black-Bkuqu6BP.js +0 -1
- package/apps/supervisor-web/dist/assets/vitesse-dark-D0r3Knsf.js +0 -1
- package/apps/supervisor-web/dist/assets/vitesse-light-CVO1_9PV.js +0 -1
- package/apps/supervisor-web/dist/assets/vue-DN_0RTcg.js +0 -1
- package/apps/supervisor-web/dist/assets/vue-html-AaS7Mt5G.js +0 -1
- package/apps/supervisor-web/dist/assets/vue-vine-CQOfvN7w.js +0 -1
- package/apps/supervisor-web/dist/assets/vyper-CDx5xZoG.js +0 -1
- package/apps/supervisor-web/dist/assets/wasm-CG6Dc4jp.js +0 -1
- package/apps/supervisor-web/dist/assets/wasm-MzD3tlZU.js +0 -1
- package/apps/supervisor-web/dist/assets/wenyan-BV7otONQ.js +0 -1
- package/apps/supervisor-web/dist/assets/wgsl-Dx-B1_4e.js +0 -1
- package/apps/supervisor-web/dist/assets/wikitext-BhOHFoWU.js +0 -1
- package/apps/supervisor-web/dist/assets/wit-5i3qLPDT.js +0 -1
- package/apps/supervisor-web/dist/assets/wolfram-lXgVvXCa.js +0 -1
- package/apps/supervisor-web/dist/assets/xml-sdJ4AIDG.js +0 -1
- package/apps/supervisor-web/dist/assets/xsl-CtQFsRM5.js +0 -1
- package/apps/supervisor-web/dist/assets/zenscript-DVFEvuxE.js +0 -1
- package/apps/supervisor-web/dist/assets/zig-VOosw3JB.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! For license information please see 3Dmol-min.js.LICENSE.txt */
|
|
2
|
+
var root,factory;root=this,factory=()=>(()=>{var __webpack_modules__={3(e,t,i){var r=i(663),n=i(981),s=i(972),a=i(681),o=i(834),l=i(746),h=i(670),c=Object.prototype.toString;function d(e){if(!(this instanceof d))return new d(e);this.options=n.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&&(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=r.inflateInit2(this.strm,t.windowBits);if(i!==a.Z_OK)throw new Error(o[i]);if(this.header=new h,r.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=s.string2buf(t.dictionary):"[object ArrayBuffer]"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=r.inflateSetDictionary(this.strm,t.dictionary))!==a.Z_OK))throw new Error(o[i])}function u(e,t){var i=new d(t);if(i.push(e,!0),i.err)throw i.msg||o[i.err];return i.result}d.prototype.push=function(e,t){var i,o,l,h,d,u=this.strm,f=this.options.chunkSize,p=this.options.dictionary,m=!1;if(this.ended)return!1;o=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,"string"==typeof e?u.input=s.binstring2buf(e):"[object ArrayBuffer]"===c.call(e)?u.input=new Uint8Array(e):u.input=e,u.next_in=0,u.avail_in=u.input.length;do{if(0===u.avail_out&&(u.output=new n.Buf8(f),u.next_out=0,u.avail_out=f),(i=r.inflate(u,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&p&&(i=r.inflateSetDictionary(this.strm,p)),i===a.Z_BUF_ERROR&&!0===m&&(i=a.Z_OK,m=!1),i!==a.Z_STREAM_END&&i!==a.Z_OK)return this.onEnd(i),this.ended=!0,!1;u.next_out&&(0!==u.avail_out&&i!==a.Z_STREAM_END&&(0!==u.avail_in||o!==a.Z_FINISH&&o!==a.Z_SYNC_FLUSH)||("string"===this.options.to?(l=s.utf8border(u.output,u.next_out),h=u.next_out-l,d=s.buf2string(u.output,l),u.next_out=h,u.avail_out=f-h,h&&n.arraySet(u.output,u.output,l,h,0),this.onData(d)):this.onData(n.shrinkBuf(u.output,u.next_out)))),0===u.avail_in&&0===u.avail_out&&(m=!0)}while((u.avail_in>0||0===u.avail_out)&&i!==a.Z_STREAM_END);return i===a.Z_STREAM_END&&(o=a.Z_FINISH),o===a.Z_FINISH?(i=r.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===a.Z_OK):o!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),u.avail_out=0,!0)},d.prototype.onData=function(e){this.chunks.push(e)},d.prototype.onEnd=function(e){e===a.Z_OK&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Inflate=d,t.inflate=u,t.inflateRaw=function(e,t){return(t=t||{}).raw=!0,u(e,t)},t.ungzip=u},16(e,t,i){i.r(t),i.d(t,{CAP:()=>r,CC:()=>h.CC,CONTEXTS_PER_VIEWPORT:()=>Ve,Color:()=>h.Color,CustomLinear:()=>c.CustomLinear,Cylinder:()=>o.Cylinder,GLDraw:()=>n,GLModel:()=>GLModel,GLShape:()=>GLShape,GLViewer:()=>GLViewer,GLVolumetricRender:()=>GLVolumetricRender,Gradient:()=>c.Gradient,GradientType:()=>c.GradientType,Label:()=>Label,LabelCount:()=>Be,MarchingCube:()=>MarchingCube,MarchingCubeInitializer:()=>MarchingCubeInitializer,Matrix3:()=>l.Matrix3,Matrix4:()=>l.Matrix4,Parsers:()=>fe,PausableTimer:()=>d.PausableTimer,PointGrid:()=>PointGrid,ProteinSurface:()=>ProteinSurface,Quaternion:()=>l.Quaternion,ROYGB:()=>c.ROYGB,RWB:()=>c.RWB,Ray:()=>l.Ray,Sinebow:()=>c.Sinebow,Sphere:()=>o.Sphere,SurfaceType:()=>Re,Triangle:()=>o.Triangle,Vector2:()=>l.Vector2,Vector3:()=>l.Vector3,VolumeData:()=>Ue.VolumeData,adjustVolumeStyle:()=>d.adjustVolumeStyle,applyPartialCharges:()=>Qe,autoinit:()=>qe,autoload:()=>Xe,base64ToArray:()=>d.base64ToArray,bondLength:()=>V.bondLength,builtinColorSchemes:()=>h.builtinColorSchemes,builtinGradients:()=>c.builtinGradients,chains:()=>h.chains,clamp:()=>l.clamp,conversionMatrix3:()=>l.conversionMatrix3,createStereoViewer:()=>We,createViewer:()=>je,createViewerGrid:()=>He,deepCopy:()=>d.deepCopy,degToRad:()=>l.degToRad,download:()=>d.download,drawCartoon:()=>A,elementColors:()=>h.elementColors,extend:()=>d.extend,get:()=>d.get,getAtomProperty:()=>d.getAtomProperty,getColorFromStyle:()=>d.getColorFromStyle,getElement:()=>d.getElement,getExtent:()=>d.getExtent,getGradient:()=>c.getGradient,getPropertyRange:()=>d.getPropertyRange,getbin:()=>d.getbin,htmlColors:()=>h.htmlColors,inflateString:()=>d.inflateString,isEmptyObject:()=>d.isEmptyObject,isNumeric:()=>d.isNumeric,makeFunction:()=>d.makeFunction,mergeGeos:()=>d.mergeGeos,normalizeValue:()=>c.normalizeValue,partialCharges:()=>Ke,processing_autoinit:()=>Ye,residues:()=>h.residues,setBondLength:()=>V.setBondLength,setSyncSurface:()=>Pe,specStringToObject:()=>d.specStringToObject,splitMesh:()=>Ne,ssColors:()=>h.ssColors,subdivide_spline:()=>u,syncSurface:()=>ke,viewers:()=>Ze});var r,n,s=i(111),a=i(59),o=i(99),l=i(529),h=i(222);!function(e){e[e.NONE=0]="NONE",e[e.FLAT=1]="FLAT",e[e.ROUND=2]="ROUND"}(r||(r={})),function(e){function t(e,t,i){var r,n,s,a,o,l=Math.hypot(e,t);l<1e-4?(n=0,s=1):(n=-e/l,s=t/l),t=-n*e+s*t,(r=Math.hypot(t,i))<1e-4?(a=0,o=1):(a=i/r,o=t/r);var h=new Float32Array(9);return h[0]=s,h[1]=n,h[2]=0,h[3]=-n*o,h[4]=s*o,h[5]=a,h[6]=n*a,h[7]=-s*a,h[8]=o,h}var i=new class CylVertexCache{constructor(){this.cache={};let e,t=[],i=Math.pow(2,4),r=2,n=Math.pow(2,r),s=i/n;for(t[0]=new l.Vector3(-1,0,0),t[s]=new l.Vector3(0,0,1),t[2*s]=new l.Vector3(1,0,0),t[3*s]=new l.Vector3(0,0,-1),r=3;r<=4;r++){for(n=Math.pow(2,r-1),s=i/n,e=0;e<n-1;e++)t[s/2+e*s]=t[e*s].clone().add(t[(e+1)*s]).normalize();e=n-1,t[s/2+e*s]=t[e*s].clone().add(t[0]).normalize()}this.basisVectors=t}getVerticesForRadius(e,t,i){if(void 0!==this.cache&&void 0!==this.cache[e]&&void 0!==this.cache[e][t+i])return this.cache[e][t+i];for(var n,s=this.basisVectors.length,a=[],o=[],h=0;h<s;h++)a.push(this.basisVectors[h].clone().multiplyScalar(e)),a.push(this.basisVectors[h].clone().multiplyScalar(e)),n=this.basisVectors[h].clone().normalize(),o.push(n),o.push(n);var c,d,u=[],f=10,p=s,m=2*Math.PI,g=Math.PI,v=!1,_=!1;for(d=0;d<=f;d++){v=0===d||d===f,_=5===d;var y=[],b=[];for(c=0;c<=p;c++)if(_){var x=c<p?2*c:0;b.push(x+1),y.push(x)}else{var w=c/p,A=d/f;if(v&&0!==c)v&&y.push(a.length-1);else if(c<p){var C=new l.Vector3;C.x=-e*Math.cos(0+w*m)*Math.sin(0+A*g),C.y=1==t?0:e*Math.cos(0+A*g),C.z=e*Math.sin(0+w*m)*Math.sin(0+A*g),Math.abs(C.x)<1e-5&&(C.x=0),Math.abs(C.y)<1e-5&&(C.y=0),Math.abs(C.z)<1e-5&&(C.z=0),t==r.FLAT?(n=new l.Vector3(0,Math.cos(0+A*g),0)).normalize():(n=new l.Vector3(C.x,C.y,C.z)).normalize(),a.push(C),o.push(n),y.push(a.length-1)}else y.push(a.length-p)}_&&u.push(b),u.push(y)}var S={vertices:a,normals:o,verticesRows:u,w:p,h:f};return e in this.cache||(this.cache[e]={}),this.cache[e][t+i]=S,S}};e.drawCylinder=function(e,n,s,a,o,l=0,h=0){if(!n||!s)return;let c=function(e){if("string"==typeof e){let t=e;return"flat"==t.toLowerCase()?r.FLAT:"round"==t.toLowerCase()?r.ROUND:r.NONE}return e};l=c(l);var d=(h=c(h))||l;o=o||{r:0,g:0,b:0};var u,f,p,m,g,v,_=t(s.x-n.x,s.y-n.y,s.z-n.z),y=i.getVerticesForRadius(a,h,"to"),b=y.w,x=y.h,w=d?x*b+2:2*b,A=e.updateGeoGroup(w),C=y.vertices,S=y.normals,z=y.verticesRows,M=z[x/2],T=z[x/2+1],E=A.vertices,L=A.vertexArray,F=A.normalArray,I=A.colorArray,D=A.faceArray;for(p=0;p<b;++p){var O=2*p;m=_[0]*C[O].x+_[3]*C[O].y+_[6]*C[O].z,g=_[1]*C[O].x+_[4]*C[O].y+_[7]*C[O].z,v=_[5]*C[O].y+_[8]*C[O].z,u=3*(E+O),f=A.faceidx,L[u]=m+n.x,L[u+1]=g+n.y,L[u+2]=v+n.z,L[u+3]=m+s.x,L[u+4]=g+s.y,L[u+5]=v+s.z,F[u]=m,F[u+3]=m,F[u+1]=g,F[u+4]=g,F[u+2]=v,F[u+5]=v,I[u]=o.r,I[u+3]=o.r,I[u+1]=o.g,I[u+4]=o.g,I[u+2]=o.b,I[u+5]=o.b,D[f]=T[p]+E,D[f+1]=T[p+1]+E,D[f+2]=M[p]+E,D[f+3]=M[p]+E,D[f+4]=T[p+1]+E,D[f+5]=M[p+1]+E,A.faceidx+=6}if(d){var R,k,P,U,N,B,G,V,j,H,W,q,Y,Z,X,K,Q,$,J,ee,te,ie,re,ne,se,ae,oe,le,he,ce,de,ue,fe=l?x+1:x/2+1;for(g=h?0:x/2;g<fe;g++)if(g!==x/2){var pe=g<=x/2?s:n,me=i.getVerticesForRadius(a,h,"to"),ge=i.getVerticesForRadius(a,l,"from");for(pe===s?(C=me.vertices,S=me.normals,z=me.verticesRows):pe==n&&(C=ge.vertices,S=ge.normals,z=ge.verticesRows),m=0;m<b;m++)f=A.faceidx,he=3*((R=z[g][m+1])+E),ce=3*((k=z[g][m])+E),de=3*((P=z[g+1][m])+E),ue=3*((U=z[g+1][m+1])+E),N=_[0]*C[R].x+_[3]*C[R].y+_[6]*C[R].z,B=_[0]*C[k].x+_[3]*C[k].y+_[6]*C[k].z,G=_[0]*C[P].x+_[3]*C[P].y+_[6]*C[P].z,V=_[0]*C[U].x+_[3]*C[U].y+_[6]*C[U].z,j=_[1]*C[R].x+_[4]*C[R].y+_[7]*C[R].z,H=_[1]*C[k].x+_[4]*C[k].y+_[7]*C[k].z,W=_[1]*C[P].x+_[4]*C[P].y+_[7]*C[P].z,q=_[1]*C[U].x+_[4]*C[U].y+_[7]*C[U].z,Y=_[5]*C[R].y+_[8]*C[R].z,Z=_[5]*C[k].y+_[8]*C[k].z,X=_[5]*C[P].y+_[8]*C[P].z,K=_[5]*C[U].y+_[8]*C[U].z,L[he]=N+pe.x,L[ce]=B+pe.x,L[de]=G+pe.x,L[ue]=V+pe.x,L[he+1]=j+pe.y,L[ce+1]=H+pe.y,L[de+1]=W+pe.y,L[ue+1]=q+pe.y,L[he+2]=Y+pe.z,L[ce+2]=Z+pe.z,L[de+2]=X+pe.z,L[ue+2]=K+pe.z,I[he]=o.r,I[ce]=o.r,I[de]=o.r,I[ue]=o.r,I[he+1]=o.g,I[ce+1]=o.g,I[de+1]=o.g,I[ue+1]=o.g,I[he+2]=o.b,I[ce+2]=o.b,I[de+2]=o.b,I[ue+2]=o.b,Q=_[0]*S[R].x+_[3]*S[R].y+_[6]*S[R].z,$=_[0]*S[k].x+_[3]*S[k].y+_[6]*S[k].z,J=_[0]*S[P].x+_[3]*S[P].y+_[6]*S[P].z,ee=_[0]*S[U].x+_[3]*S[U].y+_[6]*S[U].z,te=_[1]*S[R].x+_[4]*S[R].y+_[7]*S[R].z,ie=_[1]*S[k].x+_[4]*S[k].y+_[7]*S[k].z,re=_[1]*S[P].x+_[4]*S[P].y+_[7]*S[P].z,ne=_[1]*S[U].x+_[4]*S[U].y+_[7]*S[U].z,se=_[5]*S[R].y+_[8]*S[R].z,ae=_[5]*S[k].y+_[8]*S[k].z,oe=_[5]*S[P].y+_[8]*S[P].z,le=_[5]*S[U].y+_[8]*S[U].z,0===g?(F[he]=Q,F[de]=J,F[ue]=ee,F[he+1]=te,F[de+1]=re,F[ue+1]=ne,F[he+2]=se,F[de+2]=oe,F[ue+2]=le,D[f]=R+E,D[f+1]=P+E,D[f+2]=U+E,A.faceidx+=3):g===fe-1?(F[he]=Q,F[ce]=$,F[de]=J,F[he+1]=te,F[ce+1]=ie,F[de+1]=re,F[he+2]=se,F[ce+2]=ae,F[de+2]=oe,D[f]=R+E,D[f+1]=k+E,D[f+2]=P+E,A.faceidx+=3):(F[he]=Q,F[ce]=$,F[ue]=ee,F[he+1]=te,F[ce+1]=ie,F[ue+1]=ne,F[he+2]=se,F[ce+2]=ae,F[ue+2]=le,F[ce]=$,F[de]=J,F[ue]=ee,F[ce+1]=ie,F[de+1]=re,F[ue+1]=ne,F[ce+2]=ae,F[de+2]=oe,F[ue+2]=le,D[f]=R+E,D[f+1]=k+E,D[f+2]=U+E,D[f+3]=k+E,D[f+4]=P+E,D[f+5]=U+E,A.faceidx+=6)}}A.vertices+=w},e.drawCone=function(e,r,n,s,a){if(!r||!n)return;a=a||{r:0,g:0,b:0};let o=new l.Vector3(n.x-r.x,n.y-r.y,n.z-r.z);var h=t(o.x,o.y,o.z);o=o.normalize();var c,d,u,f,p,m,g=i.basisVectors.length,v=i.basisVectors,_=g+2,y=e.updateGeoGroup(_),b=y.vertices,x=y.vertexArray,w=y.normalArray,A=y.colorArray,C=y.faceArray;for(x[c=3*b]=r.x,x[c+1]=r.y,x[c+2]=r.z,w[c]=-o.x,w[c+1]=-o.y,w[c+2]=-o.z,A[c]=a.r,A[c+1]=a.g,A[c+2]=a.b,x[c+3]=n.x,x[c+4]=n.y,x[c+5]=n.z,w[c+3]=o.x,w[c+4]=o.y,w[c+5]=o.z,A[c+3]=a.r,A[c+4]=a.g,A[c+5]=a.b,c+=6,u=0;u<g;++u){var S=v[u].clone();S.multiplyScalar(s),f=h[0]*S.x+h[3]*S.y+h[6]*S.z,p=h[1]*S.x+h[4]*S.y+h[7]*S.z,m=h[5]*S.y+h[8]*S.z,x[c]=f+r.x,x[c+1]=p+r.y,x[c+2]=m+r.z,w[c]=f,w[c+1]=p,w[c+2]=m,A[c]=a.r,A[c+1]=a.g,A[c+2]=a.b,c+=3}for(y.vertices+=g+2,d=y.faceidx,u=0;u<g;u++){var z=b+2+u,M=b+2+(u+1)%g;C[d]=z,C[d+1]=M,C[d+2]=b,C[d+=3]=z,C[d+1]=M,C[d+2]=b+1,d+=3}y.faceidx+=6*g};var n=new class SphereVertexCache{constructor(){this.cache=new Map}getVerticesForRadius(e,t){t=t||2,this.cache.has(t)||this.cache.set(t,new Map);let i=this.cache.get(t);if(i.has(e))return i.get(e);var r={vertices:[],verticesRows:[],normals:[]},n=16*t,s=10*t;e<1&&(n=10*t,s=8*t);var a,o,h=2*Math.PI,c=Math.PI;for(o=0;o<=s;o++){let t=[];for(a=0;a<=n;a++){let i=a/n,u=o/s,f=-e*Math.cos(0+i*h)*Math.sin(0+u*c),p=e*Math.cos(0+u*c),m=e*Math.sin(0+i*h)*Math.sin(0+u*c);var d=new l.Vector3(f,p,m);d.normalize(),r.vertices.push({x:f,y:p,z:m}),r.normals.push(d),t.push(r.vertices.length-1)}r.verticesRows.push(t)}return i.set(e,r),r}};e.drawSphere=function(e,t,i,r,s){var a=n.getVerticesForRadius(i,s),o=a.vertices,l=a.normals,h=e.updateGeoGroup(o.length),c=h.vertices,d=h.vertexArray,u=h.colorArray,f=h.faceArray,p=h.lineArray,m=h.normalArray;for(let e=0,i=o.length;e<i;++e){let i=3*(c+e),n=o[e];d[i]=n.x+t.x,d[i+1]=n.y+t.y,d[i+2]=n.z+t.z,u[i]=r.r,u[i+1]=r.g,u[i+2]=r.b}h.vertices+=o.length;let g=a.verticesRows,v=g.length-1;for(let e=0;e<v;e++){let t=g[e].length-1;for(let r=0;r<t;r++){let t=h.faceidx,n=h.lineidx,s=g[e][r+1]+c,a=3*s,d=g[e][r]+c,u=3*d,v=g[e+1][r]+c,_=3*v,y=g[e+1][r+1]+c,b=3*y,x=l[s-c],w=l[d-c],A=l[v-c],C=l[y-c];Math.abs(o[s-c].y)===i?(m[a]=x.x,m[_]=A.x,m[b]=C.x,m[a+1]=x.y,m[_+1]=A.y,m[b+1]=C.y,m[a+2]=x.z,m[_+2]=A.z,m[b+2]=C.z,f[t]=s,f[t+1]=v,f[t+2]=y,p[n]=s,p[n+1]=v,p[n+2]=s,p[n+3]=y,p[n+4]=v,p[n+5]=y,h.faceidx+=3,h.lineidx+=6):Math.abs(o[v-c].y)===i?(m[a]=x.x,m[u]=w.x,m[_]=A.x,m[a+1]=x.y,m[u+1]=w.y,m[_+1]=A.y,m[a+2]=x.z,m[u+2]=w.z,m[_+2]=A.z,f[t]=s,f[t+1]=d,f[t+2]=v,p[n]=s,p[n+1]=d,p[n+2]=s,p[n+3]=v,p[n+4]=d,p[n+5]=v,h.faceidx+=3,h.lineidx+=6):(m[a]=x.x,m[u]=w.x,m[b]=C.x,m[a+1]=x.y,m[u+1]=w.y,m[b+1]=C.y,m[a+2]=x.z,m[u+2]=w.z,m[b+2]=C.z,m[u]=w.x,m[_]=A.x,m[b]=C.x,m[u+1]=w.y,m[_+1]=A.y,m[b+1]=C.y,m[u+2]=w.z,m[_+2]=A.z,m[b+2]=C.z,f[t]=s,f[t+1]=d,f[t+2]=y,f[t+3]=d,f[t+4]=v,f[t+5]=y,p[n]=s,p[n+1]=d,p[n+2]=s,p[n+3]=y,p[n+4]=d,p[n+5]=v,p[n+6]=v,p[n+7]=y,h.faceidx+=6,h.lineidx+=8)}}},e.drawTorus=function(e,t,i,r,n,s,a=16,o=4){const h=new l.Vector3(i.x,i.y,i.z),c=Math.sqrt(h.x*h.x+h.y*h.y+h.z*h.z);if(c<1e-4)return;h.multiplyScalar(1/c);let d=new l.Vector3(0,1,0);Math.abs(h.x*d.x+h.y*d.y+h.z*d.z)>.9&&(d=new l.Vector3(1,0,0));const u=new l.Vector3;u.crossVectors(h,d).normalize();const f=new l.Vector3;f.crossVectors(u,h).normalize();const p=(a+1)*(o+1),m=e.updateGeoGroup(p),g=m.vertices,v=m.vertexArray,_=m.colorArray,y=m.normalArray,b=m.faceArray,x=m.lineArray;for(let e=0;e<=a;e++){const i=e/a*2*Math.PI,l=Math.cos(i),c=Math.sin(i),d=l*u.x+c*f.x,p=l*u.y+c*f.y,m=l*u.z+c*f.z,b=t.x+r*d,x=t.y+r*p,w=t.z+r*m;for(let t=0;t<=o;t++){const i=t/o*2*Math.PI,r=Math.cos(i),a=Math.sin(i),l=r*d+a*h.x,c=r*p+a*h.y,u=r*m+a*h.z,f=3*(g+(e*(o+1)+t));v[f]=b+n*l,v[f+1]=x+n*c,v[f+2]=w+n*u,y[f]=l,y[f+1]=c,y[f+2]=u,_[f]=s.r,_[f+1]=s.g,_[f+2]=s.b}}m.vertices+=p;for(let e=0;e<a;e++)for(let t=0;t<o;t++){const i=g+e*(o+1)+t,r=g+e*(o+1)+(t+1),n=g+(e+1)*(o+1)+(t+1),s=g+(e+1)*(o+1)+t,a=m.faceidx;b[a]=i,b[a+1]=r,b[a+2]=s,b[a+3]=r,b[a+4]=n,b[a+5]=s,m.faceidx+=6;const l=m.lineidx;x[l]=i,x[l+1]=r,x[l+2]=i,x[l+3]=s,x[l+4]=r,x[l+5]=n,x[l+6]=n,x[l+7]=s,m.lineidx+=8}}}(n||(n={}));var c=i(546),d=i(864);function u(e,t){var i,r,n,s,a,o,h,c,d,u=[],f=e;for((f=[]).push(e[0]),i=1,r=e.length-1;i<r;i++)if(a=e[i],o=e[i+1],a.smoothen){var p=new l.Vector3((a.x+o.x)/2,(a.y+o.y)/2,(a.z+o.z)/2);p.atom=a.atom,f.push(p)}else f.push(a);for(f.push(e[e.length-1]),i=-1,n=f.length;i<=n-3;i++)if(s=f[-1===i?0:i],a=f[i+1],o=f[i+2],h=f[i===n-3?n-1:i+3],c=(new l.Vector3).subVectors(o,s).multiplyScalar(.5),d=(new l.Vector3).subVectors(h,a).multiplyScalar(.5),!o.skip)for(var m=0;m<t;m++){var g=1/t*m,v=a.x+g*c.x+g*g*(-3*a.x+3*o.x-2*c.x-d.x)+g*g*g*(2*a.x-2*o.x+c.x+d.x),_=a.y+g*c.y+g*g*(-3*a.y+3*o.y-2*c.y-d.y)+g*g*g*(2*a.y-2*o.y+c.y+d.y),y=a.z+g*c.z+g*g*(-3*a.z+3*o.z-2*c.z-d.z)+g*g*g*(2*a.z-2*o.z+c.z+d.z),b=new l.Vector3(v,_,y);b.atom=m<t/2?a.atom:o.atom,u.push(b)}return u.push(f[f.length-1]),u}function f(e,t,i,r){for(var n,s,a,o,l=0,c=t.length;l<c;l++){o=Math.round(l*(r.length-1)/c),a=h.CC.color(r[o]);var d=e.updateGeoGroup(2),u=d.vertexArray,f=d.colorArray,p=d.faceArray;u[s=3*(n=d.vertices)]=t[l].x,u[s+1]=t[l].y,u[s+2]=t[l].z,u[s+3]=i[l].x,u[s+4]=i[l].y,u[s+5]=i[l].z;for(var m=0;m<6;++m)f[s+3*m]=a.r,f[s+1+3*m]=a.g,f[s+2+3*m]=a.b;if(l>0){var g=[n,n+1,n-1,n-2],v=d.faceidx;p[v]=g[0],p[v+1]=g[1],p[v+2]=g[3],p[v+3]=g[1],p[v+4]=g[2],p[v+5]=g[3],d.faceidx+=6}d.vertices+=2}}function p(e,t,i,r,n,s,a){a&&"default"!==a||(a="rectangle"),"edged"===a?function(e,t,i,r,n){if(!(t.length<2)){var s,a;if(s=t[0],a=t[t.length-1],s=u(s,r),a=u(a,r),!n)return f(e,s,a,i);var l,c,d,p,m,g,v,_,y,b,x,w,A,C,S,z,M,T,E,L,F,I,D=[],O=[[0,2,-6,-8],[-4,-2,6,4],[7,-1,-5,3],[-3,5,1,-7]];for(A=0,C=s.length;A<C;A++){if(b=Math.round(A*(i.length-1)/C),y=h.CC.color(i[b]),D.push(c=s[A]),D.push(c),D.push(d=a[A]),D.push(d),A<C-1){var R=s[A+1].clone().sub(s[A]);l=a[A].clone().sub(s[A]).cross(R).normalize().multiplyScalar(n)}for(D.push(p=s[A].clone().add(l)),D.push(p),D.push(m=a[A].clone().add(l)),D.push(m),void 0!==c.atom&&(x=c.atom),L=(E=e.updateGeoGroup(8)).vertexArray,F=E.colorArray,I=E.faceArray,L[v=3*(g=E.vertices)]=c.x,L[v+1]=c.y,L[v+2]=c.z,L[v+3]=c.x,L[v+4]=c.y,L[v+5]=c.z,L[v+6]=d.x,L[v+7]=d.y,L[v+8]=d.z,L[v+9]=d.x,L[v+10]=d.y,L[v+11]=d.z,L[v+12]=p.x,L[v+13]=p.y,L[v+14]=p.z,L[v+15]=p.x,L[v+16]=p.y,L[v+17]=p.z,L[v+18]=m.x,L[v+19]=m.y,L[v+20]=m.z,L[v+21]=m.x,L[v+22]=m.y,L[v+23]=m.z,S=0;S<8;++S)F[v+3*S]=y.r,F[v+1+3*S]=y.g,F[v+2+3*S]=y.b;if(A>0){var k=void 0!==w&&void 0!==x&&w.serial!==x.serial;for(S=0;S<4;S++){var P=[g+O[S][0],g+O[S][1],g+O[S][2],g+O[S][3]];if(I[_=E.faceidx]=P[0],I[_+1]=P[1],I[_+2]=P[3],I[_+3]=P[1],I[_+4]=P[2],I[_+5]=P[3],E.faceidx+=6,x.clickable||w.clickable||x.hoverable||w.hoverable){var U=D[P[3]].clone(),N=D[P[0]].clone(),B=D[P[2]].clone(),G=D[P[1]].clone();if(U.atom=D[P[3]].atom||null,B.atom=D[P[2]].atom||null,N.atom=D[P[0]].atom||null,G.atom=D[P[1]].atom||null,k){var V=U.clone().add(N).multiplyScalar(.5),j=B.clone().add(G).multiplyScalar(.5),H=U.clone().add(G).multiplyScalar(.5);S%2==0?((w.clickable||w.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,B,H),T=new o.Triangle(H,B,U),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)),(x.clickable||x.hoverable)&&(z=new o.Triangle(N,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(N,H,V),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T))):((x.clickable||x.hoverable)&&(z=new o.Triangle(V,H,U),M=new o.Triangle(j,B,H),T=new o.Triangle(H,B,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M),x.intersectionShape.triangle.push(T)),(w.clickable||w.hoverable)&&(z=new o.Triangle(N,G,H),M=new o.Triangle(G,j,H),T=new o.Triangle(N,H,V),w.intersectionShape.triangle.push(z),w.intersectionShape.triangle.push(M),w.intersectionShape.triangle.push(T)))}else(x.clickable||x.hoverable)&&(z=new o.Triangle(N,G,U),M=new o.Triangle(G,B,U),x.intersectionShape.triangle.push(z),x.intersectionShape.triangle.push(M))}}}E.vertices+=8,w=x}var W=D.length-8;for(L=(E=e.updateGeoGroup(8)).vertexArray,F=E.colorArray,I=E.faceArray,v=3*(g=E.vertices),_=E.faceidx,A=0;A<4;A++){D.push(D[2*A]),D.push(D[W+2*A]);var q=D[2*A],Y=D[W+2*A];L[v+6*A]=q.x,L[v+1+6*A]=q.y,L[v+2+6*A]=q.z,L[v+3+6*A]=Y.x,L[v+4+6*A]=Y.y,L[v+5+6*A]=Y.z,F[v+6*A]=y.r,F[v+1+6*A]=y.g,F[v+2+6*A]=y.b,F[v+3+6*A]=y.r,F[v+4+6*A]=y.g,F[v+5+6*A]=y.b}W+=8,z=[g,g+2,g+6,g+4],M=[g+1,g+5,g+7,g+3],I[_]=z[0],I[_+1]=z[1],I[_+2]=z[3],I[_+3]=z[1],I[_+4]=z[2],I[_+5]=z[3],I[_+6]=M[0],I[_+7]=M[1],I[_+8]=M[3],I[_+9]=M[1],I[_+10]=M[2],I[_+11]=M[3],E.faceidx+=12,E.vertices+=8}}(e,t,i,r,n):"rectangle"!==a&&"oval"!==a&&"parabola"!==a||function(e,t,i,r,n,s,a){var l,c,d,p,m,g,v,_,y,b;if((d=t.length)<2||t[0].length<2)return;for(l=0;l<d;l++)t[l]=u(t[l],r);if(p=t[0].length,!n)return f(e,t[0],t[d-1],i);var x=[],w=[],A=[];for(c=0;c<d;c++)x.push(.25+1.5*Math.sqrt((d-1)*c-Math.pow(c,2))/(d-1)),w.push(.5),A.push(2*(Math.pow(c/d,2)-c/d)+.6);var C,S,z,M,T,E,L,F,I,D,O=[];for(c=0;c<2*d-1;c++)O[c]=[c,c+1,c+1-2*d,c-2*d];O[2*d-1]=[c,c+1-2*d,c+1-4*d,c-2*d];let R=e.updateGeoGroup();for(l=0;l<p;l++){let r=e.groups,s=!1;var k,P;for(R=e.updateGeoGroup(2*d),r!=e.groups&&l>0&&(l-=1,s=!0),E=Math.round(l*(i.length-1)/p),T=h.CC.color(i[E]),y=v,b=_,v=[],_=[],m=[],void 0!==t[0][l].atom&&(M=t[0][l].atom,"oval"===a?g=x:"rectangle"===a?g=w:"parabola"===a&&(g=A)),g||(g=w),c=0;c<d;c++)k=l<p-1?t[c][l+1].clone().sub(t[c][l]):t[c][l-1].clone().sub(t[c][l]).negate(),P=c<d-1?t[c+1][l].clone().sub(t[c][l]):t[c-1][l].clone().sub(t[c][l]).negate(),m[c]=P.cross(k).normalize().multiplyScalar(n*g[c]);for(c=0;c<d;c++)v[c]=t[c][l].clone().add(m[c].clone().negate());for(c=0;c<d;c++)_[c]=t[c][l].clone().add(m[c]);for(L=R.vertexArray,F=R.colorArray,I=R.faceArray,S=3*(C=R.vertices),c=0;c<d;c++)L[S+3*c+0]=v[c].x,L[S+3*c+1]=v[c].y,L[S+3*c+2]=v[c].z;for(c=0;c<d;c++)L[S+3*c+0+3*d]=_[d-1-c].x,L[S+3*c+1+3*d]=_[d-1-c].y,L[S+3*c+2+3*d]=_[d-1-c].z;for(c=0;c<2*d;++c)F[S+3*c+0]=T.r,F[S+3*c+1]=T.g,F[S+3*c+2]=T.b;if(l>0&&!s){for(c=0;c<2*d;c++)D=[C+O[c][0],C+O[c][1],C+O[c][2],C+O[c][3]],I[z=R.faceidx]=D[0],I[z+1]=D[1],I[z+2]=D[3],I[z+3]=D[1],I[z+4]=D[2],I[z+5]=D[3],R.faceidx+=6;if(M.clickable||M.hoverable){var U=[];for(c in U.push(new o.Triangle(y[0],v[0],v[d-1])),U.push(new o.Triangle(y[0],v[d-1],y[d-1])),U.push(new o.Triangle(y[d-1],v[d-1],_[d-1])),U.push(new o.Triangle(y[d-1],_[d-1],b[d-1])),U.push(new o.Triangle(_[0],b[0],b[d-1])),U.push(new o.Triangle(_[d-1],_[0],b[d-1])),U.push(new o.Triangle(v[0],y[0],b[0])),U.push(new o.Triangle(_[0],v[0],b[0])),U)M.intersectionShape.triangle.push(U[c])}}R.vertices+=2*d}for(L=R.vertexArray,F=R.colorArray,I=R.faceArray,S=3*(C=R.vertices),z=R.faceidx,l=0;l<d-1;l++)D=[l,l+1,2*d-2-l,2*d-1-l],I[z=R.faceidx]=D[0],I[z+1]=D[1],I[z+2]=D[3],I[z+3]=D[1],I[z+4]=D[2],I[z+5]=D[3],R.faceidx+=6;for(l=0;l<d-1;l++)D=[C-1-l,C-2-l,C-2*d+l+1,C-2*d+l],I[z=R.faceidx]=D[0],I[z+1]=D[1],I[z+2]=D[3],I[z+3]=D[1],I[z+4]=D[2],I[z+5]=D[3],R.faceidx+=6}(e,t,i,r,n,0,a)}function m(e){return e&&"C"===e.elem&&"CA"===e.atom}function g(e,t){if(e&&t&&e.chain===t.chain){if(!(e.hetflag||t.hetflag||e.reschain!==t.reschain||e.resi!==t.resi&&e.resi!==t.resi-1))return!0;if(e.resi<t.resi){var i=e.x-t.x,r=e.y-t.y,n=e.z-t.z,s=i*i+r*r+n*n;if("CA"==e.atom&&"CA"==t.atom&&s<16)return!0;if(("P"==e.atom||"P"==t.atom)&&s<64)return!0}}return!1}function v(e,t,i,r,n){if(null!=t&&0!=t.vertices){n&&(t.initTypedArrays(),t.setUpNormals());var s=new a.MeshDoubleLambertMaterial;s.vertexColors=a.Coloring.FaceColors,"number"==typeof i&&i>=0&&i<1&&(s.transparent=!0,s.opacity=i),s.outline=r;var o=new a.Mesh(t,s);e.add(o)}}function _(e,t,i,r,n,s,a,o,h){var c,d,u,f,p,m;if(r&&n&&a){var g=n.sub(r);g.normalize();var v=o[h];for(d=h+1;d<o.length&&(v=o[d]).atom!=a.atom;d++);if((v=v?new l.Vector3(v.x,v.y,v.z):new l.Vector3(0,0,0)).sub(r),"arrow start"===a.ss){var _=v.clone().multiplyScalar(.3).cross(n);r.add(_);var y=v.clone().cross(g).normalize();g.rotateAboutVector(y,.43)}for(a.style.cartoon.ribbon?c=a.style.cartoon.thickness||.4:a.style.cartoon.width?c=a.style.cartoon.width:"c"===a.ss?c="P"===a.atom?.8:.5:"arrow start"===a.ss?(c=1.3,p=!0):c="arrow end"===a.ss||"h"===a.ss&&a.style.cartoon.tubes||"tube start"===a.ss?.5:1.3,null!=s&&g.dot(s)<0&&g.negate(),g.multiplyScalar(c),d=0;d<t;d++)u=2*d/(t-1)-1,(f=new l.Vector3(r.x+u*g.x,r.y+u*g.y,r.z+u*g.z)).atom=a,i&&"s"===a.ss&&(f.smoothen=!0),e[d].push(f);if(p)for(g.multiplyScalar(2),d=0;d<t;d++)u=2*d/(t-1)-1,(f=new l.Vector3(r.x+u*g.x,r.y+u*g.y,r.z+u*g.z)).atom=a,f.smoothen=!1,f.skip=!0,e[d].push(f);return m=a.style.cartoon.style||"default",e.style?e.style!=m&&(console.log("Warning: a cartoon chain's strand-style is ambiguous"),e.style="default"):e.style=m,"arrow start"!==a.ss&&"arrow end"!==a.ss||(a.ss="s"),p}}const y={C:!0,CA:!0,O:!0,P:!0,OP2:!0,O2P:!0,"O5'":!0,"O3'":!0,"C5'":!0,"C2'":!0,"O5*":!0,"O3*":!0,"C5*":!0,"C2*":!0,N1:!0,N3:!0},b={DA:!0,DG:!0,A:!0,G:!0},x={DT:!0,DC:!0,U:!0,C:!0,T:!0},w={DA:!0,DG:!0,A:!0,G:!0,DT:!0,DC:!0,U:!0,C:!0,T:!0};function A(e,t,i,s=10){let u=s,f=s;var A,C,S,z,M,T,E,L,F,I,D,O,R,k,P,U,N,B,G=new a.Geometry(!0),V=new a.Geometry(!0),j=[],H=[],W=1,q=!1,Y={};for(var Z in c.Gradient.builtinGradients)c.Gradient.builtinGradients.hasOwnProperty(Z)&&(Y[Z]=new c.Gradient.builtinGradients[Z](i[1],i[0]));var X=function(e,t){return i&&"spectrum"===t.color?t.colorscheme in Y?Y[t.colorscheme].valueToHex(e.resi):Y.sinebow.valueToHex(e.resi):(0,d.getColorFromStyle)(e,t).getHex()};for(L=0;L<u;L++)H[L]=[];var K=!1,Q=!1,$=[];for(L in t){if("C"===(z=t[L]).elem&&"CA"===z.atom){var J=g(S,z);J&&"s"===z.ss?K=!0:K&&(S&&C&&S.style.cartoon.arrows&&C.style.cartoon.arrows&&(S.ss="arrow end",C.ss="arrow start"),K=!1),J&&("h"===S.ss||"tube start"==S.ss)&&S.style.cartoon.tubes?!Q&&"tube start"!=S.ss&&z.style.cartoon.tubes&&(z.ss="tube start",Q=!0):Q&&("tube start"===S.ss?S.ss="tube end":C&&C.style.cartoon.tubes&&(C.ss="tube end"),Q=!1),C=S,S=z}z&&z.atom in y&&$.push(z)}Q&&S.style.cartoon.tubes&&(S.ss="tube end",Q=!1);var ee=function(t){H[0].length>0&&p(V,H,j,f,E,0,H.style);var i=[],r=null;if(t){for(L=0;L<u;L++)i[L]=H[L][H[L].length-1];r=j[j.length-1]}for(H=[],L=0;L<u;L++)H[L]=[];if(j=[],t){for(L=0;L<u;L++)H[L].push(i[L]);j.push(r)}v(e,V,W,q,!0),v(e,G,W,q,!1),V=new a.Geometry(!0),G=new a.Geometry(!0)};S=void 0;let te=[];for(var ie=0;ie<$.length;ie++){var re=(z=$[ie]).resn.trim(),ne=re in w;if(W=1,A=z.style.cartoon,S&&S.style.cartoon&&(W=S.style.cartoon.opacity),S&&S.style.cartoon&&S.style.cartoon.outline&&(q=S.style.cartoon.outline),!S||!S.style.cartoon||z.style.cartoon&&S.style.cartoon.opacity==z.style.cartoon.opacity||ee(S.chain==z.chain),S&&z&&!g(S,z)&&S.chain&&S.chain==z.chain&&!S.hetflag&&!z.hetflag&&S.reschain+1==z.reschain&&te.push([S,z]),"trace"===A.style){if(z.hetflag);else if("C"===z.elem&&"CA"===z.atom||ne&&"P"===z.atom||"BB"===z.atom){if(T=X(z,A),E=(0,d.isNumeric)(A.thickness)?A.thickness:.4,g(S,z))if(T==M){var se=h.CC.color(T);n.drawCylinder(G,S,z,E,se,2,2)}else{var ae=(new l.Vector3).addVectors(S,z).multiplyScalar(.5),oe=h.CC.color(M),le=h.CC.color(T);n.drawCylinder(G,S,ae,E,oe,2,0),n.drawCylinder(G,ae,z,E,le,0,2)}if((!0===z.clickable||z.hoverable)&&void 0!==z.intersectionShape){var he=new l.Vector3(z.x,z.y,z.z);z.intersectionShape.sphere.push(new o.Sphere(he,E))}S=z,M=T}}else{if(m(z)||ne&&("P"===z.atom||0==z.atom.indexOf("O5"))){if(B)if("tube end"===z.ss)B=!1,N=new l.Vector3(z.x,z.y,z.z),n.drawCylinder(G,U,N,2,h.CC.color(M),1,1),z.ss="h";else{if(S.chain==z.chain&&"tube end"!==S.ss)continue;B=!1,S.ss="h",N=new l.Vector3(S.x,S.y,S.z),n.drawCylinder(G,U,N,2,h.CC.color(M),1,1)}if(S&&(!g(S,z)||"tube start"===S.ss)){for("tube start"===S.ss&&(B=!0,U=new l.Vector3(S.x,S.y,S.z),S.ss="h"),P&&(k=O?(new l.Vector3).addVectors(S,O).multiplyScalar(.5):new l.Vector3(S.x,S.y,S.z),n.drawCylinder(G,k,P,.4,h.CC.color(P.color),0,2),_(H,u,!0,O,R,D,S,$,ie),j.push(T),k=null,P=null),H[0].length>0&&p(V,H,j,f,E,0,H.style),H=[],L=0;L<u;L++)H[L]=[];j=[]}if(void 0===S||S.rescode!=z.rescode||S.resi!=z.resi){if(P&&null!=S){var ce=(k=(new l.Vector3).addVectors(S,z).multiplyScalar(.5)).clone().sub(P).multiplyScalar(.02);k.add(ce),n.drawCylinder(G,k,P,.4,h.CC.color(P.color),0,2),k=null,P=null}T=X(z,A),j.push(T),E=(0,d.isNumeric)(A.thickness)?A.thickness:.4,S=z,(F=new l.Vector3(S.x,S.y,S.z)).resi=S.resi,M=T}!0!==z.clickable&&!0!==z.hoverable||void 0!==z.intersectionShape&&void 0!==z.intersectionShape.triangle||(z.intersectionShape={sphere:null,cylinder:[],line:[],triangle:[]})}else null!=S&&(m(S)&&"O"===z.atom||ne&&"P"===S.atom&&("OP2"===z.atom||"O2P"===z.atom)||ne&&0==S.atom.indexOf("O5")&&0==z.atom.indexOf("C5"))?((I=new l.Vector3(z.x,z.y,z.z)).resi=z.resi,"OP2"!==z.atom&&"O2P"!==z.atom||(R=new l.Vector3(z.x,z.y,z.z))):ne&&0==z.atom.indexOf("O3")?O=new l.Vector3(z.x,z.y,z.z):("N1"===z.atom&&re in b||"N3"===z.atom&&re in x)&&((P=new l.Vector3(z.x,z.y,z.z)).color=(0,d.getColorFromStyle)(z,A).getHex());I&&F&&I.resi===F.resi&&(_(H,u,!0,F,I,D,S,$,ie),D=I,F=null,I=null,j.push(T))}}P&&(k=O?(new l.Vector3).addVectors(S,O).multiplyScalar(.5):new l.Vector3(S.x,S.y,S.z),n.drawCylinder(G,k,P,.4,h.CC.color(P.color),0,2),_(H,u,!0,O,R,D,S,$,ie),j.push(T)),ee(!1);var de=function(e,t){if(e.style.cartoon.gapcutoff&&e.style.cartoon.gapcutoff==t.style.cartoon.gapcutoff){let s=e.style.cartoon.gapcutoff,a=t.resi-e.resi;if(a>0&&a<s){let s=.25,o=t.x-e.x,c=t.y-e.y,u=t.z-e.z,f=Math.sqrt(o*o+c*c+u*u),p=f/(2*a),m=new l.Vector3(e.x,e.y,e.z),g=f/p,v=new l.Vector3((t.x-e.x)/g,(t.y-e.y)/g,(t.z-e.z)/g);m.add({x:v.x/2,y:v.y/2,z:v.z/2});let _=m.clone().add(v);v.multiplyScalar(2);let y=(0,d.extend)({},e);for(var i=0;i<a;i++){y.resi+=1;let e=X(y,y.style.cartoon);n.drawCylinder(G,m,_,s,h.CC.color(e),r.FLAT,r.FLAT),m.add(v),_.add(v)}ee(!1)}}};for(let e of te)de(e[0],e[1])}var C=i(797),S=i(865),z=i(392);function M(e,t){for(var i=[[]],r=void 0===(t=t||{}).assignBonds||t.assignBonds,n=e.trimStart().split(/\r?\n|\r/);n.length>0&&!(n.length<3);){var s=parseInt(n[0]);if(isNaN(s)||s<=0)break;if(n.length<s+2)break;var o=/Lattice\s*=\s*["\{\}]([^"\{\}]+)["\{\}]\s*/gi.exec(n[1]);if(null!=o&&o.length>1){var l=new Float32Array(o[1].split(/\s+/)),h=new a.Matrix3(l[0],l[3],l[6],l[1],l[4],l[7],l[2],l[5],l[8]);i.modelData=[{cryst:{matrix:h}}]}for(var c=2,d=i[i.length-1].length,u=d+s,f=d;f<u;f++){var p=n[c++].trim().split(/\s+/),m={};m.serial=f;var g=p[0];m.atom=m.elem=g[0].toUpperCase()+g.substring(1,2).toLowerCase(),m.x=parseFloat(p[1]),m.y=parseFloat(p[2]),m.z=parseFloat(p[3]),m.hetflag=!0,m.bonds=[],m.bondOrder=[],m.properties={},i[i.length-1][f]=m,p.length>=7&&(m.dx=parseFloat(p[4]),m.dy=parseFloat(p[5]),m.dz=parseFloat(p[6]))}if(!t.multimodel)break;i.push([]),n.splice(0,c)}if(r)for(let e=0;e<i.length;e++)(0,z.assignBonds)(i[e],t);if(t.onemol){var v=i;(i=[]).push(v[0]);for(let e=1;e<v.length;e++){let t=i[0].length;for(let r=0;r<v[e].length;r++){let n=v[e][r];for(let e=0;e<n.bonds.length;e++)n.bonds[e]=n.bonds[e]+t;n.index=i[0].length,n.serial=i[0].length,i[0].push(n)}}}return i}const T=function(e,t,i,r){let n;try{n=JSON.parse(e)}catch(t){return void console.warn("3DMOL_STYLE: invalid JSON: "+e)}const s=t.length-1,a=t[s];if(n.bonds&&"object"==typeof n.bonds){const e=n.bonds;for(const t in e){if(!e.hasOwnProperty(t))continue;const n=t.split("-");if(2!==n.length)continue;const s=parseInt(n[0])-1+r,o=parseInt(n[1])-1+r,l=i[s],h=i[o];if(null==l||null==h)continue;const c=e[t],d=l<h?h:l,u=a[l<h?l:h],f=u.bonds.indexOf(d);f<0||(u.bondStyles||(u.bondStyles=[]),u.bondStyles[f]||(u.bondStyles[f]={}),l>h&&(c.color1||c.color2)&&([c.color1,c.color2]=[c.color2,c.color1]),Object.assign(u.bondStyles[f],c))}delete n.bonds}Object.keys(n).length>0&&(t.modelData[s].style=n)},E=function(e,t,i,r,n){for(;t<e.length&&!e[t].startsWith("M END");)t++;for(t<e.length&&t++;t<e.length;){const s=e[t];let a=s.trim();if(t++,"$$$$"===a)return t;const o=s.match(/^>\s*<([^>]+)>/);if(!o)continue;const l=o[1].trim(),h=[];for(;t<e.length&&(a=e[t].trim(),""!==a&&"$$$$"!==a&&">"!==e[t].charAt(0));)h.push(e[t]),t++;"3DMOL_STYLE"===l&&h.length>0&&T(h.join(" ").trim(),i,r,n)}return t},L=function(e,t,i,r){e[t].bonds.push(i),e[t].bondOrder.push(r),e[i].bonds.push(t),e[i].bondOrder.push(r)};function F(e,t){let i="V2000";const r=e.split(/\r?\n|\r/);return r.length>3&&r[3].length>38&&(i=r[3].substring(34,39)),"V2000"===i?function(e,t){const i=[[]],r=i.modelData=[];r.push({});const n=void 0!==t.keepH&&!t.keepH;let s=0;for(;s<e.length&&!(e.length-s<4);){const a=parseInt(e[s+3].substring(0,3));if(isNaN(a)||a<=0)break;const o=parseInt(e[s+3].substring(3,6));let l=4;if(e.length-s<4+a+o)break;const h=[],c=i[i.length-1],d=c.length,u=d+a;for(let t=d;t<u;t++,l++){const i=e[s+l],r={},a=i.substring(31,34).replace(/ /g,"");r.atom=r.elem=a[0].toUpperCase()+a.substring(1).toLowerCase(),"H"===r.elem&&n||(r.serial=t,h[t]=c.length,r.x=parseFloat(i.substring(0,10)),r.y=parseFloat(i.substring(10,20)),r.z=parseFloat(i.substring(20,30)),r.hetflag=!0,r.bonds=[],r.bondOrder=[],r.properties={},r.index=c.length,c.push(r))}for(let t=0;t<o;t++,l++){const t=e[s+l],i=h[parseInt(t.substring(0,3))-1+d],r=h[parseInt(t.substring(3,6))-1+d],n=parseFloat(t.substring(6));void 0!==i&&void 0!==r&&L(c,i,r,n)}if(s=E(e,s+l,i,h,d),!t.multimodel)break;t.onemol||(i.push([]),r.push({}))}return i}(r,t):"V3000"===i?function(e,t){const i=[[]],r=i.modelData=[];r.push({});const n=void 0!==t.keepH&&!t.keepH;let s=0;for(;s<e.length&&!(e.length-s<8)&&e[s+4].startsWith("M V30 BEGIN CTAB")&&e[s+5].startsWith("M V30 COUNTS")&&!(e[s+5].length<14);){const a=e[s+5].substring(13).match(/\S+/g);if(a.length<2)break;const o=parseInt(a[0]);if(isNaN(o)||o<=0)break;const l=parseInt(a[1]);let h=7;if(e.length-s<8+o+l)break;const c=[],d=i[i.length-1],u=d.length,f=u+o;for(let t=u;t<f;t++,h++){const i=e[s+h].substring(6).match(/\S+/g);if(i.length>4){const e={},r=i[1].replace(/ /g,"");e.atom=e.elem=r[0].toUpperCase()+r.substring(1).toLowerCase(),"H"===e.elem&&n||(e.serial=t,c[t]=d.length,e.x=parseFloat(i[2]),e.y=parseFloat(i[3]),e.z=parseFloat(i[4]),e.hetflag=!0,e.bonds=[],e.bondOrder=[],e.properties={},e.index=d.length,d.push(e))}}if("M V30 END ATOM"!==e[s+h])break;if(h++,0===l||"M V30 BEGIN BOND"!==e[s+h])break;h++;for(let t=0;t<l;t++,h++){const t=e[s+h].substring(6).match(/\S+/g);if(t.length>3){const e=c[parseInt(t[2])-1+u],i=c[parseInt(t[3])-1+u],r=parseFloat(t[1]);void 0!==e&&void 0!==i&&L(d,e,i,r)}}if(s=E(e,s+h,i,c,u),!t.multimodel)break;t.onemol||(i.push([]),r.push({}))}return i}(r,t):[[""]]}function I(e,t){var i=[[]];"string"==typeof e&&(e=JSON.parse(e));for(var r=e.m,n=r[0].a,s=r[0].b,a=r[0].s,o=void 0!==t&&void 0!==t.parseStyle?t.parseStyle:void 0!==a,l=i[i.length-1].length,h=0;h<n.length;h++){var c=n[h],d={};d.id=c.i,d.x=c.x,d.y=c.y,d.z=c.z||0,d.bonds=[],d.bondOrder=[];var u=c.l||"C";d.elem=u[0].toUpperCase()+u.substring(1).toLowerCase(),d.serial=i[i.length-1].length,o&&(d.style=a[c.s||0]),i[i.length-1].push(d)}for(let e=0;e<s.length;e++){let t=s[e],r=t.b+l,n=t.e+l,a=t.o||1,o=i[i.length-1][r],h=i[i.length-1][n];o.bonds.push(n),o.bondOrder.push(a),h.bonds.push(r),h.bondOrder.push(a)}return i}function D(e,t){!function(e,t){const i=t||3.2,r=i*i,n=[];for(let t=0,i=e.length;t<i;t++){e[t].index=t;const i=e[t];i.hetflag||"N"!==i.atom&&"O"!==i.atom||(n.push(i),i.hbondOther=null,i.hbondDistanceSq=Number.POSITIVE_INFINITY)}n.sort(function(e,t){return e.z-t.z});for(let e=0,t=n.length;e<t;e++){const s=n[e];for(let a=e+1;a<t;a++){const e=n[a],t=e.z-s.z;if(t>i)break;if(e.atom==s.atom)continue;const o=Math.abs(e.y-s.y);if(o>i)continue;const l=Math.abs(e.x-s.x);if(l>i)continue;const h=l*l+o*o+t*t;h>r||e.chain==s.chain&&Math.abs(e.resi-s.resi)<4||(h<s.hbondDistanceSq&&(s.hbondOther=e,s.hbondDistanceSq=h),h<e.hbondDistanceSq&&(e.hbondOther=s,e.hbondDistanceSq=h))}}}(e,t);const i={};let r,n,s,a,o,l;for(r=0,n=e.length;r<n;r++)if(o=e[r],void 0===i[o.chain]&&(i[o.chain]=[]),isFinite(o.hbondDistanceSq)){const e=o.hbondOther;void 0===i[e.chain]&&(i[e.chain]=[]),4===Math.abs(e.resi-o.resi)&&(i[o.chain][o.resi]="h")}for(s in i)for(a=1;a<i[s].length-1;a++){const e=i[s][a-1],t=i[s][a+1];l=i[s][a],"h"==e&&e==t&&l!=e&&(i[s][a]=e)}for(r=0,n=e.length;r<n;r++)o=e[r],isFinite(o.hbondDistanceSq)&&"h"!=i[o.chain][o.resi]&&"h"!==o.ss&&(i[o.chain][o.resi]="maybesheet");for(let t=0,r=e.length;t<r;t++)if(o=e[t],isFinite(o.hbondDistanceSq)&&"maybesheet"==i[o.chain][o.resi]){let e=o.hbondOther,t=i[e.chain][e.resi];"maybesheet"!=t&&"s"!=t||(i[o.chain][o.resi]="s",i[e.chain][e.resi]="s")}for(let e in i){for(let t=1;t<i[e].length-1;t++){const r=i[e][t-1],n=i[e][t+1];l=i[e][t],"s"==r&&r==n&&l!=r&&(i[e][t]=r)}for(let t=0;t<i[e].length;t++){const r=i[e][t];"h"!=r&&"s"!=r||i[e][t-1]!=r&&i[e][t+1]!=r&&delete i[e][t]}}for(r=0,n=e.length;r<n;r++)o=e[r],l=i[o.chain][o.resi],delete o.hbondOther,delete o.hbondDistanceSq,void 0!==l&&"maybesheet"!==l&&(o.ss=l,i[o.chain][o.resi-1]!=l&&(o.ssbegin=!0),i[o.chain][o.resi+1]!=l&&(o.ssend=!0))}function O(e,t,i,r){const n=!i.duplicateAssemblyAtoms,s=t.length;let o=s,l=-1,h=null,c=null;(i.normalizeAssembly||i.wrapAtoms)&&r&&(h=(0,a.conversionMatrix3)(r.a,r.b,r.c,r.alpha,r.beta,r.gamma),c=new a.Matrix3,c.getInverse3(h));let d=function(e){let t=e.clone().applyMatrix3(c);const i=[t.x,t.y,t.z],r=[0,0,0];for(let e=0;e<3;e++){for(;i[e]<-.001;)i[e]+=1,r[e]+=1;for(;i[e]>1.001;)i[e]-=1,r[e]-=1}const n=new a.Vector3(r[0],r[1],r[2]);return n.applyMatrix3(h),n};if(i.normalizeAssembly&&r)for(let i=0;i<e.length;i++){const r=new a.Vector3(0,0,0);for(let n=0;n<s;n++){const s=new a.Vector3(t[n].x,t[n].y,t[n].z);s.applyMatrix4(e[i]),r.add(s)}r.divideScalar(s);const n=d(r);e[i].isNearlyIdentity()&&n.lengthSq()>.001&&(l=i),e[i].translate(n)}if(n){if(e.length>1)for(let i=0;i<t.length;i++){var u=[];for(let r=0;r<e.length;r++)if(!e[r].isNearlyIdentity()){var f=new a.Vector3;f.set(t[i].x,t[i].y,t[i].z),f.applyMatrix4(e[r]),u.push(f)}t[i].symmetries=u}}else{for(let e=0;e<s;e++)t[e].sym=-1;for(let n=0;n<e.length;n++)if(e[n].isNearlyIdentity()||l==n)for(let e=0;e<s;e++)t[e].sym=n;else{let l=new a.Vector3;for(let a=0;a<s;a++){const s=[];for(let e=0;e<t[a].bonds.length;e++)s.push(t[a].bonds[e]+o);if(l.set(t[a].x,t[a].y,t[a].z),l.applyMatrix4(e[n]),i.wrapAtoms&&r){let e=d(l);l.add(e)}const h={};for(const e in t[a])h[e]=t[a][e];h.x=l.x,h.y=l.y,h.z=l.z,h.bonds=s,h.sym=n,h.index=t.length,t.push(h)}o=t.length}if(i.wrapAtoms&&r){let e=new a.Vector3;for(let i=0;i<s;i++){e.set(t[i].x,t[i].y,t[i].z);let r=d(e);e.add(r),t[i].x=e.x,t[i].y=e.y,t[i].z=e.z}}if(l>=0){const i=new a.Vector3;for(let r=0;r<s;r++)i.set(t[r].x,t[r].y,t[r].z),i.applyMatrix4(e[l]),t[r].x=i.x,t[r].y=i.y,t[r].z=i.z}e.length=0}}var R=i(408);const k=new Set(["ABU","ACD","ALA","ALB","ALI","ARG","AR0","ASN","ASP","ASX","BAS","CYS","CYH","CYX","CSS","CSH","GLN","GLU","GLX","GLY","HIS","HIE","HID","HIP","HYP","ILE","ILU","LEU","LYS","MET","PCA","PGA","PHE","PR0","PRO","PRZ","SER","THR","TRP","TYR","VAL","A","1MA","C","5MC","OMC","G","1MG","2MG","M2G","7MG","OMG","YG","I","T","U","+U","H2U","5MU","PSU","ACE","F0R","H2O","HOH","WAT"]);function P(e,t){const i=[],r=[];for(let t=0,n=e.length;t<n;t++){const n=e[t];n.index=t,n.hetflag||!k.has(n.resn)?r.push(n):i.push(n)}(0,z.assignBonds)(r,t),i.sort(function(e,t){return e.chain!==t.chain?e.chain<t.chain?-1:1:e.resi-t.resi});let n,s=-1,a=-1;for(let e=0,r=i.length;e<r;e++){const r=i[e];r.resi!==s&&(s=r.resi,n||a++,n=!1),r.reschain=a;for(let s=e+1;s<i.length;s++){const e=i[s];if(e.chain!==r.chain||e.resi-r.resi>1)break;(0,R.areConnected)(r,e,t)&&(-1===r.bonds.indexOf(e.index)&&(r.bonds.push(e.index),r.bondOrder.push(1),e.bonds.push(r.index),e.bondOrder.push(1)),r.resi!==e.resi&&(n=!0))}}}const U=function(e,t,i,r){return new a.Vector3(t,i,r).applyMatrix3(e)};function N(e,t={}){const i=[],r=!t.doAssembly,n=i.modelData=[],s=void 0===t.assignBonds||t.assignBonds;function o(e,t){const i=[];let r=0,n=0;for(;n<e.length;){for(;e.substring(n,n+t.length)!==t&&n<e.length;)if("'"===e[n]){for(n++;n<e.length&&"'"!==e[n];)n++;for(;e.substring(n,n+t.length)!==t&&n<e.length;)n++}else if('"'===e[n]){for(n++;n<e.length&&'"'!==e[n];)n++;n++}else n++;i.push(e.substring(r,n)),r=n+=t.length}return i}const l=e.split(/\r?\n|\r/),h=[];let c=!1;for(let e=0;e<l.length;e++){var d=l[e].split("#")[0];if(c?";"===d[0]&&(c=!1):";"===d[0]&&(c=!0),c||""!==d){if(!c&&"_"===(d=d.trim())[0]){const e=d.split(/\s/)[0].indexOf(".");if(e>-1){let t=d.split("");t[e]="_",d=(d=t.join("")).substring(0,e)+"_"+d.substring(e+1)}}h.push(d)}}let u=0;for(;u<h.length;){for(;!h[u].startsWith("data_")||"data_global"===h[u];)u++;u++;const e={};for(;u<h.length&&!h[u].startsWith("data_");)if(void 0===h[u][0])u++;else if("_"===h[u][0]){const t=h[u].split(/\s/)[0].toLowerCase(),i=e[t]=e[t]||[],r=h[u].substring(h[u].indexOf(t)+t.length);if(""===r)if(u++,";"===h[u][0]){let e=h[u].substring(1);for(u++;";"!==h[u];)e=e+"\n"+h[u],u++;i.push(e)}else i.push(h[u]);else i.push(r.trim());u++}else if("loop_"===h[u].substring(0,5)){u++;const t=[];for(;""===h[u]||"_"===h[u][0];){if(""!==h[u]){let i=h[u].split(/\s/)[0].toLowerCase(),r=e[i]=e[i]||[];t.push(r)}u++}let i=0;for(;u<h.length&&"_"!==h[u][0]&&!h[u].startsWith("loop_")&&!h[u].startsWith("data_");){let e=o(h[u]," ");for(let r=0;r<e.length;r++)""!==e[r]&&(t[i].push(e[r]),i=(i+1)%t.length);u++}}else u++;n.push({symmetries:[]}),i.push([]);const t=void 0!==e._atom_site_id?e._atom_site_id.length:e._atom_site_label.length;let s;if(void 0!==e._cell_length_a){const t=parseFloat(e._cell_length_a),i=parseFloat(e._cell_length_b),r=parseFloat(e._cell_length_c),o=parseFloat(e._cell_angle_alpha)||90,l=parseFloat(e._cell_angle_beta)||90,h=parseFloat(e._cell_angle_gamma)||90;s=(0,a.conversionMatrix3)(t,i,r,o,l,h),n[n.length-1].cryst={a:t,b:i,c:r,alpha:o,beta:l,gamma:h}}for(let r=0;r<t;r++){if(void 0!==e._atom_site_group_pdb&&"TER"===e._atom_site_group_pdb[r])continue;const t={};if(void 0!==e._atom_site_cartn_x)t.x=parseFloat(e._atom_site_cartn_x[r]),t.y=parseFloat(e._atom_site_cartn_y[r]),t.z=parseFloat(e._atom_site_cartn_z[r]);else{const i=U(s,parseFloat(e._atom_site_fract_x[r]),parseFloat(e._atom_site_fract_y[r]),parseFloat(e._atom_site_fract_z[r]));t.x=i.x,t.y=i.y,t.z=i.z}t.chain=e._atom_site_auth_asym_id?e._atom_site_auth_asym_id[r]:e._atom_site_label_asym_id?e._atom_site_label_asym_id[r]:void 0,t.lchain=e._atom_site_label_asym_id?e._atom_site_label_asym_id[r]:void 0,t.resi=e._atom_site_auth_seq_id?parseInt(e._atom_site_auth_seq_id[r]):e._atom_site_label_seq_id?e._atom_site_label_seq_id[r]:void 0,t.resn=e._atom_site_auth_comp_id?e._atom_site_auth_comp_id[r].trim():e._atom_site_label_comp_id?e._atom_site_label_comp_id[r].trim():void 0,t.atom=e._atom_site_auth_atom_id?e._atom_site_auth_atom_id[r].replace(/"/gm,""):e._atom_site_label_atom_id?e._atom_site_label_atom_id[r].replace(/"/gm,""):void 0,t.hetflag=!e._atom_site_group_pdb||"HETA"===e._atom_site_group_pdb[r]||"HETATM"===e._atom_site_group_pdb[r],e._atom_site_b_iso_or_equiv&&(t.b=parseFloat(e._atom_site_b_iso_or_equiv[r]));let n="X";e._atom_site_type_symbol?n=e._atom_site_type_symbol[r].replace(/\(?\+?\d+.*/,""):e._atom_site_label&&(n=e._atom_site_label[r].split("_")[0].replace(/\(?\d+.*/,"")),t.elem=n[0].toUpperCase()+n.substring(1,2).toLowerCase(),t.bonds=[],t.ss="c",t.serial=r,t.bondOrder=[],t.properties={},i[i.length-1].push(t)}if(void 0!==e._pdbx_struct_oper_list_id&&!r)for(let t=0;t<e._pdbx_struct_oper_list_id.length;t++){const i=parseFloat(e["_pdbx_struct_oper_list_matrix[1][1]"][t]),r=parseFloat(e["_pdbx_struct_oper_list_matrix[1][2]"][t]),s=parseFloat(e["_pdbx_struct_oper_list_matrix[1][3]"][t]),o=parseFloat(e["_pdbx_struct_oper_list_vector[1]"][t]),l=parseFloat(e["_pdbx_struct_oper_list_matrix[2][1]"][t]),h=parseFloat(e["_pdbx_struct_oper_list_matrix[2][2]"][t]),c=parseFloat(e["_pdbx_struct_oper_list_matrix[2][3]"][t]),d=parseFloat(e["_pdbx_struct_oper_list_vector[2]"][t]),u=parseFloat(e["_pdbx_struct_oper_list_matrix[3][1]"][t]),f=parseFloat(e["_pdbx_struct_oper_list_matrix[3][2]"][t]),p=parseFloat(e["_pdbx_struct_oper_list_matrix[3][3]"][t]),m=parseFloat(e["_pdbx_struct_oper_list_vector[3]"][t]),g=new a.Matrix4(i,r,s,o,l,h,c,d,u,f,p,m);n[n.length-1].symmetries.push(g)}const l=function(e){const t=e.match("-"),i=(e=e.replace(/[-xyz]/g,"")).split("/");let r,n;return n=void 0===i[1]?1:parseInt(i[1]),r=""===i[0]?1:parseInt(i[0]),r/n*(t?-1:1)};if(void 0!==e._symmetry_equiv_pos_as_xyz&&!r)for(let t=0;t<e._symmetry_equiv_pos_as_xyz.length;t++){const i=e._symmetry_equiv_pos_as_xyz[t].replace(/["' ]/g,"").split(",").map(function(e){return e.replace(/-/g,"+-")});let r=new a.Matrix4(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1);for(let e=0;e<3;e++){const t=i[e].split("+");for(let i=0;i<t.length;i++){const n=t[i];if(""===n)continue;const s=l(n);n.match("x")?r.elements[e+0]=s:n.match("y")?r.elements[e+4]=s:n.match("z")?r.elements[e+8]=s:r.elements[e+12]=s}}const o=s.getMatrix4(),h=(new a.Matrix4).getInverse(o,!0);r=(new a.Matrix4).multiplyMatrices(r,h),r=(new a.Matrix4).multiplyMatrices(o,r),n[n.length-1].symmetries.push(r)}}for(let e=0;e<i.length;e++)!s||t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms||P(i[e],t),D(i[e],t.hbondCutoff),O(n[e].symmetries,i[e],t,n[e].cryst),t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms&&s&&P(i[e],t);return i}let B={"C.1":"C",C1:"C","C.2":"C",C2:"C","C.3":"C",C3:"C","C.ar":"C",Car:"C","C.cat":"C",Ccat:"C","H.spc":"H",Hspc:"H","H.t3p":"H",Ht3p:"H","N.1":"N",N1:"N","N.2":"N",N2:"N","N.3":"N",N3:"N","N.4":"N",N4:"N","N.am":"N",Nam:"N","N.ar":"N",Nar:"N","N.p13":"N",Np13:"N","O.2":"O",O2:"O","O.3":"O",O3:"O","O.co2":"O",Oco2:"O","O.spc":"O",Ospc:"O","O.t3p":"O",Ot3p:"O","P.3":"P",P3:"P","S.2":"S",S2:"S","S.3":"S",S3:"S","S.o":"S",So:"S","S.o2":"S",So2:"S"};function G(e,t){var i=[[]],r=!1;void 0!==t.keepH&&(r=!t.keepH);var n=e.search(/@<TRIPOS>MOLECULE/),s=e.search(/@<TRIPOS>ATOM/);if(-1==n||-1==s)return i;for(var a=e.substring(n).split(/\r?\n|\r/);a.length>0;){var o=[],l=a[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),h=parseInt(l[0]),c=0;l.length>1&&(c=parseInt(l[1]));var d,u=4;for(d=3;d<a.length;d++)if("@<TRIPOS>ATOM"==a[d]){u=d+1;break}var f=i[i.length-1].length,p=f+h;for(d=f;d<p;d++){var m={},g=(l=a[u++].replace(/^\s+/,"").replace(/\s+/g," ").split(" "))[5];if(g=void 0!==B[g]?B[g]:(g=g.split(".")[0])[0].toUpperCase()+g.substring(1).toLowerCase(),m.atom=l[1],m.elem=g,"H"==m.elem&&r);else{var v=i[i.length-1].length,_=parseInt(l[0]);m.serial=_,m.x=parseFloat(l[2]),m.y=parseFloat(l[3]),m.z=parseFloat(l[4]),m.atom=l[5];var y=parseFloat(l[8]);m.index=v,m.bonds=[],m.bondOrder=[],m.properties={charge:y,partialCharge:y},o[_]=v,i[i.length-1].push(m)}}for(var b=!1;u<a.length;)if("@<TRIPOS>BOND"==a[u++]){b=!0;break}if(b&&c)for(d=0;d<c;d++){l=a[u++].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");var x=parseInt(l[1]),w=i[i.length-1][o[x]],A=parseInt(l[2]),C=i[i.length-1][o[A]],S=parseInt(l[3]);isNaN(S)&&(S=1),void 0!==w&&void 0!==C&&(w.bonds.push(o[A]),w.bondOrder.push(S),C.bonds.push(o[x]),C.bondOrder.push(S))}if(!t.multimodel)break;t.onemol||i.push([]),a.splice(0,u),e=a.join("\n")}return i}var V=i(40);function j(e,t){let i=e.replace(/ /g,"");return i.length>0&&"H"===i[0]&&"Hg"!==i&&"He"!==i&&"Hf"!==i&&"Hs"!==i&&"Ho"!==i&&(i="H"),i.length>1&&(i=i[0].toUpperCase()+i.substring(1).toLowerCase(),void 0===V.bondTable[i]?i=i[0]:t&&("Ca"===i||"Cd"===i)&&(i="C")),i}function H(e){for(const t in e)return!1;return!0}function W(e,t,i){const r=[],n=void 0===t.assignBonds||t.assignBonds,s=!t.keepH,o=!!t.noSecondaryStructure,l=!t.noComputeSecondaryStructure,h=!t.doAssembly,c=t.altLoc?t.altLoc:"A",d={symmetries:[],cryst:void 0};let u,f=[];const p=[];let m;const g={};for(let t=0;t<e.length;t++){m=e[t].replace(/^\s*/,"");const n=m.substring(0,6);let o,l,v;if(0===n.indexOf("END")){if(f=e.slice(t+1),"END"===n)for(const e in i)i.hasOwnProperty(e)&&delete i[e];break}if("ATOM "===n||"HETATM"===n){let e,t,i,a,o,l,h,d,f,g,v,_;if(v=m.substring(16,17)," "!==v&&v!==c&&"*"!==c)continue;if(g=parseInt(m.substring(6,11)),u=m.substring(12,16).replace(/ /g,""),e=m.substring(17,20).replace(/ /g,""),t=m.substring(21,22),i=parseInt(m.substring(22,26)),a=m.substring(26,27),o=parseFloat(m.substring(30,38)),l=parseFloat(m.substring(38,46)),h=parseFloat(m.substring(46,54)),_=parseFloat(m.substring(60,68)),f=m.substring(76,78).replace(/ /g,""),f=""===f||void 0===V.bondTable[f]?j(m.substring(12,14),"A"==m[0]):f[0].toUpperCase()+f.substring(1).toLowerCase(),"H"===f&&s)continue;d="H"==n[0],p[g]=r.length,r.push({resn:e,x:o,y:l,z:h,elem:f,hetflag:d,altLoc:v,chain:t,resi:i,icode:a,rescode:i+(" "!==a?"^"+a:""),serial:g,atom:u,bonds:[],ss:"c",bondOrder:[],properties:{},b:_,pdbline:m})}else if("SHEET "===n){o=m.substring(21,22),l=parseInt(m.substring(22,26)),v=parseInt(m.substring(33,37)),o in i||(i[o]={}),i[o][l]="s1";for(let e=l+1;e<v;e++)i[o][e]="s";i[o][v]="s2"}else if("CONECT"===n){const e=p[parseInt(m.substring(6,11))],t=r[e],i=[11,16,21,26];for(let n=0;n<4;n++){const s=p[parseInt(m.substring(i[n],i[n]+5))];let a=e+":"+s;const o=r[s];if(void 0!==t&&void 0!==o)if(g[a]){g[a]+=1;for(let e=0;e<t.bonds.length;e++)if(t.bonds[e]==s){const i=g[a];t.bondOrder[e]=i>=4?1:i}}else g[a]=1,0!=t.bonds.length&&t.bonds[t.bonds.length-1]===s||(t.bonds.push(s),t.bondOrder.push(1))}}else if("HELIX "===n){o=m.substring(19,20),l=parseInt(m.substring(21,25)),v=parseInt(m.substring(33,37)),o in i||(i[o]={}),i[o][l]="h1";for(let e=l+1;e<v;e++)i[o][e]="h";i[o][v]="h2"}else if(h||"REMARK"!==n||"BIOMT"!==m.substring(13,18)){if("CRYST1"===n){let e,t,i,r,n,s;e=parseFloat(m.substring(7,15)),t=parseFloat(m.substring(16,24)),i=parseFloat(m.substring(25,33)),r=parseFloat(m.substring(34,40)),n=parseFloat(m.substring(41,47)),s=parseFloat(m.substring(48,54)),d.cryst={a:e,b:t,c:i,alpha:r,beta:n,gamma:s}}else if("ANISOU"===n){const e=r[p[parseInt(m.substring(6,11))]];if(e){const t=m.substring(30).trim().split(/\s+/),i={u11:parseInt(t[0]),u22:parseInt(t[1]),u33:parseInt(t[2]),u12:parseInt(t[3]),u13:parseInt(t[4]),u23:parseInt(t[5])};e.uMat=i}}}else{let i,r=new a.Matrix4;for(i=1;i<=3;i++)if(m=e[t].replace(/^\s*/,""),parseInt(m.substring(18,19))==i)r.elements[i-1]=parseFloat(m.substring(23,33)),r.elements[i-1+4]=parseFloat(m.substring(33,43)),r.elements[i-1+8]=parseFloat(m.substring(43,53)),r.elements[i-1+12]=parseFloat(m.substring(53)),t++;else for(;"BIOMT"===m.substring(13,18);)t++,m=e[t].replace(/^\s*/,"");r.elements[3]=0,r.elements[7]=0,r.elements[11]=0,r.elements[15]=1,d.symmetries.push(r),t--}}if(function(e,t){for(let i=0,r=e.length;i<r;i++){const r=e[i];for(let i=0;i<r.bonds.length;i++){const n=e[r.bonds[i]],s=t[r.serial];n&&s&&n.bonds.indexOf(s)<0&&(n.bonds.push(s),n.bondOrder.push(r.bondOrder[i]))}}}(r,p),n&&P(r,t),h||O(d.symmetries,r,t,d.cryst),l&&!o&&D(r,t.hbondCutoff),!H(i))for(let e=0;e<r.length;e++){const t=r[e];if(void 0!==t&&t.chain in i&&t.resi in i[t.chain]){const e=i[t.chain][t.resi];t.ss=e[0],e.length>1&&("1"==e[1]?t.ssbegin=!0:"2"==e[1]&&(t.ssend=!0))}}return[r,d,f]}function q(e,t){t=t||{};var i=[],r={};i.modelData=[];for(var n=e.split(/\r?\n|\r/);n.length>0;){var s=W(n,t,r),a=s[0],o=s[1];if(n=s[2],0!=a.length){if(t.multimodel&&t.onemol&&i.length>0)for(var l=i[0].length,h=0;h<a.length;h++){var c=a[h];c.index=h;for(var d=0;d<c.bonds.length;d++)c.bonds[d]+=l;i[0].push(c)}else i.modelData.push(o),i.push(a);if(!t.multimodel)break}}return i}function Y(e,t){var i=[[]],r=!t.noSecondaryStructure;i.modelData=[{symmetries:[]}];var n,s=[],a=e.split(/\r?\n|\r/);for(let e=0;e<a.length;e++){var o=(n=a[e].replace(/^\s*/,"")).substring(0,6);if(0==o.indexOf("END")){if(t.multimodel){t.onemol||i.push([]);continue}break}if("ATOM "==o||"HETATM"==o){var l;let e=parseInt(n.substring(6,11)),t=n.substring(12,16).replace(/ /g,""),r=n.substring(17,20).trim(),a=n.substring(21,22),o=parseInt(n.substring(22,26));var h=n.substring(30).trim().split(/\s+/),c=parseFloat(h[0]),d=parseFloat(h[1]),u=parseFloat(h[2]),f=parseFloat(h[3]),p=parseFloat(h[4]),m=t[0];t.length>1&&t[1].toUpperCase()!=t[1]&&(m=t.substring(0,2)),l="H"==n[0],s[e]=i[i.length-1].length,i[i.length-1].push({resn:r,x:c,y:d,z:u,elem:m,hetflag:l,chain:a,resi:o,serial:e,atom:t,bonds:[],ss:"c",bondOrder:[],properties:{charge:f,partialCharge:f,radius:p},pdbline:n})}else if("CONECT"==o){var g=parseInt(n.substring(6,11)),v=i[i.length-1][s[g]];for(let e=0;e<4;e++){var _=parseInt(n.substring([11,16,21,26][e],[11,16,21,26][e]+5)),y=i[i.length-1][s[_]];void 0!==v&&void 0!==y&&(v.bonds.push(s[_]),v.bondOrder.push(1))}}}for(let e=0;e<i.length;e++)P(i[e],t),r&&D(i[e],t.hbondCutoff);return i}var Z=i(471),X=function(e){return String.fromCharCode.apply(null,e).replace(/\0/g,"")},K=function(e){return 0==e||2==e||4==e?"h":3==e?"s":"c"};let Q=new Set(["D-SACCHARIDE","D-SACCHARIDE 1,4 AND 1,4 LINKING","D-SACCHARIDE 1,4 AND 1,6 LINKING","L-SACCHARIDE","L-SACCHARIDE 1,4 AND 1,4 LINKING","L-SACCHARIDE 1,4 AND 1,6 LINKING","NON-POLYMER","OTHER","PEPTIDE-LIKE","SACCHARIDE"]);function $(e,t){var i=!t.keepH,r=t.altLoc?t.altLoc:"A",n=!!t.noSecondaryStructure,s=!t.noComputeSecondaryStructure,o=!t.doAssembly,l=t.assemblyIndex?t.assemblyIndex:0;e="string"==typeof e?(0,d.base64ToArray)(e):new Uint8Array(e);var h,c,u,f,p,m,g=Z.decode(e),v=[[]],_=v.modelData=[],y=0,b=0,x=0,w=g.secStructList,A=g.bFactorList,C=g.altLocList,S=g.occupancyList,z=g.bondAtomList,M=g.bondOrderList,T=g.numModels;if(0==T)return v;t.multimodel||(T=1);var E=[];if(!o&&g.bioAssemblyList&&g.bioAssemblyList.length>0){var L=g.bioAssemblyList[l].transformList;for(h=0,m=L.length;h<m;h++){var F=new a.Matrix4(L[h].matrix);F.transpose(),E.push(F)}}var I=null;if(g.unitCell){var R=g.unitCell;I={a:R[0],b:R[1],c:R[2],alpha:R[3],beta:R[4],gamma:R[5]}}let k=[];g.entityList.forEach(e=>{e.chainIndexList.forEach(t=>{k[t]="polymer"==e.type})});var P=0;for(p=0;p<T;p++){var U=g.chainsPerModel[p],N=v[v.length-1],B=[];for(_.push({symmetries:E,cryst:I}),h=0;h<U;++h){var G=g.groupsPerChain[y],V=X(g.chainIdList.subarray(4*y,4*y+4));g.chainNameList&&(V=X(g.chainNameList.subarray(4*y,4*y+4)));var j=b,H="";for(c=0;c<G;++c){var W=g.groupList[g.groupTypeList[b]],q=W.atomNameList.length,Y=0,$=!1,J=!1;if(w){Y=w[b];var ee=K(Y);0!=b&&ee==H||($=!0),H=ee;var te=b+1;(te>=w.length||K(w[te]!=ee))&&(J=!0)}var ie=g.groupIdList[b],re=W.groupName;let e=W.chemCompType;var ne=x;let t=Q.has(e)||!k[y];for(u=0;u<q;++u){var se=W.elementList[u];if(i&&"H"==se)x+=1;else{var ae="";A&&(ae=A[x]);var oe="";C&&C[x]&&(oe=String.fromCharCode(C[x]));var le="";if(S&&(le=S[x]),""==oe||oe==r||"*"==r){var he=g.atomIdList[x],ce=W.atomNameList[u],de=0;W.atomChargeList&&(de=W.atomChargeList[u]);var ue=g.xCoordList[x],fe=g.yCoordList[x],pe=g.zCoordList[x];B[x]=N.length,N.push({resn:re,x:ue,y:fe,z:pe,elem:se,hetflag:t,chain:V,resi:ie,icode:oe,rescode:ie+(" "!=oe?"^"+oe:""),serial:he,altLoc:oe,index:x,atom:ce,bonds:[],ss:K(Y),ssbegin:$,ssend:J,bondOrder:[],properties:{charge:de,occupancy:le},b:ae}),x+=1}else x+=1}}var me=W.bondAtomList;for(u=0,f=W.bondOrderList.length;u<f;++u){var ge=ne+me[2*u],ve=ne+me[2*u+1],_e=W.bondOrderList[u],ye=B[ge],be=B[ve],xe=N[ye],we=N[be];xe&&we&&(xe.bonds.push(be),xe.bondOrder.push(_e),we.bonds.push(ye),we.bondOrder.push(_e))}b+=1}for(b=j,c=0;c<G;++c)b+=1;y+=1}if(z)for(let e=P,t=z.length;e<t;e+=2){let t=z[e],i=z[e+1],r=M?M[e/2]:1;if(t>=x){P=e;break}let n=B[t],s=B[i],a=N[n],o=N[s];a&&o&&(a.bonds.push(s),a.bondOrder.push(r),o.bonds.push(n),o.bondOrder.push(r))}t.multimodel&&(t.onemol||v.push([]))}if(!o)for(let e=0;e<v.length;e++)O(_[e].symmetries,v[e],t,_[e].cryst);return s&&!n&&D(v,t.hbondCutoff),v}function J(e){var t,i=[],r=0,n=e.split(/\r?\n|\r/);if(!(n.length>0&&n[0].includes("VERSION")))return[];{var s=n.filter(function(e){return e.includes("POINTERS")||e.includes("ATOM_NAME")||e.includes("CHARGE")||e.includes("RADII")||e.includes("BONDS_INC_HYDROGEN")||e.includes("BONDS_WITHOUT_HYDROGEN")||e.includes("RESIDUE_LABEL")||e.includes("RESIDUE_POINTER")}),a=d("POINTERS");if(-1==a)return[];var o=u(a),l=parseInt(n[a+1].slice(0,o[1]));let e=parseInt(n[a+2].slice(o[1],o[0]+o[1]));if(isNaN(l)||l<=0)return[];if(-1==(a=d("ATOM_NAME")))return[];var h=(o=u(a))[0];for(let e=0;e<l/o[0];e++){e==parseInt(l/o[0])&&(h=l%o[0]);for(let e=0;e<h;e++){let t={},s={charge:"",radii:""};t.serial=r,t.x=0,t.y=0,t.z=0,t.atom=n[a+1].slice(o[1]*e,o[1]*(e+1)).trim(),t.elem=n[a+1].slice(o[1]*e,o[1]*e+1).trim(),t.properties=s,t.bonds=[],t.bondOrder=[],t.index=i.length,i.push(t),r++}a++}if(-1!=(a=d("CHARGE"))){r=0,h=(o=u(a))[0];for(let e=0;e<l/o[0];e++){e==parseInt(l/o[0])&&(h=l%o[0]);for(let e=0;e<h;e++)i[r].properties.charge=parseFloat(n[a+1].slice(o[1]*e,o[1]*(e+1))),r++;a++}}var c=[];if(-1!=(a=d("RESIDUE_POINTER"))){h=(o=u(a))[0],a+=1;for(let t=0;t<e/o[0];t++){t==parseInt(e/o[0])&&(h=e%o[0]);for(let e=0;e<h;e++)c.push(parseInt(n[a].slice(o[1]*e,o[1]*(e+1))));a++}if(-1!=(a=d("RESIDUE_LABEL"))){let t=[];h=(o=u(a))[0],a+=1;for(let i=0;i<e/o[0];i++){i==parseInt(e/o[0])&&(h=e%o[0]);for(let e=0;e<h;e++)t.push(n[a].slice(o[1]*e,o[1]*(e+1)).trim());a++}let r=0,s=0,l="";c.push(i.length+1);for(let e=0;e<i.length;e++)e+1>=c[r]&&(l=t[r],r+=1,s+=1),i[e].resi=s,i[e].resn=l}}if(-1!=(a=d("RADII"))){r=0,h=(o=u(a))[0];for(let e=0;e<l/o[0];e++){e==parseInt(l/o[0])&&(h=l%o[0]);for(let e=0;e<h;e++)i[r].properties.radii=parseFloat(n[a+1].slice(o[1]*e,o[1]*(e+1))),r++;a++}}if(-1!=(a=d("BONDS_WITHOUT_HYDROGEN")))for(r=0,h=(o=u(a))[0],a+=1;!n[a].match(/^%FLAG/);){n[a+1].match(/^%FLAG/)&&(h=l%o[0]);for(let e=0;e<h;e++)r%3==0?t=parseInt(n[a].slice(o[1]*e,o[1]*(e+1))/3):r%3==1&&(i[t].bonds.push(parseInt(n[a].slice(o[1]*e,o[1]*(e+1))/3)),i[t].bondOrder.push(1)),r++;a++}if(-1!=(a=d("BONDS_INC_HYDROGEN")))for(r=0,h=(o=u(a))[0],a+=1;!n[a].match(/^%FLAG/);){n[a+1].match(/^%FLAG/)&&(h=l%o[0]);for(let e=0;e<h;e++)r%3==0?t=parseInt(n[a].slice(o[1]*e,o[1]*(e+1))/3):r%3==1&&(i[t].bonds.push(parseInt(n[a].slice(o[1]*e,o[1]*(e+1))/3)),i[t].bonds.push(1)),r++;a++}}function d(e){var t=n.indexOf(s.filter(function(t){return t.includes(e)})[0]);if(Number.isInteger(t)&&t>0){for(;!n[t].includes("FORMAT");)t++;return t}return-1}function u(e){var t=n[e].match(/\((\d*)\S*/),i=n[e].match(/[a-zA-Z](\d*)\)\s*/);return null==i&&(i=n[e].match(/[a-zA-Z](\d*)\.\d*\)\s*/)),[parseInt(t[1]),parseInt(i[1])]}return[i]}function ee(e,t){const i=[],r=e.split(/\r?\n|\r/);for(;r.length>0;){const e=parseInt(r[1]);if(r.length<3||isNaN(e)||e<=0||r.length<e+3)break;const t=[];i.push(t);let n=2;const s=t.length,a=s+e;for(let e=s;e<a;e++){const i=r[n++],s={};s.serial=e,s.atom=i.slice(10,15).trim(),s.elem=j(s.atom,!0),s.x=10*parseFloat(i.slice(20,28)),s.y=10*parseFloat(i.slice(28,36)),s.z=10*parseFloat(i.slice(36,44)),s.resi=parseInt(i.slice(0,5)),s.resn=i.slice(5,10).trim(),s.bonds=[],s.bondOrder=[],s.properties={},i.length>44&&(s.dx=10*parseFloat(i.slice(44,52)),s.dy=10*parseFloat(i.slice(52,60)),s.dz=10*parseFloat(i.slice(60,68))),t[e]=s}if(r.length<=n+3){const e=r[n++].trim().split(/\s+/);if(3===e.length){for(let t=0;t<3;t++)e[t]=(10*parseFloat(e[t])).toString();i.box=e}}r.splice(0,++n)}for(let e=0;e<i.length;e++)P(i[e],t);return i}const te={id:"serial",type:"atom",element:"elem",q:"charge",radius:"radius",x:"x",xu:"x",xs:"x",xsu:"x",y:"y",yu:"y",ys:"y",ysu:"y",z:"z",zu:"z",zs:"z",zsu:"z"};function ie(e,t){const i=[],r=e.split(/\r?\n|\r/);let n=0,s=0,a=0;for(;a<r.length-9;){for(var o=a;o<r.length;o++)if(r[o].match(/ITEM: NUMBER OF ATOMS/)&&(s=parseInt(r[o+1])),r[o].match(/ITEM: ATOMS/)){n=o+1;break}const e=r[n-1].replace("ITEM: ATOMS ","").split(" ");i.push([]);for(let t=n;t<n+s;t++){const s={},a={},o=r[t].split(" ");for(let t=0;t<o.length;t++){const i=te[e[t]];void 0!==i&&("serial"===i?s[i]=parseInt(o[t]):"x"===i||"y"===i||"z"===i?s[i]=parseFloat(o[t]):"charge"===i||"radius"===i?a[i]=parseFloat(o[t]):s[i]=o[t]),s.properties=a,s.bonds=[],s.bondOrder=[]}i[i.length-1][t-n]=s}a=n+s-1}if(t.assignBonds)for(let e=0;e<i.length;e++)(0,z.assignBonds)(i[e],t);return i}var re;!function(e){let t,i;!function(e){e[e.Int8=1]="Int8",e[e.Int16=2]="Int16",e[e.Int32=3]="Int32",e[e.Uint8=4]="Uint8",e[e.Uint16=5]="Uint16",e[e.Uint32=6]="Uint32"}(t=e.IntDataType||(e.IntDataType={})),function(e){e[e.Float32=32]="Float32",e[e.Float64=33]="Float64"}(i=e.FloatDataType||(e.FloatDataType={})),e.getDataType=function(t){let i;return i=t instanceof Int8Array?e.IntDataType.Int8:t instanceof Int16Array?e.IntDataType.Int16:t instanceof Int32Array?e.IntDataType.Int32:t instanceof Uint8Array?e.IntDataType.Uint8:t instanceof Uint16Array?e.IntDataType.Uint16:t instanceof Uint32Array?e.IntDataType.Uint32:t instanceof Float32Array?e.FloatDataType.Float32:t instanceof Float64Array?e.FloatDataType.Float64:e.IntDataType.Int32,i},e.isSignedIntegerDataType=function(e){if(e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array)return!0;for(let t=0,i=e.length;t<i;t++)if(t<0)return!1;return!0}}(re||(re={}));const ne=13330===new Uint16Array(new Uint8Array([18,52]).buffer)[0];function se(e){let t=e.data;for(let i=e.encoding.length-1;i>=0;i--)t=ae(t,e.encoding[i]);return t}function ae(e,t){switch(t.kind){case"ByteArray":switch(t.type){case re.IntDataType.Uint8:return e;case re.IntDataType.Int8:return function(e){return new Int8Array(e.buffer,e.byteOffset)}(e);case re.IntDataType.Int16:return function(e){return he(e,2,Int16Array)}(e);case re.IntDataType.Uint16:return function(e){return he(e,2,Uint16Array)}(e);case re.IntDataType.Int32:return function(e){return he(e,4,Int32Array)}(e);case re.IntDataType.Uint32:return function(e){return he(e,4,Uint32Array)}(e);case re.FloatDataType.Float32:return function(e){return he(e,4,Float32Array)}(e);case re.FloatDataType.Float64:return function(e){return he(e,8,Float64Array)}(e);default:throw new Error("unreachable")}case"FixedPoint":return function(e,t){const i=e.length,r=le(t.srcType,i),n=1/t.factor;for(let t=0;t<i;t++)r[t]=n*e[t];return r}(e,t);case"IntervalQuantization":return function(e,t){const i=e.length,r=le(t.srcType,i),n=(t.max-t.min)/(t.numSteps-1),s=t.min;for(let t=0;t<i;t++)r[t]=s+n*e[t];return r}(e,t);case"RunLength":return function(e,t){const i=oe(t.srcType,t.srcSize);let r=0;for(let t=0,n=e.length;t<n;t+=2){const n=e[t],s=e[t+1];for(let e=0;e<s;++e)i[r++]=n}return i}(e,t);case"Delta":return function(e,t){const i=e.length,r=oe(t.srcType,i);if(!i)return e;r[0]=e[0]+(0|t.origin);for(let t=1;t<i;++t)r[t]=e[t]+r[t-1];return r}(e,t);case"IntegerPacking":return function(e,t){return e.length===t.srcSize?e:t.isUnsigned?function(e,t){const i=1===t.byteCount?255:65535,r=e.length,n=new Int32Array(t.srcSize);let s=0,a=0;for(;s<r;){let t=0,r=e[s];for(;r===i;)t+=r,s++,r=e[s];t+=r,n[a]=t,s++,a++}return n}(e,t):function(e,t){const i=1===t.byteCount?127:32767,r=-i-1,n=e.length,s=new Int32Array(t.srcSize);let a=0,o=0;for(;a<n;){let t=0,n=e[a];for(;n===i||n===r;)t+=n,a++,n=e[a];t+=n,s[o]=t,a++,o++}return s}(e,t)}(e,t);case"StringArray":return function(e,t){const i=se({encoding:t.offsetEncoding,data:t.offsets}),r=se({encoding:t.dataEncoding,data:e}),n=t.stringData,s=new Array(i.length);s[0]="";for(let e=1,t=i.length;e<t;e++)s[e]=n.substring(i[e-1],i[e]);let a=0;const o=new Array(r.length);for(let e=0,t=r.length;e<t;e++)o[a++]=s[r[e]+1];return o}(e,t)}}function oe(e,t){switch(e){case re.IntDataType.Int8:return new Int8Array(t);case re.IntDataType.Int16:return new Int16Array(t);case re.IntDataType.Int32:return new Int32Array(t);case re.IntDataType.Uint8:return new Uint8Array(t);case re.IntDataType.Uint16:return new Uint16Array(t);case re.IntDataType.Uint32:return new Uint32Array(t);default:return new Int32Array(t)}}function le(e,t){switch(e){case re.FloatDataType.Float32:return new Float32Array(t);case re.FloatDataType.Float64:default:return new Float64Array(t)}}function he(e,t,i){return 0==e.byteOffset&&e.byteLength==e.buffer.byteLength||(e=new Uint8Array(e)),new i(ne?e.buffer:function(e,t){const i=new ArrayBuffer(e.length),r=new Uint8Array(i);for(let i=0,n=e.length;i<n;i+=t)for(let n=0;n<t;n++)r[i+t-n-1]=e[i+n];return i}(e,t))}function ce(e){const t=Object.create(null),i=Object.create(null);for(const i of e.columns)t[i.name]=i;return{rowCount:e.rowCount,name:e.name.substring(1),fieldNames:e.columns.map(e=>e.name),getField(e){const r=t[e];if(r)return i[e]||(i[e]=se(r.data)),i[e]}}}var de=i(471);class Connectivity{constructor(e){if(this.C={},e){let t=e.getField("comp_id"),i=e.getField("atom_id_1"),r=e.getField("atom_id_2"),n=e.getField("value_order");for(let e=0;e<t.length;e++){let s=t[e],a=i[e],o=r[e],l=n[e],h=1;"doub"==l?h=2:"trip"==l&&(h=3),null==this.C[s]&&(this.C[s]={}),null==this.C[s][a]&&(this.C[s][a]={}),null==this.C[s][o]&&(this.C[s][o]={}),this.C[s][a][o]=h,this.C[s][o][a]=h}}}order(e,t,i){return void 0!==this.C[e]&&void 0!==this.C[e][t]&&void 0!==this.C[e][t][i]?this.C[e][t][i]:0}}class StructConn{constructor(e){if(this.C=[],e){let t=e.getField("conn_type_id"),i=e.getField("ptnr1_label_asym_id"),r=e.getField("ptnr1_label_seq_id"),n=e.getField("ptnr1_label_comp_id"),s=e.getField("ptnr1_label_atom_id"),a=e.getField("ptnr2_label_asym_id"),o=e.getField("ptnr2_label_seq_id"),l=e.getField("ptnr2_label_comp_id"),h=e.getField("ptnr2_label_atom_id"),c=e.getField("pdbx_value_order");for(let e=0;e<t.length;e++)if("disulf"==t[e]||"covale"==t[e]){let t=c?""==c[e]?1:parseInt(c[e]):1;this.C.push([[i[e],r[e],n[e],s[e]],[a[e],o[e],l[e],h[e]],t])}}}}class Residues{constructor(){this.R={}}add(e){null==this.R[e.lchain]&&(this.R[e.lchain]={}),null==this.R[e.lchain][e.lresi]&&(this.R[e.lchain][e.lresi]={}),null==this.R[e.lchain][e.lresi][e.lresn]&&(this.R[e.lchain][e.lresi][e.lresn]=[]),this.R[e.lchain][e.lresi][e.lresn].push(e),this.R[e.lchain][e.lresi][e.lresn][e.atom]=e}geta([e,t,i,r]){if(void 0!==this.R[e]&&void 0!==this.R[e][t]&&void 0!==this.R[e][t][i])return this.R[e][t][i][r]}setBonds(e,t){for(let t in this.R)for(let i in this.R[t])for(let r in this.R[t][i]){let n=this.R[t][i][r];for(let t=0;t<n.length;t++)for(let i=t+1;i<n.length;i++){let s=n[t],a=n[i],o=e.order(r,s.atom,a.atom);s.altLoc!=a.altLoc&&""!=s.altLoc&&""!=a.altLoc&&(o=0),o>0&&(s.bonds.push(a.index),a.bonds.push(s.index),s.bondOrder.push(o),a.bondOrder.push(o))}}for(let e of t.C){let t=e[0],i=e[1],r=e[2],n=this.geta(t),s=this.geta(i);null!=n&&null!=s&&(n.bonds.push(s.index),s.bonds.push(n.index),n.bondOrder.push(r),s.bondOrder.push(r))}}}function ue(e,t){var i=!t.keepH,r=t.altLoc?t.altLoc:"A",n=!t.noComputeSecondaryStructure;const s=!t.doAssembly,o=void 0===t.assignBonds||t.assignBonds;if("string"==typeof e)try{e=(0,d.base64ToArray)(e)}catch(t){e=(new TextEncoder).encode(e)}else e=new Uint8Array(e);var l=de.decodeMsgpack(e);31==l&&(e=(0,d.inflateString)(e,!1),l=de.decodeMsgpack(e));var h=[],c=h.modelData=[],u=l.dataBlocks.length;if(0==u)return h;t.multimodel||(u=1);for(let e=0;e<u;e++){let n=h.length;const o=[];c.push({symmetries:[]}),h.push([]);const d=l.dataBlocks[e],f=Object.create(null);for(const e of d.categories)f[e.name.substr(1)]=ce(e);let p={},m=f.struct_conf;if(m){let e=m.getField("conf_type_id"),t=m.getField("beg_label_asym_id"),i=m.getField("beg_label_seq_id"),r=m.getField("end_label_seq_id");for(let n=0;n<e.length;n++)if(e[n].startsWith("H")){let e=t[n],s=i[n],a=r[n];e in p||(p[e]={}),p[e][s]="h1";for(let t=s+1;t<a;t++)p[e][t]="h";p[e][a]="h2"}}let g=f.struct_sheet_range;if(g){let e=g.getField("id"),t=g.getField("beg_label_asym_id"),i=g.getField("beg_label_seq_id"),r=g.getField("end_label_seq_id");for(let n=0;n<e.length;n++){let e=t[n],s=i[n],a=r[n];e in p||(p[e]={}),p[e][s]="s1";for(let t=s+1;t<a;t++)p[e][t]="s";p[e][a]="s2"}}let v=f.pdbx_struct_oper_list,_=v.getField("id");if(_&&!s){let e=v.getField("matrix[1][1]"),t=v.getField("matrix[1][2]"),i=v.getField("matrix[1][3]"),r=v.getField("matrix[2][1]"),n=v.getField("matrix[2][2]"),s=v.getField("matrix[2][3]"),o=v.getField("matrix[3][1]"),l=v.getField("matrix[3][2]"),h=v.getField("matrix[3][3]"),d=v.getField("vector[1]"),u=v.getField("vector[2]"),f=v.getField("vector[3]");for(let p=0;p<_.length;p++){const m=new a.Matrix4(e[p],t[p],i[p],d[p],r[p],n[p],s[p],u[p],o[p],l[p],h[p],f[p]);c[c.length-1].symmetries.push(m)}}let y=new Connectivity(f.chem_comp_bond),b=new Residues,x=new StructConn(f.struct_conn),w=f.atom_site,A=w.rowCount,C=w.getField("group_PDB"),S=w.getField("Cartn_x"),z=w.getField("Cartn_y"),M=w.getField("Cartn_z"),T=w.getField("auth_asym_id"),E=w.getField("label_asym_id"),L=w.getField("auth_seq_id"),F=w.getField("label_seq_id"),I=w.getField("auth_comp_id"),D=w.getField("label_comp_id"),O=w.getField("auth_atom_id"),R=w.getField("label_atom_id"),k=w.getField("type_symbol"),P=w.getField("B_iso_or_equiv"),U=w.getField("id"),N=w.getField("label_alt_id"),B=w.getField("pdbx_PDB_model_num"),G=B?B[0]:0;for(let e=0;e<A;e++){if(void 0!==C&&"TER"===C[e])continue;if(B&&B[e]!=G){if(G=B[e],!t.multimodel)break;t.onemol||(h.push([]),c.push(c[c.length-1]),G=B[e],b.setBonds(y,x),b=new Residues)}const n={};n.x=S[e],n.y=z[e],n.z=M[e],n.chain=T?T[e]:E?E[e]:void 0,n.lchain=E?E[e]:void 0,n.resi=L?L[e]:F?F[e]:void 0,n.lresi=F?F[e]:void 0,n.resn=I?I[e].trim():D?D[e].trim():void 0,n.lresn=D?D[e].trim():void 0,n.atom=O?O[e].replace(/"/gm,""):R?R[e].replace(/"/gm,""):void 0,n.icode=N?N[e]:void 0,n.altLoc=n.icode,n.hetflag=!C||"HETA"===C[e]||"HETATM"===C[e];let s="X";k&&(s=k[e].replace(/\(?\+?\d+.*/,"")),n.elem=s[0].toUpperCase()+s.substring(1,2).toLowerCase(),P&&(n.b=P[e]),i&&"H"==n.elem||""!=n.altLoc&&n.altLoc!=r&&"*"!=r||(n.bonds=[],n.ss="c",n.serial=U[e],n.model=G,n.bondOrder=[],n.properties={},n.index=h[h.length-1].length,o[n.serial]=[h.length,n.index],h[h.length-1].push(n),b.add(n))}if(b.setBonds(y,x),!H(p))for(let e=n;e<h.length;e++){let t=h[e];for(let e=0;e<t.length;e++){const i=t[e];if(void 0!==i&&i.lchain in p&&i.lresi in p[i.lchain]){const e=p[i.lchain][i.lresi];i.ss=e[0],e.length>1&&("1"==e[1]?i.ssbegin=!0:"2"==e[1]&&(i.ssend=!0))}}}t.multimodel&&e<u-1&&(t.onemol||(h.push([]),c.push({symmetries:[]})))}for(let e=0;e<h.length;e++)!o||t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms||P(h[e],t),n&&D(h[e],t.hbondCutoff),O(c[e].symmetries,h[e],t,c[e].cryst),t.duplicateAssemblyAtoms&&!t.dontConnectDuplicatedAtoms&&o&&P(h[e],t);return h}const fe={vasp:C.VASP,VASP:C.VASP,cube:S.CUBE,CUBE:S.CUBE,xyz:M,XYZ:M,sdf:F,SDF:F,json:I,cdjson:I,CDJSON:I,mcif:N,cif:N,CIF:N,mol2:G,MOL2:G,pdb:q,PDB:q,pdbqt:q,PDBQT:q,pqr:Y,PQR:Y,mmtf:$,MMTF:$,prmtop:J,PRMTOP:J,gro:ee,GRO:ee,lammpstrj:ie,LAMMPSTRJ:ie,bcif:ue,BCIF:ue};function pe(e,t="utf8"){return new TextDecoder(t).decode(e)}const me=new TextEncoder,ge=(()=>{const e=new Uint8Array(4);return!((new Uint32Array(e.buffer)[0]=1)&e[0])})(),ve={int8:globalThis.Int8Array,uint8:globalThis.Uint8Array,int16:globalThis.Int16Array,uint16:globalThis.Uint16Array,int32:globalThis.Int32Array,uint32:globalThis.Uint32Array,uint64:globalThis.BigUint64Array,int64:globalThis.BigInt64Array,float32:globalThis.Float32Array,float64:globalThis.Float64Array};class IOBuffer{buffer;byteLength;byteOffset;length;offset;lastWrittenByte;littleEndian;_data;_mark;_marks;constructor(e=8192,t={}){let i=!1;"number"==typeof e?e=new ArrayBuffer(e):(i=!0,this.lastWrittenByte=e.byteLength);const r=t.offset?t.offset>>>0:0,n=e.byteLength-r;let s=r;(ArrayBuffer.isView(e)||e instanceof IOBuffer)&&(e.byteLength!==e.buffer.byteLength&&(s=e.byteOffset+r),e=e.buffer),this.lastWrittenByte=i?n:0,this.buffer=e,this.length=n,this.byteLength=n,this.byteOffset=s,this.offset=0,this.littleEndian=!0,this._data=new DataView(this.buffer,s,n),this._mark=0,this._marks=[]}available(e=1){return this.offset+e<=this.length}isLittleEndian(){return this.littleEndian}setLittleEndian(){return this.littleEndian=!0,this}isBigEndian(){return!this.littleEndian}setBigEndian(){return this.littleEndian=!1,this}skip(e=1){return this.offset+=e,this}back(e=1){return this.offset-=e,this}seek(e){return this.offset=e,this}mark(){return this._mark=this.offset,this}reset(){return this.offset=this._mark,this}pushMark(){return this._marks.push(this.offset),this}popMark(){const e=this._marks.pop();if(void 0===e)throw new Error("Mark stack empty");return this.seek(e),this}rewind(){return this.offset=0,this}ensureAvailable(e=1){if(!this.available(e)){const t=2*(this.offset+e),i=new Uint8Array(t);i.set(new Uint8Array(this.buffer)),this.buffer=i.buffer,this.length=t,this.byteLength=t,this._data=new DataView(this.buffer)}return this}readBoolean(){return 0!==this.readUint8()}readInt8(){return this._data.getInt8(this.offset++)}readUint8(){return this._data.getUint8(this.offset++)}readByte(){return this.readUint8()}readBytes(e=1){return this.readArray(e,"uint8")}readArray(e,t){const i=ve[t].BYTES_PER_ELEMENT*e,r=this.byteOffset+this.offset,n=this.buffer.slice(r,r+i);if(this.littleEndian===ge&&"uint8"!==t&&"int8"!==t){const e=new Uint8Array(this.buffer.slice(r,r+i));e.reverse();const n=new ve[t](e.buffer);return this.offset+=i,n.reverse(),n}const s=new ve[t](n);return this.offset+=i,s}readInt16(){const e=this._data.getInt16(this.offset,this.littleEndian);return this.offset+=2,e}readUint16(){const e=this._data.getUint16(this.offset,this.littleEndian);return this.offset+=2,e}readInt32(){const e=this._data.getInt32(this.offset,this.littleEndian);return this.offset+=4,e}readUint32(){const e=this._data.getUint32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat32(){const e=this._data.getFloat32(this.offset,this.littleEndian);return this.offset+=4,e}readFloat64(){const e=this._data.getFloat64(this.offset,this.littleEndian);return this.offset+=8,e}readBigInt64(){const e=this._data.getBigInt64(this.offset,this.littleEndian);return this.offset+=8,e}readBigUint64(){const e=this._data.getBigUint64(this.offset,this.littleEndian);return this.offset+=8,e}readChar(){return String.fromCharCode(this.readInt8())}readChars(e=1){let t="";for(let i=0;i<e;i++)t+=this.readChar();return t}readUtf8(e=1){return pe(this.readBytes(e))}decodeText(e=1,t="utf8"){return pe(this.readBytes(e),t)}writeBoolean(e){return this.writeUint8(e?255:0),this}writeInt8(e){return this.ensureAvailable(1),this._data.setInt8(this.offset++,e),this._updateLastWrittenByte(),this}writeUint8(e){return this.ensureAvailable(1),this._data.setUint8(this.offset++,e),this._updateLastWrittenByte(),this}writeByte(e){return this.writeUint8(e)}writeBytes(e){this.ensureAvailable(e.length);for(let t=0;t<e.length;t++)this._data.setUint8(this.offset++,e[t]);return this._updateLastWrittenByte(),this}writeInt16(e){return this.ensureAvailable(2),this._data.setInt16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeUint16(e){return this.ensureAvailable(2),this._data.setUint16(this.offset,e,this.littleEndian),this.offset+=2,this._updateLastWrittenByte(),this}writeInt32(e){return this.ensureAvailable(4),this._data.setInt32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeUint32(e){return this.ensureAvailable(4),this._data.setUint32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat32(e){return this.ensureAvailable(4),this._data.setFloat32(this.offset,e,this.littleEndian),this.offset+=4,this._updateLastWrittenByte(),this}writeFloat64(e){return this.ensureAvailable(8),this._data.setFloat64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigInt64(e){return this.ensureAvailable(8),this._data.setBigInt64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeBigUint64(e){return this.ensureAvailable(8),this._data.setBigUint64(this.offset,e,this.littleEndian),this.offset+=8,this._updateLastWrittenByte(),this}writeChar(e){return this.writeUint8(e.charCodeAt(0))}writeChars(e){for(let t=0;t<e.length;t++)this.writeUint8(e.charCodeAt(t));return this}writeUtf8(e){return this.writeBytes(function(e){return me.encode(e)}(e))}toArray(){return new Uint8Array(this.buffer,this.byteOffset,this.lastWrittenByte)}getWrittenByteLength(){return this.lastWrittenByte-this.byteOffset}_updateLastWrittenByte(){this.offset>this.lastWrittenByte&&(this.lastWrittenByte=this.offset)}}const _e=1,ye=2,be=3,xe=4,we=5,Ae=6;function Ce(e){switch(Number(e)){case _e:return"byte";case ye:return"char";case be:return"short";case xe:return"int";case we:return"float";case Ae:return"double";default:return"undefined"}}function Se(e){switch(Number(e)){case _e:case ye:return 1;case be:return 2;case xe:case we:return 4;case Ae:return 8;default:return-1}}function ze(e){switch(String(e)){case"byte":return _e;case"char":return ye;case"short":return be;case"int":return xe;case"float":return we;case"double":return Ae;default:return-1}}function Me(e,t){if(1!==e){const i=new Array(e);for(let r=0;r<e;r++)i[r]=t();return i}return t()}function Te(e,t,i){switch(t){case _e:return Array.from(e.readBytes(i));case ye:return 0===(r=e.readChars(i)).charCodeAt(r.length-1)?r.substring(0,r.length-1):r;case be:return Me(i,e.readInt16.bind(e));case xe:return Me(i,e.readInt32.bind(e));case we:return Me(i,e.readFloat32.bind(e));case Ae:return Me(i,e.readFloat64.bind(e));default:throw new Error(`non valid type ${t}`)}var r}function Ee(e,t){if(e)throw new TypeError(`Not a valid NetCDF v3.x file: ${t}`)}function Le(e){e.offset%4!=0&&e.skip(4-e.offset%4)}function Fe(e){const t=e.readUint32(),i=e.readChars(t);return Le(e),i}function Ie(e,t){const i={version:t},r={length:e.readUint32()},n=function(e){const t={};let i,r;const n=e.readUint32();let s;if(0===n)return Ee(0!==e.readUint32(),"wrong empty tag for list of dimensions"),[];{Ee(10!==n,"wrong tag for list of dimensions");const t=e.readUint32();s=new Array(t);for(let n=0;n<t;n++){const t=Fe(e),a=e.readUint32();0===a&&(i=n,r=t),s[n]={name:t,size:a}}}return void 0!==i&&(t.recordId=i),void 0!==r&&(t.recordName=r),t.dimensions=s,t}(e);Array.isArray(n)||(r.id=n.recordId,r.name=n.recordName,i.dimensions=n.dimensions),i.globalAttributes=De(e);const s=function(e,t,i){const r=e.readUint32();let n,s=0;if(0===r)return Ee(0!==e.readUint32(),"wrong empty tag for list of variables"),[];{Ee(11!==r,"wrong tag for list of variables");const a=e.readUint32();n=new Array(a);for(let r=0;r<a;r++){const a=Fe(e),o=e.readUint32(),l=new Array(o);for(let t=0;t<o;t++)l[t]=e.readUint32();const h=De(e),c=e.readUint32();Ee(c<1&&c>6,`non valid type ${c}`);const d=e.readUint32();let u=e.readUint32();2===i&&(Ee(u>0,"offsets larger than 4GB not supported"),u=e.readUint32());let f=!1;void 0!==t&&l[0]===t&&(s+=d,f=!0),n[r]={name:a,dimensions:l,attributes:h,type:Ce(c),size:d,offset:u,record:f}}}return{variables:n,recordStep:s}}(e,r?.id,t);return Array.isArray(s)||(i.variables=s.variables,r.recordStep=s.recordStep),i.recordDimension=r,i}function De(e){const t=e.readUint32();let i;if(0===t)return Ee(0!==e.readUint32(),"wrong empty tag for list of attributes"),[];{Ee(12!==t,"wrong tag for list of attributes");const r=e.readUint32();i=new Array(r);for(let t=0;t<r;t++){const r=Fe(e),n=e.readUint32();Ee(n<1||n>6,`non valid type ${n}`);const s=e.readUint32(),a=Te(e,n,s);Le(e),i[t]={name:r,type:Ce(n),value:a}}}return i}function Oe(){const e=[];e.push("DIMENSIONS");for(const t of this.dimensions)e.push(` ${t.name.padEnd(30)} = size: ${t.size}`);e.push(""),e.push("GLOBAL ATTRIBUTES");for(const t of this.globalAttributes)e.push(` ${t.name.padEnd(30)} = ${t.value}`);const t=JSON.parse(JSON.stringify(this.variables));e.push(""),e.push("VARIABLES:");for(const i of t){i.value=this.getDataVariable(i);let t=JSON.stringify(i.value);t.length>50&&(t=t.substring(0,50)),isNaN(i.value.length)||(t+=` (length: ${i.value.length})`),e.push(` ${i.name.padEnd(30)} = ${t}`)}return e.join("\n")}class NetCDFReader{constructor(e){this.toString=Oe;const t=new IOBuffer(e);t.setBigEndian(),Ee("CDF"!==t.readChars(3),"should start with CDF");const i=t.readByte();Ee(i>2,"unknown version"),this.header=Ie(t,i),this.buffer=t}get version(){return 1===this.header.version?"classic format":"64-bit offset format"}get recordDimension(){return this.header.recordDimension}get dimensions(){return this.header.dimensions}get globalAttributes(){return this.header.globalAttributes}getAttribute(e){const t=this.globalAttributes.find(t=>t.name===e);return t?t.value:null}getDataVariableAsString(e){const t=this.getDataVariable(e);return t?t.join(""):null}get variables(){return this.header.variables}getDataVariable(e){let t;if(t="string"==typeof e?this.header.variables.find(t=>t.name===e):e,void 0===t)throw new Error("Not a valid NetCDF v3.x file: variable not found");return this.buffer.seek(t.offset),t.record?function(e,t,i){const r=ze(t.type),n=t.size?t.size/Se(r):1,s=i.length,a=new Array(s),o=i.recordStep;if(!o)throw new Error("recordDimension.recordStep is undefined");for(let t=0;t<s;t++){const i=e.offset;a[t]=Te(e,r,n),e.seek(i+o)}return a}(this.buffer,t,this.header.recordDimension):function(e,t){const i=ze(t.type),r=t.size/Se(i),n=new Array(r);for(let t=0;t<r;t++)n[t]=Te(e,i,1);return n}(this.buffer,t)}dataVariableExists(e){return void 0!==this.header.variables.find(t=>t.name===e)}attributeExists(e){return void 0!==this.globalAttributes.find(t=>t.name===e)}}class GLModel{static sameObj(e,t){return e&&t?JSON.stringify(e)==JSON.stringify(t):e==t}constructor(e,t,i){this.atoms=[],this.frames=[],this.box=null,this.atomdfs=null,this.id=0,this.hidden=!1,this.molObj=null,this.renderedMolObj=null,this.lastColors=null,this.modelData={},this.modelDatas=null,this.idMatrix=new l.Matrix4,this.dontDuplicateAtoms=!0,this.defaultColor=h.elementColors.defaultColor,this.defaultStickRadius=.25,this._drawnAromaticRings=new Set,this._ringCache=new Map,this.options=t||{},this.viewer=i,this.ElementColors=this.options.defaultcolors?this.options.defaultcolors:h.elementColors.defaultColors,this.defaultSphereRadius=this.options.defaultSphereRadius?this.options.defaultSphereRadius:1.5,this.defaultCartoonQuality=this.options.cartoonQuality?this.options.cartoonQuality:10,this.id=e}getRadiusFromStyle(e,t){var i=this.defaultSphereRadius;if(void 0!==t.radius)i=t.radius;else if(GLModel.vdwRadii[e.elem])i=GLModel.vdwRadii[e.elem];else if(e.elem.length>1){let t=e.elem;t=t[0].toUpperCase()+t[1].toLowerCase(),GLModel.vdwRadii[t]&&(i=GLModel.vdwRadii[t])}return void 0!==t.scale&&(i*=t.scale),i}drawAtomCross(e,t){if(e.style.cross){var i=e.style.cross;if(!i.hidden){var r=i.linewidth||GLModel.defaultlineWidth;t[r]||(t[r]=new a.Geometry);var n=t[r].updateGeoGroup(6),s=this.getRadiusFromStyle(e,i),o=[[s,0,0],[-s,0,0],[0,s,0],[0,-s,0],[0,0,s],[0,0,-s]],h=e.clickable||e.hoverable;h&&void 0===e.intersectionShape&&(e.intersectionShape={sphere:[],cylinder:[],line:[]});for(var c=(0,d.getColorFromStyle)(e,i),u=n.vertexArray,f=n.colorArray,p=0;p<6;p++){var m=3*n.vertices;if(n.vertices++,u[m]=e.x+o[p][0],u[m+1]=e.y+o[p][1],u[m+2]=e.z+o[p][2],f[m]=c.r,f[m+1]=c.g,f[m+2]=c.b,h){var g=new l.Vector3(o[p][0],o[p][1],o[p][2]);g.multiplyScalar(.1),g.set(g.x+e.x,g.y+e.y,g.z+e.z),e.intersectionShape.line.push(g)}}}}}getGoodCross(e,t,i,r){for(var n=null,s=-1,a=0,o=e.bonds.length;a<o;a++)if(e.bonds[a]!=t.index){let t=e.bonds[a],o=this.atoms[t],c=new l.Vector3(o.x,o.y,o.z).clone();c.sub(i);let d=c.clone();d.cross(r);var h=d.lengthSq();if(h>s&&(n=d,(s=h)>.1))return n}return n}getSideBondV(e,t,i){var r,n,s,a,o=new l.Vector3(e.x,e.y,e.z),h=new l.Vector3(t.x,t.y,t.z).clone(),c=null;if(h.sub(o),1===e.bonds.length)if(1===t.bonds.length)c=h.clone(),Math.abs(c.x)>1e-4?c.y+=1:c.x+=1;else{for(s=null,r=0;r<t.bonds.length;r++)if((n=t.bonds[r])!==e.index){s=this.atoms[n];break}s?((a=new l.Vector3(s.x,s.y,s.z).clone()).sub(o),(c=a.clone()).cross(h)):(c=h.clone()).x+=1}else if((c=this.getGoodCross(e,t,o,h)).lengthSq()<.01){var d=this.getGoodCross(t,e,o,h);null!=d&&(c=d)}return c.lengthSq()<.01&&(c=h.clone(),Math.abs(c.x)>1e-4?c.y+=1:c.x+=1),c.cross(h),c.normalize(),Math.abs(c.x)>.001?c.x<0&&c.negate():Math.abs(c.y)>.001?c.y<0&&c.negate():c.z<0&&c.negate(),c}addLine(e,t,i,r,n,s){e[i]=r.x,e[i+1]=r.y,e[i+2]=r.z,t[i]=s.r,t[i+1]=s.g,t[i+2]=s.b,e[i+3]=n.x,e[i+4]=n.y,e[i+5]=n.z,t[i+3]=s.r,t[i+4]=s.g,t[i+5]=s.b}drawBondLines(e,t,i){if(e.style.line){var r=e.style.line;if(!r.hidden){var n,s,o,c,u=r.linewidth||GLModel.defaultlineWidth;i[u]||(i[u]=new a.Geometry);for(var f=i[u].updateGeoGroup(6*e.bonds.length),p=f.vertexArray,m=f.colorArray,g=0;g<e.bonds.length;g++){var v=t[e.bonds[g]];if(v.style.line&&!(e.index>=v.index)){var _=new l.Vector3(e.x,e.y,e.z),y=new l.Vector3(v.x,v.y,v.z),b=_.clone().add(y).multiplyScalar(.5),x=!1,w=e.clickable||e.hoverable,A=v.clickable||v.hoverable;(w||A)&&(w&&(void 0===e.intersectionShape&&(e.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),e.intersectionShape.line.push(_),e.intersectionShape.line.push(b)),A&&(void 0===v.intersectionShape&&(v.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),v.intersectionShape.line.push(b),v.intersectionShape.line.push(y)));var C=(0,d.getColorFromStyle)(e,e.style.line),S=(0,d.getColorFromStyle)(v,v.style.line);if(e.bondStyles&&e.bondStyles[g]){var z=e.bondStyles[g];if(!z.iswire)continue;z.singleBond&&(x=!0),void 0!==z.color1&&(C=h.CC.color(z.color1)),void 0!==z.color2&&(S=h.CC.color(z.color2))}var M,T,E=3*f.vertices;if(e.bondOrder[g]>1&&e.bondOrder[g]<4&&!x){var L=this.getSideBondV(e,v,g),F=y.clone();F.sub(_),2==e.bondOrder[g]?(L.multiplyScalar(.1),(n=_.clone()).add(L),(s=_.clone()).sub(L),(o=n.clone()).add(F),(c=s.clone()).add(F),C==S?(f.vertices+=4,this.addLine(p,m,E,n,o,C),this.addLine(p,m,E+6,s,c,C)):(f.vertices+=8,F.multiplyScalar(.5),(M=n.clone()).add(F),(T=s.clone()).add(F),this.addLine(p,m,E,n,M,C),this.addLine(p,m,E+6,M,o,S),this.addLine(p,m,E+12,s,T,C),this.addLine(p,m,E+18,T,c,S))):3==e.bondOrder[g]&&(L.multiplyScalar(.1),(n=_.clone()).add(L),(s=_.clone()).sub(L),(o=n.clone()).add(F),(c=s.clone()).add(F),C==S?(f.vertices+=6,this.addLine(p,m,E,_,y,C),this.addLine(p,m,E+6,n,o,C),this.addLine(p,m,E+12,s,c,C)):(f.vertices+=12,F.multiplyScalar(.5),(M=n.clone()).add(F),(T=s.clone()).add(F),this.addLine(p,m,E,_,b,C),this.addLine(p,m,E+6,b,y,S),this.addLine(p,m,E+12,n,M,C),this.addLine(p,m,E+18,M,o,S),this.addLine(p,m,E+24,s,T,C),this.addLine(p,m,E+30,T,c,S)))}else C==S?(f.vertices+=2,this.addLine(p,m,E,_,y,C)):(f.vertices+=4,this.addLine(p,m,E,_,b,C),this.addLine(p,m,E+6,b,y,S))}}}}}drawAtomSphere(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=(0,d.getColorFromStyle)(e,i),s=this.getRadiusFromStyle(e,i);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var a=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(a,s))}n.drawSphere(t,e,s,r)}}}drawAtomClickSphere(e){if(e.style.clicksphere){var t=e.style.clicksphere;if(!t.hidden){var i=this.getRadiusFromStyle(e,t);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var r=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(r,i))}}}}drawAtomInstanced(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=this.getRadiusFromStyle(e,i),n=(0,d.getColorFromStyle)(e,i),s=t.updateGeoGroup(1),a=s.vertices,h=3*a,c=s.vertexArray,u=s.colorArray,f=s.radiusArray;if(c[h]=e.x,c[h+1]=e.y,c[h+2]=e.z,u[h]=n.r,u[h+1]=n.g,u[h+2]=n.b,f[a]=r,(!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var p=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(p,r))}s.vertices+=1}}}drawSphereImposter(e,t,i,r){var n,s=e.updateGeoGroup(4),a=s.vertices,o=3*a,l=s.vertexArray,h=s.colorArray;for(n=0;n<4;n++)l[o+3*n]=t.x,l[o+3*n+1]=t.y,l[o+3*n+2]=t.z;var c=s.normalArray;for(n=0;n<4;n++)h[o+3*n]=r.r,h[o+3*n+1]=r.g,h[o+3*n+2]=r.b;c[o+0]=-i,c[o+1]=i,c[o+2]=0,c[o+3]=-i,c[o+4]=-i,c[o+5]=0,c[o+6]=i,c[o+7]=-i,c[o+8]=0,c[o+9]=i,c[o+10]=i,c[o+11]=0,s.vertices+=4;var d=s.faceArray,u=s.faceidx;d[u+0]=a,d[u+1]=a+1,d[u+2]=a+2,d[u+3]=a+2,d[u+4]=a+3,d[u+5]=a,s.faceidx+=6}drawAtomImposter(e,t){if(e.style.sphere){var i=e.style.sphere;if(!i.hidden){var r=this.getRadiusFromStyle(e,i),n=(0,d.getColorFromStyle)(e,i);if((!0===e.clickable||e.hoverable)&&void 0!==e.intersectionShape){var s=new l.Vector3(e.x,e.y,e.z);e.intersectionShape.sphere.push(new o.Sphere(s,r))}this.drawSphereImposter(t,e,r,n)}}}drawRingImposter(e,t,i,r,n,s){for(var a=e.updateGeoGroup(4),o=a.vertices,l=3*o,h=a.vertexArray,c=a.colorArray,d=a.normalArray,u=a.radiusArray,f=r+n,p=0;p<4;p++)h[l+3*p]=t.x,h[l+3*p+1]=t.y,h[l+3*p+2]=t.z;var m=i.x*n,g=i.y*n,v=i.z*n;for(p=0;p<4;p++)d[l+3*p]=m,d[l+3*p+1]=g,d[l+3*p+2]=v;var _=Math.abs(s.b);_<1e-4&&(_=1e-4),c[l+0]=s.r,c[l+1]=s.g,c[l+2]=_,c[l+3]=s.r,c[l+4]=s.g,c[l+5]=-_,c[l+6]=s.r,c[l+7]=s.g,c[l+8]=-_,c[l+9]=s.r,c[l+10]=s.g,c[l+11]=_,u[o+0]=-f,u[o+1]=-f,u[o+2]=f,u[o+3]=f,a.vertices+=4;var y=a.faceArray,b=a.faceidx;y[b+0]=o,y[b+1]=o+1,y[b+2]=o+2,y[b+3]=o+2,y[b+4]=o+3,y[b+5]=o,a.faceidx+=6}calculateDashes(e,t,i,r,n,s){var a,o,h;const c=t.x-e.x,d=t.y-e.y,u=t.z-e.z,f=Math.sqrt(c*c+d*d+u*u);if(f<.001)return[{from:new l.Vector3(e.x,e.y,e.z),to:new l.Vector3(t.x,t.y,t.z),color:null!==(a=null==s?void 0:s[0])&&void 0!==a?a:null}];i=Math.max(i,0),r=Math.max(r,.001);const p=Math.max(n,0)+2*i,m=p/2,g=f-2*m;if(g<r)return[{from:new l.Vector3(e.x,e.y,e.z),to:new l.Vector3(t.x,t.y,t.z),color:null!==(o=null==s?void 0:s[0])&&void 0!==o?o:null}];const v=Math.floor((g-r)/(r+p))+1,_=v>1?v-1:0,y=g-v*r,b=_>0?y/(_+1):y,x=c/f,w=d/f,A=u/f,C=[],S=m+b/2;for(let t=0;t<v;t++){const i=S+t*(r+b),n=i+r,a=new l.Vector3(e.x+x*i,e.y+w*i,e.z+A*i),o=new l.Vector3(e.x+x*n,e.y+w*n,e.z+A*n),c=s&&s.length>1&&t>=v/2?s[1]:null!==(h=null==s?void 0:s[0])&&void 0!==h?h:null;C.push({from:a,to:o,color:c})}return C}calculateTwoColorSegments(e,t,i){const r=[];if(i.length<=1)r.push({from:new l.Vector3(e.x,e.y,e.z),to:new l.Vector3(t.x,t.y,t.z),color:i[0]});else{const n=new l.Vector3((e.x+t.x)/2,(e.y+t.y)/2,(e.z+t.z)/2);r.push({from:new l.Vector3(e.x,e.y,e.z),to:n,color:i[0]}),r.push({from:n,to:new l.Vector3(t.x,t.y,t.z),color:i[1]})}return r}findSmallestRing(e,t,i=8){const r=(e<t?e:t)+","+(e<t?t:e);if(this._ringCache.has(r))return this._ringCache.get(r);const n=[[e]],s=new Set([e]);for(;n.length>0;){const a=n.shift(),o=a[a.length-1];if(a.length>=i)continue;const l=this.atoms[o];if(l&&l.bonds)for(let i=0;i<l.bonds.length;i++){const h=l.bonds[i];if(!(o===e&&h===t||o===t&&h===e)){if(h===t&&a.length>=2){const e=[...a,t];return this._ringCache.set(r,e),e}s.has(h)||(s.add(h),n.push([...a,h]))}}}return this._ringCache.set(r,null),null}chooseDashedSide(e,t,i,r,n){const s=this.findSmallestRing(e.index,t.index);if(s&&s.length>=3){const e=new l.Vector3(0,0,0);for(let t=0;t<s.length;t++){const i=this.atoms[s[t]];e.x+=i.x,e.y+=i.y,e.z+=i.z}e.multiplyScalar(1/s.length);const t=(new l.Vector3).addVectors(i,r).multiplyScalar(.5),a=new l.Vector3(e.x-t.x,e.y-t.y,e.z-t.z),o=n.x*a.x+n.y*a.y+n.z*a.z,h=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),c=Math.sqrt(a.x*a.x+a.y*a.y+a.z*a.z);if(c>=.001&&Math.abs(o)>=.05*h*c)return o>0}return this.chooseDashedPlusV(e,t,i,r,n)}chooseDashedPlusV(e,t,i,r,n){const s=new l.Vector3(0,0,0);let a=0;for(let i=0;i<e.bonds.length;i++){if(e.bonds[i]===t.index)continue;const r=this.atoms[e.bonds[i]];r&&(s.x+=r.x,s.y+=r.y,s.z+=r.z,a++)}for(let i=0;i<t.bonds.length;i++){if(t.bonds[i]===e.index)continue;const r=this.atoms[t.bonds[i]];r&&(s.x+=r.x,s.y+=r.y,s.z+=r.z,a++)}if(0===a)return!1;s.multiplyScalar(1/a);const o=(new l.Vector3).addVectors(i,r).multiplyScalar(.5),h=new l.Vector3(s.x-o.x,s.y-o.y,s.z-o.z),c=n.x*h.x+n.y*h.y+n.z*h.z,d=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z),u=Math.sqrt(h.x*h.x+h.y*h.y+h.z*h.z);return!(u<.001||Math.abs(c)<.1*d*u)&&c>0}drawAromaticRingTorus(e,t,i,r,s){var a;const o=this.findSmallestRing(e.index,t.index);if(!o||o.length<3)return;const h=o.slice().sort((e,t)=>e-t).join(",");if(this._drawnAromaticRings.has(h))return;this._drawnAromaticRings.add(h);const c=new l.Vector3(0,0,0);for(let e=0;e<o.length;e++){const t=this.atoms[o[e]];c.x+=t.x,c.y+=t.y,c.z+=t.z}c.multiplyScalar(1/o.length);const d=new l.Vector3(0,0,0);for(let e=0;e<o.length;e++){const t=this.atoms[o[e]],i=this.atoms[o[(e+1)%o.length]];d.x+=(t.y-i.y)*(t.z+i.z),d.y+=(t.z-i.z)*(t.x+i.x),d.z+=(t.x-i.x)*(t.y+i.y)}const u=Math.sqrt(d.x*d.x+d.y*d.y+d.z*d.z);if(u<1e-4)return;d.multiplyScalar(1/u);let f=0,p=0;for(let e=0;e<o.length;e++){const t=this.atoms[o[e]],i=t.x-c.x,r=t.y-c.y,n=t.z-c.z;if(f+=Math.sqrt(i*i+r*r+n*n),(null===(a=t.style)||void 0===a?void 0:a.sphere)&&!t.style.sphere.hidden&&t.style.sphere.radius){const e=this.getRadiusFromStyle(t,t.style.sphere);e>p&&(p=e)}}f/=o.length;const m=.5*r,g=f*Math.cos(Math.PI/o.length)-m-2*r,v=f-m-p-r,_=Math.max(m,Math.min(g,v));i.imposter?this.drawRingImposter(i,c,d,_,m,s):n.drawTorus(i,c,d,_,m,s)}static drawStickImposter(e,t,i,r,n,s=0,a=0){for(var o=e.updateGeoGroup(4),l=o.vertices,h=3*l,c=o.vertexArray,d=o.colorArray,u=o.radiusArray,f=o.normalArray,p=n.r,m=n.g,g=n.b,v=function(e){var t=-e;return 0==t&&(t=-1e-4),t},_=h,y=0;y<4;y++)c[_]=t.x,f[_]=i.x,d[_]=p,c[++_]=t.y,f[_]=i.y,d[_]=m,c[++_]=t.z,f[_]=i.z,d[_]=y<2?g:v(g),_++;o.vertices+=4,u[l]=-r,u[l+1]=r,u[l+2]=-r,u[l+3]=r;var b=o.faceArray,x=o.faceidx;b[x+0]=l,b[x+1]=l+1,b[x+2]=l+2,b[x+3]=l+2,b[x+4]=l+3,b[x+5]=l,o.faceidx+=6}drawBondSticks(e,t,i,r){var s,a,c,u,f,p,m,g,v,_;if(!e.style.stick)return;var y=e.style.stick;if(y.hidden)return;var b=y.radius||this.defaultStickRadius,x=y.doubleBondScaling||.4,w=y.tripleBondScaling||.25;const A=(null===(s=y.dashedBondConfig)||void 0===s?void 0:s.dashLength)||.1,C=(null===(a=y.dashedBondConfig)||void 0===a?void 0:a.gapLength)||.25,S=y.aromaticStyle||"dashed";var z,M,T,E,L,F,I,D,O,R,k,P,U,N=b,B=y.singleBonds||!1,G=y.dashedBonds||!1,V=0,j=0,H=(0,d.getColorFromStyle)(e,y);!e.capDrawn&&e.bonds.length<4&&(V=2);const W=(null===(c=y.dashedBondConfig)||void 0===c?void 0:c.solidColor)?h.CC.color(y.dashedBondConfig.solidColor):null,q=(null===(u=y.dashedBondConfig)||void 0===u?void 0:u.dashedColor)?h.CC.color(y.dashedBondConfig.dashedColor):null,Y=e=>{const t=i.imposter?GLModel.drawStickImposter:n.drawCylinder;return G||e%1!=0?(e,i,r,n,s,a,o=0,l=0)=>{const h=a?[s,a]:[s];this.calculateDashes(i,r,n,A,C,h).forEach(i=>{t(e,i.from,i.to,n,i.color,o,l)})}:(e,i,r,n,s,a,o=0,l=0)=>{if(a&&s!==a){const h=this.calculateTwoColorSegments(i,r,[s,a]);for(let i=0;i<h.length;i++){const r=h[i],s=0===i?o:0,a=i===h.length-1?l:0;t(e,r.from,r.to,n,r.color,s,a)}}else t(e,i,r,n,s,o,l)}};for(T=0;T<e.bonds.length;T++){const s=e.bondOrder[T],a=4===s;let c;c=a?"circle"===S?1:1.5:s;const u=Y(c),_=t[e.bonds[T]];if(k=P=U=null,e.index<_.index){j=0;const t=_.style;if(!t.stick||t.stick.hidden)continue;let s=H,y=(0,d.getColorFromStyle)(_,t.stick);N=b,E=B;const G=null===(f=e.bondStyles)||void 0===f?void 0:f[T];if(G){if(G.iswire)continue;G.radius&&(N=G.radius),G.singleBond&&(E=!0),void 0!==G.color1&&(s=h.CC.color(G.color1)),void 0!==G.color2&&(y=h.CC.color(G.color2))}const Y=new l.Vector3(e.x,e.y,e.z),ee=new l.Vector3(_.x,_.y,_.z),te=(null===(p=null==G?void 0:G.dashedBondConfig)||void 0===p?void 0:p.solidColor)?h.CC.color(G.dashedBondConfig.solidColor):null,ie=(null===(m=null==G?void 0:G.dashedBondConfig)||void 0===m?void 0:m.dashedColor)?h.CC.color(G.dashedBondConfig.dashedColor):null,re=G&&(void 0!==G.color1||void 0!==G.color2),ne=te||(re?s:W||s),se=te||(re?y:W||y),ae=ie||(re?s:q||s),oe=ie||(re?y:q||y),le=(null===(g=null==G?void 0:G.dashedBondConfig)||void 0===g?void 0:g.dashLength)||A,he=(null===(v=null==G?void 0:G.dashedBondConfig)||void 0===v?void 0:v.gapLength)||C;if(c<=1||E||c>3){c<1&&(N*=c),!_.capDrawn&&_.bonds.length<4&&(j=2);const t=c%1!=0;if(u(i,Y,ee,N,t?ae:s,t?oe:y,V,j),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){if(k||(k=(new l.Vector3).addVectors(Y,ee).multiplyScalar(.5)),z){var Z=new o.Cylinder(Y,k,N),X=new o.Sphere(Y,N);e.intersectionShape.cylinder.push(Z),e.intersectionShape.sphere.push(X)}if(M){var K=new o.Cylinder(ee,k,N),Q=new o.Sphere(ee,N);_.intersectionShape.cylinder.push(K),_.intersectionShape.sphere.push(Q)}}if(a&&"circle"===S){const t=ie||q||s;this.drawAromaticRingTorus(e,_,r,N,t)}}else if(c>1){var $=0,J=0;N!=b&&($=2,J=2);const t=ee.clone();let r,a,h,d,u,f;t.sub(Y);const p=this.getSideBondV(e,_,T);let m=!1;c%1!=0&&(m=null!=(null==G?void 0:G.dashedBondFlip)?G.dashedBondFlip:this.chooseDashedSide(e,_,Y,ee,p));const g=i.imposter?GLModel.drawStickImposter:n.drawCylinder,v=(e,t,r,n,s,a,o)=>{if(n!=s){const h=(new l.Vector3).addVectors(e,t).multiplyScalar(.5);g(i,e,h,r,n,a,0),g(i,h,t,r,s,0,o)}else g(i,e,t,r,n,a,o)},A=(e,t,r,n,s,a,o)=>{const l=n!=s?[n,s]:[n];this.calculateDashes(e,t,r,le,he,l).forEach(e=>{g(i,e.from,e.to,r,e.color||n,a,o)})};if(c>1&&c<=2){if(r=N*x,a=r*(c-1),p.multiplyScalar(1.5*r),h=Y.clone(),h.add(p),d=Y.clone(),d.sub(p),u=h.clone(),u.add(t),f=d.clone(),f.add(t),2===c?(v(h,u,r,s,y,$,J),v(d,f,r,s,y,$,J)):m?(A(h,u,a,ae,oe,$,J),v(d,f,r,ne,se,$,J)):(v(h,u,r,ne,se,$,J),A(d,f,a,ae,oe,$,J)),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){k||(k=(new l.Vector3).addVectors(h,u).multiplyScalar(.5)),P||(P=(new l.Vector3).addVectors(d,f).multiplyScalar(.5));const t=2===c?r:m?a:r,i=2===c||m?r:a;z&&(L=new o.Cylinder(h,k,t),F=new o.Cylinder(d,P,i),e.intersectionShape.cylinder.push(L),e.intersectionShape.cylinder.push(F)),M&&(D=new o.Cylinder(u,k,t),O=new o.Cylinder(f,P,i),_.intersectionShape.cylinder.push(D),_.intersectionShape.cylinder.push(O))}}else if(c>2&&c<=3){r=N*w;const i=r*(c-2);if(p.cross(t),p.normalize(),p.multiplyScalar(3*r),h=Y.clone(),h.add(p),d=Y.clone(),d.sub(p),u=h.clone(),u.add(t),f=d.clone(),f.add(t),3===c?(v(h,u,r,s,y,$,J),v(Y,ee,r,s,y,V,j),v(d,f,r,s,y,$,J)):m?(A(h,u,i,ae,oe,$,J),v(Y,ee,r,ne,se,V,j),v(d,f,r,ne,se,$,J)):(v(h,u,r,ne,se,$,J),v(Y,ee,r,ne,se,V,j),A(d,f,i,ae,oe,$,J)),z=e.clickable||e.hoverable,M=_.clickable||_.hoverable,z||M){k||(k=(new l.Vector3).addVectors(h,u).multiplyScalar(.5)),P||(P=(new l.Vector3).addVectors(d,f).multiplyScalar(.5)),U||(U=(new l.Vector3).addVectors(Y,ee).multiplyScalar(.5));const t=3===c?r:m?i:r,n=3===c||m?r:i;z&&(L=new o.Cylinder(h.clone(),k.clone(),t),F=new o.Cylinder(d.clone(),P.clone(),n),I=new o.Cylinder(Y.clone(),U.clone(),r),e.intersectionShape.cylinder.push(L),e.intersectionShape.cylinder.push(F),e.intersectionShape.cylinder.push(I)),M&&(D=new o.Cylinder(u.clone(),k.clone(),t),O=new o.Cylinder(f.clone(),P.clone(),n),R=new o.Cylinder(ee.clone(),U.clone(),r),_.intersectionShape.cylinder.push(D),_.intersectionShape.cylinder.push(O),_.intersectionShape.cylinder.push(R))}}}}}var ee=!1,te=0,ie=!1;for(T=0;T<e.bonds.length;T++){E=B;var re=null===(_=e.bondStyles)||void 0===_?void 0:_[T];re&&(re.singleBond&&(E=!0),re.radius&&re.radius!=b&&(ie=!0)),(E||1==e.bondOrder[T])&&te++}ie?te>0&&(ee=!0):0==te&&(e.bonds.length>0||y.showNonBonded)&&(ee=!0),ee&&(N=b,i.imposter?this.drawSphereImposter(i.sphereGeometry,e,N,H):n.drawSphere(i,e,N,H))}createMolObj(e,t){t=t||{},this._drawnAromaticRings=new Set,this._ringCache=new Map;var i,r,s,o,l=new a.Object3D,c=[],d={},u={},f=this.drawAtomSphere,p=null,m=null,g=null;t.supportsImposters?((g=new a.Geometry(!0)).imposter=!0,g.radii=!0,f=this.drawAtomImposter,(p=new a.Geometry(!0)).imposter=!0,(m=new a.Geometry(!0,!0)).imposter=!0,m.sphereGeometry=new a.Geometry(!0),m.sphereGeometry.imposter=!0,m.drawnCaps={}):t.supportsAIA?(g=new a.Geometry(!0),f=this.drawAtomInstanced,(p=new a.Geometry(!1,!0,!0)).instanced=!0,m=new a.Geometry(!0)):(g=new a.Geometry(!0),p=new a.Geometry(!0),m=new a.Geometry(!0));var v,_,y={},b=[Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY];for(i=0,s=e.length;i<s;i++){var x=e[i];if(x&&x.style){for(r in(x.clickable||x.hoverable)&&void 0===x.intersectionShape&&(x.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),o={line:void 0,cross:void 0,stick:void 0,sphere:void 0})x.style[r]?x.style[r].opacity?o[r]=parseFloat(x.style[r].opacity):o[r]=1:o[r]=void 0,y[r]?null!=o[r]&&y[r]!=o[r]&&(console.log("Warning: "+r+" opacity is ambiguous"),y[r]=1):y[r]=o[r];f.call(this,x,p),this.drawAtomClickSphere(x),this.drawAtomCross(x,u),this.drawBondLines(x,e,d),this.drawBondSticks(x,e,m,g),void 0===x.style.cartoon||x.style.cartoon.hidden||("spectrum"!==x.style.cartoon.color||"number"!=typeof x.resi||x.hetflag||(x.resi<b[0]&&(b[0]=x.resi),x.resi>b[1]&&(b[1]=x.resi)),c.push(x))}}if(c.length>0&&A(l,c,b,this.defaultCartoonQuality),p&&p.vertices>0){p.initTypedArrays();var w=null,C=null;p.imposter?w=new a.SphereImposterMaterial({ambient:0,vertexColors:!0,reflectivity:0}):p.instanced?(C=new a.Geometry(!0),n.drawSphere(C,{x:0,y:0,z:0},1,new h.Color(.5,.5,.5)),C.initTypedArrays(),w=new a.InstancedMaterial({sphereMaterial:new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),sphere:C})):w=new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),y.sphere<1&&y.sphere>=0&&(w.transparent=!0,w.opacity=y.sphere),C=new a.Mesh(p,w),l.add(C)}if(m.vertices>0){var S=null,z=null,M=m.sphereGeometry;M&&void 0!==M.vertices&&0!=M.vertices||(M=null),m.initTypedArrays(),M&&M.initTypedArrays();var T={ambient:0,vertexColors:!0,reflectivity:0};m.imposter?(S=new a.StickImposterMaterial(T),z=new a.SphereImposterMaterial(T)):(S=new a.MeshLambertMaterial(T),z=new a.MeshLambertMaterial(T),S.wireframe&&(m.setUpWireframe(),M&&M.setUpWireframe())),y.stick<1&&y.stick>=0&&(S.transparent=!0,S.opacity=y.stick,z.transparent=!0,z.opacity=y.stick);var E=new a.Mesh(m,S);if(l.add(E),M){var L=new a.Mesh(M,z);l.add(L)}}for(i in g.vertices>0&&(g.initTypedArrays(),v=g.imposter?new a.RingImposterMaterial({ambient:0,vertexColors:!0,reflectivity:0}):new a.MeshLambertMaterial({ambient:0,vertexColors:!0,reflectivity:0}),y.stick<1&&y.stick>=0&&(v.transparent=!0,v.opacity=y.stick),l.add(new a.Mesh(g,v))),d)if(d.hasOwnProperty(i)){_=i;var F=new a.LineBasicMaterial({linewidth:_,vertexColors:!0});y.line<1&&y.line>=0&&(F.transparent=!0,F.opacity=y.line),d[i].initTypedArrays();var I=new a.Line(d[i],F,a.LineStyle.LinePieces);l.add(I)}for(i in u)if(u.hasOwnProperty(i)){_=i;var D=new a.LineBasicMaterial({linewidth:_,vertexColors:!0});y.cross<1&&y.cross>=0&&(D.transparent=!0,D.opacity=y.cross),u[i].initTypedArrays();var O=new a.Line(u[i],D,a.LineStyle.LinePieces);l.add(O)}if(this.dontDuplicateAtoms&&this.modelData.symmetries&&this.modelData.symmetries.length>0){var R,k=new a.Object3D;for(R=0;R<this.modelData.symmetries.length;R++){var P=new a.Object3D;(P=l.clone()).matrix.copy(this.modelData.symmetries[R]),P.matrixAutoUpdate=!1,k.add(P)}return k}return l}getViewer(){return this.viewer}getInternalState(){return{atoms:this.atoms,frames:this.frames}}setInternalState(e){this.atoms=e.atoms,this.frames=e.frames,this.molObj=null}getCrystData(){if(this.modelData.cryst){if(!this.modelData.cryst.matrix){const e=this.modelData.cryst;this.modelData.cryst.matrix=(0,l.conversionMatrix3)(e.a,e.b,e.c,e.alpha,e.beta,e.gamma)}return this.modelData.cryst}return null}setCrystData(e,t,i,r,n,s){e=e||1,t=t||1,i=i||1,r=r||90,n=n||90,s=s||90;const a=(0,l.conversionMatrix3)(e,t,i,r,n,s);this.modelData.cryst={a:e,b:t,c:i,alpha:r,beta:n,gamma:s,matrix:a}}setCrystMatrix(e){e=e||new l.Matrix3(1,0,0,0,1,0,0,0,1),this.modelData.cryst={matrix:e}}getSymmetries(){return void 0===this.modelData.symmetries&&(this.modelData.symmetries=[this.idMatrix]),this.modelData.symmetries}setSymmetries(e){void 0===e?this.modelData.symmetries=[this.idMatrix]:(this.modelData.symmetries=e,this.molObj=null)}getID(){return this.id}getNumFrames(){return null!=this.frames.numFrames?this.frames.numFrames:this.frames.length}adjustCoord(e,t,i,r){var n=t-e;return n<-i?t+r:n>i?t-r:t}adjustCoordinatesToBox(){if(this.box&&this.atomdfs)for(var e=this.box[0],t=this.box[1],i=this.box[2],r=.9*e,n=.9*t,s=.9*i,a=0;a<this.atomdfs.length;a++)for(var o=this.atomdfs[a],l=1;l<o.length;l++){var h=this.atoms[o[l][0]],c=this.atoms[o[l][1]];h.x=this.adjustCoord(c.x,h.x,r,e),h.y=this.adjustCoord(c.y,h.y,n,t),h.z=this.adjustCoord(c.z,h.z,s,i)}}setFrame(e){var t=this.getNumFrames();let i=this,r=this.viewer;return new Promise(function(n,s){if(0==t&&n(),(e<0||e>=t)&&(e=t-1),null!=i.frames.url){var a=i.frames.url;(0,d.getbin)(a+"/traj/frame/"+e+"/"+i.frames.path,void 0,"POST",void 0).then(function(e){for(var t=new Float32Array(e,44),r=0,s=0;s<i.atoms.length;s++)i.atoms[s].x=t[r++],i.atoms[s].y=t[r++],i.atoms[s].z=t[r++];i.box&&i.atomdfs&&i.adjustCoordinatesToBox(),n()}).catch(s)}else i.atoms=i.frames[e],n();i.molObj=null,i.modelDatas&&e<i.modelDatas.length&&(i.modelData=i.modelDatas[e]||{},i.unitCellObjects&&r&&(r.removeUnitCell(i),r.addUnitCell(i)))})}addFrame(e){this.frames.push(e)}vibrate(e=10,t=1,i=!1,r){var n=0,s=e;let a=this.viewer;i&&(n=-e,s=e),void 0!==this.frames&&void 0!==this.frames.origIndex?this.setFrame(this.frames.origIndex):this.setFrame(0),n<s&&(this.frames=[]),i&&(this.frames.origIndex=e);for(var o=n;o<s;o++){var h=[],c=this.frames.length;if(0!=o||r){for(var u=0;u<this.atoms.length;u++){var f=(0,d.getAtomProperty)(this.atoms[u],"dx"),p=(0,d.getAtomProperty)(this.atoms[u],"dy"),m=(0,d.getAtomProperty)(this.atoms[u],"dz"),g=new l.Vector3(f,p,m),v=new l.Vector3(this.atoms[u].x,this.atoms[u].y,this.atoms[u].z),_=o*t/e;g.multiplyScalar(_),v.add(g);var y={};for(var b in this.atoms[u])y[b]=this.atoms[u][b];if(y.x=v.x,y.y=v.y,y.z=v.z,h.push(y),a&&r){var x=(0,d.extend)({},r),w=new l.Vector3(f,p,m);if(w.multiplyScalar(t),w.add(v),x.start=v,x.end=w,x.frame=c,!x.color){var A=y.style.sphere;A||(A=y.style.stick),A||(A=y.style.line),x.color=(0,d.getColorFromStyle)(y,A)}a.addArrow(x)}}this.frames.push(h)}else this.frames.push(this.atoms)}}setAtomDefaults(e){for(let t=0;t<e.length;t++){let i=e[t];i&&(i.style=i.style||(0,d.deepCopy)(GLModel.defaultAtomStyle),i.color=i.color||this.ElementColors[i.elem]||this.defaultColor,i.model=this.id,(i.clickable||i.hoverable)&&(i.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}))}}addMolData(e,t,i={}){var r,n=GLModel.parseMolData(e,t,i);this.dontDuplicateAtoms=!i.duplicateAssemblyAtoms;var s=n.modelData;if(s&&(Array.isArray(s)?(this.modelData=s[0]||{},this.modelDatas=s):this.modelData=s),n.box?this.box=n.box:this.box=null,0==this.frames.length){const e=this.modelDatas?[]:null;for(let t=0;t<n.length;t++)0!=n[t].length&&(this.frames.push(n[t]),e&&e.push(this.modelDatas[t]||null));e&&(this.modelDatas=e,e[0]&&(this.modelData=e[0])),this.frames[0]&&(this.atoms=this.frames[0])}else if(i.frames)for(let e=0;e<n.length;e++)this.frames.push(n[e]);else for(var a=0;a<n.length;a++)this.addAtoms(n[a]);for(let e=0;e<this.frames.length;e++)this.setAtomDefaults(this.frames[e]);if(i.vibrate&&i.vibrate.frames&&i.vibrate.amplitude&&this.vibrate(i.vibrate.frames,i.vibrate.amplitude),this.modelDatas)for(let e=0;e<this.modelDatas.length;e++)(null===(r=this.modelDatas[e])||void 0===r?void 0:r.style)&&this.setStyle({frame:e},this.modelDatas[e].style,!0);else s&&s.style&&this.setStyle({},s.style,!0);i.style&&this.setStyle({},i.style)}setDontDuplicateAtoms(e){this.dontDuplicateAtoms=e}setModelData(e){this.modelData=e}propertyMatches(e,t){if(e==t)return!0;if("string"==typeof t&&"number"==typeof e){var i=t.match(/(-?\d+)\s*-\s*(-?\d+)/);if(i){var r=parseInt(i[1]),n=parseInt(i[2]);if(i&&e>=r&&e<=n)return!0}}return!1}static deepCopyAndCache(e,t){if("object"!=typeof e||null==e||e instanceof GLModel)return e;if(e.__cache_created)return e;const i={};for(const r in e){const n=e[r];if(Array.isArray(n)){i[r]=[];for(let e=0;e<n.length;e++)i[r].push(GLModel.deepCopyAndCache(n[e],t))}else i[r]="object"==typeof n&&"properties"!=r&&"model"!=r?GLModel.deepCopyAndCache(n,t):n;if("and"==r||"or"==r){const e=[];for(const n of i[r]){const i=new Set;for(const e of t.selectedAtoms(n))i.add(e.index);e.push(i)}if("and"==r){const t=function(e,t){const i=new Set;for(const r of t)e.has(r)&&i.add(r);return i};let n=new Set(e[0]);for(const i of e.splice(1))n=t(n,i);i[r].__cached_results=n}else if("or"==r){const t=new Set;for(const i of e)for(const e of i)t.add(e);i[r].__cached_results=t}}}return i.__cache_created=!0,i}atomIsSelected(e,t){if(void 0===t)return!0;var i=!!t.invert,r=!0;for(var n in t)if("and"==n||"or"==n||"not"==n){if("not"==n){if(this.atomIsSelected(e,t[n])){r=!1;break}}else if(void 0===t[n].__cached_results&&(t=GLModel.deepCopyAndCache(t,this)),!(r=t[n].__cached_results.has(e.index)))break}else if("predicate"===n){if(!t.predicate(e)){r=!1;break}}else if("properties"==n&&e[n]){for(var s in t.properties)if(!s.startsWith("__cache")){if(void 0===e.properties[s]){r=!1;break}if(e.properties[s]!=t.properties[s]){r=!1;break}}}else if("model"==n){let e=t.model;if("number"==typeof e&&e<0&&(e=this.viewer.getNextModelId()+e),Array.isArray(e)){let t=!1;for(let i=0;i<e.length;i++)if(e[i]==this||e[i]==this.id){t=!0;break}if(!t){r=!1;break}}else if(e!=this&&e!=this.id){r=!1;break}}else if(t.hasOwnProperty(n)&&!GLModel.ignoredKeys.has(n)&&!n.startsWith("__cache")){if(void 0===e[n]){r=!1;break}let i=!1;if("bonds"===n){if(t[n]!=e.bonds.length){r=!1;break}}else if(Array.isArray(t[n])){var a=t[n],o=e[n];for(let e=0;e<a.length;e++)if(this.propertyMatches(o,a[e])){i=!0;break}if(!i){r=!1;break}}else{let i=t[n];if(!this.propertyMatches(e[n],i)){r=!1;break}}}return i?!r:r}static squaredDistance(e,t){var i=t.x-e.x,r=t.y-e.y,n=t.z-e.z;return i*i+r*r+n*n}expandAtomList(e,t){if(t<=0)return e;for(var i=(0,d.getExtent)(e,void 0),r=[[],[],[]],n=0;n<3;n++)r[0][n]=i[0][n]-t,r[1][n]=i[1][n]+t,r[2][n]=i[2][n];var s=[];for(let e=0;e<this.atoms.length;e++){var a=this.atoms[e].x,o=this.atoms[e].y,l=this.atoms[e].z;a>=r[0][0]&&a<=r[1][0]&&o>=r[0][1]&&o<=r[1][1]&&l>=r[0][2]&&l<=r[1][2]&&(a>=i[0][0]&&a<=i[1][0]&&o>=i[0][1]&&o<=i[1][1]&&l>=i[0][2]&&l<=i[1][2]||s.push(this.atoms[e]))}return s}static getFloat(e){return"number"==typeof e?e:parseFloat(e)}selectedAtoms(e,t){var i=[];e=GLModel.deepCopyAndCache(e||{},this),t||(t=this.atoms);for(var r=t.length,n=0;n<r;n++){var s=t[n];s&&this.atomIsSelected(s,e)&&i.push(s)}if(e.hasOwnProperty("expand")){const t=GLModel.getFloat(e.expand);let r=this.expandAtomList(i,t),n=i.length;const s=t*t;for(let e=0;e<r.length;e++)for(let t=0;t<n;t++){var a=GLModel.squaredDistance(r[e],i[t]);a<s&&a>0&&i.push(r[e])}}if(e.hasOwnProperty("within")&&e.within.hasOwnProperty("sel")&&e.within.hasOwnProperty("distance")){var o=this.selectedAtoms(e.within.sel,this.atoms),l={};const t=GLModel.getFloat(e.within.distance),r=t*t;for(let e=0;e<o.length;e++)for(let t=0;t<i.length;t++){let n=GLModel.squaredDistance(o[e],i[t]);n<r&&n>0&&(l[t]=1)}var h=[];if(e.within.invert)for(let e=0;e<i.length;e++)l[e]||h.push(i[e]);else for(let e in l)h.push(i[e]);i=h}if(e.hasOwnProperty("byres")){var c={},d=[],u=[];for(let e=0;e<i.length;e++){let t=i[e];var f=t.chain,p=t.resi;if(void 0===c[f]&&(c[f]={}),t.hasOwnProperty("resi")&&void 0===c[f][p])for(c[f][p]=!0,u.push(t);u.length>0;)if(t=u.pop(),f=t.chain,p=t.resi,void 0===d[t.index]){d[t.index]=!0;for(var m=0;m<t.bonds.length;m++){var g=this.atoms[t.bonds[m]];void 0===d[g.index]&&g.hasOwnProperty("resi")&&g.chain==f&&g.resi==p&&(u.push(g),i.push(g))}}}}return i}addAtoms(e){this.molObj=null;var t,i=this.atoms.length,r=[];for(t=0;t<e.length;t++)void 0===e[t].index&&(e[t].index=t),void 0===e[t].serial&&(e[t].serial=t),r[e[t].index]=i+t;for(t=0;t<e.length;t++){var n=e[t],s=r[n.index],a=(0,d.extend)({},n);a.index=s,a.bonds=[],a.bondOrder=[],a.model=this.id,a.style=a.style||(0,d.deepCopy)(GLModel.defaultAtomStyle),void 0===a.color&&(a.color=this.ElementColors[a.elem]||this.defaultColor);for(var o=n.bonds?n.bonds.length:0,l=0;l<o;l++){var h=r[n.bonds[l]];void 0!==h&&(a.bonds.push(h),a.bondOrder.push(n.bondOrder?n.bondOrder[l]:1))}this.atoms.push(a)}}assignBonds(){(0,z.assignBonds)(this.atoms,{assignBonds:!0})}removeAtoms(e){this.molObj=null;var t,i=[];for(t=0;t<e.length;t++)i[e[t].index]=!0;var r=[];for(t=0;t<this.atoms.length;t++){var n=this.atoms[t];i[n.index]||r.push(n)}this.atoms=[],this.addAtoms(r)}setStyle(e,t,i){void 0===t&&void 0===i&&(t=e,e={}),"string"==typeof t&&(t=(0,d.specStringToObject)(t));var r=!1,n=this,s=function(s){var a=n.selectedAtoms(e,s);for(let e=0;e<s.length;e++)s[e]&&(s[e].capDrawn=!1);for(let e=0;e<a.length;e++){r=!0,(a[e].clickable||a[e].hoverable)&&(a[e].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]}),i||(a[e].style={});for(let i in t)t.hasOwnProperty(i)&&(a[e].style[i]=a[e].style[i]||{},Object.assign(a[e].style[i],t[i]))}};if(void 0!==e.frame&&e.frame<this.frames.length){let t=e.frame;t<0&&(t=this.frames.length+t),s(this.frames[t])}else{s(this.atoms);for(var a=0;a<this.frames.length;a++)this.frames[a]!==this.atoms&&s(this.frames[a])}r&&(this.molObj=null)}setClickable(e,t,i){if(t=!!t,null!==(i=(0,d.makeFunction)(i))){var r=this.selectedAtoms(e,this.atoms),n=r.length;for(let e=0;e<n;e++)r[e].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]},r[e].clickable=t,i&&(r[e].callback=i);n>0&&(this.molObj=null)}else console.log("Callback is not a function")}setHoverable(e,t,i,r){if(t=!!t,i=(0,d.makeFunction)(i),r=(0,d.makeFunction)(r),null!==i)if(null!==r){var n=this.selectedAtoms(e,this.atoms),s=n.length;for(let e=0;e<s;e++)n[e].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]},n[e].hoverable=t,i&&(n[e].hover_callback=i),r&&(n[e].unhover_callback=r);s>0&&(this.molObj=null)}else console.log("Unhover_callback is not a function");else console.log("Hover_callback is not a function")}enableContextMenu(e,t){var i;t=!!t;var r=this.selectedAtoms(e,this.atoms),n=r.length;for(i=0;i<n;i++)r[i].intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]},r[i].contextMenuEnabled=t;n>0&&(this.molObj=null)}setColorByElement(e,t){if(null===this.molObj||!GLModel.sameObj(t,this.lastColors)){this.lastColors=t;var i=this.selectedAtoms(e,i);i.length>0&&(this.molObj=null);for(var r=0;r<i.length;r++){var n=i[r];void 0!==t[n.elem]&&(n.color=t[n.elem])}}}setColorByProperty(e,t,i,r){var n,s,a=this.selectedAtoms(e,a);for(this.lastColors=null,a.length>0&&(this.molObj=null),"string"==typeof i&&void 0!==c.Gradient.builtinGradients[i]&&(i=new c.Gradient.builtinGradients[i]),r||(r=i.range()),r||(r=(0,d.getPropertyRange)(a,t)),n=0;n<a.length;n++)s=a[n],null!=(0,d.getAtomProperty)(s,t)&&(s.color=i.valueToHex(parseFloat(s.properties[t]),r))}setColorByFunction(e,t){var i=this.selectedAtoms(e,i);if("function"==typeof t){this.lastColors=null,i.length>0&&(this.molObj=null);for(let e=0;e<i.length;e++){let r=i[e];r.color=t(r)}}}toCDObject(e=!1){var t={a:[],b:[]};e&&(t.s=[]);for(let r=0;r<this.atoms.length;r++){let n={},s=this.atoms[r];if(n.x=s.x,n.y=s.y,n.z=s.z,"C"!=s.elem&&(n.l=s.elem),e){for(var i=0;i<t.s.length&&JSON.stringify(s.style)!==JSON.stringify(t.s[i]);)i++;i===t.s.length&&t.s.push(s.style),0!==i&&(n.s=i)}t.a.push(n);for(let e=0;e<s.bonds.length;e++){let i=r,n=s.bonds[e];if(i>=n)continue;let a={b:i,e:n},o=s.bondOrder[e];1!=o&&(a.o=o),t.b.push(a)}}return t}globj(e,t){(null===this.molObj||t.regen)&&(this.molObj=this.createMolObj(this.atoms,t),this.renderedMolObj&&(e.remove(this.renderedMolObj),this.renderedMolObj=null),this.renderedMolObj=this.molObj.clone(),this.hidden&&(this.renderedMolObj.setVisible(!1),this.molObj.setVisible(!1)),e.add(this.renderedMolObj))}exportVRML(){return this.createMolObj(this.atoms,{supportsImposters:!1,supportsAIA:!1}).vrml()}removegl(e){this.renderedMolObj&&(void 0!==this.renderedMolObj.geometry&&this.renderedMolObj.geometry.dispose(),void 0!==this.renderedMolObj.material&&this.renderedMolObj.material.dispose(),e.remove(this.renderedMolObj),this.renderedMolObj=null),this.molObj=null}hide(){this.hidden=!0,this.renderedMolObj&&this.renderedMolObj.setVisible(!1),this.molObj&&this.molObj.setVisible(!1)}show(){this.hidden=!1,this.renderedMolObj&&this.renderedMolObj.setVisible(!0),this.molObj&&this.molObj.setVisible(!0)}addPropertyLabels(e,t,i){let r=this.selectedAtoms(t),n=this.viewer,s=(0,d.deepCopy)(i);for(let t=0;t<r.length;t++){let i=r[t];var a=null;void 0!==i[e]?a=String(i[e]):void 0!==i.properties[e]&&(a=String(i.properties[e])),null!=a&&(s.position=i,n.addLabel(a,s))}}addResLabels(e,t,i=!1){let r=this.viewer;var n=[],s=function(i,s){for(var a=i.selectedAtoms(e,a),o={},h=0;h<a.length;h++){var c=a[h],u=c.chain,f=c.resn+""+c.resi;o[u]||(o[u]={}),o[u][f]||(o[u][f]=[]),o[u][f].push(c)}var p=(0,d.deepCopy)(t);for(let e in o)if(o.hasOwnProperty(e)){var m=o[e];for(let e in m)if(m.hasOwnProperty(e)){let t=m[e],i=new l.Vector3(0,0,0);for(let e=0;e<t.length;e++){let r=t[e];i.x+=r.x,i.y+=r.y,i.z+=r.z}i.divideScalar(t.length),p.position=i,p.frame=s;let a=r.addLabel(e,p,void 0,!0);n.push(a)}}};if(i){var a=this.getNumFrames();let e=this.atoms;for(let e=0;e<a;e++)this.frames[e]&&(this.atoms=this.frames[e],s(this,e));this.atoms=e}else s(this);return n}setupDFS(){this.atomdfs=[];var e=this,t=new Int8Array(this.atoms.length);t.fill(0);for(var i=function(r,n,s){s.push([r,n]);var a=e.atoms[r];t[r]=1;for(var o=0;o<a.bonds.length;o++){var l=a.bonds[o];e.atoms[l]&&!t[l]&&i(l,r,s)}},r=0;r<this.atoms.length;r++)if(this.atoms[r]&&!t[r]){var n=[];i(r,-1,n),this.atomdfs.push(n)}}setCoordinatesFromURL(e,t){this.frames=[];var i=this;return this.box&&this.setupDFS(),e.startsWith("http")||(e="http://"+e),(0,d.get)(e+"/traj/numframes/"+t,function(r){if(!isNaN(parseInt(r)))return i.frames.push(i.atoms),i.frames.numFrames=r,i.frames.url=e,i.frames.path=t,i.setFrame(0)})}setCoordinates(e,t){if(!e)return[];if(/\.gz$/.test(t=t||"")){t=t.replace(/\.gz$/,"");try{e=(0,d.inflateString)(e)}catch(e){console.log(e)}}if({mdcrd:"",inpcrd:"",pdb:"",netcdf:"",array:""}.hasOwnProperty(t)){this.frames=[];for(var i=this.atoms.length,r=GLModel.parseCrd(e,t),n=0;n<r.length;){for(var s=[],a=0;a<i;a++){var o={};for(var l in this.atoms[a])o[l]=this.atoms[a][l];s[a]=o,s[a].x=r[n++],s[a].y=r[n++],s[a].z=r[n++]}this.frames.push(s)}return this.atoms=this.frames[0],this.frames}return[]}addAtomSpecs(e){}static parseCrd(e,t){var i=[],r=0;if("pdb"==t)for(var n=e.indexOf("\nATOM");-1!=n;){for(;"\nATOM"==e.slice(n,n+5)||"\nHETATM"==e.slice(n,n+7);)i[r++]=parseFloat(e.slice(n+31,n+39)),i[r++]=parseFloat(e.slice(n+39,n+47)),i[r++]=parseFloat(e.slice(n+47,n+55)),n=e.indexOf("\n",n+54),"\nTER"==e.slice(n,n+4)&&(n=e.indexOf("\n",n+5));n=e.indexOf("\nATOM",n)}else if("netcdf"==t){var s=new NetCDFReader(e);i=[].concat.apply([],s.getDataVariable("coordinates"))}else{if("array"==t||Array.isArray(e))return e.flat(2);{let r=e.indexOf("\n");"inpcrd"==t&&(r=e.indexOf("\n",r+1)),i=(e=e.slice(r+1)).match(/\S+/g).map(parseFloat)}}return i}static parseMolData(e,t="",i){if(!e)return[];if(/\.gz$/.test(t)){t=t.replace(/\.gz$/,"");try{e=t.match(/bcif/i)?(0,d.inflateString)(e,!1):(0,d.inflateString)(e)}catch(e){console.log(e)}}return void 0===fe[t]&&(t=t.split(".").pop(),void 0===fe[t]&&(console.log("Unknown format: "+t),t=e instanceof Uint8Array?"bcif":e.match(/^@<TRIPOS>MOLECULE/gm)?"mol2":e.match(/^data_/gm)&&e.match(/^loop_/gm)?"cif":e.match(/^HETATM/gm)||e.match(/^ATOM/gm)?"pdb":e.match(/ITEM: TIMESTEP/gm)?"lammpstrj":e.match(/^.*\n.*\n.\s*(\d+)\s+(\d+)/gm)?"sdf":e.match(/^%VERSION\s+VERSION_STAMP/gm)?"prmtop":"xyz",console.log("Best guess: "+t))),(0,fe[t])(e,i)}}var Re;GLModel.defaultAtomStyle={line:{}},GLModel.defaultlineWidth=1,GLModel.vdwRadii={H:1.2,He:1.4,Li:1.82,Be:1.53,B:1.92,C:1.7,N:1.55,O:1.52,F:1.47,Ne:1.54,Na:2.27,Mg:1.73,Al:1.84,Si:2.1,P:1.8,S:1.8,Cl:1.75,Ar:1.88,K:2.75,Ca:2.31,Ni:1.63,Cu:1.4,Zn:1.39,Ga:1.87,Ge:2.11,As:1.85,Se:1.9,Br:1.85,Kr:2.02,Rb:3.03,Sr:2.49,Pd:1.63,Ag:1.72,Cd:1.58,In:1.93,Sn:2.17,Sb:2.06,Te:2.06,I:1.98,Xe:2.16,Cs:3.43,Ba:2.68,Pt:1.75,Au:1.66,Hg:1.55,Tl:1.96,Pb:2.02,Bi:2.07,Po:1.97,At:2.02,Rn:2.2,Fr:3.48,Ra:2.83,U:1.86},GLModel.ignoredKeys=new Set(["props","invert","model","frame","byres","expand","within","and","or","not"]),function(e){e[e.VDW=1]="VDW",e[e.MS=2]="MS",e[e.SAS=3]="SAS",e[e.SES=4]="SES"}(Re||(Re={}));var ke=!1;function Pe(e){ke=e}(window.navigator.userAgent.indexOf("MSIE ")>=0||window.navigator.userAgent.indexOf("Trident/")>=0)&&(ke=!0);class MarchingCubeInitializer{constructor(){this.ISDONE=2,this.edgeTable=new Uint32Array([0,0,0,0,0,0,0,2816,0,0,0,1792,0,3328,3584,3840,0,0,0,138,0,21,0,134,0,0,0,652,0,2067,3865,3600,0,0,0,42,0,0,0,294,0,0,21,28,0,3875,1049,3360,0,168,162,170,0,645,2475,2210,0,687,293,172,4010,3747,3497,3232,0,0,0,0,0,69,0,900,0,0,0,1792,138,131,1608,1920,0,81,0,2074,84,85,84,86,0,81,0,3676,330,1105,1881,1616,0,0,0,42,0,69,0,502,0,0,21,3580,138,2035,1273,1520,2816,104,2337,106,840,581,367,102,2816,3695,3429,3180,1898,1635,1385,1120,0,0,0,0,0,0,0,3910,0,0,69,588,42,2083,41,2880,0,0,0,1722,0,2293,4095,3830,0,255,757,764,2538,2291,3065,2800,0,0,81,338,0,3925,1119,3414,84,855,85,340,2130,2899,89,2384,1792,712,194,1162,4036,3781,3535,3270,708,719,197,204,3018,2755,2505,2240,0,0,0,0,168,420,168,1958,162,162,676,2988,170,163,680,928,3328,3096,3328,3642,52,53,1855,1590,2340,2111,2869,2620,298,51,825,560,3584,3584,3090,3482,1668,1941,1183,1430,146,2975,2069,2460,154,915,153,400,3840,3592,3329,3082,1796,1541,1295,1030,2818,2575,2309,2060,778,515,265,0]),this.triTable=[[],[],[],[],[],[],[],[11,9,8],[],[],[],[8,10,9],[],[10,8,11],[9,11,10],[8,10,9,8,11,10],[],[],[],[1,7,3],[],[4,2,0],[],[2,1,7],[],[],[],[2,7,3,2,9,7],[],[1,4,11,1,0,4],[3,8,0,11,9,4,11,10,9],[4,11,9,11,10,9],[],[],[],[5,3,1],[],[],[],[2,5,8,2,1,5],[],[],[2,4,0],[3,2,4],[],[0,9,1,8,10,5,8,11,10],[3,4,0,3,10,4],[5,8,10,8,11,10],[],[3,5,7],[7,1,5],[1,7,3,1,5,7],[],[9,2,0,9,7,2],[0,3,8,1,7,11,1,5,7],[11,1,7,1,5,7],[],[9,1,0,5,3,2,5,7,3],[8,2,5,8,0,2],[2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,10,5,7,11,10],[11,5,7,11,10,5],[],[],[],[],[],[0,6,2],[],[7,2,9,7,9,8],[],[],[],[8,10,9],[7,1,3],[7,1,0],[6,9,3,6,10,9],[7,10,8,10,9,8],[],[6,0,4],[],[11,1,4,11,3,1],[2,4,6],[2,0,4,2,4,6],[2,4,6],[1,4,2,4,6,2],[],[6,0,4],[],[2,11,3,6,9,4,6,10,9],[8,6,1,8,1,3],[10,0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[],[],[],[5,3,1],[],[0,6,2],[],[7,4,8,5,2,1,5,6,2],[],[],[2,4,0],[7,4,8,2,11,3,10,5,6],[7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[9,11,8],[3,5,6],[0,5,11,0,11,8],[6,3,5,3,1,5],[3,9,6,3,8,9],[9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[],[],[],[],[],[],[],[1,10,2,9,11,6,9,8,11],[],[],[6,0,2],[3,6,9,3,2,6],[3,5,1],[0,5,1,0,11,5],[0,3,5],[6,9,11,9,8,11],[],[],[],[4,5,9,7,1,10,7,3,1],[],[11,6,7,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,5,3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[],[],[0,6,4],[8,6,4,8,1,6],[],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[4,2,6],[1,0,9,2,4,8,2,6,4],[2,4,0,2,6,4],[8,2,4,2,6,4],[11,4,1,11,6,4],[0,9,1,4,11,6,4,8,11],[3,6,0,6,4,0],[8,6,4,8,11,6],[10,8,9],[6,3,9,6,7,3],[6,7,1],[10,7,1,7,3,1],[7,11,6,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2],[1,0,9,3,6,7,3,2,6],[7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[],[],[],[],[5,3,7],[8,5,2,8,7,5],[5,3,7],[1,10,2,5,8,7,5,9,8],[1,7,5],[1,7,5],[9,2,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[0,7,1,7,5,1],[9,3,5,3,7,5],[9,7,5,9,8,7],[8,10,11],[3,4,10,3,10,11],[8,10,11],[5,9,4,1,11,3,1,10,11],[2,4,5],[5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[2,8,5,2,11,8],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[11,9,10],[11,9,10],[1,11,4,1,10,11],[8,7,4,11,1,10,11,3,1],[2,7,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[1,7,4],[3,2,11,4,8,7,9,1,0],[11,4,2,4,0,2],[2,11,3,7,4,8],[4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[3,9,11,9,10,11],[0,10,8,10,11,8],[10,3,1,10,11,3],[2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]],this.edgeTable2=[0,265,515,778,2060,2309,2575,2822,1030,1295,1541,1804,3082,3331,3593,3840,400,153,915,666,2460,2197,2975,2710,1430,1183,1941,1692,3482,3219,3993,3728,560,825,51,314,2620,2869,2111,2358,1590,1855,1077,1340,3642,3891,3129,3376,928,681,419,170,2988,2725,2479,2214,1958,1711,1445,1196,4010,3747,3497,3232,2240,2505,2755,3018,204,453,719,966,3270,3535,3781,4044,1226,1475,1737,1984,2384,2137,2899,2650,348,85,863,598,3414,3167,3925,3676,1370,1107,1881,1616,2800,3065,2291,2554,764,1013,255,502,3830,4095,3317,3580,1786,2035,1273,1520,2912,2665,2403,2154,876,613,367,102,3942,3695,3429,3180,1898,1635,1385,1120,1120,1385,1635,1898,3180,3429,3695,3942,102,367,613,876,2154,2403,2665,2912,1520,1273,2035,1786,3580,3317,4095,3830,502,255,1013,764,2554,2291,3065,2800,1616,1881,1107,1370,3676,3925,3167,3414,598,863,85,348,2650,2899,2137,2384,1984,1737,1475,1226,4044,3781,3535,3270,966,719,453,204,3018,2755,2505,2240,3232,3497,3747,4010,1196,1445,1711,1958,2214,2479,2725,2988,170,419,681,928,3376,3129,3891,3642,1340,1077,1855,1590,2358,2111,2869,2620,314,51,825,560,3728,3993,3219,3482,1692,1941,1183,1430,2710,2975,2197,2460,666,915,153,400,3840,3593,3331,3082,1804,1541,1295,1030,2822,2575,2309,2060,778,515,265,0],this.triTable2=[[],[8,3,0],[9,0,1],[8,3,1,8,1,9],[11,2,3],[11,2,0,11,0,8],[11,2,3,0,1,9],[2,1,11,1,9,11,11,9,8],[10,1,2],[8,3,0,1,2,10],[9,0,2,9,2,10],[3,2,8,2,10,8,8,10,9],[10,1,3,10,3,11],[1,0,10,0,8,10,10,8,11],[0,3,9,3,11,9,9,11,10],[8,10,9,8,11,10],[8,4,7],[3,0,4,3,4,7],[1,9,0,8,4,7],[9,4,1,4,7,1,1,7,3],[2,3,11,7,8,4],[7,11,4,11,2,4,4,2,0],[3,11,2,4,7,8,9,0,1],[2,7,11,2,1,7,1,4,7,1,9,4],[10,1,2,8,4,7],[2,10,1,0,4,7,0,7,3],[4,7,8,0,2,10,0,10,9],[2,7,3,2,9,7,7,9,4,2,10,9],[8,4,7,11,10,1,11,1,3],[11,4,7,1,4,11,1,11,10,1,0,4],[3,8,0,7,11,4,11,9,4,11,10,9],[7,11,4,4,11,9,11,10,9],[9,5,4],[3,0,8,4,9,5],[5,4,0,5,0,1],[4,8,5,8,3,5,5,3,1],[11,2,3,9,5,4],[9,5,4,8,11,2,8,2,0],[3,11,2,1,5,4,1,4,0],[8,5,4,2,5,8,2,8,11,2,1,5],[2,10,1,9,5,4],[0,8,3,5,4,9,10,1,2],[10,5,2,5,4,2,2,4,0],[3,4,8,3,2,4,2,5,4,2,10,5],[5,4,9,1,3,11,1,11,10],[0,9,1,4,8,5,8,10,5,8,11,10],[3,4,0,3,10,4,4,10,5,3,11,10],[4,8,5,5,8,10,8,11,10],[9,5,7,9,7,8],[0,9,3,9,5,3,3,5,7],[8,0,7,0,1,7,7,1,5],[1,7,3,1,5,7],[11,2,3,8,9,5,8,5,7],[9,2,0,9,7,2,2,7,11,9,5,7],[0,3,8,2,1,11,1,7,11,1,5,7],[2,1,11,11,1,7,1,5,7],[1,2,10,5,7,8,5,8,9],[9,1,0,10,5,2,5,3,2,5,7,3],[5,2,10,8,2,5,8,5,7,8,0,2],[10,5,2,2,5,3,5,7,3],[3,9,1,3,8,9,7,11,10,7,10,5],[9,1,0,10,7,11,10,5,7],[3,8,0,7,10,5,7,11,10],[11,5,7,11,10,5],[11,7,6],[0,8,3,11,7,6],[9,0,1,11,7,6],[7,6,11,3,1,9,3,9,8],[2,3,7,2,7,6],[8,7,0,7,6,0,0,6,2],[1,9,0,3,7,6,3,6,2],[7,6,2,7,2,9,2,1,9,7,9,8],[1,2,10,6,11,7],[2,10,1,7,6,11,8,3,0],[11,7,6,10,9,0,10,0,2],[7,6,11,3,2,8,8,2,10,8,10,9],[6,10,7,10,1,7,7,1,3],[6,10,1,6,1,7,7,1,0,7,0,8],[9,0,3,6,9,3,6,10,9,6,3,7],[6,10,7,7,10,8,10,9,8],[8,4,6,8,6,11],[11,3,6,3,0,6,6,0,4],[0,1,9,4,6,11,4,11,8],[1,9,4,11,1,4,11,3,1,11,4,6],[3,8,2,8,4,2,2,4,6],[2,0,4,2,4,6],[1,9,0,3,8,2,2,8,4,2,4,6],[9,4,1,1,4,2,4,6,2],[10,1,2,11,8,4,11,4,6],[10,1,2,11,3,6,6,3,0,6,0,4],[0,2,10,0,10,9,4,11,8,4,6,11],[2,11,3,6,9,4,6,10,9],[8,4,6,8,6,1,6,10,1,8,1,3],[1,0,10,10,0,6,0,4,6],[8,0,3,9,6,10,9,4,6],[10,4,6,10,9,4],[9,5,4,7,6,11],[4,9,5,3,0,8,11,7,6],[6,11,7,4,0,1,4,1,5],[6,11,7,4,8,5,5,8,3,5,3,1],[4,9,5,6,2,3,6,3,7],[9,5,4,8,7,0,0,7,6,0,6,2],[4,0,1,4,1,5,6,3,7,6,2,3],[7,4,8,5,2,1,5,6,2],[6,11,7,1,2,10,9,5,4],[11,7,6,8,3,0,1,2,10,9,5,4],[11,7,6,10,5,2,2,5,4,2,4,0],[7,4,8,2,11,3,10,5,6],[4,9,5,6,10,7,7,10,1,7,1,3],[5,6,10,0,9,1,8,7,4],[5,6,10,7,0,3,7,4,0],[10,5,6,4,8,7],[5,6,9,6,11,9,9,11,8],[0,9,5,0,5,3,3,5,6,3,6,11],[0,1,5,0,5,11,5,6,11,0,11,8],[11,3,6,6,3,5,3,1,5],[9,5,6,3,9,6,3,8,9,3,6,2],[5,6,9,9,6,0,6,2,0],[0,3,8,2,5,6,2,1,5],[1,6,2,1,5,6],[1,2,10,5,6,9,9,6,11,9,11,8],[1,0,9,6,10,5,11,3,2],[6,10,5,2,8,0,2,11,8],[3,2,11,10,5,6],[10,5,6,9,3,8,9,1,3],[0,9,1,5,6,10],[8,0,3,10,5,6],[10,5,6],[10,6,5],[8,3,0,10,6,5],[0,1,9,5,10,6],[10,6,5,9,8,3,9,3,1],[3,11,2,10,6,5],[6,5,10,2,0,8,2,8,11],[1,9,0,6,5,10,11,2,3],[1,10,2,5,9,6,9,11,6,9,8,11],[1,2,6,1,6,5],[0,8,3,2,6,5,2,5,1],[5,9,6,9,0,6,6,0,2],[9,6,5,3,6,9,3,9,8,3,2,6],[11,6,3,6,5,3,3,5,1],[0,5,1,0,11,5,5,11,6,0,8,11],[0,5,9,0,3,5,3,6,5,3,11,6],[5,9,6,6,9,11,9,8,11],[10,6,5,4,7,8],[5,10,6,7,3,0,7,0,4],[5,10,6,0,1,9,8,4,7],[4,5,9,6,7,10,7,1,10,7,3,1],[7,8,4,2,3,11,10,6,5],[11,6,7,10,2,5,2,4,5,2,0,4],[11,6,7,8,0,3,1,10,2,9,4,5],[6,7,11,1,10,2,9,4,5],[7,8,4,5,1,2,5,2,6],[4,1,0,4,5,1,6,7,3,6,3,2],[9,4,5,8,0,7,0,6,7,0,2,6],[4,5,9,6,3,2,6,7,3],[6,7,11,4,5,8,5,3,8,5,1,3],[6,7,11,4,1,0,4,5,1],[4,5,9,3,8,0,11,6,7],[9,4,5,7,11,6],[10,6,4,10,4,9],[8,3,0,9,10,6,9,6,4],[1,10,0,10,6,0,0,6,4],[8,6,4,8,1,6,6,1,10,8,3,1],[2,3,11,6,4,9,6,9,10],[0,10,2,0,9,10,4,8,11,4,11,6],[10,2,1,11,6,3,6,0,3,6,4,0],[10,2,1,11,4,8,11,6,4],[9,1,4,1,2,4,4,2,6],[1,0,9,3,2,8,2,4,8,2,6,4],[2,4,0,2,6,4],[3,2,8,8,2,4,2,6,4],[1,4,9,11,4,1,11,1,3,11,6,4],[0,9,1,4,11,6,4,8,11],[11,6,3,3,6,0,6,4,0],[8,6,4,8,11,6],[6,7,10,7,8,10,10,8,9],[9,3,0,6,3,9,6,9,10,6,7,3],[6,1,10,6,7,1,7,0,1,7,8,0],[6,7,10,10,7,1,7,3,1],[7,11,6,3,8,2,8,10,2,8,9,10],[11,6,7,10,0,9,10,2,0],[2,1,10,7,11,6,8,0,3],[1,10,2,6,7,11],[7,2,6,7,9,2,2,9,1,7,8,9],[1,0,9,3,6,7,3,2,6],[8,0,7,7,0,6,0,2,6],[2,7,3,2,6,7],[7,11,6,3,9,1,3,8,9],[9,1,0,11,6,7],[0,3,8,11,6,7],[11,6,7],[11,7,5,11,5,10],[3,0,8,7,5,10,7,10,11],[9,0,1,10,11,7,10,7,5],[3,1,9,3,9,8,7,10,11,7,5,10],[10,2,5,2,3,5,5,3,7],[5,10,2,8,5,2,8,7,5,8,2,0],[9,0,1,10,2,5,5,2,3,5,3,7],[1,10,2,5,8,7,5,9,8],[2,11,1,11,7,1,1,7,5],[0,8,3,2,11,1,1,11,7,1,7,5],[9,0,2,9,2,7,2,11,7,9,7,5],[11,3,2,8,5,9,8,7,5],[1,3,7,1,7,5],[8,7,0,0,7,1,7,5,1],[0,3,9,9,3,5,3,7,5],[9,7,5,9,8,7],[4,5,8,5,10,8,8,10,11],[3,0,4,3,4,10,4,5,10,3,10,11],[0,1,9,4,5,8,8,5,10,8,10,11],[5,9,4,1,11,3,1,10,11],[3,8,4,3,4,2,2,4,5,2,5,10],[10,2,5,5,2,4,2,0,4],[0,3,8,5,9,4,10,2,1],[2,1,10,9,4,5],[8,4,5,2,8,5,2,11,8,2,5,1],[3,2,11,1,4,5,1,0,4],[9,4,5,8,2,11,8,0,2],[11,3,2,9,4,5],[4,5,8,8,5,3,5,1,3],[5,0,4,5,1,0],[3,8,0,4,5,9],[9,4,5],[7,4,11,4,9,11,11,9,10],[3,0,8,7,4,11,11,4,9,11,9,10],[11,7,4,1,11,4,1,10,11,1,4,0],[8,7,4,11,1,10,11,3,1],[2,3,7,2,7,9,7,4,9,2,9,10],[4,8,7,0,10,2,0,9,10],[2,1,10,0,7,4,0,3,7],[10,2,1,8,7,4],[2,11,7,2,7,1,1,7,4,1,4,9],[3,2,11,4,8,7,9,1,0],[7,4,11,11,4,2,4,0,2],[2,11,3,7,4,8],[9,1,4,4,1,7,1,3,7],[1,0,9,8,7,4],[3,4,0,3,7,4],[8,7,4],[8,9,10,8,10,11],[0,9,3,3,9,11,9,10,11],[1,10,0,0,10,8,10,11,8],[10,3,1,10,11,3],[3,8,2,2,8,10,8,9,10],[9,2,0,9,10,2],[8,0,3,1,10,2],[10,2,1],[2,11,1,1,11,9,11,8,9],[11,3,2,0,9,1],[11,0,2,11,8,0],[11,3,2],[8,1,3,8,9,1],[9,1,0],[8,0,3],[]]}march(e,t,i,r){let n=!!r.fulltable,s=r.hasOwnProperty("origin")&&r.origin.hasOwnProperty("x")?r.origin:{x:0,y:0,z:0},a=!!r.voxel,o=r.matrix,h=r.nX||0,c=r.nY||0,d=r.nZ||0,u=r.scale||1,f=null;f=r.unitCube?r.unitCube:{x:u,y:u,z:u};let p,m,g=new Int32Array(h*c*d);for(p=0,m=g.length;p<m;++p)g[p]=-1;let v=function(e,i,r,n,h,u){let p={x:0,y:0,z:0},m=h;if(!(n&1<<h)&&!!(n&1<<u)&&(m=u),1&m&&r++,2&m&&i++,4&m&&e++,o){let t=new l.Vector3(e,i,r);t=t.applyMatrix4(o),p={x:t.x,y:t.y,z:t.z}}else p.x=s.x+f.x*e,p.y=s.y+f.y*i,p.z=s.z+f.z*r;let v=(c*e+i)*d+r;return a?(t.push(p),t.length-1):(g[v]<0&&(g[v]=t.length,t.push(p)),g[v])},_=new Int32Array(12),y=n?this.edgeTable2:this.edgeTable,b=n?this.triTable2:this.triTable;for(p=0;p<h-1;++p)for(let r=0;r<c-1;++r)for(let n=0;n<d-1;++n){let s=0;for(let t=0;t<8;++t)s|=!!(e[(c*(p+((4&t)>>2))+r+((2&t)>>1))*d+n+(1&t)]&this.ISDONE)<<t;if(0===s||255===s)continue;let o=y[s];if(0===o)continue;let l=b[s];1&o&&(_[0]=v(p,r,n,s,0,1)),2&o&&(_[1]=v(p,r,n,s,1,3)),4&o&&(_[2]=v(p,r,n,s,3,2)),8&o&&(_[3]=v(p,r,n,s,2,0)),16&o&&(_[4]=v(p,r,n,s,4,5)),32&o&&(_[5]=v(p,r,n,s,5,7)),64&o&&(_[6]=v(p,r,n,s,7,6)),128&o&&(_[7]=v(p,r,n,s,6,4)),256&o&&(_[8]=v(p,r,n,s,0,4)),512&o&&(_[9]=v(p,r,n,s,1,5)),1024&o&&(_[10]=v(p,r,n,s,3,7)),2048&o&&(_[11]=v(p,r,n,s,2,6));for(let e=0;e<l.length;e+=3){let r=_[l[e]],n=_[l[e+1]],s=_[l[e+2]];a&&e>=3&&(t.push(t[r]),r=t.length-1,t.push(t[n]),n=t.length-1,t.push(t[s]),s=t.length-1),i.push(r),i.push(n),i.push(s)}}}laplacianSmooth(e,t,i){let r,n,s,a,o,l=new Array(t.length);for(r=0,n=t.length;r<n;r++)l[r]={x:0,y:0,z:0};let h,c=new Array(20);for(r=0;r<20;r++)c[r]=new Array(t.length);for(r=0,n=t.length;r<n;r++)c[0][r]=0;for(r=0,n=i.length/3;r<n;r++){let e=3*r,t=3*r+1,n=3*r+2;for(h=!0,s=0,a=c[0][i[e]];s<a;s++)if(i[t]==c[s+1][i[e]]){h=!1;break}for(h&&(c[0][i[e]]++,c[c[0][i[e]]][i[e]]=i[t]),h=!0,s=0,a=c[0][i[e]];s<a;s++)if(i[n]==c[s+1][i[e]]){h=!1;break}for(h&&(c[0][i[e]]++,c[c[0][i[e]]][i[e]]=i[n]),h=!0,s=0,a=c[0][i[t]];s<a;s++)if(i[e]==c[s+1][i[t]]){h=!1;break}for(h&&(c[0][i[t]]++,c[c[0][i[t]]][i[t]]=i[e]),h=!0,s=0,a=c[0][i[t]];s<a;s++)if(i[n]==c[s+1][i[t]]){h=!1;break}for(h&&(c[0][i[t]]++,c[c[0][i[t]]][i[t]]=i[n]),h=!0,s=0;s<c[0][i[n]];s++)if(i[e]==c[s+1][i[n]]){h=!1;break}for(h&&(c[0][i[n]]++,c[c[0][i[n]]][i[n]]=i[e]),h=!0,s=0,a=c[0][i[n]];s<a;s++)if(i[t]==c[s+1][i[n]]){h=!1;break}h&&(c[0][i[n]]++,c[c[0][i[n]]][i[n]]=i[t])}let d=.5;for(o=0;o<e;o++){for(r=0,n=t.length;r<n;r++)if(c[0][r]<3)l[r].x=t[r].x,l[r].y=t[r].y,l[r].z=t[r].z;else if(3==c[0][r]||4==c[0][r]){for(l[r].x=0,l[r].y=0,l[r].z=0,s=0,a=c[0][r];s<a;s++)l[r].x+=t[c[s+1][r]].x,l[r].y+=t[c[s+1][r]].y,l[r].z+=t[c[s+1][r]].z;l[r].x+=d*t[r].x,l[r].y+=d*t[r].y,l[r].z+=d*t[r].z,l[r].x/=d+c[0][r],l[r].y/=d+c[0][r],l[r].z/=d+c[0][r]}else{for(l[r].x=0,l[r].y=0,l[r].z=0,s=0,a=c[0][r];s<a;s++)l[r].x+=t[c[s+1][r]].x,l[r].y+=t[c[s+1][r]].y,l[r].z+=t[c[s+1][r]].z;l[r].x+=1*t[r].x,l[r].y+=1*t[r].y,l[r].z+=1*t[r].z,l[r].x/=1+c[0][r],l[r].y/=1+c[0][r],l[r].z/=1+c[0][r]}for(r=0,n=t.length;r<n;r++)t[r].x=l[r].x,t[r].y=l[r].y,t[r].z=l[r].z}}}let MarchingCube=new MarchingCubeInitializer;class PointGrid{constructor(e,t,i){this.data=new Int32Array(e*t*i*3),this.width=t,this.height=i}set(e,t,i,r){let n=3*((e*this.width+t)*this.height+i);this.data[n]=r.ix,this.data[n+1]=r.iy,this.data[n+2]=r.iz}get(e,t,i){let r=3*((e*this.width+t)*this.height+i);return{ix:this.data[r],iy:this.data[r+1],iz:this.data[r+2]}}}class ProteinSurface{constructor(){this.INOUT=1,this.ISDONE=2,this.ISBOUND=4,this.ptranx=0,this.ptrany=0,this.ptranz=0,this.probeRadius=1.4,this.defaultScaleFactor=2,this.scaleFactor=this.defaultScaleFactor,this.pHeight=0,this.pWidth=0,this.pLength=0,this.cutRadius=0,this.vpBits=null,this.vpDistance=null,this.vpAtomID=null,this.pminx=0,this.pminy=0,this.pminz=0,this.pmaxx=0,this.pmaxy=0,this.pmaxz=0,this.depty={},this.widxz={},this.faces=[],this.verts=[],this.vdwRadii={H:1.2,Li:1.82,Na:2.27,K:2.75,C:1.7,N:1.55,O:1.52,F:1.47,P:1.8,S:1.8,CL:1.75,BR:1.85,SE:1.9,ZN:1.39,CU:1.4,NI:1.63,X:2},this.nb=[new Int32Array([1,0,0]),new Int32Array([-1,0,0]),new Int32Array([0,1,0]),new Int32Array([0,-1,0]),new Int32Array([0,0,1]),new Int32Array([0,0,-1]),new Int32Array([1,1,0]),new Int32Array([1,-1,0]),new Int32Array([-1,1,0]),new Int32Array([-1,-1,0]),new Int32Array([1,0,1]),new Int32Array([1,0,-1]),new Int32Array([-1,0,1]),new Int32Array([-1,0,-1]),new Int32Array([0,1,1]),new Int32Array([0,1,-1]),new Int32Array([0,-1,1]),new Int32Array([0,-1,-1]),new Int32Array([1,1,1]),new Int32Array([1,1,-1]),new Int32Array([1,-1,1]),new Int32Array([-1,1,1]),new Int32Array([1,-1,-1]),new Int32Array([-1,-1,1]),new Int32Array([-1,1,-1]),new Int32Array([-1,-1,-1])],ProteinSurface.MarchingCube||(ProteinSurface.MarchingCube=new MarchingCubeInitializer)}getVDWIndex(e){return e.elem&&void 0!==this.vdwRadii[e.elem]?e.elem:"X"}getFacesAndVertices(e){let t={};for(let i=0,r=e.length;i<r;i++)t[e[i]]=!0;let i=this.verts;for(let e=0,t=i.length;e<t;e++)i[e].x=i[e].x/this.scaleFactor-this.ptranx,i[e].y=i[e].y/this.scaleFactor-this.ptrany,i[e].z=i[e].z/this.scaleFactor-this.ptranz;let r=[];for(let e=0,n=this.faces.length;e<n;e+=3){let n=this.faces[e],s=this.faces[e+1],a=this.faces[e+2],o=i[n].atomid,l=i[s].atomid,h=i[a].atomid,c=o;l<c&&(c=l),h<c&&(c=h),t[c]&&n!==s&&s!==a&&n!==a&&(r.push(n),r.push(s),r.push(a))}return this.vpBits=null,this.vpDistance=null,this.vpAtomID=null,{vertices:i,faces:r}}initparm(e,t,i){i>1e6&&(this.scaleFactor=this.defaultScaleFactor/2);let r=1/this.scaleFactor*5.5;this.pminx=e[0][0],this.pmaxx=e[1][0],this.pminy=e[0][1],this.pmaxy=e[1][1],this.pminz=e[0][2],this.pmaxz=e[1][2],t?(this.pminx-=this.probeRadius+r,this.pminy-=this.probeRadius+r,this.pminz-=this.probeRadius+r,this.pmaxx+=this.probeRadius+r,this.pmaxy+=this.probeRadius+r,this.pmaxz+=this.probeRadius+r):(this.pminx-=r,this.pminy-=r,this.pminz-=r,this.pmaxx+=r,this.pmaxy+=r,this.pmaxz+=r),this.pminx=Math.floor(this.pminx*this.scaleFactor)/this.scaleFactor,this.pminy=Math.floor(this.pminy*this.scaleFactor)/this.scaleFactor,this.pminz=Math.floor(this.pminz*this.scaleFactor)/this.scaleFactor,this.pmaxx=Math.ceil(this.pmaxx*this.scaleFactor)/this.scaleFactor,this.pmaxy=Math.ceil(this.pmaxy*this.scaleFactor)/this.scaleFactor,this.pmaxz=Math.ceil(this.pmaxz*this.scaleFactor)/this.scaleFactor,this.ptranx=-this.pminx,this.ptrany=-this.pminy,this.ptranz=-this.pminz,this.pLength=Math.ceil(this.scaleFactor*(this.pmaxx-this.pminx))+1,this.pWidth=Math.ceil(this.scaleFactor*(this.pmaxy-this.pminy))+1,this.pHeight=Math.ceil(this.scaleFactor*(this.pmaxz-this.pminz))+1,this.boundingatom(t),this.cutRadius=this.probeRadius*this.scaleFactor,this.vpBits=new Uint8Array(this.pLength*this.pWidth*this.pHeight),this.vpDistance=new Float64Array(this.pLength*this.pWidth*this.pHeight),this.vpAtomID=new Int32Array(this.pLength*this.pWidth*this.pHeight)}boundingatom(e){let t={};for(const i in this.vdwRadii){let r=this.vdwRadii[i];t[i]=e?(r+this.probeRadius)*this.scaleFactor+.5:r*this.scaleFactor+.5;let n=t[i]*t[i];this.widxz[i]=Math.floor(t[i])+1,this.depty[i]=new Int32Array(this.widxz[i]*this.widxz[i]);let s=0;for(let e=0;e<this.widxz[i];e++)for(let t=0;t<this.widxz[i];t++){let r=e*e+t*t;if(r>n)this.depty[i][s]=-1;else{let e=Math.sqrt(n-r);this.depty[i][s]=Math.floor(e)}s++}}}fillvoxels(e,t){for(let e=0,t=this.vpBits.length;e<t;e++)this.vpBits[e]=0,this.vpDistance[e]=-1,this.vpAtomID[e]=-1;for(let i in t){let r=e[t[i]];void 0!==r&&this.fillAtom(r,e)}for(let e=0,t=this.vpBits.length;e<t;e++)this.vpBits[e]&this.INOUT&&(this.vpBits[e]|=this.ISDONE)}fillAtom(e,t){let i=Math.floor(.5+this.scaleFactor*(e.x+this.ptranx)),r=Math.floor(.5+this.scaleFactor*(e.y+this.ptrany)),n=Math.floor(.5+this.scaleFactor*(e.z+this.ptranz)),s=this.getVDWIndex(e),a=0,o=this.pWidth*this.pHeight;for(let l=0,h=this.widxz[s];l<h;l++)for(let c=0;c<h;c++){if(-1!=this.depty[s][a])for(let h=-1;h<2;h++)for(let d=-1;d<2;d++)for(let u=-1;u<2;u++)if(0!==h&&0!==d&&0!==u){let f=h*l,p=u*c;for(let l=0;l<=this.depty[s][a];l++){let s=l*d,a=i+f,h=r+s,c=n+p;if(a<0||h<0||c<0||a>=this.pLength||h>=this.pWidth||c>=this.pHeight)continue;let u=a*o+h*this.pHeight+c;if(this.vpBits[u]&this.INOUT){let a=t[this.vpAtomID[u]];if(a.serial!=e.serial){let t=i+f-Math.floor(.5+this.scaleFactor*(a.x+this.ptranx)),o=r+s-Math.floor(.5+this.scaleFactor*(a.y+this.ptrany)),l=n+p-Math.floor(.5+this.scaleFactor*(a.z+this.ptranz));f*f+s*s+p*p<t*t+o*o+l*l&&(this.vpAtomID[u]=e.serial)}}else this.vpBits[u]|=this.INOUT,this.vpAtomID[u]=e.serial}}a++}}fillvoxelswaals(e,t){for(let e=0,t=this.vpBits.length;e<t;e++)this.vpBits[e]&=~this.ISDONE;for(let i in t){let r=e[t[i]];void 0!==r&&this.fillAtomWaals(r,e)}}fillAtomWaals(e,t){let i=0,r=Math.floor(.5+this.scaleFactor*(e.x+this.ptranx)),n=Math.floor(.5+this.scaleFactor*(e.y+this.ptrany)),s=Math.floor(.5+this.scaleFactor*(e.z+this.ptranz)),a=this.getVDWIndex(e),o=this.pWidth*this.pHeight;for(let l=0,h=this.widxz[a];l<h;l++)for(let c=0;c<h;c++){if(-1!=this.depty[a][i])for(let h=-1;h<2;h++)for(let d=-1;d<2;d++)for(let u=-1;u<2;u++)if(0!==h&&0!==d&&0!==u){let f=h*l,p=u*c;for(let l=0;l<=this.depty[a][i];l++){let i=l*d,a=r+f,h=n+i,c=s+p;if(a<0||h<0||c<0||a>=this.pLength||h>=this.pWidth||c>=this.pHeight)continue;let u=a*o+h*this.pHeight+c;if(this.vpBits[u]&this.ISDONE){let a=t[this.vpAtomID[u]];if(a.serial!=e.serial){let t=r+f-Math.floor(.5+this.scaleFactor*(a.x+this.ptranx)),o=n+i-Math.floor(.5+this.scaleFactor*(a.y+this.ptrany)),l=s+p-Math.floor(.5+this.scaleFactor*(a.z+this.ptranz));f*f+i*i+p*p<t*t+o*o+l*l&&(this.vpAtomID[u]=e.serial)}}else this.vpBits[u]|=this.ISDONE,this.vpAtomID[u]=e.serial}}i++}}buildboundary(){let e=this.pWidth*this.pHeight;for(let t=0;t<this.pLength;t++)for(let i=0;i<this.pHeight;i++)for(let r=0;r<this.pWidth;r++){let n=t*e+r*this.pHeight+i;if(this.vpBits[n]&this.INOUT){let s=0;for(;s<26;){let a=t+this.nb[s][0],o=i+this.nb[s][2],l=r+this.nb[s][1];if(a>-1&&a<this.pLength&&l>-1&&l<this.pWidth&&o>-1&&o<this.pHeight&&!(this.vpBits[a*e+l*this.pHeight+o]&this.INOUT)){this.vpBits[n]|=this.ISBOUND;break}s++}}}}fastdistancemap(){let e,t=new PointGrid(this.pLength,this.pWidth,this.pHeight),i=this.pWidth*this.pHeight,r=this.cutRadius*this.cutRadius,n=[],s=[];for(let r=0;r<this.pLength;r++)for(let s=0;s<this.pWidth;s++)for(let a=0;a<this.pHeight;a++)if(e=r*i+s*this.pHeight+a,this.vpBits[e]&=~this.ISDONE,this.vpBits[e]&this.INOUT&&this.vpBits[e]&this.ISBOUND){let i={ix:r,iy:s,iz:a};t.set(r,s,a,i),n.push(i),this.vpDistance[e]=0,this.vpBits[e]|=this.ISDONE,this.vpBits[e]&=~this.ISBOUND}do{s=this.fastoneshell(n,t),n=[];for(let t=0,a=s.length;t<a;t++)e=i*s[t].ix+this.pHeight*s[t].iy+s[t].iz,this.vpBits[e]&=~this.ISBOUND,this.vpDistance[e]<=1.0404*r&&n.push({ix:s[t].ix,iy:s[t].iy,iz:s[t].iz})}while(0!==n.length);n=[],s=[],t=null;let a=this.scaleFactor-.5;a<0&&(a=0);let o=r-.5/(.1+a);for(let t=0;t<this.pLength;t++)for(let r=0;r<this.pWidth;r++)for(let n=0;n<this.pHeight;n++)e=t*i+r*this.pHeight+n,this.vpBits[e]&=~this.ISBOUND,this.vpBits[e]&this.INOUT&&(this.vpBits[e]&this.ISDONE&&!(this.vpBits[e]&this.ISDONE&&this.vpDistance[e]>=o)||(this.vpBits[e]|=this.ISBOUND))}fastoneshell(e,t){let i,r,n,s,a,o,l,h,c,d=[];if(0===e.length)return d;let u={ix:-1,iy:-1,iz:-1},f=this.pWidth*this.pHeight;for(let p=0,m=e.length;p<m;p++){i=e[p].ix,r=e[p].iy,n=e[p].iz,h=t.get(i,r,n);for(let e=0;e<6;e++)u.ix=i+this.nb[e][0],u.iy=r+this.nb[e][1],u.iz=n+this.nb[e][2],u.ix<this.pLength&&u.ix>-1&&u.iy<this.pWidth&&u.iy>-1&&u.iz<this.pHeight&&u.iz>-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l<this.vpDistance[c]&&(t.set(u.ix,u.iy,u.iz,h),this.vpDistance[c]=l,this.vpBits[c]&this.ISBOUND||(this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})))))}for(let p=0,m=e.length;p<m;p++){i=e[p].ix,r=e[p].iy,n=e[p].iz,h=t.get(i,r,n);for(let e=6;e<18;e++)u.ix=i+this.nb[e][0],u.iy=r+this.nb[e][1],u.iz=n+this.nb[e][2],u.ix<this.pLength&&u.ix>-1&&u.iy<this.pWidth&&u.iy>-1&&u.iz<this.pHeight&&u.iz>-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l<this.vpDistance[c]&&(t.set(u.ix,u.iy,u.iz,h),this.vpDistance[c]=l,this.vpBits[c]&this.ISBOUND||(this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})))))}for(let p=0,m=e.length;p<m;p++){i=e[p].ix,r=e[p].iy,n=e[p].iz,h=t.get(i,r,n);for(let e=18;e<26;e++)u.ix=i+this.nb[e][0],u.iy=r+this.nb[e][1],u.iz=n+this.nb[e][2],u.ix<this.pLength&&u.ix>-1&&u.iy<this.pWidth&&u.iy>-1&&u.iz<this.pHeight&&u.iz>-1&&(c=u.ix*f+this.pHeight*u.iy+u.iz,this.vpBits[c]&this.INOUT&&!(this.vpBits[c]&this.ISDONE)?(t.set(u.ix,u.iy,n+this.nb[e][2],h),s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,this.vpDistance[c]=l,this.vpBits[c]|=this.ISDONE,this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})):this.vpBits[c]&this.INOUT&&this.vpBits[c]&this.ISDONE&&(s=u.ix-h.ix,a=u.iy-h.iy,o=u.iz-h.iz,l=s*s+a*a+o*o,l<this.vpDistance[c]&&(t.set(u.ix,u.iy,u.iz,h),this.vpDistance[c]=l,this.vpBits[c]&this.ISBOUND||(this.vpBits[c]|=this.ISBOUND,d.push({ix:u.ix,iy:u.iy,iz:u.iz})))))}return d}marchingcubeinit(e){for(let t=0,i=this.vpBits.length;t<i;t++)1==e?this.vpBits[t]&=~this.ISBOUND:4==e?(this.vpBits[t]&=~this.ISDONE,this.vpBits[t]&this.ISBOUND&&(this.vpBits[t]|=this.ISDONE),this.vpBits[t]&=~this.ISBOUND):2==e?this.vpBits[t]&this.ISBOUND&&this.vpBits[t]&this.ISDONE?this.vpBits[t]&=~this.ISBOUND:this.vpBits[t]&this.ISBOUND&&!(this.vpBits[t]&this.ISDONE)&&(this.vpBits[t]|=this.ISDONE):3==e&&(this.vpBits[t]&=~this.ISBOUND)}marchingcube(e){this.marchingcubeinit(e),this.verts=[],this.faces=[],ProteinSurface.MarchingCube.march(this.vpBits,this.verts,this.faces,{smooth:1,nX:this.pLength,nY:this.pWidth,nZ:this.pHeight});let t=this.pWidth*this.pHeight;for(let e=0,i=this.verts.length;e<i;e++)this.verts[e].atomid=this.vpAtomID[this.verts[e].x*t+this.pHeight*this.verts[e].y+this.verts[e].z];ProteinSurface.MarchingCube.laplacianSmooth(1,this.verts,this.faces)}}ProteinSurface.MarchingCube=new MarchingCubeInitializer;var Ue=i(848);class GLShape{static finalizeGeo(e){var t=e.updateGeoGroup(0);t.vertices>0&&t.truncateArrayBuffers(!0,!0)}static updateColor(e,t){var i,r,n;t=t||h.CC.color(t),e.colorsNeedUpdate=!0,t.constructor!==Array&&(i=t.r,r=t.g,n=t.b);for(let s in e.geometryGroups){let a=e.geometryGroups[s],o=a.colorArray;for(let e=0,s=a.vertices;e<s;++e){if(t.constructor===Array){let s=t[e];i=s.r,r=s.g,n=s.b}o[3*e]=i,o[3*e+1]=r,o[3*e+2]=n}}}static drawArrow(e,t,i){var r=i.start,n=i.end,s=i.radius,a=i.radiusRatio,h=i.mid,c=i.midpos;if(!r||!n)return;var d=t.updateGeoGroup(51),u=new l.Vector3(n.x,n.y,n.z).sub(r);if(c){let e=u.length();h=c>0?c/e:(e+c)/e}u.multiplyScalar(h);var f=new l.Vector3(r.x,r.y,r.z).add(u),p=u.clone().negate();let m=new l.Vector3(r.x,r.y,r.z);e.intersectionShape.cylinder.push(new o.Cylinder(m,f.clone(),s)),e.intersectionShape.sphere.push(new o.Sphere(m,s));var g=[];g[0]=u.clone(),Math.abs(g[0].x)>1e-4?g[0].y+=1:g[0].x+=1,g[0].cross(u),g[0].normalize(),g[4]=g[0].clone(),g[4].crossVectors(g[0],u),g[4].normalize(),g[8]=g[0].clone().negate(),g[12]=g[4].clone().negate(),g[2]=g[0].clone().add(g[4]).normalize(),g[6]=g[4].clone().add(g[8]).normalize(),g[10]=g[8].clone().add(g[12]).normalize(),g[14]=g[12].clone().add(g[0]).normalize(),g[1]=g[0].clone().add(g[2]).normalize(),g[3]=g[2].clone().add(g[4]).normalize(),g[5]=g[4].clone().add(g[6]).normalize(),g[7]=g[6].clone().add(g[8]).normalize(),g[9]=g[8].clone().add(g[10]).normalize(),g[11]=g[10].clone().add(g[12]).normalize(),g[13]=g[12].clone().add(g[14]).normalize(),g[15]=g[14].clone().add(g[0]).normalize();var v,_,y,b,x,w,A,C,S,z,M,T,E,L,F,I,D,O,R,k,P,U,N=d.vertices,B=d.vertexArray,G=d.faceArray,V=d.normalArray,j=d.lineArray;for(_=0,y=g.length;_<y;++_){v=3*(N+3*_);var H=g[_].clone().multiplyScalar(s).add(r),W=g[_].clone().multiplyScalar(s).add(f),q=g[_].clone().multiplyScalar(s*a).add(f);if(B[v]=H.x,B[v+1]=H.y,B[v+2]=H.z,B[v+3]=W.x,B[v+4]=W.y,B[v+5]=W.z,B[v+6]=q.x,B[v+7]=q.y,B[v+8]=q.z,_>0){var Y=B[v-3],Z=B[v-2],X=B[v-1],K=new l.Vector3(Y,Z,X),Q=new l.Vector3(n.x,n.y,n.z),$=f.clone(),J=new l.Vector3(q.x,q.y,q.z);e.intersectionShape.triangle.push(new o.Triangle(J,Q,K)),e.intersectionShape.triangle.push(new o.Triangle(K.clone(),$,J.clone()))}}d.vertices+=48,B[v=3*d.vertices]=r.x,B[v+1]=r.y,B[v+2]=r.z,B[v+3]=f.x,B[v+4]=f.y,B[v+5]=f.z,B[v+6]=n.x,B[v+7]=n.y,B[v+8]=n.z,d.vertices+=3;var ee=d.vertices-3,te=d.vertices-2,ie=d.vertices-1,re=3*ee,ne=3*te,se=3*ie;for(_=0,y=g.length-1;_<y;++_){var ae=N+3*_;v=3*ae,x=d.faceidx,w=d.lineidx,E=3*(A=ae),L=3*(C=ae+1),F=3*(S=ae+2),I=3*(z=ae+4),D=3*(M=ae+5),O=3*(T=ae+3),R=k=g[_],P=U=g[_+1],V[E]=R.x,V[L]=k.x,V[O]=U.x,V[E+1]=R.y,V[L+1]=k.y,V[O+1]=U.y,V[E+2]=R.z,V[L+2]=k.z,V[O+2]=U.z,V[L]=k.x,V[I]=P.x,V[O]=U.x,V[L+1]=k.y,V[I+1]=P.y,V[O+1]=U.y,V[L+2]=k.z,V[I+2]=P.z,V[O+2]=U.z,V[F]=k.x,V[D]=P.x,V[F+1]=k.y,V[D+1]=P.y,V[F+2]=k.z,V[D+2]=P.z,G[x]=A,G[x+1]=C,G[x+2]=T,G[x+3]=C,G[x+4]=z,G[x+5]=T,G[x+6]=A,G[x+7]=T,G[x+8]=ee,G[x+9]=S,G[x+10]=te,G[x+11]=M,G[x+12]=S,G[x+13]=ie,G[x+14]=M,j[w]=A,j[w+1]=C,j[w+2]=A,j[w+3]=T,j[w+4]=z,j[w+5]=T,j[w+6]=A,j[w+7]=T,j[w+8]=S,j[w+9]=C,j[w+10]=S,j[w+11]=M,j[w+12]=z,j[w+13]=M,j[w+14]=S,j[w+15]=ie,j[w+16]=S,j[w+17]=M,j[w+18]=ie,j[w+19]=M,d.faceidx+=15,d.lineidx+=20}b=[N+45,N+46,N+1,N,N+47,N+2],x=d.faceidx,w=d.lineidx,E=3*(A=b[0]),L=3*(C=b[1]),F=3*(S=b[4]),I=3*(z=b[2]),D=3*(M=b[5]),O=3*(T=b[3]),R=k=g[15],P=U=g[0],V[E]=R.x,V[L]=k.x,V[O]=U.x,V[E+1]=R.y,V[L+1]=k.y,V[O+1]=U.y,V[E+2]=R.z,V[L+2]=k.z,V[O+2]=U.z,V[L]=k.x,V[I]=P.x,V[O]=U.x,V[L+1]=k.y,V[I+1]=P.y,V[O+1]=U.y,V[L+2]=k.z,V[I+2]=P.z,V[O+2]=U.z,V[F]=k.x,V[D]=P.x,V[F+1]=k.y,V[D+1]=P.y,V[F+2]=k.z,V[D+2]=P.z,u.normalize(),p.normalize(),V[re]=p.x,V[ne]=V[se]=u.x,V[re+1]=p.y,V[ne+1]=V[se+1]=u.y,V[re+2]=p.z,V[ne+2]=V[se+2]=u.z,G[x]=A,G[x+1]=C,G[x+2]=T,G[x+3]=C,G[x+4]=z,G[x+5]=T,G[x+6]=A,G[x+7]=T,G[x+8]=ee,G[x+9]=S,G[x+10]=te,G[x+11]=M,G[x+12]=S,G[x+13]=ie,G[x+14]=M,j[w]=A,j[w+1]=C,j[w+2]=A,j[w+3]=T,j[w+4]=z,j[w+5]=T,j[w+6]=A,j[w+7]=T,j[w+8]=S,j[w+9]=C,j[w+10]=S,j[w+11]=M,j[w+12]=z,j[w+13]=M,j[w+14]=S,j[w+15]=ie,j[w+16]=S,j[w+17]=M,j[w+18]=ie,j[w+19]=M,d.faceidx+=15,d.lineidx+=20}static updateBoundingFromPoints(e,t,i,r){e.center.set(0,0,0);let n=1/0,s=1/0,a=1/0,o=-1/0,l=-1/0,h=-1/0;e.box&&(n=e.box.min.x,o=e.box.max.x,s=e.box.min.y,l=e.box.max.y,a=e.box.min.z,h=e.box.max.z);for(let e=0,t=r;e<t;e++){var c=i[3*e],d=i[3*e+1],u=i[3*e+2];c<n&&(n=c),d<s&&(s=d),u<a&&(a=u),c>o&&(o=c),d>l&&(l=d),u>h&&(h=u)}e.center.set((o+n)/2,(l+s)/2,(h+a)/2),e.radius=e.center.distanceTo({x:o,y:l,z:h}),e.box={min:{x:n,y:s,z:a},max:{x:o,y:l,z:h}}}static addCustomGeo(e,t,i,r,n){var s,a,h,c,d,u,f,p,m,g=t.addGeoGroup(),v=i.vertexArr,_=i.normalArr,y=i.faceArr;g.vertices=v.length,g.faceidx=y.length;var b=g.vertexArray,x=g.colorArray;for(r.constructor!==Array&&(p=r.r,m=r.g,c=r.b),u=0,f=g.vertices;u<f;++u)s=3*u,a=v[u],b[s]=a.x,b[s+1]=a.y,b[s+2]=a.z,r.constructor===Array&&(p=(d=r[u]).r,m=d.g,c=d.b),x[s]=p,x[s+1]=m,x[s+2]=c;if(n)for(u=0,f=g.faceidx/3;u<f;++u){h=y[s=3*u],c=y[s+1],d=y[s+2];var w=new l.Vector3,A=new l.Vector3,C=new l.Vector3;e.intersectionShape.triangle.push(new o.Triangle(w.copy(v[h]),A.copy(v[c]),C.copy(v[d])))}if(n){var S=new l.Vector3(0,0,0),z=0;for(let e=0;e<t.geometryGroups.length;e++)S.add(t.geometryGroups[e].getCentroid()),z++;S.divideScalar(z),GLShape.updateBoundingFromPoints(e.boundingSphere,{centroid:S},b,g.vertices)}if(g.faceArray=new Uint16Array(y),g.truncateArrayBuffers(!0,!0),_.length<g.vertices)g.setNormals();else{var M,T=g.normalArray=new Float32Array(3*g.vertices);for(u=0,f=g.vertices;u<f;++u)s=3*u,M=_[u],T[s]=M.x,T[s+1]=M.y,T[s+2]=M.z}g.setLineIndices(),g.lineidx=g.lineArray.length}static updateFromStyle(e,t){void 0!==t.color?(e.color=t.color||new h.Color,t.color instanceof h.Color||(e.color=h.CC.color(t.color))):e.color=h.CC.color(0),e.wireframe=!!t.wireframe,e.opacity=t.alpha?(0,l.clamp)(t.alpha,0,1):1,void 0!==t.opacity&&(e.opacity=(0,l.clamp)(t.opacity,0,1)),e.side=void 0!==t.side?t.side:a.DoubleSide,e.linewidth=void 0===t.linewidth?1:t.linewidth,e.clickable=!!t.clickable,e.callback=(0,d.makeFunction)(t.callback),e.hoverable=!!t.hoverable,e.hover_callback=(0,d.makeFunction)(t.hover_callback),e.unhover_callback=(0,d.makeFunction)(t.unhover_callback),e.contextMenuEnabled=!!t.contextMenuEnabled,e.hidden=t.hidden,e.frame=t.frame}constructor(e){this.color=16777215,this.hidden=!1,this.wireframe=!1,this.opacity=1,this.linewidth=1,this.clickable=!1,this.hoverable=!1,this.contextMenuEnabled=!1,this.side=a.DoubleSide,this.stylespec=e||{},this.boundingSphere=new o.Sphere,this.intersectionShape={sphere:[],cylinder:[],line:[],triangle:[]},GLShape.updateFromStyle(this,this.stylespec),this.components=[],this.shapeObj=null,this.renderedShapeObj=null,this.geo=new a.Geometry(!0),this.linegeo=new a.Geometry(!0)}updateStyle(e){for(var t in e)this.stylespec[t]=e[t];if(GLShape.updateFromStyle(this,this.stylespec),e.voldata&&e.volscheme){(0,d.adjustVolumeStyle)(e);const t=e.volscheme,i=e.voldata,r=h.CC,n=t.range()||[-1,1];this.geo.setColors(function(e,s,a){let o=i.getVal(e,s,a);return r.color(t.valueToHex(o,n))}),delete this.color}}addCustom(e){e.vertexArr=e.vertexArr||[],e.faceArr=e.faceArr||[],e.normalArr=e.normalArr||[],GLShape.drawCustom(this,this.geo,e)}addSphere(e){e.center||(e.center=new l.Vector3(0,0,0)),e.radius=e.radius?(0,l.clamp)(e.radius,0,1/0):1.5,e.color=h.CC.color(e.color),this.intersectionShape.sphere.push(new o.Sphere(e.center,e.radius)),n.drawSphere(this.geo,e.center,e.radius,e.color,e.quality),this.components.push({centroid:new l.Vector3(e.center.x,e.center.y,e.center.z)});var t=this.geo.updateGeoGroup(0);GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,t.vertexArray,t.vertices)}addBox(e){var t,i,r,n=e.dimensions||{w:1,h:1,d:1};t="number"==typeof n.w?{x:n.w,y:0,z:0}:n.w,i="number"==typeof n.h?{x:0,y:n.h,z:0}:n.h,r="number"==typeof n.d?{x:0,y:0,z:n.d}:n.d;var s=e.corner;null==s&&(s=void 0!==e.center?{x:e.center.x-.5*(t.x+i.x+r.x),y:e.center.y-.5*(t.y+i.y+r.y),z:e.center.z-.5*(t.z+i.z+r.z)}:{x:0,y:0,z:0});var a=[{x:s.x,y:s.y,z:s.z},{x:s.x+t.x,y:s.y+t.y,z:s.z+t.z},{x:s.x+i.x,y:s.y+i.y,z:s.z+i.z},{x:s.x+t.x+i.x,y:s.y+t.y+i.y,z:s.z+t.z+i.z},{x:s.x+r.x,y:s.y+r.y,z:s.z+r.z},{x:s.x+t.x+r.x,y:s.y+t.y+r.y,z:s.z+t.z+r.z},{x:s.x+i.x+r.x,y:s.y+i.y+r.y,z:s.z+i.z+r.z},{x:s.x+t.x+i.x+r.x,y:s.y+t.y+i.y+r.y,z:s.z+t.z+i.z+r.z}],o=[],h=[];o.splice(o.length,0,a[0],a[1],a[2],a[3]),h.splice(h.length,0,0,2,1,1,2,3);var c=4;o.splice(o.length,0,a[2],a[3],a[6],a[7]),h.splice(h.length,0,c+0,c+2,c+1,c+1,c+2,c+3),c+=4,o.splice(o.length,0,a[4],a[5],a[0],a[1]),h.splice(h.length,0,c+0,c+2,c+1,c+1,c+2,c+3),c+=4,o.splice(o.length,0,a[6],a[7],a[4],a[5]),h.splice(h.length,0,c+0,c+2,c+1,c+1,c+2,c+3),c+=4,o.splice(o.length,0,a[3],a[1],a[7],a[5]),h.splice(h.length,0,c+0,c+2,c+1,c+1,c+2,c+3),c+=4,o.splice(o.length,0,a[2],a[6],a[0],a[4]),h.splice(h.length,0,c+0,c+2,c+1,c+1,c+2,c+3),c+=4;var u=(0,d.extend)({},e);u.vertexArr=o,u.faceArr=h,u.normalArr=[],GLShape.drawCustom(this,this.geo,u);var f=new l.Vector3;this.components.push({centroid:f.addVectors(a[0],a[7]).multiplyScalar(.5)});var p=this.geo.updateGeoGroup(0);GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,p.vertexArray,p.vertices)}addCylinder(e){var t,i;t=e.start?new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):new l.Vector3(0,0,0),e.end?void 0===(i=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0)).x&&(i.x=3):i=new l.Vector3(0,0,0);var r=e.radius||.1,s=h.CC.color(e.color);this.intersectionShape.cylinder.push(new o.Cylinder(t,i,r)),n.drawCylinder(this.geo,t,i,r,s,e.fromCap,e.toCap);var a=new l.Vector3;this.components.push({centroid:a.addVectors(t,i).multiplyScalar(.5)});var c=this.geo.updateGeoGroup(0);GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,c.vertexArray,c.vertices)}addDashedCylinder(e){var t,i;e.dashLength=e.dashLength||.25,e.gapLength=e.gapLength||.25,t=e.start?new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):new l.Vector3(0,0,0),e.end?void 0===(i=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0)).x&&(i.x=3):i=new l.Vector3(3,0,0);for(var r=e.radius||.1,s=h.CC.color(e.color),a=Math.sqrt(Math.pow(t.x-i.x,2)+Math.pow(t.y-i.y,2)+Math.pow(t.z-i.z,2)),c=a/(e.gapLength+e.dashLength),d=new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0),u=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0),f=new l.Vector3((i.x-t.x)/(a/e.gapLength),(i.y-t.y)/(a/e.gapLength),(i.z-t.z)/(a/e.gapLength)),p=new l.Vector3((i.x-t.x)/(a/e.dashLength),(i.y-t.y)/(a/e.dashLength),(i.z-t.z)/(a/e.dashLength)),m=0;m<c;m++)u=new l.Vector3(d.x+p.x,d.y+p.y,d.z+p.z),this.intersectionShape.cylinder.push(new o.Cylinder(d,u,r)),n.drawCylinder(this.geo,d,u,r,s,e.fromCap,e.toCap),d=new l.Vector3(u.x+f.x,u.y+f.y,u.z+f.z);var g=new l.Vector3;this.components.push({centroid:g.addVectors(t,i).multiplyScalar(.5)});var v=this.geo.updateGeoGroup(0);GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,v.vertexArray,v.vertices)}addCurve(e){e.points=e.points||[],e.smooth=e.smooth||10,void 0===e.fromCap&&(e.fromCap=2),void 0===e.toCap&&(e.toCap=2);var t=u(e.points,e.smooth);if(t.length<3)console.log("Too few points in addCurve");else{var i=e.radius||.1,r=h.CC.color(e.color),n=0,s=t.length-1,a=t[0].distanceTo(t[1]),o=Math.ceil(2*i/a);if(e.toArrow){let e={start:t[s-=o],end:t[t.length-1],radius:i,color:r,mid:1e-4};this.addArrow(e)}if(e.fromArrow){let e={start:t[n+=o],end:t[0],radius:i,color:r,mid:1e-4};this.addArrow(e)}for(var l=Math.ceil(t.length/2),c={radius:i,color:r,fromCap:2,toCap:2},d=n;d<s;d++)c.start=t[d],c.end=t[d+1],c.fromCap=2,c.toCap=2,d<l?(c.fromCap=2,c.toCap=0):d>l?(c.fromCap=0,c.toCap=2):(c.fromCap=2,c.toCap=2),this.addCylinder(c)}}addLine(e){var t,i;t=e.start?new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):new l.Vector3(0,0,0),e.end?void 0===(i=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0)).x&&(i.x=3):i=new l.Vector3(3,0,0);var r=this.geo.updateGeoGroup(2),n=r.vertices,s=3*n,a=r.vertexArray;a[s]=t.x,a[s+1]=t.y,a[s+2]=t.z,a[s+3]=i.x,a[s+4]=i.y,a[s+5]=i.z,r.vertices+=2;var o=r.lineArray,h=r.lineidx;o[h]=n,o[h+1]=n+1,r.lineidx+=2;var c=new l.Vector3;this.components.push({centroid:c.addVectors(t,i).multiplyScalar(.5)}),r=this.geo.updateGeoGroup(0),GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,r.vertexArray,r.vertices)}addArrow(e){if(e.start?e.start=new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):e.start=new l.Vector3(0,0,0),e.dir instanceof l.Vector3&&"number"==typeof e.length){var t=e.dir.clone().multiplyScalar(e.length).add(e.start);e.end=t}else e.end?(e.end=new l.Vector3(e.end.x,e.end.y||0,e.end.z||0),void 0===e.end.x&&(e.end.x=3)):e.end=new l.Vector3(3,0,0);e.radius=e.radius||.1,e.radiusRatio=e.radiusRatio||1.618034,e.mid=0<e.mid&&e.mid<1?e.mid:.618034,GLShape.drawArrow(this,this.geo,e);var i=new l.Vector3;this.components.push({centroid:i.addVectors(e.start,e.end).multiplyScalar(.5)});var r=this.geo.updateGeoGroup(0);GLShape.updateBoundingFromPoints(this.boundingSphere,this.components,r.vertexArray,r.vertices)}static distance_from(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)+Math.pow(e.z-t.z,2))}static inSelectedRegion(e,t,i){for(var r=0;r<t.length;r++)if(GLShape.distance_from(t[r],e)<=i)return!0;return!1}addIsosurface(e,t,i,r){var n,s,a=void 0!==t.isoval&&"number"==typeof t.isoval?t.isoval:0,o=!!t.voxel,h=void 0===t.smoothness?1:t.smoothness,c=e.size.x,d=e.size.y,u=e.size.z,f=new Int16Array(c*d*u),p=e.data;for(n=0,s=f.length;n<s;++n)f[n]=-1;var m=new Uint8Array(c*d*u);for(n=0,s=p.length;n<s;++n)(a>=0?p[n]-a:a-p[n])>0&&(m[n]|=GLShape.ISDONE);var g=[],v=[];MarchingCube.march(m,g,v,{fulltable:!0,voxel:o,unitCube:e.unit,origin:e.origin,matrix:e.matrix,nX:c,nY:d,nZ:u}),!o&&h>0&&MarchingCube.laplacianSmooth(h,g,v);var _=[],y=[],b=[];if(t.selectedRegion&&void 0===t.coords&&(t.coords=t.selectedRegion),void 0===t.coords&&void 0!==t.selection&&(r?t.coords=r.selectedAtoms(t.selection):console.log("addIsosurface needs viewer is selection provided.")),void 0!==t.coords){var x=t.coords[0].x,w=t.coords[0].y,A=t.coords[0].z,C=t.coords[0].x,S=t.coords[0].y,z=t.coords[0].z;for(let e=0;e<t.coords.length;e++)t.coords[e].x>x?x=t.coords[e].x:t.coords[e].x<C&&(C=t.coords[e].x),t.coords[e].y>w?w=t.coords[e].y:t.coords[e].y<S&&(S=t.coords[e].y),t.coords[e].z>A?A=t.coords[e].z:t.coords[e].z<z&&(z=t.coords[e].z);var M=2;void 0!==t.radius&&(M=t.radius),void 0!==t.selectedOffset&&(M=t.selectedOffset),void 0!==t.seldist&&(M=t.seldist),C-=M,x+=M,S-=M,w+=M,z-=M,A+=M;for(let e=0;e<g.length;e++)g[e].x>C&&g[e].x<x&&g[e].y>S&&g[e].y<w&&g[e].z>z&&g[e].z<A&&GLShape.inSelectedRegion(g[e],t.coords,M)?(_.push(y.length),y.push(g[e])):_.push(-1);for(let e=0;e+2<v.length;e+=3)-1!==_[v[e]]&&-1!==_[v[e+1]]&&-1!==_[v[e+2]]&&(b.push(v[e]-(v[e]-_[v[e]])),b.push(v[e+1]-(v[e+1]-_[v[e+1]])),b.push(v[e+2]-(v[e+2]-_[v[e+2]])));g=y,v=b}GLShape.drawCustom(this,this.geo,{vertexArr:g,faceArr:v,normalArr:[],clickable:t.clickable,hoverable:t.hoverable}),this.updateStyle(t);var T=new l.Vector3(e.origin.x,e.origin.y,e.origin.z),E=new l.Vector3(e.size.x*e.unit.x,e.size.y*e.unit.y,e.size.z*e.unit.z),L=new l.Vector3(0,0,0),F=T.clone(),I=T.clone().add(E);for(let e=0;e<g.length;e++)L.add(g[e]),F.max(g[e]),I.min(g[e]);L.divideScalar(g.length);var D=L.distanceTo(I),O=L.distanceTo(F);this.boundingSphere.center=L,this.boundingSphere.radius=Math.max(D,O),"function"==typeof i&&i()}addVolumetricData(e,t,i){e=new Ue.VolumeData(e,t),this.addIsosurface(e,i)}finalize(){return GLShape.finalizeGeo(this.geo),this.geo.initTypedArrays(),this.geo}globj(e){if(this.renderedShapeObj&&(e.remove(this.renderedShapeObj),this.renderedShapeObj=null),!this.hidden){GLShape.finalizeGeo(this.geo),this.geo.initTypedArrays(),this.wireframe&&this.geo.setUpWireframe(),void 0!==this.color&&GLShape.updateColor(this.geo,this.color),this.shapeObj=new a.Object3D;var t=null;t=this.side==a.DoubleSide?new a.MeshDoubleLambertMaterial({wireframe:this.wireframe,side:this.side,transparent:this.opacity<1,opacity:this.opacity,wireframeLinewidth:this.linewidth,vertexColors:a.Coloring.VertexColors}):new a.MeshLambertMaterial({wireframe:this.wireframe,side:this.side,transparent:this.opacity<1,opacity:this.opacity,wireframeLinewidth:this.linewidth,vertexColors:a.Coloring.VertexColors});var i=new a.Mesh(this.geo,t);if(this.shapeObj.add(i),this.linegeo&&this.linegeo.vertices>0){var r=new a.LineBasicMaterial({linewidth:this.linewidth,color:this.color}),n=new a.Line(this.linegeo,r,a.LineStyle.LinePieces);this.shapeObj.add(n)}this.renderedShapeObj=this.shapeObj.clone(),e.add(this.renderedShapeObj)}}removegl(e){this.renderedShapeObj&&(void 0!==this.renderedShapeObj.geometry&&this.renderedShapeObj.geometry.dispose(),void 0!==this.renderedShapeObj.material&&this.renderedShapeObj.material.dispose(),e.remove(this.renderedShapeObj),this.renderedShapeObj=null),this.shapeObj=null}get position(){return this.boundingSphere.center}get x(){return this.boundingSphere.center.x}get y(){return this.boundingSphere.center.y}get z(){return this.boundingSphere.center.z}}function Ne(e){if(e.vertexArr.length<64e3)return[e];var t=[{vertexArr:[],normalArr:[],faceArr:[]}];e.colorArr&&(t.colorArr=[]);var i=[],r=[],n=0,s=e.faceArr;for(let o=0,l=s.length;o<l;o+=3){let l=t[n];for(let t=0;t<3;t++){var a=s[o+t];i[a]!==n&&(i[a]=n,r[a]=l.vertexArr.length,l.vertexArr.push(e.vertexArr[a]),e.normalArr&&e.normalArr[a]&&l.normalArr.push(e.normalArr[a]),e.colorArr&&e.colorArr[a]&&l.colorArr.push(e.colorArr[a])),l.faceArr.push(r[a])}l.vertexArr.length>=64e3&&(t.push({vertexArr:[],normalArr:[],faceArr:[]}),e.colorArr&&(t.colorArr=[]),n++)}return t}GLShape.ISDONE=2,GLShape.drawCustom=function(e,t,i){var r=i,n=r.vertexArr,s=r.faceArr;0!==n.length&&0!==s.length||console.warn("Error adding custom shape component: No vertices and/or face indices supplied!");var a=i.color;void 0===a&&(a=e.color),a=h.CC.color(a);for(var o=Ne(r),l=0,c=o.length;l<c;l++)GLShape.addCustomGeo(e,t,o[l],o[l].colorArr?o[l].colorArr:a,i.clickable)};let Be=0;function Ge(e,t,i){var r=i;return void 0!==e&&(e instanceof h.Color?r=e.scaled():void 0!==(r=h.CC.color(e)).scaled&&(r=r.scaled())),void 0!==t&&(r.a=parseFloat(t)),r}class Label{constructor(e,t){this.id=Be++,this.stylespec=t||{},this.canvas=document.createElement("canvas"),this.canvas.width=134,this.canvas.height=35,this.context=this.canvas.getContext("2d"),this.sprite=new a.Sprite,this.text=e,this.frame=this.stylespec.frame}getStyle(){return this.stylespec}hide(){this.sprite&&(this.sprite.visible=!1)}show(){this.sprite&&(this.sprite.visible=!0)}setContext(){var e=this.stylespec,t=void 0!==e.useScreen&&e.useScreen,i=e.showBackground;"0"!==i&&"false"!==i||(i=!1),void 0===i&&(i=!0);var r=e.font?e.font:"sans-serif",n=parseInt(e.fontSize)?parseInt(e.fontSize):18,s=Ge(e.fontColor,e.fontOpacity,{r:255,g:255,b:255,a:1}),o=e.padding?e.padding:4,l=e.borderThickness?e.borderThickness:0,h=Ge(e.backgroundColor,e.backgroundOpacity,{r:0,g:0,b:0,a:1}),d=Ge(e.borderColor,e.borderOpacity,h),u=e.position?e.position:{x:-10,y:1,z:1},f=void 0===e.inFront||e.inFront;"false"!==f&&"0"!==f||(f=!1);var p=e.alignment||a.SpriteAlignment.topLeft;"string"==typeof p&&p in a.SpriteAlignment&&(p=a.SpriteAlignment[p]);var m="";e.bold&&(m="bold "),this.context.font=m+n+"px "+r;var g=this.context.measureText(this.text).width;i||(l=0);var v=g+2.5*l+2*o,_=1.25*n+2*l+2*o;if(e.backgroundImage){var y=e.backgroundImage,b=e.backgroundWidth?e.backgroundWidth:y.width,x=e.backgroundHeight?e.backgroundHeight:y.height;b>v&&(v=b),x>_&&(_=x)}if(this.canvas.width=v,this.canvas.height=_,this.context.clearRect(0,0,this.canvas.width,this.canvas.height),m="",e.bold&&(m="bold "),this.context.font=m+n+"px "+r,this.context.fillStyle="rgba("+h.r+","+h.g+","+h.b+","+h.a+")",this.context.strokeStyle="rgba("+d.r+","+d.g+","+d.b+","+d.a+")",e.backgroundGradient){let t=this.context.createLinearGradient(0,_/2,v,_/2),i=c.Gradient.getGradient(e.backgroundGradient),r=i.range(),n=-1,s=1;r&&(n=r[0],s=r[1]);let a=s-n;for(let e=0;e<1.01;e+=.1){let r=Ge(i.valueToHex(n+a*e)),s="rgba("+r.r+","+r.g+","+r.b+","+r.a+")";t.addColorStop(e,s)}this.context.fillStyle=t}this.context.lineWidth=l,i&&function(e,t,i,r,n,s,a){e.beginPath(),e.moveTo(t+s,i),e.lineTo(t+r-s,i),e.quadraticCurveTo(t+r,i,t+r,i+s),e.lineTo(t+r,i+n-s),e.quadraticCurveTo(t+r,i+n,t+r-s,i+n),e.lineTo(t+s,i+n),e.quadraticCurveTo(t,i+n,t,i+n-s),e.lineTo(t,i+s),e.quadraticCurveTo(t,i,t+s,i),e.closePath(),e.fill(),a&&e.stroke()}(this.context,l,l,v-2*l,_-2*l,6,l>0),e.backgroundImage&&this.context.drawImage(y,0,0,v,_),this.context.fillStyle="rgba("+s.r+","+s.g+","+s.b+","+s.a+")",this.context.fillText(this.text,l+o,n+l+o,g);var w=new a.Texture(this.canvas);w.needsUpdate=!0,this.sprite.material=new a.SpriteMaterial({map:w,useScreenCoordinates:t,alignment:p,depthTest:!f,screenOffset:e.screenOffset||null}),this.sprite.scale.set(1,1,1),this.sprite.position.set(u.x,u.y,u.z)}dispose(){void 0!==this.sprite.material.map&&this.sprite.material.map.dispose(),void 0!==this.sprite.material&&this.sprite.material.dispose()}}class GLVolumetricRender{static interpolateArray(e,t){function i(e,t,i){return e+(t-e)*i}var r=[],n=(e.length-1)/(t-1);r[0]=e[0];for(var s=1;s<t-1;s++){var a=s*n,o=Math.floor(a),l=Math.ceil(a),h=a-o;r[s]=i(e[o],e[l],h)}return r[t-1]=e[e.length-1],r}constructor(e,t,i){this.hidden=!1,this.boundingSphere=new o.Sphere,this.renderedShapeObj=null,this.shapeObj=null,this.subsamples=5,this.data=null,this.transferfunctionbuffer=[],this.min=0,this.max=0,t=t||{};var r,n,s,a,c,d,u,f,p,m,g=Object.assign([],t.transferfn);this.subsamples=t.subsamples||5,g.forEach(function(e){e.value=parseFloat(e.value)}),g.sort(function(e,t){return e.value-t.value}),this.min=g[0].value,0==g.length&&g.push(g[0]),this.max=g[g.length-1].value;for(let e=0;e<g.length-1;e++)if(s=h.CC.color(g[e].color),a=h.CC.color(g[e+1].color),p=g[e].opacity,m=g[e+1].opacity,(r=Math.floor(256*(g[e].value-this.min)/(this.max-this.min)))!=(n=Math.floor(256*(g[e+1].value-this.min)/(this.max-this.min)))){c=GLVolumetricRender.interpolateArray([255*s.r,255*a.r],n-r),d=GLVolumetricRender.interpolateArray([255*s.g,255*a.g],n-r),u=GLVolumetricRender.interpolateArray([255*s.b,255*a.b],n-r),f=GLVolumetricRender.interpolateArray([255*p,255*m],n-r);for(let e=0;e<c.length;e++)this.transferfunctionbuffer.push(c[e]),this.transferfunctionbuffer.push(d[e]),this.transferfunctionbuffer.push(u[e]),this.transferfunctionbuffer.push(f[e])}if(this.transferfunctionbuffer=new Uint8ClampedArray(this.transferfunctionbuffer),e.matrix){let t=new l.Vector3(0,0,0),i=new l.Vector3(e.size.x,e.size.y,e.size.z),r=new l.Vector3(1,1,1);t.applyMatrix4(e.matrix),i.applyMatrix4(e.matrix),r.applyMatrix4(e.matrix).sub(t),this.extent=[[t.x,t.y,t.z],[i.x,i.y,i.z]];for(let t=1;t<7;t++)i.x=1&t?e.size.x:0,i.y=2&t?e.size.y:0,i.z=4&t?e.size.z:0,i.applyMatrix4(e.matrix),this.extent[0][0]=Math.min(this.extent[0][0],i.x),this.extent[0][1]=Math.min(this.extent[0][1],i.y),this.extent[0][2]=Math.min(this.extent[0][2],i.z),this.extent[1][0]=Math.max(this.extent[1][0],i.x),this.extent[1][1]=Math.max(this.extent[1][1],i.y),this.extent[1][2]=Math.max(this.extent[1][2],i.z);let n=i.x-t.x,s=i.y-t.y,a=i.z-t.z;this.maxdepth=Math.sqrt(n*n+s*s+a*a),this.minunit=Math.min(Math.min(r.x,r.y),r.z),this.texmatrix=(new l.Matrix4).identity().scale({x:e.size.x,y:e.size.y,z:e.size.z}),this.texmatrix=this.texmatrix.multiplyMatrices(e.matrix,this.texmatrix),this.texmatrix=this.texmatrix.getInverse(this.texmatrix)}else{this.texmatrix=(new l.Matrix4).identity();let t=e.unit.x*e.size.x,i=e.unit.y*e.size.y,r=e.unit.z*e.size.z;this.texmatrix.makeTranslation(-e.origin.x/t,-e.origin.y/i,-e.origin.z/r),this.texmatrix.scale({x:1/t,y:1/i,z:1/r}),this.minunit=Math.min(Math.min(e.unit.x,e.unit.y),e.unit.z),this.extent=[[e.origin.x,e.origin.y,e.origin.z],[e.origin.x+t,e.origin.y+i,e.origin.z+r]],this.maxdepth=Math.sqrt(t*t+i*i+r*r)}var v=new GLShape({});if(v.addBox({corner:{x:this.extent[0][0],y:this.extent[0][1],z:this.extent[0][2]},dimensions:{w:this.extent[1][0]-this.extent[0][0],h:this.extent[1][1]-this.extent[0][1],d:this.extent[1][2]-this.extent[0][2]}}),this.geo=v.finalize(),this.boundingSphere.center=new l.Vector3((this.extent[0][0]+this.extent[1][0])/2,(this.extent[0][1]+this.extent[1][1])/2,(this.extent[0][2]+this.extent[1][2])/2),this.boundingSphere.radius=this.maxdepth/2,void 0===t.coords&&void 0!==t.selection&&(i?t.coords=i.selectedAtoms(t.selection):console.log("Need to provide viewer to volumetric renderer if selection specified.")),void 0!==t.coords&&void 0!==t.seldist){let i=new Uint8Array(e.data.length),r=t.seldist,n=r*r;for(let s=0,a=t.coords.length;s<a;s++){let a=t.coords[s],o=a.x-r,l=a.y-r,h=a.z-r,c=a.x+r,d=a.y+r,u=a.z+r;if(e.getIndex(o,l,h)>=0||e.getIndex(c,d,u)>=0)for(let t=o;t<c;t+=this.minunit)for(let r=l;r<d;r+=this.minunit)for(let s=h;s<u;s+=this.minunit){let o=e.getIndex(t,r,s);o>=0&&!i[o]&&(t-a.x)*(t-a.x)+(r-a.y)*(r-a.y)+(s-a.z)*(s-a.z)<n&&(i[o]=1)}}for(let t=0,r=e.data.length;t<r;t++)0==i[t]&&(e.data[t]=1/0)}this.data=e}globj(e){if(this.renderedShapeObj&&(e.remove(this.renderedShapeObj),this.renderedShapeObj=null),!this.hidden){this.shapeObj=new a.Object3D;var t,i=new a.Texture(this.data,!0),r=new a.Texture(this.transferfunctionbuffer,!1);i.needsUpdate=!0,r.needsUpdate=!0,r.flipY=!1,t=new a.VolumetricMaterial({transferfn:r,transfermin:this.min,transfermax:this.max,map:i,extent:this.extent,maxdepth:this.maxdepth,texmatrix:this.texmatrix,unit:this.minunit,subsamples:this.subsamples});var n=new a.Mesh(this.geo,t);this.shapeObj.add(n),this.renderedShapeObj=this.shapeObj.clone(),e.add(this.renderedShapeObj)}}removegl(e){this.renderedShapeObj&&(void 0!==this.renderedShapeObj.geometry&&this.renderedShapeObj.geometry.dispose(),void 0!==this.renderedShapeObj.material&&this.renderedShapeObj.material.dispose(),e.remove(this.renderedShapeObj),this.renderedShapeObj=null),this.shapeObj=null}get position(){return this.boundingSphere.center}get x(){return this.boundingSphere.center.x}get y(){return this.boundingSphere.center.y}get z(){return this.boundingSphere.center.z}}const Ve=16;class Surface extends Array{constructor(e){super(...e)}getSymmetries(){if(0==this.length)return[];let e=this[0];return void 0===e.symmetries&&this.setSymmetries([new l.Matrix4]),e.symmetries}setSymmetries(e){void 0===e&&(e=[new l.Matrix4]);for(let t of this)t.symmetries=e,t.finished=!1}}class GLViewer{getWidth(){let e=this.container,t=e.offsetWidth;if(0==t&&"none"===e.style.display){let i=e.style.position,r=e.style.visibility;e.style.display="block",e.style.visibility="hidden",e.style.position="absolute",t=e.offsetWidth,e.style.display="none",e.style.visibility=r,e.style.position=i}return t}getHeight(){let e=this.container,t=e.offsetHeight;if(0==t&&"none"===e.style.display){let i=e.style.position,r=e.style.visibility;e.style.display="block",e.style.visibility="hidden",e.style.position="absolute",t=e.offsetHeight,e.style.display="none",e.style.visibility=r,e.style.position=i}return t}setupRenderer(){let e=Object.assign(Object.assign({},this.config),{preserveDrawingBuffer:!0,premultipliedAlpha:!1,containerWidth:this.WIDTH,containerHeight:this.HEIGHT});this.renderer=new a.Renderer(e),this.renderer.domElement.style.width="100%",this.renderer.domElement.style.height="100%",this.renderer.domElement.style.padding="0",this.renderer.domElement.style.position="absolute",this.renderer.domElement.style.top="0px",this.renderer.domElement.style.left="0px",this.renderer.domElement.style.zIndex="0"}initializeScene(){this.scene=new a.Scene,this.scene.fog=new a.Fog(this.bgColor,100,200),this.modelGroup=new a.Object3D,this.rotationGroup=new a.Object3D,this.rotationGroup.useQuaternion=!0,this.rotationGroup.quaternion=new l.Quaternion(0,0,0,1),this.rotationGroup.add(this.modelGroup),this.scene.add(this.rotationGroup);var e=new a.Light(16777215);e.position=new l.Vector3(.2,.2,1).normalize(),e.intensity=1,this.scene.add(e)}_handleLostContext(e){const t=function(e){const t=e.getBoundingClientRect();return!(t.right<0||t.bottom<0||t.top>(window.innerHeight||document.documentElement.clientHeight)||t.left>(window.innerWidth||document.documentElement.clientWidth))};if(t(this.container)){let e=0;for(let i of document.getElementsByTagName("canvas"))if(t(i)&&null!=i._3dmol_viewer&&(i._3dmol_viewer.resize(),e+=1,e>=Ve))break}}initContainer(e){this.container=e,this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight(),this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.renderer.setSize(this.WIDTH,this.HEIGHT),this.container.append(this.renderer.domElement),this.glDOM=this.renderer.domElement,this.glDOM._3dmol_viewer=this,this.glDOM.addEventListener("webglcontextlost",this._handleLostContext.bind(this)),this.nomouse||(this.glDOM.addEventListener("mousedown",this._handleMouseDown.bind(this),{passive:!1}),this.glDOM.addEventListener("touchstart",this._handleMouseDown.bind(this),{passive:!1}),this.glDOM.addEventListener("wheel",this._handleMouseScroll.bind(this),{passive:!1}),this.glDOM.addEventListener("mousemove",this._handleMouseMove.bind(this),{passive:!1}),this.glDOM.addEventListener("touchmove",this._handleMouseMove.bind(this),{passive:!1}),this.glDOM.addEventListener("contextmenu",this._handleContextMenu.bind(this),{passive:!1}))}decAnim(){this.animated--,this.animated<0&&(this.animated=0)}incAnim(){this.animated++}nextSurfID(){var e=0;for(let i in this.surfaces)if(this.surfaces.hasOwnProperty(i)){var t=parseInt(i);isNaN(t)||t>e&&(e=t)}return e+1}setSlabAndFog(){let e=this.camera.position.z-this.rotationGroup.position.z;e<1&&(e=1),this.camera.near=e+this.slabNear,!this.camera.ortho&&this.camera.near<1&&(this.camera.near=1),this.camera.far=e+this.slabFar,this.camera.near+1>this.camera.far&&(this.camera.far=this.camera.near+1),this.camera.fov=this.fov,this.camera.right=e*Math.tan(Math.PI/180*this.fov),this.camera.left=-this.camera.right,this.camera.top=this.camera.right/this.ASPECT,this.camera.bottom=-this.camera.top,this.camera.updateProjectionMatrix(),this.scene.fog.near=this.camera.near+this.fogStart*(this.camera.far-this.camera.near),this.scene.fog.far=this.camera.near+this.fogEnd*(this.camera.far-this.camera.near),this.config.disableFog&&(this.scene.fog.near=this.scene.fog.far)}show(e){if(this.renderer.setViewport(),this.scene&&(this.setSlabAndFog(),this.renderer.render(this.scene,this.camera),this.viewChangeCallback&&this.viewChangeCallback(this._viewer.getView()),!e&&this.linkedViewers.length>0))for(var t=this._viewer.getView(),i=0;i<this.linkedViewers.length;i++)this.linkedViewers[i].setView(t,!0)}updateClickables(){this.clickables.splice(0,this.clickables.length),this.hoverables.splice(0,this.hoverables.length),this.contextMenuEnabledObjects.splice(0,this.contextMenuEnabledObjects.length);for(let e=0,t=this.models.length;e<t;e++){let t=this.models[e];if(t){let e=t.selectedAtoms({clickable:!0}),i=t.selectedAtoms({hoverable:!0}),r=t.selectedAtoms({contextMenuEnabled:!0});for(let e=0;e<i.length;e++)this.hoverables.push(i[e]);for(let t=0;t<e.length;t++)this.clickables.push(e[t]);for(let e=0;e<r.length;e++)this.contextMenuEnabledObjects.push(r[e])}}for(let e=0,t=this.shapes.length;e<t;e++){let t=this.shapes[e];t&&t.clickable&&this.clickables.push(t),t&&t.hoverable&&this.hoverables.push(t),t&&t.contextMenuEnabled&&this.contextMenuEnabledObjects.push(t)}}handleClickSelection(e,t,i){let r=this.targetedObjects(e,t,this.clickables);if(r.length){var n=r[0].clickable;void 0!==n.callback&&("function"!=typeof n.callback&&(n.callback=(0,d.makeFunction)(n.callback)),"function"==typeof n.callback)&&(3===this.mouseButton&&this.contextMenuEnabledObjects.includes(n)&&this.userContextMenuHandler||n.callback(n,this._viewer,i,this.container,r))}}canvasOffset(){let e=this.glDOM,t=e.getBoundingClientRect(),i=e.ownerDocument,r=i.documentElement,n=i.defaultView;return{top:t.top+n.pageYOffset-r.clientTop,left:t.left+n.pageXOffset-r.clientLeft}}setHover(e,t,i){e&&e.hidden&&(e=null),this.current_hover!=e&&(this.current_hover&&("function"!=typeof this.current_hover.unhover_callback&&(this.current_hover.unhover_callback=(0,d.makeFunction)(this.current_hover.unhover_callback)),this.current_hover.unhover_callback(this.current_hover,this._viewer,t,this.container,i)),this.current_hover=e,e&&void 0!==e.hover_callback&&("function"!=typeof e.hover_callback&&(e.hover_callback=(0,d.makeFunction)(e.hover_callback)),"function"==typeof e.hover_callback&&e.hover_callback(e,this._viewer,t,this.container,i)))}handleHoverSelection(e,t,i){if(0==this.hoverables.length)return;let r=this.targetedObjects(e,t,this.hoverables);if(r.length){var n=r[0].clickable;this.setHover(n,i,r),this.current_hover=n}else this.setHover(null)}handleHoverContinue(e,t){let i=this.targetedObjects(e,t,this.hoverables);0!=i.length&&void 0!==i[0]||this.setHover(null),void 0!==i[0]&&i[0].clickable!==this.current_hover&&this.setHover(null)}closeEnoughForClick(e,{allowTolerance:t=e.targetTouches,tolerance:i=5}={}){const r=this.getX(e),n=this.getY(e);if(t){const e=Math.abs(r-this.mouseStartX),t=Math.abs(n-this.mouseStartY);return e<=i&&t<=i}return r===this.mouseStartX&&n===this.mouseStartY}calcTouchDistance(e){var t=e.targetTouches[0].pageX-e.targetTouches[1].pageX,i=e.targetTouches[0].pageY-e.targetTouches[1].pageY;return Math.hypot(t,i)}getX(e){var t=e.pageX;return null==t&&(t=e.pageX),e.targetTouches&&e.targetTouches[0]?t=e.targetTouches[0].pageX:e.changedTouches&&e.changedTouches[0]&&(t=e.changedTouches[0].pageX),t}getY(e){var t=e.pageY;return null==t&&(t=e.pageY),e.targetTouches&&e.targetTouches[0]?t=e.targetTouches[0].pageY:e.changedTouches&&e.changedTouches[0]&&(t=e.changedTouches[0].pageY),t}isInViewer(e,t){if(null!=this.viewers){var i=this.WIDTH/this.cols,r=this.HEIGHT/this.rows,n=this.canvasOffset(),s=e-n.left,a=t-n.top,o=this.rows-Math.floor(a/r)-1,l=Math.floor(s/i);if(o!=this.row||l!=this.col)return!1}return!0}adjustZoomToLimits(e){if(this.config.lowerZoomLimit&&this.config.lowerZoomLimit>0){let t=this.CAMERA_Z-this.config.lowerZoomLimit;e>t&&(e=t)}if(this.config.upperZoomLimit&&this.config.upperZoomLimit>0){let t=this.CAMERA_Z-this.config.upperZoomLimit;e<t&&(e=t)}return e>this.CAMERA_Z-1&&(e=this.CAMERA_Z-1),e}static slerp(e,t,i){if(1==i)return t.clone();if(0==i)return e.clone();let r=e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w;if(r>.9995){let r=new l.Quaternion(e.x+i*(t.x-e.x),e.y+i*(t.y-e.y),e.z+i*(t.z-e.z),e.w+i*(t.w-e.w));return r.normalize(),r}r<0&&(t=t.clone().multiplyScalar(-1),r=-r),r>1?r=1:r<-1&&(r=-1);var n=Math.acos(r)*i,s=t.clone();s.sub(e.clone().multiplyScalar(r)),s.normalize();var a=Math.cos(n),o=Math.sin(n),h=new l.Quaternion(e.x*a+s.x*o,e.y*a+s.y*o,e.z*a+s.z*o,e.w*a+s.w*o);return h.normalize(),h}constructor(e,t={}){if(this.nomouse=!1,this.glDOM=null,this.models=[],this.surfaces={},this.shapes=[],this.labels=[],this.clickables=[],this.hoverables=[],this.contextMenuEnabledObjects=[],this.current_hover=null,this.hoverDuration=500,this.longTouchDuration=1e3,this.viewer_frame=0,this.viewChangeCallback=null,this.stateChangeCallback=null,this.NEAR=1,this.FAR=800,this.CAMERA_Z=150,this.fov=20,this.linkedViewers=[],this.renderer=null,this.control_all=!1,this.scene=null,this.rotationGroup=null,this.modelGroup=null,this.fogStart=.4,this.fogEnd=1,this.slabNear=-50,this.slabFar=50,this.cq=new l.Quaternion(0,0,0,1),this.dq=new l.Quaternion(0,0,0,1),this.animated=0,this.animationTimers=new Set,this.isDragging=!1,this.mouseStartX=0,this.mouseStartY=0,this.touchDistanceStart=0,this.touchHold=!1,this.currentModelPos=0,this.cz=0,this.cslabNear=0,this.cslabFar=0,this.userContextMenuHandler=null,this.config=t,this.callback=this.config.callback,this.defaultcolors=this.config.defaultcolors,this.defaultcolors||(this.defaultcolors=h.elementColors.defaultColors),this.nomouse=Boolean(this.config.nomouse),this.bgColor=0,this.config.backgroundColor=this.config.backgroundColor||"#ffffff",void 0!==this.config.backgroundColor&&(this.bgColor=h.CC.color(this.config.backgroundColor).getHex()),this.config.backgroundAlpha=null==this.config.backgroundAlpha?1:this.config.backgroundAlpha,this.camerax=0,void 0!==this.config.camerax&&(this.camerax="string"==typeof this.config.camerax?parseFloat(this.config.camerax):this.config.camerax),this._viewer=this,this.container=e,null!=this.config.hoverDuration&&(this.hoverDuration=this.config.hoverDuration),void 0===this.config.antialias&&(this.config.antialias=!0),void 0===this.config.cartoonQuality&&(this.config.cartoonQuality=10),this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight(),this.setupRenderer(),this.row=null==this.config.row?0:this.config.row,this.col=null==this.config.col?0:this.config.col,this.cols=this.config.cols,this.rows=this.config.rows,this.viewers=this.config.viewers,this.control_all=this.config.control_all,this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.camera=new a.Camera(this.fov,this.ASPECT,this.NEAR,this.FAR,this.config.orthographic),this.camera.position=new l.Vector3(this.camerax,0,this.CAMERA_Z),this.lookingAt=new l.Vector3,this.camera.lookAt(this.lookingAt),this.raycaster=new a.Raycaster(new l.Vector3(0,0,0),new l.Vector3(0,0,0)),this.projector=new a.Projector,this.initializeScene(),this.renderer.setClearColorHex(this.bgColor,this.config.backgroundAlpha),this.scene.fog.color=h.CC.color(this.bgColor),document.body.addEventListener("mouseup",this._handleMouseUp.bind(this)),document.body.addEventListener("touchend",this._handleMouseUp.bind(this)),this.initContainer(this.container),this.config.style&&this.setViewStyle(this.config),window.addEventListener("resize",this.resize.bind(this)),void 0!==window.ResizeObserver&&(this.divwatcher=new window.ResizeObserver(this.resize.bind(this)),this.divwatcher.observe(this.container)),void 0!==window.IntersectionObserver){let e=(e,t)=>{e.forEach(e=>{e.isIntersecting&&this.resize()})};this.intwatcher=new window.IntersectionObserver(e),this.intwatcher.observe(this.container)}try{"function"==typeof this.callback&&this.callback(this)}catch(e){console.log("error with glviewer callback: "+e)}}targetedObjects(e,t,i){var r={x:e,y:t,z:-1};return Array.isArray(i)||(i=this.selectedAtoms(i)),0==i.length?[]:(this.raycaster.setFromCamera(r,this.camera),this.raycaster.intersectObjects(this.modelGroup,i))}modelToScreen(e){let t=!1;Array.isArray(e)||(e=[e],t=!0);let i=this.renderer.getXRatio(),r=this.renderer.getYRatio(),n=this.col,s=this.row,a=n*(this.WIDTH/i),o=(r-s-1)*(this.HEIGHT/r),h=[],c=this.canvasOffset();return e.forEach(e=>{let t=new l.Vector3(e.x,e.y,e.z);t.applyMatrix4(this.modelGroup.matrixWorld),this.projector.projectVector(t,this.camera);let n=this.WIDTH/i*(t.x+1)/2+c.left+a,s=-this.HEIGHT/r*(t.y-1)/2+c.top+o;h.push({x:n,y:s})}),t&&(h=h[0]),h}screenOffsetToModel(e,t,i){var r=e/this.WIDTH,n=t/this.HEIGHT,s=void 0===i?this.rotationGroup.position.z:i,a=this.rotationGroup.quaternion,o=new l.Vector3(0,0,s);return this.projector.projectVector(o,this.camera),o.x+=2*r,o.y-=2*n,this.projector.unprojectVector(o,this.camera),o.z=0,o.applyQuaternion(a),o}screenToModelDistance(e,t){let i=this.canvasOffset(),r=new l.Vector3(t.x,t.y,t.z);r.applyMatrix4(this.modelGroup.matrixWorld);let n=r.clone();this.projector.projectVector(r,this.camera);let s=new l.Vector3(2*(e.x-i.left)/this.WIDTH-1,2*(e.y-i.top)/-this.HEIGHT+1,r.z);return this.projector.unprojectVector(s,this.camera),s.distanceTo(n)}setViewChangeCallback(e){"function"!=typeof e&&null!=e||(this.viewChangeCallback=e)}setStateChangeCallback(e){"function"!=typeof e&&null!=e||(this.stateChangeCallback=e)}getConfig(){return this.config}setConfig(e){this.config=e,e.ambientOcclusion&&this.renderer.enableAmbientOcclusion(e.ambientOcclusion)}getInternalState(){var e={models:[],surfaces:[],shapes:[],labels:[]};for(let t=0;t<this.models.length;t++)this.models[t]&&(e.models[t]=this.models[t].getInternalState());return e}setInternalState(e){this.clear();var t=e.models;for(let e=0;e<t.length;e++)t[e]&&(this.models[e]=new GLModel(e,void 0,this),this.models[e].setInternalState(t[e]));this.render()}setZoomLimits(e,t){void 0!==e&&(this.config.lowerZoomLimit=e),t&&(this.config.upperZoomLimit=t),this.rotationGroup.position.z=this.adjustZoomToLimits(this.rotationGroup.position.z),this.show()}setCameraParameters(e){void 0!==e.fov&&(this.fov=e.fov,this.camera.fov=this.fov),void 0!==e.z&&(this.CAMERA_Z=e.z,this.camera.z=this.CAMERA_Z),void 0!==e.orthographic&&(this.camera.ortho=e.orthographic),this.setSlabAndFog()}_handleMouseDown(e){if(e.preventDefault(),!this.scene)return;var t=this.getX(e),i=this.getY(e);if(void 0===t)return;this.isDragging=!0,this.mouseButton=e.which,this.mouseStartX=t,this.mouseStartY=i,this.touchHold=!0,this.touchDistanceStart=0,e.targetTouches&&2==e.targetTouches.length&&(this.touchDistanceStart=this.calcTouchDistance(e)),this.cq=this.rotationGroup.quaternion.clone(),this.cz=this.rotationGroup.position.z,this.currentModelPos=this.modelGroup.position.clone(),this.cslabNear=this.slabNear,this.cslabFar=this.slabFar;let r=this;e.targetTouches&&1===e.targetTouches.length&&(this.longTouchTimeout=setTimeout(function(){if(1==r.touchHold){r.glDOM=r.renderer.domElement;const t=e.targetTouches[0],i=new PointerEvent("contextmenu",Object.assign(Object.assign({},e),{pageX:t.pageX,pageY:t.pageY,screenX:t.screenX,screenY:t.screenY,clientX:t.clientX,clientY:t.clientY}));r.glDOM.dispatchEvent(i)}},this.longTouchDuration))}_handleMouseUp(e){if(this.touchHold=!1,this.isDragging&&this.scene){var t=this.getX(e),i=this.getY(e);if(this.closeEnoughForClick(e)&&this.isInViewer(t,i)){let r=this.mouseXY(t,i);this.handleClickSelection(r.x,r.y,e)}}this.isDragging=!1}_handleMouseScroll(e){if(e.preventDefault(),this.scene){var t=this.getX(e),i=this.getY(e);if(void 0!==t&&(this.control_all||this.isInViewer(t,i))){var r=.85*(this.CAMERA_Z-this.rotationGroup.position.z),n=1;if(e.ctrlKey&&(n=-1),e.detail)this.rotationGroup.position.z+=n*r*e.detail/10;else if(e.wheelDelta){let t=600*e.wheelDelta/(e.wheelDelta+600);this.rotationGroup.position.z-=n*r*t/400}this.rotationGroup.position.z=this.adjustZoomToLimits(this.rotationGroup.position.z),this.show()}}}pngURI(){return this.getCanvas().toDataURL("image/png")}apngURI(e){let t=this;return e=e||1,new Promise(function(i){let r=0,n=t.viewChangeCallback,a=[],o=[],l=Date.now();t.viewChangeCallback=function(){o.push(Date.now()-l),l=Date.now(),a.push(new Promise(e=>{t.getCanvas().toBlob(function(t){t.arrayBuffer().then(e)},"image/png")})),r+=1,r==e&&(t.viewChangeCallback=n,Promise.all(a).then(e=>{let r=[];for(let t=0;t<e.length;t++){let i=(0,s.decode)(e[t]);r.push((0,s.toRGBA8)(i)[0])}let n=t.getCanvas().width,a=t.getCanvas().height,l=(0,s.encode)(r,n,a,0,o),h=new Blob([l],{type:"image/png"}),c=new FileReader;c.onload=function(e){i(e.target.result)},c.readAsDataURL(h)}))}})}getCanvas(){return this.glDOM}getRenderer(){return this.renderer}setHoverDuration(e){this.hoverDuration=e}mouseXY(e,t){let i=this.canvasOffset(),r=this.renderer.getXRatio(),n=this.renderer.getYRatio(),s=this.col,a=this.row,o=s*(this.WIDTH/r),l=(n-a-1)*(this.HEIGHT/n);return{x:(e-i.left-o)/(this.WIDTH/r)*2-1,y:-(t-i.top-l)/(this.HEIGHT/n)*2+1}}_handleMouseMove(e){clearTimeout(this.hoverTimeout),e.preventDefault();let t=this.getX(e),i=this.getY(e);if(void 0===t)return;let r=this.renderer.getXRatio(),n=this.renderer.getYRatio(),s=this.mouseXY(t,i),a=this;null!==this.current_hover&&this.handleHoverContinue(s.x,s.y);var o=0;if((this.control_all||this.isInViewer(t,i))&&this.scene&&(this.hoverables.length>0&&(this.hoverTimeout=setTimeout(function(){a.handleHoverSelection(s.x,s.y,e)},this.hoverDuration)),this.isDragging)){e.targetTouches&&(e.targetTouches.length>1||1===e.targetTouches.length&&!this.closeEnoughForClick(e))&&clearTimeout(this.longTouchTimeout);var l=(t-this.mouseStartX)/this.WIDTH,h=(i-this.mouseStartY)/this.HEIGHT;0!=this.touchDistanceStart&&e.targetTouches&&2==e.targetTouches.length?(o=2,h=2*(this.calcTouchDistance(e)-this.touchDistanceStart)/(this.WIDTH+this.HEIGHT)):e.targetTouches&&3==e.targetTouches.length&&(o=1),l*=r,h*=n;var c,d=Math.hypot(l,h);if(3==o||3==this.mouseButton&&e.ctrlKey)this.slabNear=this.cslabNear+100*l,this.slabFar=this.cslabFar-100*h;else if(2==o||3==this.mouseButton||e.shiftKey)(c=.85*(this.CAMERA_Z-this.rotationGroup.position.z))<80&&(c=80),this.rotationGroup.position.z=this.cz+h*c,this.rotationGroup.position.z=this.adjustZoomToLimits(this.rotationGroup.position.z);else if(1==o||2==this.mouseButton||e.ctrlKey){var u=this.screenOffsetToModel(r*(t-this.mouseStartX),n*(i-this.mouseStartY));this.modelGroup.position.addVectors(this.currentModelPos,u)}else if((0===o||1==this.mouseButton)&&0!==d){var f=Math.sin(d*Math.PI)/d;this.dq.x=Math.cos(d*Math.PI),this.dq.y=0,this.dq.z=f*l,this.dq.w=-f*h,this.rotationGroup.quaternion.set(1,0,0,0),this.rotationGroup.quaternion.multiply(this.dq),this.rotationGroup.quaternion.multiply(this.cq)}this.show()}}_handleContextMenu(e){if(e.preventDefault(),this.closeEnoughForClick(e)){var t=this.mouseStartX,i=this.mouseStartY,r=this.canvasOffset();let s=this.mouseXY(t,i),a=s.x,o=s.y,l=this.targetedObjects(a,o,this.contextMenuEnabledObjects);var n=null;l.length&&(n=l[0].clickable),r=this.canvasOffset(),t=this.mouseStartX-r.left,i=this.mouseStartY-r.top,this.userContextMenuHandler&&(this.userContextMenuHandler(n,t,i,l,e),this.isDragging=!1)}}setContainer(e){let t=(0,d.getElement)(e)||this.container;return this.initContainer(t),this}setBackgroundColor(e,t){(void 0===t||t<0||t>1)&&(t=1);var i=h.CC.color(e);return this.scene.fog.color=i,this.bgColor=i.getHex(),this.renderer.setClearColorHex(i.getHex(),t),this.show(),this}setProjection(e){this.camera.ortho="orthographic"===e,this.setSlabAndFog()}setViewStyle(e){if((e=e||{}).style=e.style||"",e.style.includes("outline")?this.renderer.enableOutline(e):this.renderer.disableOutline(),e.style.includes("ambientOcclusion")){var t={};e.strength&&(t.strength=e.strength),e.radius&&(t.radius=e.radius),this.renderer.enableAmbientOcclusion(t)}else this.renderer.disableAmbientOcclusion();return this}updateSize(){this.renderer.setSize(this.WIDTH,this.HEIGHT),this.ASPECT=this.renderer.getAspect(this.WIDTH,this.HEIGHT),this.renderer.setSize(this.WIDTH,this.HEIGHT),this.camera.aspect=this.ASPECT,this.camera.updateProjectionMatrix()}setWidth(e){return this.WIDTH=e||this.WIDTH,this.updateSize(),this}setHeight(e){return this.HEIGHT=e||this.HEIGHT,this.updateSize(),this}resize(){this.WIDTH=this.getWidth(),this.HEIGHT=this.getHeight();let e=!1;if(this.renderer.isLost()&&this.WIDTH>0&&this.HEIGHT>0){let t=!1,i=this.container.querySelector("canvas");i&&i!=this.renderer.getCanvas()?this.config.canvas=i:(i.remove(),this.config&&null!=this.config.canvas&&(delete this.config.canvas,t=!0)),this.setupRenderer(),this.initContainer(this.container),this.renderer.setClearColorHex(this.bgColor,this.config.backgroundAlpha),e=!0,t&&(this.config.canvas=this.renderer.getCanvas())}if(0==this.WIDTH||0==this.HEIGHT?this.animated&&this._viewer.pauseAnimate():this.animated&&this._viewer.resumeAnimate(),this.updateSize(),e){let e=this.renderer.supportedExtensions();if(e.regen=!0,this.viewers)for(let t=0,i=this.viewers.length;t<i;t++)for(let i=0,r=this.viewers[t].length;i<r;i++)this.viewers[t][i].render(null,e);this._viewer.render(null,e)}else this.WIDTH>0&&this.HEIGHT>0&&this.show();return this}getModel(e){return void 0===e?0==this.models.length?null:this.models[this.models.length-1]:e instanceof GLModel?e:e in this.models?this.models[e]:0==this.models.length?null:this.models[this.models.length-1]}spin(e,t=1,i=!1){if(clearInterval(this.spinInterval),void 0===e&&(e="y"),"boolean"==typeof e){if(!e)return;e="y"}Array.isArray(e)&&(e={x:e[0],y:e[1],z:e[2]});var r=this;this.spinInterval=setInterval(function(){!r.getCanvas().isConnected&&r.renderer.isLost()&&clearInterval(r.spinInterval),(!i||r.container.checkVisibility&&r.container.checkVisibility())&&r.rotate(1*t,e)},25)}animateMotion(e,t,i,r,n,s){var a=Math.ceil(e/20);a<1&&(a=1),this.incAnim();var o={mpos:this.modelGroup.position.clone(),rz:this.rotationGroup.position.z,rot:this.rotationGroup.quaternion.clone(),cam:this.lookingAt.clone()};if(t){let e=new Array(a);for(let t=0;t<a;t++){let l=(t+1)/a,h={mpos:o.mpos,rz:o.rz,rot:o.rot};h.mpos=i.clone().sub(o.mpos).multiplyScalar(l).add(o.mpos),h.rz=o.rz+l*(r-o.rz),h.rot=GLViewer.slerp(o.rot,n,l),h.cam=s.clone().sub(o.cam).multiplyScalar(l).add(o.cam),e[t]=h}let t=0,l=this,h=function(){var i=e[t];t+=1,l.modelGroup.position=i.mpos,l.rotationGroup.position.z=i.rz,l.rotationGroup.quaternion=i.rot,l.camera.lookAt(i.cam),t<e.length?setTimeout(h,20):l.decAnim(),l.show()};setTimeout(h,20)}else{var l={};let e=1/a;if(i&&(l.mpos=i.clone().sub(o.mpos).multiplyScalar(e)),void 0!==r&&null!=r&&(l.rz=e*(r-o.rz)),n){var h=GLViewer.slerp(o.rot,n,e);l.rot=o.rot.clone().inverse().multiply(h)}s&&(l.cam=s.clone().sub(o.cam).multiplyScalar(e));let t=0,c=this,d=function(){t+=1,l.mpos&&c.modelGroup.position.add(l.mpos),l.rz&&(c.rotationGroup.position.z+=l.rz),l.rot&&c.rotationGroup.quaternion.multiply(l.rot),l.cam&&(c.lookingAt.add(l.cam),c.camera.lookAt(c.lookingAt)),t<a?setTimeout(d,20):c.decAnim(),c.show()};setTimeout(d,20)}}rotate(e,t="y",i=0,r=!1){if("x"==t?t={x:1,y:0,z:0}:"y"==t?t={x:0,y:1,z:0}:"z"==t&&(t={x:0,y:0,z:1}),"vx"==t?t={vx:1,vy:0,vz:0}:"vy"==t?t={vx:0,vy:1,vz:0}:"vz"==t&&(t={vx:0,vy:0,vz:1}),void 0!==t.vx){var n=new l.Vector3(t.vx,t.vy,t.vz);n.applyQuaternion(this.rotationGroup.quaternion),t={x:n.x,y:n.y,z:n.z}}var s=function(e){var i,r,n,s=Math.sin(e/2),a=Math.cos(e/2);return i=t.x*s,r=t.y*s,n=t.z*s,new l.Quaternion(i,r,n,a).normalize()}(Math.PI*e/180);if(i){var a=(new l.Quaternion).copy(this.rotationGroup.quaternion).multiply(s);this.animateMotion(i,r,this.modelGroup.position,this.rotationGroup.position.z,a,this.lookingAt)}else this.rotationGroup.quaternion.multiply(s),this.show();return this}surfacesFinished(){for(var e in this.surfaces)if(!this.surfaces[e][0].done)return!1;return!0}getView(){if(!this.modelGroup)return[0,0,0,0,0,0,0,1];var e=this.modelGroup.position,t=this.rotationGroup.quaternion;return[e.x,e.y,e.z,this.rotationGroup.position.z,t.x,t.y,t.z,t.w]}setView(e,t){return void 0!==e&&(e instanceof Array||8!==e.length)&&this.modelGroup&&this.rotationGroup?(this.modelGroup.position.x=e[0],this.modelGroup.position.y=e[1],this.modelGroup.position.z=e[2],this.rotationGroup.position.z=e[3],this.rotationGroup.quaternion.x=e[4],this.rotationGroup.quaternion.y=e[5],this.rotationGroup.quaternion.z=e[6],this.rotationGroup.quaternion.w=e[7],void 0!==e[8]&&(this.rotationGroup.position.x=e[8],this.rotationGroup.position.y=e[9]),this.show(t),this):this}render(e,t){this.renderer.setViewport(),this.updateClickables();var i,r,n=this.getView();for(this.stateChangeCallback&&this.stateChangeCallback(this.getInternalState()),t||(t=this.renderer.supportedExtensions()),i=0;i<this.models.length;i++)this.models[i]&&this.models[i].globj(this.modelGroup,t);for(i=0;i<this.shapes.length;i++)this.shapes[i]&&(void 0===this.shapes[i].frame||this.viewer_frame<0||this.shapes[i].frame<0||this.shapes[i].frame==this.viewer_frame?this.shapes[i].globj(this.modelGroup,t):this.shapes[i].removegl(this.modelGroup));for(i=0;i<this.labels.length;i++)t.regen&&(this.labels[i].dispose(),this.modelGroup.remove(this.labels[i].sprite),this.labels[i].setContext(),this.modelGroup.add(this.labels[i].sprite)),this.labels[i]&&void 0!==this.labels[i].frame&&this.labels[i].frame>=0&&(this.modelGroup.remove(this.labels[i].sprite),(this.viewer_frame<0||this.labels[i].frame==this.viewer_frame)&&this.modelGroup.add(this.labels[i].sprite));for(i in this.surfaces)if(this.surfaces.hasOwnProperty(i)){var s=this.surfaces[i];for(r=0;r<s.length;r++)if(s.hasOwnProperty(r)){var o=s[r].geo;if(!s[r].finished||t.regen){o.verticesNeedUpdate=!0,o.elementsNeedUpdate=!0,o.normalsNeedUpdate=!0,o.colorsNeedUpdate=!0,o.buffersNeedUpdate=!0,s[r].mat.needsUpdate=!0,s[r].done&&(s[r].finished=!0),s[r].lastGL&&this.modelGroup.remove(s[r].lastGL);var l=null;if(s[r].mat instanceof a.LineBasicMaterial?l=new a.Line(o,s[r].mat):("wireframe"in s.style&&s.style.wireframe&&o.setUpWireframe(),l=new a.Mesh(o,s[r].mat)),s[r].mat.transparent&&0==s[r].mat.opacity?l.visible=!1:l.visible=!0,s[r].symmetries.length>1||1==s[r].symmetries.length&&!s[r].symmetries[0].isIdentity()){var h,c=new a.Object3D;for(h=0;h<s[r].symmetries.length;h++){var d=l.clone();d.matrix=s[r].symmetries[h],d.matrixAutoUpdate=!1,c.add(d)}s[r].lastGL=c,this.modelGroup.add(c)}else s[r].lastGL=l,this.modelGroup.add(l)}}}return this.setView(n),"function"==typeof e&&e(this),this}getModelList(e){let t=[];if(void 0===e||void 0===e.model)for(let e=0;e<this.models.length;e++)this.models[e]&&t.push(this.models[e]);else{let r=e.model;Array.isArray(r)||(r=[r]);for(let e=0;e<r.length;e++)if("number"==typeof r[e]){var i=r[e];i<0&&(i+=this.models.length),t.push(this.models[i])}else t.push(r[e])}return t}getAtomsFromSel(e){var t=[];void 0===e&&(e={});var i=this.getModelList(e);for(let r=0;r<i.length;r++)t=t.concat(i[r].selectedAtoms(e));return t}atomIsSelected(e,t){void 0===t&&(t={});for(var i=this.getModelList(t),r=0;r<i.length;r++)if(i[r].atomIsSelected(e,t))return!0;return!1}selectedAtoms(e){return this.getAtomsFromSel(e)}getUniqueValues(e,t){void 0===t&&(t={});var i=this.getAtomsFromSel(t),r={};for(var n in i)i[n].hasOwnProperty(e)&&(r[i[n][e]]=!0);return Object.keys(r)}pdbData(e){for(var t=this.getAtomsFromSel(e),i="",r=0,n=t.length;r<n;++r)i+=t[r].pdbline+"\n";return i}zoom(e=2,t=0,i=!1){var r=(this.CAMERA_Z-this.rotationGroup.position.z)/e,n=this.CAMERA_Z-r;return t>0?this.animateMotion(t,i,this.modelGroup.position,this.adjustZoomToLimits(n),this.rotationGroup.quaternion,this.lookingAt):(this.rotationGroup.position.z=this.adjustZoomToLimits(n),this.show()),this}translate(e,t,i=0,r=!1){var n=e/this.WIDTH,s=t/this.HEIGHT,a=new l.Vector3(0,0,-this.CAMERA_Z);this.projector.projectVector(a,this.camera),a.x-=n,a.y-=s,this.projector.unprojectVector(a,this.camera),a.z=0;var o=this.lookingAt.clone().add(a);return i>0?this.animateMotion(i,r,this.modelGroup.position,this.rotationGroup.position.z,this.rotationGroup.quaternion,o):(this.lookingAt=o,this.camera.lookAt(this.lookingAt),this.show()),this}translateScene(e,t,i=0,r=!1){var n=this.screenOffsetToModel(e,t),s=this.modelGroup.position.clone().add(n);return i>0?this.animateMotion(i,r,this.modelGroup.position,this.rotationGroup.position.z,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=s,this.show()),this}fitSlab(e){e=e||{};var t=this.getAtomsFromSel(e),i=(0,d.getExtent)(t),r=i[1][0]-i[0][0],n=i[1][1]-i[0][1],s=i[1][2]-i[0][2],a=Math.hypot(r,n,s);return a<5&&(a=5),this.slabNear=-a/1.9,this.slabFar=a/2,this}center(e={},t=0,i=!1){var r,n,s=this.getAtomsFromSel(e),a=(0,d.getExtent)(s);(0,d.isEmptyObject)(e)?(this.shapes.forEach(e=>{if(e&&e.boundingSphere&&e.boundingSphere.center){var t=e.boundingSphere.center,i=e.boundingSphere.radius;i>0?(s.push(new l.Vector3(t.x+i,t.y,t.z)),s.push(new l.Vector3(t.x-i,t.y,t.z)),s.push(new l.Vector3(t.x,t.y+i,t.z)),s.push(new l.Vector3(t.x,t.y-i,t.z)),s.push(new l.Vector3(t.x,t.y,t.z+i)),s.push(new l.Vector3(t.x,t.y,t.z-i))):s.push(t)}}),a=(0,d.getExtent)(s),r=s,n=a):(r=this.getAtomsFromSel({}),n=(0,d.getExtent)(r));var o=new l.Vector3(a[2][0],a[2][1],a[2][2]),h=n[1][0]-n[0][0],c=n[1][1]-n[0][1],u=n[1][2]-n[0][2],f=Math.hypot(h,c,u);f<5&&(f=5),this.slabNear=-f/1.9,this.slabFar=f/2,h=a[1][0]-a[0][0],c=a[1][1]-a[0][1],u=a[1][2]-a[0][2],(f=Math.hypot(h,c,u))<5&&(f=5);for(var p=25,m=0;m<s.length;m++)if(s[m]){var g=o.distanceToSquared(s[m]);g>p&&(p=g)}f=2*Math.sqrt(p);var v=o.clone().multiplyScalar(-1);return t>0?this.animateMotion(t,i,v,this.rotationGroup.position.z,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=v,this.show()),this}zoomTo(e={},t=0,i=!1){let r=this.getAtomsFromSel(e),n=(0,d.getExtent)(r),s=n;if((0,d.isEmptyObject)(e)){let e=r&&r.length;if(this.shapes.forEach(e=>{if(e&&e.boundingSphere)if(e.boundingSphere.box){let t=e.boundingSphere.box;r.push(new l.Vector3(t.min.x,t.min.y,t.min.z)),r.push(new l.Vector3(t.max.x,t.max.y,t.max.z))}else if(e.boundingSphere.center){var t=e.boundingSphere.center,i=e.boundingSphere.radius;i>0?(r.push(new l.Vector3(t.x+i,t.y,t.z)),r.push(new l.Vector3(t.x-i,t.y,t.z)),r.push(new l.Vector3(t.x,t.y+i,t.z)),r.push(new l.Vector3(t.x,t.y-i,t.z)),r.push(new l.Vector3(t.x,t.y,t.z+i)),r.push(new l.Vector3(t.x,t.y,t.z-i))):r.push(t)}}),s=(0,d.getExtent)(r),!e)for(let e=0;e<3;e++)n[2][e]=(s[0][e]+s[1][e])/2}else{let e=this.getAtomsFromSel({});s=(0,d.getExtent)(e)}var a=new l.Vector3(n[2][0],n[2][1],n[2][2]),o=s[1][0]-s[0][0],h=s[1][1]-s[0][1],c=s[1][2]-s[0][2],u=Math.hypot(o,h,c);u<5&&(u=5),this.slabNear=-u/1.9,this.slabFar=u/2,0===Object.keys(e).length&&(this.slabNear=Math.min(2*-u,-50),this.slabFar=Math.max(2*u,50));var f=this.config.minimumZoomToDistance||5;o=n[1][0]-n[0][0],h=n[1][1]-n[0][1],c=n[1][2]-n[0][2],(u=Math.hypot(o,h,c))<f&&(u=f);for(var p=f*f,m=0;m<r.length;m++)if(r[m]){var g=a.distanceToSquared(r[m]);g>p&&(p=g)}u=2*Math.sqrt(p);var v=a.clone().multiplyScalar(-1),_=-(.5*u/Math.tan(Math.PI/180*this.camera.fov/2)-this.CAMERA_Z);return _=this.adjustZoomToLimits(_),t>0?this.animateMotion(t,i,v,_,this.rotationGroup.quaternion,this.lookingAt):(this.modelGroup.position=v,this.rotationGroup.position.z=_,this.show()),this}setSlab(e,t){this.slabNear=e,this.slabFar=t}getSlab(){return{near:this.slabNear,far:this.slabFar}}addLabel(e,t={},i,r=!1){if(i){var n=(0,d.getExtent)(this.getAtomsFromSel(i));t.position={x:n[2][0],y:n[2][1],z:n[2][2]}}var s=new Label(e,t);return s.setContext(),this.modelGroup.add(s.sprite),this.labels.push(s),r||this.show(),s}addResLabels(e,t,i=!1){let r=this.labels.length;return this.applyToModels("addResLabels",e,t,i),this.show(),this.labels.slice(r)}addPropertyLabels(e,t,i){return this.applyToModels("addPropertyLabels",e,t,i),this.show(),this}removeLabel(e){for(var t=0;t<this.labels.length;t++)if(this.labels[t]==e){this.labels.splice(t,1),e.dispose(),this.modelGroup.remove(e.sprite);break}return this.show(),this}removeAllLabels(){for(var e=0;e<this.labels.length;e++)this.labels[e]&&this.labels[e].sprite&&this.modelGroup.remove(this.labels[e].sprite);return this.labels.splice(0,this.labels.length),this.show(),this}hideAllLabels(){for(var e=0;e<this.labels.length;e++)this.labels[e]&&this.labels[e].hide();return this.show(),this}showAllLabels(){for(var e=0;e<this.labels.length;e++)this.labels[e]&&this.labels[e].show();return this.show(),this}setLabelStyle(e,t){return this.modelGroup.remove(e.sprite),e.dispose(),e.stylespec=t,e.setContext(),this.modelGroup.add(e.sprite),this.show(),e}setLabelText(e,t){return this.modelGroup.remove(e.sprite),e.dispose(),e.text=t,e.setContext(),this.modelGroup.add(e.sprite),this.show(),e}addShape(e){var t=new GLShape(e=e||{});return t.shapePosition=this.shapes.length,this.shapes.push(t),t}removeShape(e){if(!e)return this;for(e.removegl(this.modelGroup),delete this.shapes[e.shapePosition];this.shapes.length>0&&void 0===this.shapes[this.shapes.length-1];)this.shapes.pop();return this}removeAllShapes(){for(var e=0;e<this.shapes.length;e++){var t=this.shapes[e];t&&t.removegl(this.modelGroup)}return this.shapes.splice(0,this.shapes.length),this}getSelectionCenter(e){if(e.hasOwnProperty("x")&&e.hasOwnProperty("y")&&e.hasOwnProperty("z"))return e;var t=this.getAtomsFromSel(e);if(0==t.length)return{x:0,y:0,z:0};var i=(0,d.getExtent)(t);return{x:i[0][0]+(i[1][0]-i[0][0])/2,y:i[0][1]+(i[1][1]-i[0][1])/2,z:i[0][2]+(i[1][2]-i[0][2])/2}}addSphere(e){(e=e||{}).center=this.getSelectionCenter(e.center);var t=new GLShape(e);return t.shapePosition=this.shapes.length,t.addSphere(e),this.shapes.push(t),t.finalize(),t}addBox(e={}){null!=e.corner&&(e.corner=this.getSelectionCenter(e.corner)),null!=e.center&&(e.center=this.getSelectionCenter(e.center));var t=new GLShape(e);return t.shapePosition=this.shapes.length,t.addBox(e),this.shapes.push(t),t.finalize(),t}addArrow(e={}){e.start=this.getSelectionCenter(e.start),e.end=this.getSelectionCenter(e.end);var t=new GLShape(e);return t.shapePosition=this.shapes.length,t.addArrow(e),this.shapes.push(t),t.finalize(),t}addCylinder(e={}){e.start=this.getSelectionCenter(e.start),e.end=this.getSelectionCenter(e.end);var t=new GLShape(e);return t.shapePosition=this.shapes.length,e.dashed?t.addDashedCylinder(e):t.addCylinder(e),this.shapes.push(t),t.finalize(),t}addCurve(e={}){var t=new GLShape(e);return t.shapePosition=this.shapes.length,t.addCurve(e),this.shapes.push(t),t.finalize(),t}addLine(e={}){e.start=this.getSelectionCenter(e.start),e.end=this.getSelectionCenter(e.end),e.wireframe=!0;var t=new GLShape(e);return t.shapePosition=this.shapes.length,e.dashed?t=this.addLineDashed(e,t):t.addLine(e),this.shapes.push(t),t.finalize(),t}addUnitCell(e,t){e=this.getModel(e),(t=t||{alabel:"a",blabel:"b",clabel:"c"}).box=t.box||{},t.astyle=t.astyle||{color:"red",radius:.1,midpos:-1},t.bstyle=t.bstyle||{color:"green",radius:.1,midpos:-1},t.cstyle=t.cstyle||{color:"blue",radius:.1,midpos:-1},t.alabelstyle=t.alabelstyle||{fontColor:"red",showBackground:!1,alignment:"center",inFront:!1},t.blabelstyle=t.blabelstyle||{fontColor:"green",showBackground:!1,alignment:"center",inFront:!1},t.clabelstyle=t.clabelstyle||{fontColor:"blue",showBackground:!1,alignment:"center",inFront:!1},e.unitCellObjects&&this.removeUnitCell(e),e.unitCellObjects={shapes:[],labels:[]};var i=e.getCrystData(),r=null;if(i){if(i.matrix)r=i.matrix;else{var n,s,a,o=i.a,h=i.b,c=i.c,d=i.alpha,u=i.beta,f=i.gamma;d=d*Math.PI/180,u=u*Math.PI/180,f=f*Math.PI/180,n=Math.cos(u),s=(Math.cos(d)-Math.cos(u)*Math.cos(f))/Math.sin(f),a=Math.sqrt(Math.max(0,1-n*n-s*s)),r=new l.Matrix3(o,h*Math.cos(f),c*n,0,h*Math.sin(f),c*s,0,0,c*a)}var p=[new l.Vector3(0,0,0),new l.Vector3(1,0,0),new l.Vector3(0,1,0),new l.Vector3(0,0,1),new l.Vector3(1,1,0),new l.Vector3(0,1,1),new l.Vector3(1,0,1),new l.Vector3(1,1,1)];if(i.matrix4)for(let e=0;e<p.length;e++)i.size&&p[e].multiplyVectors(p[e],i.size),p[e]=p[e].applyMatrix4(i.matrix4);else for(let e=0;e<p.length;e++)p[e]=p[e].applyMatrix3(r);if(t.box&&!t.box.hidden){t.box.wireframe=!0;var m=new GLShape(t.box);m.shapePosition=this.shapes.length,m.addLine({start:p[0],end:p[1]}),m.addLine({start:p[0],end:p[2]}),m.addLine({start:p[1],end:p[4]}),m.addLine({start:p[2],end:p[4]}),m.addLine({start:p[0],end:p[3]}),m.addLine({start:p[3],end:p[5]}),m.addLine({start:p[2],end:p[5]}),m.addLine({start:p[1],end:p[6]}),m.addLine({start:p[4],end:p[7]}),m.addLine({start:p[6],end:p[7]}),m.addLine({start:p[3],end:p[6]}),m.addLine({start:p[5],end:p[7]}),this.shapes.push(m),e.unitCellObjects.shapes.push(m),m.finalize()}if(!t.astyle.hidden){t.astyle.start=p[0],t.astyle.end=p[1];let i=this.addArrow(t.astyle);e.unitCellObjects.shapes.push(i)}if(!t.bstyle.hidden){t.bstyle.start=p[0],t.bstyle.end=p[2];let i=this.addArrow(t.bstyle);e.unitCellObjects.shapes.push(i)}if(!t.cstyle.hidden){t.cstyle.start=p[0],t.cstyle.end=p[3];let i=this.addArrow(t.cstyle);e.unitCellObjects.shapes.push(i)}if(t.alabel){t.alabelstyle.position=p[1];let i=this.addLabel(t.alabel,t.alabelstyle);e.unitCellObjects.labels.push(i)}if(t.blabel){t.blabelstyle.position=p[2];let i=this.addLabel(t.blabel,t.blabelstyle);e.unitCellObjects.labels.push(i)}if(t.clabel){t.clabelstyle.position=p[3];let i=this.addLabel(t.clabel,t.clabelstyle);e.unitCellObjects.labels.push(i)}}}removeUnitCell(e){if((e=this.getModel(e)).unitCellObjects){let t=this;e.unitCellObjects.shapes.forEach(function(e){t.removeShape(e)}),e.unitCellObjects.labels.forEach(function(e){t.removeLabel(e)})}delete e.unitCellObjects}replicateUnitCell(e=3,t=e,i=t,r,n,s){let a=(r=this.getModel(r)).getCrystData();if(a){const o=r.selectedAtoms({}),h=a.matrix;let c=function(e){return e%2==0?-e/2:Math.ceil(e/2)};e<=1&&t<=1&&i<=1&&(s=!0,e=t=i=3);let d=function(e,t,i){return!1};if(s){const e=(new l.Matrix3).getInverse3(h);d=function(t,i,r){let n=new l.Vector3(t,i,r).applyMatrix3(e);return!(n.x>-1e-4&&n.x<1.0001&&n.y>-1e-4&&n.y<1.0001&&n.z>-1e-4&&n.z<1.0001)}}for(let n=0;n<e;n++)for(let e=0;e<t;e++)for(let t=0;t<i;t++){if(0==n&&0==e&&0==t)continue;let i=new l.Vector3(c(n),c(e),c(t));i.applyMatrix3(h);let s=[];for(let e=0;e<o.length;e++){let t=o[e].x+i.x,r=o[e].y+i.y,n=o[e].z+i.z;if(d(t,r,n))continue;let a={};for(let t in o[e])a[t]=o[e][t];a.x=t,a.y=r,a.z=n,s.push(a)}r.addAtoms(s)}n&&r.assignBonds()}}addLineDashed(e,t){var i,r;e.dashLength=e.dashLength||.5,e.gapLength=e.gapLength||.5,i=e.start?new l.Vector3(e.start.x||0,e.start.y||0,e.start.z||0):new l.Vector3(0,0,0),r=e.end?new l.Vector3(e.end.x,e.end.y||0,e.end.z||0):new l.Vector3(0,0,0);var n,s,a,o=new l.Vector3,h=new l.Vector3,c=new l.Vector3,d=i.clone(),u=0;for(o.subVectors(r,i),n=o.length(),o.normalize(),h=o.clone(),c=o.clone(),h.multiplyScalar(e.dashLength),c.multiplyScalar(e.gapLength),s=h.length(),a=c.length();u<n;){if(u+s>n){e.start=i,e.end=r,t.addLine(e);break}d.addVectors(i,h),e.start=i,e.end=d,t.addLine(e),i=d.clone(),u+=s,d.addVectors(i,c),i=d.clone(),u+=a}return t.finalize(),t}addCustom(e){var t=new GLShape(e=e||{});return t.shapePosition=this.shapes.length,t.addCustom(e),this.shapes.push(t),t.finalize(),t}addVolumetricData(e,t,i={}){var r=new Ue.VolumeData(e,t);return i.hasOwnProperty("transferfn")?this.addVolumetricRender(r,i):this.addIsosurface(r,i)}addIsosurface(e,t={},i){var r=new GLShape(t);return r.shapePosition=this.shapes.length,r.addIsosurface(e,t,i,this),this.shapes.push(r),r}addVolumetricRender(e,t){var i=new GLVolumetricRender(e,t=t||{},this);return i.shapePosition=this.shapes.length,this.shapes.push(i),i}hasVolumetricRender(){return this.renderer.supportsVolumetric()}enableFog(e){if(e){this.scene.fog=new a.Fog(this.bgColor,100,200),this.config.disableFog=!1;const t=e;null==t.fogStart?this.fogStart=.4:this.fogStart=t.fogStart,null==t.fogEnd?this.fogEnd=1:this.fogEnd=t.fogEnd}else this.config.disableFog=!0,this.show()}setFrame(e){this.viewer_frame=e;let t=this;return new Promise(function(i){var r=t.models.map(function(t){return t.setFrame(e)});Promise.all(r).then(function(){i()})})}getFrame(){return this.viewer_frame}getNumFrames(){var e=0;for(let t=0;t<this.models.length;t++)this.models[t].getNumFrames()>e&&(e=this.models[t].getNumFrames());for(let t=0;t<this.shapes.length;t++)this.shapes[t].frame&&this.shapes[t].frame>=e&&(e=this.shapes[t].frame+1);for(let t=0;t<this.labels.length;t++)this.labels[t].frame&&this.labels[t].frame>=e&&(e=this.labels[t].frame+1);return e}getNextModelId(){return this.models.length}animate(e){this.incAnim();var t=100,i="forward",r=1/0;(e=e||{}).interval&&(t=e.interval),e.loop&&(i=e.loop),e.reps&&(r=e.reps);var n=this.getNumFrames(),s=this,a=0;e.startFrame&&(a=e.startFrame%n);var o=1;e.step&&(r/=o=e.step);var l,h,c=0,u=n*r,f=new Date,p=function(e){f=new Date,"forward"==e?s.setFrame(a).then(function(){a=(a+o)%n,l()}):"backward"==e?s.setFrame(n-1-a).then(function(){a=(a+o)%n,l()}):s.setFrame(a).then(function(){o*=(a+=o)%(n-1)==0?-1:1,l()})};return l=function(){if(s.render(),s.getCanvas().isConnected)if(++c>=u||!s.isAnimated())h.cancel(),s.animationTimers.delete(h),s.decAnim();else{var e=t-((new Date).getTime()-f.getTime());e=e>0?e:0,h.cancel(),s.animationTimers.delete(h),h=new d.PausableTimer(p,e,i),s.animationTimers.add(h)}else s.stopAnimate()},h=new d.PausableTimer(p,0,i),this.animationTimers.add(h),this}stopAnimate(){return this.animated=0,this.animationTimers.forEach(function(e){e.cancel()}),this.animationTimers=new Set,this}pauseAnimate(){return this.animationTimers.forEach(function(e){e.pause()}),this}resumeAnimate(){return this.animationTimers.forEach(function(e){e.resume()}),this}isAnimated(){return this.animated>0}getModelOpt(e){return e&&!e.defaultcolors?(e.defaultcolors=this.defaultcolors,e.cartoonQuality=e.cartoonQuality||this.config.cartoonQuality):void 0===e&&(e={defaultcolors:this.defaultcolors,cartoonQuality:this.config.cartoonQuality}),e}addModel(e,t="",i){i=this.getModelOpt(i);var r=new GLModel(this.models.length,i,this);return r.addMolData(e,t,i),this.models.push(r),r}addModels(e,t,i){(i=this.getModelOpt(i)).multimodel=!0,i.frames=!0;for(var r=GLModel.parseMolData(e,t,i),n=0;n<r.length;n++){var s=new GLModel(this.models.length,i,this);s.setAtomDefaults(r[n]),s.addFrame(r[n]),s.setFrame(0),r.modelData&&s.setModelData(r.modelData[n]),s.setDontDuplicateAtoms(!i.duplicateAssemblyAtoms),this.models.push(s)}return this.models}addModelsAsFrames(e,t,i){(i=this.getModelOpt(i)).multimodel=!0,i.frames=!0;var r=new GLModel(this.models.length,i,this);return r.addMolData(e,t,i),this.models.push(r),r}addAsOneMolecule(e,t,i){(i=this.getModelOpt(i)).multimodel=!0,i.onemol=!0;var r=new GLModel(this.models.length,i,this);return r.addMolData(e,t,i),this.models.push(r),r}removeModel(e){if(e=this.getModel(e)){for(e.removegl(this.modelGroup),delete this.models[e.getID()];this.models.length>0&&void 0===this.models[this.models.length-1];)this.models.pop();return this}}removeAllModels(){for(var e=0;e<this.models.length;e++){var t=this.models[e];t&&t.removegl(this.modelGroup)}return this.models.splice(0,this.models.length),this}exportJSON(e,t){var i={};return i.m=void 0===t?this.models.map(function(t){return t.toCDObject(e)}):[this.models[t].toCDObject()],JSON.stringify(i)}exportVRML(){var e=this.modelGroup;this.applyToModels("removegl",this.modelGroup),this.modelGroup=new a.Object3D,this.render(null,{supportsImposters:!1,supportsAIA:!1,regen:!0});var t="#VRML V2.0 utf8\n"+this.modelGroup.vrml()+"\n";return this.applyToModels("removegl",this.modelGroup),this.modelGroup=e,t}createModelFrom(e,t=!1){for(var i=new GLModel(this.models.length,this.defaultcolors,this),r=0;r<this.models.length;r++)if(this.models[r]){var n=this.models[r].selectedAtoms(e);i.addAtoms(n),t&&this.models[r].removeAtoms(n)}return this.models.push(i),i}applyToModels(e,t,i,r,n,s,a){for(var o=this.getModelList(t),l=0;l<o.length;l++)o[l][e](t,i,r,n,s,a)}setStyle(e,t){return void 0===t&&(t=e,e={}),this.applyToModels("setStyle",e,t,!1),this}addStyle(e,t){return void 0===t&&(t=e,e={}),this.applyToModels("setStyle",e,t,!0),this}setClickable(e,t,i){return this.applyToModels("setClickable",e,t,i),this}setHoverable(e,t,i,r){return this.applyToModels("setHoverable",e,t,i,r),this}enableContextMenu(e,t){return this.applyToModels("enableContextMenu",e,t),this}vibrate(e,t,i,r){return this.applyToModels("vibrate",e,t,i,r),this}setColorByProperty(e,t,i,r){return this.applyToModels("setColorByProperty",e,t,i,r),this}setColorByElement(e,t){return this.applyToModels("setColorByElement",e,t),this}static getAtomsWithin(e,t){var i=[];for(let n=0;n<e.length;n++){var r=e[n];void 0!==r&&(r.x<t[0][0]||r.x>t[1][0]||r.y<t[0][1]||r.y>t[1][1]||r.z<t[0][2]||r.z>t[1][2]||i.push(r))}return i}static volume(e){return(e[1][0]-e[0][0])*(e[1][1]-e[0][1])*(e[1][2]-e[0][2])}carveUpExtent(e,t,i){let r=[],n={};for(let e=0,i=t.length;e<i;e++)n[t[e].index]=e;let s=function(e){let t=[];for(let i=0,r=e.length;i<r;i++)e[i].index in n&&t.push(n[e[i].index]);return t},a=function(e){let t=[];return t[0]=[e[0][0],e[0][1],e[0][2]],t[1]=[e[1][0],e[1][1],e[1][2]],t},o=function(e){if(GLViewer.volume(e)<GLViewer.maxVolume)return[e];var t,i=e[1][0]-e[0][0],r=e[1][1]-e[0][1],n=e[1][2]-e[0][2];t=i>r&&i>n?0:r>i&&r>n?1:2;var s=a(e),l=a(e),h=(e[1][t]-e[0][t])/2+e[0][t];s[1][t]=h,l[0][t]=h;var c=o(s),d=o(l);return c.concat(d)},l=o(e);for(let e=0,n=l.length;e<n;e++){let n=a(l[e]);n[0][0]-=6,n[0][1]-=6,n[0][2]-=6,n[1][0]+=6,n[1][1]+=6,n[1][2]+=6;let o=GLViewer.getAtomsWithin(t,n),h=GLViewer.getAtomsWithin(i,l[e]);r.push({extent:l[e],atoms:s(o),toshow:s(h)})}return r}static generateSurfaceMesh(e,t,i){var r=new a.Geometry(!0),n=r.updateGeoGroup(0),s=[];for(let t=0,i=e.length;t<i;t++){var o=e[t];o&&(void 0!==o.surfaceColor?s[t]=o.surfaceColor:o.color&&(s[t]=h.CC.color(o.color)))}var c=n.vertexArray,d=t.vertices;for(let e=0,t=d.length;e<t;e++){let t=3*n.vertices;c[t]=d[e].x,c[t+1]=d[e].y,c[t+2]=d[e].z,n.vertices++}var u=n.colorArray;let f=n.atomArray;if(i.voldata&&i.volscheme){var p=i.volscheme,m=i.voldata,g=p.range()||[-1,1];for(let t=0,i=d.length;t<i;t++){let i=d[t].atomid,r=m.getVal(d[t].x,d[t].y,d[t].z),n=h.CC.color(p.valueToHex(r,g)),s=3*t;u[s]=n.r,u[s+1]=n.g,u[s+2]=n.b,f[t]=e[i]}}else if(s.length>0)for(let t=0,i=d.length;t<i;t++){let i=d[t].atomid,r=3*t;u[r]=s[i].r,u[r+1]=s[i].g,u[r+2]=s[i].b,f[t]=e[i]}var v=t.faces;n.faceidx=v.length,r.initTypedArrays();var _,y,b,x,w=n.vertexArray,A=n.normalArray;for(let e=0,t=v.length;e<t;e+=3){var C=3*v[e],S=3*v[e+1],z=3*v[e+2];_=new l.Vector3(w[C],w[C+1],w[C+2]),y=new l.Vector3(w[S],w[S+1],w[S+2]),(b=new l.Vector3(w[z],w[z+1],w[z+2])).subVectors(b,y),_.subVectors(_,y),b.cross(_),(x=b).normalize(),A[C]+=x.x,A[S]+=x.x,A[z]+=x.x,A[C+1]+=x.y,A[S+1]+=x.y,A[z+1]+=x.y,A[C+2]+=x.z,A[S+2]+=x.z,A[z+2]+=x.z}return n.faceArray=new Uint16Array(v),new a.Mesh(r,i)}static generateMeshSyncHelper(e,t,i,r,n,s){var a=new ProteinSurface;return a.initparm(t,1!==e,s),a.fillvoxels(n,i),a.buildboundary(),e!=Re.SES&&e!=Re.MS||(a.fastdistancemap(),a.boundingatom(!1),a.fillvoxelswaals(n,i)),a.marchingcube(e),a.getFacesAndVertices(r)}static getMatWithStyle(e){let t=null;for(var i in t=e.onesided?new a.MeshLambertMaterial:new a.MeshDoubleLambertMaterial,t.vertexColors=a.Coloring.VertexColors,e)"color"===i||"map"===i||e.hasOwnProperty(i)&&(t[i]=e[i]);return void 0!==e.opacity&&(1===e.opacity?t.transparent=!1:t.transparent=!0),void 0!==e.wireframe&&(t.wireframe=e.wireframe),t}addMesh(e){let t={geo:e.geometry,mat:e.material,done:!0,finished:!1};var i=this.nextSurfID();return this.surfaces[i]=new Surface([t]),i}static shallowCopy(e){var t=[];let i=e.length;for(let r=0;r<i;r++)t[r]=(0,d.extend)({},e[r]);return t}addSurface(e,t={},i={},r,n,s){let o=this.nextSurfID(),h=null,u=this,f=Re.VDW;"string"==typeof e?void 0!==GLViewer.surfaceTypeMap[e.toUpperCase()]?f=GLViewer.surfaceTypeMap[e]:console.log("Surface type : "+e+" is not recognized"):"number"==typeof e&&(f=e);var p=null,m=null,g=GLViewer.shallowCopy(this.getAtomsFromSel(i));p=r?GLViewer.shallowCopy(this.getAtomsFromSel(r)):g,(0,d.adjustVolumeStyle)(t);var v,_=!1;for(v=0;v<this.models.length;v++)if(this.models[v]){var y=this.models[v].getSymmetries();if(y.length>1||1==y.length&&!y[0].isIdentity()){_=!0;break}}var b=function(e,i,r){var s;m=n?GLViewer.shallowCopy(u.getAtomsFromSel(n)):r;var a=(0,d.getExtent)(r,!0);if(t.map&&t.map.prop){var l=t.map.prop;let e=(0,c.getGradient)(t.map.scheme||t.map.gradient||new c.Gradient.RWB),i=e.range();i||(i=(0,d.getPropertyRange)(r,l)),t.colorscheme={prop:l,gradient:e}}for(let e=0,r=i.length;e<r;e++)(s=i[e]).surfaceColor=(0,d.getColorFromStyle)(s,t);var p=GLViewer.volume(a),g=u.carveUpExtent(a,i,r);if(m&&m.length&&m.length>0){var v=(0,d.getExtent)(m,!0);g.sort(function(e,t){var i=function(e,t){var i=e.extent,r=i[1][0]-i[0][0],n=i[1][1]-i[0][1],s=i[1][2]-i[0][2],a=r-t[2][0];a*=a;var o=n-t[2][1];o*=o;var l=s-t[2][2];return a+o+(l*=l)};return i(e,v)-i(t,v)})}var _=[];for(let e=0,t=i.length;e<t;e++)s=i[e],_[e]={x:s.x,y:s.y,z:s.z,serial:e,elem:s.elem};var y=!!ke;if("undefined"!=typeof $3Dmol&&void 0!==$3Dmol.SurfaceWorker||(console.log("$3Dmol.SurfaceWorker is not defined, using synchronous surface generation."),y=!0),y){var b=function(t){return new Promise(function(r){for(var n=GLViewer.generateMeshSyncHelper(f,g[t].extent,g[t].atoms,g[t].toshow,_,p),s=Ne({vertexArr:n.vertices,faceArr:n.faces}),a=0,o=s.length;a<o;a++){n={vertices:s[a].vertexArr,faces:s[a].faceArr};var l=GLViewer.generateSurfaceMesh(i,n,h);(0,d.mergeGeos)(e.geo,l)}u.render(),r()})},x=[];for(let e=0;e<g.length;e++)x.push(b(e));return Promise.all(x).then(function(){return e.done=!0,u.render(),Promise.resolve(o)})}var w=[];f<0&&(f=0);for(let e=0,t=GLViewer.numWorkers;e<t;e++){var A=new Worker($3Dmol.SurfaceWorker);w.push(A),A.postMessage({type:-1,atoms:_,volume:p})}return new Promise(function(t,r){var n=0,s=function(){w&&w.length&&w.forEach(function(e){e&&e.terminate&&e.terminate()})},a=function(r){for(var a=Ne({vertexArr:r.data.vertices,faceArr:r.data.faces}),l=0,c=a.length;l<c;l++){var f={vertices:a[l].vertexArr,faces:a[l].faceArr},p=GLViewer.generateSurfaceMesh(i,f,h);(0,d.mergeGeos)(e.geo,p)}u.render(),++n==g.length&&(e.done=!0,s(),t(o))},l=function(e){s(),console.log(e.message+" ("+e.filename+":"+e.lineno+")"),r(e)};for(let e=0;e<g.length;e++){var c=w[e%w.length];c.onmessage=a,c.onerror=l,c.postMessage({type:f,expandedExtent:g[e].extent,extendedAtoms:g[e].atoms,atomsToShow:g[e].toshow})}})};t=t||{},h=GLViewer.getMatWithStyle(t);let x=new Surface([]);x.style=t,x.atomsel=i,x.allsel=r,x.focus=n;var w=null;if(_){var A={},C={};for(v=0;v<this.models.length;v++)A[v]=[],C[v]=[];for(v=0;v<p.length;v++)A[p[v].model].push(p[v]);for(v=0;v<g.length;v++)C[g[v].model].push(g[v]);var S=[];for(v=0;v<this.models.length;v++)C[v].length>0&&(x.push({geo:new a.Geometry(!0),mat:h,done:!1,finished:!1,symmetries:this.models[v].getSymmetries()}),S.push(b(x[x.length-1],A[v],C[v])));w=Promise.all(S)}else x.push({geo:new a.Geometry(!0),mat:h,done:!1,finished:!1,symmetries:[new l.Matrix4]}),w=b(x[x.length-1],p,g);return this.surfaces[o]=x,w.surfid=o,s&&"function"==typeof s?(w.then(function(e){s(e)}),o):w}setSurfaceMaterialStyle(e,t){if((0,d.adjustVolumeStyle)(t),this.surfaces[e]){var i=this.surfaces[e];for(let e=0;e<i.length;e++){var r=i[e].mat=GLViewer.getMatWithStyle(t);if(i[e].mat.side=a.FrontSide,t.wireframe&&i[e].geo.setUpWireframe(),t.color){i[e].mat.color=h.CC.color(t.color),i[e].geo.colorsNeedUpdate=!0;const r=h.CC.color(t.color);i[e].geo.setColor(r)}else if(r.voldata&&r.volscheme){const t=r.volscheme,n=r.voldata,s=h.CC,a=t.range()||[-1,1];i[e].geo.setColors(function(e,i,r){let o=n.getVal(e,i,r);return s.color(t.valueToHex(o,a))})}else{i[e].geo.colorsNeedUpdate=!0;for(let r of i[e].geo.geometryGroups)for(let e=0;e<r.vertices;e++){let i=(0,d.getColorFromStyle)(r.atomArray[e],t),n=3*e;r.colorArray[n]=i.r,r.colorArray[n+1]=i.g,r.colorArray[n+2]=i.b}}i[e].finished=!1}}return this}getSurface(e){return this.surfaces[e]}removeSurface(e){for(var t=this.surfaces[e],i=0;i<t.length;i++)t[i]&&t[i].lastGL&&(void 0!==t[i].geo&&t[i].geo.dispose(),void 0!==t[i].mat&&t[i].mat.dispose(),this.modelGroup.remove(t[i].lastGL));return delete this.surfaces[e],this.show(),this}removeAllSurfaces(){for(var e in this.surfaces)if(this.surfaces.hasOwnProperty(e)){for(var t=this.surfaces[e],i=0;i<t.length;i++)t[i]&&t[i].lastGL&&(void 0!==t[i].geo&&t[i].geo.dispose(),void 0!==t[i].mat&&t[i].mat.dispose(),this.modelGroup.remove(t[i].lastGL));delete this.surfaces[e]}return this.show(),this}jmolMoveTo(){var e=this.modelGroup.position,t="center { "+-e.x+" "+-e.y+" "+-e.z+" }; ",i=this.rotationGroup.quaternion;return t+="moveto .5 quaternion { "+i.x+" "+i.y+" "+i.z+" "+i.w+" };"}clear(){return this.removeAllSurfaces(),this.removeAllModels(),this.removeAllLabels(),this.removeAllShapes(),this.show(),this}mapAtomProperties(e,t){t=t||{};var i=this.getAtomsFromSel(t);if("function"==typeof e)for(let t=0,r=i.length;t<r;t++)e(i[t]);else for(let t=0,s=i.length;t<s;t++){var r=i[t];for(let t=0,i=e.length;t<i;t++){let i=e[t];if(i.props)for(var n in i.props)i.props.hasOwnProperty(n)&&this.atomIsSelected(r,i)&&(r.properties||(r.properties={}),r.properties[n]=i.props[n])}}return this}linkViewer(e){return this.linkedViewers.push(e),this}getPerceivedDistance(){return this.CAMERA_Z-this.rotationGroup.position.z}setPerceivedDistance(e){this.rotationGroup.position.z=this.CAMERA_Z-e}setAutoEyeSeparation(e,t){var i=this.getPerceivedDistance();return t||(t=5),e||this.camera.position.x>0?this.camera.position.x=i*Math.tan(Math.PI/180*t):this.camera.position.x=-i*Math.tan(Math.PI/180*t),this.camera.lookAt(new l.Vector3(0,0,this.rotationGroup.position.z)),this.camera.position.x}setDefaultCartoonQuality(e){this.config.cartoonQuality=e}}function je(e,t){if(e=(0,d.getElement)(e)){t=t||{};try{return new GLViewer(e,t)}catch(e){throw"error creating viewer: "+e}}}function He(e,t={},i={}){if(e=(0,d.getElement)(e)){var r=[],n=document.createElement("canvas");i.rows=t.rows,i.cols=t.cols,i.control_all=null!=t.control_all&&t.control_all,e.appendChild(n);try{for(var s=0;s<t.rows;s++){for(var a=[],o=0;o<t.cols;o++){i.row=s,i.col=o,i.canvas=n,i.viewers=r,i.control_all=t.control_all;var l=je(e,(0,d.extend)({},i));a.push(l)}r.unshift(a)}}catch(e){throw"error creating viewer grid: "+e}return r}}function We(e){var t=this;if(e=(0,d.getElement)(e)){var i=He(e,{rows:1,cols:2,control_all:!0});this.glviewer1=i[0][0],this.glviewer2=i[0][1],this.glviewer1.setAutoEyeSeparation(!1),this.glviewer2.setAutoEyeSeparation(!0),this.glviewer1.linkViewer(this.glviewer2),this.glviewer2.linkViewer(this.glviewer1);for(var r=Object.getOwnPropertyNames(this.glviewer1.__proto__).filter(function(e){return"function"==typeof t.glviewer1[e]}),n=0;n<r.length;n++)this[r[n]]=function(e){return function(){return[this.glviewer1[e].apply(this.glviewer1,arguments),this.glviewer2[e].apply(this.glviewer2,arguments)]}}(r[n]);this.setCoordinates=function(e,t,i){for(var r=0;r<e.length;r++)e[r].setCoordinates(t,i)},this.surfacesFinished=function(){return this.glviewer1.surfacesFinished()&&this.glviewer2.surfacesFinished()},this.isAnimated=function(){return this.glviewer1.isAnimated()||this.glviewer2.isAnimated()},this.render=function(e){this.glviewer1.render(),this.glviewer2.render(),e&&e(this)},this.getCanvas=function(){return this.glviewer1.getCanvas()}}}GLViewer.numWorkers=4,GLViewer.maxVolume=64e3,GLViewer.surfaceTypeMap={VDW:Re.VDW,MS:Re.MS,SAS:Re.SAS,SES:Re.SES};var qe=!1,Ye=!1,Ze={};function Xe(e,t){var i,r,n;if(null!=document.querySelector(".viewer_3Dmoljs")&&(qe=!0),qe){Ye=!0,e=null!=e?e:null;var s=0;document.querySelectorAll(".viewer_3Dmoljs").forEach(a=>{var o=[],l=[],c="";"static"==a.style.position&&(a.style.position="relative");var u=null;if(n=null,a.dataset.pdb)o.push("https://files.rcsb.org/view/"+a.dataset.pdb+".pdb"),l.push("pdb");else if(a.dataset.cid)l.push("sdf"),o.push("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+a.dataset.cid+"/SDF?record_type=3d");else if(a.dataset.href||a.dataset.url){if(c=a.dataset.href?a.dataset.href:a.dataset.url,o.push(c),"gz"==(n=c.substring(c.lastIndexOf(".")+1))){let e=c.substring(0,c.lastIndexOf(".")).lastIndexOf(".");n=c.substring(e+1)}l.push(n);var f=c.substring(c.lastIndexOf("/")+1,c.lastIndexOf("."));"/"==f&&(f=c.substring(c.lastIndexOf("/")+1)),a.dataset[l[l.length-1]]=f}let p=a.dataset;for(i in p)"pdb"===i.substring(0,3)&&"pdb"!==i?(o.push("https://files.rcsb.org/view/"+p[i]+".pdb"),l.push("pdb")):"href"===i.substring(0,4)&&"href"!==i?(c=p[i],o.push(c),l.push(c.substring(c.lastIndexOf(".")+1))):"cid"===i.substring(0,3)&&"cid"!==i&&(o.push("https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+p[i]+"/SDF?record_type=3d"),l.push("sdf"));var m={};a.dataset.options&&(m=(0,d.specStringToObject)(a.dataset.options));var g=h.CC.color(a.dataset.backgroundcolor),v=a.dataset.backgroundalpha;v=null==v?1:parseFloat(v);var _=!!a.dataset.style,y={line:{}};_&&(y=(0,d.specStringToObject)(a.dataset.style));var b={};a.dataset.select&&(b=(0,d.specStringToObject)(a.dataset.select));var x=[],w=[],A=[],C={},S=null,z=a.dataset,M=/style(.+)/,T=/surface(.*)/,E=/labelres(.*)/,L=[];for(r in z)Object.prototype.hasOwnProperty.call(z,r)&&L.push(r);for(L.sort(),i=0;i<L.length;i++){r=L[i];var F,I,D,O=M.exec(r);O&&(F="select"+O[1],I=(0,d.specStringToObject)(z[F]),D=(0,d.specStringToObject)(z[r]),x.push([I,D])),(O=T.exec(r))&&(F="select"+O[1],I=(0,d.specStringToObject)(z[F]),D=(0,d.specStringToObject)(z[r]),w.push([I,D])),(O=E.exec(r))&&(F="select"+O[1],I=(0,d.specStringToObject)(z[F]),D=(0,d.specStringToObject)(z[r]),A.push([I,D])),"zoomto"==r&&(C=(0,d.specStringToObject)(z[r])),"spin"==r&&(S=(0,d.specStringToObject)(z[r]))}var R=function(e){for(_?e.setStyle(b,y):e.addStyle(b,y),u&&u.createSelectionAndStyle(b,y),i=0;i<x.length;i++){let t=x[i][0]||{},r=x[i][1]||{line:{}};e.setStyle(t,r),u&&u.createSelectionAndStyle(b,y)}for(i=0;i<w.length;i++){let t=w[i][0]||{},r=w[i][1]||{};u?e.addSurface(Re.VDW,r,t,t).then(e=>{u.loadSurface("VDW",t,r,e)}):e.addSurface(Re.VDW,r,t,t)}for(i=0;i<A.length;i++){let t=A[i][0]||{},r=A[i][1]||{};e.addResLabels(t,r)}e.render(),e.zoomTo(C),S&&e.spin(S.axis,S.speed)};let k=e;try{var P=(0,d.specStringToObject)(a.dataset.config)||{};void 0===P.backgroundColor&&(P.backgroundColor=g),void 0===P.backgroundAlpha&&(P.backgroundAlpha=v),null==k?k=Ze[a.id||s++]=je(a,P):(k.setBackgroundColor(g,v),k.setConfig(P),u&&u.initiateUI()),a.dataset.ui&&$3Dmol.StateManager&&(u=new $3Dmol.StateManager(k))}catch(e){console.log(e),a.textContent="WebGL appears to be disabled."}if(0!=o.length){let e=0,i=((r,n)=>function(s){c=o[e];var a=r.dataset.type||r.dataset.datatype||l[e];if(n.addModel(s,a,m),u){var h=r.dataset[l[e]];u.setModelTitle(h)}e+=1,e<o.length?(0,d.get)(o[e]).then(i):(R(n),r.dataset.callback&&(0,d.makeFunction)(r.dataset.callback)(n),Ye=!1,t&&t(n))})(a,k);n&&n.endsWith("gz")?(0,d.getbin)(o[0]).then(i):(0,d.get)(o[0]).then(i)}else{if(a.dataset.element){var U="#"+a.dataset.element,N=document.querySelector(U),B=N?N.textContent:"";n=a.dataset.type||a.dataset.datatype,k.addModel(B,n,m)}R(k),a.dataset.callback&&(0,d.makeFunction)(a.dataset.callback)(k),Ye=!1,t&&t(k)}})}}document.onreadystatechange=()=>{"complete"===document.readyState&&Xe()};const Ke={"ALA:N":-.15,"ALA:CA":.1,"ALA:CB":0,"ALA:C":.6,"ALA:O":-.55,"ARG:N":-.15,"ARG:CA":.1,"ARG:CB":0,"ARG:CG":0,"ARG:CD":.1,"ARG:NE":-.1,"ARG:CZ":.5,"ARG:NH1":.25,"ARG:NH2":.25,"ARG:C":.6,"ARG:O":-.55,"ASN:N":-.15,"ASN:CA":.1,"ASN:CB":0,"ASN:CG":.55,"ASN:OD1":-.55,"ASN:ND2":0,"ASN:C":.6,"ASN:O":-.55,"ASP:N":-.15,"ASP:CA":.1,"ASP:CB":0,"ASP:CG":.14,"ASP:OD1":-.57,"ASP:OD2":-.57,"ASP:C":.6,"ASP:O":-.55,"CYS:N":-.15,"CYS:CA":.1,"CYS:CB":.19,"CYS:SG":-.19,"CYS:C":.6,"CYS:O":-.55,"GLN:N":-.15,"GLN:CA":.1,"GLN:CB":0,"GLN:CG":0,"GLN:CD":.55,"GLN:OE1":-.55,"GLN:NE2":0,"GLN:C":.6,"GLN:O":-.55,"GLU:N":-.15,"GLU:CA":.1,"GLU:CB":0,"GLU:CG":0,"GLU:CD":.14,"GLU:OE1":-.57,"GLU:OE2":-.57,"GLU:C":.6,"GLU:O":-.55,"GLY:N":-.15,"GLY:CA":.1,"GLY:C":.6,"GLY:O":-.55,"HIS:N":-.15,"HIS:CA":.1,"HIS:CB":0,"HIS:CG":.1,"HIS:ND1":-.1,"HIS:CD2":.1,"HIS:NE2":-.4,"HIS:CE1":.3,"HIS:C":.6,"HIS:O":-.55,"ILE:N":-.15,"ILE:CA":.1,"ILE:CB":0,"ILE:CG2":0,"ILE:CG1":0,"ILE:CD":0,"ILE:C":.6,"ILE:O":-.55,"LEU:N":-.15,"LEU:CA":.1,"LEU:CB":0,"LEU:CG":0,"LEU:CD1":0,"LEU:CD2":0,"LEU:C":.6,"LEU:O":-.55,"LYS:N":-.15,"LYS:CA":.1,"LYS:CB":0,"LYS:CG":0,"LYS:CD":0,"LYS:CE":.25,"LYS:NZ":.75,"LYS:C":.6,"LYS:O":-.55,"MET:N":-.15,"MET:CA":.1,"MET:CB":0,"MET:CG":.06,"MET:SD":-.12,"MET:CE":.06,"MET:C":.6,"MET:O":-.55,"PHE:N":-.15,"PHE:CA":.1,"PHE:CB":0,"PHE:CG":0,"PHE:CD1":0,"PHE:CD2":0,"PHE:CE1":0,"PHE:CE2":0,"PHE:CZ":0,"PHE:C":.6,"PHE:O":-.55,"PRO:N":-.25,"PRO:CD":.1,"PRO:CA":.1,"PRO:CB":0,"PRO:CG":0,"PRO:C":.6,"PRO:O":-.55,"SER:N":-.15,"SER:CA":.1,"SER:CB":.25,"SER:OG":-.25,"SER:C":.6,"SER:O":-.55,"THR:N":-.15,"THR:CA":.1,"THR:CB":.25,"THR:OG1":-.25,"THR:CG2":0,"THR:C":.6,"THR:O":-.55,"TRP:N":-.15,"TRP:CA":.1,"TRP:CB":0,"TRP:CG":-.03,"TRP:CD2":.1,"TRP:CE2":-.04,"TRP:CE3":-.03,"TRP:CD1":.06,"TRP:NE1":-.06,"TRP:CZ2":0,"TRP:CZ3":0,"TRP:CH2":0,"TRP:C":.6,"TRP:O":-.55,"TYR:N":-.15,"TYR:CA":.1,"TYR:CB":0,"TYR:CG":0,"TYR:CD1":0,"TYR:CE1":0,"TYR:CD2":0,"TYR:CE2":0,"TYR:CZ":.25,"TYR:OH":-.25,"TYR:C":.6,"TYR:O":-.55,"VAL:N":-.15,"VAL:CA":.1,"VAL:CB":0,"VAL:CG1":0,"VAL:CG2":0,"VAL:C":.6,"VAL:O":-.55};function Qe(e,t){if((!t||void 0===e.partialCharge)&&e.resn&&e.atom){var i=e.resn+":"+e.atom;e.properties.partialCharge=Ke[i]}}window&&(window.$3Dmol=t)},40(e,t,i){i.r(t),i.d(t,{bondLength:()=>n,bondTable:()=>r,setBondLength:()=>s});let r={H:.37,He:.32,Li:1.34,Be:.9,B:.82,C:.77,N:.75,O:.73,F:.71,Ne:.69,Na:1.54,Mg:1.3,Al:1.18,Si:1.11,P:1.06,S:1.02,Cl:.99,Ar:.97,K:1.96,Ca:1.74,Sc:1.44,Ti:1.56,V:1.25,Mn:1.39,Fe:1.25,Co:1.26,Ni:1.21,Cu:1.38,Zn:1.31,Ga:1.26,Ge:1.22,Se:1.16,Br:1.14,Kr:1.1,Rb:2.11,Sr:1.92,Y:1.62,Zr:1.48,Nb:1.37,Mo:1.45,Tc:1.56,Ru:1.26,Rh:1.35,Pd:1.31,Ag:1.53,Cd:1.48,In:1.44,Sn:1.41,Sb:1.38,Te:1.35,I:1.33,Xe:1.3,Cs:2.25,Ba:1.98,Lu:1.6,Hf:1.5,Ta:1.38,W:1.46,Re:1.59,Os:1.44,Ir:1.37,Pt:1.28,Au:1.44,Hg:1.49,Tl:1.48,Pb:1.47,Bi:1.46,Rn:1.45};function n(e){return r[e]||1.6}function s(e,t){t<0&&(t=0),r[e]=t}},59(e,t,i){var r;i.r(t),i.d(t,{BackSide:()=>s,Camera:()=>Camera,ClampToEdgeWrapping:()=>c,Coloring:()=>r,Cylinder:()=>z.Cylinder,DoubleSide:()=>a,EventDispatcher:()=>EventDispatcher,FloatType:()=>m,Fog:()=>Fog,FrontSide:()=>n,Geometry:()=>Geometry,GeometryGroup:()=>GeometryGroup,GeometryIDCount:()=>A,ImposterMaterial:()=>ImposterMaterial,InstancedMaterial:()=>InstancedMaterial,Light:()=>Light,Line:()=>Line,LineBasicMaterial:()=>LineBasicMaterial,LineStyle:()=>B,LinearFilter:()=>d,LinearMipMapLinearFilter:()=>f,Material:()=>Material,MaterialIdCount:()=>x,Matrix3:()=>l.Matrix3,Matrix4:()=>l.Matrix4,Mesh:()=>Mesh,MeshDoubleLambertMaterial:()=>MeshDoubleLambertMaterial,MeshLambertMaterial:()=>MeshLambertMaterial,MeshOutlineMaterial:()=>MeshOutlineMaterial,NearestFilter:()=>u,Object3D:()=>Object3D,Object3DIDCount:()=>C,Projector:()=>Projector,Quaternion:()=>l.Quaternion,R32Format:()=>_,RFormat:()=>v,RGBAFormat:()=>g,Ray:()=>l.Ray,Raycaster:()=>Raycaster,Renderer:()=>Renderer,RingImposterMaterial:()=>RingImposterMaterial,Scene:()=>Scene,ShaderLib:()=>ue,ShaderUtils:()=>pe,Shading:()=>o,Sphere:()=>z.Sphere,SphereImposterMaterial:()=>SphereImposterMaterial,SphereImposterOutlineMaterial:()=>SphereImposterOutlineMaterial,Sprite:()=>Sprite,SpriteAlignment:()=>h,SpriteMaterial:()=>SpriteMaterial,SpritePlugin:()=>SpritePlugin,StickImposterMaterial:()=>StickImposterMaterial,StickImposterOutlineMaterial:()=>StickImposterOutlineMaterial,Texture:()=>Texture,TextureIdCount:()=>N,TextureOperations:()=>y,Triangle:()=>z.Triangle,UVMapping:()=>UVMapping,UnsignedByteType:()=>p,Vector2:()=>l.Vector2,Vector3:()=>l.Vector3,VolumetricMaterial:()=>VolumetricMaterial,basic:()=>V,clamp:()=>l.clamp,clone:()=>fe,conversionMatrix3:()=>l.conversionMatrix3,degToRad:()=>l.degToRad,instanced:()=>H,intersectObject:()=>U,lambert:()=>q,lambertdouble:()=>Z,outline:()=>K,ringimposter:()=>ee,screen:()=>Q,screenaa:()=>$,sphereimposter:()=>ie,sphereimposteroutline:()=>ne,sprite:()=>se,stickimposter:()=>le,stickimposteroutline:()=>he,volumetric:()=>de}),function(e){e[e.NoColors=0]="NoColors",e[e.FaceColors=1]="FaceColors",e[e.VertexColors=2]="VertexColors"}(r||(r={}));const n=0,s=1,a=2;var o;!function(e){e[e.NoShading=0]="NoShading",e[e.FlatShading=1]="FlatShading",e[e.SmoothShading=2]="SmoothShading"}(o||(o={}));var l=i(529);const h={topLeft:new l.Vector2(1,-1),topCenter:new l.Vector2(0,-1),topRight:new l.Vector2(-1,-1),centerLeft:new l.Vector2(1,0),center:new l.Vector2(0,0),centerRight:new l.Vector2(-1,0),bottomLeft:new l.Vector2(1,1),bottomCenter:new l.Vector2(0,1),bottomRight:new l.Vector2(-1,1)},c=1001,d=1006,u=1007,f=1008,p=1009,m=1010,g=1021,v=1022,_=1023;var y;!function(e){e[e.MultiplyOperation=0]="MultiplyOperation",e[e.MixOperation=1]="MixOperation",e[e.AddOperation=2]="AddOperation"}(y||(y={}));class EventDispatcher{constructor(){this.listeners={}}dispatchEvent(e){var t=this.listeners[e.type];if(void 0!==t){e.target=this;for(var i=0,r=t.length;i<r;i++)t[i].call(this,e)}}removeEventListener(e,t){if(t){var i=this.listeners[e].indexOf(t);-1!==i&&this.listeners[e].splice(i,1)}else this.listeners[e]=[]}addEventListener(e,t){void 0===this.listeners[e]&&(this.listeners[e]=[]),-1===this.listeners[e].indexOf(t)&&this.listeners[e].push(t)}}var b=i(222);class Material extends EventDispatcher{constructor(){super(...arguments),this.id=x++,this.name="",this.side=n,this.opacity=1,this.transparent=!1,this.depthTest=!0,this.depthWrite=!0,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.alphaTest=0,this.visible=!0,this.needsUpdate=!0,this.outline=!1,this.wireframe=!1,this.shaded=!1}setValues(e={}){if(void 0!==e)for(var t in e){var i=e[t];if(void 0!==i){if(t in this){var r=this[t];r instanceof b.Color&&i instanceof b.Color?r.copy(i):r instanceof b.Color?r.set(i):r instanceof l.Vector3&&i instanceof l.Vector3?r.copy(i):this[t]=i}}else console.warn("$3Dmol.Material: '"+t+"' parameter is undefined.")}}clone(e=new Material){return e.name=this.name,e.side=this.side,e.opacity=this.opacity,e.transparent=this.transparent,e.depthTest=this.depthTest,e.depthWrite=this.depthWrite,e.polygonOffset=this.polygonOffset,e.polygonOffsetFactor=this.polygonOffsetFactor,e.polygonOffsetUnits=this.polygonOffsetUnits,e.alphaTest=this.alphaTest,e.overdraw=this.overdraw,e.visible=this.visible,e}makeShaded(e){this.shaded=!0,this.uniforms&&(this.uniforms.shading={type:"i",value:e},this.uniforms.vWidth={type:"f",value:1},this.uniforms.vHeight={type:"f",value:1})}dispose(){this.dispatchEvent({type:"dispose"})}}let x=0;class LineBasicMaterial extends Material{constructor(e){super(),this.color=new b.Color(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.vertexColors=!1,this.fog=!0,this.shaderID="basic",this.setValues(e)}clone(e=new LineBasicMaterial){return super.clone.call(this,e),e.color.copy(this.color),e}}const w=65535;class GeometryGroup{constructor(e=0){this.vertexArray=null,this.colorArray=null,this.normalArray=null,this.radiusArray=null,this.faceArray=null,this.lineArray=null,this.atomArray=Array(),this.vertices=0,this.faceidx=0,this.lineidx=0,this.__inittedArrays=!1,this.id=e}setColor(e){var t=this.vertexArray,i=this.colorArray;if(!t)throw new Error("vertex array not initialized");if(!i)throw new Error("color array not initialized");let r=b.CC.color(e);for(var n=0;n<t.length;n+=3)i[n]=r.r,i[n+1]=r.g,i[n+2]=r.b}setColors(e){var t=this.vertexArray,i=this.colorArray;if(!t)throw new Error("vertex array not initialized");if(!i)throw new Error("color array not initialized");if(t.length==i.length)for(var r=0;r<t.length;r+=3){var n=e(t[r],t[r+1],t[r+2]);n instanceof b.Color||(n=b.CC.color(n)),i[r]=n.r,i[r+1]=n.g,i[r+2]=n.b}else console.log("Cannot re-color geometry group due to mismatched lengths.")}getNumVertices(){return this.vertices}getVertices(){return this.vertexArray}getCentroid(){if(!this.vertexArray)throw new Error("vertex array not initialized");for(var e,t,i,r,n=new l.Vector3,s=0;s<this.vertices;++s)e=3*s,t=this.vertexArray[e],i=this.vertexArray[e+1],r=this.vertexArray[e+2],n.x+=t,n.y+=i,n.z+=r;return n.divideScalar(this.vertices),n}setNormals(){var e=this.faceArray,t=this.vertexArray,i=this.normalArray;if(this.vertices&&this.faceidx){if(!e)throw new Error("face array not initialized");if(!t)throw new Error("vertex array not initialized");if(!i)throw new Error("normal array not initialized");for(var r,n,s,a,o,h,c,d=0;d<e.length/3;++d)r=3*e[3*d],n=3*e[3*d+1],s=3*e[3*d+2],a=new l.Vector3(t[r],t[r+1],t[r+2]),o=new l.Vector3(t[n],t[n+1],t[n+2]),h=new l.Vector3(t[s],t[s+1],t[s+2]),a.subVectors(a,o),h.subVectors(h,o),h.cross(a),(c=h).normalize(),i[r]+=c.x,i[n]+=c.x,i[s]+=c.x,i[r+1]+=c.y,i[n+1]+=c.y,i[s+1]+=c.y,i[r+2]+=c.z,i[n+2]+=c.z,i[s+2]+=c.z}}setLineIndices(){if(this.faceidx&&(!this.lineArray||this.lineArray.length!=2*this.faceidx||this.lineidx!=2*this.faceidx)){var e=this.faceArray,t=this.lineArray=new Uint16Array(2*this.faceidx);if(this.lineidx=2*this.faceidx,!e)throw new Error("face array not initialized");for(var i=0;i<this.faceidx/3;++i){var r=3*i,n=2*r,s=e[r],a=e[r+1],o=e[r+2];t[n]=s,t[n+1]=a,t[n+2]=s,t[n+3]=o,t[n+4]=a,t[n+5]=o}}}vrml(e,t){var i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b="";if(b+=e+"Shape {\n"+e+" appearance Appearance {\n"+e+" material Material {\n"+e+" diffuseColor "+(null===(i=null==t?void 0:t.color)||void 0===i?void 0:i.r)+" "+(null===(r=null==t?void 0:t.color)||void 0===r?void 0:r.g)+" "+(null===(n=null==t?void 0:t.color)||void 0===n?void 0:n.b)+"\n",t.wireframe&&this.colorArray){let t=this.colorArray;b+=e+" emissiveColor "+t[0]+" "+t[1]+" "+t[2]+"\n"}(null==t?void 0:t.transparent)&&(b+=e+" transparency "+(1-t.opacity)+"\n"),b+=e+" }\n",b+=e+" }\n";var x=e;if(e+=" ",t instanceof LineBasicMaterial||t.wireframe){let i,r,n;b+=e+"geometry IndexedLineSet {\n"+e+" colorPerVertex TRUE\n"+e+" coord Coordinate {\n"+e+" point [\n";for(let t=0;t<this.vertices;++t){let l=3*t;i=null===(s=this.vertexArray)||void 0===s?void 0:s[l],r=null===(a=this.vertexArray)||void 0===a?void 0:a[l+1],n=null===(o=this.vertexArray)||void 0===o?void 0:o[l+2],b+=e+" "+i+" "+r+" "+n+",\n"}if(b+=e+" ]\n",b+=e+" }\n",this.colorArray&&!t.wireframe){b+=e+" color Color {\n"+e+" color [\n";for(let t=0;t<this.vertices;++t){let s=3*t;i=this.colorArray[s],r=this.colorArray[s+1],n=this.colorArray[s+2],b+=e+" "+i+" "+r+" "+n+",\n"}b+=e+" ]\n",b+=e+" }\n"}if(b+=e+" coordIndex [\n",t.wireframe&&this.faceArray)for(let t=0;t<this.faceidx;t+=3)i=null===(l=this.faceArray)||void 0===l?void 0:l[t],r=null===(h=this.faceArray)||void 0===h?void 0:h[t+1],n=null===(c=this.faceArray)||void 0===c?void 0:c[t+2],b+=e+" "+i+", "+r+", "+n+", -1,\n";else for(let t=0;t<this.vertices-1;t+=2)b+=e+" "+t+", "+(t+1)+", -1,\n";b+=e+" ]\n",b+=e+"}\n"}else{let t,i,r;b+=e+"geometry IndexedFaceSet {\n"+e+" colorPerVertex TRUE\n"+e+" normalPerVertex TRUE\n"+e+" solid FALSE\n",b+=e+" coord Coordinate {\n"+e+" point [\n";for(let n=0;n<this.vertices;++n){let s=3*n;t=null===(d=this.vertexArray)||void 0===d?void 0:d[s],i=null===(u=this.vertexArray)||void 0===u?void 0:u[s+1],r=null===(f=this.vertexArray)||void 0===f?void 0:f[s+2],b+=e+" "+t+" "+i+" "+r+",\n"}b+=e+" ]\n",b+=e+" }\n",b+=e+" normal Normal {\n"+e+" vector [\n";for(let n=0;n<this.vertices;++n){let s=3*n;t=null===(p=this.normalArray)||void 0===p?void 0:p[s],i=null===(m=this.normalArray)||void 0===m?void 0:m[s+1],r=null===(g=this.normalArray)||void 0===g?void 0:g[s+2],b+=e+" "+t+" "+i+" "+r+",\n"}if(b+=e+" ]\n",b+=e+" }\n",this.colorArray){b+=e+" color Color {\n"+e+" color [\n";for(let n=0;n<this.vertices;++n){let s=3*n;t=this.colorArray[s],i=this.colorArray[s+1],r=this.colorArray[s+2],b+=e+" "+t+" "+i+" "+r+",\n"}b+=e+" ]\n",b+=e+" }\n"}b+=e+" coordIndex [\n";for(let n=0;n<this.faceidx;n+=3)t=null===(v=this.faceArray)||void 0===v?void 0:v[n],i=null===(_=this.faceArray)||void 0===_?void 0:_[n+1],r=null===(y=this.faceArray)||void 0===y?void 0:y[n+2],b+=e+" "+t+", "+i+", "+r+", -1,\n";b+=e+" ]\n",b+=e+"}\n"}return b+=x+"}"}truncateArrayBuffers(e=!0,t=!1){var i=this.vertexArray,r=this.colorArray,n=this.normalArray,s=this.faceArray,a=this.lineArray,o=this.radiusArray;this.vertexArray=(null==i?void 0:i.subarray(0,3*this.vertices))||null,this.colorArray=(null==r?void 0:r.subarray(0,3*this.vertices))||null,e?(this.normalArray=(null==n?void 0:n.subarray(0,3*this.vertices))||null,this.faceArray=(null==s?void 0:s.subarray(0,this.faceidx))||null,this.lineidx>0?this.lineArray=(null==a?void 0:a.subarray(0,this.lineidx))||null:this.lineArray=new Uint16Array(0)):(this.normalArray=new Float32Array(0),this.faceArray=new Uint16Array(0),this.lineArray=new Uint16Array(0)),o&&(this.radiusArray=o.subarray(0,this.vertices)),t&&(this.normalArray&&(this.normalArray=new Float32Array(this.normalArray)),this.faceArray&&(this.faceArray=new Uint16Array(this.faceArray)),this.lineArray&&(this.lineArray=new Uint16Array(this.lineArray)),this.vertexArray&&(this.vertexArray=new Float32Array(this.vertexArray)),this.colorArray&&(this.colorArray=new Float32Array(this.colorArray)),this.radiusArray&&(this.radiusArray=new Float32Array(this.radiusArray))),this.__inittedArrays=!0}}class Geometry extends EventDispatcher{constructor(e=!1,t=!1,i=!1){super(),this.name="",this.hasTangents=!1,this.dynamic=!0,this.verticesNeedUpdate=!1,this.elementsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.buffersNeedUpdate=!1,this.imposter=!1,this.instanced=!1,this.geometryGroups=[],this.groups=0,this.id=A++,this.mesh=e,this.radii=t,this.offset=i}updateGeoGroup(e=0){var t,i=this.groups>0?this.geometryGroups[this.groups-1]:null;return(!i||i.vertices+e>((null===(t=null==i?void 0:i.vertexArray)||void 0===t?void 0:t.length)||0)/3)&&(i=this.addGeoGroup()),i}vrml(e,t){for(var i="",r=this.geometryGroups.length,n=0;n<r;n++)i+=this.geometryGroups[n].vrml(e,t)+",\n";return i}addGeoGroup(){var e=new GeometryGroup(this.geometryGroups.length);return this.geometryGroups.push(e),this.groups=this.geometryGroups.length,e.vertexArray=new Float32Array(196605),e.colorArray=new Float32Array(196605),this.mesh&&(e.normalArray=new Float32Array(196605),e.faceArray=new Uint16Array(393210),e.lineArray=new Uint16Array(393210)),this.radii&&(e.radiusArray=new Float32Array(w)),e.useOffset=this.offset,e}setUpNormals(...e){for(var t=0;t<this.groups;t++)this.geometryGroups[t].setNormals(...e)}setColors(...e){for(var t=this.geometryGroups.length,i=0;i<t;i++)this.geometryGroups[i].setColors(...e)}setColor(...e){let t=this.geometryGroups.length;for(var i=0;i<t;i++)this.geometryGroups[i].setColor(...e)}setUpWireframe(...e){let t=this.geometryGroups.length;for(var i=0;i<t;i++)this.geometryGroups[i].setLineIndices(...e)}initTypedArrays(){for(var e=0;e<this.groups;e++){var t=this.geometryGroups[e];!0!==t.__inittedArrays&&t.truncateArrayBuffers(this.mesh,!1)}}dispose(){this.dispatchEvent({type:"dispose"})}get vertices(){for(var e=0,t=0;t<this.groups;t++)e+=this.geometryGroups[t].vertices;return e}}let A=0,C=0;class Object3D{constructor(){this.id=C++,this.name="",this.children=[],this.position=new l.Vector3,this.rotation=new l.Vector3,this.matrix=new l.Matrix4,this.matrixWorld=new l.Matrix4,this.quaternion=new l.Quaternion,this.eulerOrder="XYZ",this.up=new l.Vector3(0,1,0),this.scale=new l.Vector3(1,1,1),this.matrixAutoUpdate=!0,this.matrixWorldNeedsUpdate=!0,this.rotationAutoUpdate=!0,this.useQuaternion=!1,this.visible=!0}lookAt(e){this.matrix.lookAt(e,this.position,this.up),this.rotationAutoUpdate&&(!0===this.useQuaternion?console.error("Unimplemented math operation."):this.rotation instanceof l.Vector3&&this.rotation.setEulerFromRotationMatrix(this.matrix,this.eulerOrder))}add(e){if(e!==this){e.parent=this,this.children.push(e);for(var t=this;void 0!==t.parent;)t=t.parent;void 0!==t&&t instanceof Scene&&t.__addObject(e)}else console.error("Can't add $3Dmol.Object3D to itself")}remove(e){var t=this.children.indexOf(e);if(-1!==t){e.parent=void 0,this.children.splice(t,1);for(var i=this;void 0!==i.parent;)i=i.parent;void 0!==i&&i instanceof Scene&&i.__removeObject(e)}}vrml(e){e||(e=" ");var t=2*Math.atan2(this.quaternion.lengthxyz(),this.quaternion.w),i=0,r=0,n=0;if(0!=t){let e=Math.sin(t/2);i=this.quaternion.x/e,r=this.quaternion.y/e,n=this.quaternion.z/e}var s=e+"Transform {\n"+e+" center "+this.position.x+" "+this.position.y+" "+this.position.z+"\n"+e+" rotation "+i+" "+r+" "+n+" "+t+"\n"+e+" children [\n";this.geometry&&(s+=this.geometry.vrml(e,this.material));for(var a=0;a<this.children.length;a++)s+=this.children[a].vrml(e+" ")+",\n";return s+=" ]\n",s+="}"}updateMatrix(){this.matrix.setPosition(this.position),!1===this.useQuaternion&&this.rotation instanceof l.Vector3?this.matrix.setRotationFromEuler(this.rotation,this.eulerOrder):this.matrix.setRotationFromQuaternion(this.quaternion),1===this.scale.x&&1===this.scale.y&&1===this.scale.z||this.matrix.scale(this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){!0===this.matrixAutoUpdate&&this.updateMatrix(),!0!==this.matrixWorldNeedsUpdate&&!0!==e||(void 0===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1;for(var t=0;t<this.children.length;t++)this.children[t].updateMatrixWorld(!0)}clone(e){void 0===e&&(e=new Object3D),e.name=this.name,e.up.copy(this.up),e.position.copy(this.position),e.rotation instanceof l.Vector3&&this.rotation instanceof l.Vector3?e.rotation.copy(this.rotation):e.rotation=this.rotation,e.eulerOrder=this.eulerOrder,e.scale.copy(this.scale),e.rotationAutoUpdate=this.rotationAutoUpdate,e.matrix.copy(this.matrix),e.matrixWorld.copy(this.matrixWorld),e.quaternion.copy(this.quaternion),e.matrixAutoUpdate=this.matrixAutoUpdate,e.matrixWorldNeedsUpdate=this.matrixWorldNeedsUpdate,e.useQuaternion=this.useQuaternion,e.visible=this.visible;for(var t=0;t<this.children.length;t++){var i=this.children[t];e.add(i.clone())}return e}setVisible(e){this.visible=e;for(var t=0;t<this.children.length;t++)this.children[t].setVisible(e)}}class Scene extends Object3D{constructor(){super(...arguments),this.fog=null,this.overrideMaterial=null,this.matrixAutoUpdate=!1,this.__objects=[],this.__lights=[],this.__objectsAdded=[],this.__objectsRemoved=[]}__addObject(e){if(e instanceof Light)-1===this.__lights.indexOf(e)&&this.__lights.push(e),e.target&&void 0===e.target.parent&&this.add(e.target);else if(-1===this.__objects.indexOf(e)){this.__objects.push(e),this.__objectsAdded.push(e);var t=this.__objectsRemoved.indexOf(e);-1!==t&&this.__objectsRemoved.splice(t,1)}for(var i=0;i<e.children.length;i++)this.__addObject(e.children[i])}__removeObject(e){var t;e instanceof Light?-1!==(t=this.__lights.indexOf(e))&&this.__lights.splice(t,1):-1!==(t=this.__objects.indexOf(e))&&(this.__objects.splice(t,1),this.__objectsRemoved.push(e),-1!==this.__objectsAdded.indexOf(e)&&this.__objectsAdded.splice(t,1));for(var i=0;i<e.children.length;i++)this.__removeObject(e.children[i])}}class Light extends Object3D{constructor(e,t=1){super(),this.position=new l.Vector3(0,1,0),this.target=new Object3D,this.castShadow=!1,this.onlyShadow=!1,this.color=new b.Color(e),this.intensity=t}}const S=new l.Matrix4;class Projector{static unprojectVector(e,t){return t.projectionMatrixInverse.getInverse(t.projectionMatrix),S.multiplyMatrices(t.matrixWorld,t.projectionMatrixInverse),e.applyProjection(S)}static projectVector(e,t){return t.matrixWorldInverse.getInverse(t.matrixWorld),S.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),e.applyProjection(S)}projectVector(e,t){return Projector.projectVector(e,t)}unprojectVector(e,t){return Projector.unprojectVector(e,t)}}var z=i(99);const M=(e,t)=>e.distance-t.distance,T=new l.Matrix4;class Raycaster{constructor(e,t,i,r){this.precision=1e-4,this.linePrecision=.2,this.ray=new l.Ray(e,t),this.ray.direction.lengthSq()>0&&this.ray.direction.normalize(),this.near=r||0,this.far=i||1/0}set(e,t){this.ray.set(e,t)}setFromCamera(e,t){t.ortho?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld)):(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,e.z),t.projectionMatrixInverse.getInverse(t.projectionMatrix),T.multiplyMatrices(t.matrixWorld,t.projectionMatrixInverse),this.ray.direction.applyProjection(T),this.ray.direction.sub(this.ray.origin).normalize())}intersectObjects(e,t){for(var i=[],r=0,n=t.length;r<n;r++)U(e,t[r],this,i);return i.sort(M),i}}const E=e=>Math.min(Math.max(e,-1),1);var L=new z.Sphere,F=new z.Cylinder,I=new z.Triangle,D=new l.Vector3,O=new l.Vector3,R=new l.Vector3,k=new l.Vector3,P=new l.Vector3;function U(e,t,i,r){if(P.getPositionFromMatrix(e.matrixWorld),void 0===t.intersectionShape)return r;if(t.hidden)return r;var n,s,a,o,l,h,c,d,u,f,p,m,g,v,_=t.intersectionShape,y=i.linePrecision,b=(y*=e.matrixWorld.getMaxScaleOnAxis())*y;if(void 0!==t.boundingSphere&&t.boundingSphere instanceof z.Sphere&&(L.copy(t.boundingSphere),L.applyMatrix4(e.matrixWorld),!i.ray.isIntersectionSphere(L)))return r;for(n=0,s=_.triangle.length;n<s;n++)if(_.triangle[n]instanceof z.Triangle){if(I.copy(_.triangle[n]),I.applyMatrix4(e.matrixWorld),a=I.getNormal(),(o=i.ray.direction.dot(a))>=0)continue;if(D.subVectors(I.a,i.ray.origin),(c=a.dot(D)/o)<0)continue;O.copy(i.ray.direction).multiplyScalar(c).add(i.ray.origin),O.sub(I.a),R.copy(I.b).sub(I.a),k.copy(I.c).sub(I.a);var x=R.dot(k),w=R.lengthSq(),A=k.lengthSq();if((m=(w*O.dot(k)-x*O.dot(R))/(w*A-x*x))<0||m>1)continue;if((p=(O.dot(R)-m*x)/w)<0||p>1||p+m>1)continue;r.push({clickable:t,distance:c})}for(n=0,s=_.cylinder.length;n<s;n++)if(_.cylinder[n]instanceof z.Cylinder){if(F.copy(_.cylinder[n]),F.applyMatrix4(e.matrixWorld),D.subVectors(F.c1,i.ray.origin),l=D.dot(F.direction),h=D.dot(i.ray.direction),0==(u=1-(o=E(i.ray.direction.dot(F.direction)))*o))continue;g=(o*h-l)/u,v=(h-o*l)/u,O.copy(F.direction).multiplyScalar(g).add(F.c1),R.copy(i.ray.direction).multiplyScalar(v).add(i.ray.origin),d=k.subVectors(O,R).lengthSq();var C=F.radius*F.radius;if(d<=C){if((p=o*(m=c=(f=(o*l-h)*(o*l-h)-u*(D.lengthSq()-l*l-C))<=0?Math.sqrt(d):(h-o*l-Math.sqrt(f))/u)-l)<0||p*p>F.lengthSq()||m<0)continue;r.push({clickable:t,distance:c})}}for(n=0,s=_.line.length;n<s;n+=2){O.copy(_.line[n]),O.applyMatrix4(e.matrixWorld),R.copy(_.line[n+1]),R.applyMatrix4(e.matrixWorld),k.subVectors(R,O);var S=k.lengthSq();k.normalize(),D.subVectors(O,i.ray.origin);var M=D.dot(k);h=D.dot(i.ray.direction),0!=(u=1-(o=E(i.ray.direction.dot(k)))*o)&&(g=(o*h-M)/u,v=(h-o*M)/u,O.add(k.multiplyScalar(g)),R.copy(i.ray.direction).multiplyScalar(v).add(i.ray.origin),(d=k.subVectors(R,O).lengthSq())<b&&g*g<S&&r.push({clickable:t,distance:v}))}for(n=0,s=_.sphere.length;n<s;n++)if(_.sphere[n]instanceof z.Sphere&&(L.copy(_.sphere[n]),L.applyMatrix4(e.matrixWorld),i.ray.isIntersectionSphere(L))){O.subVectors(L.center,i.ray.origin);var T=O.dot(i.ray.direction);if(f=T*T-(O.lengthSq()-L.radius*L.radius),T<0)return r;c=f<=0?T:T-Math.sqrt(f),r.push({clickable:t,distance:c})}return r}class UVMapping{}class Texture extends EventDispatcher{constructor(e,t){super(),this.id=N++,this.name="",this.image=e,this.mapping=new UVMapping,this.wrapS=c,this.wrapT=c,this.anisotropy=1,t?(this.format=v,this.type=m,this.premultiplyAlpha=!1,this.flipY=!1,this.unpackAlignment=1,this.magFilter=u,this.minFilter=u):(this.format=g,this.type=p,this.offset=new l.Vector2(0,0),this.repeat=new l.Vector2(1,1),this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.magFilter=d,this.minFilter=f),this.needsUpdate=!1,this.onUpdate=null}clone(e=new Texture){return e.image=this.image,e.mapping=this.mapping,e.wrapS=this.wrapS,e.wrapT=this.wrapT,e.magFilter=this.magFilter,e.minFilter=this.minFilter,e.anisotropy=this.anisotropy,e.format=this.format,e.type=this.type,e.offset.copy(this.offset),e.repeat.copy(this.repeat),e.premultiplyAlpha=this.premultiplyAlpha,e.flipY=this.flipY,e.unpackAlignment=this.unpackAlignment,e}dispose(){this.dispatchEvent({type:"dispose"})}}let N=0;class ImposterMaterial extends Material{constructor(e){super(),this.color=new b.Color(16777215),this.ambient=new b.Color(1048575),this.emissive=new b.Color(0),this.imposter=!0,this.wrapAround=!1,this.wrapRGB=new l.Vector3(1,1,1),this.map=void 0,this.lightMap=null,this.specularMap=null,this.envMap=null,this.reflectivity=1,this.refractionRatio=.98,this.fog=!0,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.shading=o.SmoothShading,this.shaderID=null,this.vertexColors=r.NoColors,this.skinning=!1,this.setValues(e)}clone(e=new ImposterMaterial){return super.clone.call(this,e),e.color.copy(this.color),e.ambient.copy(this.ambient),e.emissive.copy(this.emissive),e.wrapAround=this.wrapAround,e.wrapRGB.copy(this.wrapRGB),e.map=this.map,e.lightMap=this.lightMap,e.specularMap=this.specularMap,e.envMap=this.envMap,e.combine=this.combine,e.reflectivity=this.reflectivity,e.refractionRatio=this.refractionRatio,e.fog=this.fog,e.shading=this.shading,e.shaderID=this.shaderID,e.vertexColors=this.vertexColors,e.skinning=this.skinning,e.morphTargets=this.morphTargets,e.morphNormals=this.morphNormals,e}}class InstancedMaterial extends Material{constructor(e){super(),this.color=new b.Color(16777215),this.ambient=new b.Color(1048575),this.emissive=new b.Color(0),this.wrapAround=!1,this.wrapRGB=new l.Vector3(1,1,1),this.map=void 0,this.lightMap=null,this.specularMap=null,this.envMap=null,this.reflectivity=1,this.refractionRatio=.98,this.fog=!0,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.shading=o.SmoothShading,this.shaderID="instanced",this.vertexColors=r.NoColors,this.skinning=!1,this.sphere=null,this.setValues(e)}clone(e=new InstancedMaterial){return super.clone.call(this,e),e.color.copy(this.color),e.ambient.copy(this.ambient),e.emissive.copy(this.emissive),e.wrapAround=this.wrapAround,e.wrapRGB.copy(this.wrapRGB),e.map=this.map,e.lightMap=this.lightMap,e.specularMap=this.specularMap,e.envMap=this.envMap,e.combine=this.combine,e.reflectivity=this.reflectivity,e.refractionRatio=this.refractionRatio,e.fog=this.fog,e.shading=this.shading,e.shaderID=this.shaderID,e.vertexColors=this.vertexColors,e.skinning=this.skinning,e.morphTargets=this.morphTargets,e.morphNormals=this.morphNormals,e.sphere=this.sphere,e}}class MeshLambertMaterial extends Material{constructor(e){super(),this.color=new b.Color(16777215),this.ambient=new b.Color(1048575),this.emissive=new b.Color(0),this.wrapAround=!1,this.wrapRGB=new l.Vector3(1,1,1),this.map=void 0,this.lightMap=null,this.specularMap=null,this.envMap=null,this.reflectivity=1,this.refractionRatio=.98,this.fog=!0,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.shading=o.SmoothShading,this.shaderID="lambert",this.vertexColors=r.NoColors,this.skinning=!1,this.setValues(e)}clone(e=new MeshLambertMaterial){return super.clone.call(this,e),e.color.copy(this.color),e.ambient.copy(this.ambient),e.emissive.copy(this.emissive),e.wrapAround=this.wrapAround,e.wrapRGB.copy(this.wrapRGB),e.map=this.map,e.lightMap=this.lightMap,e.specularMap=this.specularMap,e.envMap=this.envMap,e.combine=this.combine,e.reflectivity=this.reflectivity,e.refractionRatio=this.refractionRatio,e.fog=this.fog,e.shading=this.shading,e.shaderID=this.shaderID,e.vertexColors=this.vertexColors,e.skinning=this.skinning,e.morphTargets=this.morphTargets,e.morphNormals=this.morphNormals,e}}class MeshDoubleLambertMaterial extends MeshLambertMaterial{constructor(e){super(e),this.shaderID="lambertdouble",this.side=a,this.outline=!1}clone(e=new MeshDoubleLambertMaterial){return super.clone.call(this,e),e}}class MeshOutlineMaterial extends Material{constructor(e){super(),e=e||{},this.fog=!0,this.shaderID="outline",this.wireframe=!1,this.outlineColor=b.CC.color(e.color||new b.Color(0,0,0)),this.outlineWidth=e.width||.1,this.outlinePushback=e.pushback||1,this.outlineMaxPixels=e.maxpixels||0}clone(e=new MeshOutlineMaterial){return super.clone.call(this,e),e.fog=this.fog,e.shaderID=this.shaderID,e.wireframe=this.wireframe,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.outlinePushback=this.outlinePushback,e.outlineMaxPixels=this.outlineMaxPixels,e}}class RingImposterMaterial extends ImposterMaterial{constructor(e){super(e),this.shaderID="ringimposter",this.setValues(e)}clone(e=new RingImposterMaterial){return super.clone.call(this,e),e}}class SphereImposterMaterial extends ImposterMaterial{constructor(e){super(e),this.shaderID="sphereimposter",this.setValues(e)}clone(e=new SphereImposterMaterial){return super.clone.call(this,e),e}}class SphereImposterOutlineMaterial extends ImposterMaterial{constructor(e){super(e),e=e||{},this.shaderID="sphereimposteroutline",this.outlineColor=b.CC.color(e.color||new b.Color(0,0,0)),this.outlineWidth=e.width||.1,this.outlinePushback=e.pushback||1,this.outlineMaxPixels=e.maxpixels||0,this.setValues(e)}clone(e=new SphereImposterOutlineMaterial){return super.clone.call(this,e),e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.outlinePushback=this.outlinePushback,e.outlineMaxPixels=this.outlineMaxPixels,e}}class SpriteMaterial extends Material{constructor(e){super(),this.color=new b.Color(16777215),this.map=new Texture,this.useScreenCoordinates=!0,this.fog=!1,this.uvOffset=new l.Vector2(0,0),this.uvScale=new l.Vector2(1,1),this.depthTest=!this.useScreenCoordinates,this.sizeAttenuation=!this.useScreenCoordinates,this.screenOffset=this.screenOffset,this.scaleByViewPort=!this.sizeAttenuation,this.alignment=h.center.clone(),this.setValues(e),void 0===(e=e||{}).depthTest&&(this.depthTest=!this.useScreenCoordinates),void 0===e.sizeAttenuation&&(this.sizeAttenuation=!this.useScreenCoordinates),void 0===e.scaleByViewPort&&(this.scaleByViewPort=!this.sizeAttenuation)}clone(e=new SpriteMaterial){return super.clone.call(this,e),e.color.copy(this.color),e.map=this.map,e.useScreenCoordinates=this.useScreenCoordinates,e.screenOffset=this.screenOffset,e.sizeAttenuation=this.sizeAttenuation,e.scaleByViewport=this.scaleByViewPort,e.alignment.copy(this.alignment),e.uvOffset.copy(this.uvOffset),e}}class StickImposterMaterial extends ImposterMaterial{constructor(e){super(e),this.shaderID="stickimposter",this.setValues(e)}clone(e=new StickImposterMaterial){return super.clone.call(this,e),e}}class StickImposterOutlineMaterial extends ImposterMaterial{constructor(e={}){super(e),this.shaderID="stickimposteroutline",this.outlineColor=new b.Color(0,0,0),this.outlineWidth=.1,this.outlinePushback=1,this.outlineMaxPixels=0,e.color&&(this.outlineColor=b.CC.color(e.color)),e.width&&(this.outlineWidth=e.width),e.pushback&&(this.outlinePushback=e.pushback),e.maxpixels&&(this.outlineMaxPixels=e.maxpixels),this.setValues(e)}clone(e=new StickImposterOutlineMaterial){return super.clone.call(this,e),e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.outlinePushback=this.outlinePushback,e.outlineMaxPixels=this.outlineMaxPixels,e}}class VolumetricMaterial extends Material{constructor(e){super(),this.transparent=!1,this.volumetric=!0,this.color=new b.Color(16777215),this.transferfn=null,this.map=void 0,this.extent=[],this.maxdepth=100,this.unit=0,this.texmatrix=null,this.transfermin=-1,this.transfermax=1,this.subsamples=5,this.shaderID="volumetric",this.side=n,this.setValues(e)}clone(e=new VolumetricMaterial){return super.clone.call(this,e),e.transparent=this.transparent,e.volumetric=this.volumetric,e.color=this.color,e.transferfn=this.transferfn,e.map=this.map,e.extent=this.extent,e.maxdepth=this.maxdepth,e.unit=this.unit,e.texmatrix=this.texmatrix,e.transfermin=this.transfermin,e.transfermax=this.transfermax,e.subsamples=this.subsamples,e.shaderID=this.shaderID,e.side=this.side,e}}var B;!function(e){e[e.LineStrip=0]="LineStrip",e[e.LinePieces=1]="LinePieces"}(B||(B={}));class Line extends Object3D{constructor(e,t=new LineBasicMaterial({color:16777215*Math.random()}),i=B.LineStrip){super(),this.geometry=e,this.material=t,this.type=i}clone(e=new Line(this.geometry,this.material,this.type)){return super.clone.call(this,e),e}}class Mesh extends Object3D{constructor(e,t){super(),this.geometry=e,this.material=t}clone(e){return void 0===e&&(e=new Mesh(this.geometry,this.material)),super.clone.call(this,e),e}}class Sprite extends Object3D{constructor(e=new SpriteMaterial){super(),this.material=e,this.rotation3d=this.rotation,this.rotation=0}updateMatrix(){this.matrix.setPosition(this.position),this.rotation3d.set(0,0,this.rotation),this.matrix.setRotationFromEuler(this.rotation3d),1===this.scale.x&&1===this.scale.y||this.matrix.scale(this.scale),this.matrixWorldNeedsUpdate=!0}clone(e=new Sprite(this.material)){return Object3D.prototype.clone.call(this,e),e}}const G={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3}},V={vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\n\nattribute vec3 position;\nattribute vec3 color;\n\nvarying vec3 vColor;\nvarying vec4 mvPosition;\n\nvoid main() {\n\n vColor = color;\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix * mvPosition;\n\n}".replace("#define GLSLIFY 1",""),fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nvarying vec3 vColor;\nvarying vec4 mvPosition;\n\n//DEFINEFRAGCOLOR\nvoid main() {\n gl_FragColor = vec4( vColor, opacity );\n if(fogNear != fogFar) {\n float depth = -mvPosition.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}".replace("#define GLSLIFY 1",""),uniforms:G},j={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},H={fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\nvarying vec3 vLightFront;\nvarying vec3 vColor;\n//DEFINEFRAGCOLOR\n\nvoid main() {\n\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n\n #ifndef WIREFRAME\n gl_FragColor.xyz *= vLightFront;\n #endif\n\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n vColor *= shadowFactor;\n#endif\n gl_FragColor = gl_FragColor * vec4( vColor, opacity );\n float depth = gl_FragCoord.z / gl_FragCoord.w;\n\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n\n}\n\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 offset;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec3 vColor;\nvarying vec3 vLightFront;\n\nvoid main() {\n\n vColor = color;\n\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n vec4 mvPosition = modelViewMatrix * vec4( position * radius + offset, 1.0 );\n\n vLightFront = vec3( 0.0 );\n\n transformedNormal = normalize( transformedNormal );\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n\n gl_Position = projectionMatrix * mvPosition;\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:j},W={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},q={fragmentShader:"uniform mat4 viewMatrix;\nuniform float opacity;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\nvarying vec3 vLightFront;\nvarying vec3 vColor;\nvarying vec4 mvPosition;\n\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n\n #ifndef WIREFRAME\n gl_FragColor.xyz *= vLightFront;\n #endif\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n vColor *= shadowFactor;\n#endif\n gl_FragColor = gl_FragColor * vec4( vColor, opacity );\n\n if(fogNear != fogFar) {\n float depth = -mvPosition.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n\n}".replace("#define GLSLIFY 1",""),vertexShader:"\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec3 vColor;\nvarying vec3 vLightFront;\nvarying vec4 mvPosition;\n\nvoid main() {\n\n vColor = color;\n\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n vLightFront = vec3( 0.0 );\n\n transformedNormal = normalize( transformedNormal );\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n\n gl_Position = projectionMatrix * mvPosition;\n}".replace("#define GLSLIFY 1",""),uniforms:W},Y={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},Z={fragmentShader:"\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\n\nuniform mat4 viewMatrix;\nuniform float opacity;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec3 vLightFront;\nvarying vec3 vLightBack;\n\nvarying vec3 vColor;\nvarying vec4 mvPosition;\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n\n gl_FragColor = vec4( vec3 ( 1.0 ), opacity );\n\n #ifndef WIREFRAME\n if ( gl_FrontFacing )\n gl_FragColor.xyz *= vLightFront;\n else\n gl_FragColor.xyz *= vLightBack;\n #endif\n\n vec3 color = vColor;\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n color *= shadowFactor;\n#endif\n gl_FragColor = gl_FragColor * vec4( color, opacity );\n\n if(fogNear != fogFar) {\n float depth = -mvPosition.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n\n}\n\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec3 vColor;\nvarying vec3 vLightFront;\nvarying vec3 vLightBack;\nvarying vec4 mvPosition;\n\nvoid main() {\n\n vColor = color;\n\n vec3 objectNormal = normal;\n vec3 transformedNormal = normalMatrix * objectNormal;\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\n vLightFront = vec3( 0.0 );\n vLightBack = vec3( 0.0 );\n\n transformedNormal = normalize( transformedNormal );\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vec3 dirVector = normalize( lDirection.xyz );\n float dotProduct = dot( transformedNormal, dirVector );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 directionalLightWeightingBack = vec3( max( -dotProduct, 0.0 ) );\n\n vLightFront += directionalLightColor[ 0 ] * directionalLightWeighting;\n vLightBack += directionalLightColor[ 0 ] * directionalLightWeightingBack;\n\n gl_Position = projectionMatrix * mvPosition;\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:Y},X={opacity:{type:"f",value:1},outlineColor:{type:"c",value:new b.Color(0,0,0)},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1},outlineMaxPixels:{type:"f",value:0}},K={fragmentShader:"\n\nuniform float opacity;\nuniform vec3 outlineColor;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec4 mvPosition;\n//DEFINEFRAGCOLOR\n\nvoid main() {\n gl_FragColor = vec4( outlineColor, 1 );\n\n if(fogNear != fogFar) {\n float depth = -mvPosition.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}\n\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float outlineWidth;\nuniform float outlinePushback;\nuniform float vWidth;\nuniform float vHeight;\nuniform float outlineMaxPixels;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec4 mvPosition;\n\nvoid main() {\n\n vec4 norm = modelViewMatrix*vec4(normalize(normal),0.0);\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n mvPosition.xy += norm.xy*outlineWidth;\n vec4 outpos = projectionMatrix * mvPosition;\n\n if(outlineMaxPixels > 0.0) {\n vec4 unadjusted = projectionMatrix*modelViewMatrix * vec4( position, 1.0 );\n float w = outpos.w;\n //normalize homogeneous coords\n unadjusted /= unadjusted.w;\n outpos /= outpos.w;\n vec2 diff = outpos.xy-unadjusted.xy;\n //put into pixels\n diff.x *= vWidth;\n diff.y *= vHeight;\n if ( length(diff) > outlineMaxPixels) {\n vec2 ndiff = normalize(diff)*outlineMaxPixels;\n ndiff.x /= vWidth;\n ndiff.y /= vHeight;\n outpos.xy = unadjusted.xy;\n outpos.xy += ndiff;\n }\n outpos *= w; //if I don't do this things blow up\n }\n gl_Position = outpos;\n mvPosition.z -= outlinePushback; //go backwards in model space\n vec4 pushpos = projectionMatrix*mvPosition; //project to get z in projection space, I'm probably missing some simple math to do the same thing..\n gl_Position.z = gl_Position.w*pushpos.z/pushpos.w;\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:X},Q={fragmentShader:"uniform sampler2D colormap;\nvarying highp vec2 vTexCoords;\nuniform vec2 dimensions;\n//DEFINEFRAGCOLOR\nvoid main (void) {\n gl_FragColor = texture2D(colormap, vTexCoords);\n\n //gl_FragColor.g = gl_FragColor.b = gl_FragColor.r; //debug shading \n}\n ".replace("#define GLSLIFY 1",""),vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ".replace("#define GLSLIFY 1",""),uniforms:{}},$={fragmentShader:"\n \nprecision highp float;\nprecision highp int;\nprecision highp sampler2D;\n\nuniform sampler2D tColor;\nvarying highp vec2 vTexCoords;\n\n// adapted from https://github.com/kosua20/Rendu\n// MIT License Copyright (c) 2017 Simon Rodriguez\n// by way of molstar (https://github.com/molstar/molstar/blob/master/src/mol-gl/shader/fxaa.frag.ts)\n\n#define QUALITY(q) ((q) < 5 ? 1.0 : ((q) > 5 ? ((q) < 10 ? 2.0 : ((q) < 11 ? 4.0 : 8.0)) : 1.5))\n\nfloat rgb2luma(vec3 rgb){\n return sqrt(dot(rgb, vec3(0.299, 0.587, 0.114)));\n}\n\nfloat sampleLuma(vec2 uv) {\n return rgb2luma(texture2D(tColor, uv).rgb);\n}\n\nfloat sampleLuma(vec2 uv, float uOffset, float vOffset) {\n uv += vec2(uOffset, vOffset);\n return sampleLuma(uv);\n}\n\n//DEFINEFRAGCOLOR\nvoid main(void) {\n ivec2 dim = textureSize(tColor,0);\n vec2 dimensions = vec2(float(dim.x),float(dim.y));\n vec2 inverseScreenSize = vec2(1.0 / dimensions.x, 1.0 / dimensions.y);\n vec2 coords = vTexCoords;\n\n vec4 colorCenter = texture2D(tColor, coords);\n float dEdgeThresholdMin = 0.0312;\n float dEdgeThresholdMax = 0.125;\n int dIterations = 12;\n float dSubpixelQuality = 0.3;\n\n // Luma at the current fragment\n float lumaCenter = rgb2luma(colorCenter.rgb);\n\n // Luma at the four direct neighbours of the current fragment.\n float lumaDown = sampleLuma(coords, 0.0, -inverseScreenSize.y);\n float lumaUp = sampleLuma(coords, 0.0, inverseScreenSize.y);\n float lumaLeft = sampleLuma(coords, -inverseScreenSize.x, 0.0);\n float lumaRight = sampleLuma(coords, inverseScreenSize.x, 0.0);\n\n // Find the maximum and minimum luma around the current fragment.\n float lumaMin = min(lumaCenter, min(min(lumaDown, lumaUp), min(lumaLeft, lumaRight)));\n float lumaMax = max(lumaCenter, max(max(lumaDown, lumaUp), max(lumaLeft, lumaRight)));\n\n // Compute the delta.\n float lumaRange = lumaMax - lumaMin;\n\n // If the luma variation is lower that a threshold (or if we are in a really dark area),\n // we are not on an edge, don't perform any AA.\n if (lumaRange < max(dEdgeThresholdMin, lumaMax * dEdgeThresholdMax)) {\n gl_FragColor = colorCenter;\n return;\n }\n\n // Query the 4 remaining corners lumas.\n float lumaDownLeft = sampleLuma(coords, -inverseScreenSize.x, -inverseScreenSize.y);\n float lumaUpRight = sampleLuma(coords, inverseScreenSize.x, inverseScreenSize.y);\n float lumaUpLeft = sampleLuma(coords, -inverseScreenSize.x, inverseScreenSize.y);\n float lumaDownRight = sampleLuma(coords, inverseScreenSize.x, -inverseScreenSize.y);\n\n // Combine the four edges lumas (using intermediary variables for future computations\n // with the same values).\n float lumaDownUp = lumaDown + lumaUp;\n float lumaLeftRight = lumaLeft + lumaRight;\n\n // Same for corners\n float lumaLeftCorners = lumaDownLeft + lumaUpLeft;\n float lumaDownCorners = lumaDownLeft + lumaDownRight;\n float lumaRightCorners = lumaDownRight + lumaUpRight;\n float lumaUpCorners = lumaUpRight + lumaUpLeft;\n\n // Compute an estimation of the gradient along the horizontal and vertical axis.\n float edgeHorizontal = abs(-2.0 * lumaLeft + lumaLeftCorners) + abs(-2.0 * lumaCenter + lumaDownUp) * 2.0 + abs(-2.0 * lumaRight + lumaRightCorners);\n float edgeVertical = abs(-2.0 * lumaUp + lumaUpCorners) + abs(-2.0 * lumaCenter + lumaLeftRight) * 2.0 + abs(-2.0 * lumaDown + lumaDownCorners);\n\n // Is the local edge horizontal or vertical ?\n bool isHorizontal = (edgeHorizontal >= edgeVertical);\n\n // Choose the step size (one pixel) accordingly.\n float stepLength = isHorizontal ? inverseScreenSize.y : inverseScreenSize.x;\n\n // Select the two neighboring texels lumas in the opposite direction to the local edge.\n float luma1 = isHorizontal ? lumaDown : lumaLeft;\n float luma2 = isHorizontal ? lumaUp : lumaRight;\n // Compute gradients in this direction.\n float gradient1 = luma1 - lumaCenter;\n float gradient2 = luma2 - lumaCenter;\n\n // Which direction is the steepest ?\n bool is1Steepest = abs(gradient1) >= abs(gradient2);\n\n // Gradient in the corresponding direction, normalized.\n float gradientScaled = 0.25 * max(abs(gradient1), abs(gradient2));\n\n // Average luma in the correct direction.\n float lumaLocalAverage = 0.0;\n if(is1Steepest){\n // Switch the direction\n stepLength = -stepLength;\n lumaLocalAverage = 0.5 * (luma1 + lumaCenter);\n } else {\n lumaLocalAverage = 0.5 * (luma2 + lumaCenter);\n }\n\n // Shift UV in the correct direction by half a pixel.\n vec2 currentUv = coords;\n if(isHorizontal){\n currentUv.y += stepLength * 0.5;\n } else {\n currentUv.x += stepLength * 0.5;\n }\n\n // Compute offset (for each iteration step) in the right direction.\n vec2 offset = isHorizontal ? vec2(inverseScreenSize.x, 0.0) : vec2(0.0, inverseScreenSize.y);\n // Compute UVs to explore on each side of the edge, orthogonally.\n // The QUALITY allows us to step faster.\n vec2 uv1 = currentUv - offset * QUALITY(0);\n vec2 uv2 = currentUv + offset * QUALITY(0);\n\n // Read the lumas at both current extremities of the exploration segment,\n // and compute the delta wrt to the local average luma.\n float lumaEnd1 = sampleLuma(uv1);\n float lumaEnd2 = sampleLuma(uv2);\n lumaEnd1 -= lumaLocalAverage;\n lumaEnd2 -= lumaLocalAverage;\n\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n bool reached1 = abs(lumaEnd1) >= gradientScaled;\n bool reached2 = abs(lumaEnd2) >= gradientScaled;\n bool reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction.\n if(!reached1){\n uv1 -= offset * QUALITY(1);\n }\n if(!reached2){\n uv2 += offset * QUALITY(1);\n }\n\n // If both sides have not been reached, continue to explore.\n if(!reachedBoth){\n for(int i = 2; i < dIterations; i++){\n // If needed, read luma in 1st direction, compute delta.\n if(!reached1){\n lumaEnd1 = sampleLuma(uv1);\n lumaEnd1 = lumaEnd1 - lumaLocalAverage;\n }\n // If needed, read luma in opposite direction, compute delta.\n if(!reached2){\n lumaEnd2 = sampleLuma(uv2);\n lumaEnd2 = lumaEnd2 - lumaLocalAverage;\n }\n // If the luma deltas at the current extremities is larger than the local gradient,\n // we have reached the side of the edge.\n reached1 = abs(lumaEnd1) >= gradientScaled;\n reached2 = abs(lumaEnd2) >= gradientScaled;\n reachedBoth = reached1 && reached2;\n\n // If the side is not reached, we continue to explore in this direction,\n // with a variable quality.\n if(!reached1){\n uv1 -= offset * QUALITY(i);\n }\n if(!reached2){\n uv2 += offset * QUALITY(i);\n }\n\n // If both sides have been reached, stop the exploration.\n if(reachedBoth){\n break;\n }\n }\n }\n\n // Compute the distances to each side edge of the edge (!).\n float distance1 = isHorizontal ? (coords.x - uv1.x) : (coords.y - uv1.y);\n float distance2 = isHorizontal ? (uv2.x - coords.x) : (uv2.y - coords.y);\n\n // In which direction is the side of the edge closer ?\n bool isDirection1 = distance1 < distance2;\n float distanceFinal = min(distance1, distance2);\n\n // Thickness of the edge.\n float edgeThickness = (distance1 + distance2);\n\n // Is the luma at center smaller than the local average ?\n bool isLumaCenterSmaller = lumaCenter < lumaLocalAverage;\n\n // If the luma at center is smaller than at its neighbour,\n // the delta luma at each end should be positive (same variation).\n bool correctVariation1 = (lumaEnd1 < 0.0) != isLumaCenterSmaller;\n bool correctVariation2 = (lumaEnd2 < 0.0) != isLumaCenterSmaller;\n\n // Only keep the result in the direction of the closer side of the edge.\n bool correctVariation = isDirection1 ? correctVariation1 : correctVariation2;\n\n // UV offset: read in the direction of the closest side of the edge.\n float pixelOffset = - distanceFinal / edgeThickness + 0.5;\n\n // If the luma variation is incorrect, do not offset.\n float finalOffset = correctVariation ? pixelOffset : 0.0;\n\n // Sub-pixel shifting\n // Full weighted average of the luma over the 3x3 neighborhood.\n float lumaAverage = (1.0 / 12.0) * (2.0 * (lumaDownUp + lumaLeftRight) + lumaLeftCorners + lumaRightCorners);\n // Ratio of the delta between the global average and the center luma,\n // over the luma range in the 3x3 neighborhood.\n float subPixelOffset1 = clamp(abs(lumaAverage - lumaCenter) / lumaRange, 0.0, 1.0);\n float subPixelOffset2 = (-2.0 * subPixelOffset1 + 3.0) * subPixelOffset1 * subPixelOffset1;\n // Compute a sub-pixel offset based on this delta.\n float subPixelOffsetFinal = subPixelOffset2 * subPixelOffset2 * float(dSubpixelQuality);\n\n // Pick the biggest of the two offsets.\n finalOffset = max(finalOffset, subPixelOffsetFinal);\n\n // Compute the final UV coordinates.\n vec2 finalUv = coords;\n if(isHorizontal){\n finalUv.y += finalOffset * stepLength;\n } else {\n finalUv.x += finalOffset * stepLength;\n }\n\n // Read the color at the new UV coordinates, and use it.\n gl_FragColor = texture2D(tColor, finalUv);\n} \n\n/* old fxaa implementation\nuniform highp sampler2D colormap;\nvarying highp vec2 vTexCoords;\n\n\n// Basic FXAA implementation based on the code on geeks3d.com \n#define FXAA_REDUCE_MIN (1.0/ 128.0)\n#define FXAA_REDUCE_MUL (1.0 / 8.0)\n#define FXAA_SPAN_MAX 8.0\n\n\nvec4 applyFXAA(vec2 fragCoord, highp sampler2D tex)\n{\n vec4 color;\n ivec2 dim = textureSize(tex,0);\n vec2 dimensions = vec2(float(dim.x),float(dim.y));\n vec2 inverseVP = vec2(1.0 / dimensions.x, 1.0 / dimensions.y);\n vec4 rgbNW = texture2D(tex, fragCoord + vec2(-1.0, -1.0) * inverseVP);\n vec4 rgbNE = texture2D(tex, fragCoord + vec2(1.0, -1.0) * inverseVP);\n vec4 rgbSW = texture2D(tex, fragCoord + vec2(-1.0, 1.0) * inverseVP);\n vec4 rgbSE = texture2D(tex, fragCoord + vec2(1.0, 1.0) * inverseVP);\n vec4 rgbM = texture2D(tex, fragCoord );\n vec3 luma = vec3(0.299, 0.587, 0.114);\n float lumaNW = dot(rgbNW.xyz, luma);\n float lumaNE = dot(rgbNE.xyz, luma);\n float lumaSW = dot(rgbSW.xyz, luma);\n float lumaSE = dot(rgbSE.xyz, luma);\n float lumaM = dot(rgbM.xyz, luma);\n float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE)));\n float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE)));\n\n vec2 dir;\n dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE));\n dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE));\n\n float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) *\n (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN);\n\n float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce);\n dir = min(vec2(FXAA_SPAN_MAX, FXAA_SPAN_MAX),\n max(vec2(-FXAA_SPAN_MAX, -FXAA_SPAN_MAX),\n dir * rcpDirMin)) * inverseVP;\n\n vec4 rgbA = 0.5 * (\n texture2D(tex, fragCoord + dir * (1.0 / 3.0 - 0.5)) +\n texture2D(tex, fragCoord + dir * (2.0 / 3.0 - 0.5)));\n vec4 rgbB = rgbA * 0.5 + 0.25 * (\n texture2D(tex, fragCoord + dir * -0.5) +\n texture2D(tex, fragCoord + dir * 0.5));\n\n float lumaB = dot(rgbB.xyz, luma);\n if ((lumaB < lumaMin) || (lumaB > lumaMax))\n color = rgbA;\n else\n color = rgbB;\n\n return color;\n}\n\n\n//DEFINEFRAGCOLOR\nvoid main (void) {\n ivec2 dim = textureSize(colormap,0);\n\n gl_FragColor = applyFXAA(vTexCoords, colormap);\n}\n \n*/".replace("#define GLSLIFY 1",""),vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ".replace("#define GLSLIFY 1",""),uniforms:{}},J={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},ee={vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec2 mapping;\nvarying vec3 vColor;\nvarying float vOuterR;\nvarying float vMinorR;\nvarying vec3 vLight;\nvarying vec3 center;\nvarying vec3 vRingNormal;\n\nvoid main() {\n\n // Decode: normal direction = ring plane normal, length = minorR\n vMinorR = length(normal);\n vec3 ringNormalObj = normal / max(vMinorR, 0.0001);\n\n // Decode: |radius| = outerR, sign(radius) = X billboard corner\n vOuterR = abs(radius);\n float xSign = sign(radius);\n\n // Decode: sign(color.b) = Y billboard corner, actual color = (r, g, |b|)\n float ySign = sign(color.b);\n vColor = vec3(color.r, color.g, abs(color.b));\n\n // Transform ring center to view space\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n\n // Transform ring normal to view space\n vRingNormal = normalize( normalMatrix * ringNormalObj );\n\n // Billboard expansion\n mapping = vec2(xSign * vOuterR, ySign * vOuterR);\n vec4 projPosition = projectionMatrix * mvPosition;\n vec4 adjust = projectionMatrix * vec4(mapping, 0.0, 0.0);\n adjust.z = 0.0; adjust.w = 0.0;\n\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz );\n gl_Position = projPosition + adjust;\n\n}\n".replace("#define GLSLIFY 1",""),fragmentShader:"\nuniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec3 vColor;\nvarying vec2 mapping;\nvarying float vOuterR;\nvarying float vMinorR;\nvarying vec3 vLight;\nvarying vec3 center;\nvarying vec3 vRingNormal;\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float majorR = vOuterR - vMinorR;\n\n // The fragment represents a view ray at screen position (center.xy + mapping).\n // Intersect this ray with the ring plane to find the in-plane distance.\n // Ring plane: dot(P - center, vRingNormal) = 0\n // Ray: P = (center.x + mapping.x, center.y + mapping.y, center.z + t)\n // Solution: mapping.x*nx + mapping.y*ny + t*nz = 0 => t = -a/nz\n float a = mapping.x * vRingNormal.x + mapping.y * vRingNormal.y;\n float nz = vRingNormal.z;\n\n // Clamp |nz| to avoid singularity for edge-on rings\n float nzSafe = nz;\n if (abs(nzSafe) < 0.01) nzSafe = (nzSafe >= 0.0) ? 0.01 : -0.01;\n float zHit = -a / nzSafe;\n\n // In-ring-plane distance from center\n // hitPoint = (mapping.x, mapping.y, zHit) is in the ring plane by construction\n float dFromCenterSq = mapping.x * mapping.x + mapping.y * mapping.y + zHit * zHit;\n float dFromCenter = sqrt(dFromCenterSq);\n\n // Distance from ring centerline (in ring plane)\n float dRadial = dFromCenter - majorR;\n\n // Tube test\n if (dRadial * dRadial > vMinorR * vMinorR)\n discard;\n\n // Tube cross-section height\n float tubeZ = sqrt(max(0.0, vMinorR * vMinorR - dRadial * dRadial));\n\n // Always render the front surface (closest to camera).\n // The tube extends ±tubeZ along vRingNormal from the ring plane.\n // When vRingNormal.z > 0, +tubeZ is toward camera; when < 0, -tubeZ is.\n float tubeSign = (vRingNormal.z >= 0.0) ? 1.0 : -1.0;\n\n // Direction from center to the ring-plane hit point (normalized)\n vec3 hitPoint = vec3(mapping.x, mapping.y, zHit);\n vec3 radDir = (dFromCenter > 0.0001) ? hitPoint / dFromCenter : vec3(1.0, 0.0, 0.0);\n\n // Surface normal: radial component + tube bulge toward viewer\n vec3 norm = normalize(dRadial * radDir + tubeSign * tubeZ * vRingNormal);\n\n // Surface position: ring-plane intersection + tube bulge toward viewer\n vec3 surfacePos = center + hitPoint + tubeSign * tubeZ * vRingNormal;\n\n vec4 clipPos = projectionMatrix * vec4(surfacePos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n\n float dotProduct = dot( norm, vLight );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 vLightResult = directionalLightWeighting;\n vec3 color = vLightResult * vColor;\n gl_FragColor = vec4(color, opacity * opacity);\n\n if(fogNear != fogFar) {\n float depth = -surfacePos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n\n}\n".replace("#define GLSLIFY 1",""),uniforms:J},te={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},ie={vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec2 mapping;\nvarying vec3 vColor;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\n\nvoid main() {\n\n vColor = color;\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec4 adjust = projectionMatrix* vec4(normal,0.0); adjust.z = 0.0; adjust.w = 0.0;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz );\n mapping = normal.xy;\n rval = abs(normal.x);\n gl_Position = projPosition+adjust;\n\n}\n".replace("#define GLSLIFY 1",""),fragmentShader:"\nuniform mat4 viewMatrix;\nuniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform float uDepth;\nuniform vec3 directionalLightColor[ 1 ];\n\nvarying vec3 vColor;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 vLight;\nvarying vec3 center;\n\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n vec3 norm = normalize(vec3(mapping.x,mapping.y,z));\n float dotProduct = dot( norm, vLight );\n vec3 directionalLightWeighting = vec3( max( dotProduct, 0.0 ) );\n vec3 vLight = directionalLightColor[ 0 ] * directionalLightWeighting;\n vec3 color = vLight*vColor;\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n color *= shadowFactor;\n#endif \n gl_FragColor = vec4(color, opacity*opacity );\n\n if(fogNear != fogFar) {\n float depth = -cameraPos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n \n}\n\n".replace("#define GLSLIFY 1",""),uniforms:te},re={opacity:{type:"f",value:1},outlineColor:{type:"c",value:new b.Color(0,0,0)},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1},outlineMaxPixels:{type:"f",value:0}},ne={fragmentShader:"\n\nuniform float opacity;\nuniform vec3 outlineColor;\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform mat4 projectionMatrix;\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\n\nuniform float outlinePushback;\n\n//DEFINEFRAGCOLOR\n\nvoid main() {\n float lensqr = dot(mapping,mapping);\n float rsqr = rval*rval;\n if(lensqr > rsqr)\n discard;\n float z = sqrt(rsqr-lensqr);\n vec3 cameraPos = center+ vec3(mapping.x,mapping.y,z-outlinePushback);\n vec4 clipPos = projectionMatrix * vec4(cameraPos, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n gl_FragDepthEXT = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragColor = vec4(outlineColor, 1 );\n\n if(fogNear != fogFar) {\n float depth = -cameraPos.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}\n\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float outlineWidth;\nuniform float outlinePushback;\nuniform float outlineMaxPixels;\nuniform float vWidth;\nuniform float vHeight;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\n\nvarying vec2 mapping;\nvarying float rval;\nvarying vec3 center;\n\nvoid main() {\n\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n center = mvPosition.xyz;\n vec4 projPosition = projectionMatrix * mvPosition;\n vec2 norm = normal.xy + vec2(sign(normal.x)*outlineWidth,sign(normal.y)*outlineWidth);\n\n vec4 adjust = projectionMatrix* vec4(norm,normal.z,1.0); \n mapping = norm.xy;\n rval = abs(norm.x);\n gl_Position = projPosition+vec4(adjust.xy,0.0,0.0);\n\n if(outlineMaxPixels > 0.0) {\n vec4 unadjusted = projectionMatrix*vec4(center.x+normal.x, center.y,center.z,1.0); \n vec4 ccoord = projectionMatrix*vec4(center.xyz,1.0);\n adjust = projectionMatrix* vec4(center.x+norm.x,center.y,center.z,1.0); \n //subtract center \n unadjusted.xyz -= ccoord.xyz;\n adjust.xyz -= ccoord.xyz;\n unadjusted /= unadjusted.w;\n adjust /= adjust.w;\n float diff = abs(adjust.x-unadjusted.x);\n diff *= vWidth;\n if(diff > outlineMaxPixels) {\n \n float fixlen = abs(unadjusted.x) + outlineMaxPixels/vWidth;\n //adjsut reval by ratio of lengths\n rval *= fixlen/abs(adjust.x);\n }\n\n }\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:re},se={fragmentShader:"\n\nuniform vec3 color;\nuniform sampler2D map;\nuniform float opacity;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\nuniform float alphaTest;\n\nvarying vec2 vUV;\n//DEFINEFRAGCOLOR\n\nvoid main() {\n\n vec4 texture = texture2D(map, vUV);\n\n if (texture.a <= alphaTest) discard;\n\n gl_FragColor = vec4(color * texture.xyz, texture.a * opacity);\n\n if (fogNear != fogFar) {\n\n float depth = gl_FragCoord.z / gl_FragCoord.w; //probably wrong\n float fogFactor = smoothstep(fogNear, fogFar, depth); \n gl_FragColor = mix(gl_FragColor, vec4(fogColor, gl_FragColor.w), fogFactor);\n }\n}\n\n".replace("#define GLSLIFY 1",""),vertexShader:"\n\nuniform int useScreenCoordinates;\nuniform vec3 screenPosition;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform float rotation;\nuniform vec2 scale;\nuniform vec2 alignment;\nuniform vec2 uvOffset;\nuniform vec2 uvScale;\n\nattribute vec2 position;\nattribute vec2 uv;\n\nvarying vec2 vUV;\n\nvoid main() {\n\n vUV = uvOffset + uv * uvScale;\n\n vec2 alignedPosition = position + alignment;\n\n vec2 rotatedPosition;\n rotatedPosition.x = ( cos(rotation) * alignedPosition.x - sin(rotation) * alignedPosition.y ) * scale.x;\n rotatedPosition.y = ( sin(rotation) * alignedPosition.x + cos(rotation) * alignedPosition.y ) * scale.y;\n\n vec4 finalPosition;\n\n if(useScreenCoordinates != 0) {\n finalPosition = vec4(screenPosition.xy + rotatedPosition, screenPosition.z, 1.0);\n }\n\n else {\n finalPosition = projectionMatrix * modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0); finalPosition /= finalPosition.w;\n finalPosition.xy += rotatedPosition; \n }\n\n gl_Position = finalPosition;\n\n}\n\n".replace("#define GLSLIFY 1",""),uniforms:{}},ae={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},directionalLightColor:{type:"fv",value:[]},directionalLightDirection:{type:"fv",value:[]}},oe="uniform float opacity;\nuniform mat4 projectionMatrix;\n\nuniform vec3 fogColor;\nuniform float fogNear;\nuniform float fogFar;\n\nvarying vec3 vLight;\nvarying vec3 vColor;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\n#ifdef SHADED\nuniform highp sampler2D shading;\n#endif\n\n//DEFINEFRAGCOLOR\n\n//cylinder-ray intersection testing taken from http://mrl.nyu.edu/~dzorin/cg05/lecture12.pdf\n//also useful: http://stackoverflow.com/questions/9595300/cylinder-impostor-in-glsl\n//with a bit more care (caps) this could be a general cylinder imposter (see also outline)\nvoid main() {\n vec3 color = abs(vColor);\n vec3 pos = cposition;\n vec3 p = pos; //ray point\n vec3 v = vec3(0.0,0.0,-1.0); //ray normal - orthographic\n if(projectionMatrix[3][3] == 0.0) v = normalize(pos); //ray normal - perspective\n vec3 pa = p1; //cyl start\n vec3 va = normalize(p2-p1); //cyl norm\n vec3 tmp1 = v-(dot(v,va)*va);\n vec3 deltap = p-pa;\n float A = dot(tmp1,tmp1);\n if(A == 0.0) discard;\n vec3 tmp2 = deltap-(dot(deltap,va)*va);\n float B = 2.0*dot(tmp1, tmp2);\n float C = dot(tmp2,tmp2)-r*r;\n//quadratic equation!\n float det = (B*B) - (4.0*A*C);\n if(det < 0.0) discard;\n float sqrtDet = sqrt(det);\n float posT = (-B+sqrtDet)/(2.0*A);\n float negT = (-B-sqrtDet)/(2.0*A);\n float intersectionT = min(posT,negT);\n vec3 qi = p+v*intersectionT;\n float dotp1 = dot(va,qi-p1);\n float dotp2 = dot(va,qi-p2);\n vec3 norm;\n if( dotp1 < 0.0 || dotp2 > 0.0) { //(p-c)^2 + 2(p-c)vt +v^2+t^2 - r^2 = 0\n vec3 cp;\n if( dotp1 < 0.0) { \n// if(vColor.x < 0.0 ) discard; //color sign bit indicates if we should cap or not\n cp = p1;\n } else {\n// if(vColor.y < 0.0 ) discard;\n cp = p2;\n }\n vec3 diff = p-cp;\n A = dot(v,v);\n B = dot(diff,v)*2.0;\n C = dot(diff,diff)-r*r;\n det = (B*B) - (4.0*C);\n if(det < 0.0) discard;\n sqrtDet = sqrt(det);\n posT = (-B+sqrtDet)/(2.0);\n negT = (-B-sqrtDet)/(2.0);\n float t = min(posT,negT);\n qi = p+v*t; \n norm = normalize(qi-cp); \n } else {\n norm = normalize(qi-(dotp1*va + p1));\n }\n vec4 clipPos = projectionMatrix * vec4(qi, 1.0);\n float ndcDepth = clipPos.z / clipPos.w;\n float depth = ((gl_DepthRange.diff * ndcDepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n gl_FragDepthEXT = depth;",le={fragmentShader:[oe," float dotProduct = dot( norm, vLight );\n vec3 light = vec3( max( dotProduct, 0.0 ) );\n color *= light;\n#ifdef SHADED\n ivec2 dim = textureSize(shading,0);\n float shadowFactor = texture2D(shading,vec2(gl_FragCoord.x/float(dim.x),gl_FragCoord.y/float(dim.y))).r;\n color *= shadowFactor;\n#endif \n gl_FragColor = vec4(color, opacity*opacity );\n if(fogNear != fogFar) {\n float depth = -qi.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}"].join("\n"),vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\nvoid main() {\n\n vColor = color; vColor.z = abs(vColor.z); //z indicates which vertex and so would vary\n r = abs(radius);\n vec4 to = modelViewMatrix*vec4(normal, 1.0); //normal is other point of cylinder\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1; //slop to account for perspective of sphere\n if(length(p1) > length(p2)) { //billboard at level of closest point\n mvPosition = to;\n }\n vec3 n = normalize(mvPosition.xyz);\n bool isperspective = (projectionMatrix[3][3] == 0.0);\n//intersect with the plane defined by the camera looking at the billboard point\n if(color.z >= 0.0) { //p1\n if(isperspective) { //perspective\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm; \n } else { //orthographic\n mvPosition.xyz = p1;\n }\n } else {\n if(isperspective) { //perspective\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n } else { //orthographic\n mvPosition.xyz = p2;\n } \n mult *= -1.0;\n }\n\n if(isperspective) { //perspective\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*radius;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*radius;\n mvPosition.xyz += mult*(cr + doublecr).xyz;\n } else {\n vec3 cr = normalize(cross(vec3(0.0,0.0,-1.0),norm))*radius;\n vec3 doublecr = normalize(cross(vec3(0.0,0.0,-1.0),cr))*radius;\n mvPosition.xyz += mult*(cr + doublecr).xyz; \n }\n\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ 0 ], 0.0 );\n vLight = normalize( lDirection.xyz )*directionalLightColor[0]; //not really sure this is right, but color is always white so..\n}\n\n",uniforms:ae},he={fragmentShader:oe+"\n gl_FragColor = vec4(color, opacity*opacity );\n if(fogNear != fogFar) {\n float depth = -qi.z;\n float fogFactor = smoothstep( fogNear, fogFar, depth );\n gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n }\n}",vertexShader:"\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 directionalLightColor[ 1 ];\nuniform vec3 directionalLightDirection[ 1 ];\nuniform vec3 outlineColor;\nuniform float outlineWidth;\nuniform float outlinePushback;\nuniform float outlineMaxPixels;\nuniform float vWidth;\nuniform mat4 projinv;\n\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute float radius;\n\nvarying vec3 vColor;\nvarying vec3 vLight;\nvarying vec3 cposition;\nvarying vec3 p1;\nvarying vec3 p2;\nvarying float r;\n\nvoid main() {\n\n vColor = outlineColor;\n float rad = radius+sign(radius)*outlineWidth;\n r = abs(rad);\n\n vec4 to = modelViewMatrix*vec4(normal, 1.0); //normal is other point of cylinder\n vec4 pt = modelViewMatrix*vec4(position, 1.0);\n//pushback\n float scale = 1.0;\n if(projectionMatrix[3][3] != 0.0) { //orthographic\n to.z -= outlinePushback;\n pt.z -= outlinePushback;\n } else { //perspective\n vec4 midbefore = pt;\n if(length(to.xyz) < length(pt)) {\n midbefore = to;\n }\n vec4 midafter = midbefore;\n midafter.xyz += normalize(midbefore.xyz)*outlinePushback;\n\n to.xyz += normalize(to.xyz)*outlinePushback;\n pt.xyz += normalize(pt.xyz)*outlinePushback;\n\n //figure out a scaling factor for radius to account for perspective setback\n vec4 midbeforer = vec4(midbefore.x+rad,midbefore.y, midbefore.z, midbefore.w);\n vec4 midafterr = vec4(midafter.x+rad,midafter.y, midafter.z, midafter.w);\n\n vec4 mb = projectionMatrix*midbefore;\n vec4 mbr = projectionMatrix*midbeforer;\n vec4 ma = projectionMatrix*midafter;\n vec4 mar = projectionMatrix*midafterr;\n mb /= mb.w;\n mbr /= mbr.w;\n ma /= ma.w;\n mar /= mar.w;\n scale = abs((mbr.x-mb.x)/(mar.x-ma.x));\n rad *= scale;\n r = abs(rad);\n }\n vec4 mvPosition = pt;\n p1 = pt.xyz; p2 = to.xyz;\n vec3 norm = to.xyz-pt.xyz;\n float mult = 1.1; //slop to account for perspective of sphere\n if(length(p1) > length(p2)) { //billboard at level of closest point\n mvPosition = to;\n }\n\n vec3 n = normalize(mvPosition.xyz);\n//intersect with the plane defined by the camera looking at the billboard point\n if(color.z >= 0.0) { //p1\n vec3 pnorm = normalize(p1);\n float t = dot(mvPosition.xyz-p1,n)/dot(pnorm,n);\n mvPosition.xyz = p1+t*pnorm;\n } else {\n vec3 pnorm = normalize(p2);\n float t = dot(mvPosition.xyz-p2,n)/dot(pnorm,n);\n mvPosition.xyz = p2+t*pnorm;\n mult *= -1.0;\n }\n\n if(outlineMaxPixels > 0.0) {\n vec4 cpos = mvPosition;\n vec4 unadjusted = projectionMatrix*vec4(cpos.x+abs(scale*radius), cpos.y,cpos.z,cpos.w); \n vec4 ccoord = projectionMatrix*cpos;\n vec4 adjust = projectionMatrix*vec4(cpos.x+r,cpos.y,cpos.z,cpos.w); \n unadjusted /= unadjusted.w;\n adjust /= adjust.w;\n unadjusted.xyz -= ccoord.xyz/ccoord.w;\n adjust.xyz -= ccoord.xyz/ccoord.w;\n float diff = abs(adjust.x-unadjusted.x);\n diff *= vWidth; //this should now be in pixels\n if(diff > outlineMaxPixels) {\n float fixlen = abs(unadjusted.x) + outlineMaxPixels/vWidth; \n vec4 pcoord = ccoord;\n pcoord.x += fixlen*pcoord.w;\n vec4 altc = projinv*pcoord;\n r= abs(altc.x-cpos.x);\n }\n }\n\n vec3 cr = normalize(cross(mvPosition.xyz,norm))*rad;\n vec3 doublecr = normalize(cross(mvPosition.xyz,cr))*rad;\n mvPosition.xy += mult*(cr + doublecr).xy;\n cposition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vLight = vec3(1.0,1.0,1.0);\n}\n\n",uniforms:{opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},outlineColor:{type:"c",value:new b.Color(0,0,0)},outlineWidth:{type:"f",value:.1},outlinePushback:{type:"f",value:1},outlineMaxPixels:{type:"f",value:0},projinv:{type:"mat4",value:[]}}},ce={opacity:{type:"f",value:1},fogColor:{type:"c",value:new b.Color(1,1,1)},fogNear:{type:"f",value:1},fogFar:{type:"f",value:2e3},data:{type:"i",value:3},colormap:{type:"i",value:4},depthmap:{type:"i",value:5},step:{type:"f",value:1},maxdepth:{type:"f",value:100},subsamples:{type:"f",value:5},textmat:{type:"mat4",value:[]},projinv:{type:"mat4",value:[]},transfermin:{type:"f",value:-.2},transfermax:{type:"f",value:.2}},de={fragmentShader:"\nuniform highp sampler3D data;\nuniform highp sampler2D colormap;\nuniform highp sampler2D depthmap;\n\n\nuniform mat4 textmat;\nuniform mat4 projinv;\nuniform mat4 projectionMatrix;\n\nuniform float step;\nuniform float subsamples;\nuniform float maxdepth;\nuniform float transfermin;\nuniform float transfermax;\nin vec4 mvPosition;\nout vec4 color;\nvoid main(void) {\n\n vec4 pos = mvPosition;\n bool seengood = false;\n float i = 0.0;\n color = vec4(1,1,1,0);\n float increment = 1.0/subsamples;\n float maxsteps = (maxdepth*subsamples/step);\n//there's probably a better way to do this..\n//calculate farthest possible point in model coordinates\n vec4 maxpos = vec4(pos.x,pos.y,pos.z-maxdepth,1.0);\n// convert to projection\n maxpos = projectionMatrix*maxpos;\n vec4 startp = projectionMatrix*pos;\n// homogonize\n maxpos /= maxpos.w;\n startp /= startp.w;\n//take x,y from start and z from max\n maxpos = vec4(startp.x,startp.y,maxpos.z,1.0);\n//convert back to model space\n maxpos = projinv*maxpos;\n maxpos /= maxpos.w;\n float incr = step/subsamples;\n//get depth from depthmap\n//startp is apparently [-1,1]\n vec2 tpos = startp.xy/2.0+0.5;\n float depth = texture(depthmap, tpos).r;\n//compute vector between start and end\n vec4 direction = maxpos-pos;\n for( i = 0.0; i <= maxsteps; i++) {\n vec4 pt = (pos+(i/maxsteps)*direction);\n vec4 ppt = projectionMatrix*pt;\n float ptdepth = ppt.z/ppt.w;\n ptdepth = ((gl_DepthRange.diff * ptdepth) + gl_DepthRange.near + gl_DepthRange.far) / 2.0;\n if(ptdepth > depth) break;\n pt = textmat*pt;\n// pt /= pt.w;\n if(pt.x >= -0.01 && pt.y >= -0.01 && pt.z >= -0.01 && pt.x <= 1.01 && pt.y <= 1.01 && pt.z <= 1.01) {\n seengood = true;\n } else if(seengood) {\n break;\n }\n if( pt.x < -0.01 || pt.x > 1.01 || pt.y < -0.01 || pt.y > 1.01 || pt.z < -0.01 || pt.z > 1.01 ){\n color.a = 0.0;\n continue;\n }\n else {\n float val = texture(data, pt.zyx).r;\n if(isinf(val)) continue; //masked out\n float cval = (val-transfermin)/(transfermax-transfermin); //scale to texture 0-1 range\n vec4 val_color = texture(colormap, vec2(cval,0.5));\n color.rgb = color.rgb*color.a + (1.0-color.a)*val_color.a*val_color.rgb;\n color.a += (1.0 - color.a) * val_color.a; \n if(color.a > 0.0) color.rgb /= color.a;\n// color = vec4(pt.x, pt.y, pt.z, 1.0);\n }\n// color = vec4(pt.x, pt.y, pt.z, 0.0)\n }\n}\n\n ".replace("#define GLSLIFY 1",""),vertexShader:"uniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nin vec3 position;\nout vec4 mvPosition;\nvoid main() {\n\n mvPosition = modelViewMatrix * vec4( position, 1.0 );\n gl_Position = projectionMatrix*mvPosition;\n}\n".replace("#define GLSLIFY 1",""),uniforms:ce},ue={basic:V,blur:{fragmentShader:"const float INV_TOTAL_SAMPLES_FACTOR = 1.0 / 9.0;\nuniform highp sampler2D inTex;\nvarying highp vec2 vTexCoords;\n \nvoid main() {\n \n vec2 texelSize = 1.0 / vec2(textureSize(inTex,0));\n float blurred_visibility_factor = 0.0f;\n for (int t = -1; t <= 1; ++t) {\n for (int s = -1; s <= 1; ++s) {\n vec2 offset = vec2(float(s), float(t)) * texelSize;\n blurred_visibility_factor += texture2D(inTex, vTexCoords + offset).r;\n }\n }\n \n gl_FragDepthEXT = blurred_visibility_factor * INV_TOTAL_SAMPLES_FACTOR;\n \n}",vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ",uniforms:{}},instanced:H,lambert:q,lambertdouble:Z,outline:K,screen:Q,screenaa:$,ssao:{fragmentShader:"uniform sampler2D depthmap;\nvarying highp vec2 vTexCoords;\nuniform float vWidth;\nuniform float vHeight;\nuniform float total_strength;\nuniform float radius;\nuniform mat4 projinv;\nuniform mat4 projectionMatrix;\n\n//code for pseudorandom vector from chatgpt\nfloat hash(vec3 p) {\n p = fract(p * vec3(0.1031, 0.1030, 0.0973));\n p += dot(p, p.yzx + 33.33);\n return fract((p.x + p.y) * p.z);\n}\n\n// Generate a pseudorandom vec3 from a seed vec3\nvec3 pseudorandomVec3(vec3 seed) {\n vec3 randomVec;\n randomVec.x = hash(seed);\n randomVec.y = hash(seed + vec3(1.0, 0.0, 17.1));\n randomVec.z = hash(seed + vec3(0.0, 13.23, 0.0));\n return randomVec;\n}\n\nvoid main(void)\n{ \n const float base = 0.2;\n const float area = 0.75;\n const int cycles = 1;\n\n const int samples = 64;\n vec3 sample_sphere[64] = vec3[](\n vec3(0.091258,-0.510164,0.000000),\n vec3(-0.204347,-0.872967,0.187199),\n vec3(0.009690,-0.263696,-0.110414),\n vec3(0.175208,-0.563987,0.228527),\n vec3(-0.001824,-0.003113,-0.000323),\n vec3(0.411134,-0.719869,-0.261530),\n vec3(-0.074272,-0.377368,0.276290),\n vec3(-0.147773,-0.381587,-0.284529),\n vec3(0.173317,-0.199635,0.063295),\n vec3(-0.186452,-0.199460,0.076965),\n vec3(0.143985,-0.308160,-0.307687),\n vec3(0.053194,-0.148286,0.169589),\n vec3(-0.547656,-0.486476,-0.317378),\n vec3(0.020804,-0.015092,-0.004574),\n vec3(-0.038006,-0.043165,0.054059),\n vec3(-0.094795,-0.443908,-0.731525),\n vec3(0.547552,-0.396466,0.461477),\n vec3(-0.176886,-0.089989,0.007315),\n vec3(0.074401,-0.048840,-0.074039),\n vec3(-0.008240,-0.075697,0.178197),\n vec3(-0.307880,-0.185053,-0.368943),\n vec3(0.309520,-0.108483,0.041646),\n vec3(-0.773478,-0.292946,0.538166),\n vec3(0.184487,-0.231594,-0.820065),\n vec3(0.207318,-0.100531,0.361797),\n vec3(-0.173306,-0.037737,-0.055289),\n vec3(0.548102,-0.105342,-0.253237),\n vec3(-0.119342,-0.043907,0.285162),\n vec3(-0.270247,-0.087861,-0.751357),\n vec3(0.449312,-0.039777,0.236146),\n vec3(-0.743773,-0.036095,0.196056),\n vec3(0.148819,-0.004300,-0.231448),\n vec3(0.008773,0.000809,0.051047),\n vec3(-0.461467,0.027390,-0.357386),\n vec3(0.169626,0.013338,-0.014053),\n vec3(-0.043786,0.007095,0.047331),\n vec3(0.004821,0.140371,-0.988260),\n vec3(0.092402,0.023994,0.101860),\n vec3(-0.295335,0.061530,-0.027372),\n vec3(0.024903,0.007537,-0.018901),\n vec3(-0.081463,0.125402,0.447794),\n vec3(-0.397119,0.231805,-0.631062),\n vec3(0.163853,0.059014,0.044905),\n vec3(-0.495220,0.214357,0.254139),\n vec3(0.306123,0.373687,-0.825715),\n vec3(0.021665,0.026737,0.053220),\n vec3(-0.208231,0.117129,-0.098685),\n vec3(0.139749,0.080968,-0.043086),\n vec3(-0.153599,0.182814,0.262090),\n vec3(-0.159673,0.496777,-0.743568),\n vec3(0.134797,0.117152,0.095753),\n vec3(-0.155626,0.120533,0.019395),\n vec3(0.042311,0.054462,-0.049709),\n vec3(0.001257,0.031288,0.034468),\n vec3(-0.002271,0.003199,-0.002304),\n vec3(0.662104,0.717307,0.033854),\n vec3(-0.373100,0.576021,0.308274),\n vec3(0.024233,0.231316,-0.173688),\n vec3(0.161311,0.420217,0.234273),\n vec3(-0.045248,0.078031,-0.010411),\n vec3(0.167453,0.376942,-0.094872),\n vec3(-0.056194,0.433247,0.173218),\n vec3(-0.016224,0.123149,-0.035569),\n vec3(0.067127,0.407641,0.028479)\n );\n\n float depth = texture2D(depthmap, vTexCoords).r;\n if(depth == 1.0) {\n discard;\n }\n\n vec4 screen_position = vec4(vTexCoords, depth,1.0);\n vec4 pos = projinv*screen_position;\n pos /= pos.w;\n vec3 position = pos.xyz;\n\n //approximate the normal from the depth map; I find this simpler\n //than trying to recompute the exact normal within every possible object shader\n\n //pixel offset positions in screen space\n ivec2 dim = textureSize(depthmap,0);\n vec2 offset1 = vec2(0.0,1.0/float(dim.y));\n vec2 offset2 = vec2(1.0/float(dim.x),0.0);\n float depth1 = texture2D(depthmap, vTexCoords + offset1).r;\n float depth2 = texture2D(depthmap, vTexCoords + offset2).r;\n \n vec3 p1 = vec3(screen_position.xy+offset1, depth1 - depth);\n vec3 p2 = vec3(screen_position.xy+offset2, depth2 - depth);\n\n //convert to model space\n vec4 pos1 = projinv*vec4(p1,1);\n pos1 /= pos1.w;\n vec4 pos2 = projinv*vec4(p2,1);\n pos2 /= pos2.w;\n\n vec3 normal = normalize(cross(pos1.xyz-position, pos2.xyz-position)); //model normal, important we normalize in model space\n\n //pseudo random number\n\n float occlusion = 0.0;\n for(int c = 0; c < cycles; c++) {\n vec3 random = normalize(pseudorandomVec3(position+float(c)));\n for(int i=0; i < samples; i++) {\n\n vec3 ray = radius * reflect(sample_sphere[i],random);\n vec3 hemi_ray = position + sign(dot(ray,normal)) * ray; //model space\n vec4 hemi_screen = projectionMatrix*vec4(hemi_ray,1.0);\n hemi_screen /= hemi_screen.w;\n \n float occ_depth = texture2D(depthmap, clamp(hemi_screen.xy,0.0,1.0)).r;\n float difference = hemi_screen.z - occ_depth;\n \n occlusion += step(0.0, difference) * (1.0-smoothstep(0.0, area, difference));\n }\n }\n float ao = 1.0 - total_strength * occlusion * (1.0 / float(cycles*samples));\n gl_FragDepthEXT = clamp(ao+base,0.0,1.0);\n\n}",vertexShader:"attribute vec2 vertexPosition;\nvarying highp vec2 vTexCoords;\nconst vec2 scale = vec2(0.5, 0.5);\n\nvoid main() {\n vTexCoords = vertexPosition * scale + scale; // scale vertex attribute to [0,1] range\n gl_Position = vec4(vertexPosition, 0.0, 1.0);\n}\n ",uniforms:{total_strength:{type:"f",value:1},radius:{type:"f",value:5},projinv:{type:"mat4",value:[]}}},ringimposter:ee,sphereimposter:ie,sphereimposteroutline:ne,sprite:se,stickimposter:le,stickimposteroutline:he,volumetric:de};function fe(e){let t={};for(const r in e){t[r]={},t[r].type=e[r].type;var i=e[r].value;i instanceof b.Color?t[r].value=i.clone():"number"==typeof i?t[r].value=i:i instanceof Array?t[r].value=[]:console.error("Error copying shader uniforms from ShaderLib: unknown type for uniform")}return t}const pe={clone:fe};class Camera extends Object3D{constructor(e=50,t=1,i=.1,r=2e3,n=!1){super(),this.projectionMatrix=new l.Matrix4,this.projectionMatrixInverse=new l.Matrix4,this.matrixWorldInverse=new l.Matrix4,this.fov=e,this.aspect=t,this.near=i,this.far=r;var s=this.position.z;this.right=s*Math.tan(Math.PI/180*e),this.left=-this.right,this.top=this.right/this.aspect,this.bottom=-this.top,this.ortho=!!n,this.updateProjectionMatrix()}lookAt(e){this.matrix.lookAt(this.position,e,this.up),this.rotationAutoUpdate&&(!1===this.useQuaternion&&this.rotation instanceof l.Vector3?this.rotation.setEulerFromRotationMatrix(this.matrix,this.eulerOrder):console.error("Unimplemented math operation."))}updateProjectionMatrix(){this.ortho?this.projectionMatrix.makeOrthographic(this.left,this.right,this.top,this.bottom,this.near,this.far):this.projectionMatrix.makePerspective(this.fov,this.aspect,this.near,this.far),this.projectionMatrixInverse.getInverse(this.projectionMatrix)}}class Fog{constructor(e,t=1,i=1e3){this.name="",this.color=new b.Color(e),this.near=t,this.far=i}clone(){return new Fog(this.color.getHex(),this.near,this.far)}}class SpritePlugin{constructor(){this.sprite={vertices:null,faces:null,vertexBuffer:null,elementBuffer:null,program:null,attributes:{},uniforms:null}}init(e){this.gl=e.context,this.renderer=e,this.precision=e.getPrecision(),this.sprite.vertices=new Float32Array(16),this.sprite.faces=new Uint16Array(6);var t=0;this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=-1,this.sprite.vertices[t++]=1,this.sprite.vertices[t++]=0,this.sprite.vertices[t++]=1,t=0,this.sprite.faces[t++]=0,this.sprite.faces[t++]=1,this.sprite.faces[t++]=2,this.sprite.faces[t++]=0,this.sprite.faces[t++]=2,this.sprite.faces[t++]=3,this.sprite.vertexBuffer=this.gl.createBuffer(),this.sprite.elementBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.sprite.vertexBuffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.sprite.vertices,this.gl.STATIC_DRAW),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.elementBuffer),this.gl.bufferData(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.faces,this.gl.STATIC_DRAW),this.sprite.program=this.createProgram(ue.sprite,this.precision||1),this.sprite.attributes={};const i={};this.sprite.attributes.position=this.gl.getAttribLocation(this.sprite.program,"position"),this.sprite.attributes.uv=this.gl.getAttribLocation(this.sprite.program,"uv"),i.uvOffset=this.gl.getUniformLocation(this.sprite.program,"uvOffset"),i.uvScale=this.gl.getUniformLocation(this.sprite.program,"uvScale"),i.rotation=this.gl.getUniformLocation(this.sprite.program,"rotation"),i.scale=this.gl.getUniformLocation(this.sprite.program,"scale"),i.alignment=this.gl.getUniformLocation(this.sprite.program,"alignment"),i.color=this.gl.getUniformLocation(this.sprite.program,"color"),i.map=this.gl.getUniformLocation(this.sprite.program,"map"),i.opacity=this.gl.getUniformLocation(this.sprite.program,"opacity"),i.useScreenCoordinates=this.gl.getUniformLocation(this.sprite.program,"useScreenCoordinates"),i.screenPosition=this.gl.getUniformLocation(this.sprite.program,"screenPosition"),i.modelViewMatrix=this.gl.getUniformLocation(this.sprite.program,"modelViewMatrix"),i.projectionMatrix=this.gl.getUniformLocation(this.sprite.program,"projectionMatrix"),i.fogNear=this.gl.getUniformLocation(this.sprite.program,"fogNear"),i.fogFar=this.gl.getUniformLocation(this.sprite.program,"fogFar"),i.fogColor=this.gl.getUniformLocation(this.sprite.program,"fogColor"),i.alphaTest=this.gl.getUniformLocation(this.sprite.program,"alphaTest"),this.sprite.uniforms=i}render(e,t,i,r,n){var s,a,o,l,h,c,d,u,f,p;if(!this.gl)throw new Error("WebGLRenderer not initialized");let m=[];null===(s=null==e?void 0:e.__webglSprites)||void 0===s||s.forEach(e=>{(n&&0==e.material.depthTest||!n&&e.material.depthTest)&&m.push(e)});let g=m.length;if(!g)return;const v=this.sprite.attributes,_=this.sprite.uniforms;if(!_)throw new Error("Uniforms not defined");var y=.5*i,b=.5*r;this.gl.useProgram(this.sprite.program),this.gl.enableVertexAttribArray(v.position),this.gl.enableVertexAttribArray(v.uv),this.gl.disable(this.gl.CULL_FACE),this.gl.enable(this.gl.BLEND),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.sprite.vertexBuffer),this.gl.vertexAttribPointer(v.position,2,this.gl.FLOAT,!1,16,0),this.gl.vertexAttribPointer(v.uv,2,this.gl.FLOAT,!1,16,8),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,this.sprite.elementBuffer),this.gl.uniformMatrix4fv(_.projectionMatrix,!1,t.projectionMatrix.elements),this.gl.activeTexture(this.gl.TEXTURE0),this.gl.uniform1i(_.map,0);var x,w=e.fog;let A,C,S;w?(this.gl.uniform3f(_.fogColor,w.color.r,w.color.g,w.color.b),this.gl.uniform1f(_.fogNear,w.near),this.gl.uniform1f(_.fogFar,w.far)):(this.gl.uniform1f(_.fogNear,0),this.gl.uniform1f(_.fogFar,0));let z=[];for(x=0;x<g;x++)A=m[x],C=A.material,C&&(0!=C.depthTest||n)&&A.visible&&0!==C.opacity&&(C.useScreenCoordinates?A.z=-A.position.z:(A._modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,A.matrixWorld),A.z=-A._modelViewMatrix.elements[14]));for(m.sort(me),x=0;x<g;x++)if(A=m[x],C=A.material,C&&A.visible&&0!==C.opacity&&C.map&&C.map.image&&C.map.image.width){this.gl.uniform1f((null==_?void 0:_.alphaTest)||null,C.alphaTest);var M=C.map.image.width,T=C.map.image.height;z[0]=M*this.renderer.devicePixelRatio/i,z[1]=T*this.renderer.devicePixelRatio/r,!0===C.useScreenCoordinates?(this.gl.uniform1i(_.useScreenCoordinates,1),this.gl.uniform3f(_.screenPosition,(A.position.x*this.renderer.devicePixelRatio-y)/y,(b-A.position.y*this.renderer.devicePixelRatio)/b,Math.max(0,Math.min(1,A.position.z)))):(this.gl.uniform1i(_.useScreenCoordinates,0),this.gl.uniformMatrix4fv(_.modelViewMatrix,!1,A._modelViewMatrix.elements)),S=1/(C.scaleByViewport?r:1),z[0]*=S*A.scale.x,z[1]*=S*A.scale.y;let e=null===(a=null==C?void 0:C.alignment)||void 0===a?void 0:a.x,t=null===(o=null==C?void 0:C.alignment)||void 0===o?void 0:o.y;C.screenOffset&&(e=(e||0)+2*C.screenOffset.x/M,t=(t||0)+2*C.screenOffset.y/T),this.gl.uniform2f(_.uvScale,(null===(l=null==C?void 0:C.uvScale)||void 0===l?void 0:l.x)||1,(null===(h=null==C?void 0:C.uvScale)||void 0===h?void 0:h.y)||1),this.gl.uniform2f(_.uvOffset,(null===(c=null==C?void 0:C.uvOffset)||void 0===c?void 0:c.x)||0,(null===(d=null==C?void 0:C.uvOffset)||void 0===d?void 0:d.y)||0),this.gl.uniform2f(_.alignment,e||0,t||0),this.gl.uniform1f(_.opacity,C.opacity),this.gl.uniform3f(_.color,(null===(u=null==C?void 0:C.color)||void 0===u?void 0:u.r)||0,(null===(f=null==C?void 0:C.color)||void 0===f?void 0:f.g)||0,(null===(p=null==C?void 0:C.color)||void 0===p?void 0:p.b)||0),this.gl.uniform1f(_.rotation,A.rotation),this.gl.uniform2fv(_.scale,z),this.renderer.setDepthTest(C.depthTest),this.renderer.setDepthWrite(C.depthWrite),this.renderer.setTexture(C.map,0),this.gl.drawElements(this.gl.TRIANGLES,6,this.gl.UNSIGNED_SHORT,0)}this.gl.enable(this.gl.CULL_FACE)}createProgram(e,t){if(!this.gl)throw new Error("WebGL Rendering context not found");var i=this.gl.createProgram();if(!i)throw new Error("Error creating webgl program");var r=this.gl.createShader(this.gl.FRAGMENT_SHADER),n=this.gl.createShader(this.gl.VERTEX_SHADER);if(!r)throw new Error("Unable to create fragment shader SpritePlugin.createProgram");if(!n)throw new Error("Unable to create vertex shader SpritePlugin.createProgram");var s="precision "+t+" float;\n";if(this.gl.shaderSource(r,s+e.fragmentShader),this.gl.shaderSource(n,s+e.vertexShader),this.gl.compileShader(r),this.gl.compileShader(n),!this.gl.getShaderParameter(r,this.gl.COMPILE_STATUS)||!this.gl.getShaderParameter(n,this.gl.COMPILE_STATUS))throw new Error(`Error compiling shader: \n ${this.gl.getShaderInfoLog(r)} \n ${this.gl.getShaderInfoLog(n)}`);return this.gl.attachShader(i,r),this.gl.attachShader(i,n),this.gl.linkProgram(i),this.gl.getProgramParameter(i,this.gl.LINK_STATUS)||console.error("Could not initialize shader"),i}}function me(e,t){return e.z!==t.z?t.z-e.z:t.id-e.id}var ge=null,ve=null;class Renderer{constructor(e){this.context=null,this.devicePixelRatio=1,this.sortObjects=!0,this.autoUpdateObjects=!0,this.autoUpdateScene=!0,this.info={memory:{programs:0,geometries:0,textures:0},render:{calls:0,vertices:0,faces:0,points:0}},this._offscreen=null,this._bitmap=null,this._programs=[],this._programs_counter=0,this._webglversion=1,this._currentProgram=null,this._currentMaterialId=-1,this._currentGeometryGroupHash=null,this._currentCamera=null,this._geometryGroupCounter=0,this._oldDoubleSided=-1,this._oldFlipSided=-1,this._oldDepthTest=-1,this._oldDepthWrite=-1,this._oldPolygonOffset=null,this._oldLineWidth=null,this._viewportWidth=0,this._viewportHeight=0,this._currentWidth=0,this._currentHeight=0,this._enabledAttributes={},this._vector3=new l.Vector3,this._worldInverse=new l.Matrix4,this._projInverse=new l.Matrix4,this._textureMatrix=new l.Matrix4,this._fullProjModelMatrix=new l.Matrix4,this._fullProjModelMatrixInv=new l.Matrix4,this._direction=new l.Vector3,this._lightsNeedUpdate=!0,this._lights={ambient:[0,0,0],directional:{length:0,colors:[],positions:[]},point:{length:0,colors:[],positions:[],distances:[]},spot:{length:0,colors:[],positions:[],distances:[],directions:[],anglesCos:[],exponents:[]},hemi:{length:0,skyColors:[],groundColors:[],positions:[]}},this.sprites=new SpritePlugin,this._screenshader=null,this._AOshader=null,this._blurshader=null,this._vertexattribpos=null,this._aovertexattribpos=null,this._blurvertexattribpos=null,this._screenQuadVBO=null,this._fb=null,this._targetTexture=null,this._depthTexture=null,this._shadingTexture=null,this._scratchTexture=null,this._upscale=null,this._AOstrength=1,this._AOradius=5,this.SHADE_TEXTURE=3,e=e||{},this.row=e.row,this.col=e.col,this.rows=e.rows,this.cols=e.cols,this._canvas=void 0!==e.canvas?e.canvas:document.createElement("canvas"),this._precision=void 0!==e.precision?e.precision:"highp",this._alpha=void 0===e.alpha||e.alpha,this._premultipliedAlpha=void 0===e.premultipliedAlpha||e.premultipliedAlpha,this._antialias=void 0!==e.antialias&&e.antialias,this._upscale=void 0!==e.upscale?e.upscale:this._antialias,this._preserveDrawingBuffer=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,this._clearColor=void 0!==e.clearColor?new b.Color(e.clearColor):new b.Color(0),this._clearAlpha=void 0!==e.clearAlpha?e.clearAlpha:0,this._outlineMaterial=new MeshOutlineMaterial(e.outline),this._outlineSphereImposterMaterial=new SphereImposterOutlineMaterial(e.outline),this._outlineStickImposterMaterial=new StickImposterOutlineMaterial(e.outline),this._outlineEnabled=!!e.outline,this._AOEnabled=!!e.ambientOcclusion,e.ambientOcclusion&&void 0!==e.ambientOcclusion.strength&&(this._AOstrength=parseFloat(e.ambientOcclusion.strength)),0==this._AOstrength&&(this._AOEnabled=!1),e.ambientOcclusion&&void 0!==e.ambientOcclusion.radius&&(this._AOradius=parseFloat(e.ambientOcclusion.radius)),this.domElement=this._canvas,this._canvas.id=e.id,0!=e.containerWidth&&0!=e.containerHeight&&(this.initGL(),this.setDefaultGLState(),this.context=this._gl,this.isWebGL1()?this._extInstanced=this._gl.getExtension("ANGLE_instanced_arrays"):this._extInstanced={vertexAttribDivisorANGLE:this._gl.vertexAttribDivisor.bind(this._gl),drawElementsInstancedANGLE:this._gl.drawElementsInstanced.bind(this._gl)},this._extFragDepth=this._gl.getExtension("EXT_frag_depth"),this._extFloatLinear=this._gl.getExtension("OES_texture_float_linear"),this._extColorBufferFloat=this._gl.getExtension("EXT_color_buffer_float"),this.sprites.init(this))}supportedExtensions(){return{supportsAIA:Boolean(this._extInstanced),supportsImposters:Boolean(this._extFragDepth)||!this.isWebGL1(),regen:!1}}getContext(){return this._gl}getCanvas(){return this._canvas}isLost(){return null==this._gl||this._gl.isContextLost()}getPrecision(){return this._precision}setClearColorHex(e,t){this._clearColor.setHex(e),this._clearAlpha=t,this.isLost()||this._gl.clearColor(this._clearColor.r,this._clearColor.g,this._clearColor.b,this._clearAlpha)}enableOutline(e){this._outlineMaterial=new MeshOutlineMaterial(e),this._outlineSphereImposterMaterial=new SphereImposterOutlineMaterial(e),this._outlineStickImposterMaterial=new StickImposterOutlineMaterial(e),this._outlineEnabled=!0}disableOutline(){this._outlineEnabled=!1}enableAmbientOcclusion(e){e&&(e.strength&&(this._AOstrength=e.strength),e.scale&&(this._AOradius=e.scale)),this._AOEnabled=this._AOstrength>0}disableAmbientOcclusion(){this._AOEnabled=!1}setViewport(){if(this._offscreen&&(this._offscreen.width=this._canvas.width,this._offscreen.height=this._canvas.height),null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col&&!this.isLost()){var e=this._gl.drawingBufferWidth/this.cols,t=this._gl.drawingBufferHeight/this.rows;this._viewportWidth=e,this._viewportHeight=t,this._gl.enable(this._gl.SCISSOR_TEST),this._gl.scissor(e*this.col,t*this.row,e,t),this._gl.viewport(e*this.col,t*this.row,e,t)}}setSize(e,t){this.devicePixelRatio=void 0!==window.devicePixelRatio?window.devicePixelRatio:1,this._upscale&&this.devicePixelRatio<2&&(this.devicePixelRatio=2),this._canvas.width=e*this.devicePixelRatio,this._canvas.height=t*this.devicePixelRatio,this._canvas.style.width=e+"px",this._canvas.style.height=t+"px",null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col?(this.isLost()||(this._viewportWidth=this._gl.drawingBufferWidth/this.cols,this._viewportHeight=this._gl.drawingBufferHeight/this.rows),this.setViewport()):(this._viewportWidth=this._canvas.width,this._viewportHeight=this._canvas.height,this.isLost()||this._gl.viewport(0,0,this._gl.drawingBufferWidth,this._gl.drawingBufferHeight)),this.initFrameBuffer()}clear(e,t,i){var r=0;(void 0===e||e)&&(r|=this._gl.COLOR_BUFFER_BIT),(void 0===t||t)&&(r|=this._gl.DEPTH_BUFFER_BIT),(void 0===i||i)&&(r|=this._gl.STENCIL_BUFFER_BIT),this._gl.clear(r)}setMaterialFaces(e,t){var i=e.side===a,r=e.side===s;e.imposter||(r=t?!r:r),this._oldDoubleSided!==i&&(i?this._gl.disable(this._gl.CULL_FACE):this._gl.enable(this._gl.CULL_FACE),this._oldDoubleSided=i),this._oldFlipSided!==r&&(r?this._gl.frontFace(this._gl.CW):this._gl.frontFace(this._gl.CCW),this._oldFlipSided=r),this._gl.cullFace(this._gl.BACK)}setDepthTest(e){this._oldDepthTest!==e&&(e?this._gl.enable(this._gl.DEPTH_TEST):this._gl.disable(this._gl.DEPTH_TEST),this._oldDepthTest=e)}setDepthWrite(e){this._oldDepthWrite!==e&&(this._gl.depthMask(e),this._oldDepthWrite=e)}setBlending(e){e?(this._gl.enable(this._gl.BLEND),this._gl.blendEquationSeparate(this._gl.FUNC_ADD,this._gl.FUNC_ADD),this._gl.blendFuncSeparate(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA,this._gl.ONE,this._gl.ONE_MINUS_SRC_ALPHA)):this._gl.disable(this._gl.BLEND)}initMaterial(e,t,i,r){var n,s;if(e.addEventListener("dispose",this.onMaterialDispose.bind(this)),s=e.shaderID){var a=ue[s];e.vertexShader=a.vertexShader,e.fragmentShader=a.fragmentShader,e.uniforms=pe.clone(a.uniforms),e.shaded&&e.makeShaded(this.SHADE_TEXTURE)}n={wireframe:e.wireframe,fragdepth:e.imposter,volumetric:e.volumetric,shaded:e.shaded},e.program=this.buildProgram(e.fragmentShader,e.vertexShader,e.uniforms,n)}renderBuffer(e,t,i,r,n,s){var a,o;if(r.visible&&(a=this.setProgram(e,t,i,r,s,this))){o=a.attributes;var l,h,c=!1,d=r.wireframe?1:0,u=16777215*n.id+2*a.id+d;if(u!==this._currentGeometryGroupHash&&(this._currentGeometryGroupHash=u,c=!0),c&&(this.disableAttributes(),o.position>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglVertexBuffer),this.enableAttribute(o.position),this._gl.vertexAttribPointer(o.position,3,this._gl.FLOAT,!1,0,0)),o.color>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglColorBuffer),this.enableAttribute(o.color),this._gl.vertexAttribPointer(o.color,3,this._gl.FLOAT,!1,0,0)),o.normal>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglNormalBuffer),this.enableAttribute(o.normal),this._gl.vertexAttribPointer(o.normal,3,this._gl.FLOAT,!1,0,0)),o.offset>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglOffsetBuffer),this.enableAttribute(o.offset),this._gl.vertexAttribPointer(o.offset,3,this._gl.FLOAT,!1,0,0)),o.radius>=0&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglRadiusBuffer),this.enableAttribute(o.radius),this._gl.vertexAttribPointer(o.radius,1,this._gl.FLOAT,!1,0,0))),s instanceof Mesh){if("instanced"===r.shaderID){var f=r.sphere.geometryGroups[0];c&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglVertexBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,f.vertexArray,this._gl.STATIC_DRAW),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,n.__webglNormalBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,f.normalArray,this._gl.STATIC_DRAW),this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglFaceBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,f.faceArray,this._gl.STATIC_DRAW)),l=f.faceidx,this._extInstanced.vertexAttribDivisorANGLE(o.offset,1),this._extInstanced.vertexAttribDivisorANGLE(o.radius,1),this._extInstanced.vertexAttribDivisorANGLE(o.color,1),this._extInstanced.drawElementsInstancedANGLE(this._gl.TRIANGLES,l,this._gl.UNSIGNED_SHORT,0,n.radiusArray.length),this._extInstanced.vertexAttribDivisorANGLE(o.offset,0),this._extInstanced.vertexAttribDivisorANGLE(o.radius,0),this._extInstanced.vertexAttribDivisorANGLE(o.color,0)}else r.wireframe?(h=n.lineidx,this.setLineWidth(r.wireframeLinewidth),c&&this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglLineBuffer),this._gl.drawElements(this._gl.LINES,h,this._gl.UNSIGNED_SHORT,0)):(l=n.faceidx,c&&this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,n.__webglFaceBuffer),this._gl.drawElements(this._gl.TRIANGLES,l,this._gl.UNSIGNED_SHORT,0));this.info.render.calls++,this.info.render.vertices+=l,this.info.render.faces+=l/3}else s instanceof Line&&(h=n.vertices,this.setLineWidth(r.linewidth),this._gl.drawArrays(this._gl.LINES,0,h),this.info.render.calls++)}}clearShading(){this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._shadingTexture,0),this.clear(!1,!0,!1),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._depthTexture,0)}setShading(e,t,i){let r=e.__lights,n=e.fog,s=[];for(let t=0,r=e.__webglObjects.length;t<r;t++){let r=e.__webglObjects[t];r.render&&r[i]&&s.push(r)}if(0==s.length)return;this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._shadingTexture,0),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.COLOR_ATTACHMENT0,this._gl.TEXTURE_2D,null,0),this.renderObjects(e.__webglObjects,!0,i+"Depth",t,r,n,!1),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._scratchTexture,0),this.clear(!1,!0,!1),this._gl.useProgram(this._AOshader),this._currentProgram=this._AOshader,this.setDepthTest(-1),this.setDepthWrite(-1);let a=this._AOshader.uniforms;this._gl.uniform1f(a.total_strength,this._AOstrength),this._gl.uniform1f(a.radius,this._AOradius),this._fullProjModelMatrix=new l.Matrix4,this._fullProjModelMatrixInv=new l.Matrix4;let o=s[0].object;this._fullProjModelMatrix.multiplyMatrices(t.projectionMatrix,o._modelViewMatrix),this._fullProjModelMatrixInv.getInverse(this._fullProjModelMatrix),this._gl.uniformMatrix4fv(a.projectionMatrix,!1,this._fullProjModelMatrix.elements),this._gl.uniformMatrix4fv(a.projinv,!1,this._fullProjModelMatrixInv.elements),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,this._screenQuadVBO),this._gl.enableVertexAttribArray(this._aovertexattribpos),this._gl.vertexAttribPointer(this._aovertexattribpos,2,this._gl.FLOAT,!1,0,0),this._gl.activeTexture(this._gl.TEXTURE0),this._gl.bindTexture(this._gl.TEXTURE_2D,this._shadingTexture),this._gl.drawArrays(this._gl.TRIANGLES,0,6),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._shadingTexture,0),this.clear(!1,!0,!1),this._gl.useProgram(this._blurshader),this._currentProgram=this._blurshader,this.setDepthTest(-1),this.setDepthWrite(-1),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,this._screenQuadVBO),this._gl.enableVertexAttribArray(this._blurvertexattribpos),this._gl.vertexAttribPointer(this._blurvertexattribpos,2,this._gl.FLOAT,!1,0,0),this._gl.activeTexture(this._gl.TEXTURE0),this._gl.bindTexture(this._gl.TEXTURE_2D,this._scratchTexture),this._gl.drawArrays(this._gl.TRIANGLES,0,6),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.COLOR_ATTACHMENT0,this._gl.TEXTURE_2D,this._targetTexture,0),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._depthTexture,0)}render(e,t){if(t instanceof Camera==0)return void console.error("Renderer.render: camera is not an instance of Camera.");var i,r,n,s,a,o=e.__lights,l=e.fog;if(this._currentMaterialId=-1,this._lightsNeedUpdate=!0,this.autoUpdateScene&&e.updateMatrixWorld(),void 0===t.parent&&t.updateMatrixWorld(),t.matrixWorldInverse.getInverse(t.matrixWorld),this.isLost())return;this.autoUpdateObjects&&this.initWebGLObjects(e),this.info.render.calls=0,this.info.render.vertices=0,this.info.render.faces=0,this.info.render.points=0,this._currentWidth=this._viewportWidth,this._currentHeight=this._viewportHeight,this.setViewport(),this.setFrameBuffer(),this._gl.clearColor(this._clearColor.r,this._clearColor.g,this._clearColor.b,this._clearAlpha),this.clear(!0,!0,!0),a=e.__webglObjects;let h=!1,c=this._AOEnabled;for(i=0,r=a.length;i<r;i++)s=(n=a[i]).object,n.render=!1,s.visible&&(this.setupMatrices(s,t),this.unrollBufferMaterial(n),n.render=!0,n.volumetric&&(h=!0),n.hasAO&&(c=!0));if(this.setBlending(!1),c&&this.setShading(e,t,"opaque"),this.renderObjects(e.__webglObjects,!0,"opaque",t,o,l,!1),c&&this.clearShading(),this.renderSprites(e,t,!1),this.renderObjects(e.__webglObjects,!0,"transparentDepth",t,o,l,!0),this.renderObjects(e.__webglObjects,!1,"transparent",t,o,l,!0),h&&this._fb&&(this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,null,0),this.renderObjects(e.__webglObjects,!1,"volumetric",t,o,l,!0)),this.renderFrameBuffertoScreen(),this.setDepthTest(!0),this.setDepthWrite(!0),this.renderSprites(e,t,!0),this._bitmap){const e=this._offscreen.transferToImageBitmap();this._bitmap.transferFromImageBitmap(e),e.close()}}setFrameBuffer(){if(this.isWebGL1()||!this._fb)return;let e=this._viewportWidth,t=this._viewportHeight;this._gl.enable(this._gl.SCISSOR_TEST),this._gl.scissor(0,0,e,t),this._gl.viewport(0,0,e,t),this._gl.bindTexture(this._gl.TEXTURE_2D,this._targetTexture),this._gl.texImage2D(this._gl.TEXTURE_2D,0,this._gl.RGBA,e,t,0,this._gl.RGBA,this._gl.UNSIGNED_BYTE,null),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.bindTexture(this._gl.TEXTURE_2D,this._depthTexture),this._gl.texImage2D(this._gl.TEXTURE_2D,0,this._gl.DEPTH_COMPONENT32F,e,t,0,this._gl.DEPTH_COMPONENT,this._gl.FLOAT,null),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._shadingTexture&&(this._gl.deleteTexture(this._shadingTexture),this._shadingTexture=this._gl.createTexture(),this._gl.bindTexture(this._gl.TEXTURE_2D,this._shadingTexture),this._gl.texImage2D(this._gl.TEXTURE_2D,0,this._gl.DEPTH_COMPONENT32F,e,t,0,this._gl.DEPTH_COMPONENT,this._gl.FLOAT,null),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.deleteTexture(this._scratchTexture),this._scratchTexture=this._gl.createTexture(),this._gl.bindTexture(this._gl.TEXTURE_2D,this._scratchTexture),this._gl.texImage2D(this._gl.TEXTURE_2D,0,this._gl.DEPTH_COMPONENT32F,e,t,0,this._gl.DEPTH_COMPONENT,this._gl.FLOAT,null),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MIN_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_MAG_FILTER,this._gl.NEAREST),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(this._gl.TEXTURE_2D,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE)),this._gl.bindFramebuffer(this._gl.FRAMEBUFFER,this._fb),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.COLOR_ATTACHMENT0,this._gl.TEXTURE_2D,this._targetTexture,0),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._shadingTexture,0),this._gl.clearDepth(1),this._gl.clear(this._gl.DEPTH_BUFFER_BIT),this._gl.framebufferTexture2D(this._gl.FRAMEBUFFER,this._gl.DEPTH_ATTACHMENT,this._gl.TEXTURE_2D,this._depthTexture,0)}initFrameBuffer(){if(this.isWebGL1())return;let e=this._viewportWidth,t=this._viewportHeight;this._gl.enable(this._gl.SCISSOR_TEST),this._gl.scissor(0,0,e,t),this._gl.viewport(0,0,e,t),this._targetTexture=this._gl.createTexture(),this._depthTexture=this._gl.createTexture(),this._shadingTexture=this._gl.createTexture(),this._scratchTexture=this._gl.createTexture(),this._fb=this._gl.createFramebuffer();var i=this._antialias?ue.screenaa:ue.screen;this._screenshader=this.buildProgram(i.fragmentShader,i.vertexShader,i.uniforms,{}),this._vertexattribpos=this._gl.getAttribLocation(this._screenshader,"vertexPosition"),this._screenQuadVBO=this._gl.createBuffer(),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,this._screenQuadVBO),this._gl.bufferData(this._gl.ARRAY_BUFFER,new Float32Array([1,1,-1,1,-1,-1,-1,-1,1,-1,1,1]),this._gl.STATIC_DRAW);let r=ue.ssao;this._AOshader=this.buildProgram(r.fragmentShader,r.vertexShader,r.uniforms,{}),this._aovertexattribpos=this._gl.getAttribLocation(this._AOshader,"vertexPosition");let n=ue.blur;this._blurshader=this.buildProgram(n.fragmentShader,n.vertexShader,n.uniforms,{}),this._blurvertexattribpos=this._gl.getAttribLocation(this._blurshader,"vertexPosition")}renderFrameBuffertoScreen(){this.isWebGL1()||null===this._fb||(this.setViewport(),this._gl.bindFramebuffer(this._gl.FRAMEBUFFER,null),this._gl.clear(this._gl.COLOR_BUFFER_BIT|this._gl.DEPTH_BUFFER_BIT),this._gl.frontFace(this._gl.CCW),this._gl.cullFace(this._gl.BACK),this._gl.useProgram(this._screenshader),this._currentProgram=this._screenshader,this.setDepthTest(-1),this.setDepthWrite(-1),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,this._screenQuadVBO),this._gl.enableVertexAttribArray(this._vertexattribpos),this._gl.vertexAttribPointer(this._vertexattribpos,2,this._gl.FLOAT,!1,0,0),this._gl.activeTexture(this._gl.TEXTURE0),this._gl.bindTexture(this._gl.TEXTURE_2D,this._targetTexture),this._gl.drawArrays(this._gl.TRIANGLES,0,6))}initWebGLObjects(e){if(e.__webglObjects||(e.__webglObjects=[],e.__webglObjectsImmediate=[],e.__webglSprites=[],e.__webglFlares=[]),e.__objectsAdded.length){for(;e.__objectsAdded.length;)this.addObject(e.__objectsAdded[0],e),e.__objectsAdded.splice(0,1);this._currentGeometryGroupHash=-1}for(;e.__objectsRemoved.length;)this.removeObject(e.__objectsRemoved[0],e),e.__objectsRemoved.splice(0,1);for(var t=0,i=e.__webglObjects.length;t<i;t++)this.updateObject(e.__webglObjects[t].object)}getYRatio(){return void 0!==this.rows&&void 0!==this.row?this.rows:1}getXRatio(){return void 0!==this.cols&&void 0!==this.col?this.cols:1}getAspect(e,t){null!=e&&null!=t||(e=this._canvas.width,t=this._canvas.height);var i=e/t;return null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col&&(i=e/this.cols/(t/this.rows)),i}setTexture(e,t,i){if(e.needsUpdate){e.__webglInit||(e.__webglInit=!0,e.addEventListener("dispose",this.onTextureDispose.bind(this)),e.__webglTexture=this._gl.createTexture(),this.info.memory.textures++),this._gl.activeTexture(this._gl.TEXTURE0+t);var r=i?this._gl.TEXTURE_3D:this._gl.TEXTURE_2D;this._gl.bindTexture(r,e.__webglTexture),this._gl.pixelStorei(this._gl.UNPACK_FLIP_Y_WEBGL,e.flipY),this._gl.pixelStorei(this._gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.premultiplyAlpha),this._gl.pixelStorei(this._gl.UNPACK_ALIGNMENT,e.unpackAlignment),this._gl.pixelStorei(this._gl.PACK_ALIGNMENT,e.unpackAlignment);var n=this.paramToGL(e.format),s=this.paramToGL(e.type);if(i)this.setTextureParameters(this._gl.TEXTURE_3D,e),this._gl.texImage3D(this._gl.TEXTURE_3D,0,this._gl.R32F,e.image.size.z,e.image.size.y,e.image.size.x,0,this._gl.RED,this._gl.FLOAT,e.image.data);else{var a=e.image,o=a.width,l=a.height;void 0===o&&(o=a.length,n==this._gl.RGBA&&(o/=4),l=1),this.setTextureParameters(this._gl.TEXTURE_2D,e),this.isWebGL1()?this._gl.texImage2D(this._gl.TEXTURE_2D,0,n,n,s,e.image):this._gl.texImage2D(this._gl.TEXTURE_2D,0,n,o,l,0,n,s,e.image)}e.needsUpdate=!1,e.onUpdate&&e.onUpdate()}else this._gl.activeTexture(this._gl.TEXTURE0+t),i?this._gl.bindTexture(this._gl.TEXTURE_3D,e.__webglTexture):this._gl.bindTexture(this._gl.TEXTURE_2D,e.__webglTexture)}supportsVolumetric(){return!this.isWebGL1()}enableAttribute(e){this._enabledAttributes[e]||(this._gl.enableVertexAttribArray(e),this._enabledAttributes[e]=!0)}disableAttributes(){for(let e in this._enabledAttributes)this._enabledAttributes[e]&&(this._gl.disableVertexAttribArray(e),this._enabledAttributes[e]=!1)}setPolygonOffset(e,t,i){this._oldPolygonOffset!==e&&(e?this._gl.enable(this._gl.POLYGON_OFFSET_FILL):this._gl.disable(this._gl.POLYGON_OFFSET_FILL))}setLineWidth(e){e!==this._oldLineWidth&&(this._gl.lineWidth(e),this._oldLineWidth=e)}deallocateGeometry(e){if(e.__webglInit=void 0,void 0!==e.__webglVertexBuffer&&this._gl.deleteBuffer(e.__webglVertexBuffer),void 0!==e.__webglColorBuffer&&this._gl.deleteBuffer(e.__webglColorBuffer),void 0!==e.geometryGroups)for(var t=0,i=e.groups;t<i;t++){var r=e.geometryGroups[t];void 0!==r.__webglVertexBuffer&&this._gl.deleteBuffer(r.__webglVertexBuffer),void 0!==r.__webglColorBuffer&&this._gl.deleteBuffer(r.__webglColorBuffer),void 0!==r.__webglNormalBuffer&&this._gl.deleteBuffer(r.__webglNormalBuffer),void 0!==r.__webglFaceBuffer&&this._gl.deleteBuffer(r.__webglFaceBuffer),void 0!==r.__webglLineBuffer&&this._gl.deleteBuffer(r.__webglLineBuffer)}}deallocateMaterial(e){var t=e.program;if(void 0!==t){var i,r,n;e.program=void 0;var s=!1;for(i=0,r=this._programs.length;i<r;i++)if((n=this._programs[i]).program===t){n.usedTimes--,0===n.usedTimes&&(s=!0);break}if(!0===s){var a=[];for(i=0,r=this._programs.length;i<r;i++)(n=this._programs[i]).program!==t&&a.push(n);this._programs=a,this._gl.deleteProgram(t),this.info.memory.programs--}}}deallocateTexture(e){if(e.image&&e.image.__webglTextureCube)this._gl.deleteTexture(e.image.__webglTextureCube);else{if(!e.__webglInit)return;e.__webglInit=!1,this._gl.deleteTexture(e.__webglTexture)}}onGeometryDispose(e){var t=e.target;t.removeEventListener("dispose",this.onGeometryDispose),this.deallocateGeometry(t),this.info.memory.geometries--}onTextureDispose(e){var t=e.target;t.removeEventListener("dispose",this.onTextureDispose),this.deallocateTexture(t),this.info.memory.textures--}onMaterialDispose(e){var t=e.target;t.removeEventListener("dispose",this.onMaterialDispose),this.deallocateMaterial(t)}getShader(e,t){var i;return this.isWebGL1()||t.startsWith("#version")||(t=t.replace(/gl_FragDepthEXT/g,"gl_FragDepth"),t="#version 300 es\n"+(t=(t=(t=(t=(t="fragment"==e?t.replace(/varying/g,"in"):t.replace(/varying/g,"out")).replace(/attribute/g,"in")).replace(/texture2D/g,"texture")).replace(/\/\/DEFINEFRAGCOLOR/g,"out vec4 glFragColor;")).replace(/gl_FragColor/g,"glFragColor"))),"fragment"===e?i=this._gl.createShader(this._gl.FRAGMENT_SHADER):"vertex"===e&&(i=this._gl.createShader(this._gl.VERTEX_SHADER)),null==i?null:(this._gl.shaderSource(i,t),this._gl.compileShader(i),this._gl.getShaderParameter(i,this._gl.COMPILE_STATUS)?i:(console.error(this._gl.getShaderInfoLog(i)),console.error("could not initialize shader"),null))}buildProgram(e,t,i,r){var n,s,a,o,l=[];for(n in l.push(e),l.push(t),r)l.push(n),l.push(r[n]);for(o=l.join(),n=0,s=this._programs.length;n<s;n++){var h=this._programs[n];if(h.code===o)return h.usedTimes++,h.program}if(this.isWebGL1()&&r.volumetric)throw new Error("Volumetric rendering requires webgl2 which is not supported by your hardware.");if(null==(a=this._gl.createProgram()))return null;var c,d,u,f="precision "+this._precision+" float;",p=[r.volumetric?"#version 300 es":"",f].join("\n"),m=[r.volumetric?"#version 300 es":"",r.fragdepth&&this.isWebGL1()?"#extension GL_EXT_frag_depth: enable":"",r.shaded?"#define SHADED 1":"",r.wireframe?"#define WIREFRAME 1":"",f].join("\n"),g=this.getShader("fragment",m+e),v=this.getShader("vertex",p+t);for(d in null!=v&&this._gl.attachShader(a,v),null!=g&&this._gl.attachShader(a,g),this._gl.linkProgram(a),this._gl.getProgramParameter(a,this._gl.LINK_STATUS)||console.error("Could not initialize shader"),a.uniforms={},a.attributes={},c=["viewMatrix","modelViewMatrix","projectionMatrix","normalMatrix","vWidth","vHeight"],i)c.push(d);for(u=0;u<c.length;u++){var _=c[u];a.uniforms[_]=this._gl.getUniformLocation(a,_)}for(c=["position","normal","color","lineDistance","offset","radius"],u=0;u<c.length;u++){var y=c[u];a.attributes[y]=this._gl.getAttribLocation(a,y)}return a.id=this._programs_counter++,this._programs.push({program:a,code:o,usedTimes:1}),this.info.memory.programs=this._programs.length,a}setProgram(e,t,i,r,n,s){if(r.needsUpdate&&(r.program&&this.deallocateMaterial(r),this.initMaterial(r,t,i,n),r.needsUpdate=!1),null==r.program)return null;var a=!1,o=r.program,l=o.uniforms,h=r.uniforms;if(o!=this._currentProgram&&(this._gl.useProgram(o),this._currentProgram=o,a=!0),r.id!=this._currentMaterialId&&(this._currentMaterialId=r.id,a=!0),e!=this._currentCamera&&(this._currentCamera=e,a=!0),l.projectionMatrix&&this._gl.uniformMatrix4fv(l.projectionMatrix,!1,e.projectionMatrix.elements),l.modelViewMatrix&&this._gl.uniformMatrix4fv(l.modelViewMatrix,!1,n._modelViewMatrix.elements),l.normalMatrix&&this._gl.uniformMatrix3fv(l.normalMatrix,!1,n._normalMatrix.elements),l.projinv&&(this._projInverse.getInverse(e.projectionMatrix),this._gl.uniformMatrix4fv(l.projinv,!1,this._projInverse.elements)),l.viewMatrix&&this._gl.uniformMatrix4fv(l.viewMatrix,!1,e.matrixWorldInverse.elements),l.vWidth&&this._gl.uniform1f(l.vWidth,this._viewportWidth),l.vHeight&&this._gl.uniform1f(l.vHeight,this._viewportHeight),a){if(h.fogColor.value=i.color,h.fogNear.value=i.near,h.fogFar.value=i.far,r.shaderID.startsWith("lambert")||"instanced"===r.shaderID||r.shaderID.endsWith("imposter"))this._lightsNeedUpdate&&(this.setupLights(o,t),this._lightsNeedUpdate=!1),h.directionalLightColor.value=this._lights.directional.colors,h.directionalLightDirection.value=this._lights.directional.positions;else if(r.shaderID.endsWith("outline"))h.outlineColor.value=r.outlineColor,h.outlineWidth.value=r.outlineWidth,h.outlinePushback.value=r.outlinePushback,h.outlineMaxPixels.value=r.outlineMaxPixels*this.devicePixelRatio;else if("volumetric"===r.shaderID){n._modelViewMatrix.getScale(this._direction),this._worldInverse.getInverse(n._modelViewMatrix),this._projInverse.getInverse(e.projectionMatrix),this._textureMatrix.multiplyMatrices(n.material.texmatrix,this._worldInverse),this._gl.uniformMatrix4fv(l.textmat,!1,this._textureMatrix.elements),this._gl.uniformMatrix4fv(l.projinv,!1,this._projInverse.elements);let t=Math.min(Math.min(this._direction.x,this._direction.y),this._direction.z);h.step.value=n.material.unit*t,h.maxdepth.value=n.material.maxdepth*t,h.transfermax.value=n.material.transfermax,h.transfermin.value=n.material.transfermin,h.subsamples.value=n.material.subsamples,s.setTexture(n.material.transferfn,4,!1),s.setTexture(n.material.map,3,!0),this._gl.activeTexture(this._gl.TEXTURE5),this._gl.bindTexture(this._gl.TEXTURE_2D,this._depthTexture)}h.opacity.value=r.opacity,this.loadMaterialUniforms(l,h)}return h.shading&&(3==h.shading.value?(this._gl.activeTexture(this._gl.TEXTURE0+this.SHADE_TEXTURE),this._gl.bindTexture(this._gl.TEXTURE_2D,this._shadingTexture)):console.error("Invalid shading textures.")),o}loadMaterialUniforms(e,t){var i,r,n,s;for(i in t)e[i]&&(r=t[i].type,n=t[i].value,s=e[i],"f"===r?this._gl.uniform1f(s,n):"i"===r?this._gl.uniform1i(s,n):"fv"===r?this._gl.uniform3fv(s,n):"c"===r?this._gl.uniform3f(s,n.r,n.g,n.b):"f4"===r&&this._gl.uniform4f(s,n[0],n[1],n[2],n[3]))}addObject(e,t){var i,r,n,s;if(!e.__webglInit&&(e.__webglInit=!0,e._modelViewMatrix=new l.Matrix4,e._normalMatrix=new l.Matrix3,void 0!==e.geometry&&void 0===e.geometry.__webglInit&&(e.geometry.__webglInit=!0,e.geometry.addEventListener("dispose",this.onGeometryDispose.bind(this))),e instanceof Mesh||e instanceof Line))for(i=0,r=(n=e.geometry).geometryGroups.length;i<r;i++)(s=n.geometryGroups[i]).id=this._geometryGroupCounter++,s.__webglVertexBuffer||(e instanceof Mesh?(this.createMeshBuffers(s),n.elementsNeedUpdate=!0,n.normalsNeedUpdate=!0):e instanceof Line&&this.createLineBuffers(s),n.verticesNeedUpdate=!0,n.colorsNeedUpdate=!0);if(!e.__webglActive){if(e instanceof Mesh||e instanceof Line)for(i=0,r=(n=e.geometry).geometryGroups.length;i<r;i++)s=n.geometryGroups[i],this.addBuffer(t.__webglObjects,s,e);else e instanceof Sprite&&t.__webglSprites.push(e);e.__webglActive=!0}}updateObject(e){var t,i=e.geometry;if(e instanceof Mesh||e instanceof Line){for(var r=0,n=i.geometryGroups.length;r<n;r++)t=i.geometryGroups[r],(i.verticesNeedUpdate||i.elementsNeedUpdate||i.colorsNeedUpdate||i.normalsNeedUpdate)&&this.setBuffers(t,this._gl.STATIC_DRAW);i.verticesNeedUpdate=!1,i.elementsNeedUpdate=!1,i.normalsNeedUpdate=!1,i.colorsNeedUpdate=!1,i.buffersNeedUpdate=!1}}removeObject(e,t){e instanceof Mesh||e instanceof Line?this.removeInstances(t.__webglObjects,e):e instanceof Sprite&&this.removeInstancesDirect(t.__webglSprites,e),e.__webglActive=!1}removeInstances(e,t){for(var i=e.length-1;i>=0;--i)e[i].object===t&&e.splice(i,1)}removeInstancesDirect(e,t){for(var i=e.length-1;i>=0;--i)e[i]===t&&e.splice(i,1)}unrollBufferMaterial(e){var t=e.object.material;if(t.volumetric)e.opaque=null,e.transparent=null,e.volumetric=t;else if(t.transparent){if(e.opaque=null,e.volumetric=null,e.transparent=t,!t.wireframe){let i=t.clone();i.opacity=0,e.transparentDepth=i}}else{if(e.opaque=t,e.transparent=null,e.volumetric=null,!t.wireframe){let i=t.clone();i.opacity=0,e.opaqueDepth=i}t.hasAO&&(e.hasAO=!0),(this._AOEnabled||e.hasAO)&&(e.opaqueShaded=t.clone(),e.opaqueShaded.shaded=!0)}}setBuffers(e,t){var i=e.vertexArray,r=e.colorArray;if(void 0!==e.__webglOffsetBuffer?(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglOffsetBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,i,t)):(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglVertexBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,i,t)),this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglColorBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,r,t),e.normalArray&&void 0!==e.__webglNormalBuffer){var n=e.normalArray;this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglNormalBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,n,t)}if(e.radiusArray&&void 0!==e.__webglRadiusBuffer&&(this._gl.bindBuffer(this._gl.ARRAY_BUFFER,e.__webglRadiusBuffer),this._gl.bufferData(this._gl.ARRAY_BUFFER,e.radiusArray,t)),e.faceArray&&void 0!==e.__webglFaceBuffer){var s=e.faceArray;this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,e.__webglFaceBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,s,t)}if(e.lineArray&&void 0!==e.__webglLineBuffer){var a=e.lineArray;this._gl.bindBuffer(this._gl.ELEMENT_ARRAY_BUFFER,e.__webglLineBuffer),this._gl.bufferData(this._gl.ELEMENT_ARRAY_BUFFER,a,t)}}createMeshBuffers(e){e.radiusArray&&(e.__webglRadiusBuffer=this._gl.createBuffer()),e.useOffset&&(e.__webglOffsetBuffer=this._gl.createBuffer()),e.__webglVertexBuffer=this._gl.createBuffer(),e.__webglNormalBuffer=this._gl.createBuffer(),e.__webglColorBuffer=this._gl.createBuffer(),e.__webglFaceBuffer=this._gl.createBuffer(),e.__webglLineBuffer=this._gl.createBuffer(),this.info.memory.geometries++}createLineBuffers(e){e.__webglVertexBuffer=this._gl.createBuffer(),e.__webglColorBuffer=this._gl.createBuffer(),this.info.memory.geometries++}addBuffer(e,t,i){e.push({buffer:t,object:i,opaque:null,transparent:null})}setupMatrices(e,t){e._modelViewMatrix.multiplyMatrices(t.matrixWorldInverse,e.matrixWorld),e._normalMatrix.getInverse(e._modelViewMatrix),e._normalMatrix.transpose()}filterFallback(e){return this._gl.LINEAR}setTextureParameters(e,t){e==this._gl.TEXTURE_2D?(this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this.filterFallback(t.magFilter)),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this.filterFallback(t.minFilter))):(this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_S,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_T,this._gl.CLAMP_TO_EDGE),this._gl.texParameteri(e,this._gl.TEXTURE_WRAP_R,this._gl.CLAMP_TO_EDGE),this._extColorBufferFloat&&this._extFloatLinear?(this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this._gl.LINEAR),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this._gl.LINEAR)):(this._gl.texParameteri(e,this._gl.TEXTURE_MAG_FILTER,this._gl.NEAREST),this._gl.texParameteri(e,this._gl.TEXTURE_MIN_FILTER,this._gl.NEAREST)))}paramToGL(e){return e===p?this._gl.UNSIGNED_BYTE:e===g?this._gl.RGBA:e===u?this._gl.NEAREST:0}setupLights(e,t){var i,r,n,s,a,o=this._lights,l=o.directional.colors,h=o.directional.positions,c=0,d=0;for(i=0,r=t.length;i<r;i++)if(s=(n=t[i]).color,a=n.intensity,n instanceof Light){if(this._direction.getPositionFromMatrix(n.matrixWorld),this._vector3.getPositionFromMatrix(n.target.matrixWorld),this._direction.sub(this._vector3),this._direction.normalize(),0===this._direction.x&&0===this._direction.y&&0===this._direction.z)continue;h[d]=this._direction.x,h[d+1]=this._direction.y,h[d+2]=this._direction.z,l[d]=s.r*a,l[d+1]=s.g*a,l[d+2]=s.b*a,d+=3,c++}o.ambient[0]=0,o.ambient[1]=0,o.ambient[2]=0,o.directional.length=c}initGL(){try{if(!OffscreenCanvas||null!=this.rows&&null!=this.cols&&null!=this.row&&null!=this.col){if(!(this._gl=this._canvas.getContext("webgl2",{alpha:this._alpha,premultipliedAlpha:this._premultipliedAlpha,antialias:this._antialias,preserveDrawingBuffer:this._preserveDrawingBuffer}))&&!(this._gl=this._canvas.getContext("experimental-webgl",{alpha:this._alpha,premultipliedAlpha:this._premultipliedAlpha,antialias:this._antialias,preserveDrawingBuffer:this._preserveDrawingBuffer}))&&!(this._gl=this._canvas.getContext("webgl",{alpha:this._alpha,premultipliedAlpha:this._premultipliedAlpha,antialias:this._antialias,preserveDrawingBuffer:this._preserveDrawingBuffer})))throw"Error creating WebGL context."}else(null==ve||ve.isContextLost())&&(ge=new OffscreenCanvas(this._canvas.width,this._canvas.height),ve=ge.getContext("webgl2",{alpha:!0,premultipliedAlpha:this._premultipliedAlpha,antialias:this._antialias,preserveDrawingBuffer:this._preserveDrawingBuffer})),this._offscreen=ge,this._gl=ve,this._bitmap=this._canvas.getContext("bitmaprenderer",{alpha:!0});var e=this._gl.getParameter(this._gl.VERSION);this._webglversion=parseInt(e[6])}catch(e){console.error(e)}}isWebGL1(){return 1==this._webglversion}setDefaultGLState(){this._gl.clearDepth(1),this._gl.clearStencil(0),this._gl.enable(this._gl.DEPTH_TEST),this._gl.depthFunc(this._gl.LEQUAL),this._gl.frontFace(this._gl.CCW),this._gl.cullFace(this._gl.BACK),this._gl.enable(this._gl.CULL_FACE),this._gl.enable(this._gl.BLEND),this._gl.blendEquation(this._gl.FUNC_ADD),this._gl.blendFunc(this._gl.SRC_ALPHA,this._gl.ONE_MINUS_SRC_ALPHA),this._gl.clearColor(this._clearColor.r,this._clearColor.g,this._clearColor.b,this._clearAlpha)}renderObjects(e,t,i,r,n,s,a){var o,l,h,c,d,u,f;t?(d=e.length-1,u=-1,f=-1):(d=0,u=e.length,f=1);for(var p=d;p!==u;p+=f)if((o=e[p]).render){if(l=o.object,h=o.buffer,c=o[i],(o.hasAO||this._AOEnabled)&&o[i+"Shaded"]&&(c=o[i+"Shaded"]),!c)continue;this.setBlending(a),this.setDepthTest(c.depthTest),this.setDepthWrite(c.depthWrite),this.setPolygonOffset(c.polygonOffset,c.polygonOffsetFactor,c.polygonOffsetUnits);var m=l._modelViewMatrix.isReflected();if(this.setMaterialFaces(c,m),this.renderBuffer(r,n,s,c,h,l),(this._outlineEnabled||c.outline)&&!c.wireframe&&"basic"!==c.shaderID&&0!==c.opacity){let e=this._outlineMaterial;"sphereimposter"==c.shaderID?e=this._outlineSphereImposterMaterial:"stickimposter"==c.shaderID&&(e=this._outlineStickImposterMaterial),this.renderBuffer(r,n,s,e,h,l)}}}renderSprites(e,t,i){this._currentGeometryGroupHash=-1,this._currentProgram=null,this._currentCamera=null,this._oldDepthWrite=-1,this._oldDepthTest=-1,this._oldDoubleSided=-1,this._currentMaterialId=-1,this._oldFlipSided=-1,this._lightsNeedUpdate=!0,this.sprites.render(e,t,this._currentWidth,this._currentHeight,i),this._currentGeometryGroupHash=-1,this._currentProgram=null,this._currentCamera=null,this._oldDepthWrite=-1,this._oldDepthTest=-1,this._oldDoubleSided=-1,this._currentMaterialId=-1,this._oldFlipSided=-1}}},71(e,t,i){var r=i(107),n=i(981),s=i(972),a=i(834),o=i(746),l=Object.prototype.toString;function h(e){if(!(this instanceof h))return new h(e);this.options=n.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:""},e||{});var t=this.options;t.raw&&t.windowBits>0?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 o,this.strm.avail_out=0;var i=r.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==i)throw new Error(a[i]);if(t.header&&r.deflateSetHeader(this.strm,t.header),t.dictionary){var c;if(c="string"==typeof t.dictionary?s.string2buf(t.dictionary):"[object ArrayBuffer]"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(i=r.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,o=this.strm,h=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,"string"==typeof e?o.input=s.string2buf(e):"[object ArrayBuffer]"===l.call(e)?o.input=new Uint8Array(e):o.input=e,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new n.Buf8(h),o.next_out=0,o.avail_out=h),1!==(i=r.deflate(o,a))&&0!==i)return this.onEnd(i),this.ended=!0,!1;0!==o.avail_out&&(0!==o.avail_in||4!==a&&2!==a)||("string"===this.options.to?this.onData(s.buf2binstring(n.shrinkBuf(o.output,o.next_out))):this.onData(n.shrinkBuf(o.output,o.next_out)))}while((o.avail_in>0||0===o.avail_out)&&1!==i);return 4===a?(i=r.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,0===i):2!==a||(this.onEnd(0),o.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=n.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},t.Deflate=h,t.deflate=c,t.deflateRaw=function(e,t){return(t=t||{}).raw=!0,c(e,t)},t.gzip=function(e,t){return(t=t||{}).gzip=!0,c(e,t)}},75(e,t,i){function r(e){let t=e.length;for(;--t>=0;)e[t]=0}i.r(t),i.d(t,{Deflate:()=>yi,Inflate:()=>Ai,constants:()=>Mi,default:()=>Ti,deflate:()=>bi,deflateRaw:()=>xi,gzip:()=>wi,inflate:()=>Ci,inflateRaw:()=>Si,ungzip:()=>zi});const n=256,s=286,a=30,o=15,l=new Uint8Array([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]),h=new Uint8Array([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]),c=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),d=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),u=new Array(576);r(u);const f=new Array(60);r(f);const p=new Array(512);r(p);const m=new Array(256);r(m);const g=new Array(29);r(g);const v=new Array(a);function _(e,t,i,r,n){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}let y,b,x;function w(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}r(v);const A=e=>e<256?p[e]:p[256+(e>>>7)],C=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},S=(e,t,i)=>{e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,C(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)},z=(e,t,i)=>{S(e,i[2*t],i[2*t+1])},M=(e,t)=>{let i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1},T=(e,t,i)=>{const r=new Array(16);let n,s,a=0;for(n=1;n<=o;n++)a=a+i[n-1]<<1,r[n]=a;for(s=0;s<=t;s++){let t=e[2*s+1];0!==t&&(e[2*s]=M(r[t]++,t))}},E=e=>{let t;for(t=0;t<s;t++)e.dyn_ltree[2*t]=0;for(t=0;t<a;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},L=e=>{e.bi_valid>8?C(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},F=(e,t,i,r)=>{const n=2*t,s=2*i;return e[n]<e[s]||e[n]===e[s]&&r[t]<=r[i]},I=(e,t,i)=>{const r=e.heap[i];let n=i<<1;for(;n<=e.heap_len&&(n<e.heap_len&&F(t,e.heap[n+1],e.heap[n],e.depth)&&n++,!F(t,r,e.heap[n],e.depth));)e.heap[i]=e.heap[n],i=n,n<<=1;e.heap[i]=r},D=(e,t,i)=>{let r,s,a,o,c=0;if(0!==e.sym_next)do{r=255&e.pending_buf[e.sym_buf+c++],r+=(255&e.pending_buf[e.sym_buf+c++])<<8,s=e.pending_buf[e.sym_buf+c++],0===r?z(e,s,t):(a=m[s],z(e,a+n+1,t),o=l[a],0!==o&&(s-=g[a],S(e,s,o)),r--,a=A(r),z(e,a,i),o=h[a],0!==o&&(r-=v[a],S(e,r,o)))}while(c<e.sym_next);z(e,256,t)},O=(e,t)=>{const i=t.dyn_tree,r=t.stat_desc.static_tree,n=t.stat_desc.has_stree,s=t.stat_desc.elems;let a,l,h,c=-1;for(e.heap_len=0,e.heap_max=573,a=0;a<s;a++)0!==i[2*a]?(e.heap[++e.heap_len]=c=a,e.depth[a]=0):i[2*a+1]=0;for(;e.heap_len<2;)h=e.heap[++e.heap_len]=c<2?++c:0,i[2*h]=1,e.depth[h]=0,e.opt_len--,n&&(e.static_len-=r[2*h+1]);for(t.max_code=c,a=e.heap_len>>1;a>=1;a--)I(e,i,a);h=s;do{a=e.heap[1],e.heap[1]=e.heap[e.heap_len--],I(e,i,1),l=e.heap[1],e.heap[--e.heap_max]=a,e.heap[--e.heap_max]=l,i[2*h]=i[2*a]+i[2*l],e.depth[h]=(e.depth[a]>=e.depth[l]?e.depth[a]:e.depth[l])+1,i[2*a+1]=i[2*l+1]=h,e.heap[1]=h++,I(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const i=t.dyn_tree,r=t.max_code,n=t.stat_desc.static_tree,s=t.stat_desc.has_stree,a=t.stat_desc.extra_bits,l=t.stat_desc.extra_base,h=t.stat_desc.max_length;let c,d,u,f,p,m,g=0;for(f=0;f<=o;f++)e.bl_count[f]=0;for(i[2*e.heap[e.heap_max]+1]=0,c=e.heap_max+1;c<573;c++)d=e.heap[c],f=i[2*i[2*d+1]+1]+1,f>h&&(f=h,g++),i[2*d+1]=f,d>r||(e.bl_count[f]++,p=0,d>=l&&(p=a[d-l]),m=i[2*d],e.opt_len+=m*(f+p),s&&(e.static_len+=m*(n[2*d+1]+p)));if(0!==g){do{for(f=h-1;0===e.bl_count[f];)f--;e.bl_count[f]--,e.bl_count[f+1]+=2,e.bl_count[h]--,g-=2}while(g>0);for(f=h;0!==f;f--)for(d=e.bl_count[f];0!==d;)u=e.heap[--c],u>r||(i[2*u+1]!==f&&(e.opt_len+=(f-i[2*u+1])*i[2*u],i[2*u+1]=f),d--)}})(e,t),T(i,c,e.bl_count)},R=(e,t,i)=>{let r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),t[2*(i+1)+1]=65535,r=0;r<=i;r++)n=a,a=t[2*(r+1)+1],++o<l&&n===a||(o<h?e.bl_tree[2*n]+=o:0!==n?(n!==s&&e.bl_tree[2*n]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,o=0,s=n,0===a?(l=138,h=3):n===a?(l=6,h=3):(l=7,h=4))},k=(e,t,i)=>{let r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),r=0;r<=i;r++)if(n=a,a=t[2*(r+1)+1],!(++o<l&&n===a)){if(o<h)do{z(e,n,e.bl_tree)}while(0!==--o);else 0!==n?(n!==s&&(z(e,n,e.bl_tree),o--),z(e,16,e.bl_tree),S(e,o-3,2)):o<=10?(z(e,17,e.bl_tree),S(e,o-3,3)):(z(e,18,e.bl_tree),S(e,o-11,7));o=0,s=n,0===a?(l=138,h=3):n===a?(l=6,h=3):(l=7,h=4)}};let P=!1;const U=(e,t,i,r)=>{S(e,0+(r?1:0),3),L(e),C(e,i),C(e,~i),i&&e.pending_buf.set(e.window.subarray(t,t+i),e.pending),e.pending+=i};var N=(e,t,i,r)=>{let s,a,o=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let 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<n;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),O(e,e.l_desc),O(e,e.d_desc),o=(e=>{let t;for(R(e,e.dyn_ltree,e.l_desc.max_code),R(e,e.dyn_dtree,e.d_desc.max_code),O(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),s=e.opt_len+3+7>>>3,a=e.static_len+3+7>>>3,a<=s&&(s=a)):s=a=i+5,i+4<=s&&-1!==t?U(e,t,i,r):4===e.strategy||a===s?(S(e,2+(r?1:0),3),D(e,u,f)):(S(e,4+(r?1:0),3),((e,t,i,r)=>{let n;for(S(e,t-257,5),S(e,i-1,5),S(e,r-4,4),n=0;n<r;n++)S(e,e.bl_tree[2*d[n]+1],3);k(e,e.dyn_ltree,t-1),k(e,e.dyn_dtree,i-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),D(e,e.dyn_ltree,e.dyn_dtree)),E(e),r&&L(e)},B={_tr_init:e=>{P||((()=>{let e,t,i,r,n;const d=new Array(16);for(i=0,r=0;r<28;r++)for(g[r]=i,e=0;e<1<<l[r];e++)m[i++]=r;for(m[i-1]=r,n=0,r=0;r<16;r++)for(v[r]=n,e=0;e<1<<h[r];e++)p[n++]=r;for(n>>=7;r<a;r++)for(v[r]=n<<7,e=0;e<1<<h[r]-7;e++)p[256+n++]=r;for(t=0;t<=o;t++)d[t]=0;for(e=0;e<=143;)u[2*e+1]=8,e++,d[8]++;for(;e<=255;)u[2*e+1]=9,e++,d[9]++;for(;e<=279;)u[2*e+1]=7,e++,d[7]++;for(;e<=287;)u[2*e+1]=8,e++,d[8]++;for(T(u,287,d),e=0;e<a;e++)f[2*e+1]=5,f[2*e]=M(e,5);y=new _(u,l,257,s,o),b=new _(f,h,0,a,o),x=new _(new Array(0),c,0,19,7)})(),P=!0),e.l_desc=new w(e.dyn_ltree,y),e.d_desc=new w(e.dyn_dtree,b),e.bl_desc=new w(e.bl_tree,x),e.bi_buf=0,e.bi_valid=0,E(e)},_tr_stored_block:U,_tr_flush_block:N,_tr_tally:(e,t,i)=>(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=i,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(m[i]+n+1)]++,e.dyn_dtree[2*A(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{S(e,2,3),z(e,256,u),(e=>{16===e.bi_valid?(C(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)}},G=(e,t,i,r)=>{let n=65535&e,s=e>>>16&65535,a=0;for(;0!==i;){a=i>2e3?2e3:i,i-=a;do{n=n+t[r++]|0,s=s+n|0}while(--a);n%=65521,s%=65521}return n|s<<16};const V=new Uint32Array((()=>{let e,t=[];for(var i=0;i<256;i++){e=i;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t})());var j=(e,t,i,r)=>{const n=V,s=r+i;e^=-1;for(let i=r;i<s;i++)e=e>>>8^n[255&(e^t[i])];return-1^e},H={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"},W={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_MEM_ERROR:-4,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};const{_tr_init:q,_tr_stored_block:Y,_tr_flush_block:Z,_tr_tally:X,_tr_align:K}=B,{Z_NO_FLUSH:Q,Z_PARTIAL_FLUSH:$,Z_FULL_FLUSH:J,Z_FINISH:ee,Z_BLOCK:te,Z_OK:ie,Z_STREAM_END:re,Z_STREAM_ERROR:ne,Z_DATA_ERROR:se,Z_BUF_ERROR:ae,Z_DEFAULT_COMPRESSION:oe,Z_FILTERED:le,Z_HUFFMAN_ONLY:he,Z_RLE:ce,Z_FIXED:de,Z_DEFAULT_STRATEGY:ue,Z_UNKNOWN:fe,Z_DEFLATED:pe}=W,me=258,ge=262,ve=42,_e=113,ye=666,be=(e,t)=>(e.msg=H[t],t),xe=e=>2*e-(e>4?9:0),we=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ae=e=>{let t,i,r,n=e.w_size;t=e.hash_size,r=t;do{i=e.head[--r],e.head[r]=i>=n?i-n:0}while(--t);t=n,r=t;do{i=e.prev[--r],e.prev[r]=i>=n?i-n:0}while(--t)};let Ce=(e,t,i)=>(t<<e.hash_shift^i)&e.hash_mask;const Se=e=>{const t=e.state;let i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(e.output.set(t.pending_buf.subarray(t.pending_out,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))},ze=(e,t)=>{Z(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Se(e.strm)},Me=(e,t)=>{e.pending_buf[e.pending++]=t},Te=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Ee=(e,t,i,r)=>{let n=e.avail_in;return n>r&&(n=r),0===n?0:(e.avail_in-=n,t.set(e.input.subarray(e.next_in,e.next_in+n),i),1===e.state.wrap?e.adler=G(e.adler,t,n,i):2===e.state.wrap&&(e.adler=j(e.adler,t,n,i)),e.next_in+=n,e.total_in+=n,n)},Le=(e,t)=>{let i,r,n=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match;const l=e.strstart>e.w_size-ge?e.strstart-(e.w_size-ge):0,h=e.window,c=e.w_mask,d=e.prev,u=e.strstart+me;let f=h[s+a-1],p=h[s+a];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(i=t,h[i+a]===p&&h[i+a-1]===f&&h[i]===h[s]&&h[++i]===h[s+1]){s+=2,i++;do{}while(h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&s<u);if(r=me-(u-s),s=u-me,r>a){if(e.match_start=t,a=r,r>=o)break;f=h[s+a-1],p=h[s+a]}}}while((t=d[t&c])>l&&0!==--n);return a<=e.lookahead?a:e.lookahead},Fe=e=>{const t=e.w_size;let i,r,n;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-ge)&&(e.window.set(e.window.subarray(t,t+t-r),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ae(e),r+=t),0===e.strm.avail_in)break;if(i=Ee(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=i,e.lookahead+e.insert>=3)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=Ce(e,e.ins_h,e.window[n+1]);e.insert&&(e.ins_h=Ce(e,e.ins_h,e.window[n+3-1]),e.prev[n&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=n,n++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<ge&&0!==e.strm.avail_in)},Ie=(e,t)=>{let i,r,n,s=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,a=0,o=e.strm.avail_in;do{if(i=65535,n=e.bi_valid+42>>3,e.strm.avail_out<n)break;if(n=e.strm.avail_out-n,r=e.strstart-e.block_start,i>r+e.strm.avail_in&&(i=r+e.strm.avail_in),i>n&&(i=n),i<s&&(0===i&&t!==ee||t===Q||i!==r+e.strm.avail_in))break;a=t===ee&&i===r+e.strm.avail_in?1:0,Y(e,0,0,a),e.pending_buf[e.pending-4]=i,e.pending_buf[e.pending-3]=i>>8,e.pending_buf[e.pending-2]=~i,e.pending_buf[e.pending-1]=~i>>8,Se(e.strm),r&&(r>i&&(r=i),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,i-=r),i&&(Ee(e.strm,e.strm.output,e.strm.next_out,i),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i)}while(0===a);return o-=e.strm.avail_in,o&&(o>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=o&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-o,e.strm.next_in),e.strstart),e.strstart+=o,e.insert+=o>e.w_size-e.insert?e.w_size-e.insert:o),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),a?4:t!==Q&&t!==ee&&0===e.strm.avail_in&&e.strstart===e.block_start?2:(n=e.window_size-e.strstart,e.strm.avail_in>n&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,n+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),n>e.strm.avail_in&&(n=e.strm.avail_in),n&&(Ee(e.strm,e.window,e.strstart,n),e.strstart+=n,e.insert+=n>e.w_size-e.insert?e.w_size-e.insert:n),e.high_water<e.strstart&&(e.high_water=e.strstart),n=e.bi_valid+42>>3,n=e.pending_buf_size-n>65535?65535:e.pending_buf_size-n,s=n>e.w_size?e.w_size:n,r=e.strstart-e.block_start,(r>=s||(r||t===ee)&&t!==Q&&0===e.strm.avail_in&&r<=n)&&(i=r>n?n:r,a=t===ee&&0===e.strm.avail_in&&i===r?1:0,Y(e,e.block_start,i,a),e.block_start+=i,Se(e.strm)),a?3:1)},De=(e,t)=>{let i,r;for(;;){if(e.lookahead<ge){if(Fe(e),e.lookahead<ge&&t===Q)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-ge&&(e.match_length=Le(e,i)),e.match_length>=3)if(r=X(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=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+1]);else r=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2},Oe=(e,t)=>{let i,r,n;for(;;){if(e.lookahead<ge){if(Fe(e),e.lookahead<ge&&t===Q)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-ge&&(e.match_length=Le(e,i),e.match_length<=5&&(e.strategy===le||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=X(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=n&&(e.ins_h=Ce(e,e.ins_h,e.window[e.strstart+3-1]),i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(ze(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(r=X(e,0,e.window[e.strstart-1]),r&&ze(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=X(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2};function Re(e,t,i,r,n){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=r,this.func=n}const ke=[new Re(0,0,0,0,Ie),new Re(4,4,8,4,De),new Re(4,5,16,8,De),new Re(4,6,32,32,De),new Re(4,4,16,16,Oe),new Re(8,16,32,32,Oe),new Re(8,16,128,128,Oe),new Re(8,32,128,256,Oe),new Re(32,128,258,1024,Oe),new Re(32,258,258,4096,Oe)];function Pe(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=pe,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),we(this.dyn_ltree),we(this.dyn_dtree),we(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),we(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),we(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ue=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==ve&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==_e&&t.status!==ye?1:0},Ne=e=>{if(Ue(e))return be(e,ne);e.total_in=e.total_out=0,e.data_type=fe;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?ve:_e,e.adler=2===t.wrap?0:1,t.last_flush=-2,q(t),ie},Be=e=>{const t=Ne(e);var i;return t===ie&&((i=e.state).window_size=2*i.w_size,we(i.head),i.max_lazy_match=ke[i.level].max_lazy,i.good_match=ke[i.level].good_length,i.nice_match=ke[i.level].nice_length,i.max_chain_length=ke[i.level].max_chain,i.strstart=0,i.block_start=0,i.lookahead=0,i.insert=0,i.match_length=i.prev_length=2,i.match_available=0,i.ins_h=0),t},Ge=(e,t,i,r,n,s)=>{if(!e)return ne;let a=1;if(t===oe&&(t=6),r<0?(a=0,r=-r):r>15&&(a=2,r-=16),n<1||n>9||i!==pe||r<8||r>15||t<0||t>9||s<0||s>de||8===r&&1!==a)return be(e,ne);8===r&&(r=9);const o=new Pe;return e.state=o,o.strm=e,o.status=ve,o.wrap=a,o.gzhead=null,o.w_bits=r,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=t,o.strategy=s,o.method=i,Be(e)};var Ve={deflateInit:(e,t)=>Ge(e,t,pe,15,8,ue),deflateInit2:Ge,deflateReset:Be,deflateResetKeep:Ne,deflateSetHeader:(e,t)=>Ue(e)||2!==e.state.wrap?ne:(e.state.gzhead=t,ie),deflate:(e,t)=>{if(Ue(e)||t>te||t<0)return e?be(e,ne):ne;const i=e.state;if(!e.output||0!==e.avail_in&&!e.input||i.status===ye&&t!==ee)return be(e,0===e.avail_out?ae:ne);const r=i.last_flush;if(i.last_flush=t,0!==i.pending){if(Se(e),0===e.avail_out)return i.last_flush=-1,ie}else if(0===e.avail_in&&xe(t)<=xe(r)&&t!==ee)return be(e,ae);if(i.status===ye&&0!==e.avail_in)return be(e,ae);if(i.status===ve&&0===i.wrap&&(i.status=_e),i.status===ve){let t=pe+(i.w_bits-8<<4)<<8,r=-1;if(r=i.strategy>=he||i.level<2?0:i.level<6?1:6===i.level?2:3,t|=r<<6,0!==i.strstart&&(t|=32),t+=31-t%31,Te(i,t),0!==i.strstart&&(Te(i,e.adler>>>16),Te(i,65535&e.adler)),e.adler=1,i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie}if(57===i.status)if(e.adler=0,Me(i,31),Me(i,139),Me(i,8),i.gzhead)Me(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Me(i,255&i.gzhead.time),Me(i,i.gzhead.time>>8&255),Me(i,i.gzhead.time>>16&255),Me(i,i.gzhead.time>>24&255),Me(i,9===i.level?2:i.strategy>=he||i.level<2?4:0),Me(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(Me(i,255&i.gzhead.extra.length),Me(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=j(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69;else if(Me(i,0),Me(i,0),Me(i,0),Me(i,0),Me(i,0),Me(i,9===i.level?2:i.strategy>=he||i.level<2?4:0),Me(i,3),i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie;if(69===i.status){if(i.gzhead.extra){let t=i.pending,r=(65535&i.gzhead.extra.length)-i.gzindex;for(;i.pending+r>i.pending_buf_size;){let n=i.pending_buf_size-i.pending;if(i.pending_buf.set(i.gzhead.extra.subarray(i.gzindex,i.gzindex+n),i.pending),i.pending=i.pending_buf_size,i.gzhead.hcrc&&i.pending>t&&(e.adler=j(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex+=n,Se(e),0!==i.pending)return i.last_flush=-1,ie;t=0,r-=n}let n=new Uint8Array(i.gzhead.extra);i.pending_buf.set(n.subarray(i.gzindex,i.gzindex+r),i.pending),i.pending+=r,i.gzhead.hcrc&&i.pending>t&&(e.adler=j(e.adler,i.pending_buf,i.pending-t,t)),i.gzindex=0}i.status=73}if(73===i.status){if(i.gzhead.name){let t,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),Se(e),0!==i.pending)return i.last_flush=-1,ie;r=0}t=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0,Me(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),i.gzindex=0}i.status=91}if(91===i.status){if(i.gzhead.comment){let t,r=i.pending;do{if(i.pending===i.pending_buf_size){if(i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r)),Se(e),0!==i.pending)return i.last_flush=-1,ie;r=0}t=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0,Me(i,t)}while(0!==t);i.gzhead.hcrc&&i.pending>r&&(e.adler=j(e.adler,i.pending_buf,i.pending-r,r))}i.status=103}if(103===i.status){if(i.gzhead.hcrc){if(i.pending+2>i.pending_buf_size&&(Se(e),0!==i.pending))return i.last_flush=-1,ie;Me(i,255&e.adler),Me(i,e.adler>>8&255),e.adler=0}if(i.status=_e,Se(e),0!==i.pending)return i.last_flush=-1,ie}if(0!==e.avail_in||0!==i.lookahead||t!==Q&&i.status!==ye){let r=0===i.level?Ie(i,t):i.strategy===he?((e,t)=>{let i;for(;;){if(0===e.lookahead&&(Fe(e),0===e.lookahead)){if(t===Q)return 1;break}if(e.match_length=0,i=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2})(i,t):i.strategy===ce?((e,t)=>{let i,r,n,s;const a=e.window;for(;;){if(e.lookahead<=me){if(Fe(e),e.lookahead<=me&&t===Q)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=e.strstart-1,r=a[n],r===a[++n]&&r===a[++n]&&r===a[++n])){s=e.strstart+me;do{}while(r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&r===a[++n]&&n<s);e.match_length=me-(s-n),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=X(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=X(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(ze(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===ee?(ze(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(ze(e,!1),0===e.strm.avail_out)?1:2})(i,t):ke[i.level].func(i,t);if(3!==r&&4!==r||(i.status=ye),1===r||3===r)return 0===e.avail_out&&(i.last_flush=-1),ie;if(2===r&&(t===$?K(i):t!==te&&(Y(i,0,0,!1),t===J&&(we(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Se(e),0===e.avail_out))return i.last_flush=-1,ie}return t!==ee?ie:i.wrap<=0?re:(2===i.wrap?(Me(i,255&e.adler),Me(i,e.adler>>8&255),Me(i,e.adler>>16&255),Me(i,e.adler>>24&255),Me(i,255&e.total_in),Me(i,e.total_in>>8&255),Me(i,e.total_in>>16&255),Me(i,e.total_in>>24&255)):(Te(i,e.adler>>>16),Te(i,65535&e.adler)),Se(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?ie:re)},deflateEnd:e=>{if(Ue(e))return ne;const t=e.state.status;return e.state=null,t===_e?be(e,se):ie},deflateSetDictionary:(e,t)=>{let i=t.length;if(Ue(e))return ne;const r=e.state,n=r.wrap;if(2===n||1===n&&r.status!==ve||r.lookahead)return ne;if(1===n&&(e.adler=G(e.adler,t,i,0)),r.wrap=0,i>=r.w_size){0===n&&(we(r.head),r.strstart=0,r.block_start=0,r.insert=0);let e=new Uint8Array(r.w_size);e.set(t.subarray(i-r.w_size,i),0),t=e,i=r.w_size}const s=e.avail_in,a=e.next_in,o=e.input;for(e.avail_in=i,e.next_in=0,e.input=t,Fe(r);r.lookahead>=3;){let e=r.strstart,t=r.lookahead-2;do{r.ins_h=Ce(r,r.ins_h,r.window[e+3-1]),r.prev[e&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=e,e++}while(--t);r.strstart=e,r.lookahead=2,Fe(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=a,e.input=o,e.avail_in=s,r.wrap=n,ie},deflateInfo:"pako deflate (from Nodeca project)"};const je=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var He=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const i=t.shift();if(i){if("object"!=typeof i)throw new TypeError(i+"must be non-object");for(const t in i)je(i,t)&&(e[t]=i[t])}}return e},We=e=>{let t=0;for(let i=0,r=e.length;i<r;i++)t+=e[i].length;const i=new Uint8Array(t);for(let t=0,r=0,n=e.length;t<n;t++){let n=e[t];i.set(n,r),r+=n.length}return i};let qe=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){qe=!1}const Ye=new Uint8Array(256);for(let e=0;e<256;e++)Ye[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Ye[254]=Ye[254]=1;var Ze=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,i,r,n,s,a=e.length,o=0;for(n=0;n<a;n++)i=e.charCodeAt(n),55296==(64512&i)&&n+1<a&&(r=e.charCodeAt(n+1),56320==(64512&r)&&(i=65536+(i-55296<<10)+(r-56320),n++)),o+=i<128?1:i<2048?2:i<65536?3:4;for(t=new Uint8Array(o),s=0,n=0;s<o;n++)i=e.charCodeAt(n),55296==(64512&i)&&n+1<a&&(r=e.charCodeAt(n+1),56320==(64512&r)&&(i=65536+(i-55296<<10)+(r-56320),n++)),i<128?t[s++]=i:i<2048?(t[s++]=192|i>>>6,t[s++]=128|63&i):i<65536?(t[s++]=224|i>>>12,t[s++]=128|i>>>6&63,t[s++]=128|63&i):(t[s++]=240|i>>>18,t[s++]=128|i>>>12&63,t[s++]=128|i>>>6&63,t[s++]=128|63&i);return t},Xe=(e,t)=>{const i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let r,n;const s=new Array(2*i);for(n=0,r=0;r<i;){let t=e[r++];if(t<128){s[n++]=t;continue}let a=Ye[t];if(a>4)s[n++]=65533,r+=a-1;else{for(t&=2===a?31:3===a?15:7;a>1&&r<i;)t=t<<6|63&e[r++],a--;a>1?s[n++]=65533:t<65536?s[n++]=t:(t-=65536,s[n++]=55296|t>>10&1023,s[n++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&qe)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let i="";for(let r=0;r<t;r++)i+=String.fromCharCode(e[r]);return i})(s,n)},Ke=(e,t)=>{(t=t||e.length)>e.length&&(t=e.length);let i=t-1;for(;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+Ye[e[i]]>t?i:t},Qe=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};const $e=Object.prototype.toString,{Z_NO_FLUSH:Je,Z_SYNC_FLUSH:et,Z_FULL_FLUSH:tt,Z_FINISH:it,Z_OK:rt,Z_STREAM_END:nt,Z_DEFAULT_COMPRESSION:st,Z_DEFAULT_STRATEGY:at,Z_DEFLATED:ot}=W;function lt(e){this.options=He({level:st,method:ot,chunkSize:16384,windowBits:15,memLevel:8,strategy:at},e||{});let t=this.options;t.raw&&t.windowBits>0?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 Qe,this.strm.avail_out=0;let i=Ve.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(i!==rt)throw new Error(H[i]);if(t.header&&Ve.deflateSetHeader(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?Ze(t.dictionary):"[object ArrayBuffer]"===$e.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,i=Ve.deflateSetDictionary(this.strm,e),i!==rt)throw new Error(H[i]);this._dict_set=!0}}function ht(e,t){const i=new lt(t);if(i.push(e,!0),i.err)throw i.msg||H[i.err];return i.result}lt.prototype.push=function(e,t){const i=this.strm,r=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=t===~~t?t:!0===t?it:Je,"string"==typeof e?i.input=Ze(e):"[object ArrayBuffer]"===$e.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;)if(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),(s===et||s===tt)&&i.avail_out<=6)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else{if(n=Ve.deflate(i,s),n===nt)return i.next_out>0&&this.onData(i.output.subarray(0,i.next_out)),n=Ve.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===rt;if(0!==i.avail_out){if(s>0&&i.next_out>0)this.onData(i.output.subarray(0,i.next_out)),i.avail_out=0;else if(0===i.avail_in)break}else this.onData(i.output)}return!0},lt.prototype.onData=function(e){this.chunks.push(e)},lt.prototype.onEnd=function(e){e===rt&&(this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ct={Deflate:lt,deflate:ht,deflateRaw:function(e,t){return(t=t||{}).raw=!0,ht(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,ht(e,t)},constants:W};const dt=16209;var ut=function(e,t){let i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b,x,w,A,C,S;const z=e.state;i=e.next_in,C=e.input,r=i+(e.avail_in-5),n=e.next_out,S=e.output,s=n-(t-e.avail_out),a=n+(e.avail_out-257),o=z.dmax,l=z.wsize,h=z.whave,c=z.wnext,d=z.window,u=z.hold,f=z.bits,p=z.lencode,m=z.distcode,g=(1<<z.lenbits)-1,v=(1<<z.distbits)-1;e:do{f<15&&(u+=C[i++]<<f,f+=8,u+=C[i++]<<f,f+=8),_=p[u&g];t:for(;;){if(y=_>>>24,u>>>=y,f-=y,y=_>>>16&255,0===y)S[n++]=65535&_;else{if(!(16&y)){if(64&y){if(32&y){z.mode=16191;break e}e.msg="invalid literal/length code",z.mode=dt;break e}_=p[(65535&_)+(u&(1<<y)-1)];continue t}for(b=65535&_,y&=15,y&&(f<y&&(u+=C[i++]<<f,f+=8),b+=u&(1<<y)-1,u>>>=y,f-=y),f<15&&(u+=C[i++]<<f,f+=8,u+=C[i++]<<f,f+=8),_=m[u&v];;){if(y=_>>>24,u>>>=y,f-=y,y=_>>>16&255,16&y){if(x=65535&_,y&=15,f<y&&(u+=C[i++]<<f,f+=8,f<y&&(u+=C[i++]<<f,f+=8)),x+=u&(1<<y)-1,x>o){e.msg="invalid distance too far back",z.mode=dt;break e}if(u>>>=y,f-=y,y=n-s,x>y){if(y=x-y,y>h&&z.sane){e.msg="invalid distance too far back",z.mode=dt;break e}if(w=0,A=d,0===c){if(w+=l-y,y<b){b-=y;do{S[n++]=d[w++]}while(--y);w=n-x,A=S}}else if(c<y){if(w+=l+c-y,y-=c,y<b){b-=y;do{S[n++]=d[w++]}while(--y);if(w=0,c<b){y=c,b-=y;do{S[n++]=d[w++]}while(--y);w=n-x,A=S}}}else if(w+=c-y,y<b){b-=y;do{S[n++]=d[w++]}while(--y);w=n-x,A=S}for(;b>2;)S[n++]=A[w++],S[n++]=A[w++],S[n++]=A[w++],b-=3;b&&(S[n++]=A[w++],b>1&&(S[n++]=A[w++]))}else{w=n-x;do{S[n++]=S[w++],S[n++]=S[w++],S[n++]=S[w++],b-=3}while(b>2);b&&(S[n++]=S[w++],b>1&&(S[n++]=S[w++]))}break}if(64&y){e.msg="invalid distance code",z.mode=dt;break e}_=m[(65535&_)+(u&(1<<y)-1)]}}break}}while(i<r&&n<a);b=f>>3,i-=b,f-=b<<3,u&=(1<<f)-1,e.next_in=i,e.next_out=n,e.avail_in=i<r?r-i+5:5-(i-r),e.avail_out=n<a?a-n+257:257-(n-a),z.hold=u,z.bits=f};const ft=15,pt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),mt=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),gt=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),vt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var _t=(e,t,i,r,n,s,a,o)=>{const l=o.bits;let h,c,d,u,f,p,m=0,g=0,v=0,_=0,y=0,b=0,x=0,w=0,A=0,C=0,S=null;const z=new Uint16Array(16),M=new Uint16Array(16);let T,E,L,F=null;for(m=0;m<=ft;m++)z[m]=0;for(g=0;g<r;g++)z[t[i+g]]++;for(y=l,_=ft;_>=1&&0===z[_];_--);if(y>_&&(y=_),0===_)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(v=1;v<_&&0===z[v];v++);for(y<v&&(y=v),w=1,m=1;m<=ft;m++)if(w<<=1,w-=z[m],w<0)return-1;if(w>0&&(0===e||1!==_))return-1;for(M[1]=0,m=1;m<ft;m++)M[m+1]=M[m]+z[m];for(g=0;g<r;g++)0!==t[i+g]&&(a[M[t[i+g]]++]=g);if(0===e?(S=F=a,p=20):1===e?(S=pt,F=mt,p=257):(S=gt,F=vt,p=0),C=0,g=0,m=v,f=s,b=y,x=0,d=-1,A=1<<y,u=A-1,1===e&&A>852||2===e&&A>592)return 1;for(;;){T=m-x,a[g]+1<p?(E=0,L=a[g]):a[g]>=p?(E=F[a[g]-p],L=S[a[g]-p]):(E=96,L=0),h=1<<m-x,c=1<<b,v=c;do{c-=h,n[f+(C>>x)+c]=T<<24|E<<16|L}while(0!==c);for(h=1<<m-1;C&h;)h>>=1;if(0!==h?(C&=h-1,C+=h):C=0,g++,0===--z[m]){if(m===_)break;m=t[i+a[g]]}if(m>y&&(C&u)!==d){for(0===x&&(x=y),f+=v,b=m-x,w=1<<b;b+x<_&&(w-=z[b+x],!(w<=0));)b++,w<<=1;if(A+=1<<b,1===e&&A>852||2===e&&A>592)return 1;d=C&u,n[d]=y<<24|b<<16|f-s}}return 0!==C&&(n[f+C]=m-x<<24|64<<16),o.bits=y,0};const{Z_FINISH:yt,Z_BLOCK:bt,Z_TREES:xt,Z_OK:wt,Z_STREAM_END:At,Z_NEED_DICT:Ct,Z_STREAM_ERROR:St,Z_DATA_ERROR:zt,Z_MEM_ERROR:Mt,Z_BUF_ERROR:Tt,Z_DEFLATED:Et}=W,Lt=16180,Ft=16190,It=16191,Dt=16192,Ot=16194,Rt=16199,kt=16200,Pt=16206,Ut=16209,Nt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function Bt(){this.strm=null,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 Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Gt=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode<Lt||t.mode>16211?1:0},Vt=e=>{if(Gt(e))return St;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=Lt,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,wt},jt=e=>{if(Gt(e))return St;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,Vt(e)},Ht=(e,t)=>{let i;if(Gt(e))return St;const r=e.state;return t<0?(i=0,t=-t):(i=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?St:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=i,r.wbits=t,jt(e))},Wt=(e,t)=>{if(!e)return St;const i=new Bt;e.state=i,i.strm=e,i.window=null,i.mode=Lt;const r=Ht(e,t);return r!==wt&&(e.state=null),r};let qt,Yt,Zt=!0;const Xt=e=>{if(Zt){qt=new Int32Array(512),Yt=new Int32Array(32);let t=0;for(;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(_t(1,e.lens,0,288,qt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;_t(2,e.lens,0,32,Yt,0,e.work,{bits:5}),Zt=!1}e.lencode=qt,e.lenbits=9,e.distcode=Yt,e.distbits=5},Kt=(e,t,i,r)=>{let n;const s=e.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),r>=s.wsize?(s.window.set(t.subarray(i-s.wsize,i),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>r&&(n=r),s.window.set(t.subarray(i-r,i-r+n),s.wnext),(r-=n)?(s.window.set(t.subarray(i-r,i),0),s.wnext=r,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Qt={inflateReset:jt,inflateReset2:Ht,inflateResetKeep:Vt,inflateInit:e=>Wt(e,15),inflateInit2:Wt,inflate:(e,t)=>{let i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b,x,w,A,C=0;const S=new Uint8Array(4);let z,M;const T=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Gt(e)||!e.output||!e.input&&0!==e.avail_in)return St;i=e.state,i.mode===It&&(i.mode=Dt),a=e.next_out,n=e.output,l=e.avail_out,s=e.next_in,r=e.input,o=e.avail_in,h=i.hold,c=i.bits,d=o,u=l,A=wt;e:for(;;)switch(i.mode){case Lt:if(0===i.wrap){i.mode=Dt;break}for(;c<16;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(2&i.wrap&&35615===h){0===i.wbits&&(i.wbits=15),i.check=0,S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0),h=0,c=0,i.mode=16181;break}if(i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&h)<<8)+(h>>8))%31){e.msg="incorrect header check",i.mode=Ut;break}if((15&h)!==Et){e.msg="unknown compression method",i.mode=Ut;break}if(h>>>=4,c-=4,w=8+(15&h),0===i.wbits&&(i.wbits=w),w>15||w>i.wbits){e.msg="invalid window size",i.mode=Ut;break}i.dmax=1<<i.wbits,i.flags=0,e.adler=i.check=1,i.mode=512&h?16189:It,h=0,c=0;break;case 16181:for(;c<16;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(i.flags=h,(255&i.flags)!==Et){e.msg="unknown compression method",i.mode=Ut;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=Ut;break}i.head&&(i.head.text=h>>8&1),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0,i.mode=16182;case 16182:for(;c<32;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.head&&(i.head.time=h),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,S[2]=h>>>16&255,S[3]=h>>>24&255,i.check=j(i.check,S,4,0)),h=0,c=0,i.mode=16183;case 16183:for(;c<16;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.head&&(i.head.xflags=255&h,i.head.os=h>>8),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0,i.mode=16184;case 16184:if(1024&i.flags){for(;c<16;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.length=h,i.head&&(i.head.extra_len=h),512&i.flags&&4&i.wrap&&(S[0]=255&h,S[1]=h>>>8&255,i.check=j(i.check,S,2,0)),h=0,c=0}else i.head&&(i.head.extra=null);i.mode=16185;case 16185:if(1024&i.flags&&(f=i.length,f>o&&(f=o),f&&(i.head&&(w=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Uint8Array(i.head.extra_len)),i.head.extra.set(r.subarray(s,s+f),w)),512&i.flags&&4&i.wrap&&(i.check=j(i.check,r,f,s)),o-=f,s+=f,i.length-=f),i.length))break e;i.length=0,i.mode=16186;case 16186:if(2048&i.flags){if(0===o)break e;f=0;do{w=r[s+f++],i.head&&w&&i.length<65536&&(i.head.name+=String.fromCharCode(w))}while(w&&f<o);if(512&i.flags&&4&i.wrap&&(i.check=j(i.check,r,f,s)),o-=f,s+=f,w)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=16187;case 16187:if(4096&i.flags){if(0===o)break e;f=0;do{w=r[s+f++],i.head&&w&&i.length<65536&&(i.head.comment+=String.fromCharCode(w))}while(w&&f<o);if(512&i.flags&&4&i.wrap&&(i.check=j(i.check,r,f,s)),o-=f,s+=f,w)break e}else i.head&&(i.head.comment=null);i.mode=16188;case 16188:if(512&i.flags){for(;c<16;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(4&i.wrap&&h!==(65535&i.check)){e.msg="header crc mismatch",i.mode=Ut;break}h=0,c=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=It;break;case 16189:for(;c<32;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}e.adler=i.check=Nt(h),h=0,c=0,i.mode=Ft;case Ft:if(0===i.havedict)return e.next_out=a,e.avail_out=l,e.next_in=s,e.avail_in=o,i.hold=h,i.bits=c,Ct;e.adler=i.check=1,i.mode=It;case It:if(t===bt||t===xt)break e;case Dt:if(i.last){h>>>=7&c,c-=7&c,i.mode=Pt;break}for(;c<3;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}switch(i.last=1&h,h>>>=1,c-=1,3&h){case 0:i.mode=16193;break;case 1:if(Xt(i),i.mode=Rt,t===xt){h>>>=2,c-=2;break e}break;case 2:i.mode=16196;break;case 3:e.msg="invalid block type",i.mode=Ut}h>>>=2,c-=2;break;case 16193:for(h>>>=7&c,c-=7&c;c<32;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if((65535&h)!=(h>>>16^65535)){e.msg="invalid stored block lengths",i.mode=Ut;break}if(i.length=65535&h,h=0,c=0,i.mode=Ot,t===xt)break e;case Ot:i.mode=16195;case 16195:if(f=i.length,f){if(f>o&&(f=o),f>l&&(f=l),0===f)break e;n.set(r.subarray(s,s+f),a),o-=f,s+=f,l-=f,a+=f,i.length-=f;break}i.mode=It;break;case 16196:for(;c<14;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(i.nlen=257+(31&h),h>>>=5,c-=5,i.ndist=1+(31&h),h>>>=5,c-=5,i.ncode=4+(15&h),h>>>=4,c-=4,i.nlen>286||i.ndist>30){e.msg="too many length or distance symbols",i.mode=Ut;break}i.have=0,i.mode=16197;case 16197:for(;i.have<i.ncode;){for(;c<3;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.lens[T[i.have++]]=7&h,h>>>=3,c-=3}for(;i.have<19;)i.lens[T[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,z={bits:i.lenbits},A=_t(0,i.lens,0,19,i.lencode,0,i.work,z),i.lenbits=z.bits,A){e.msg="invalid code lengths set",i.mode=Ut;break}i.have=0,i.mode=16198;case 16198:for(;i.have<i.nlen+i.ndist;){for(;C=i.lencode[h&(1<<i.lenbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(_<16)h>>>=g,c-=g,i.lens[i.have++]=_;else{if(16===_){for(M=g+2;c<M;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(h>>>=g,c-=g,0===i.have){e.msg="invalid bit length repeat",i.mode=Ut;break}w=i.lens[i.have-1],f=3+(3&h),h>>>=2,c-=2}else if(17===_){for(M=g+3;c<M;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}h>>>=g,c-=g,w=0,f=3+(7&h),h>>>=3,c-=3}else{for(M=g+7;c<M;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}h>>>=g,c-=g,w=0,f=11+(127&h),h>>>=7,c-=7}if(i.have+f>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=Ut;break}for(;f--;)i.lens[i.have++]=w}}if(i.mode===Ut)break;if(0===i.lens[256]){e.msg="invalid code -- missing end-of-block",i.mode=Ut;break}if(i.lenbits=9,z={bits:i.lenbits},A=_t(1,i.lens,0,i.nlen,i.lencode,0,i.work,z),i.lenbits=z.bits,A){e.msg="invalid literal/lengths set",i.mode=Ut;break}if(i.distbits=6,i.distcode=i.distdyn,z={bits:i.distbits},A=_t(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,z),i.distbits=z.bits,A){e.msg="invalid distances set",i.mode=Ut;break}if(i.mode=Rt,t===xt)break e;case Rt:i.mode=kt;case kt:if(o>=6&&l>=258){e.next_out=a,e.avail_out=l,e.next_in=s,e.avail_in=o,i.hold=h,i.bits=c,ut(e,u),a=e.next_out,n=e.output,l=e.avail_out,s=e.next_in,r=e.input,o=e.avail_in,h=i.hold,c=i.bits,i.mode===It&&(i.back=-1);break}for(i.back=0;C=i.lencode[h&(1<<i.lenbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(v&&!(240&v)){for(y=g,b=v,x=_;C=i.lencode[x+((h&(1<<y+b)-1)>>y)],g=C>>>24,v=C>>>16&255,_=65535&C,!(y+g<=c);){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}h>>>=y,c-=y,i.back+=y}if(h>>>=g,c-=g,i.back+=g,i.length=_,0===v){i.mode=16205;break}if(32&v){i.back=-1,i.mode=It;break}if(64&v){e.msg="invalid literal/length code",i.mode=Ut;break}i.extra=15&v,i.mode=16201;case 16201:if(i.extra){for(M=i.extra;c<M;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.length+=h&(1<<i.extra)-1,h>>>=i.extra,c-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=16202;case 16202:for(;C=i.distcode[h&(1<<i.distbits)-1],g=C>>>24,v=C>>>16&255,_=65535&C,!(g<=c);){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(!(240&v)){for(y=g,b=v,x=_;C=i.distcode[x+((h&(1<<y+b)-1)>>y)],g=C>>>24,v=C>>>16&255,_=65535&C,!(y+g<=c);){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}h>>>=y,c-=y,i.back+=y}if(h>>>=g,c-=g,i.back+=g,64&v){e.msg="invalid distance code",i.mode=Ut;break}i.offset=_,i.extra=15&v,i.mode=16203;case 16203:if(i.extra){for(M=i.extra;c<M;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}i.offset+=h&(1<<i.extra)-1,h>>>=i.extra,c-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg="invalid distance too far back",i.mode=Ut;break}i.mode=16204;case 16204:if(0===l)break e;if(f=u-l,i.offset>f){if(f=i.offset-f,f>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=Ut;break}f>i.wnext?(f-=i.wnext,p=i.wsize-f):p=i.wnext-f,f>i.length&&(f=i.length),m=i.window}else m=n,p=a-i.offset,f=i.length;f>l&&(f=l),l-=f,i.length-=f;do{n[a++]=m[p++]}while(--f);0===i.length&&(i.mode=kt);break;case 16205:if(0===l)break e;n[a++]=i.length,l--,i.mode=kt;break;case Pt:if(i.wrap){for(;c<32;){if(0===o)break e;o--,h|=r[s++]<<c,c+=8}if(u-=l,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?j(i.check,n,u,a-u):G(i.check,n,u,a-u)),u=l,4&i.wrap&&(i.flags?h:Nt(h))!==i.check){e.msg="incorrect data check",i.mode=Ut;break}h=0,c=0}i.mode=16207;case 16207:if(i.wrap&&i.flags){for(;c<32;){if(0===o)break e;o--,h+=r[s++]<<c,c+=8}if(4&i.wrap&&h!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=Ut;break}h=0,c=0}i.mode=16208;case 16208:A=At;break e;case Ut:A=zt;break e;case 16210:return Mt;default:return St}return e.next_out=a,e.avail_out=l,e.next_in=s,e.avail_in=o,i.hold=h,i.bits=c,(i.wsize||u!==e.avail_out&&i.mode<Ut&&(i.mode<Pt||t!==yt))&&Kt(e,e.output,e.next_out,u-e.avail_out),d-=e.avail_in,u-=e.avail_out,e.total_in+=d,e.total_out+=u,i.total+=u,4&i.wrap&&u&&(e.adler=i.check=i.flags?j(i.check,n,u,e.next_out-u):G(i.check,n,u,e.next_out-u)),e.data_type=i.bits+(i.last?64:0)+(i.mode===It?128:0)+(i.mode===Rt||i.mode===Ot?256:0),(0===d&&0===u||t===yt)&&A===wt&&(A=Tt),A},inflateEnd:e=>{if(Gt(e))return St;let t=e.state;return t.window&&(t.window=null),e.state=null,wt},inflateGetHeader:(e,t)=>{if(Gt(e))return St;const i=e.state;return 2&i.wrap?(i.head=t,t.done=!1,wt):St},inflateSetDictionary:(e,t)=>{const i=t.length;let r,n,s;return Gt(e)?St:(r=e.state,0!==r.wrap&&r.mode!==Ft?St:r.mode===Ft&&(n=1,n=G(n,t,i,0),n!==r.check)?zt:(s=Kt(e,t,i,i),s?(r.mode=16210,Mt):(r.havedict=1,wt)))},inflateInfo:"pako inflate (from Nodeca project)"},$t=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Jt=Object.prototype.toString,{Z_NO_FLUSH:ei,Z_FINISH:ti,Z_OK:ii,Z_STREAM_END:ri,Z_NEED_DICT:ni,Z_STREAM_ERROR:si,Z_DATA_ERROR:ai,Z_MEM_ERROR:oi}=W;function li(e){this.options=He({chunkSize:65536,windowBits:15,to:""},e||{});const 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&&(15&t.windowBits||(t.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Qe,this.strm.avail_out=0;let i=Qt.inflateInit2(this.strm,t.windowBits);if(i!==ii)throw new Error(H[i]);if(this.header=new $t,Qt.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=Ze(t.dictionary):"[object ArrayBuffer]"===Jt.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=Qt.inflateSetDictionary(this.strm,t.dictionary),i!==ii)))throw new Error(H[i])}function hi(e,t){const i=new li(t);if(i.push(e),i.err)throw i.msg||H[i.err];return i.result}li.prototype.push=function(e,t){const i=this.strm,r=this.options.chunkSize,n=this.options.dictionary;let s,a,o;if(this.ended)return!1;for(a=t===~~t?t:!0===t?ti:ei,"[object ArrayBuffer]"===Jt.call(e)?i.input=new Uint8Array(e):i.input=e,i.next_in=0,i.avail_in=i.input.length;;){for(0===i.avail_out&&(i.output=new Uint8Array(r),i.next_out=0,i.avail_out=r),s=Qt.inflate(i,a),s===ni&&n&&(s=Qt.inflateSetDictionary(i,n),s===ii?s=Qt.inflate(i,a):s===ai&&(s=ni));i.avail_in>0&&s===ri&&i.state.wrap>0&&0!==e[i.next_in];)Qt.inflateReset(i),s=Qt.inflate(i,a);switch(s){case si:case ai:case ni:case oi:return this.onEnd(s),this.ended=!0,!1}if(o=i.avail_out,i.next_out&&(0===i.avail_out||s===ri))if("string"===this.options.to){let e=Ke(i.output,i.next_out),t=i.next_out-e,n=Xe(i.output,e);i.next_out=t,i.avail_out=r-t,t&&i.output.set(i.output.subarray(e,e+t),0),this.onData(n)}else this.onData(i.output.length===i.next_out?i.output:i.output.subarray(0,i.next_out));if(s!==ii||0!==o){if(s===ri)return s=Qt.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===i.avail_in)break}}return!0},li.prototype.onData=function(e){this.chunks.push(e)},li.prototype.onEnd=function(e){e===ii&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=We(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ci={Inflate:li,inflate:hi,inflateRaw:function(e,t){return(t=t||{}).raw=!0,hi(e,t)},ungzip:hi,constants:W};const{Deflate:di,deflate:ui,deflateRaw:fi,gzip:pi}=ct,{Inflate:mi,inflate:gi,inflateRaw:vi,ungzip:_i}=ci;var yi=di,bi=ui,xi=fi,wi=pi,Ai=mi,Ci=gi,Si=vi,zi=_i,Mi=W,Ti={Deflate:di,deflate:ui,deflateRaw:fi,gzip:pi,Inflate:mi,inflate:gi,inflateRaw:vi,ungzip:_i,constants:W}},99(e,t,i){i.r(t),i.d(t,{Cylinder:()=>Cylinder,Sphere:()=>Sphere,Triangle:()=>Triangle});var r=i(529);class Sphere{constructor(e={x:0,y:0,z:0},t=0){this.center=new r.Vector3(e.x,e.y,e.z),this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new Sphere).copy(this)}}let n=new r.Vector3;class Cylinder{constructor(e=new r.Vector3,t=new r.Vector3,i=0){this.c1=e,this.c2=t,this.radius=i,this.direction=(new r.Vector3).subVectors(this.c2,this.c1).normalize()}copy(e){return this.c1.copy(e.c1),this.c2.copy(e.c2),this.direction.copy(e.direction),this.radius=e.radius,this}lengthSq(){return n.subVectors(this.c2,this.c1).lengthSq()}applyMatrix4(e){return this.direction.add(this.c1).applyMatrix4(e),this.c1.applyMatrix4(e),this.c2.applyMatrix4(e),this.direction.sub(this.c1).normalize(),this.radius=this.radius*e.getMaxScaleOnAxis(),this}}const s=new r.Vector3;class Triangle{constructor(e=new r.Vector3,t=new r.Vector3,i=new r.Vector3){this.a=e,this.b=t,this.c=i}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}applyMatrix4(e){return this.a.applyMatrix4(e),this.b.applyMatrix4(e),this.c.applyMatrix4(e),this}getNormal(){var e=this.a.clone();return e.sub(this.b),s.subVectors(this.c,this.b),e.cross(s),e.normalize(),e}}},107(e,t,i){var r,n=i(981),s=i(697),a=i(701),o=i(407),l=i(834),h=-2,c=258,d=262,u=103,f=113,p=666;function m(e,t){return e.msg=l[t],t}function g(e){return(e<<1)-(e>4?9:0)}function v(e){for(var t=e.length;--t>=0;)e[t]=0}function _(e){var t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(n.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 y(e,t){s._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,_(e.strm)}function b(e,t){e.pending_buf[e.pending++]=t}function x(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function w(e,t,i,r){var s=e.avail_in;return s>r&&(s=r),0===s?0:(e.avail_in-=s,n.arraySet(t,e.input,e.next_in,s,i),1===e.state.wrap?e.adler=a(e.adler,t,s,i):2===e.state.wrap&&(e.adler=o(e.adler,t,s,i)),e.next_in+=s,e.total_in+=s,s)}function A(e,t){var i,r,n=e.max_chain_length,s=e.strstart,a=e.prev_length,o=e.nice_match,l=e.strstart>e.w_size-d?e.strstart-(e.w_size-d):0,h=e.window,u=e.w_mask,f=e.prev,p=e.strstart+c,m=h[s+a-1],g=h[s+a];e.prev_length>=e.good_match&&(n>>=2),o>e.lookahead&&(o=e.lookahead);do{if(h[(i=t)+a]===g&&h[i+a-1]===m&&h[i]===h[s]&&h[++i]===h[s+1]){s+=2,i++;do{}while(h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&h[++s]===h[++i]&&s<p);if(r=c-(p-s),s=p-c,r>a){if(e.match_start=t,a=r,r>=o)break;m=h[s+a-1],g=h[s+a]}}}while((t=f[t&u])>l&&0!==--n);return a<=e.lookahead?a:e.lookahead}function C(e){var t,i,r,s,a,o=e.w_size;do{if(s=e.window_size-e.lookahead-e.strstart,e.strstart>=o+(o-d)){n.arraySet(e.window,e.window,o,o,0),e.match_start-=o,e.strstart-=o,e.block_start-=o,t=i=e.hash_size;do{r=e.head[--t],e.head[t]=r>=o?r-o:0}while(--i);t=i=o;do{r=e.prev[--t],e.prev[t]=r>=o?r-o:0}while(--i);s+=o}if(0===e.strm.avail_in)break;if(i=w(e.strm,e.window,e.strstart+e.lookahead,s),e.lookahead+=i,e.lookahead+e.insert>=3)for(a=e.strstart-e.insert,e.ins_h=e.window[a],e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+1])&e.hash_mask;e.insert&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[a+3-1])&e.hash_mask,e.prev[a&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=a,a++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<d&&0!==e.strm.avail_in)}function S(e,t){for(var i,r;;){if(e.lookahead<d){if(C(e),e.lookahead<d&&0===t)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==i&&e.strstart-i<=e.w_size-d&&(e.match_length=A(e,i)),e.match_length>=3)if(r=s._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<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!==--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+1])&e.hash_mask;else r=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}function z(e,t){for(var i,r,n;;){if(e.lookahead<d){if(C(e),e.lookahead<d&&0===t)return 1;if(0===e.lookahead)break}if(i=0,e.lookahead>=3&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==i&&e.prev_length<e.max_lazy_match&&e.strstart-i<=e.w_size-d&&(e.match_length=A(e,i),e.match_length<=5&&(1===e.strategy||3===e.match_length&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=s._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<=n&&(e.ins_h=(e.ins_h<<e.hash_shift^e.window[e.strstart+3-1])&e.hash_mask,i=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!==--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(y(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if((r=s._tr_tally(e,0,e.window[e.strstart-1]))&&y(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=s._tr_tally(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}function M(e,t,i,r,n){this.good_length=e,this.max_lazy=t,this.nice_length=i,this.max_chain=r,this.func=n}function T(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=8,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new n.Buf16(1146),this.dyn_dtree=new n.Buf16(122),this.bl_tree=new n.Buf16(78),v(this.dyn_ltree),v(this.dyn_dtree),v(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new n.Buf16(16),this.heap=new n.Buf16(573),v(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new n.Buf16(573),v(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function E(e){var t;return e&&e.state?(e.total_in=e.total_out=0,e.data_type=2,(t=e.state).pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=t.wrap?42:f,e.adler=2===t.wrap?0:1,t.last_flush=0,s._tr_init(t),0):m(e,h)}function L(e){var t,i=E(e);return 0===i&&((t=e.state).window_size=2*t.w_size,v(t.head),t.max_lazy_match=r[t.level].max_lazy,t.good_match=r[t.level].good_length,t.nice_match=r[t.level].nice_length,t.max_chain_length=r[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=2,t.match_available=0,t.ins_h=0),i}function F(e,t,i,r,s,a){if(!e)return h;var o=1;if(-1===t&&(t=6),r<0?(o=0,r=-r):r>15&&(o=2,r-=16),s<1||s>9||8!==i||r<8||r>15||t<0||t>9||a<0||a>4)return m(e,h);8===r&&(r=9);var l=new T;return e.state=l,l.strm=e,l.wrap=o,l.gzhead=null,l.w_bits=r,l.w_size=1<<l.w_bits,l.w_mask=l.w_size-1,l.hash_bits=s+7,l.hash_size=1<<l.hash_bits,l.hash_mask=l.hash_size-1,l.hash_shift=~~((l.hash_bits+3-1)/3),l.window=new n.Buf8(2*l.w_size),l.head=new n.Buf16(l.hash_size),l.prev=new n.Buf16(l.w_size),l.lit_bufsize=1<<s+6,l.pending_buf_size=4*l.lit_bufsize,l.pending_buf=new n.Buf8(l.pending_buf_size),l.d_buf=1*l.lit_bufsize,l.l_buf=3*l.lit_bufsize,l.level=t,l.strategy=a,l.method=i,L(e)}r=[new M(0,0,0,0,function(e,t){var i=65535;for(i>e.pending_buf_size-5&&(i=e.pending_buf_size-5);;){if(e.lookahead<=1){if(C(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var r=e.block_start+i;if((0===e.strstart||e.strstart>=r)&&(e.lookahead=e.strstart-r,e.strstart=r,y(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-d&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(y(e,!1),e.strm.avail_out),1)}),new M(4,4,8,4,S),new M(4,5,16,8,S),new M(4,6,32,32,S),new M(4,4,16,16,z),new M(8,16,32,32,z),new M(8,16,128,128,z),new M(8,32,128,256,z),new M(32,128,258,1024,z),new M(32,258,258,4096,z)],t.deflateInit=function(e,t){return F(e,t,8,15,8,0)},t.deflateInit2=F,t.deflateReset=L,t.deflateResetKeep=E,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?h:(e.state.gzhead=t,0):h},t.deflate=function(e,t){var i,n,a,l;if(!e||!e.state||t>5||t<0)return e?m(e,h):h;if(n=e.state,!e.output||!e.input&&0!==e.avail_in||n.status===p&&4!==t)return m(e,0===e.avail_out?-5:h);if(n.strm=e,i=n.last_flush,n.last_flush=t,42===n.status)if(2===n.wrap)e.adler=0,b(n,31),b(n,139),b(n,8),n.gzhead?(b(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),b(n,255&n.gzhead.time),b(n,n.gzhead.time>>8&255),b(n,n.gzhead.time>>16&255),b(n,n.gzhead.time>>24&255),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(b(n,255&n.gzhead.extra.length),b(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=o(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(b(n,0),b(n,0),b(n,0),b(n,0),b(n,0),b(n,9===n.level?2:n.strategy>=2||n.level<2?4:0),b(n,3),n.status=f);else{var d=8+(n.w_bits-8<<4)<<8;d|=(n.strategy>=2||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(d|=32),d+=31-d%31,n.status=f,x(n,d),0!==n.strstart&&(x(n,e.adler>>>16),x(n,65535&e.adler)),e.adler=1}if(69===n.status)if(n.gzhead.extra){for(a=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending!==n.pending_buf_size));)b(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindex<n.gzhead.name.length?255&n.gzhead.name.charCodeAt(n.gzindex++):0,b(n,l)}while(0!==l);n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),0===l&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),_(e),a=n.pending,n.pending===n.pending_buf_size)){l=1;break}l=n.gzindex<n.gzhead.comment.length?255&n.gzhead.comment.charCodeAt(n.gzindex++):0,b(n,l)}while(0!==l);n.gzhead.hcrc&&n.pending>a&&(e.adler=o(e.adler,n.pending_buf,n.pending-a,a)),0===l&&(n.status=u)}else n.status=u;if(n.status===u&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&_(e),n.pending+2<=n.pending_buf_size&&(b(n,255&e.adler),b(n,e.adler>>8&255),e.adler=0,n.status=f)):n.status=f),0!==n.pending){if(_(e),0===e.avail_out)return n.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(i)&&4!==t)return m(e,-5);if(n.status===p&&0!==e.avail_in)return m(e,-5);if(0!==e.avail_in||0!==n.lookahead||0!==t&&n.status!==p){var w=2===n.strategy?function(e,t){for(var i;;){if(0===e.lookahead&&(C(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(n,t):3===n.strategy?function(e,t){for(var i,r,n,a,o=e.window;;){if(e.lookahead<=c){if(C(e),e.lookahead<=c&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=o[n=e.strstart-1])===o[++n]&&r===o[++n]&&r===o[++n]){a=e.strstart+c;do{}while(r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&r===o[++n]&&n<a);e.match_length=c-(a-n),e.match_length>e.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=s._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=s._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(y(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(y(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(y(e,!1),0===e.strm.avail_out)?1:2}(n,t):r[n.level].func(n,t);if(3!==w&&4!==w||(n.status=p),1===w||3===w)return 0===e.avail_out&&(n.last_flush=-1),0;if(2===w&&(1===t?s._tr_align(n):5!==t&&(s._tr_stored_block(n,0,0,!1),3===t&&(v(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),_(e),0===e.avail_out))return n.last_flush=-1,0}return 4!==t?0:n.wrap<=0?1:(2===n.wrap?(b(n,255&e.adler),b(n,e.adler>>8&255),b(n,e.adler>>16&255),b(n,e.adler>>24&255),b(n,255&e.total_in),b(n,e.total_in>>8&255),b(n,e.total_in>>16&255),b(n,e.total_in>>24&255)):(x(n,e.adler>>>16),x(n,65535&e.adler)),_(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?0:1)},t.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==u&&t!==f&&t!==p?m(e,h):(e.state=null,t===f?m(e,-3):0):h},t.deflateSetDictionary=function(e,t){var i,r,s,o,l,c,d,u,f=t.length;if(!e||!e.state)return h;if(2===(o=(i=e.state).wrap)||1===o&&42!==i.status||i.lookahead)return h;for(1===o&&(e.adler=a(e.adler,t,f,0)),i.wrap=0,f>=i.w_size&&(0===o&&(v(i.head),i.strstart=0,i.block_start=0,i.insert=0),u=new n.Buf8(i.w_size),n.arraySet(u,t,f-i.w_size,i.w_size,0),t=u,f=i.w_size),l=e.avail_in,c=e.next_in,d=e.input,e.avail_in=f,e.next_in=0,e.input=t,C(i);i.lookahead>=3;){r=i.strstart,s=i.lookahead-2;do{i.ins_h=(i.ins_h<<i.hash_shift^i.window[r+3-1])&i.hash_mask,i.prev[r&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=r,r++}while(--s);i.strstart=r,i.lookahead=2,C(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=c,e.input=d,e.avail_in=l,i.wrap=o,0},t.deflateInfo="pako deflate (from Nodeca project)"},111(e,t,i){var r;r={},e.exports=r,function(e,t){e.toRGBA8=function(t){var i=t.width,r=t.height;if(null==t.tabs.acTL)return[e.toRGBA8.decodeImage(t.data,i,r,t).buffer];var n=[];null==t.frames[0].data&&(t.frames[0].data=t.data);for(var s,a=new Uint8Array(i*r*4),o=0;o<t.frames.length;o++){var l=t.frames[o],h=l.rect.x,c=l.rect.y,d=l.rect.width,u=l.rect.height,f=e.toRGBA8.decodeImage(l.data,d,u,t);if(0==o?s=f:0==l.blend?e._copyTile(f,d,u,s,i,r,h,c,0):1==l.blend&&e._copyTile(f,d,u,s,i,r,h,c,1),n.push(s.buffer),s=s.slice(0),0==l.dispose);else if(1==l.dispose)e._copyTile(a,d,u,s,i,r,h,c,0);else if(2==l.dispose){for(var p=o-1;2==t.frames[p].dispose;)p--;s=new Uint8Array(n[p]).slice(0)}}return n},e.toRGBA8.decodeImage=function(t,i,r,n){var s=i*r,a=e.decode._getBPP(n),o=Math.ceil(i*a/8),l=new Uint8Array(4*s),h=new Uint32Array(l.buffer),c=n.ctype,d=n.depth,u=e._bin.readUshort;if(6==c){var f=s<<2;if(8==d)for(var p=0;p<f;p++)l[p]=t[p];if(16==d)for(p=0;p<f;p++)l[p]=t[p<<1]}else if(2==c){var m=n.tabs.tRNS,g=-1,v=-1,_=-1;if(m&&(g=m[0],v=m[1],_=m[2]),8==d)for(p=0;p<s;p++){var y=3*p;l[z=p<<2]=t[y],l[z+1]=t[y+1],l[z+2]=t[y+2],l[z+3]=255,-1!=g&&t[y]==g&&t[y+1]==v&&t[y+2]==_&&(l[z+3]=0)}if(16==d)for(p=0;p<s;p++)y=6*p,l[z=p<<2]=t[y],l[z+1]=t[y+2],l[z+2]=t[y+4],l[z+3]=255,-1!=g&&u(t,y)==g&&u(t,y+2)==v&&u(t,y+4)==_&&(l[z+3]=0)}else if(3==c){var b=n.tabs.PLTE,x=n.tabs.tRNS,w=x?x.length:0;if(1==d)for(var A=0;A<r;A++){var C=A*o,S=A*i;for(p=0;p<i;p++){var z=S+p<<2,M=3*(T=t[C+(p>>3)]>>7-(7&p)&1);l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T<w?x[T]:255}}if(2==d)for(A=0;A<r;A++)for(C=A*o,S=A*i,p=0;p<i;p++)z=S+p<<2,M=3*(T=t[C+(p>>2)]>>6-((3&p)<<1)&3),l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T<w?x[T]:255;if(4==d)for(A=0;A<r;A++)for(C=A*o,S=A*i,p=0;p<i;p++)z=S+p<<2,M=3*(T=t[C+(p>>1)]>>4-((1&p)<<2)&15),l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T<w?x[T]:255;if(8==d)for(p=0;p<s;p++){var T;z=p<<2,M=3*(T=t[p]),l[z]=b[M],l[z+1]=b[M+1],l[z+2]=b[M+2],l[z+3]=T<w?x[T]:255}}else if(4==c){if(8==d)for(p=0;p<s;p++){z=p<<2;var E=t[L=p<<1];l[z]=E,l[z+1]=E,l[z+2]=E,l[z+3]=t[L+1]}if(16==d)for(p=0;p<s;p++){var L;z=p<<2,E=t[L=p<<2],l[z]=E,l[z+1]=E,l[z+2]=E,l[z+3]=t[L+2]}}else if(0==c){if(g=n.tabs.tRNS?n.tabs.tRNS:-1,1==d)for(p=0;p<s;p++){var F=(E=255*(t[p>>3]>>7-(7&p)&1))==255*g?0:255;h[p]=F<<24|E<<16|E<<8|E}if(2==d)for(p=0;p<s;p++)F=(E=85*(t[p>>2]>>6-((3&p)<<1)&3))==85*g?0:255,h[p]=F<<24|E<<16|E<<8|E;if(4==d)for(p=0;p<s;p++)F=(E=17*(t[p>>1]>>4-((1&p)<<2)&15))==17*g?0:255,h[p]=F<<24|E<<16|E<<8|E;if(8==d)for(p=0;p<s;p++)F=(E=t[p])==g?0:255,h[p]=F<<24|E<<16|E<<8|E;if(16==d)for(p=0;p<s;p++)E=t[p<<1],F=u(t,p<<1)==g?0:255,h[p]=F<<24|E<<16|E<<8|E}return l},e.decode=function(t){for(var i,r=new Uint8Array(t),n=8,s=e._bin,a=s.readUshort,o=s.readUint,l={tabs:{},frames:[]},h=new Uint8Array(r.length),c=0,d=0,u=[137,80,78,71,13,10,26,10],f=0;f<8;f++)if(r[f]!=u[f])throw"The input is not a PNG file!";for(;n<r.length;){var p=s.readUint(r,n);n+=4;var m=s.readASCII(r,n,4);if(n+=4,"IHDR"==m)e.decode._IHDR(r,n,l);else if("IDAT"==m){for(f=0;f<p;f++)h[c+f]=r[n+f];c+=p}else if("acTL"==m)l.tabs[m]={num_frames:o(r,n),num_plays:o(r,n+4)},i=new Uint8Array(r.length);else if("fcTL"==m){0!=d&&((C=l.frames[l.frames.length-1]).data=e.decode._decompress(l,i.slice(0,d),C.rect.width,C.rect.height),d=0);var g={x:o(r,n+12),y:o(r,n+16),width:o(r,n+4),height:o(r,n+8)},v=a(r,n+22);v=a(r,n+20)/(0==v?100:v);var _={rect:g,delay:Math.round(1e3*v),dispose:r[n+24],blend:r[n+25]};l.frames.push(_)}else if("fdAT"==m){for(f=0;f<p-4;f++)i[d+f]=r[n+f+4];d+=p-4}else if("pHYs"==m)l.tabs[m]=[s.readUint(r,n),s.readUint(r,n+4),r[n+8]];else if("cHRM"==m)for(l.tabs[m]=[],f=0;f<8;f++)l.tabs[m].push(s.readUint(r,n+4*f));else if("tEXt"==m){null==l.tabs[m]&&(l.tabs[m]={});var y=s.nextZero(r,n),b=s.readASCII(r,n,y-n),x=s.readASCII(r,y+1,n+p-y-1);l.tabs[m][b]=x}else if("iTXt"==m){null==l.tabs[m]&&(l.tabs[m]={}),y=0;var w=n;y=s.nextZero(r,w),b=s.readASCII(r,w,y-w),r[w=y+1],r[w+1],w+=2,y=s.nextZero(r,w),s.readASCII(r,w,y-w),w=y+1,y=s.nextZero(r,w),s.readUTF8(r,w,y-w),w=y+1,x=s.readUTF8(r,w,p-(w-n)),l.tabs[m][b]=x}else if("PLTE"==m)l.tabs[m]=s.readBytes(r,n,p);else if("hIST"==m){var A=l.tabs.PLTE.length/3;for(l.tabs[m]=[],f=0;f<A;f++)l.tabs[m].push(a(r,n+2*f))}else if("tRNS"==m)3==l.ctype?l.tabs[m]=s.readBytes(r,n,p):0==l.ctype?l.tabs[m]=a(r,n):2==l.ctype&&(l.tabs[m]=[a(r,n),a(r,n+2),a(r,n+4)]);else if("gAMA"==m)l.tabs[m]=s.readUint(r,n)/1e5;else if("sRGB"==m)l.tabs[m]=r[n];else if("bKGD"==m)0==l.ctype||4==l.ctype?l.tabs[m]=[a(r,n)]:2==l.ctype||6==l.ctype?l.tabs[m]=[a(r,n),a(r,n+2),a(r,n+4)]:3==l.ctype&&(l.tabs[m]=r[n]);else if("IEND"==m){var C;0!=d&&((C=l.frames[l.frames.length-1]).data=e.decode._decompress(l,i.slice(0,d),C.rect.width,C.rect.height),d=0),l.data=e.decode._decompress(l,h,l.width,l.height);break}n+=p,s.readUint(r,n),n+=4}return delete l.compress,delete l.interlace,delete l.filter,l},e.decode._decompress=function(t,i,r,n){return 0==t.compress&&(i=e.decode._inflate(i)),0==t.interlace?i=e.decode._filterZero(i,t,0,r,n):1==t.interlace&&(i=e.decode._readInterlace(i,t)),i},e.decode._inflate=function(e){return t.inflate(e)},e.decode._readInterlace=function(t,i){for(var r=i.width,n=i.height,s=e.decode._getBPP(i),a=s>>3,o=Math.ceil(r*s/8),l=new Uint8Array(n*o),h=0,c=[0,0,4,0,2,0,1],d=[0,4,0,2,0,1,0],u=[8,8,8,4,4,2,2],f=[8,8,4,4,2,2,1],p=0;p<7;){for(var m=u[p],g=f[p],v=0,_=0,y=c[p];y<n;)y+=m,_++;for(var b=d[p];b<r;)b+=g,v++;var x=Math.ceil(v*s/8);e.decode._filterZero(t,i,h,v,_);for(var w=0,A=c[p];A<n;){for(var C=d[p],S=h+w*x<<3;C<r;){var z;if(1==s&&(z=(z=t[S>>3])>>7-(7&S)&1,l[A*o+(C>>3)]|=z<<7-(3&C)),2==s&&(z=(z=t[S>>3])>>6-(7&S)&3,l[A*o+(C>>2)]|=z<<6-((3&C)<<1)),4==s&&(z=(z=t[S>>3])>>4-(7&S)&15,l[A*o+(C>>1)]|=z<<4-((1&C)<<2)),s>=8)for(var M=A*o+C*a,T=0;T<a;T++)l[M+T]=t[(S>>3)+T];S+=s,C+=g}w++,A+=m}v*_!=0&&(h+=_*(1+x)),p+=1}return l},e.decode._getBPP=function(e){return[1,null,3,1,2,null,4][e.ctype]*e.depth},e.decode._filterZero=function(t,i,r,n,s){var a=e.decode._getBPP(i),o=Math.ceil(n*a/8),l=e.decode._paeth;a=Math.ceil(a/8);for(var h=0;h<s;h++){var c=r+h*o,d=c+h+1,u=t[d-1];if(0==u)for(var f=0;f<o;f++)t[c+f]=t[d+f];else if(1==u){for(f=0;f<a;f++)t[c+f]=t[d+f];for(f=a;f<o;f++)t[c+f]=t[d+f]+t[c+f-a]&255}else if(0==h){for(f=0;f<a;f++)t[c+f]=t[d+f];if(2==u)for(f=a;f<o;f++)t[c+f]=255&t[d+f];if(3==u)for(f=a;f<o;f++)t[c+f]=t[d+f]+(t[c+f-a]>>1)&255;if(4==u)for(f=a;f<o;f++)t[c+f]=t[d+f]+l(t[c+f-a],0,0)&255}else{if(2==u)for(f=0;f<o;f++)t[c+f]=t[d+f]+t[c+f-o]&255;if(3==u){for(f=0;f<a;f++)t[c+f]=t[d+f]+(t[c+f-o]>>1)&255;for(f=a;f<o;f++)t[c+f]=t[d+f]+(t[c+f-o]+t[c+f-a]>>1)&255}if(4==u){for(f=0;f<a;f++)t[c+f]=t[d+f]+l(0,t[c+f-o],0)&255;for(f=a;f<o;f++)t[c+f]=t[d+f]+l(t[c+f-a],t[c+f-o],t[c+f-a-o])&255}}}return t},e.decode._paeth=function(e,t,i){var r=e+t-i,n=Math.abs(r-e),s=Math.abs(r-t),a=Math.abs(r-i);return n<=s&&n<=a?e:s<=a?t:i},e.decode._IHDR=function(t,i,r){var n=e._bin;r.width=n.readUint(t,i),i+=4,r.height=n.readUint(t,i),i+=4,r.depth=t[i],i++,r.ctype=t[i],i++,r.compress=t[i],i++,r.filter=t[i],i++,r.interlace=t[i],i++},e._bin={nextZero:function(e,t){for(;0!=e[t];)t++;return t},readUshort:function(e,t){return e[t]<<8|e[t+1]},writeUshort:function(e,t,i){e[t]=i>>8&255,e[t+1]=255&i},readUint:function(e,t){return 16777216*e[t]+(e[t+1]<<16|e[t+2]<<8|e[t+3])},writeUint:function(e,t,i){e[t]=i>>24&255,e[t+1]=i>>16&255,e[t+2]=i>>8&255,e[t+3]=255&i},readASCII:function(e,t,i){for(var r="",n=0;n<i;n++)r+=String.fromCharCode(e[t+n]);return r},writeASCII:function(e,t,i){for(var r=0;r<i.length;r++)e[t+r]=i.charCodeAt(r)},readBytes:function(e,t,i){for(var r=[],n=0;n<i;n++)r.push(e[t+n]);return r},pad:function(e){return e.length<2?"0"+e:e},readUTF8:function(t,i,r){for(var n,s="",a=0;a<r;a++)s+="%"+e._bin.pad(t[i+a].toString(16));try{n=decodeURIComponent(s)}catch(n){return e._bin.readASCII(t,i,r)}return n}},e._copyTile=function(e,t,i,r,n,s,a,o,l){for(var h=Math.min(t,n),c=Math.min(i,s),d=0,u=0,f=0;f<c;f++)for(var p=0;p<h;p++)if(a>=0&&o>=0?(d=f*t+p<<2,u=(o+f)*n+a+p<<2):(d=(-o+f)*t-a+p<<2,u=f*n+p<<2),0==l)r[u]=e[d],r[u+1]=e[d+1],r[u+2]=e[d+2],r[u+3]=e[d+3];else if(1==l){var m=e[d+3]*(1/255),g=e[d]*m,v=e[d+1]*m,_=e[d+2]*m,y=r[u+3]*(1/255),b=r[u]*y,x=r[u+1]*y,w=r[u+2]*y,A=1-m,C=m+y*A,S=0==C?0:1/C;r[u+3]=255*C,r[u+0]=(g+b*A)*S,r[u+1]=(v+x*A)*S,r[u+2]=(_+w*A)*S}else if(2==l)m=e[d+3],g=e[d],v=e[d+1],_=e[d+2],y=r[u+3],b=r[u],x=r[u+1],w=r[u+2],m==y&&g==b&&v==x&&_==w?(r[u]=0,r[u+1]=0,r[u+2]=0,r[u+3]=0):(r[u]=g,r[u+1]=v,r[u+2]=_,r[u+3]=m);else if(3==l){if(m=e[d+3],g=e[d],v=e[d+1],_=e[d+2],y=r[u+3],b=r[u],x=r[u+1],w=r[u+2],m==y&&g==b&&v==x&&_==w)continue;if(m<220&&y>20)return!1}return!0},e.encode=function(t,i,r,n,s,a){null==n&&(n=0),null==a&&(a=!1);for(var o=new Uint8Array(t[0].byteLength*t.length+100),l=[137,80,78,71,13,10,26,10],h=0;h<8;h++)o[h]=l[h];var c=8,d=e._bin,u=e.crc.crc,f=d.writeUint,p=d.writeUshort,m=d.writeASCII,g=e.encode.compressPNG(t,i,r,n,a);f(o,c,13),m(o,c+=4,"IHDR"),f(o,c+=4,i),f(o,c+=4,r),o[c+=4]=g.depth,o[++c]=g.ctype,o[++c]=0,o[++c]=0,o[++c]=0,f(o,++c,u(o,c-17,17)),f(o,c+=4,1),m(o,c+=4,"sRGB"),o[c+=4]=1,f(o,++c,u(o,c-5,5)),c+=4;var v=t.length>1;if(v&&(f(o,c,8),m(o,c+=4,"acTL"),f(o,c+=4,t.length),f(o,c+=4,0),f(o,c+=4,u(o,c-12,12)),c+=4),3==g.ctype){for(f(o,c,3*(z=g.plte.length)),m(o,c+=4,"PLTE"),c+=4,h=0;h<z;h++){var _=3*h,y=g.plte[h],b=255&y,x=y>>8&255,w=y>>16&255;o[c+_+0]=b,o[c+_+1]=x,o[c+_+2]=w}if(f(o,c+=3*z,u(o,c-3*z-4,3*z+4)),c+=4,g.gotAlpha){for(f(o,c,z),m(o,c+=4,"tRNS"),c+=4,h=0;h<z;h++)o[c+h]=g.plte[h]>>24&255;f(o,c+=z,u(o,c-z-4,z+4)),c+=4}}for(var A=0,C=0;C<g.frames.length;C++){var S=g.frames[C];v&&(f(o,c,26),m(o,c+=4,"fcTL"),f(o,c+=4,A++),f(o,c+=4,S.rect.width),f(o,c+=4,S.rect.height),f(o,c+=4,S.rect.x),f(o,c+=4,S.rect.y),p(o,c+=4,s[C]),p(o,c+=2,1e3),o[c+=2]=S.dispose,o[++c]=S.blend,f(o,++c,u(o,c-30,30)),c+=4);var z,M=S.cimg;f(o,c,(z=M.length)+(0==C?0:4));var T=c+=4;for(m(o,c,0==C?"IDAT":"fdAT"),c+=4,0!=C&&(f(o,c,A++),c+=4),h=0;h<z;h++)o[c+h]=M[h];f(o,c+=z,u(o,T,c-T)),c+=4}return f(o,c,0),m(o,c+=4,"IEND"),f(o,c+=4,u(o,c-4,4)),c+=4,o.buffer.slice(0,c)},e.encode.compressPNG=function(t,i,r,n,s){for(var a=e.encode.compress(t,i,r,n,!1,s),o=0;o<t.length;o++){var l=a.frames[o],h=(l.rect.width,l.rect.height),c=l.bpl,d=l.bpp,u=new Uint8Array(h*c+h);l.cimg=e.encode._filterZero(l.img,h,d,c,u)}return a},e.encode.compress=function(t,i,r,n,s,a){null==a&&(a=!1);for(var o=6,l=8,h=4,c=255,d=0;d<t.length;d++)for(var u=new Uint8Array(t[d]),f=u.length,p=0;p<f;p+=4)c&=u[p+3];var m=255!=c,g={},v=[];if(0!=t.length&&(g[0]=0,v.push(0),0!=n&&n--),0!=n){var _=e.quantize(t,n,s);for(t=_.bufs,p=0;p<_.plte.length;p++)null==g[b=_.plte[p].est.rgba]&&(g[b]=v.length,v.push(b))}else for(d=0;d<t.length;d++){var y=new Uint32Array(t[d]);for(f=y.length,p=0;p<f;p++){var b=y[p];if((p<i||b!=y[p-1]&&b!=y[p-i])&&null==g[b]&&(g[b]=v.length,v.push(b),v.length>=300))break}}var x=!!m&&s,w=v.length;w<=256&&0==a&&(l=w<=2?1:w<=4?2:w<=16?4:8,s&&(l=8),m=!0);var A=[];for(d=0;d<t.length;d++){var C=new Uint8Array(t[d]),S=new Uint32Array(C.buffer),z=0,M=0,T=i,E=r,L=0;if(0!=d&&!x){for(var F=s||1==d||2==A[A.length-2].dispose?1:2,I=0,D=1e9,O=0;O<F;O++){for(var R=new Uint8Array(t[d-1-O]),k=new Uint32Array(t[d-1-O]),P=i,U=r,N=-1,B=-1,G=0;G<r;G++)for(var V=0;V<i;V++)S[p=G*i+V]!=k[p]&&(V<P&&(P=V),V>N&&(N=V),G<U&&(U=G),G>B&&(B=G));var j=-1==N?1:(N-P+1)*(B-U+1);j<D&&(D=j,I=O,-1==N?(z=M=0,T=E=1):(z=P,M=U,T=N-P+1,E=B-U+1))}R=new Uint8Array(t[d-1-I]),1==I&&(A[A.length-1].dispose=2);var H=new Uint8Array(T*E*4);new Uint32Array(H.buffer),e._copyTile(R,i,r,H,T,E,-z,-M,0),e._copyTile(C,i,r,H,T,E,-z,-M,3)?(e._copyTile(C,i,r,H,T,E,-z,-M,2),L=1):(e._copyTile(C,i,r,H,T,E,-z,-M,0),L=0),C=H,S=new Uint32Array(C.buffer)}var W=4*T;if(w<=256&&0==a){for(W=Math.ceil(l*T/8),H=new Uint8Array(W*E),G=0;G<E;G++){p=G*W;var q=G*T;if(8==l)for(V=0;V<T;V++)H[p+V]=g[S[q+V]];else if(4==l)for(V=0;V<T;V++)H[p+(V>>1)]|=g[S[q+V]]<<4-4*(1&V);else if(2==l)for(V=0;V<T;V++)H[p+(V>>2)]|=g[S[q+V]]<<6-2*(3&V);else if(1==l)for(V=0;V<T;V++)H[p+(V>>3)]|=g[S[q+V]]<<7-1*(7&V)}C=H,o=3,h=1}else if(0==m&&1==t.length){H=new Uint8Array(T*E*3);var Y=T*E;for(p=0;p<Y;p++){var Z=3*p,X=4*p;H[Z]=C[X],H[Z+1]=C[X+1],H[Z+2]=C[X+2]}C=H,o=2,h=3,W=3*T}A.push({rect:{x:z,y:M,width:T,height:E},img:C,bpl:W,bpp:h,blend:L,dispose:x?1:0})}return{ctype:o,depth:l,plte:v,gotAlpha:m,frames:A}},e.encode._filterZero=function(i,r,n,s,a){for(var o=[],l=0;l<5;l++)if(!(r*s>5e5)||2!=l&&3!=l&&4!=l){for(var h=0;h<r;h++)e.encode._filterLine(a,i,h,s,n,l);if(o.push(t.deflate(a)),1==n)break}for(var c,d=1e9,u=0;u<o.length;u++)o[u].length<d&&(c=u,d=o[u].length);return o[c]},e.encode._filterLine=function(t,i,r,n,s,a){var o=r*n,l=o+r,h=e.decode._paeth;if(t[l]=a,l++,0==a)for(var c=0;c<n;c++)t[l+c]=i[o+c];else if(1==a){for(c=0;c<s;c++)t[l+c]=i[o+c];for(c=s;c<n;c++)t[l+c]=i[o+c]-i[o+c-s]+256&255}else if(0==r){for(c=0;c<s;c++)t[l+c]=i[o+c];if(2==a)for(c=s;c<n;c++)t[l+c]=i[o+c];if(3==a)for(c=s;c<n;c++)t[l+c]=i[o+c]-(i[o+c-s]>>1)+256&255;if(4==a)for(c=s;c<n;c++)t[l+c]=i[o+c]-h(i[o+c-s],0,0)+256&255}else{if(2==a)for(c=0;c<n;c++)t[l+c]=i[o+c]+256-i[o+c-n]&255;if(3==a){for(c=0;c<s;c++)t[l+c]=i[o+c]+256-(i[o+c-n]>>1)&255;for(c=s;c<n;c++)t[l+c]=i[o+c]+256-(i[o+c-n]+i[o+c-s]>>1)&255}if(4==a){for(c=0;c<s;c++)t[l+c]=i[o+c]+256-h(0,i[o+c-n],0)&255;for(c=s;c<n;c++)t[l+c]=i[o+c]+256-h(i[o+c-s],i[o+c-n],i[o+c-s-n])&255}}},e.crc={table:function(){for(var e=new Uint32Array(256),t=0;t<256;t++){for(var i=t,r=0;r<8;r++)1&i?i=3988292384^i>>>1:i>>>=1;e[t]=i}return e}(),update:function(t,i,r,n){for(var s=0;s<n;s++)t=e.crc.table[255&(t^i[r+s])]^t>>>8;return t},crc:function(t,i,r){return 4294967295^e.crc.update(4294967295,t,i,r)}},e.quantize=function(t,i,r){for(var n=[],s=0,a=0;a<t.length;a++)n.push(e.encode.alphaMul(new Uint8Array(t[a]),r)),s+=t[a].byteLength;var o=new Uint8Array(s),l=new Uint32Array(o.buffer),h=0;for(a=0;a<n.length;a++){for(var c=n[a],d=c.length,u=0;u<d;u++)o[h+u]=c[u];h+=d}var f={i0:0,i1:o.length,bst:null,est:null,tdst:0,left:null,right:null};f.bst=e.quantize.stats(o,f.i0,f.i1),f.est=e.quantize.estats(f.bst);for(var p=[f];p.length<i;){var m=0,g=0;for(a=0;a<p.length;a++)p[a].est.L>m&&(m=p[a].est.L,g=a);if(m<.001)break;var v=p[g],_=e.quantize.splitPixels(o,l,v.i0,v.i1,v.est.e,v.est.eMq255),y={i0:v.i0,i1:_,bst:null,est:null,tdst:0,left:null,right:null};y.bst=e.quantize.stats(o,y.i0,y.i1),y.est=e.quantize.estats(y.bst);var b={i0:_,i1:v.i1,bst:null,est:null,tdst:0,left:null,right:null};for(b.bst={R:[],m:[],N:v.bst.N-y.bst.N},a=0;a<16;a++)b.bst.R[a]=v.bst.R[a]-y.bst.R[a];for(a=0;a<4;a++)b.bst.m[a]=v.bst.m[a]-y.bst.m[a];b.est=e.quantize.estats(b.bst),v.left=y,v.right=b,p[g]=y,p.push(b)}p.sort(function(e,t){return t.bst.N-e.bst.N});for(var x=0;x<n.length;x++){var w=e.quantize.planeDst,A=new Uint8Array(n[x].buffer),C=new Uint32Array(n[x].buffer),S=A.length;for(a=0;a<S;a+=4){for(var z=A[a]*(1/255),M=A[a+1]*(1/255),T=A[a+2]*(1/255),E=A[a+3]*(1/255),L=f;L.left;)L=w(L.est,z,M,T,E)<=0?L.left:L.right;C[a>>2]=L.est.rgba}n[x]=C.buffer}return{bufs:n,plte:p}},e.quantize.getNearest=function(t,i,r,n,s){if(null==t.left)return t.tdst=e.quantize.dist(t.est.q,i,r,n,s),t;var a=e.quantize.planeDst(t.est,i,r,n,s),o=t.left,l=t.right;a>0&&(o=t.right,l=t.left);var h=e.quantize.getNearest(o,i,r,n,s);if(h.tdst<=a*a)return h;var c=e.quantize.getNearest(l,i,r,n,s);return c.tdst<h.tdst?c:h},e.quantize.planeDst=function(e,t,i,r,n){var s=e.e;return s[0]*t+s[1]*i+s[2]*r+s[3]*n-e.eMq},e.quantize.dist=function(e,t,i,r,n){var s=t-e[0],a=i-e[1],o=r-e[2],l=n-e[3];return s*s+a*a+o*o+l*l},e.quantize.splitPixels=function(t,i,r,n,s,a){var o=e.quantize.vecDot;for(n-=4;r<n;){for(;o(t,r,s)<=a;)r+=4;for(;o(t,n,s)>a;)n-=4;if(r>=n)break;var l=i[r>>2];i[r>>2]=i[n>>2],i[n>>2]=l,r+=4,n-=4}for(;o(t,r,s)>a;)r-=4;return r+4},e.quantize.vecDot=function(e,t,i){return e[t]*i[0]+e[t+1]*i[1]+e[t+2]*i[2]+e[t+3]*i[3]},e.quantize.stats=function(e,t,i){for(var r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],n=[0,0,0,0],s=i-t>>2,a=t;a<i;a+=4){var o=e[a]*(1/255),l=e[a+1]*(1/255),h=e[a+2]*(1/255),c=e[a+3]*(1/255);n[0]+=o,n[1]+=l,n[2]+=h,n[3]+=c,r[0]+=o*o,r[1]+=o*l,r[2]+=o*h,r[3]+=o*c,r[5]+=l*l,r[6]+=l*h,r[7]+=l*c,r[10]+=h*h,r[11]+=h*c,r[15]+=c*c}return r[4]=r[1],r[8]=r[2],r[12]=r[3],r[9]=r[6],r[13]=r[7],r[14]=r[11],{R:r,m:n,N:s}},e.quantize.estats=function(t){var i=t.R,r=t.m,n=t.N,s=r[0],a=r[1],o=r[2],l=r[3],h=0==n?0:1/n,c=[i[0]-s*s*h,i[1]-s*a*h,i[2]-s*o*h,i[3]-s*l*h,i[4]-a*s*h,i[5]-a*a*h,i[6]-a*o*h,i[7]-a*l*h,i[8]-o*s*h,i[9]-o*a*h,i[10]-o*o*h,i[11]-o*l*h,i[12]-l*s*h,i[13]-l*a*h,i[14]-l*o*h,i[15]-l*l*h],d=c,u=e.M4,f=[.5,.5,.5,.5],p=0,m=0;if(0!=n)for(var g=0;g<10&&(f=u.multVec(d,f),m=Math.sqrt(u.dot(f,f)),f=u.sml(1/m,f),!(Math.abs(m-p)<1e-9));g++)p=m;var v=[s*h,a*h,o*h,l*h],_=u.dot(u.sml(255,v),f),y=v[3]<.001?0:1/v[3];return{Cov:c,q:v,e:f,L:p,eMq255:_,eMq:u.dot(f,v),rgba:(Math.round(255*v[3])<<24|Math.round(255*v[2]*y)<<16|Math.round(255*v[1]*y)<<8|Math.round(255*v[0]*y))>>>0}},e.M4={multVec:function(e,t){return[e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7]*t[3],e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11]*t[3],e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]*t[3]]},dot:function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},sml:function(e,t){return[e*t[0],e*t[1],e*t[2],e*t[3]]}},e.encode.alphaMul=function(e,t){for(var i=new Uint8Array(e.length),r=e.length>>2,n=0;n<r;n++){var s=n<<2,a=e[s+3];t&&(a=a<128?0:255);var o=a*(1/255);i[s+0]=e[s+0]*o,i[s+1]=e[s+1]*o,i[s+2]=e[s+2]*o,i[s+3]=a}return i}}(r,i(788))},165(e){e.exports=function(e,t){var i,r,n,s,a,o,l,h,c,d,u,f,p,m,g,v,_,y,b,x,w,A,C,S,z;i=e.state,r=e.next_in,S=e.input,n=r+(e.avail_in-5),s=e.next_out,z=e.output,a=s-(t-e.avail_out),o=s+(e.avail_out-257),l=i.dmax,h=i.wsize,c=i.whave,d=i.wnext,u=i.window,f=i.hold,p=i.bits,m=i.lencode,g=i.distcode,v=(1<<i.lenbits)-1,_=(1<<i.distbits)-1;e:do{p<15&&(f+=S[r++]<<p,p+=8,f+=S[r++]<<p,p+=8),y=m[f&v];t:for(;;){if(f>>>=b=y>>>24,p-=b,0==(b=y>>>16&255))z[s++]=65535&y;else{if(!(16&b)){if(64&b){if(32&b){i.mode=12;break e}e.msg="invalid literal/length code",i.mode=30;break e}y=m[(65535&y)+(f&(1<<b)-1)];continue t}for(x=65535&y,(b&=15)&&(p<b&&(f+=S[r++]<<p,p+=8),x+=f&(1<<b)-1,f>>>=b,p-=b),p<15&&(f+=S[r++]<<p,p+=8,f+=S[r++]<<p,p+=8),y=g[f&_];;){if(f>>>=b=y>>>24,p-=b,16&(b=y>>>16&255)){if(w=65535&y,p<(b&=15)&&(f+=S[r++]<<p,(p+=8)<b&&(f+=S[r++]<<p,p+=8)),(w+=f&(1<<b)-1)>l){e.msg="invalid distance too far back",i.mode=30;break e}if(f>>>=b,p-=b,w>(b=s-a)){if((b=w-b)>c&&i.sane){e.msg="invalid distance too far back",i.mode=30;break e}if(A=0,C=u,0===d){if(A+=h-b,b<x){x-=b;do{z[s++]=u[A++]}while(--b);A=s-w,C=z}}else if(d<b){if(A+=h+d-b,(b-=d)<x){x-=b;do{z[s++]=u[A++]}while(--b);if(A=0,d<x){x-=b=d;do{z[s++]=u[A++]}while(--b);A=s-w,C=z}}}else if(A+=d-b,b<x){x-=b;do{z[s++]=u[A++]}while(--b);A=s-w,C=z}for(;x>2;)z[s++]=C[A++],z[s++]=C[A++],z[s++]=C[A++],x-=3;x&&(z[s++]=C[A++],x>1&&(z[s++]=C[A++]))}else{A=s-w;do{z[s++]=z[A++],z[s++]=z[A++],z[s++]=z[A++],x-=3}while(x>2);x&&(z[s++]=z[A++],x>1&&(z[s++]=z[A++]))}break}if(64&b){e.msg="invalid distance code",i.mode=30;break e}y=g[(65535&y)+(f&(1<<b)-1)]}}break}}while(r<n&&s<o);r-=x=p>>3,f&=(1<<(p-=x<<3))-1,e.next_in=r,e.next_out=s,e.avail_in=r<n?n-r+5:5-(r-n),e.avail_out=s<o?o-s+257:257-(s-o),i.hold=f,i.bits=p}},185(){$3Dmol.workerString=function(){self.onmessage=function(e){var t=e.data,i=t.type;if(i<0)self.atomData=t.atoms,self.volume=t.volume,self.ps=new ProteinSurface;else{var r=self.ps;r.initparm(t.expandedExtent,1!=i,self.volume),r.fillvoxels(self.atomData,t.extendedAtoms),r.buildboundary(),4!==i&&2!==i||(r.fastdistancemap(),r.boundingatom(!1),r.fillvoxelswaals(self.atomData,t.extendedAtoms)),r.marchingcube(i);var n=r.getFacesAndVertices(t.atomsToShow);self.postMessage(n)}}}.toString().replace(/(^.*?\{|\}$)/g,""),$3Dmol.workerString+=";\nfunction _classCallCheck() {};",$3Dmol.workerString+=";\n"+$3Dmol.Vector3.toString(),$3Dmol.workerString+=";\n"+$3Dmol.MarchingCubeInitializer.toString()+";\n\n",$3Dmol.workerString+=";\n"+$3Dmol.PointGrid.toString()+";\n",$3Dmol.workerString+=";\nvar ProteinSurface = "+$3Dmol.ProteinSurface.toString()+";\n",$3Dmol.SurfaceWorker=window.URL?window.URL.createObjectURL(new Blob([$3Dmol.workerString],{type:"text/javascript"})):void 0},222(e,t,i){i.r(t),i.d(t,{CC:()=>CC,Color:()=>Color,builtinColorSchemes:()=>h,chains:()=>l,elementColors:()=>a,htmlColors:()=>r,residues:()=>o,ssColors:()=>n});class Color{constructor(e,t,i){return this.r=0,this.g=0,this.b=0,arguments.length>1&&"number"==typeof e?(this.r=e||0,this.g=t||0,this.b=i||0,this):this.set(e||0)}set(e){return e instanceof Color?e.clone():("number"==typeof e?this.setHex(e):"object"==typeof e&&(this.r=(null==e?void 0:e.r)||0,this.g=(null==e?void 0:e.g)||0,this.b=(null==e?void 0:e.b)||0),this)}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this}getHex(){return Math.round(255*this.r)<<16|Math.round(255*this.g)<<8|Math.round(255*this.b)}clone(){return new Color(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}scaled(){var e={};return e.r=Math.round(255*this.r),e.g=Math.round(255*this.g),e.b=Math.round(255*this.b),e.a=1,e}}class CC{static color(e){if(!e)return CC.cache[0];if(e instanceof Color)return e;if("number"==typeof e&&void 0!==CC.cache[e])return CC.cache[e];if(e&&Array.isArray(e))return e.map(CC.color);let t=CC.getHex(e),i=new Color(t);return CC.cache[t]=i,i}static getHex(e){if(Array.isArray(e))return e.map(CC.getHex);if("string"==typeof e){let t=e;if(!isNaN(parseInt(t)))return parseInt(t);if(t=t.trim(),4==t.length&&"#"==t[0]&&(t="#"+t[1]+t[1]+t[2]+t[2]+t[3]+t[3]),7==t.length&&"#"==t[0])return parseInt(t.substring(1),16);let i=CC.rgbRegEx.exec(t);if(i){""!=i[1]&&console.log("WARNING: Opacity value in rgba ignored. Specify separately as opacity attribute.");let e=0;for(let t=2;t<5;t++){e*=256;let r=i[t].endsWith("%")?255*parseFloat(i[t])/100:parseFloat(i[t]);e+=Math.round(r)}return e}let n=r[t.toLowerCase()];return void 0!==n?n:(console.error("color not found",e.toLowerCase(),r),0)}return e}}CC.rgbRegEx=/rgb(a?)\(\s*([^ ,\)\t]+)\s*,\s*([^ ,\)\t]+)\s*,\s*([^ ,\)\t]+)/i,CC.cache={0:new Color(0)};const r={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgrey:11119017,darkgreen:25600,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,grey:8421504,green:32768,greenyellow:11403055,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgrey:13882323,lightgreen:9498256,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074,b:255,g:32768,r:16711680,c:49087,m:12517567,y:12566272,k:0,w:16777215},n={pyMol:{h:16711680,s:16776960,c:65280},Jmol:{h:16711808,s:16762880,c:16777215}},s={H:16777215,He:16761035,HE:16761035,Li:11674146,LI:11674146,B:65280,C:13158600,N:9408511,O:15728640,F:14329120,Na:255,NA:255,Mg:2263842,MG:2263842,Al:8421520,AL:8421520,Si:14329120,SI:14329120,P:16753920,S:16762930,Cl:65280,CL:65280,Ca:8421520,CA:8421520,Ti:8421520,TI:8421520,Cr:8421520,CR:8421520,Mn:8421520,MN:8421520,Fe:16753920,FE:16753920,Ni:10824234,NI:10824234,Cu:10824234,CU:10824234,Zn:10824234,ZN:10824234,Br:10824234,BR:10824234,Ag:8421520,AG:8421520,I:10494192,Ba:16753920,BA:16753920,Au:14329120,AU:14329120},a={defaultColor:16716947,Jmol:{H:16777215,He:14286847,HE:14286847,Li:13402367,LI:13402367,Be:12779264,BE:12779264,B:16758197,C:9474192,N:3166456,O:16715021,F:9494608,Ne:11789301,NE:11789301,Na:11230450,NA:11230450,Mg:9109248,MG:9109248,Al:12560038,AL:12560038,Si:1578e4,SI:1578e4,P:16744448,S:16777008,Cl:2093087,CL:2093087,Ar:8442339,AR:8442339,K:9388244,Ca:4062976,CA:4062976,Sc:15132390,SC:15132390,Ti:12567239,TI:12567239,V:10921643,Cr:9083335,CR:9083335,Mn:10255047,MN:10255047,Fe:14706227,FE:14706227,Co:15765664,CO:15765664,Ni:5296208,NI:5296208,Cu:13140019,CU:13140019,Zn:8224944,ZN:8224944,Ga:12750735,GA:12750735,Ge:6721423,GE:6721423,As:12419299,AS:12419299,Se:16752896,SE:16752896,Br:10889513,BR:10889513,Kr:6076625,KR:6076625,Rb:7351984,RB:7351984,Sr:65280,SR:65280,Y:9764863,Zr:9756896,ZR:9756896,Nb:7586505,NB:7586505,Mo:5551541,MO:5551541,Tc:3907230,TC:3907230,Ru:2396047,RU:2396047,Rh:687500,RH:687500,Pd:27013,PD:27013,Ag:12632256,AG:12632256,Cd:16767375,CD:16767375,In:10909043,IN:10909043,Sn:6717568,SN:6717568,Sb:10380213,SB:10380213,Te:13924864,TE:13924864,I:9699476,Xe:4366e3,XE:4366e3,Cs:5707663,CS:5707663,Ba:51456,BA:51456,La:7394559,LA:7394559,Ce:16777159,CE:16777159,Pr:14286791,PR:14286791,Nd:13107143,ND:13107143,Pm:10747847,PM:10747847,Sm:9437127,SM:9437127,Eu:6422471,EU:6422471,Gd:4587463,GD:4587463,Tb:3211207,TB:3211207,Dy:2097095,DY:2097095,Ho:65436,HO:65436,Er:58997,ER:58997,Tm:54354,TM:54354,Yb:48952,YB:48952,Lu:43812,LU:43812,Hf:5096191,HF:5096191,Ta:5089023,TA:5089023,W:2200790,Re:2522539,RE:2522539,Os:2516630,OS:2516630,Ir:1528967,IR:1528967,Pt:13684960,PT:13684960,Au:16765219,AU:16765219,Hg:12105936,HG:12105936,Tl:10900557,TL:10900557,Pb:5724513,PB:5724513,Bi:10375093,BI:10375093,Po:11230208,PO:11230208,At:7688005,AT:7688005,Rn:4358806,RN:4358806,Fr:4325478,FR:4325478,Ra:32e3,RA:32e3,Ac:7384058,AC:7384058,Th:47871,TH:47871,Pa:41471,PA:41471,U:36863,Np:33023,NP:33023,Pu:27647,PU:27647,Am:5528818,AM:5528818,Cm:7888099,CM:7888099,Bk:9064419,BK:9064419,Cf:10565332,CF:10565332,Es:11739092,ES:11739092,Fm:11739066,FM:11739066,Md:11734438,MD:11734438,No:12389767,NO:12389767,Lr:13041766,LR:13041766,Rf:13369433,RF:13369433,Db:13697103,DB:13697103,Sg:14221381,SG:14221381,Bh:14680120,BH:14680120,Hs:15073326,HS:15073326,Mt:15400998,MT:15400998},rasmol:s,defaultColors:Object.assign({},s),greenCarbon:Object.assign(Object.assign({},s),{C:65280}),cyanCarbon:Object.assign(Object.assign({},s),{C:65535}),magentaCarbon:Object.assign(Object.assign({},s),{C:16711935}),yellowCarbon:Object.assign(Object.assign({},s),{C:16776960}),whiteCarbon:Object.assign(Object.assign({},s),{C:16777215}),orangeCarbon:Object.assign(Object.assign({},s),{C:16753920}),purpleCarbon:Object.assign(Object.assign({},s),{C:8388736}),blueCarbon:Object.assign(Object.assign({},s),{C:255})},o={amino:{ALA:13158600,ARG:1334015,ASN:56540,ASP:15075850,CYS:15132160,GLN:56540,GLU:15075850,GLY:15461355,HIS:8553170,ILE:1016335,LEU:1016335,LYS:1334015,MET:15132160,PHE:3289770,PRO:14456450,SER:16422400,THR:16422400,TRP:11819700,TYR:3289770,VAL:1016335,ASX:16738740,GLX:16738740},shapely:{ALA:9240460,ARG:124,ASN:16743536,ASP:10485826,CYS:16777072,GLN:16731212,GLU:6684672,GLY:16777215,HIS:7368959,ILE:19456,LEU:4546117,LYS:4671416,MET:12099650,PHE:5459026,PRO:5395026,SER:16740418,THR:12078080,TRP:5195264,TYR:9203788,VAL:16747775,ASX:16711935,GLX:16711935},nucleic:{A:10526975,G:16740464,I:8454143,C:16747595,T:10551200,U:16744576}},l={atom:{A:12636415,B:11599792,C:16761032,D:16777088,E:16761087,F:11596016,G:16765040,H:15761536,I:16113331,J:49151,K:13458524,L:6737322,M:10145074,N:15631086,O:52945,P:65407,Q:3978097,R:139,S:12433259,T:25600,U:8388608,V:8421376,W:8388736,X:32896,Y:12092939,Z:11674146},hetatm:{A:9478351,B:8441752,C:13602992,D:13619056,E:13603023,F:8437952,G:13607008,H:12603504,I:12955267,J:42959,K:11881548,L:5682578,M:9090346,N:12481214,O:46753,P:53103,Q:3447649,R:187,S:10854235,T:37888,U:11534336,V:11579392,W:11534512,X:45232,Y:15250963,Z:12726834}},h={ssPyMol:{prop:"ss",map:n.pyMol},ssJmol:{prop:"ss",map:n.Jmol},Jmol:{prop:"elem",map:a.Jmol},amino:{prop:"resn",map:o.amino},shapely:{prop:"resn",map:o.shapely},nucleic:{prop:"resn",map:o.nucleic},chain:{prop:"chain",map:l.atom},rasmol:{prop:"elem",map:a.rasmol},default:{prop:"elem",map:a.defaultColors},greenCarbon:{prop:"elem",map:a.greenCarbon},chainHetatm:{prop:"chain",map:l.hetatm},cyanCarbon:{prop:"elem",map:a.cyanCarbon},magentaCarbon:{prop:"elem",map:a.magentaCarbon},purpleCarbon:{prop:"elem",map:a.purpleCarbon},whiteCarbon:{prop:"elem",map:a.whiteCarbon},orangeCarbon:{prop:"elem",map:a.orangeCarbon},yellowCarbon:{prop:"elem",map:a.yellowCarbon},blueCarbon:{prop:"elem",map:a.blueCarbon}}},307(e){"object"==typeof e.exports&&(e.exports=window.$3Dmol)},358(e,t,i){var r=i(981),n=15,s=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],a=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],l=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(e,t,i,h,c,d,u,f){var p,m,g,v,_,y,b,x,w,A=f.bits,C=0,S=0,z=0,M=0,T=0,E=0,L=0,F=0,I=0,D=0,O=null,R=0,k=new r.Buf16(16),P=new r.Buf16(16),U=null,N=0;for(C=0;C<=n;C++)k[C]=0;for(S=0;S<h;S++)k[t[i+S]]++;for(T=A,M=n;M>=1&&0===k[M];M--);if(T>M&&(T=M),0===M)return c[d++]=20971520,c[d++]=20971520,f.bits=1,0;for(z=1;z<M&&0===k[z];z++);for(T<z&&(T=z),F=1,C=1;C<=n;C++)if(F<<=1,(F-=k[C])<0)return-1;if(F>0&&(0===e||1!==M))return-1;for(P[1]=0,C=1;C<n;C++)P[C+1]=P[C]+k[C];for(S=0;S<h;S++)0!==t[i+S]&&(u[P[t[i+S]]++]=S);if(0===e?(O=U=u,y=19):1===e?(O=s,R-=257,U=a,N-=257,y=256):(O=o,U=l,y=-1),D=0,S=0,C=z,_=d,E=T,L=0,g=-1,v=(I=1<<T)-1,1===e&&I>852||2===e&&I>592)return 1;for(;;){b=C-L,u[S]<y?(x=0,w=u[S]):u[S]>y?(x=U[N+u[S]],w=O[R+u[S]]):(x=96,w=0),p=1<<C-L,z=m=1<<E;do{c[_+(D>>L)+(m-=p)]=b<<24|x<<16|w}while(0!==m);for(p=1<<C-1;D&p;)p>>=1;if(0!==p?(D&=p-1,D+=p):D=0,S++,0===--k[C]){if(C===M)break;C=t[i+u[S]]}if(C>T&&(D&v)!==g){for(0===L&&(L=T),_+=z,F=1<<(E=C-L);E+L<M&&!((F-=k[E+L])<=0);)E++,F<<=1;if(I+=1<<E,1===e&&I>852||2===e&&I>592)return 1;c[g=D&v]=T<<24|E<<16|_-d}}return 0!==D&&(c[_+D]=C-L<<24|64<<16),f.bits=T,0}},392(e,t,i){i.r(t),i.d(t,{assignBonds:()=>a});var r=i(408);const n=[{x:0,y:0,z:1},{x:0,y:1,z:-1},{x:0,y:1,z:0},{x:0,y:1,z:1},{x:1,y:-1,z:-1},{x:1,y:-1,z:0},{x:1,y:-1,z:1},{x:1,y:0,z:-1},{x:1,y:0,z:0},{x:1,y:0,z:1},{x:1,y:1,z:-1},{x:1,y:1,z:0},{x:1,y:1,z:1}],s=4.95;function a(e,t){for(let t=0,i=e.length;t<i;t++)e[t].index||(e[t].index=t);const i={x:{y:{z:[]}}};for(let t=0;t<e.length;t++){const r=e[t],n=Math.floor(r.x/s),a=Math.floor(r.y/s),o=Math.floor(r.z/s);i[n]||(i[n]={}),i[n][a]||(i[n][a]={}),i[n][a][o]||(i[n][a][o]=[]),i[n][a][o].push(r)}function a(e,i){for(let n=0;n<e.length;n++){const s=e[n];for(let e=0;e<i.length;e++){const n=i[e];if((0,r.areConnected)(s,n,t)){const e=s.bonds.indexOf(n.index),t=n.bonds.indexOf(s.index);-1===e&&-1===t?(s.bonds.push(n.index),s.bondOrder.push(1),n.bonds.push(s.index),n.bondOrder.push(1)):-1===e?(s.bonds.push(n.index),s.bondOrder.push(n.bondOrder[t])):-1===t&&(n.bonds.push(s.index),n.bondOrder.push(s.bondOrder[e]))}}}}for(let e in i){const s=parseInt(e);for(let e in i[s]){const o=parseInt(e);for(let e in i[s][o]){const l=parseInt(e),h=i[s][o][l];for(let e=0;e<h.length;e++){const i=h[e];for(let n=e+1;n<h.length;n++){const e=h[n];(0,r.areConnected)(i,e,t)&&-1==i.bonds.indexOf(e.index)&&(i.bonds.push(e.index),i.bondOrder.push(1),e.bonds.push(i.index),e.bondOrder.push(1))}}for(let e=0;e<n.length;e++){const t=n[e];i[s+t.x]&&i[s+t.x][o+t.y]&&i[s+t.x][o+t.y][l+t.z]&&a(h,i[s+t.x][o+t.y][l+t.z])}}}}}},407(e){var t=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();e.exports=function(e,i,r,n){var s=t,a=n+r;e^=-1;for(var o=n;o<a;o++)e=e>>>8^s[255&(e^i[o])];return-1^e}},408(e,t,i){i.r(t),i.d(t,{areConnected:()=>s});var r=i(40);const n=new Set(["Na","K","Ca","Mg","Mn","Sr"]);function s(e,t,i){if(i&&i.unboundCations&&(n.has(e.elem)||n.has(t.elem)))return!1;let s=(0,r.bondLength)(e.elem)+(0,r.bondLength)(t.elem);s+=.25,s*=s;let a=e.x-t.x;if(a*=a,a>s)return!1;let o=e.y-t.y;if(o*=o,o>s)return!1;let l=e.z-t.z;if(l*=l,l>s)return!1;const h=a+o+l;return!(isNaN(h)||h<.5||h>s||e.altLoc!==t.altLoc&&""!==e.altLoc.trim()&&""!==t.altLoc.trim())}},471(e,t){!function(e){function t(e,t,i){for(var r=(e.byteLength,0),n=i.length;n>r;r++){var s=i.charCodeAt(r);if(128>s)e.setUint8(t++,s>>>0&127);else if(2048>s)e.setUint8(t++,s>>>6&31|192),e.setUint8(t++,s>>>0&63|128);else if(65536>s)e.setUint8(t++,s>>>12&15|224),e.setUint8(t++,s>>>6&63|128),e.setUint8(t++,s>>>0&63|128);else{if(!(1114112>s))throw new Error("bad codepoint "+s);e.setUint8(t++,s>>>18&7|240),e.setUint8(t++,s>>>12&63|128),e.setUint8(t++,s>>>6&63|128),e.setUint8(t++,s>>>0&63|128)}}}function i(e){for(var t=0,i=0,r=e.length;r>i;i++){var n=e.charCodeAt(i);if(128>n)t+=1;else if(2048>n)t+=2;else if(65536>n)t+=3;else{if(!(1114112>n))throw new Error("bad codepoint "+n);t+=4}}return t}function r(e,n,s){var a=typeof e;if("string"===a){if(32>(o=i(e)))return n.setUint8(s,160|o),t(n,s+1,e),1+o;if(256>o)return n.setUint8(s,217),n.setUint8(s+1,o),t(n,s+2,e),2+o;if(65536>o)return n.setUint8(s,218),n.setUint16(s+1,o),t(n,s+3,e),3+o;if(4294967296>o)return n.setUint8(s,219),n.setUint32(s+1,o),t(n,s+5,e),5+o}if(e instanceof Uint8Array){var o=e.byteLength,l=new Uint8Array(n.buffer);if(256>o)return n.setUint8(s,196),n.setUint8(s+1,o),l.set(e,s+2),2+o;if(65536>o)return n.setUint8(s,197),n.setUint16(s+1,o),l.set(e,s+3),3+o;if(4294967296>o)return n.setUint8(s,198),n.setUint32(s+1,o),l.set(e,s+5),5+o}if("number"===a){if(!isFinite(e))throw new Error("Number not finite: "+e);if(Math.floor(e)!==e)return n.setUint8(s,203),n.setFloat64(s+1,e),9;if(e>=0){if(128>e)return n.setUint8(s,e),1;if(256>e)return n.setUint8(s,204),n.setUint8(s+1,e),2;if(65536>e)return n.setUint8(s,205),n.setUint16(s+1,e),3;if(4294967296>e)return n.setUint8(s,206),n.setUint32(s+1,e),5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return n.setInt8(s,e),1;if(e>=-128)return n.setUint8(s,208),n.setInt8(s+1,e),2;if(e>=-32768)return n.setUint8(s,209),n.setInt16(s+1,e),3;if(e>=-2147483648)return n.setUint8(s,210),n.setInt32(s+1,e),5;throw new Error("Number too small -0x"+(-e).toString(16).substr(1))}if(null===e)return n.setUint8(s,192),1;if("boolean"===a)return n.setUint8(s,e?195:194),1;if("object"===a){var h=0,c=Array.isArray(e);if(c)o=e.length;else{var d=Object.keys(e);o=d.length}if(16>o?(n.setUint8(s,o|(c?144:128)),h=1):65536>o?(n.setUint8(s,c?220:222),n.setUint16(s+1,o),h=3):4294967296>o&&(n.setUint8(s,c?221:223),n.setUint32(s+1,o),h=5),c)for(var u=0;o>u;u++)h+=r(e[u],n,s+h);else for(u=0;o>u;u++){var f=d[u];h+=r(f,n,s+h),h+=r(e[f],n,s+h)}return h}throw new Error("Unknown type "+a)}function n(e){var t=typeof e;if("string"===t){if(32>(r=i(e)))return 1+r;if(256>r)return 2+r;if(65536>r)return 3+r;if(4294967296>r)return 5+r}if(e instanceof Uint8Array){if(256>(r=e.byteLength))return 2+r;if(65536>r)return 3+r;if(4294967296>r)return 5+r}if("number"===t){if(Math.floor(e)!==e)return 9;if(e>=0){if(128>e)return 1;if(256>e)return 2;if(65536>e)return 3;if(4294967296>e)return 5;throw new Error("Number too big 0x"+e.toString(16))}if(e>=-32)return 1;if(e>=-128)return 2;if(e>=-32768)return 3;if(e>=-2147483648)return 5;throw new Error("Number too small -0x"+e.toString(16).substr(1))}if("boolean"===t||null===e)return 1;if("object"===t){var r,s=0;if(Array.isArray(e)){r=e.length;for(var a=0;r>a;a++)s+=n(e[a])}else{var o=Object.keys(e);for(r=o.length,a=0;r>a;a++){var l=o[a];s+=n(l)+n(e[l])}}if(16>r)return 1+s;if(65536>r)return 3+s;if(4294967296>r)return 5+s;throw new Error("Array or object too long 0x"+r.toString(16))}throw new Error("Unknown type "+t)}function s(e){var t=new ArrayBuffer(n(e));return r(e,new DataView(t),0),new Uint8Array(t)}function a(e,t,i){return t?new e(t.buffer,t.byteOffset,t.byteLength/(i||1)):void 0}function o(e){return a(DataView,e)}function l(e){return a(Uint8Array,e)}function h(e){return a(Int8Array,e)}function c(e){return a(Int32Array,e,4)}function d(e){return a(Float32Array,e,4)}function u(e,t){var i=e.length/2;t||(t=new Int16Array(i));for(var r=0,n=0;i>r;++r,n+=2)t[r]=e[n]<<8^e[n+1];return t}function f(e,t){var i=e.length;t||(t=new Uint8Array(2*i));for(var r=o(t),n=0;i>n;++n)r.setInt16(2*n,e[n]);return l(t)}function p(e,t){var i=e.length/4;t||(t=new Int32Array(i));for(var r=0,n=0;i>r;++r,n+=4)t[r]=e[n]<<24^e[n+1]<<16^e[n+2]<<8^e[n+3];return t}function m(e,t){var i=e.length;t||(t=new Uint8Array(4*i));for(var r=o(t),n=0;i>n;++n)r.setInt32(4*n,e[n]);return l(t)}function g(e,t){var i=e.length;t||(t=new Float32Array(i/4));for(var r=o(t),n=o(e),s=0,a=0,l=i/4;l>s;++s,a+=4)r.setFloat32(a,n.getFloat32(a),!0);return t}function v(e,t,i){var r=e.length,n=1/t;i||(i=new Float32Array(r));for(var s=0;r>s;++s)i[s]=e[s]*n;return i}function _(e,t,i){var r=e.length;i||(i=new Int32Array(r));for(var n=0;r>n;++n)i[n]=Math.round(e[n]*t);return i}function y(e,t){var i,r;if(!t){var n=0;for(i=0,r=e.length;r>i;i+=2)n+=e[i+1];t=new e.constructor(n)}var s=0;for(i=0,r=e.length;r>i;i+=2)for(var a=e[i],o=e[i+1],l=0;o>l;++l)t[s]=a,++s;return t}function b(e){if(0===e.length)return new Int32Array;var t,i,r=2;for(t=1,i=e.length;i>t;++t)e[t-1]!==e[t]&&(r+=2);var n=new Int32Array(r),s=0,a=1;for(t=1,i=e.length;i>t;++t)e[t-1]!==e[t]?(n[s]=e[t-1],n[s+1]=a,a=1,s+=2):++a;return n[s]=e[e.length-1],n[s+1]=a,n}function x(e,t){var i=e.length;t||(t=new e.constructor(i)),i&&(t[0]=e[0]);for(var r=1;i>r;++r)t[r]=e[r]+t[r-1];return t}function w(e,t){var i=e.length;t||(t=new e.constructor(i)),t[0]=e[0];for(var r=1;i>r;++r)t[r]=e[r]-e[r-1];return t}function A(e,t){var i,r,n=e instanceof Int8Array?127:32767,s=-n-1,a=e.length;if(!t){var o=0;for(i=0;a>i;++i)e[i]<n&&e[i]>s&&++o;t=new Int32Array(o)}for(i=0,r=0;a>i;){for(var l=0;e[i]===n||e[i]===s;)l+=e[i],++i;l+=e[i],++i,t[r]=l,++r}return t}function C(e,t){var i,r=t?127:32767,n=-r-1,s=e.length,a=0;for(i=0;s>i;++i)0===(h=e[i])?++a:h>0?(a+=Math.ceil(h/r),h%r===0&&(a+=1)):(a+=Math.ceil(h/n),h%n===0&&(a+=1));var o=t?new Int8Array(a):new Int16Array(a),l=0;for(i=0;s>i;++i){var h;if((h=e[i])>=0)for(;h>=r;)o[l]=r,++l,h-=r;else for(;n>=h;)o[l]=n,++l,h-=n;o[l]=h,++l}return o}function S(e,t){return x(y(e),t)}function z(e){return b(w(e))}function M(e,t,i){return v(y(e,c(i)),t,i)}function T(e,t){return b(_(e,t))}function E(e,t,i){return v(x(e,c(i)),t,i)}function L(e,t,i){return w(_(e,t),i)}function F(e,t,i){return v(A(e,c(i)),t,i)}function I(e,t,i){var r=A(e,c(i));return E(r,t,d(r))}function D(e,t,i){return C(L(e,t),i)}function O(e){var t=o(e),i=t.getInt32(0),r=t.getInt32(4),n=e.subarray(8,12);return[i,e=e.subarray(12),r,n]}function R(e,t,i,r){var n=new ArrayBuffer(12+r.byteLength),s=new Uint8Array(n),a=new DataView(n);return a.setInt32(0,e),a.setInt32(4,t),i&&s.set(i,8),s.set(r,12),s}function k(e){return R(2,e.length,void 0,l(e))}function P(e){return R(4,e.length,void 0,m(e))}function U(e,t){return R(5,e.length/t,m([t]),l(e))}function N(e){return R(6,e.length,void 0,m(b(e)))}function B(e){return R(8,e.length,void 0,m(z(e)))}function G(e,t){return R(9,e.length,m([t]),m(T(e,t)))}function V(e,t){return R(10,e.length,m([t]),f(D(e,t)))}function j(e){var t={};return ee.forEach(function(i){void 0!==e[i]&&(t[i]=e[i])}),e.bondAtomList&&(t.bondAtomList=P(e.bondAtomList)),e.bondOrderList&&(t.bondOrderList=k(e.bondOrderList)),t.xCoordList=V(e.xCoordList,1e3),t.yCoordList=V(e.yCoordList,1e3),t.zCoordList=V(e.zCoordList,1e3),e.bFactorList&&(t.bFactorList=V(e.bFactorList,100)),e.atomIdList&&(t.atomIdList=B(e.atomIdList)),e.altLocList&&(t.altLocList=N(e.altLocList)),e.occupancyList&&(t.occupancyList=G(e.occupancyList,100)),t.groupIdList=B(e.groupIdList),t.groupTypeList=P(e.groupTypeList),e.secStructList&&(t.secStructList=k(e.secStructList)),e.insCodeList&&(t.insCodeList=N(e.insCodeList)),e.sequenceIndexList&&(t.sequenceIndexList=B(e.sequenceIndexList)),t.chainIdList=U(e.chainIdList,4),e.chainNameList&&(t.chainNameList=U(e.chainNameList,4)),t}function H(e){function t(e){for(var t={},i=0;e>i;i++)t[s()]=s();return t}function i(t){var i=e.subarray(a,a+t);return a+=t,i}function r(t){var i=e.subarray(a,a+t);a+=t;var r=65535;if(t>r){for(var n=[],s=0;s<i.length;s+=r)n.push(String.fromCharCode.apply(null,i.subarray(s,s+r)));return n.join("")}return String.fromCharCode.apply(null,i)}function n(e){for(var t=new Array(e),i=0;e>i;i++)t[i]=s();return t}function s(){var s,l,h=e[a];if(!(128&h))return a++,h;if(128==(240&h))return a++,t(l=15&h);if(144==(240&h))return a++,n(l=15&h);if(160==(224&h))return a++,r(l=31&h);if(!(224&~h))return s=o.getInt8(a),a++,s;switch(h){case 192:return a++,null;case 194:return a++,!1;case 195:return a++,!0;case 196:return l=o.getUint8(a+1),a+=2,i(l);case 197:return l=o.getUint16(a+1),a+=3,i(l);case 198:return l=o.getUint32(a+1),a+=5,i(l);case 202:return s=o.getFloat32(a+1),a+=5,s;case 203:return s=o.getFloat64(a+1),a+=9,s;case 204:return s=e[a+1],a+=2,s;case 205:return s=o.getUint16(a+1),a+=3,s;case 206:return s=o.getUint32(a+1),a+=5,s;case 208:return s=o.getInt8(a+1),a+=2,s;case 209:return s=o.getInt16(a+1),a+=3,s;case 210:return s=o.getInt32(a+1),a+=5,s;case 217:return l=o.getUint8(a+1),a+=2,r(l);case 218:return l=o.getUint16(a+1),a+=3,r(l);case 219:return l=o.getUint32(a+1),a+=5,r(l);case 220:return l=o.getUint16(a+1),a+=3,n(l);case 221:return l=o.getUint32(a+1),a+=5,n(l);case 222:return l=o.getUint16(a+1),a+=3,t(l);case 223:return l=o.getUint32(a+1),a+=5,t(l)}throw new Error("Unknown type 0x"+h.toString(16))}var a=0,o=new DataView(e.buffer);return s()}function W(e,t,i,r){switch(e){case 1:return g(t);case 2:return h(t);case 3:return u(t);case 4:return p(t);case 5:return l(t);case 6:return y(p(t),new Uint8Array(i));case 7:return y(p(t));case 8:return S(p(t));case 9:return M(p(t),p(r)[0]);case 10:return I(u(t),p(r)[0]);case 11:return v(u(t),p(r)[0]);case 12:return F(u(t),p(r)[0]);case 13:return F(h(t),p(r)[0]);case 14:return A(u(t));case 15:return A(h(t))}}function q(e,t){var i=(t=t||{}).ignoreFields,r={};return ie.forEach(function(t){var n=!!i&&-1!==i.indexOf(t),s=e[t];n||void 0===s||(s instanceof Uint8Array?r[t]=W.apply(null,O(s)):r[t]=s)}),r}function Y(e){return String.fromCharCode.apply(null,e).replace(/\0/g,"")}function Z(e,t,i){var r,n,s,a,o,l,h=(i=i||{}).firstModelOnly,c=t.onModel,d=t.onChain,u=t.onGroup,f=t.onAtom,p=t.onBond,m=0,g=0,v=0,_=0,y=0,b=-1,x=e.chainNameList,w=e.secStructList,A=e.insCodeList,C=e.sequenceIndexList,S=e.atomIdList,z=e.bFactorList,M=e.altLocList,T=e.occupancyList,E=e.bondAtomList,L=e.bondOrderList;for(r=0,n=e.chainsPerModel.length;n>r&&!(h&&m>0);++r){var F=e.chainsPerModel[m];for(c&&c({chainCount:F,modelIndex:m}),s=0;F>s;++s){var I=e.groupsPerChain[g];if(d){var D=Y(e.chainIdList.subarray(4*g,4*g+4)),O=null;x&&(O=Y(x.subarray(4*g,4*g+4))),d({groupCount:I,chainIndex:g,modelIndex:m,chainId:D,chainName:O})}for(a=0;I>a;++a){var R=e.groupList[e.groupTypeList[v]],k=R.atomNameList.length;if(u){var P=null;w&&(P=w[v]);var U=null;e.insCodeList&&(U=String.fromCharCode(A[v]));var N=null;C&&(N=C[v]),u({atomCount:k,groupIndex:v,chainIndex:g,modelIndex:m,groupId:e.groupIdList[v],groupType:e.groupTypeList[v],groupName:R.groupName,singleLetterCode:R.singleLetterCode,chemCompType:R.chemCompType,secStruct:P,insCode:U,sequenceIndex:N})}for(o=0;k>o;++o){if(f){var B=null;S&&(B=S[_]);var G=null;z&&(G=z[_]);var V=null;M&&(V=String.fromCharCode(M[_]));var j=null;T&&(j=T[_]),f({atomIndex:_,groupIndex:v,chainIndex:g,modelIndex:m,atomId:B,element:R.elementList[o],atomName:R.atomNameList[o],formalCharge:R.formalChargeList[o],xCoord:e.xCoordList[_],yCoord:e.yCoordList[_],zCoord:e.zCoordList[_],bFactor:G,altLoc:V,occupancy:j})}_+=1}if(p){var H=R.bondAtomList;for(o=0,l=R.bondOrderList.length;l>o;++o)p({atomIndex1:_-k+H[2*o],atomIndex2:_-k+H[2*o+1],bondOrder:R.bondOrderList[o]})}v+=1}g+=1}if(y=b+1,b=_-1,p&&E)for(o=0,l=E.length;l>o;o+=2){var W=E[o],q=E[o+1];(W>=y&&b>=W||q>=y&&b>=q)&&p({atomIndex1:W,atomIndex2:q,bondOrder:L?L[o/2]:null})}m+=1}}function X(e){return s(j(e))}function K(e,t){return e instanceof ArrayBuffer&&(e=new Uint8Array(e)),q(e instanceof Uint8Array?H(e):e,t)}function Q(e,t,i,r){function n(){try{var e=K(s.response);i(e)}catch(e){r(e)}}var s=new XMLHttpRequest;s.addEventListener("load",n,!0),s.addEventListener("error",r,!0),s.responseType="arraybuffer",s.open("GET",t+e.toUpperCase()),s.send()}function $(e,t,i){Q(e,se,t,i)}function J(e,t,i){Q(e,ae,t,i)}var ee=["mmtfVersion","mmtfProducer","unitCell","spaceGroup","structureId","title","depositionDate","releaseDate","experimentalMethods","resolution","rFree","rWork","bioAssemblyList","ncsOperatorList","entityList","groupList","numBonds","numAtoms","numGroups","numChains","numModels","groupsPerChain","chainsPerModel"],te=["xCoordList","yCoordList","zCoordList","groupIdList","groupTypeList","chainIdList","bFactorList","atomIdList","altLocList","occupancyList","secStructList","insCodeList","sequenceIndexList","chainNameList","bondAtomList","bondOrderList"],ie=ee.concat(te),re="v1.0.1",ne="//mmtf.rcsb.org/v1.0/",se=ne+"full/",ae=ne+"reduced/";e.encode=X,e.decode=K,e.traverse=Z,e.fetch=$,e.fetchReduced=J,e.version=re,e.fetchUrl=se,e.fetchReducedUrl=ae,e.encodeMsgpack=s,e.encodeMmtf=j,e.decodeMsgpack=H,e.decodeMmtf=q}(t)},529(e,t,i){i.r(t),i.d(t,{Matrix3:()=>Matrix3,Matrix4:()=>Matrix4,Quaternion:()=>Quaternion,Ray:()=>Ray,Vector2:()=>Vector2,Vector3:()=>Vector3,clamp:()=>r,conversionMatrix3:()=>d,degToRad:()=>s});class Quaternion{constructor(e,t,i,r){this.x=e||0,this.y=t||0,this.z=i||0,this.w=void 0!==r?r:1}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}conjugate(){return this.x*=-1,this.y*=-1,this.z*=-1,this}inverse(){return this.conjugate().normalize()}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}lengthxyz(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}normalize(){let e=this.length();return 0===e?(this.x=0,this.y=0,this.z=0,this.w=1):(e=1/e,this.x*=e,this.y*=e,this.z*=e,this.w*=e),this}multiply(e){return this.multiplyQuaternions(this,e)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}multiplyQuaternions(e,t){const i=e.x,r=e.y,n=e.z,s=e.w,a=t.x,o=t.y,l=t.z,h=t.w;return this.x=i*h+s*a+r*l-n*o,this.y=r*h+s*o+n*a-i*l,this.z=n*h+s*l+i*o-r*a,this.w=s*h-i*a-r*o-n*l,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}clone(){return new Quaternion(this.x,this.y,this.z,this.w)}setFromEuler(e){const t=Math.cos(e.x/2),i=Math.cos(e.y/2),r=Math.cos(e.z/2),n=Math.sin(e.x/2),s=Math.sin(e.y/2),a=Math.sin(e.z/2);return this.x=n*i*r+t*s*a,this.y=t*s*r-n*i*a,this.z=t*i*a+n*s*r,this.w=t*i*r-n*s*a,this}}class Vector2{constructor(e,t){this.x=e||0,this.y=t||0}set(e,t){return this.x=e,this.y=t,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}copy(e){return this.x=e.x,this.y=e.y,this}clone(){return new Vector2(this.x,this.y)}}function r(e,t,i){return Math.min(Math.max(e,t),i)}const n=Math.PI/180;function s(e){return e*n}var a,o,l,h,c;class Matrix4{constructor(e=1,t=0,i=0,r=0,n=0,s=1,a=0,o=0,l=0,h=0,c=1,d=0,u=0,f=0,p=0,m=1){void 0!==e&&"number"!=typeof e?this.elements=new Float32Array(e):(this.elements=new Float32Array(16),this.elements[0]=e,this.elements[4]=t,this.elements[8]=i,this.elements[12]=r,this.elements[1]=n,this.elements[5]=s,this.elements[9]=a,this.elements[13]=o,this.elements[2]=l,this.elements[6]=h,this.elements[10]=c,this.elements[14]=d,this.elements[3]=u,this.elements[7]=f,this.elements[11]=p,this.elements[15]=m)}makeScale(e,t,i){throw new Error("Method not implemented.")}set(e,t,i,r,n,s,a,o,l,h,c,d,u,f,p,m){const g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=r,g[1]=n,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=h,g[10]=c,g[14]=d,g[3]=u,g[7]=f,g[11]=p,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}copy(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15]),this}matrix3FromTopLeft(){const e=this.elements;return new Matrix3(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10])}setRotationFromEuler(e,t){const i=this.elements,{x:r,y:n,z:s}=e,a=Math.cos(r),o=Math.sin(r),l=Math.cos(n),h=Math.sin(n),c=Math.cos(s),d=Math.sin(s);if(void 0===t||"XYZ"===t){const e=a*c,t=a*d,r=o*c,n=o*d;i[0]=l*c,i[4]=-l*d,i[8]=h,i[1]=t+r*h,i[5]=e-n*h,i[9]=-o*l,i[2]=n-e*h,i[6]=r+t*h,i[10]=a*l}else console.error(`Error with matrix4 setRotationFromEuler. Order: ${t}`);return this}setRotationFromQuaternion(e){const t=this.elements,{x:i,y:r,z:n,w:s}=e,a=i+i,o=r+r,l=n+n,h=i*a,c=i*o,d=i*l,u=r*o,f=r*l,p=n*l,m=s*a,g=s*o,v=s*l;return t[0]=1-(u+p),t[4]=c-v,t[8]=d+g,t[1]=c+v,t[5]=1-(h+p),t[9]=f-m,t[2]=d-g,t[6]=f+m,t[10]=1-(h+u),this}multiplyMatrices(e,t){const i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],h=i[1],c=i[5],d=i[9],u=i[13],f=i[2],p=i[6],m=i[10],g=i[14],v=i[3],_=i[7],y=i[11],b=i[15],x=r[0],w=r[4],A=r[8],C=r[12],S=r[1],z=r[5],M=r[9],T=r[13],E=r[2],L=r[6],F=r[10],I=r[14],D=r[3],O=r[7],R=r[11],k=r[15];return n[0]=s*x+a*S+o*E+l*D,n[4]=s*w+a*z+o*L+l*O,n[8]=s*A+a*M+o*F+l*R,n[12]=s*C+a*T+o*I+l*k,n[1]=h*x+c*S+d*E+u*D,n[5]=h*w+c*z+d*L+u*O,n[9]=h*A+c*M+d*F+u*R,n[13]=h*C+c*T+d*I+u*k,n[2]=f*x+p*S+m*E+g*D,n[6]=f*w+p*z+m*L+g*O,n[10]=f*A+p*M+m*F+g*R,n[14]=f*C+p*T+m*I+g*k,n[3]=v*x+_*S+y*E+b*D,n[7]=v*w+_*z+y*L+b*O,n[11]=v*A+_*M+y*F+b*R,n[15]=v*C+_*T+y*I+b*k,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}snap(e){e||(e=4);const t=Math.pow(10,4),i=this.elements;for(let e=0;e<16;e++){const r=Math.round(i[e]);r===Math.round(i[e]*t)/t&&(i[e]=r)}return this}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e){const t=this.elements;return t[12]=e.x,t[13]=e.y,t[14]=e.z,this}translate(e){const t=this.elements;return t[12]+=e.x,t[13]+=e.y,t[14]+=e.z,this}getInverse(e,t){const i=this.elements,r=e.elements,n=r[0],s=r[4],a=r[8],o=r[12],l=r[1],h=r[5],c=r[9],d=r[13],u=r[2],f=r[6],p=r[10],m=r[14],g=r[3],v=r[7],_=r[11],y=r[15];i[0]=c*m*v-d*p*v+d*f*_-h*m*_-c*f*y+h*p*y,i[4]=o*p*v-a*m*v-o*f*_+s*m*_+a*f*y-s*p*y,i[8]=a*d*v-o*c*v+o*h*_-s*d*_-a*h*y+s*c*y,i[12]=o*c*f-a*d*f-o*h*p+s*d*p+a*h*m-s*c*m,i[1]=d*p*g-c*m*g-d*u*_+l*m*_+c*u*y-l*p*y,i[5]=a*m*g-o*p*g+o*u*_-n*m*_-a*u*y+n*p*y,i[9]=o*c*g-a*d*g-o*l*_+n*d*_+a*l*y-n*c*y,i[13]=a*d*u-o*c*u+o*l*p-n*d*p-a*l*m+n*c*m,i[2]=h*m*g-d*f*g+d*u*v-l*m*v-h*u*y+l*f*y,i[6]=o*f*g-s*m*g-o*u*v+n*m*v+s*u*y-n*f*y,i[10]=s*d*g-o*h*g+o*l*v-n*d*v-s*l*y+n*h*y,i[14]=o*h*u-s*d*u-o*l*f+n*d*f+s*l*m-n*h*m,i[3]=c*f*g-h*p*g-c*u*v+l*p*v+h*u*_-l*f*_,i[7]=s*p*g-a*f*g+a*u*v-n*p*v-s*u*_+n*f*_,i[11]=a*h*g-s*c*g-a*l*v+n*c*v+s*l*_-n*h*_,i[15]=s*c*u-a*h*u+a*l*f-n*c*f-s*l*p+n*h*p;const b=n*i[0]+l*i[4]+u*i[8]+g*i[12];if(0===b){const e="Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);return console.warn(e),this.identity(),this}return this.multiplyScalar(1/b),this}isReflected(){const e=this.elements,t=e[0],i=e[4],r=e[8],n=e[1],s=e[5],a=e[9],o=e[2],l=e[6],h=e[10];return t*s*h+n*l*r+o*i*a-o*s*r-n*i*h-t*l*a<0}scale(e){const t=this.elements,{x:i}=e,{y:r}=e,{z:n}=e;return t[0]*=i,t[4]*=r,t[8]*=n,t[1]*=i,t[5]*=r,t[9]*=n,t[2]*=i,t[6]*=r,t[10]*=n,t[3]*=i,t[7]*=r,t[11]*=n,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,Math.max(i,r)))}makeFrustum(e,t,i,r,n,s){const a=this.elements,o=2*n/(t-e),l=2*n/(r-i),h=(t+e)/(t-e),c=(r+i)/(r-i),d=-(s+n)/(s-n),u=-2*s*n/(s-n);return a[0]=o,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=c,a[13]=0,a[2]=0,a[6]=0,a[10]=d,a[14]=u,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makePerspective(e,t,i,r){const n=i*Math.tan(s(.5*e)),a=-n,o=a*t,l=n*t;return this.makeFrustum(o,l,a,n,i,r)}makeOrthographic(e,t,i,r,n,s){const a=this.elements,o=1/(t-e),l=1/(i-r),h=1/(s-n),c=(t+e)*o,d=(i+r)*l,u=(s+n)*h;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-c,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-d,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-u,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}isEqual(e){const t=e.elements,i=this.elements;return i[0]===t[0]&&i[4]===t[4]&&i[8]===t[8]&&i[12]===t[12]&&i[1]===t[1]&&i[5]===t[5]&&i[9]===t[9]&&i[13]===t[13]&&i[2]===t[2]&&i[6]===t[6]&&i[10]===t[10]&&i[14]===t[14]&&i[3]===t[3]&&i[7]===t[7]&&i[11]===t[11]&&i[15]===t[15]}clone(){const e=this.elements;return new Matrix4(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])}isIdentity(){const e=this.elements;return 1===e[0]&&0===e[4]&&0===e[8]&&0===e[12]&&0===e[1]&&1===e[5]&&0===e[9]&&0===e[13]&&0===e[2]&&0===e[6]&&1===e[10]&&0===e[14]&&0===e[3]&&0===e[7]&&0===e[11]&&1===e[15]}isNearlyIdentity(e){return this.clone().snap(e).isIdentity()}getScale(e){const t=this.elements;return e=e||new Vector3,l.set(t[0],t[1],t[2]),h.set(t[4],t[5],t[6]),c.set(t[8],t[9],t[10]),e.x=l.length(),e.y=h.length(),e.z=c.length(),e}lookAt(e,t,i){const r=this.elements;return c.subVectors(e,t).normalize(),0===c.length()&&(c.z=1),l.crossVectors(i,c).normalize(),0===l.length()&&(c.x+=1e-4,l.crossVectors(i,c).normalize()),h.crossVectors(c,l),r[0]=l.x,r[4]=h.x,r[8]=c.x,r[1]=l.y,r[5]=h.y,r[9]=c.y,r[2]=l.z,r[6]=h.z,r[10]=c.z,this}compose(e,t,i){const r=this.elements;return a.identity(),a.setRotationFromQuaternion(t),o.makeScale(i.x,i.y,i.z),this.multiplyMatrices(a,o),r[12]=e.x,r[13]=e.y,r[14]=e.z,this}}a=new Matrix4,o=new Matrix4;class Vector3{constructor(e,t,i){this.x=e||0,this.y=t||0,this.z=i||0,this.atomid=void 0}set(e,t,i){return this.x=e,this.y=t,this.z=i,this}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}divideScalar(e){return 0!==e?(this.x/=e,this.y/=e,this.z/=e):(this.x=0,this.y=0,this.z=0),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}applyMatrix3(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6]*r,this.y=n[1]*t+n[4]*i+n[7]*r,this.z=n[2]*t+n[5]*i+n[8]*r,this}applyMatrix4(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r+n[12],this.y=n[1]*t+n[5]*i+n[9]*r+n[13],this.z=n[2]*t+n[6]*i+n[10]*r+n[14],this}applyProjection(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements,s=n[3]*t+n[7]*i+n[11]*r+n[15];return this.x=(n[0]*t+n[4]*i+n[8]*r+n[12])/s,this.y=(n[1]*t+n[5]*i+n[9]*r+n[13])/s,this.z=(n[2]*t+n[6]*i+n[10]*r+n[14])/s,this}applyQuaternion(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.x,s=e.y,a=e.z,o=e.w,l={};l.x=2*(i*a-r*s),l.y=2*(r*n-t*a),l.z=2*(t*s-i*n);const h={};return h.x=l.y*a-l.z*s,h.y=l.z*n-l.x*a,h.z=l.x*s-l.y*n,this.x=t+o*l.x+h.x,this.y=i+o*l.y+h.y,this.z=r+o*l.z+h.z,this}negate(){return this.multiplyScalar(-1)}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}normalize(){return this.divideScalar(this.length())}cross(e){const{x:t}=this,{y:i}=this,{z:r}=this;return this.x=i*e.z-r*e.y,this.y=r*e.x-t*e.z,this.z=t*e.y-i*e.x,this}crossVectors(e,t){return this.x=e.y*t.z-e.z*t.y,this.y=e.z*t.x-e.x*t.z,this.z=e.x*t.y-e.y*t.x,this}equals(e){return this.x==e.x&&this.y==e.y&&this.z==e.z}getPositionFromMatrix(e){return this.x=e.elements[12],this.y=e.elements[13],this.z=e.elements[14],this}setEulerFromRotationMatrix(e,t){const i=e.elements,n=i[0],s=i[4],a=i[8],o=i[5],l=i[9],h=i[6],c=i[10];return void 0===t||"XYZ"===t?(this.y=Math.asin(r(a,-1,1)),Math.abs(a)<.99999?(this.x=Math.atan2(-l,c),this.z=Math.atan2(-s,n)):(this.x=Math.atan2(h,o),this.z=0)):console.error(`Error with vector's setEulerFromRotationMatrix: Unknown order: ${t}`),this}rotateAboutVector(e,t){e.normalize();const i=Math.cos(t),r=Math.sin(t),n=this.clone().multiplyScalar(i),s=e.clone().cross(this).multiplyScalar(r),a=e.clone().multiplyScalar(e.clone().dot(this)).multiplyScalar(1-i),o=n.add(s).add(a);return this.x=o.x,this.y=o.y,this.z=o.z,this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}transformDirection(e){const{x:t}=this,{y:i}=this,{z:r}=this,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r,this.y=n[1]*t+n[5]*i+n[9]*r,this.z=n[2]*t+n[6]*i+n[10]*r,this.normalize()}clone(){return new Vector3(this.x,this.y,this.z)}unproject(e){const t=a;return t.multiplyMatrices(e.matrixWorld,t.getInverse(e.projectionMatrix)),this.applyMatrix4(t)}}l=new Vector3,h=new Vector3,c=new Vector3;class Matrix3{constructor(e=1,t=0,i=0,r=0,n=1,s=0,a=0,o=0,l=1){this.elements=new Float32Array(9),this.set(e,t,i,r,n,s,a,o,l)}set(e,t,i,r,n,s,a,o,l){const h=this.elements;return h[0]=e,h[3]=t,h[6]=i,h[1]=r,h[4]=n,h[7]=s,h[2]=a,h[5]=o,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=e.elements;this.set(t[0],t[3],t[6],t[1],t[4],t[7],t[2],t[5],t[8])}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}getInverse3(e){const t=e.elements,i=this.elements;i[0]=t[4]*t[8]-t[5]*t[7],i[3]=t[6]*t[5]-t[3]*t[8],i[6]=t[3]*t[7]-t[6]*t[4],i[1]=t[7]*t[2]-t[1]*t[8],i[4]=t[0]*t[8]-t[6]*t[2],i[7]=t[1]*t[6]-t[0]*t[7],i[2]=t[1]*t[5]-t[2]*t[4],i[5]=t[2]*t[3]-t[0]*t[5],i[8]=t[0]*t[4]-t[1]*t[3];const r=t[0]*i[0]+t[3]*i[1]+t[6]*i[2];return this.multiplyScalar(1/r),this}getInverse(e,t){const i=e.elements,r=this.elements;r[0]=i[10]*i[5]-i[6]*i[9],r[1]=-i[10]*i[1]+i[2]*i[9],r[2]=i[6]*i[1]-i[2]*i[5],r[3]=-i[10]*i[4]+i[6]*i[8],r[4]=i[10]*i[0]-i[2]*i[8],r[5]=-i[6]*i[0]+i[2]*i[4],r[6]=i[9]*i[4]-i[5]*i[8],r[7]=-i[9]*i[0]+i[1]*i[8],r[8]=i[5]*i[0]-i[1]*i[4];const n=i[0]*r[0]+i[1]*r[3]+i[2]*r[6];if(0===n){const e="Matrix3.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(e);return console.warn(e),this.identity(),this}return this.multiplyScalar(1/n),this}getDeterminant(){const e=this.elements;return e[0]*e[4]*e[8]+e[1]*e[5]*e[6]+e[2]*e[3]*e[7]-e[2]*e[4]*e[6]-e[1]*e[3]*e[8]-e[0]*e[5]*e[7]}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}clone(){const e=this.elements;return new Matrix3(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])}getMatrix4(){const e=this.elements;return new Matrix4(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0)}}class Ray{constructor(e,t){this.origin=void 0!==e?e:new Vector3,this.direction=void 0!==t?t:new Vector3}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return(t||new Vector3).copy(this.direction).multiplyScalar(e).add(this.origin)}recast(e){const t=l;return this.origin.copy(this.at(e,t)),this}closestPointToPoint(e,t){const i=t||new Vector3;i.subVectors(e,this.origin);const r=i.dot(this.direction);return i.copy(this.direction).multiplyScalar(r).add(this.origin)}distanceToPoint(e){const t=l,i=t.subVectors(e,this.origin).dot(this.direction);return t.copy(this.direction).multiplyScalar(i).add(this.origin),t.distanceTo(e)}isIntersectionCylinder(){}isIntersectionSphere(e){return this.distanceToPoint(e.center)<=e.radius}isIntersectionPlane(e){return 0!==e.normal.dot(this.direction)||0===e.distanceToPoint(this.origin)}distanceToPlane(e){const t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:void 0:-(this.origin.dot(e.normal)+e.constant)/t}intersectPlane(e,t){const i=this.distanceToPlane(e);if(void 0!==i)return this.at(i,t)}applyMatrix4(e){return this.direction.add(this.origin).applyMatrix4(e),this.origin.applyMatrix4(e),this.direction.sub(this.origin),this}clone(){return(new Ray).copy(this)}}function d(e,t,i,r,n,s){r=r*Math.PI/180,n=n*Math.PI/180,s=s*Math.PI/180;const a=e=>e*e,o=Math.cos(r),l=Math.cos(n),h=Math.cos(s),c=Math.sin(s);return new Matrix3(e,t*h,i*l,0,t*c,i*(o-l*h)/c,0,0,i*Math.sqrt(1-a(o)-a(l)-a(h)+2*o*l*h)/c)}},546(e,t,i){i.r(t),i.d(t,{CustomLinear:()=>CustomLinear,Gradient:()=>Gradient,GradientType:()=>GradientType,ROYGB:()=>ROYGB,RWB:()=>RWB,Sinebow:()=>Sinebow,builtinGradients:()=>a,getGradient:()=>s,normalizeValue:()=>n});var r=i(222);class GradientType{}function n(e,t,i){return t>=e?(i<e&&(i=e),i>t&&(i=t),{lo:e,hi:t,val:i}):(i>e&&(i=e),i<t&&(i=t),{lo:t,hi:e,val:i=e-i+t})}function s(e){if(e instanceof GradientType)return e;if(void 0!==e.gradient&&a[e.gradient]){let t=void 0===e.min?-1:e.min,i=void 0===e.max?1:e.max;return void 0===e.mid?void 0===e.colors?new a[e.gradient](t,i):new a[e.gradient](t,i,e.colors):new a[e.gradient](t,i,e.mid)}if("string"==typeof e.gradient&&e.gradient.startsWith("linear_")){let t=e.gradient.split("_");t.shift();let i=void 0===e.min?-1:e.min,r=void 0===e.max?1:e.max;return new CustomLinear(i,r,t)}return e}class RWB extends GradientType{constructor(e,t,i){super(),this.gradient="RWB",this.mult=1,this.mid=i,this.min=e,this.max=t,void 0===t&&Array.isArray(e)&&e.length>=2?(this.max=e[1],this.min=e[0]):e&&t&&!Array.isArray(e)&&(this.min=e,this.max=t)}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}valueToHex(e,t){var i,r;if(e=this.mult*e,t?(i=t[0],r=t[1]):(i=this.min,r=this.max),void 0===e)return 16777215;var s=n(i,r,e);i=s.lo;var a,o=((r=s.hi)+i)/2;return(e=s.val)<(o=t&&void 0!==t[2]?t[2]:void 0!==this.mid?this.mid:(i+r)/2)?16711680+256*(a=Math.floor(255*Math.sqrt((e-i)/(o-i))))+a:e>o?65536*(a=Math.floor(255*Math.sqrt(1-(e-o)/(r-o))))+256*a+255:16777215}}class ROYGB extends GradientType{constructor(e,t){super(),this.gradient="ROYGB",this.mult=1,this.min=e,this.max=t,void 0===t&&Array.isArray(e)&&e.length>=2?(this.max=e[1],this.min=e[0]):e&&t&&!Array.isArray(e)&&(this.min=e,this.max=t)}valueToHex(e,t){var i,r;if(e=this.mult*e,t?(i=t[0],r=t[1]):(i=this.min,r=this.max),void 0===e)return 16777215;var s=n(i,r,e),a=((i=s.lo)+(r=s.hi))/2,o=(i+a)/2,l=(a+r)/2;return(e=s.val)<o?16711680+256*Math.floor(255*Math.sqrt((e-i)/(o-i)))+0:e<a?65536*Math.floor(255*Math.sqrt(1-(e-o)/(a-o)))+65280+0:e<l?65280+1*Math.floor(255*Math.sqrt((e-a)/(l-a))):0+256*Math.floor(255*Math.sqrt(1-(e-l)/(r-l)))+255}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}}class Sinebow extends GradientType{constructor(e,t){super(),this.gradient="Sinebow",this.mult=1,this.min=e,this.max=t,void 0===t&&Array.isArray(e)&&e.length>=2&&(this.max=e[1],this.min=e[0]),t<e&&(this.mult=-1,this.min*=-1,this.max*=-1)}valueToHex(e,t){var i,r;if(e=this.mult*e,t?(i=t[0],r=t[1]):(i=this.min,r=this.max),void 0===e)return 16777215;var n=Gradient.normalizeValue(i,r,e);i=n.lo,r=n.hi;var s=((e=n.val)-i)/(r-i)*5/6+.5,a=Math.sin(Math.PI*s);a*=255*a;var o=Math.sin(Math.PI*(s+1/3));o*=255*o;var l=Math.sin(Math.PI*(s+2/3));return l*=255*l,65536*Math.floor(a)+256*Math.floor(l)+1*Math.floor(o)}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}}class CustomLinear extends GradientType{constructor(e,t,i){var n;if(super(),this.gradient="linear",this.colors=new Array,Array.isArray(e)&&e.length>=2?(this.max=e[1],this.min=e[0],n=t):(this.min=e,this.max=t,n=i),n)for(let e of n)this.colors.push(r.CC.color(e));else this.colors.push(r.CC.color(0))}range(){return void 0!==this.min&&void 0!==this.max?[this.min,this.max]:null}valueToHex(e,t){var i,s;if(t?(i=t[0],s=t[1]):(i=this.min,s=this.max),void 0===e)return 16777215;var a=n(i,s,e);i=a.lo,s=a.hi,e=a.val;let o=this.colors.length,l=(s-i)/o,h=Math.min(Math.floor((e-i)/l),o-1),c=Math.min(h+1,o-1),d=(e-i-h*l)/l,u=this.colors[h],f=this.colors[c];return new r.Color(u.r+d*(f.r-u.r),u.g+d*(f.g-u.g),u.b+d*(f.b-u.b)).getHex()}}const a={rwb:RWB,RWB,roygb:ROYGB,ROYGB,sinebow:Sinebow,linear:CustomLinear};class Gradient extends GradientType{valueToHex(e,t){return 0}range(){return null}}Gradient.RWB=RWB,Gradient.ROYGB=ROYGB,Gradient.Sinebow=Sinebow,Gradient.CustomLinear=CustomLinear,Gradient.builtinGradients=a,Gradient.normalizeValue=n,Gradient.getGradient=s},663(e,t,i){var r=i(981),n=i(701),s=i(407),a=i(165),o=i(358),l=-2,h=12,c=30;function d(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function u(){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 r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(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 r.Buf32(852),t.distcode=t.distdyn=new r.Buf32(592),t.sane=1,t.back=-1,0):l}function p(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):l}function m(e,t){var i,r;return e&&e.state?(r=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?l:(null!==r.window&&r.wbits!==t&&(r.window=null),r.wrap=i,r.wbits=t,p(e))):l}function g(e,t){var i,r;return e?(r=new u,e.state=r,r.window=null,0!==(i=m(e,t))&&(e.state=null),i):l}var v,_,y=!0;function b(e){if(y){var t;for(v=new r.Buf32(512),_=new r.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(o(1,e.lens,0,288,v,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;o(2,e.lens,0,32,_,0,e.work,{bits:5}),y=!1}e.lencode=v,e.lenbits=9,e.distcode=_,e.distbits=5}function x(e,t,i,n){var s,a=e.state;return null===a.window&&(a.wsize=1<<a.wbits,a.wnext=0,a.whave=0,a.window=new r.Buf8(a.wsize)),n>=a.wsize?(r.arraySet(a.window,t,i-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((s=a.wsize-a.wnext)>n&&(s=n),r.arraySet(a.window,t,i-n,s,a.wnext),(n-=s)?(r.arraySet(a.window,t,i-n,n,0),a.wnext=n,a.whave=a.wsize):(a.wnext+=s,a.wnext===a.wsize&&(a.wnext=0),a.whave<a.wsize&&(a.whave+=s))),0}t.inflateReset=p,t.inflateReset2=m,t.inflateResetKeep=f,t.inflateInit=function(e){return g(e,15)},t.inflateInit2=g,t.inflate=function(e,t){var i,u,f,p,m,g,v,_,y,w,A,C,S,z,M,T,E,L,F,I,D,O,R,k,P=0,U=new r.Buf8(4),N=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!e||!e.state||!e.output||!e.input&&0!==e.avail_in)return l;(i=e.state).mode===h&&(i.mode=13),m=e.next_out,f=e.output,v=e.avail_out,p=e.next_in,u=e.input,g=e.avail_in,_=i.hold,y=i.bits,w=g,A=v,O=0;e:for(;;)switch(i.mode){case 1:if(0===i.wrap){i.mode=13;break}for(;y<16;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(2&i.wrap&&35615===_){i.check=0,U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0),_=0,y=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&_)<<8)+(_>>8))%31){e.msg="incorrect header check",i.mode=c;break}if(8!=(15&_)){e.msg="unknown compression method",i.mode=c;break}if(y-=4,D=8+(15&(_>>>=4)),0===i.wbits)i.wbits=D;else if(D>i.wbits){e.msg="invalid window size",i.mode=c;break}i.dmax=1<<D,e.adler=i.check=1,i.mode=512&_?10:h,_=0,y=0;break;case 2:for(;y<16;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(i.flags=_,8!=(255&i.flags)){e.msg="unknown compression method",i.mode=c;break}if(57344&i.flags){e.msg="unknown header flags set",i.mode=c;break}i.head&&(i.head.text=_>>8&1),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0,i.mode=3;case 3:for(;y<32;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.head&&(i.head.time=_),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,U[2]=_>>>16&255,U[3]=_>>>24&255,i.check=s(i.check,U,4,0)),_=0,y=0,i.mode=4;case 4:for(;y<16;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.head&&(i.head.xflags=255&_,i.head.os=_>>8),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0,i.mode=5;case 5:if(1024&i.flags){for(;y<16;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.length=_,i.head&&(i.head.extra_len=_),512&i.flags&&(U[0]=255&_,U[1]=_>>>8&255,i.check=s(i.check,U,2,0)),_=0,y=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((C=i.length)>g&&(C=g),C&&(i.head&&(D=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),r.arraySet(i.head.extra,u,p,C,D)),512&i.flags&&(i.check=s(i.check,u,C,p)),g-=C,p+=C,i.length-=C),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===g)break e;C=0;do{D=u[p+C++],i.head&&D&&i.length<65536&&(i.head.name+=String.fromCharCode(D))}while(D&&C<g);if(512&i.flags&&(i.check=s(i.check,u,C,p)),g-=C,p+=C,D)break e}else i.head&&(i.head.name=null);i.length=0,i.mode=8;case 8:if(4096&i.flags){if(0===g)break e;C=0;do{D=u[p+C++],i.head&&D&&i.length<65536&&(i.head.comment+=String.fromCharCode(D))}while(D&&C<g);if(512&i.flags&&(i.check=s(i.check,u,C,p)),g-=C,p+=C,D)break e}else i.head&&(i.head.comment=null);i.mode=9;case 9:if(512&i.flags){for(;y<16;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(_!==(65535&i.check)){e.msg="header crc mismatch",i.mode=c;break}_=0,y=0}i.head&&(i.head.hcrc=i.flags>>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=h;break;case 10:for(;y<32;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}e.adler=i.check=d(_),_=0,y=0,i.mode=11;case 11:if(0===i.havedict)return e.next_out=m,e.avail_out=v,e.next_in=p,e.avail_in=g,i.hold=_,i.bits=y,2;e.adler=i.check=1,i.mode=h;case h:if(5===t||6===t)break e;case 13:if(i.last){_>>>=7&y,y-=7&y,i.mode=27;break}for(;y<3;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}switch(i.last=1&_,y-=1,3&(_>>>=1)){case 0:i.mode=14;break;case 1:if(b(i),i.mode=20,6===t){_>>>=2,y-=2;break e}break;case 2:i.mode=17;break;case 3:e.msg="invalid block type",i.mode=c}_>>>=2,y-=2;break;case 14:for(_>>>=7&y,y-=7&y;y<32;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if((65535&_)!=(_>>>16^65535)){e.msg="invalid stored block lengths",i.mode=c;break}if(i.length=65535&_,_=0,y=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(C=i.length){if(C>g&&(C=g),C>v&&(C=v),0===C)break e;r.arraySet(f,u,p,C,m),g-=C,p+=C,v-=C,m+=C,i.length-=C;break}i.mode=h;break;case 17:for(;y<14;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(i.nlen=257+(31&_),_>>>=5,y-=5,i.ndist=1+(31&_),_>>>=5,y-=5,i.ncode=4+(15&_),_>>>=4,y-=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<i.ncode;){for(;y<3;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.lens[N[i.have++]]=7&_,_>>>=3,y-=3}for(;i.have<19;)i.lens[N[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,R={bits:i.lenbits},O=o(0,i.lens,0,19,i.lencode,0,i.work,R),i.lenbits=R.bits,O){e.msg="invalid code lengths set",i.mode=c;break}i.have=0,i.mode=19;case 19:for(;i.have<i.nlen+i.ndist;){for(;T=(P=i.lencode[_&(1<<i.lenbits)-1])>>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(E<16)_>>>=M,y-=M,i.lens[i.have++]=E;else{if(16===E){for(k=M+2;y<k;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(_>>>=M,y-=M,0===i.have){e.msg="invalid bit length repeat",i.mode=c;break}D=i.lens[i.have-1],C=3+(3&_),_>>>=2,y-=2}else if(17===E){for(k=M+3;y<k;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}y-=M,D=0,C=3+(7&(_>>>=M)),_>>>=3,y-=3}else{for(k=M+7;y<k;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}y-=M,D=0,C=11+(127&(_>>>=M)),_>>>=7,y-=7}if(i.have+C>i.nlen+i.ndist){e.msg="invalid bit length repeat",i.mode=c;break}for(;C--;)i.lens[i.have++]=D}}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,R={bits:i.lenbits},O=o(1,i.lens,0,i.nlen,i.lencode,0,i.work,R),i.lenbits=R.bits,O){e.msg="invalid literal/lengths set",i.mode=c;break}if(i.distbits=6,i.distcode=i.distdyn,R={bits:i.distbits},O=o(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,R),i.distbits=R.bits,O){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&&v>=258){e.next_out=m,e.avail_out=v,e.next_in=p,e.avail_in=g,i.hold=_,i.bits=y,a(e,A),m=e.next_out,f=e.output,v=e.avail_out,p=e.next_in,u=e.input,g=e.avail_in,_=i.hold,y=i.bits,i.mode===h&&(i.back=-1);break}for(i.back=0;T=(P=i.lencode[_&(1<<i.lenbits)-1])>>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(T&&!(240&T)){for(L=M,F=T,I=E;T=(P=i.lencode[I+((_&(1<<L+F)-1)>>L)])>>>16&255,E=65535&P,!(L+(M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}_>>>=L,y-=L,i.back+=L}if(_>>>=M,y-=M,i.back+=M,i.length=E,0===T){i.mode=26;break}if(32&T){i.back=-1,i.mode=h;break}if(64&T){e.msg="invalid literal/length code",i.mode=c;break}i.extra=15&T,i.mode=22;case 22:if(i.extra){for(k=i.extra;y<k;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.length+=_&(1<<i.extra)-1,_>>>=i.extra,y-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;T=(P=i.distcode[_&(1<<i.distbits)-1])>>>16&255,E=65535&P,!((M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(!(240&T)){for(L=M,F=T,I=E;T=(P=i.distcode[I+((_&(1<<L+F)-1)>>L)])>>>16&255,E=65535&P,!(L+(M=P>>>24)<=y);){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}_>>>=L,y-=L,i.back+=L}if(_>>>=M,y-=M,i.back+=M,64&T){e.msg="invalid distance code",i.mode=c;break}i.offset=E,i.extra=15&T,i.mode=24;case 24:if(i.extra){for(k=i.extra;y<k;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}i.offset+=_&(1<<i.extra)-1,_>>>=i.extra,y-=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===v)break e;if(C=A-v,i.offset>C){if((C=i.offset-C)>i.whave&&i.sane){e.msg="invalid distance too far back",i.mode=c;break}C>i.wnext?(C-=i.wnext,S=i.wsize-C):S=i.wnext-C,C>i.length&&(C=i.length),z=i.window}else z=f,S=m-i.offset,C=i.length;C>v&&(C=v),v-=C,i.length-=C;do{f[m++]=z[S++]}while(--C);0===i.length&&(i.mode=21);break;case 26:if(0===v)break e;f[m++]=i.length,v--,i.mode=21;break;case 27:if(i.wrap){for(;y<32;){if(0===g)break e;g--,_|=u[p++]<<y,y+=8}if(A-=v,e.total_out+=A,i.total+=A,A&&(e.adler=i.check=i.flags?s(i.check,f,A,m-A):n(i.check,f,A,m-A)),A=v,(i.flags?_:d(_))!==i.check){e.msg="incorrect data check",i.mode=c;break}_=0,y=0}i.mode=28;case 28:if(i.wrap&&i.flags){for(;y<32;){if(0===g)break e;g--,_+=u[p++]<<y,y+=8}if(_!==(4294967295&i.total)){e.msg="incorrect length check",i.mode=c;break}_=0,y=0}i.mode=29;case 29:O=1;break e;case c:O=-3;break e;case 31:return-4;default:return l}return e.next_out=m,e.avail_out=v,e.next_in=p,e.avail_in=g,i.hold=_,i.bits=y,(i.wsize||A!==e.avail_out&&i.mode<c&&(i.mode<27||4!==t))&&x(e,e.output,e.next_out,A-e.avail_out)?(i.mode=31,-4):(w-=e.avail_in,A-=e.avail_out,e.total_in+=w,e.total_out+=A,i.total+=A,i.wrap&&A&&(e.adler=i.check=i.flags?s(i.check,f,A,e.next_out-A):n(i.check,f,A,e.next_out-A)),e.data_type=i.bits+(i.last?64:0)+(i.mode===h?128:0)+(20===i.mode||15===i.mode?256:0),(0===w&&0===A||4===t)&&0===O&&(O=-5),O)},t.inflateEnd=function(e){if(!e||!e.state)return l;var t=e.state;return t.window&&(t.window=null),e.state=null,0},t.inflateGetHeader=function(e,t){var i;return e&&e.state&&2&(i=e.state).wrap?(i.head=t,t.done=!1,0):l},t.inflateSetDictionary=function(e,t){var i,r=t.length;return e&&e.state?0!==(i=e.state).wrap&&11!==i.mode?l:11===i.mode&&n(1,t,r,0)!==i.check?-3:x(e,t,r,r)?(i.mode=31,-4):(i.havedict=1,0):l},t.inflateInfo="pako inflate (from Nodeca project)"},670(e){e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},681(e){e.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}},697(e,t,i){var r=i(981);function n(e){for(var t=e.length;--t>=0;)e[t]=0}var s=256,a=286,o=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],d=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=new Array(576);n(f);var p=new Array(60);n(p);var m=new Array(512);n(m);var g=new Array(256);n(g);var v=new Array(29);n(v);var _,y,b,x=new Array(o);function w(e,t,i,r,n){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}function A(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function C(e){return e<256?m[e]:m[256+(e>>>7)]}function S(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function z(e,t,i){e.bi_valid>16-i?(e.bi_buf|=t<<e.bi_valid&65535,S(e,e.bi_buf),e.bi_buf=t>>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<<e.bi_valid&65535,e.bi_valid+=i)}function M(e,t,i){z(e,i[2*t],i[2*t+1])}function T(e,t){var i=0;do{i|=1&e,e>>>=1,i<<=1}while(--t>0);return i>>>1}function E(e,t,i){var r,n,s=new Array(16),a=0;for(r=1;r<=l;r++)s[r]=a=a+i[r-1]<<1;for(n=0;n<=t;n++){var o=e[2*n+1];0!==o&&(e[2*n]=T(s[o]++,o))}}function L(e){var t;for(t=0;t<a;t++)e.dyn_ltree[2*t]=0;for(t=0;t<o;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function F(e){e.bi_valid>8?S(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 I(e,t,i,r){var n=2*t,s=2*i;return e[n]<e[s]||e[n]===e[s]&&r[t]<=r[i]}function D(e,t,i){for(var r=e.heap[i],n=i<<1;n<=e.heap_len&&(n<e.heap_len&&I(t,e.heap[n+1],e.heap[n],e.depth)&&n++,!I(t,r,e.heap[n],e.depth));)e.heap[i]=e.heap[n],i=n,n<<=1;e.heap[i]=r}function O(e,t,i){var r,n,a,o,l=0;if(0!==e.last_lit)do{r=e.pending_buf[e.d_buf+2*l]<<8|e.pending_buf[e.d_buf+2*l+1],n=e.pending_buf[e.l_buf+l],l++,0===r?M(e,n,t):(M(e,(a=g[n])+s+1,t),0!==(o=h[a])&&z(e,n-=v[a],o),M(e,a=C(--r),i),0!==(o=c[a])&&z(e,r-=x[a],o))}while(l<e.last_lit);M(e,256,t)}function R(e,t){var i,r,n,s=t.dyn_tree,a=t.stat_desc.static_tree,o=t.stat_desc.has_stree,h=t.stat_desc.elems,c=-1;for(e.heap_len=0,e.heap_max=573,i=0;i<h;i++)0!==s[2*i]?(e.heap[++e.heap_len]=c=i,e.depth[i]=0):s[2*i+1]=0;for(;e.heap_len<2;)s[2*(n=e.heap[++e.heap_len]=c<2?++c:0)]=1,e.depth[n]=0,e.opt_len--,o&&(e.static_len-=a[2*n+1]);for(t.max_code=c,i=e.heap_len>>1;i>=1;i--)D(e,s,i);n=h;do{i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],D(e,s,1),r=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=r,s[2*n]=s[2*i]+s[2*r],e.depth[n]=(e.depth[i]>=e.depth[r]?e.depth[i]:e.depth[r])+1,s[2*i+1]=s[2*r+1]=n,e.heap[1]=n++,D(e,s,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var i,r,n,s,a,o,h=t.dyn_tree,c=t.max_code,d=t.stat_desc.static_tree,u=t.stat_desc.has_stree,f=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,m=t.stat_desc.max_length,g=0;for(s=0;s<=l;s++)e.bl_count[s]=0;for(h[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(s=h[2*h[2*(r=e.heap[i])+1]+1]+1)>m&&(s=m,g++),h[2*r+1]=s,r>c||(e.bl_count[s]++,a=0,r>=p&&(a=f[r-p]),o=h[2*r],e.opt_len+=o*(s+a),u&&(e.static_len+=o*(d[2*r+1]+a)));if(0!==g){do{for(s=m-1;0===e.bl_count[s];)s--;e.bl_count[s]--,e.bl_count[s+1]+=2,e.bl_count[m]--,g-=2}while(g>0);for(s=m;0!==s;s--)for(r=e.bl_count[s];0!==r;)(n=e.heap[--i])>c||(h[2*n+1]!==s&&(e.opt_len+=(s-h[2*n+1])*h[2*n],h[2*n+1]=s),r--)}}(e,t),E(s,c,e.bl_count)}function k(e,t,i){var r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),t[2*(i+1)+1]=65535,r=0;r<=i;r++)n=a,a=t[2*(r+1)+1],++o<l&&n===a||(o<h?e.bl_tree[2*n]+=o:0!==n?(n!==s&&e.bl_tree[2*n]++,e.bl_tree[32]++):o<=10?e.bl_tree[34]++:e.bl_tree[36]++,o=0,s=n,0===a?(l=138,h=3):n===a?(l=6,h=3):(l=7,h=4))}function P(e,t,i){var r,n,s=-1,a=t[1],o=0,l=7,h=4;for(0===a&&(l=138,h=3),r=0;r<=i;r++)if(n=a,a=t[2*(r+1)+1],!(++o<l&&n===a)){if(o<h)do{M(e,n,e.bl_tree)}while(0!==--o);else 0!==n?(n!==s&&(M(e,n,e.bl_tree),o--),M(e,16,e.bl_tree),z(e,o-3,2)):o<=10?(M(e,17,e.bl_tree),z(e,o-3,3)):(M(e,18,e.bl_tree),z(e,o-11,7));o=0,s=n,0===a?(l=138,h=3):n===a?(l=6,h=3):(l=7,h=4)}}n(x);var U=!1;function N(e,t,i,n){z(e,0+(n?1:0),3),function(e,t,i,n){F(e),n&&(S(e,i),S(e,~i)),r.arraySet(e.pending_buf,e.window,t,i,e.pending),e.pending+=i}(e,t,i,!0)}t._tr_init=function(e){U||(function(){var e,t,i,r,n,s=new Array(16);for(i=0,r=0;r<28;r++)for(v[r]=i,e=0;e<1<<h[r];e++)g[i++]=r;for(g[i-1]=r,n=0,r=0;r<16;r++)for(x[r]=n,e=0;e<1<<c[r];e++)m[n++]=r;for(n>>=7;r<o;r++)for(x[r]=n<<7,e=0;e<1<<c[r]-7;e++)m[256+n++]=r;for(t=0;t<=l;t++)s[t]=0;for(e=0;e<=143;)f[2*e+1]=8,e++,s[8]++;for(;e<=255;)f[2*e+1]=9,e++,s[9]++;for(;e<=279;)f[2*e+1]=7,e++,s[7]++;for(;e<=287;)f[2*e+1]=8,e++,s[8]++;for(E(f,287,s),e=0;e<o;e++)p[2*e+1]=5,p[2*e]=T(e,5);_=new w(f,h,257,a,l),y=new w(p,c,0,o,l),b=new w(new Array(0),d,0,19,7)}(),U=!0),e.l_desc=new A(e.dyn_ltree,_),e.d_desc=new A(e.dyn_dtree,y),e.bl_desc=new A(e.bl_tree,b),e.bi_buf=0,e.bi_valid=0,L(e)},t._tr_stored_block=N,t._tr_flush_block=function(e,t,i,r){var n,a,o=0;e.level>0?(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<s;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),R(e,e.l_desc),R(e,e.d_desc),o=function(e){var t;for(k(e,e.dyn_ltree,e.l_desc.max_code),k(e,e.dyn_dtree,e.d_desc.max_code),R(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),n=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=n&&(n=a)):n=a=i+5,i+4<=n&&-1!==t?N(e,t,i,r):4===e.strategy||a===n?(z(e,2+(r?1:0),3),O(e,f,p)):(z(e,4+(r?1:0),3),function(e,t,i,r){var n;for(z(e,t-257,5),z(e,i-1,5),z(e,r-4,4),n=0;n<r;n++)z(e,e.bl_tree[2*u[n]+1],3);P(e,e.dyn_ltree,t-1),P(e,e.dyn_dtree,i-1)}(e,e.l_desc.max_code+1,e.d_desc.max_code+1,o+1),O(e,e.dyn_ltree,e.dyn_dtree)),L(e),r&&F(e)},t._tr_tally=function(e,t,i){return e.pending_buf[e.d_buf+2*e.last_lit]=t>>>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]+s+1)]++,e.dyn_dtree[2*C(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){z(e,2,3),M(e,256,f),function(e){16===e.bi_valid?(S(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)}},701(e){e.exports=function(e,t,i,r){for(var n=65535&e,s=e>>>16&65535,a=0;0!==i;){i-=a=i>2e3?2e3:i;do{s=s+(n=n+t[r++]|0)|0}while(--a);n%=65521,s%=65521}return n|s<<16}},746(e){e.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}},788(e,t,i){var r={};(0,i(981).assign)(r,i(71),i(3),i(681)),e.exports=r},797(e,t,i){i.r(t),i.d(t,{VASP:()=>s});var r=i(59),n=i(392);function s(e,t={}){var i=[[]],s={};const a=void 0===t.assignBonds||t.assignBonds;var o=e.replace(/^\s+/,"").split(/\r?\n/);if(o.length<3)return i;if(!o[1].match(/\d+/))return console.log("Warning: second line of the vasp structure file must be a number"),i;if(s.length=parseFloat(o[1]),s.length<0)return console.log("Warning: Vasp implementation for negative lattice lengths is not yet available"),i;s.xVec=new Float32Array(o[2].replace(/^\s+/,"").split(/\s+/)),s.yVec=new Float32Array(o[3].replace(/^\s+/,"").split(/\s+/)),s.zVec=new Float32Array(o[4].replace(/^\s+/,"").split(/\s+/));var l=new r.Matrix3(s.xVec[0],s.xVec[1],s.xVec[2],s.yVec[0],s.yVec[1],s.yVec[2],s.zVec[0],s.zVec[1],s.zVec[2]);l.multiplyScalar(s.length),i.modelData=[{symmetries:[],cryst:{matrix:l}}];var h=o[5].trim().split(/\s+/),c=new Int16Array(o[6].trim().split(/\s+/)),d=o[7].trim(),u=!1;if(d.match(/S/)&&(u=!0,d=o[8].trim()),"c"==d.toLowerCase()[0])d="cartesian";else{if("d"!=d.toLowerCase()[0])return console.log("Warning: Unknown vasp mode in POSCAR file: mode must be either C(artesian) or D(irect)"),i;d="direct"}if(h.length!=c.length)return console.log("Warning: declaration of atomary species wrong:"),console.log(h),console.log(c),i;u?o.splice(0,9):o.splice(0,8);for(var f=0,p=0,m=h.length;p<m;p++){for(var g=h[p],v=0,_=c[p];v<_;v++){var y=new Float32Array(o[f+v].trim().split(/\s+/)),b={};b.elem=g,"cartesian"==d?(b.x=s.length*y[0],b.y=s.length*y[1],b.z=s.length*y[2]):(b.x=s.length*(y[0]*s.xVec[0]+y[1]*s.yVec[0]+y[2]*s.zVec[0]),b.y=s.length*(y[0]*s.xVec[1]+y[1]*s.yVec[1]+y[2]*s.zVec[1]),b.z=s.length*(y[0]*s.xVec[2]+y[1]*s.yVec[2]+y[2]*s.zVec[2])),b.bonds=[],b.bondOrder=[],i[0].push(b)}f+=c[p]}if(a)for(let e=0;e<i.length;e++)(0,n.assignBonds)(i[e],t);return i}},834(e){e.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"}},848(e,t,i){i.r(t),i.d(t,{VolumeData:()=>VolumeData});var r=i(864),n=i(529),s=i(797),a=i(865),o=i(75);class VolumeData{constructor(e,t,i){if(this.unit={x:1,y:1,z:1},this.origin={x:0,y:0,z:0},this.size={x:0,y:0,z:0},this.data=new Float32Array([]),this.matrix=null,this.inversematrix=null,this.isbinary=new Set(["ccp4","CCP4"]),this.getCoordinates=function(e){var t=e/(this.size.y*this.size.z),i=e%(this.size.y*this.size.z),r=e%this.size.z;return t*=this.unit.x,i*=this.unit.y,r*=this.unit.z,{x:t+=this.origin.x,y:i+=this.origin.y,z:r+=this.origin.z}},this.vasp=function(e){var t=e.replace(/^\s+/,"").split(/[\n\r]/),i=(0,s.VASP)(e)[0].length;if(0==i)return console.warn("No good formating of CHG or CHGCAR file, not atomic information provided in the file."),void(this.data=[]);var r,a=1.889725992,o=parseFloat(t[1]);r=t[2].replace(/^\s+/,"").split(/\s+/);var l=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a);r=t[3].replace(/^\s+/,"").split(/\s+/);var h=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a);r=t[4].replace(/^\s+/,"").split(/\s+/);var c=new n.Vector3(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2])).multiplyScalar(o*a),d=l.x*(h.y*c.z-c.y*h.z)-h.x*(l.y*c.z-c.y*l.z)+c.x*(l.y*h.z-h.y*l.z),u=1/(d=Math.abs(d)/Math.pow(a,3));t.splice(0,8+i+1);var f=t[0].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),p=Math.abs(parseFloat(f[0])),m=Math.abs(parseFloat(f[1])),g=Math.abs(parseFloat(f[2])),v=this.origin=new n.Vector3(0,0,0);this.size={x:p,y:m,z:g},this.unit=new n.Vector3(l.x,h.y,c.z),l=l.multiplyScalar(1/(a*p)),h=h.multiplyScalar(1/(a*m)),c=c.multiplyScalar(1/(a*g)),0==l.y&&0==l.z&&0==h.x&&0==h.z&&0==c.x&&0==c.y||(this.matrix=new n.Matrix4(l.x,h.x,c.x,0,l.y,h.y,c.y,0,l.z,h.z,c.z,0,0,0,0,1),this.matrix=this.matrix.multiplyMatrices(this.matrix,(new n.Matrix4).makeTranslation(v.x,v.y,v.z)),this.origin=new n.Vector3(0,0,0),this.unit=new n.Vector3(1,1,1)),t.splice(0,1);var _=t.join(" "),y=(_=_.replace(/^\s+/,"")).split(/[\s\r]+/);y.splice(p*m*g+1);for(var b=Float32Array.from(y,parseFloat),x=0;x<b.length;x++)b[x]=b[x]*u*.036749309;this.data=b},this.dx=function(e){var t,i=e.split(/[\n\r]+/),r=/gridpositions\s+counts\s+(\d+)\s+(\d+)\s+(\d+)/,s=/^origin\s+(\S+)\s+(\S+)\s+(\S+)/,a=/^delta\s+(\S+)\s+(\S+)\s+(\S+)/,o=/data follows/,l=0;for(l=0;l<i.length;l++){var h=i[l];if(t=r.exec(h)){var c=parseInt(t[1]),d=parseInt(t[2]),u=parseInt(t[3]);this.size={x:c,y:d,z:u}}else if(t=a.exec(h)){var f=parseFloat(t[1]);if(0==parseFloat(t[2])&&0==parseFloat(t[3])||console.warn("Non-orthogonal delta matrix not currently supported in dx format"),h=i[l+=1],null==(t=a.exec(h)))return void console.error("Parse error in dx delta matrix");var p=parseFloat(t[2]);if(0==parseFloat(t[1])&&0==parseFloat(t[3])||console.warn("Non-orthogonal delta matrix not currently supported in dx format"),h=i[l+=1],null==(t=a.exec(h)))return void console.error("Parse error in dx delta matrix");var m=parseFloat(t[3]);0==parseFloat(t[1])&&0==parseFloat(t[2])||console.warn("Non-orthogonal delta matrix not currently supported in dx format"),this.unit=new n.Vector3(f,p,m)}else if(t=s.exec(h)){var g=parseFloat(t[1]),v=parseFloat(t[2]),_=parseFloat(t[3]);this.origin=new n.Vector3(g,v,_)}else if(t=o.exec(h))break}if(l+=1,this.size&&this.origin&&this.unit&&this.size){var y=i.splice(l).join(" ").split(/[\s\r]+/);this.data=Float32Array.from(y,parseFloat)}else console.error("Error parsing dx format")},t=t.toLowerCase(),/\.gz$/.test(t)){t=t.replace(/\.gz$/,"");try{this[t]&&this.isbinary.has(t)?("string"==typeof e&&(e=(0,r.base64ToArray)(e)),e=(0,o.inflate)(e)):e=new TextDecoder("utf-8").decode((0,o.inflate)(e))}catch(e){console.error(e)}}if(this[t]&&(this.isbinary.has(t)&&"string"==typeof e&&(e=(0,r.base64ToArray)(e)),this[t](e)),i){if(i.negate)for(let e=0,t=this.data.length;e<t;e++)this.data[e]=-this.data[e];if(i.normalize){var a=0;for(let e=0,t=this.data.length;e<t;e++)a+=this.data[e];var l=a/this.data.length;a=0;for(let e=0,t=this.data.length;e<t;e++){var h=this.data[e]-l;a+=h*h}var c=a/this.data.length;for(let e=0,t=this.data.length;e<t;e++)this.data[e]=(this.data[e]-l)/c}}}getIndex(e,t,i){if(this.matrix){null==this.inversematrix&&(this.inversematrix=(new n.Matrix4).getInverse(this.matrix));var r=new n.Vector3(e,t,i);e=(r=r.applyMatrix4(this.inversematrix)).x,t=r.y,i=r.z}else e-=this.origin.x,t-=this.origin.y,i-=this.origin.z,e/=this.unit.x,t/=this.unit.y,i/=this.unit.z;return e=Math.round(e),t=Math.round(t),i=Math.round(i),e<0||e>=this.size.x||t<0||t>=this.size.y||i<0||i>=this.size.z?-1:e*this.size.y*this.size.z+t*this.size.z+i}getVal(e,t,i){let r=this.getIndex(e,t,i);return r<0?0:this.data[r]}cube(e){var t=e.split(/\r?\n/);if(!(t.length<6)){var i=(0,a.CUBE)(e,{}).modelData[0].cryst,r=t[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),n=parseFloat(r[0]),s=Math.abs(n);this.origin=i.origin,this.size=i.size,this.unit=i.unit,this.matrix=i.matrix4;var o=6;n<0&&o++;var l=t.splice(s+o).join(" "),h=(l=l.replace(/^\s+/,"")).split(/[\s\r]+/);this.data=Float32Array.from(h,parseFloat)}}ccp4(e){var t={};e=new Int8Array(e);var i=new Int32Array(e.buffer,0,56),r=new Float32Array(e.buffer,0,56),s=new DataView(e.buffer);if(t.MAP=String.fromCharCode(s.getUint8(208),s.getUint8(209),s.getUint8(210),s.getUint8(211)),t.MACHST=[s.getUint8(212),s.getUint8(213)],17===t.MACHST[0]&&17===t.MACHST[1])for(var a=e.byteLength,o=0;o<a;o+=4)s.setFloat32(o,s.getFloat32(o),!0);t.NX=i[0],t.NY=i[1],t.NZ=i[2],t.MODE=i[3],t.NXSTART=i[4],t.NYSTART=i[5],t.NZSTART=i[6],t.MX=i[7],t.MY=i[8],t.MZ=i[9],t.xlen=r[10],t.ylen=r[11],t.zlen=r[12],t.alpha=r[13],t.beta=r[14],t.gamma=r[15],t.MAPC=i[16],t.MAPR=i[17],t.MAPS=i[18],t.DMIN=r[19],t.DMAX=r[20],t.DMEAN=r[21],t.ISPG=i[22],t.NSYMBT=i[23],t.LSKFLG=i[24],t.originX=r[49],t.originY=r[50],t.originZ=r[51],t.ARMS=r[54];var l=t,h=[l.xlen,0,0],c=[l.ylen*Math.cos(Math.PI/180*l.gamma),l.ylen*Math.sin(Math.PI/180*l.gamma),0],d=[l.zlen*Math.cos(Math.PI/180*l.beta),l.zlen*(Math.cos(Math.PI/180*l.alpha)-Math.cos(Math.PI/180*l.gamma)*Math.cos(Math.PI/180*l.beta))/Math.sin(Math.PI/180*l.gamma),0];d[2]=Math.sqrt(l.zlen*l.zlen*Math.sin(Math.PI/180*l.beta)*Math.sin(Math.PI/180*l.beta)-d[1]*d[1]);var u=[0,h,c,d],f=[0,l.MX,l.MY,l.MZ],p=[0,l.MAPC,l.MAPR,l.MAPS];this.matrix=new n.Matrix4,this.matrix.set(u[p[1]][0]/f[p[1]],u[p[2]][0]/f[p[2]],u[p[3]][0]/f[p[3]],0,u[p[1]][1]/f[p[1]],u[p[2]][1]/f[p[2]],u[p[3]][1]/f[p[3]],0,u[p[1]][2]/f[p[1]],u[p[2]][2]/f[p[2]],u[p[3]][2]/f[p[3]],0,0,0,0,1),this.matrix=this.matrix.multiplyMatrices(this.matrix,(new n.Matrix4).makeTranslation(l.NXSTART+l.originX,l.NYSTART+l.originY,l.NZSTART+l.originZ)),this.origin=new n.Vector3(0,0,0),this.unit=new n.Vector3(1,1,1),this.size={x:t.NX,y:t.NY,z:t.NZ},this.dimensionorder=[t.MAPC,t.MAPR,t.MAPS];var m=new Float32Array(e.buffer,1024+t.NSYMBT),g=t.NX,v=t.NY,_=t.NZ;this.data=new Float32Array(g*v*_);for(let e=0;e<g;e++)for(let t=0;t<v;t++)for(let i=0;i<_;i++)this.data[(e*v+t)*_+i]=m[(i*v+t)*g+e]}}},864(__unused_webpack_module,__webpack_exports__,__webpack_require__){__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{PausableTimer:()=>PausableTimer,adjustVolumeStyle:()=>adjustVolumeStyle,base64ToArray:()=>base64ToArray,deepCopy:()=>deepCopy,download:()=>download,extend:()=>extend,get:()=>get,getAtomProperty:()=>getAtomProperty,getColorFromStyle:()=>getColorFromStyle,getElement:()=>getElement,getExtent:()=>getExtent,getPropertyRange:()=>getPropertyRange,getbin:()=>getbin,inflateString:()=>inflateString,isEmptyObject:()=>isEmptyObject,isNumeric:()=>isNumeric,makeFunction:()=>makeFunction,mergeGeos:()=>mergeGeos,specStringToObject:()=>specStringToObject});var _Gradient__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(546),_VolumeData__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(848),_colors__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(222),pako__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(75);function extend(e,t){for(var i in t)t.hasOwnProperty(i)&&void 0!==t[i]&&(e[i]=t[i]);return e}function deepCopy(e){let t,i,r;if(null==e)return{};if("object"!=typeof e||null===e)return e;for(r in t=Array.isArray(e)?[]:{},e)i=e[r],t[r]=deepCopy(i);return t}function isNumeric(e){var t=typeof e;return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))}function isEmptyObject(e){return 0===Object.keys(e).length}function makeFunction(callback){return callback&&"string"==typeof callback&&(callback=eval("("+callback+")")),callback&&"function"!=typeof callback?(console.warn("Invalid callback provided."),()=>{}):callback}function adjustVolumeStyle(e){e&&(!e.volformat||e.voldata instanceof _VolumeData__WEBPACK_IMPORTED_MODULE_1__.VolumeData||(e.voldata=new _VolumeData__WEBPACK_IMPORTED_MODULE_1__.VolumeData(e.voldata,e.volformat)),e.volscheme&&(e.volscheme=_Gradient__WEBPACK_IMPORTED_MODULE_0__.Gradient.getGradient(e.volscheme)))}function getExtent(e,t){var i,r,n,s,a,o,l,h,c,d,u=!t;if(i=r=n=9999,s=a=o=-9999,l=h=c=d=0,0===e.length)return[[0,0,0],[0,0,0],[0,0,0]];for(var f=0;f<e.length;f++){var p=e[f];if(void 0!==p&&isFinite(p.x)&&isFinite(p.y)&&isFinite(p.z)&&(d++,l+=p.x,h+=p.y,c+=p.z,i=i<p.x?i:p.x,r=r<p.y?r:p.y,n=n<p.z?n:p.z,s=s>p.x?s:p.x,a=a>p.y?a:p.y,o=o>p.z?o:p.z,p.symmetries&&u))for(var m=0;m<p.symmetries.length;m++)d++,l+=p.symmetries[m].x,h+=p.symmetries[m].y,c+=p.symmetries[m].z,i=i<p.symmetries[m].x?i:p.symmetries[m].x,r=r<p.symmetries[m].y?r:p.symmetries[m].y,n=n<p.symmetries[m].z?n:p.symmetries[m].z,s=s>p.symmetries[m].x?s:p.symmetries[m].x,a=a>p.symmetries[m].y?a:p.symmetries[m].y,o=o>p.symmetries[m].z?o:p.symmetries[m].z}return[[i,r,n],[s,a,o],[l/d,h/d,c/d]]}function getPropertyRange(e,t){for(var i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,n=0,s=e.length;n<s;n++){var a=getAtomProperty(e[n],t);null!=a&&(a<i&&(i=a),a>r&&(r=a))}return isFinite(i)||isFinite(r)?isFinite(i)?isFinite(r)||(r=i):i=r:i=r=0,[i,r]}class PausableTimer{constructor(e,t,i){this.total_time_run=0,this.fn=e,this.arg=i,this.countdown=t,this.start_time=(new Date).getTime(),this.ident=setTimeout(e,t,i)}cancel(){clearTimeout(this.ident)}pause(){clearTimeout(this.ident),this.total_time_run=(new Date).getTime()-this.start_time}resume(){this.ident=setTimeout(this.fn,Math.max(0,this.countdown-this.total_time_run),this.arg)}}function base64ToArray(e){for(var t=window.atob(e),i=t.length,r=new Uint8Array(i),n=0;n<i;n++)r[n]=t.charCodeAt(n);return r}function getAtomProperty(e,t){var i=null;return e.properties&&void 0!==e.properties[t]?i=e.properties[t]:void 0!==e[t]&&(i=e[t]),i}function mergeGeos(e,t){var i=t.geometry;void 0!==i&&e.geometryGroups.push(i.geometryGroups[0])}function specStringToObject(e){if("object"==typeof e)return e;if(void 0===e||null==e)return e;try{return JSON.parse(e)}catch(e){}var t=function(e){return isNumeric(e)?Math.floor(parseFloat(e))==parseInt(e)||e.indexOf(".")>=0?parseFloat(e):parseInt(e):"true"===e||"false"!==e&&e},i={};if("all"===(e=e.replace(/%7E/g,"~")))return i;for(var r=e.split(";"),n=0;n<r.length;n++){var s=r[n].split(":"),a=s[0],o={},l=s[1];if(l)if(-1!==(l=l.replace(/~/g,"=")).indexOf("="))for(var h=l.split(","),c=0;c<h.length;c++){var d=h[c].split("=",2);o[d[0]]=t(d[1])}else o=-1!==l.indexOf(",")?l.split(","):t(l);i[a]=o}return i}function checkStatus(e){if(!e.ok)throw new Error(`HTTP ${e.status} - ${e.statusText}`);return e}function get(e,t){var i=fetch(e).then(checkStatus).then(e=>e.text());return t?i.then(t):i}function getbin(e,t,i,r){var n;return n="POST"==i?fetch(e,{method:"POST",body:r}).then(e=>checkStatus(e)).then(e=>e.arrayBuffer()):fetch(e).then(e=>checkStatus(e)).then(e=>e.arrayBuffer()),t?n.then(t):n}function download(e,t,i,r){var n="",s="",a="",o=null,l=t.addModel();e.indexOf(":")<0&&(e=4==e.length?"pdb:"+e:isNaN(e)?"url:"+e:"cid:"+e),"mmtf:"==e.substring(0,5)&&(console.warn("WARNING: MMTF now deprecated. Reverting to bcif."),e="bcif:"+e.slice(5));var h=function(e){l.addMolData(e,n,i),t.zoomTo(),t.render()};if("bcif:"===e.substring(0,5))e=e.substring(5).toUpperCase(),a="https://models.rcsb.org/"+e+".bcif.gz",i&&void 0===i.noComputeSecondaryStructure&&(i.noComputeSecondaryStructure=!0),o=new Promise(function(t){getbin(a).then(function(e){h(e),t(l)}).catch(function(){s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+".pdb",n="pdb",console.warn("falling back to pdb format"),get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})})});else{if("pdb:"===e.substring(0,4)){if(n="bcif",i&&i.format&&(n=i.format),i&&void 0===i.noComputeSecondaryStructure&&(i.noComputeSecondaryStructure=!0),!(e=e.substring(4).toUpperCase()).match(/^[1-9][A-Za-z0-9]{3}$/))return void alert("Wrong PDB ID");"bcif"==n?a="https://models.rcsb.org/"+e.toUpperCase()+".bcif.gz":(s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+"."+n)}else if("cid:"==e.substring(0,4)){if(n="sdf",!(e=e.substring(4)).match(/^[0-9]+$/))return void alert("Wrong Compound ID");a="https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/"+e+"/SDF?record_type=3d"}else"url:"==e.substring(0,4)&&(a=e.substring(4),n=a);o=new Promise(function(t){"bcif"==n?getbin(a).then(function(e){h(e),t(l)}).catch(function(){s=i&&i.pdbUri?i.pdbUri:"https://files.rcsb.org/view/",a=s+e+".pdb",n="pdb",console.warn("falling back to pdb format"),get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})}):get(a).then(function(e){h(e),t(l)}).catch(function(e){h(""),t(l),console.error("fetch of "+a+" failed: "+e.statusText)})})}return r?(o.then(function(e){r(e)}),l):o}function getColorFromStyle(e,t){let i=t.colorscheme;if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i])i=_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i];else if("string"==typeof i&&i.endsWith("Carbon")){let e=i.substring(0,i.lastIndexOf("Carbon")).toLowerCase();if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.htmlColors[e]){let t=Object.assign({},_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors.defaultColors);t.C=_colors__WEBPACK_IMPORTED_MODULE_2__.htmlColors[e],_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i]={prop:"elem",map:t},i=_colors__WEBPACK_IMPORTED_MODULE_2__.builtinColorSchemes[i]}}let r=e.color;if(void 0!==t.color&&"spectrum"!=t.color&&(r=t.color),void 0!==i){let s,a;if(void 0!==_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors[i])i=_colors__WEBPACK_IMPORTED_MODULE_2__.elementColors[i],void 0!==i[e[i.prop]]&&(r=i.map[e[i.prop]]);else if(void 0!==i[e[i.prop]])r=i.map[e[i.prop]];else if(void 0!==i.prop&&void 0!==i.gradient){s=i.prop;var n=i.gradient;n instanceof _Gradient__WEBPACK_IMPORTED_MODULE_0__.GradientType||(n=(0,_Gradient__WEBPACK_IMPORTED_MODULE_0__.getGradient)(i));let t=n.range()||[-1,1];a=getAtomProperty(e,s),null!=a&&(r=n.valueToHex(a,t))}else void 0!==i.prop&&void 0!==i.map?(s=i.prop,a=getAtomProperty(e,s),void 0!==i.map[a]&&(r=i.map[a])):void 0!==t.colorscheme[e.elem]?r=t.colorscheme[e.elem]:console.warn("Could not interpret colorscheme "+i)}else void 0!==t.colorfunc&&(r=t.colorfunc(e));return _colors__WEBPACK_IMPORTED_MODULE_2__.CC.color(r)}function getElement(e){let t=e;return"string"==typeof e?t=document.querySelector("#"+e):"object"==typeof e&&e.get&&(t=e.get(0)),t}function inflateString(e,t=!0){let i;return i="string"==typeof e?(new TextEncoder).encode(e):new Uint8Array(e),(0,pako__WEBPACK_IMPORTED_MODULE_3__.inflate)(i,{to:t?"string":null})}},865(e,t,i){i.r(t),i.d(t,{CUBE:()=>a});var r=i(59),n=i(392);const s={1:"H",2:"He",3:"Li",4:"Be",5:"B",6:"C",7:"N",8:"O",9:"F",10:"Ne",11:"Na",12:"Mg",13:"Al",14:"Si",15:"P",16:"S",17:"Cl",18:"Ar",19:"K",20:"Ca",21:"Sc",22:"Ti",23:"V",24:"Cr",25:"Mn",26:"Fe",27:"Co",28:"Ni",29:"Cu",30:"Zn",31:"Ga",32:"Ge",33:"As",34:"Se",35:"Br",36:"Kr",37:"Rb",38:"Sr",39:"Y",40:"Zr",41:"Nb",42:"Mo",43:"Tc",44:"Ru",45:"Rh",46:"Pd",47:"Ag",48:"Cd",49:"In",50:"Sn",51:"Sb",52:"Te",53:"I",54:"Xe",55:"Cs",56:"Ba",71:"Lu",72:"Hf",73:"Ta",74:"W",75:"Re",76:"Os",77:"Ir",78:"Pt",79:"Au",80:"Hg",81:"Tl",82:"Pb",83:"Bi",84:"Po",85:"At",86:"Rn",87:"Fr",88:"Ra",104:"Rf",105:"Db",106:"Sg",107:"Bh",108:"Hs",109:"Mt",110:"Ds",111:"Rg",112:"Cn",113:"Nh",114:"Fl",115:"Mc",116:"Lv",117:"Ts",118:"Og",57:"La",58:"Ce",59:"Pr",60:"Nd",61:"Pm",62:"Sm",63:"Eu",64:"Gd",65:"Tb",66:"Dy",67:"Ho",68:"Er",69:"Tm",70:"Yb",89:"Ac",90:"Th",91:"Pa",92:"U",93:"Np",94:"Pu",95:"Am",96:"Cm",97:"Bk",98:"Cf",99:"Es",100:"Fm",101:"Md",102:"No"};function a(e,t){t=t||{};const i=[[]];let a=e.split(/\r?\n/);const o=void 0===t.assignBonds||t.assignBonds;if(a.length<6)return i;let l=a[2].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const h=Math.abs(parseFloat(l[0]));let c={origin:void 0,size:void 0,unit:void 0,matrix4:void 0,matrix:void 0};const d=c.origin=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3]));l=a[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" "),l=a[3].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const u=l[0]>0?.529177:1;d.multiplyScalar(u);const f=Math.abs(l[0]),p=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);l=a[4].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const m=Math.abs(l[0]),g=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);l=a[5].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");const v=Math.abs(l[0]),_=new r.Vector3(parseFloat(l[1]),parseFloat(l[2]),parseFloat(l[3])).multiplyScalar(u);if(c.size={x:f,y:m,z:v},c.unit=new r.Vector3(p.x,g.y,_.z),0!=p.y||0!=p.z||0!=g.x||0!=g.z||0!=_.x||0!=_.y){c.matrix4=new r.Matrix4(p.x,g.x,_.x,0,p.y,g.y,_.y,0,p.z,g.z,_.z,0,0,0,0,1);let e=(new r.Matrix4).makeTranslation(d.x,d.y,d.z);c.matrix4=c.matrix4.multiplyMatrices(e,c.matrix4),c.matrix=c.matrix4.matrix3FromTopLeft(),c.origin=new r.Vector3(0,0,0),c.unit=new r.Vector3(1,1,1)}i.modelData=[{cryst:c}],a=a.splice(6,h);for(var y=i[i.length-1].length,b=y+a.length,x=y;x<b;++x){var w={};w.serial=x;var A=a[x-y].replace(/^\s+/,"").replace(/\s+/g," ").split(" ");w.elem=s[A[0]],w.x=parseFloat(A[2])*u,w.y=parseFloat(A[3])*u,w.z=parseFloat(A[4])*u,w.hetflag=!0,w.bonds=[],w.bondOrder=[],w.properties={},i[i.length-1].push(w)}if(o)for(let e=0;e<i.length;e++)(0,n.assignBonds)(i[e],t);return i}},972(e,t,i){var r=i(981),n=!0,s=!0;try{String.fromCharCode.apply(null,[0])}catch(e){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(e){s=!1}for(var a=new r.Buf8(256),o=0;o<256;o++)a[o]=o>=252?6:o>=248?5:o>=240?4:o>=224?3:o>=192?2:1;function l(e,t){if(t<65534&&(e.subarray&&s||!e.subarray&&n))return String.fromCharCode.apply(null,r.shrinkBuf(e,t));for(var i="",a=0;a<t;a++)i+=String.fromCharCode(e[a]);return i}a[254]=a[254]=1,t.string2buf=function(e){var t,i,n,s,a,o=e.length,l=0;for(s=0;s<o;s++)55296==(64512&(i=e.charCodeAt(s)))&&s+1<o&&56320==(64512&(n=e.charCodeAt(s+1)))&&(i=65536+(i-55296<<10)+(n-56320),s++),l+=i<128?1:i<2048?2:i<65536?3:4;for(t=new r.Buf8(l),a=0,s=0;a<l;s++)55296==(64512&(i=e.charCodeAt(s)))&&s+1<o&&56320==(64512&(n=e.charCodeAt(s+1)))&&(i=65536+(i-55296<<10)+(n-56320),s++),i<128?t[a++]=i:i<2048?(t[a++]=192|i>>>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},t.buf2binstring=function(e){return l(e,e.length)},t.binstring2buf=function(e){for(var t=new r.Buf8(e.length),i=0,n=t.length;i<n;i++)t[i]=e.charCodeAt(i);return t},t.buf2string=function(e,t){var i,r,n,s,o=t||e.length,h=new Array(2*o);for(r=0,i=0;i<o;)if((n=e[i++])<128)h[r++]=n;else if((s=a[n])>4)h[r++]=65533,i+=s-1;else{for(n&=2===s?31:3===s?15:7;s>1&&i<o;)n=n<<6|63&e[i++],s--;s>1?h[r++]=65533:n<65536?h[r++]=n:(n-=65536,h[r++]=55296|n>>10&1023,h[r++]=56320|1023&n)}return l(h,r)},t.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}},981(e,t){var i="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.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 n in i)r(i,n)&&(e[n]=i[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var n={arraySet:function(e,t,i,r,n){if(t.subarray&&e.subarray)e.set(t.subarray(i,i+r),n);else for(var s=0;s<r;s++)e[n+s]=t[i+s]},flattenChunks:function(e){var t,i,r,n,s,a;for(r=0,t=0,i=e.length;t<i;t++)r+=e[t].length;for(a=new Uint8Array(r),n=0,t=0,i=e.length;t<i;t++)s=e[t],a.set(s,n),n+=s.length;return a}},s={arraySet:function(e,t,i,r,n){for(var s=0;s<r;s++)e[n+s]=t[i+s]},flattenChunks:function(e){return[].concat.apply([],e)}};t.setTyped=function(e){e?(t.Buf8=Uint8Array,t.Buf16=Uint16Array,t.Buf32=Int32Array,t.assign(t,n)):(t.Buf8=Array,t.Buf16=Array,t.Buf32=Array,t.assign(t,s))},t.setTyped(i)}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var i=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(i.exports,i,i.exports,__webpack_require__),i.exports}__webpack_require__.d=(e,t)=>{for(var i in t)__webpack_require__.o(t,i)&&!__webpack_require__.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__(16),__webpack_require__(185);var __webpack_exports__=__webpack_require__(307);return __webpack_exports__})(),"object"==typeof exports&&"object"==typeof module?module.exports=factory():"function"==typeof define&&define.amd?define([],factory):"object"==typeof exports?exports["3Dmol"]=factory():root["3Dmol"]=factory();
|