commit 3c138f3b9fa099aa79daf303ca9e5dacae4139af Author: Guanran Wang Date: Tue Sep 19 08:17:43 2023 +0800 initial commit diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a10035d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,29 @@ +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/catppuccin"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/catppuccin + url = https://github.com/catppuccin/catppuccin.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/clash/yacd"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/clash/yacd + url = https://github.com/haishanh/yacd.git + branch = gh-pages +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/clash/metacubexd"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/clash/metacubexd + url = https://github.com/MetaCubeX/metacubexd.git + branch = gh-pages +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/fast-syntax-highlighting"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/fast-syntax-highlighting + url = https://github.com/zdharma-continuum/fast-syntax-highlighting.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/fzf-tab"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/fzf-tab + url = https://github.com/Aloxaf/fzf-tab.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/powerlevel10k"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/powerlevel10k + url = https://github.com/romkatv/powerlevel10k.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-autosuggestions"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-autosuggestions + url = https://github.com/zsh-users/zsh-autosuggestions.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-history-substring-search"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-history-substring-search + url = https://github.com/zsh-users/zsh-history-substring-search.git +[submodule "flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-syntax-highlighting"] + path = flakes/home-manager/guanranwang/common/dotfiles/config/zsh/zsh-syntax-highlighting + url = https://github.com/zsh-users/zsh-syntax-highlighting.git diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..31faff8 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,12 @@ +keys: + + - &admin_guanranwang age129yyxyz686qj88ce5v77ahelqqwt6zz94mzzls0ny4hq76psrd9qhc79kq + + # nix-shell -p ssh-to-age --run 'cat /etc/ssh/ssh_host_ed25519_key.pub | ssh-to-age' + - &server_81fw age1hm6pkvt4d640wmjhxg5wxfwkp9zhcqre9klr4zg5kx2qx7vyhuuqlytmnp +creation_rules: + - path_regex: secrets/[^/]+\.(yaml|json|env|ini)$ + key_groups: + - age: + - *admin_guanranwang + - *server_81fw \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..88ff775 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# nix{os,-darwin} config +### it just works(tm) + +## installation +dont diff --git a/flake.lock b/flake.lock new file mode 100755 index 0000000..183c636 --- /dev/null +++ b/flake.lock @@ -0,0 +1,720 @@ +{ + "nodes": { + "berberman": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nvfetcher": "nvfetcher" + }, + "locked": { + "lastModified": 1694729393, + "narHash": "sha256-7uP8LRDVLLmn02eWlrgvy/HaySe7G0m3UGcqzMu8w3U=", + "owner": "berberman", + "repo": "flakes", + "rev": "426b59117b981271deba195adca22739e3181ca2", + "type": "github" + }, + "original": { + "owner": "berberman", + "repo": "flakes", + "type": "github" + } + }, + "crane": { + "inputs": { + "flake-compat": [ + "lanzaboote", + "flake-compat" + ], + "flake-utils": [ + "lanzaboote", + "flake-utils" + ], + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ], + "rust-overlay": [ + "lanzaboote", + "rust-overlay" + ] + }, + "locked": { + "lastModified": 1688772518, + "narHash": "sha256-ol7gZxwvgLnxNSZwFTDJJ49xVY5teaSvF7lzlo3YQfM=", + "owner": "ipetkov", + "repo": "crane", + "rev": "8b08e96c9af8c6e3a2b69af5a7fa168750fcf88e", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688466019, + "narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixpak", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1693611461, + "narHash": "sha256-aPODl8vAgGQ0ZYFIRisxYG5MOGSkIczvu2Cd8Gb9+1Y=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "7f53fdb7bdc5bb237da7fefef12d099e4fd611ca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { + "inputs": { + "nixpkgs-lib": [ + "nixpak", + "hercules-ci-effects", + "hercules-ci-agent", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1688466019, + "narHash": "sha256-VeM2akYrBYMsb4W/MmBo1zmaMfgbL4cH3Pu8PGyIwJ0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "8e8d955c22df93dbe24f19ea04f47a74adbdc5ec", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1692799911, + "narHash": "sha256-3eihraek4qL744EvQXsK1Ha6C3CR7nnT8X2qWap4RNk=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "f9e7cf818399d17d347f847525c5a5a8032e4e44", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1689068808, + "narHash": "sha256-6ixXo3wt24N/melDWjq70UuHQLxGV8jZvooRanIHXw0=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "919d646de7be200f3bf08cb76ae1f09402b6f9b4", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "lanzaboote", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1684780604, + "narHash": "sha256-2uMZsewmRn7rRtAnnQNw1lj0uZBMh4m6Cs/7dV5YF08=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "74210fa80a49f1b6f67223debdbf1494596ff9f2", + "type": "github" + }, + "original": { + "owner": "srid", + "ref": "0.3.0", + "repo": "haskell-flake", + "type": "github" + } + }, + "hercules-ci-agent": { + "inputs": { + "flake-parts": "flake-parts_3", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1688568579, + "narHash": "sha256-ON0M56wtY/TIIGPkXDlJboAmuYwc73Hi8X9iJGtxOhM=", + "owner": "hercules-ci", + "repo": "hercules-ci-agent", + "rev": "367dd8cd649b57009a6502e878005a1e54ad78c5", + "type": "github" + }, + "original": { + "id": "hercules-ci-agent", + "type": "indirect" + } + }, + "hercules-ci-effects": { + "inputs": { + "flake-parts": [ + "nixpak", + "flake-parts" + ], + "hercules-ci-agent": "hercules-ci-agent", + "nixpkgs": [ + "nixpak", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1689397210, + "narHash": "sha256-fVxZnqxMbsDkB4GzGAs/B41K0wt/e+B/fLxmTFF/S20=", + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "rev": "0a63bfa3f00a3775ea3a6722b247880f1ffe91ce", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "hercules-ci-effects", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694643239, + "narHash": "sha256-pv2k/5FvyirDE8g4TNehzwZ0T4UOMMmqWSQnM/luRtE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "d9b88b43524db1591fb3d9410a21428198d75d49", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hosts": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694737722, + "narHash": "sha256-NWu6K+fXrTxXBffHtrtleLjaB0vvQmbp7SPbIj8wQFI=", + "owner": "StevenBlack", + "repo": "hosts", + "rev": "f91afbf85c34a491b25ba556db7d319ca96582fc", + "type": "github" + }, + "original": { + "owner": "StevenBlack", + "repo": "hosts", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "hyprland-protocols": "hyprland-protocols", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_2", + "wlroots": "wlroots", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1694972891, + "narHash": "sha256-FBRMYwZDHlQZdO6nhEu6vitrt+m0WpC60TKwZxLvv5U=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "b0a82c04dfc3f08183d68318a1d0eb4001c99559", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1691753796, + "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "lanzaboote": { + "inputs": { + "crane": "crane", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts", + "flake-utils": "flake-utils_2", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "rust-overlay": "rust-overlay" + }, + "locked": { + "lastModified": 1694697985, + "narHash": "sha256-tAa0pyDOazvMfEjDhajcyLadu5a3euSMzzwia37J8x8=", + "owner": "nix-community", + "repo": "lanzaboote", + "rev": "7f92dd1e7b0ff92c65856cd9015f651c151f0229", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "lanzaboote", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694810318, + "narHash": "sha256-LuvrVj2oj9TzdnnwtQUClqcXjpgwCP01FFVBM7azGV8=", + "owner": "LnL7", + "repo": "nix-darwin", + "rev": "80bb201f4925cdda5a7a3c7b1900fb26bb2af2e8", + "type": "github" + }, + "original": { + "owner": "LnL7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixos-hardware": { + "locked": { + "lastModified": 1694710316, + "narHash": "sha256-uRh46iIC86D8BD1wCDA5gRrt+hslUXiD0kx/UjnjBcs=", + "owner": "NixOS", + "repo": "nixos-hardware", + "rev": "570256327eb6ca6f7bebe8d93af49459092a0c43", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "master", + "repo": "nixos-hardware", + "type": "github" + } + }, + "nixpak": { + "inputs": { + "flake-parts": "flake-parts_2", + "hercules-ci-effects": "hercules-ci-effects", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694664321, + "narHash": "sha256-NLuFP5JW2LRJTUg0zpeYXS14KjtrgTpFdhH0T7YqEpc=", + "owner": "nixpak", + "repo": "nixpak", + "rev": "9dd948303ea4c7d531e0775146b1b7fd969994c9", + "type": "github" + }, + "original": { + "owner": "nixpak", + "repo": "nixpak", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1688322751, + "narHash": "sha256-eW62dC5f33oKZL7VWlomttbUnOTHrAbte9yNUNW8rbk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0fbe93c5a7cac99f90b60bdf5f149383daaa615f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { + "locked": { + "lastModified": 1693675694, + "narHash": "sha256-2pIOyQwGyy2FtFAUIb8YeKVmOCcPOTVphbAvmshudLE=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "5601118d39ca9105f8e7b39d4c221d3388c0419d", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "release-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1694767346, + "narHash": "sha256-5uH27SiVFUwsTsqC5rs3kS7pBoNhtoy9QfTP9BmknGk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ace5093e36ab1e95cb9463863491bee90d5a4183", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nvfetcher": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": "flake-utils", + "nixpkgs": [ + "berberman", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1693539235, + "narHash": "sha256-ACmCq1+RnVq+EB7yeN6fThUR3cCJZb6lKEfv937WG84=", + "owner": "berberman", + "repo": "nvfetcher", + "rev": "2bcf73dea96497ac9c36ed320b457caa705f9485", + "type": "github" + }, + "original": { + "owner": "berberman", + "repo": "nvfetcher", + "type": "github" + } + }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": [ + "lanzaboote", + "flake-compat" + ], + "flake-utils": [ + "lanzaboote", + "flake-utils" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1689668210, + "narHash": "sha256-XAATwDkaUxH958yXLs1lcEOmU6pSEIkatY3qjqk8X0E=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "eb433bff05b285258be76513add6f6c57b441775", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "berberman": "berberman", + "home-manager": "home-manager", + "hosts": "hosts", + "hyprland": "hyprland", + "lanzaboote": "lanzaboote", + "nix-darwin": "nix-darwin", + "nixos-hardware": "nixos-hardware", + "nixpak": "nixpak", + "nixpkgs": "nixpkgs_2", + "sops-nix": "sops-nix" + } + }, + "rust-overlay": { + "inputs": { + "flake-utils": [ + "lanzaboote", + "flake-utils" + ], + "nixpkgs": [ + "lanzaboote", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1694657451, + "narHash": "sha256-cRZa9ZmUi0EFKcmzpsOXLVhiMQD8XLrku8v+U1YiGm8=", + "owner": "oxalica", + "repo": "rust-overlay", + "rev": "7c4f46f0b3597e3c4663285e6794194e55574879", + "type": "github" + }, + "original": { + "owner": "oxalica", + "repo": "rust-overlay", + "type": "github" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable_2" + }, + "locked": { + "lastModified": 1694495315, + "narHash": "sha256-sZEYXs9T1NVHZSSbMqBEtEm2PGa7dEDcx0ttQkArORc=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "ea208e55f8742fdcc0986b256bdfa8986f5e4415", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "wlroots": { + "flake": false, + "locked": { + "host": "gitlab.freedesktop.org", + "lastModified": 1694302348, + "narHash": "sha256-S9NOc88L/1jpNKJqBu2Hihvn0V1HHCK2hXE4bNBAStg=", + "owner": "wlroots", + "repo": "wlroots", + "rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211", + "type": "gitlab" + }, + "original": { + "host": "gitlab.freedesktop.org", + "owner": "wlroots", + "repo": "wlroots", + "rev": "65bbbbbf0c3d6844cee3c4e294d0ba07e1f82211", + "type": "gitlab" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1694628480, + "narHash": "sha256-Qg9hstRw0pvjGu5hStkr2UX1D73RYcQ9Ns/KnZMIm9w=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "8f45a6435069b9e24ebd3160eda736d7a391cbf2", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100755 index 0000000..f1adcab --- /dev/null +++ b/flake.nix @@ -0,0 +1,193 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + berberman = { + url = "github:berberman/flakes"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hosts = { + url = "github:StevenBlack/hosts"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprland = { + url = "github:hyprwm/Hyprland"; + inputs.nixpkgs.follows = "nixpkgs"; # MESA/OpenGL HW workaround + }; + lanzaboote = { + url = "github:nix-community/lanzaboote"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nix-darwin = { + url = "github:LnL7/nix-darwin"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixos-hardware = { + url = "github:NixOS/nixos-hardware/master"; + #inputs.nixpkgs.follows = "nixpkgs"; + }; + nixpak = { + url = "github:nixpak/nixpak"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, berberman, home-manager, hosts, hyprland, lanzaboote, nix-darwin, sops-nix, ... } @ inputs: { + darwinConfigurations = { + "iMac-macOS" = nix-darwin.lib.darwinSystem { + system = "x86_64-darwin"; + modules = [ + ./hosts/darwin/imac-2017.nix + + home-manager.darwinModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.guanranwang = import ./flakes/home-manager/darwin/home.nix; + } + ]; + }; + }; + + + + + nixosConfigurations = { + "81fw-nixos" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/81fw-lenovo-legion-y7000.nix + + # Overlays + { + nixpkgs.overlays = [ + berberman.overlays.default + ]; + } + + lanzaboote.nixosModules.lanzaboote + ({ pkgs, lib, ... }: + { + environment.systemPackages = with pkgs; [ sbctl ]; + boot.loader.systemd-boot.enable = lib.mkForce false; + boot.lanzaboote = { + enable = true; + pkiBundle = "/etc/secureboot"; + }; + }) + + home-manager.nixosModules.home-manager + ({ lib, ... }: + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.guanranwang = import ./flakes/home-manager/guanranwang/nixos; + + extraSpecialArgs = { inherit inputs; }; # ??? isnt specialArgs imported by default ??? + }; + # fcitx, use kde kcm + systemd.user.services.fcitx5-daemon.enable = lib.mkForce false; + }) + + hosts.nixosModule + { + networking.stevenBlackHosts = { + enable = true; + blockFakenews = true; + blockGambling = true; + blockPorn = true; + blockSocial = true; + }; + } + + sops-nix.nixosModules.sops + { + sops = { + defaultSopsFile = ./secrets/secrets.yaml; + age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; + secrets = { + "clash-config" = { mode = "0444"; }; # readable + }; + }; + } + ]; + }; + + "imac-nixos" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ + ./hosts/imac-2017.nix + + home-manager.nixosModules.home-manager + { + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + users.guanranwang = import ./flakes/home-manager/guanranwang/nixos; + }; + } + + hosts.nixosModule + { + networking.stevenBlackHosts = { + enable = true; + blockFakenews = true; + blockGambling = true; + blockPorn = true; + blockSocial = true; + }; + } + ]; + }; + }; + + + + # Home-Manager + homeConfigurations = { + "guanranwang@81fw-nixos" = home-manager.lib.homeManagerConfiguration { + modules = [ + sops-nix.homeManagerModules.sops + + hyprland.homeManagerModules.default + { + wayland.windowManager.hyprland = { + enable = true; + #enableNvidiaPatches = true; + xwayland = { + enable = true; + }; + }; + } + ]; + }; + + "guanranwang@imac-nixos" = home-manager.lib.homeManagerConfiguration { + modules = [ + sops-nix.homeManagerModules.sops + + hyprland.homeManagerModules.default + { + wayland.windowManager.hyprland = { + enable = true; + #enableNvidiaPatches = true; + xwayland = { + enable = true; + }; + }; + } + ]; + }; + }; + }; +} diff --git a/flakes/darwin/main.nix b/flakes/darwin/main.nix new file mode 100644 index 0000000..afb2827 --- /dev/null +++ b/flakes/darwin/main.nix @@ -0,0 +1,46 @@ +{ lib, pkgs, ... }: + +{ + imports = [ + ./networking + ./packages + ./users + ]; + + fonts.fonts = with pkgs; [ + (nerdfonts.override { fonts = [ "FiraCode" "JetBrainsMono" ]; }) + ]; + + # Allow unfree applications + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ + #"vscode" + "spotify" + "keka" # i thought it was opensource + ]; + + # List packages installed in system profile. To search by name, run: + # $ nix-env -qaP | grep wget + environment.systemPackages = with pkgs; [ + #neovim + #vscode + ]; + + # Auto upgrade nix package and the daemon service. + services.nix-daemon.enable = true; + nix.package = pkgs.nix; + + # Necessary for using flakes on this system. + #nix.settings.experimental-features = "nix-command flakes"; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Create /etc/zshrc that loads the nix-darwin environment. + programs.zsh.enable = true; # default shell on catalina + programs.fish.enable = true; + + # Set Git commit hash for darwin-version. + #system.configurationRevision = self.rev or self.dirtyRev or null; + + # Used for backwards compatibility, please read the changelog before changing. + # $ darwin-rebuild changelog + system.stateVersion = 4; +} \ No newline at end of file diff --git a/flakes/darwin/networking/default.nix b/flakes/darwin/networking/default.nix new file mode 100644 index 0000000..0bbacfc --- /dev/null +++ b/flakes/darwin/networking/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./dns.nix + ]; +} \ No newline at end of file diff --git a/flakes/darwin/networking/dns.nix b/flakes/darwin/networking/dns.nix new file mode 100644 index 0000000..7f77695 --- /dev/null +++ b/flakes/darwin/networking/dns.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + # please configure `networking.knownNetworkServices` in ../hosts/your-machine.nix + networking.dns = [ + "223.5.5.5" + "223.6.6.6" + "2400:3200::1" + "2400:3200:baba::1" + #"223.5.5.5#dns.alidns.com" + #"223.6.6.6#dns.alidns.com" + #"2400:3200::1#dns.alidns.com" + #"2400:3200:baba::1#dns.alidns.com" + #"8.8.8.8" + #"8.8.4.4" + #"2001:4860:4860::8888" + #"2001:4860:4860::8844" + ]; +} \ No newline at end of file diff --git a/flakes/darwin/packages/default.nix b/flakes/darwin/packages/default.nix new file mode 100644 index 0000000..3d76458 --- /dev/null +++ b/flakes/darwin/packages/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./homebrew.nix + ]; +} \ No newline at end of file diff --git a/flakes/darwin/packages/homebrew.nix b/flakes/darwin/packages/homebrew.nix new file mode 100644 index 0000000..a842b13 --- /dev/null +++ b/flakes/darwin/packages/homebrew.nix @@ -0,0 +1,38 @@ +{ ... }: + +{ + homebrew = { + enable = true; + brews = [ + "fastfetch" # fastfetch is broken in nixpkgs + + "yabai" # b3z/small + ]; + casks = [ + #"alacritty" + #"android-platform-tools" + #"yesplaymusic" + #"vscodium" + + "alt-tab" + "altserver" + "balenaetcher" + "clashx" + "opencore-patcher" + + #"element" + "telegram" + + "librewolf" + "google-chrome" + + "steam" + + "activate" # koekeishiya/formulae + ]; + taps = [ + "b3z/small" # activate + "koekeishiya/formulae" # yabai + ]; + }; +} \ No newline at end of file diff --git a/flakes/darwin/users/default.nix b/flakes/darwin/users/default.nix new file mode 100644 index 0000000..8089f80 --- /dev/null +++ b/flakes/darwin/users/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./guanranwang.nix + ]; +} \ No newline at end of file diff --git a/flakes/darwin/users/guanranwang.nix b/flakes/darwin/users/guanranwang.nix new file mode 100644 index 0000000..abd863e --- /dev/null +++ b/flakes/darwin/users/guanranwang.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + users.users.guanranwang = { + createHome = true; + description = "Guanran Wang"; + home = "/Users/guanranwang"; + shell = pkgs.fish; + }; +} \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/.drirc b/flakes/home-manager/guanranwang/common/dotfiles/.drirc new file mode 100644 index 0000000..3925bcf --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/.drirc @@ -0,0 +1,7 @@ + + + + + + diff --git a/flakes/home-manager/guanranwang/common/dotfiles/.xinitrc b/flakes/home-manager/guanranwang/common/dotfiles/.xinitrc new file mode 100644 index 0000000..9b82f2f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/.xinitrc @@ -0,0 +1,49 @@ +#!/bin/sh + +# +# X init RC config (for bspwm) +# ~/.xinitrc +# + +userresources=$HOME/.Xresources +usermodmap=$HOME/.Xmodmap +sysresources=/etc/X11/xinit/.Xresources +sysmodmap=/etc/X11/xinit/.Xmodmap + +export GTK_IM_MODULE=fcitx +export QT_IM_MODULE=fcitx +export XMODIFIERS=@im=@fcitx +export SDL_IM_MOODULE=fcitx +export GLFW_IM_MODULE=ibus + +export MOZ_ENABLE_XINPUT2=1 +#export QT_STYLE_OVERWRITE=Adwaita-dark +#export GAMEMODERUNEXEC="env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_ONLY" + +# merge in defaults and keymaps +if [ -f $sysresources ]; then + xrdb -merge $sysresources +fi + +if [ -f $sysmodmap ]; then + xmodmap $sysmodmap +fi + +if [ -f "$userresources" ]; then + xrdb -merge "$userresources" + +fi + +if [ -f "$usermodmap" ]; then + xmodmap "$usermodmap" +fi + +# start some nice programs +if [ -d /etc/X11/xinit/xinitrc.d ] ; then + for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do + [ -x "$f" ] && . "$f" + done + unset f +fi + +exec bspwm diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/batterynotify b/flakes/home-manager/guanranwang/common/dotfiles/bin/batterynotify new file mode 100755 index 0000000..5117e99 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/batterynotify @@ -0,0 +1,33 @@ +#!/bin/sh + +# Send a notification if the laptop battery is either low +# or is fully charged. + +export DISPLAY=:0 +export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" + +# Battery percentage at which to notify +WARNING_LEVEL=20 +BATTERY_DISCHARGING=$(acpi -b | grep "Battery 0" | grep -c "Discharging") +BATTERY_LEVEL=$(acpi -b | grep "Battery 0" | grep -P -o '[0-9]+(?=%)') + +# Use two files to store whether we've shown a notification or not (to prevent multiple notifications) +EMPTY_FILE=/tmp/batteryempty +FULL_FILE=/tmp/batteryfull + +# Reset notifications if the computer is charging/discharging +if [ "$BATTERY_DISCHARGING" -eq 1 ] && [ -f $FULL_FILE ]; then + rm $FULL_FILE +elif [ "$BATTERY_DISCHARGING" -eq 0 ] && [ -f $EMPTY_FILE ]; then + rm $EMPTY_FILE +fi + +# If the battery is charging and is full (and has not shown notification yet) +if [ "$BATTERY_LEVEL" -gt 95 ] && [ "$BATTERY_DISCHARGING" -eq 0 ] && [ ! -f $FULL_FILE ]; then + notify-send "Battery Charged" "Battery is fully charged." -i "battery" -r 9991 + touch $FULL_FILE +# If the battery is low and is not charging (and has not shown notification yet) +elif [ "$BATTERY_LEVEL" -le $WARNING_LEVEL ] && [ "$BATTERY_DISCHARGING" -eq 1 ] && [ ! -f $EMPTY_FILE ]; then + notify-send "Low Battery" "${BATTERY_LEVEL}% of battery remaining." -u critical -i "battery-alert" -r 9991 + touch $EMPTY_FILE +fi diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/chargingnotify b/flakes/home-manager/guanranwang/common/dotfiles/bin/chargingnotify new file mode 100755 index 0000000..e884f4a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/chargingnotify @@ -0,0 +1,23 @@ +#!/bin/sh + +# Send a notification displaying that the battery is charging or discharging +# Pass 1 as an argument for charging, 0 for discharging +# Example usage: chargingnotify 1 + +# Check if argument is passed +[ $# != 1 ] && printf '0 or 1 must be passed as an argument.\nUsage: %s 0|1\n' "$0" && exit + +export XAUTHORITY=/home/guanranwang/.Xauthority +export DISPLAY=:0 +export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus" + +BATTERY_CHARGING=$1 +BATTERY_LEVEL=$(acpi -b | grep "Battery 0" | grep -P -o '[0-9]+(?=%)') + +# Send notifications +if [ "$BATTERY_CHARGING" -eq 1 ]; then + notify-send "Charging" "${BATTERY_LEVEL}% of battery charged." -u low -i "battery-charging" -t 5000 -r 9991 +elif [ "$BATTERY_CHARGING" -eq 0 ]; then + notify-send "Discharging" "${BATTERY_LEVEL}% of battery remaining." -u low -i "battery" -t 5000 -r 9991 +fi + diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/font-inter b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-inter new file mode 100755 index 0000000..daa7eba --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-inter @@ -0,0 +1,5 @@ +#!/bin/sh + +gsettings set org.gnome.desktop.interface font-name 'Inter' +gsettings set org.gnome.desktop.interface document-font-name 'Inter' +gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font' diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/font-noto-sans b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-noto-sans new file mode 100755 index 0000000..889902f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-noto-sans @@ -0,0 +1,5 @@ +#!/bin/sh + +gsettings set org.gnome.desktop.interface font-name 'Noto Sans' +gsettings set org.gnome.desktop.interface document-font-name 'Noto Sans' +gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font' diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/font-torus b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-torus new file mode 100755 index 0000000..0afc5d2 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/font-torus @@ -0,0 +1,5 @@ +#!/bin/sh + +gsettings set org.gnome.desktop.interface font-name 'Torus' +gsettings set org.gnome.desktop.interface document-font-name 'Torus' +gsettings set org.gnome.desktop.interface monospace-font-name 'JetBrainsMono Nerd Font' diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-autostart b/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-autostart new file mode 100755 index 0000000..9c36c43 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-autostart @@ -0,0 +1,14 @@ +#!/bin/sh + +# +# Script for Hyprland +# ~/.local/share/bin/hyprland-cleanup +# + +hyprctl keyword windowrule "workspace 1 silent, alacritty" +hyprctl keyword windowrule "workspace 2 silent, firefox" +/usr/bin/alacritty & +/usr/bin/flatpak run com.google.Chrome & +sleep 5 +hyprctl keyword windowrule "workspace unset, alacritty" +hyprctl keyword windowrule "workspace unset, firefox" diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-gamemode b/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-gamemode new file mode 100755 index 0000000..1ea8d7a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/hyprland-gamemode @@ -0,0 +1,15 @@ +#!/bin/sh + +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==2{print $2}') +if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:drop_shadow 0;\ + keyword decoration:blur 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 2;\ + keyword decoration:rounding 0" + exit +fi +hyprctl reload diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/lofi b/flakes/home-manager/guanranwang/common/dotfiles/bin/lofi new file mode 100755 index 0000000..7b00f85 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/lofi @@ -0,0 +1,109 @@ +#!/bin/sh + +# i forgot where did i found this script, wasnt made by me + +command -v mpv &>/dev/null || { echo "Error: mpv is not installed." && exit 1; } + +# should work unless the link has been changed/ended/taken down... +declare -A urls=( + ["study"]="https://youtu.be/jfKfPfyJRdk" + ["chill"]="https://youtu.be/rUxyKA_-grg" + ["game"]="https://youtu.be/MVPTGNGiI-4" + ["fcc"]="https://coderadio-relay-ffm.freecodecamp.org/radio/8010/radio.mp3" +) + +declare -A messages=( + ["study"]="Playing lofi hip hop radio - beats to relax/study to" + ["chill"]="Playing lofi hip hop radio - beats to sleep/chill to" + ["game"]="Playing synthwave radio - beats to chill/game to" + ["fcc"]="Playing freeCodeCamp code Radio" +) + +usage() { + cat <= 22 && hour < 6)); then + set_station "chill" + elif ((hour >= 6 && hour < 12)); then + set_station "study" + elif ((hour >= 18 && hour < 22)); then + set_station "game" + else + set_station "fcc" + fi +} + +main() { + local url + local video=false + if [[ $# -eq 0 ]]; then + set_station_based_on_time_of_the_day + else + while [[ $# -gt 0 ]]; do + case $1 in + -s | --study | relax | study) + set_station "study" + shift + ;; + -c | --chill | sleep | chill) + set_station "chill" + shift + ;; + -g | --game | synthwave | game) + set_station "game" + shift + ;; + -f | --fcc | code | fcc) + set_station "fcc" + shift + ;; + -r | --random) + random_station_name=$(shuf -n 1 -e "${!urls[@]}") + set_station "$random_station_name" + shift + ;; + -v | --video) + video=true + shift + ;; + -h | --help) + usage + exit 0 + ;; + *) + echo "Unknown option: $1" >&2 + usage + exit 1 + ;; + esac + done + fi + + echo "${messages[$station_name]}..." + + if $video; then + mpv "$url" + else + mpv --no-video "$url" + fi +} + +main "$@" diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/minecraft-inputfix b/flakes/home-manager/guanranwang/common/dotfiles/bin/minecraft-inputfix new file mode 100755 index 0000000..d65cf41 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/minecraft-inputfix @@ -0,0 +1,7 @@ +#!/bin/sh + +ydotool key 20:1 20:0 # press t +echo $(zenity --width 500 --entry) | wl-copy +ydotool key 29:1 47:1 # press ctrl + v +sleep 0.1 +ydotool key 29:0 47:0 28:1 28:0 # release ctrl + v, press return diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/update-hosts b/flakes/home-manager/guanranwang/common/dotfiles/bin/update-hosts new file mode 100755 index 0000000..810a539 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/update-hosts @@ -0,0 +1,3 @@ +#!/bin/sh + +sudo wget -O /etc/hosts https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-brightnessctl b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-brightnessctl new file mode 100755 index 0000000..a3a1180 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-brightnessctl @@ -0,0 +1,19 @@ +#!/bin/sh + +# Original Script: https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/changebrightness + +send_notification() { + brightness=$((($(brightnessctl get) / 240))) + dunstify -a "changebrightness" -u low -r 9991 -h int:value:"$brightness" -i "brightness-$1" "Brightness: $brightness%" -t 2000 +} + +case $1 in +up) + brightnessctl set +5% + send_notification "$1" + ;; +down) + brightnessctl set 5%- + send_notification "$1" + ;; +esac diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-mpvpaper b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-mpvpaper new file mode 100755 index 0000000..edd9fef --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-mpvpaper @@ -0,0 +1,6 @@ +#!/bin/sh + +# this is kinda dumb too + +pkill mpvpaper +mpvpaper -o "loop no-audio" "*" "$1" diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-pamixer b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-pamixer new file mode 100755 index 0000000..ed5c3d7 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-pamixer @@ -0,0 +1,32 @@ +#!/bin/sh + +# Original Script: https://github.com/ericmurphyxyz/dotfiles/blob/master/.local/bin/changebrightness + +# Increment, decrement, or mute the volume and send a notification +# of the current volume level. + + +case $1 in +down) + # Set the volume on (if it was muted) + pamixer -u + pamixer -d 5 # --allow-boost + volume=$(pamixer --get-volume) + dunstify -a "changevolume" -u low -r 9993 -h int:value:"$volume" -i "volume-minus" "Volume: ${volume}%" -t 2000 + ;; +up) + pamixer -u + pamixer -i 5 # --allow-boost + volume=$(pamixer --get-volume) + dunstify -a "changevolume" -u low -r 9993 -h int:value:"$volume" -i "volume-plus" "Volume: ${volume}%" -t 2000 + ;; +mute) + pamixer -t + if eval "$(pamixer --get-mute)"; then + dunstify -a "changevolume" -u low -r 9993 -u low -i "volume-mute" "Muted" -t 2000 + else + volume=$(pamixer --get-volume) + dunstify -a "changevolume" -u low -r 9993 -h int:value:"$volume" -i "volume-high" "Volume: ${volume}%" -t 2000 + fi + ;; +esac diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-slurp b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-slurp new file mode 100755 index 0000000..cf00d8b --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-slurp @@ -0,0 +1,56 @@ +#!/bin/sh + +# Original script based on some early version of https://github.com/moverest/sway-interactive-screenshot +# modified for use with key bindings. For now supports sway & Hyprland. + +SWAY=$(echo "$SWAYSOCK") +HYPR=$(echo "$HYPRLAND_INSTANCE_SIGNATURE") +if [[ -n "$SWAY" && -n "$HYPR" ]]; then + echo "This script only works on sway or Hyprland, terminating."; + exit 1 +fi + +list_geometry() +{ + swaymsg -t get_tree | jq -r '.. | try select(.'"$1"' and .pid) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)''"' +} + +list_geometry_hypr() +{ + hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])''"' +} + +CHOICE=$1 +EDIT=$2 +DIR=${SCREENSHOT_DIR:=~/Pictures/Screenshots} + +mkdir -p "$DIR" + +if [[ -n "$SWAY" ]]; then + FOCUSED=$(list_geometry focused) + FILENAME="${DIR/#\~/$HOME}/$(date +'%Y-%m-%d-%H%M%S_sway_screenshot.png')" + case $CHOICE in + fullscreen) grim "$FILENAME" ;; + region) grim -g "$(slurp)" "$FILENAME" ;; + focused) grim -g "$FOCUSED" "$FILENAME" ;; + display) grim -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" "$FILENAME" ;; + esac +fi + +if [[ -n "$HYPR" ]]; then + FOCUSED=$(list_geometry_hypr) + FILENAME="${DIR/#\~/$HOME}/$(date +'%Y-%m-%d-%H%M%S_hypr_screenshot.png')" + case $CHOICE in + fullscreen) grim "$FILENAME" ;; + region) grim -g "$(slurp)" "$FILENAME" ;; + focused) grim -g "$FOCUSED" "$FILENAME" ;; + display) grim -o "$(hyprctl -j monitors | jq -r '.[] | select(.focused) | .name')" "$FILENAME" ;; + esac +fi + +wl-copy < "$FILENAME" +notify-send "Screenshot" "File saved as '$FILENAME' and copied to the clipboard." -i "$FILENAME" + +if [[ "$EDIT" = "edit" ]]; then + swappy -f "$FILENAME" +fi diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swaylock-effects b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swaylock-effects new file mode 100755 index 0000000..1480043 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swaylock-effects @@ -0,0 +1,3 @@ +#!/bin/sh + +pidof swaylock || swaylock --screenshots --clock --indicator --line-color cdd6f4ff --text-color cdd6f4ff --inside-color 1e1e2eff --ring-color 313244ff --line-ver-color cdd6f4ff --text-ver-color cdd6f4ff --inside-ver-color 1e1e2eff --ring-ver-color 313244ff --line-clear-color cdd6f4ff --text-clear-color cdd6f4ff --inside-clear-color 1e1e2eff --ring-clear-color 313244ff --line-clear-color cdd6f4ff --text-wrong-color 313244ff --inside-wrong-color f38ba8ff --ring-wrong-color 313244ff --key-hl-color cba6f7ff --effect-blur 7x5 --effect-vignette 0.5:0.5 --fade-in 0.2 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swww b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swww new file mode 100755 index 0000000..5be06e3 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-swww @@ -0,0 +1,11 @@ +#!/bin/sh + +# fuck this is so dumb + +XPOS=$((hyprctl cursorpos) | awk '{print $1}') +YPOS=$(((1080-"$(hyprctl cursorpos | awk '{print $2}')"))) + +#echo $XPOS $YPOS + +pkill mpvpaper +swww img --transition-type grow --transition-pos "$XPOS $YPOS" --transition-fps 60 --transition-duration 1 "$1" diff --git a/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-wayshot b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-wayshot new file mode 100755 index 0000000..b356c25 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/bin/wrapped-wayshot @@ -0,0 +1,56 @@ +#!/bin/sh + +# Original script based on some early version of https://github.com/moverest/sway-interactive-screenshot +# modified for use with key bindings. For now supports sway & Hyprland. + +SWAY=$(echo "$SWAYSOCK") +HYPR=$(echo "$HYPRLAND_INSTANCE_SIGNATURE") +if [[ -n "$SWAY" && -n "$HYPR" ]]; then + echo "This script only works on sway or Hyprland, terminating."; + exit 1 +fi + +list_geometry() +{ + swaymsg -t get_tree | jq -r '.. | try select(.'"$1"' and .pid) | "\(.rect.x),\(.rect.y) \(.rect.width)x\(.rect.height)''"' +} + +list_geometry_hypr() +{ + hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])''"' +} + +CHOICE=$1 +EDIT=$2 +DIR=${SCREENSHOT_DIR:=~/Pictures/Screenshots} + +mkdir -p "$DIR" + +if [[ -n "$SWAY" ]]; then + FOCUSED=$(list_geometry focused) + FILENAME="${DIR/#\~/$HOME}/$(date +'%Y-%m-%d-%H%M%S_sway_screenshot.png')" + case $CHOICE in + fullscreen) wayshot -f "$FILENAME" ;; + region) wayshot -s "$(slurp)" -f "$FILENAME" ;; + focused) wayshot -s "$FOCUSED" -f "$FILENAME" ;; + display) wayshot -o "$(swaymsg -t get_outputs | jq -r '.[] | select(.focused) | .name')" -f "$FILENAME" ;; + esac +fi + +if [[ -n "$HYPR" ]]; then + FOCUSED=$(list_geometry_hypr) + FILENAME="${DIR/#\~/$HOME}/$(date +'%Y-%m-%d-%H%M%S_hypr_screenshot.png')" + case $CHOICE in + fullscreen) wayshot -f "$FILENAME" ;; + region) wayshot -s "$(slurp)" -f "$FILENAME" ;; + focused) wayshot -s "$FOCUSED" -f "$FILENAME" ;; + display) wayshot -o "$(hyprctl -j monitors | jq -r '.[] | select(.focused) | .name')" "$FILENAME" ;; + esac +fi + +wl-copy < "$FILENAME" +notify-send "Screenshot" "File saved as '$FILENAME' and copied to the clipboard." -i "$FILENAME" + +if [[ "$EDIT" = "edit" ]]; then + swappy -f "$FILENAME" +fi diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/catppuccin b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/catppuccin new file mode 160000 index 0000000..1c5a013 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/catppuccin @@ -0,0 +1 @@ +Subproject commit 1c5a013e5ff13061126af92c667b47d5f9b5013c diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_day.yml b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_day.yml new file mode 100644 index 0000000..11362fe --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_day.yml @@ -0,0 +1,32 @@ +# TokyoNight Alacritty Colors +colors: + # Default colors + primary: + background: '0xe1e2e7' + foreground: '0x3760bf' + + # Normal colors + normal: + black: '0xe9e9ed' + red: '0xf52a65' + green: '0x587539' + yellow: '0x8c6c3e' + blue: '0x2e7de9' + magenta: '0x9854f1' + cyan: '0x007197' + white: '0x6172b0' + + # Bright colors + bright: + black: '0xa1a6c5' + red: '0xf52a65' + green: '0x587539' + yellow: '0x8c6c3e' + blue: '0x2e7de9' + magenta: '0x9854f1' + cyan: '0x007197' + white: '0x3760bf' + + indexed_colors: + - { index: 16, color: '0xb15c00' } + - { index: 17, color: '0xc64343' } \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_moon.yml b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_moon.yml new file mode 100644 index 0000000..f144df8 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_moon.yml @@ -0,0 +1,32 @@ +# TokyoNight Alacritty Colors +colors: + # Default colors + primary: + background: '0x222436' + foreground: '0xc8d3f5' + + # Normal colors + normal: + black: '0x1b1d2b' + red: '0xff757f' + green: '0xc3e88d' + yellow: '0xffc777' + blue: '0x82aaff' + magenta: '0xc099ff' + cyan: '0x86e1fc' + white: '0x828bb8' + + # Bright colors + bright: + black: '0x444a73' + red: '0xff757f' + green: '0xc3e88d' + yellow: '0xffc777' + blue: '0x82aaff' + magenta: '0xc099ff' + cyan: '0x86e1fc' + white: '0xc8d3f5' + + indexed_colors: + - { index: 16, color: '0xff966c' } + - { index: 17, color: '0xc53b53' } \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_night.yml b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_night.yml new file mode 100644 index 0000000..1d1609f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_night.yml @@ -0,0 +1,32 @@ +# TokyoNight Alacritty Colors +colors: + # Default colors + primary: + background: '0x1a1b26' + foreground: '0xc0caf5' + + # Normal colors + normal: + black: '0x15161e' + red: '0xf7768e' + green: '0x9ece6a' + yellow: '0xe0af68' + blue: '0x7aa2f7' + magenta: '0xbb9af7' + cyan: '0x7dcfff' + white: '0xa9b1d6' + + # Bright colors + bright: + black: '0x414868' + red: '0xf7768e' + green: '0x9ece6a' + yellow: '0xe0af68' + blue: '0x7aa2f7' + magenta: '0xbb9af7' + cyan: '0x7dcfff' + white: '0xc0caf5' + + indexed_colors: + - { index: 16, color: '0xff9e64' } + - { index: 17, color: '0xdb4b4b' } \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_storm.yml b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_storm.yml new file mode 100644 index 0000000..903bf50 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alacritty/tokyonight/tokyonight_storm.yml @@ -0,0 +1,32 @@ +# TokyoNight Alacritty Colors +colors: + # Default colors + primary: + background: '0x24283b' + foreground: '0xc0caf5' + + # Normal colors + normal: + black: '0x1d202f' + red: '0xf7768e' + green: '0x9ece6a' + yellow: '0xe0af68' + blue: '0x7aa2f7' + magenta: '0xbb9af7' + cyan: '0x7dcfff' + white: '0xa9b1d6' + + # Bright colors + bright: + black: '0x414868' + red: '0xf7768e' + green: '0x9ece6a' + yellow: '0xe0af68' + blue: '0x7aa2f7' + magenta: '0xbb9af7' + cyan: '0x7dcfff' + white: '0xc0caf5' + + indexed_colors: + - { index: 16, color: '0xff9e64' } + - { index: 17, color: '0xdb4b4b' } \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/alsoft.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/alsoft.conf new file mode 100644 index 0000000..3fff71f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/alsoft.conf @@ -0,0 +1 @@ +hrtf = true diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/clash/metacubexd b/flakes/home-manager/guanranwang/common/dotfiles/config/clash/metacubexd new file mode 160000 index 0000000..d33141c --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/clash/metacubexd @@ -0,0 +1 @@ +Subproject commit d33141ce58fae07c5b040acaf745e9dc1e1c46e5 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/clash/yacd b/flakes/home-manager/guanranwang/common/dotfiles/config/clash/yacd new file mode 160000 index 0000000..1cc1556 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/clash/yacd @@ -0,0 +1 @@ +Subproject commit 1cc15568c4136fa1dc4452eb77d8855e20f809cf diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/dunst/dunstrc b/flakes/home-manager/guanranwang/common/dotfiles/config/dunst/dunstrc new file mode 100755 index 0000000..04b671f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/dunst/dunstrc @@ -0,0 +1,57 @@ +# +# Dunst config +# ~/.config/dunst/dunstrc +# modified from https://github.com/end-4/dots-hyprland/blob/main/.config/dunst/dunstrc +# + +[global] +follow = mouse +geometry = "280x50-20+90" +indicate_hidden = no +separator_height = 2 +separator_color = yes +padding = 12 +horizontal_padding = 12 +frame_width = 2 +font = Monospace 10 +line_height = 4 +markup = full +format = "%s\n%b" +alignment = left +show_age_threshold = 60 +word_wrap = yes +ignore_newline = no +stack_duplicates = yes +hide_duplicate_count = no +icon_position = left +icon_path = /home/guanranwang/.local/share/icons/dunst +show_indicators = no +icon_position = left +max_icon_size = 48 +sticky_history = yes +history_length = 20 +title = Dunst +class = Dunst +corner_radius = 10 +offset = 8x8 + +# Tokyonight +[global] +frame_color = "#c0caf5" +separator_color = frame + +[urgency_low] +timeout = 4 +background = "#1a1b26" +foreground = "#c0caf5" + +[urgency_normal] +timeout = 8 +background = "#1a1b26" +foreground = "#c0caf5" + +[urgency_critical] +timeout = 0 +background = "#1a1b26" +foreground = "#c0caf5" +frame_color = "#FAB387" diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/fish_plugins b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/fish_plugins new file mode 100755 index 0000000..3a7cfee --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/fish_plugins @@ -0,0 +1,3 @@ +jorgebucaran/fisher +oh-my-fish/plugin-sudope +gazorby/fish-abbreviation-tips diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_day.theme b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_day.theme new file mode 100644 index 0000000..95c7916 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_day.theme @@ -0,0 +1,25 @@ + # TokyoNight + + # Syntax Highlighting Colors + fish_color_normal 3760bf + fish_color_command 007197 + fish_color_keyword 9854f1 + fish_color_quote 8c6c3e + fish_color_redirection 3760bf + fish_color_end b15c00 + fish_color_error f52a65 + fish_color_param 7847bd + fish_color_comment 848cb5 + fish_color_selection --background=b6bfe2 + fish_color_search_match --background=b6bfe2 + fish_color_operator 587539 + fish_color_escape 9854f1 + fish_color_autosuggestion 848cb5 + + # Completion Pager Colors + fish_pager_color_progress 848cb5 + fish_pager_color_prefix 007197 + fish_pager_color_completion 3760bf + fish_pager_color_description 848cb5 + fish_pager_color_selected_background --background=b6bfe2 + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_moon.theme b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_moon.theme new file mode 100644 index 0000000..c12d4a7 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_moon.theme @@ -0,0 +1,25 @@ + # TokyoNight + + # Syntax Highlighting Colors + fish_color_normal c8d3f5 + fish_color_command 86e1fc + fish_color_keyword c099ff + fish_color_quote ffc777 + fish_color_redirection c8d3f5 + fish_color_end ff966c + fish_color_error ff757f + fish_color_param fca7ea + fish_color_comment 636da6 + fish_color_selection --background=2d3f76 + fish_color_search_match --background=2d3f76 + fish_color_operator c3e88d + fish_color_escape c099ff + fish_color_autosuggestion 636da6 + + # Completion Pager Colors + fish_pager_color_progress 636da6 + fish_pager_color_prefix 86e1fc + fish_pager_color_completion c8d3f5 + fish_pager_color_description 636da6 + fish_pager_color_selected_background --background=2d3f76 + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_night.theme b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_night.theme new file mode 100644 index 0000000..828bcbb --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_night.theme @@ -0,0 +1,25 @@ + # TokyoNight + + # Syntax Highlighting Colors + fish_color_normal c0caf5 + fish_color_command 7dcfff + fish_color_keyword bb9af7 + fish_color_quote e0af68 + fish_color_redirection c0caf5 + fish_color_end ff9e64 + fish_color_error f7768e + fish_color_param 9d7cd8 + fish_color_comment 565f89 + fish_color_selection --background=283457 + fish_color_search_match --background=283457 + fish_color_operator 9ece6a + fish_color_escape bb9af7 + fish_color_autosuggestion 565f89 + + # Completion Pager Colors + fish_pager_color_progress 565f89 + fish_pager_color_prefix 7dcfff + fish_pager_color_completion c0caf5 + fish_pager_color_description 565f89 + fish_pager_color_selected_background --background=283457 + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_storm.theme b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_storm.theme new file mode 100644 index 0000000..aafc0f6 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/themes/tokyonight_storm.theme @@ -0,0 +1,25 @@ + # TokyoNight + + # Syntax Highlighting Colors + fish_color_normal c0caf5 + fish_color_command 7dcfff + fish_color_keyword bb9af7 + fish_color_quote e0af68 + fish_color_redirection c0caf5 + fish_color_end ff9e64 + fish_color_error f7768e + fish_color_param 9d7cd8 + fish_color_comment 565f89 + fish_color_selection --background=2e3c64 + fish_color_search_match --background=2e3c64 + fish_color_operator 9ece6a + fish_color_escape bb9af7 + fish_color_autosuggestion 565f89 + + # Completion Pager Colors + fish_pager_color_progress 565f89 + fish_pager_color_prefix 7dcfff + fish_pager_color_completion c0caf5 + fish_pager_color_description 565f89 + fish_pager_color_selected_background --background=2e3c64 + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_day.fish b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_day.fish new file mode 100644 index 0000000..d41de0f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_day.fish @@ -0,0 +1,36 @@ + # TokyoNight Color Palette + set -l foreground 3760bf + set -l selection b6bfe2 + set -l comment 848cb5 + set -l red f52a65 + set -l orange b15c00 + set -l yellow 8c6c3e + set -l green 587539 + set -l purple 7847bd + set -l cyan 007197 + set -l pink 9854f1 + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment + set -g fish_pager_color_selected_background --background=$selection + + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_moon.fish b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_moon.fish new file mode 100644 index 0000000..8c8226a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_moon.fish @@ -0,0 +1,36 @@ + # TokyoNight Color Palette + set -l foreground c8d3f5 + set -l selection 2d3f76 + set -l comment 636da6 + set -l red ff757f + set -l orange ff966c + set -l yellow ffc777 + set -l green c3e88d + set -l purple fca7ea + set -l cyan 86e1fc + set -l pink c099ff + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment + set -g fish_pager_color_selected_background --background=$selection + + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_night.fish b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_night.fish new file mode 100644 index 0000000..67b6686 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_night.fish @@ -0,0 +1,36 @@ + # TokyoNight Color Palette + set -l foreground c0caf5 + set -l selection 283457 + set -l comment 565f89 + set -l red f7768e + set -l orange ff9e64 + set -l yellow e0af68 + set -l green 9ece6a + set -l purple 9d7cd8 + set -l cyan 7dcfff + set -l pink bb9af7 + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment + set -g fish_pager_color_selected_background --background=$selection + + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_storm.fish b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_storm.fish new file mode 100644 index 0000000..a93999c --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fish/tokyonight_storm.fish @@ -0,0 +1,36 @@ + # TokyoNight Color Palette + set -l foreground c0caf5 + set -l selection 2e3c64 + set -l comment 565f89 + set -l red f7768e + set -l orange ff9e64 + set -l yellow e0af68 + set -l green 9ece6a + set -l purple 9d7cd8 + set -l cyan 7dcfff + set -l pink bb9af7 + + # Syntax Highlighting Colors + set -g fish_color_normal $foreground + set -g fish_color_command $cyan + set -g fish_color_keyword $pink + set -g fish_color_quote $yellow + set -g fish_color_redirection $foreground + set -g fish_color_end $orange + set -g fish_color_error $red + set -g fish_color_param $purple + set -g fish_color_comment $comment + set -g fish_color_selection --background=$selection + set -g fish_color_search_match --background=$selection + set -g fish_color_operator $green + set -g fish_color_escape $pink + set -g fish_color_autosuggestion $comment + + # Completion Pager Colors + set -g fish_pager_color_progress $comment + set -g fish_pager_color_prefix $cyan + set -g fish_pager_color_completion $foreground + set -g fish_pager_color_description $comment + set -g fish_pager_color_selected_background --background=$selection + + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/qt-fonts.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/qt-fonts.conf new file mode 100644 index 0000000..8b57e53 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/qt-fonts.conf @@ -0,0 +1,43 @@ + + + + + trash Font Config 2.0 + + + + sans-serif + + + Noto Sans Glagolitic + + Noto Sans Javanese + + Noto Serif Tangut + + Noto Sans Egyptian Hieroglyphs + + Noto Sans Cuneiform + + HanaMinB + + Noto Sans Rejang + + Noto Sans Tai Viet + + Noto Sans Cherokee + + Noto Sans Tai Tham + + Noto Sans Anatolian Hieroglyphs + + Noto Sans Bamum + + OperatorMonoSSmLig Nerd Font + + Noto Sans Batak + + Noto Sans Runic + + + \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/web-ui-fonts.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/web-ui-fonts.conf new file mode 100644 index 0000000..3bdca12 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/conf.d/web-ui-fonts.conf @@ -0,0 +1,31 @@ + + + + + trash Font Config 2.0 + + + + ui-monospace + monospace + + + + ui-sans-serif + sans-serif + + + + ui-serif + serif + + + + -apple-system + sans-serif + + + diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/fonts.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/fonts.conf new file mode 100644 index 0000000..6ea4cee --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/fontconfig/fonts.conf @@ -0,0 +1,346 @@ + + + + + + + trash Font Config 2.0 + + + true + false + false + true + hintslight + rgb + lcddefault + 96 + + + + + serif + Noto Serif + + + sans-serif + SF Pro Display + + + monospace + JetBrainsMono Nerd Font + + + + + + + zh + serif + Noto Serif CJK SC + + + zh + sans-serif + Noto Sans CJK SC + + + zh + monospace + Noto Sans Mono CJK SC + + + + + + + + + zh-hans + serif + Noto Serif CJK SC + + + zh-hans + sans-serif + Noto Sans CJK SC + + + zh-hans + monospace + Noto Sans Mono CJK SC + + + + + + zh-hant + serif + Noto Serif CJK TC + + + zh-hant + sans-serif + Noto Sans CJK TC + + + zh-hant + monospace + Noto Sans Mono CJK TC + + + + + + zh-hant + serif + Noto Serif CJK HK + + + zh-hant + sans-serif + Noto Sans CJK HK + + + zh-hant + monospace + Noto Sans Mono CJK HK + + + + + + + zh-cn + serif + Noto Serif CJK SC + + + zh-cn + sans-serif + Noto Sans CJK SC + + + zh-cn + monospace + Noto Sans Mono CJK SC + + + + + zh-tw + serif + Noto Serif CJK TC + + + zh-tw + sans-serif + Noto Sans CJK TC + + + zh-tw + monospace + Noto Sans Mono CJK TC + + + + + zh-hk + serif + Noto Serif CJK HK + + + zh-hk + sans-serif + Noto Sans CJK HK + + + zh-hk + monospace + Noto Sans Mono CJK HK + + + + + + ja + serif + Noto Serif CJK JP + + + ja + sans-serif + Noto Sans CJK JP + + + ja + monospace + Noto Sans Mono CJK JP + + + + + + ko + serif + Noto Serif CJK KR + + + ko + sans-serif + Noto Sans CJK KR + + + ko + monospace + Noto Sans Mono CJK KR + + + + + + sans-serif + + SF Pro Display + SF Pro + Inter + Roboto + Noto Sans + Noto Sans CJK SC + Noto Sans CJK TC + Noto Sans CJK JP + Noto Sans CJK KR + Source Han Sans CN + Noto Color Emoji + Noto Emoji + + DejaVu Sans + Verdana + Arial + Albany AMT + Luxi Sans + Nimbus Sans L + Nimbus Sans + Helvetica + Lucida Sans Unicode + BPG Glaho International + Tahoma + + + + serif + + Noto Serif + Noto Serif CJK SC + Noto Serif CJK TC + Noto Serif CJK JP + Noto Serif CJK KR + Source Han Serif CN + Noto Color Emoji + Noto Emoji + + + + monospace + + JetBrainsMono Nerd Font + Noto Sans Mono + Noto Sans Mono CJK SC + Noto Sans Mono CJK TC + Noto Sans Mono CJK JP + Noto Sans Mono CJK KR + Noto Color Emoji + Noto Emoji + + + + + + + Microsoft YaHei + sans-serif + + + SimHei + sans-serif + + + + SimSun + serif + + + SimSun-18030 + serif + + + + + + WenQuanYi Zen Hei + sans-serif + + + WenQuanYi Micro Hei + sans-serif + + + WenQuanYi Micro Hei Light + sans-serif + + + + + + Liberation Mono + monospace + + + SF Mono + monospace + + + + + + + + + + + + + Helvetica + sans-serif + + + diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/foot/foot.ini b/flakes/home-manager/guanranwang/common/dotfiles/config/foot/foot.ini new file mode 100644 index 0000000..e78005f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/foot/foot.ini @@ -0,0 +1,24 @@ +font=monospace:size=12 +pad=12x12 center +[colors] +#alpha = 0.9 +background=1a1b26 +foreground=c0caf5 +regular0=15161e # black +regular1=f7768e # red +regular2=9ece6a # green +regular3=e0af68 # yellow +regular4=7aa2f7 # blue +regular5=bb9af7 # magenta +regular6=7dcfff # cyan +regular7=a91bd6 # white +bright0=414868 # bright black +bright1=f7768e # bright red +bright2=9ece6a # bright green +bright3=e0af68 # bright yellow +bright4=7aa2f7 # bright blue +bright5=bb9af7 # bright magenta +bright6=7dcfff # bright cyan +bright7=c0caf5 # bright white +16 = ff9e64 +17 = db4b4b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/autostart.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/autostart.conf new file mode 100644 index 0000000..5b7eaaf --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/autostart.conf @@ -0,0 +1,28 @@ +# +# Hyprland autostart config +# $HOME/.config/hypr/autostart.conf +# + +#exec-once = $HOME/.local/share/hyprload/hyprload.sh # hyprload + +#exec-once = /usr/bin/dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP +#exec-once = dbus-update-activation-environment --all +#exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 # authentication prompt +#exec-once = gnome-keyring-daemon --start --components=secrets # keyring +exec-once = swww init # wallpaper (not working on nixos somehow) +#exec-once = hyprpaper # wallpaper but for factional scaling +exec-once = waybar # status bar (bro why would nixos autostart waybar itself) +#exec-once = eww open bar # status bar but better +exec-once = fcitx5 # input method +#exec-once = swayosd +#exec-once = dunst # notification +#exec-once = udiskie -t # auto disk mount (with tray) +#exec-once = nm-applet # wifi tray +exec-once = wl-paste --watch cliphist store # clipboard manager +#exec-once = wl-clip-persist --clipboard both # clipboard persist data, breaks text selection in gtk apps (https://github.com/hyprwm/Hyprland/issues/2619) +#exec-once = hyprctl setcursor Bibata-Modern-Classic 24 # set cursor +#exec-once = clash-verge # proxy tool +#exec-once = /usr/lib/kdeconnectd # kdeconnect +#exec-once = flatpak run org.qbittorrent.qBittorrent + +#exec-once = $HOME/.local/bin/hyprland-autostart diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/env.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/env.conf new file mode 100644 index 0000000..45af6a8 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/env.conf @@ -0,0 +1,22 @@ +# +# Hyprland environment varibles config +# ~/.config/hypr/env.conf +# + +# Cursor +env = XCURSOR_THEME, Adwaita +#env = XCURSOR_THEME, Bibata-Modern-Classic +env = XCURSOR_SIZE, 24 + +# Nvidia +#env = LIBVA_DRIVER_NAME, nvidia +#env = XDG_SESSION_TYPE, wayland +#env = GBM_BACKEND, nvidia-drm # crashes for me +#env = __GLX_VENDOR_LIBRARY_NAME +#env = WLR_NO_HARDWARE_CURSORS, 1 +#env = __GL_THREADED_OPTIMIZATIONS, 0 # workround for minecraft glitch on nvidia 535.xx driver, https://github.com/NVIDIA/open-gpu-kernel-modules/issues/522 + +# Qt theming +#env = QT_QPA_PLATFORMTHEME, qt5ct +#env = QT_STYLE_OVERRIDE, Adwaita-dark +#env = QT_STYLE_OVERRIDE, kvantum diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprland.bak b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprland.bak new file mode 100755 index 0000000..a092f5e --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprland.bak @@ -0,0 +1,109 @@ +# +# Hyprland main config +# ~/.config/hypr/hyprland.conf +# wiki: https://wiki.hyprland.org/ +# + +# Display settings +monitor = ,preferred, auto, 1 +#monitor= ,addreserved, 28, 0, 0, 0 # eww bar +monitor = eDP-1, 1920x1080@60, 0x0, 1.25 # laptop screen eDP-1 + +# Multi GPU +#env = WLR_DRM_DEVICES, /dev/dri/card1:/dev/dri/card0 + +# Source (to split config in different files) +# source = ~/.config/hypr/themes/mocha.conf +#source = ~/.config/hypr/themes/colors.conf +source = ~/.config/hypr/keybinds.conf +source = ~/.config/hypr/autostart.conf +source = ~/.config/hypr/env.conf +#source = ~/.config/hypr/plugins.conf + + +# General settings +general { + gaps_in = 4 + gaps_out = 8 # dont forget to change waybar margin + border_size = 2 + layout = dwindle +} + +# Decorations +decoration { + blur { + size = 4 + passes = 4 + } + rounding = 4 + shadow_range = 50 + shadow_render_power = 5 + col.shadow = 0x88000000 + col.shadow_inactive = 0x44000000 +} + +# Animations +# animation=NAME,ONOFF,SPEED,CURVE,STYLE or +# animation=NAME,ONOFF,SPEED,CURVE +animations { + bezier = easeOutExpo, 0.16, 1, 0.3, 1 + bezier = easeOutQuint, 0.22, 1, 0.36, 1 + animation = windows, 1, 6, default, popin # slide or popin + animation = fade, 1, 8, default + animation = border, 1, 8, default + animation = borderangle, 1, 8, default + animation = workspaces, 1, 4, default +} + +# Input settings +input { + accel_profile = flat + force_no_accel = 1 + touchpad { + natural_scroll = yes + disable_while_typing = false + drag_lock = true + } +} + +# idk +dwindle { + pseudotile = yes + preserve_split = yes +} + +# Touchpad gestures +gestures { + workspace_swipe = true # touchpad swipe to switch workspaces + workspace_swipe_distance = 600 # doubles gesture distance +} + +# XWayland +XWayland { + use_nearest_neighbor = false + force_zero_scaling = true +} + +misc { + disable_hyprland_logo = true + disable_splash_rendering = true + animate_manual_resizes = true +} + +# Windows rules +windowrule = float, ^(pavucontrol)$ +windowrule = float, ^(blueberry)$ +windowrule = float, ^(gnome-system-monitor)$ +windowrule = float, ^(org.gnome.Calculator)$ +windowrule = float, ^(org.gnome.Weather)$ +windowrule = float, ^(zenity)$ # popups, input boxes, etc... +windowrule = float, title:^(Friends List)$ # steam friend list +windowrule = float, title:^(File Conflict)$ # nautilus +windowrule = float, title:^(Merge Folder)$ # another nautilus +windowrule = noblur, ^(xdg-desktop-portal-gtk)$ # i dont really know why did i add this +windowrule = noborder, ^(wechat-uos)$ + +# Layer rules +layerrule = blur, notifications +layerrule = blur, rofi +layerrule = ignorezero, notifications diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprpaper.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprpaper.conf new file mode 100644 index 0000000..a5a2192 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/hyprpaper.conf @@ -0,0 +1,2 @@ +preload = /usr/share/backgrounds/odin-dark.jpg +wallpaper = eDP-1, /usr/share/backgrounds/odin-dark.jpg diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/keybinds.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/keybinds.conf new file mode 100644 index 0000000..797c523 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/keybinds.conf @@ -0,0 +1,136 @@ +# +# Hyprland keybinds config +# ~/.config/hypr/keybinds.conf +# + +# bind vars +$lock = ~/.local/bin/wrapped-swaylock-effects +$wp = ~/.local/bin/wrapped-swww +$dwp = ~/.local/bin/wrapped-mpvpaper +$changevolume = ~/.local/bin/wrapped-pamixer # use swayosd instead +$changebrightness = ~/.local/bin/wrapped-brightnessctl +$gamemode = ~/.local/bin/hyprland-gamemode +$screenshot = ~/.local/bin/wrapped-slurp +$inputfix = ~/.local/bin/minecraft-inputfix +$video_path = ~/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/workshop/content/431960 + +# binds +bind = SUPER, return, exec, alacritty +#bind = SUPER, Q, exec, alacritty +bind = SUPER, E, exec, xdg-open ~ +bind = SUPER, W, exec, xdg-open https: # why is this working +bind = CONTROL SHIFT, Escape, exec, gnome-system-monitor + +bind = ALT, R, exec, $inputfix +bind = SUPER, G, exec, $gamemode +bind = SUPER, Backspace, exec, $lock + +bind = SUPER, F, fullscreen, 0 +bind = SUPER SHIFT, F, fullscreen, 1 + +bind = SUPER, Q, killactive +bind = CONTROL SUPER SHIFT, Q, exec, hyprctl kill +bind = SUPER SHIFT, R, exec, pkill waybar; waybar +bind = CONTROL ALT, delete, exit, + +# rofi / application launcher +bind = SUPER, D, exec, rofi -show drun -show-icons -icon-theme Tela-dracula-dark +#bind = SUPER, D, exec, anyrun +bind = SUPER SHIFT, D, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy +bind = SUPER, Period, exec, rofi -modi emoji -show emoji +bind = SUPER SHIFT, L, exec, rofi -modi "power-menu:rofi-power-menu --confirm=reboot/shutdown" -show power-menu + +# screenshot +bind = ,Print, exec, $screenshot fullscreen +bind = SUPER SHIFT, S, exec, $screenshot region +bind = ALT SHIFT, S, exec, $screenshot region edit + +# wallpaper switching +bind = SHIFT ALT, 1, exec, $wp /usr/share/backgrounds/odin.jpg # pkg: elementary-wallpapers +bind = SHIFT ALT, 2, exec, $wp /usr/share/backgrounds/odin-dark.jpg +bind = SHIFT ALT, 3, exec, $wp ~/.local/share/backgrounds/Mojave\ Night.jpg +bind = SHIFT ALT, 4, exec, $wp ~/.local/share/backgrounds/wallpaper2.jpg +bind = SHIFT ALT, 5, exec, $wp ~/.local/share/backgrounds/wallpaper3.jpg +bind = SHIFT ALT, 6, exec, $wp ~/.local/share/backgrounds/wallpaper1.png # aur: mint-backgrounds +# /usr/share/backgrounds/archlinux/simple.png # archlinux-wallpapers +# /usr/share/backgrounds/archlinux/small.png + +# video wallpapers from wallpaper engine +bind = SHIFT ALT, 7, exec, $dwp $video_path/2292710588/KleeWP.mp4 +bind = SHIFT ALT, 8, exec, $dwp $video_path/821372791/灵梦.mp4 +bind = SHIFT ALT, 9, exec, $dwp $video_path/827148653/Gargantua_BGM.mp4 +bind = SHIFT ALT, 0, exec, $dwp $video_path/1661372823/EP03.mp4 +bind = SHIFT ALT, Minus, exec, $dwp $video_path/2855732285/彩虹鸭鸭.mp4 +bind = SHIFT ALT, Backspace, exec, pkill mpvpaper + +# keyboard fn buttons +binde = ,XF86MonBrightnessUp, exec, $changebrightness up +binde = ,XF86MonBrightnessDown, exec, $changebrightness down +binde = ,XF86AudioRaiseVolume, exec, $changevolume up +binde = ,XF86AudioLowerVolume, exec, $changevolume down +bind = ,XF86AudioMute, exec, $changevolume mute + +#binde = ,XF86MonBrightnessUp, exec, swayosd --brightness raise +#binde = ,XF86MonBrightnessDown, exec, swayosd --brightness lower +#binde = ,XF86AudioRaiseVolume, exec, swayosd --output-volume raise +#binde = ,XF86AudioLowerVolume, exec, swayosd --output-volume lower +#bind = ,XF86AudioMute, exec, swayosd --output-volume mute-toggle + +bind = ,XF86AudioPlay, exec, playerctl play-pause +bind = ,XF86AudioPrev, exec, playerctl previous +bind = ,XF86AudioNext, exec, playerctl next +bind = ,XF86AudioStop, exec, playerctl stop +bind = ,XF86AudioMedia, exec, playerctl play-pause + +# window mode +bind = SUPER, C, pseudo # dwindle +bind = SUPER, S, togglesplit # dwindle +bind = SUPER, V, togglefloating + +# window size +binde = SUPER, Minus, splitratio, -0.1 +binde = SUPER, Equal, splitratio, 0.1 + +# move window focus +bind = SUPER, H, movefocus, l +bind = SUPER, J, movefocus, d +bind = SUPER, K, movefocus, u +bind = SUPER, L, movefocus, r + +bind = SUPER, left, movefocus, l +bind = SUPER, right, movefocus, r +bind = SUPER, up, movefocus, u +bind = SUPER, down, movefocus, d + +bind = SUPER, Tab, cyclenext # change focus to another window +bind = SUPER, Tab, bringactivetotop # bring it to the top + +# workspaces binds +bind = SUPER, 1, workspace, 1 +bind = SUPER, 2, workspace, 2 +bind = SUPER, 3, workspace, 3 +bind = SUPER, 4, workspace, 4 +bind = SUPER, 5, workspace, 5 +bind = SUPER, 6, workspace, 6 +bind = SUPER, 7, workspace, 7 +bind = SUPER, 8, workspace, 8 +bind = SUPER, 9, workspace, 9 +bind = SUPER, 0, workspace, 10 + +bind = SUPER SHIFT, 1, movetoworkspacesilent, 1 +bind = SUPER SHIFT, 2, movetoworkspacesilent, 2 +bind = SUPER SHIFT, 3, movetoworkspacesilent, 3 +bind = SUPER SHIFT, 4, movetoworkspacesilent, 4 +bind = SUPER SHIFT, 5, movetoworkspacesilent, 5 +bind = SUPER SHIFT, 6, movetoworkspacesilent, 6 +bind = SUPER SHIFT, 7, movetoworkspacesilent, 7 +bind = SUPER SHIFT, 8, movetoworkspacesilent, 8 +bind = SUPER SHIFT, 9, movetoworkspacesilent, 9 +bind = SUPER SHIFT, 0, movetoworkspacesilent, 10 + +# mouse binds +bind = SUPER, mouse_down, workspace, e-1 # scroll wheels +bind = SUPER, mouse_up, workspace, e+1 +bindm = SUPER, mouse:272, movewindow # left click +bindm = SUPER, mouse:273, resizewindow # right click + diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/main.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/main.conf new file mode 100644 index 0000000..273f229 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/main.conf @@ -0,0 +1,101 @@ + # + # Hyprland main config + # ~/.config/hypr/hyprland.conf + # wiki: https://wiki.hyprland.org/ + # + + # Display settings + monitor = ,preferred, auto, 1 + #monitor= ,addreserved, 28, 0, 0, 0 # eww bar + monitor = eDP-1, 1920x1080@60, 0x0, 1.25 # laptop screen eDP-1 + + # Multi GPU + #env = WLR_DRM_DEVICES, /dev/dri/card1:/dev/dri/card0 + + # General settings + general { + gaps_in = 4 + gaps_out = 8 # dont forget to change waybar margin + border_size = 2 + layout = dwindle + } + + # Decorations + decoration { + blur { + size = 4 + passes = 4 + } + rounding = 4 + shadow_range = 50 + shadow_render_power = 5 + col.shadow = 0x88000000 + col.shadow_inactive = 0x44000000 + } + + # Animations + # animation=NAME,ONOFF,SPEED,CURVE,STYLE or + # animation=NAME,ONOFF,SPEED,CURVE + animations { + bezier = easeOutExpo, 0.16, 1, 0.3, 1 + bezier = easeOutQuint, 0.22, 1, 0.36, 1 + animation = windows, 1, 6, default, popin # slide or popin + animation = fade, 1, 8, default + animation = border, 1, 8, default + animation = borderangle, 1, 8, default + animation = workspaces, 1, 4, default + } + + # Input settings + input { + accel_profile = flat + #force_no_accel = false + natural_scroll = true + touchpad { + natural_scroll = true + disable_while_typing = false + drag_lock = true + } + } + + # idk + dwindle { + pseudotile = true + preserve_split = true + } + + # Touchpad gestures + gestures { + workspace_swipe = true # touchpad swipe to switch workspaces + workspace_swipe_distance = 600 # doubles gesture distance + } + + # XWayland + XWayland { + use_nearest_neighbor = false + force_zero_scaling = true + } + + misc { + disable_hyprland_logo = true + disable_splash_rendering = true + animate_manual_resizes = true + } + + # Windows rules + windowrule = float, ^(pavucontrol)$ + windowrule = float, ^(blueberry)$ + windowrule = float, ^(gnome-system-monitor)$ + windowrule = float, ^(org.gnome.Calculator)$ + windowrule = float, ^(org.gnome.Weather)$ + windowrule = float, ^(zenity)$ # popups, input boxes, etc... + windowrule = float, title:^(Friends List)$ # steam friend list + windowrule = float, title:^(File Conflict)$ # nautilus + windowrule = float, title:^(Merge Folder)$ # another nautilus + windowrule = noblur, ^(xdg-desktop-portal-gtk)$ # i dont really know why did i add this + windowrule = noborder, ^(wechat-uos)$ + + # Layer rules + layerrule = blur, notifications + layerrule = blur, rofi + layerrule = ignorezero, notifications \ No newline at end of file diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/plugins.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/plugins.conf new file mode 100644 index 0000000..af0ca5a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/plugins.conf @@ -0,0 +1,40 @@ +# need to be absolute path +#plugin = $HOME/.config/hypr/plugins/csgo-vulkan-fix.so +plugin = $HOME/.config/hypr/plugins/hyprfocus.so + +plugin { + csgo-vulkan-fix { + res_w = 1440 + res_h = 1080 + } + + hyprfocus { + enabled = false + + keyboard_focus_animation = flash + mouse_focus_animation = flash + + bezier = bezIn, 0.5,0.0,1.0,0.5 + bezier = bezOut, 0.0,0.5,0.5,1.0 + } + + flash { + flash_opacity = 0.7 + + in_bezier = bezIn + in_speed = 0.5 + + out_bezier = bezOut + out_speed = 3 + } + + shrink { + shrink_percentage = 0.99 + + in_bezier = bezIn + in_speed = 0.5 + + out_bezier = bezOut + out_speed = 3 + } +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/colors.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/colors.conf new file mode 100755 index 0000000..4e8c55c --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/colors.conf @@ -0,0 +1,10 @@ +# i dont actually know how did i get this color scheme + +general { + #col.active_border = rgba(60C4F1FF) rgba(9F9BABFF) rgba(A2AECFFF) 45deg + #col.active_border = rgba(222222FF) + col.active_border = rgba(C0CAF5FF) + #col.inactive_border = rgba(60C4F166) + #col.inactive_border = rgba(222222FF) + col.inactive_border = rgba(414868FF) +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/frappe.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/frappe.conf new file mode 100644 index 0000000..94a32db --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/frappe.conf @@ -0,0 +1,61 @@ +$rosewaterAlpha = f2d5cf +$flamingoAlpha = eebebe +$pinkAlpha = f4b8e4 +$mauveAlpha = ca9ee6 +$redAlpha = e78284 +$maroonAlpha = ea999c +$peachAlpha = ef9f76 +$yellowAlpha = e5c890 +$greenAlpha = a6d189 +$tealAlpha = 81c8be +$skyAlpha = 99d1db +$sapphireAlpha = 85c1dc +$blueAlpha = 8caaee +$lavenderAlpha = babbf1 + +$textAlpha = c6d0f5 +$subtext1Alpha = b5bfe2 +$subtext0Alpha = a5adce + +$overlay2Alpha = 949cbb +$overlay1Alpha = 838ba7 +$overlay0Alpha = 737994 + +$surface2Alpha = 626880 +$surface1Alpha = 51576d +$surface0Alpha = 414559 + +$baseAlpha = 303446 +$mantleAlpha = 292c3c +$crustAlpha = 232634 + +$rosewater = 0xfff5e0dc +$flamingo = 0xfff2cdcd +$pink = 0xfff5c2e7 +$mauve = 0xffcba6f7 +$red = 0xfff38ba8 +$maroon = 0xffeba0ac +$peach = 0xfffab387 +$yellow = 0xfff9e2af +$green = 0xffa6e3a1 +$teal = 0xff94e2d5 +$sky = 0xff89dceb +$sapphire = 0xff74c7ec +$blue = 0xff89b4fa +$lavender = 0xffb4befe + +$text = 0xffcdd6f4 +$subtext1 = 0xffbac2de +$subtext0 = 0xffa6adc8 + +$overlay2 = 0xff9399b2 +$overlay1 = 0xff7f849c +$overlay0 = 0xff6c7086 + +$surface2 = 0xff585b70 +$surface1 = 0xff45475a +$surface0 = 0xff313244 + +$base = 0xff1e1e2e +$mantle = 0xff181825 +$crust = 0xff11111b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/latte.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/latte.conf new file mode 100644 index 0000000..dbad7f9 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/latte.conf @@ -0,0 +1,61 @@ +$rosewaterAlpha = dc8a78 +$flamingoAlpha = dd7878 +$pinkAlpha = ea76cb +$mauveAlpha = 8839ef +$redAlpha = d20f39 +$maroonAlpha = e64553 +$peachAlpha = fe640b +$yellowAlpha = df8e1d +$greenAlpha = 40a02b +$tealAlpha = 179299 +$skyAlpha = 04a5e5 +$sapphireAlpha = 209fb5 +$blueAlpha = 1e66f5 +$lavenderAlpha = 7287fd + +$textAlpha = 4c4f69 +$subtext1Alpha = 5c5f77 +$subtext0Alpha = 6c6f85 + +$overlay2Alpha = 7c7f93 +$overlay1Alpha = 8c8fa1 +$overlay0Alpha = 9ca0b0 + +$surface2Alpha = acb0be +$surface1Alpha = bcc0cc +$surface0Alpha = ccd0da + +$baseAlpha = eff1f5 +$mantleAlpha = e6e9ef +$crustAlpha = dce0e8 + +$rosewater = 0xfff5e0dc +$flamingo = 0xfff2cdcd +$pink = 0xfff5c2e7 +$mauve = 0xffcba6f7 +$red = 0xfff38ba8 +$maroon = 0xffeba0ac +$peach = 0xfffab387 +$yellow = 0xfff9e2af +$green = 0xffa6e3a1 +$teal = 0xff94e2d5 +$sky = 0xff89dceb +$sapphire = 0xff74c7ec +$blue = 0xff89b4fa +$lavender = 0xffb4befe + +$text = 0xffcdd6f4 +$subtext1 = 0xffbac2de +$subtext0 = 0xffa6adc8 + +$overlay2 = 0xff9399b2 +$overlay1 = 0xff7f849c +$overlay0 = 0xff6c7086 + +$surface2 = 0xff585b70 +$surface1 = 0xff45475a +$surface0 = 0xff313244 + +$base = 0xff1e1e2e +$mantle = 0xff181825 +$crust = 0xff11111b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/macchiato.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/macchiato.conf new file mode 100644 index 0000000..91a88a1 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/macchiato.conf @@ -0,0 +1,61 @@ +$rosewaterAlpha = f4dbd6 +$flamingoAlpha = f0c6c6 +$pinkAlpha = f5bde6 +$mauveAlpha = c6a0f6 +$redAlpha = ed8796 +$maroonAlpha = ee99a0 +$peachAlpha = f5a97f +$yellowAlpha = eed49f +$greenAlpha = a6da95 +$tealAlpha = 8bd5ca +$skyAlpha = 91d7e3 +$sapphireAlpha = 7dc4e4 +$blueAlpha = 8aadf4 +$lavenderAlpha = b7bdf8 + +$textAlpha = cad3f5 +$subtext1Alpha = b8c0e0 +$subtext0Alpha = a5adcb + +$overlay2Alpha = 939ab7 +$overlay1Alpha = 8087a2 +$overlay0Alpha = 6e738d + +$surface2Alpha = 5b6078 +$surface1Alpha = 494d64 +$surface0Alpha = 363a4f + +$baseAlpha = 24273a +$mantleAlpha = 1e2030 +$crustAlpha = 181926 + +$rosewater = 0xfff5e0dc +$flamingo = 0xfff2cdcd +$pink = 0xfff5c2e7 +$mauve = 0xffcba6f7 +$red = 0xfff38ba8 +$maroon = 0xffeba0ac +$peach = 0xfffab387 +$yellow = 0xfff9e2af +$green = 0xffa6e3a1 +$teal = 0xff94e2d5 +$sky = 0xff89dceb +$sapphire = 0xff74c7ec +$blue = 0xff89b4fa +$lavender = 0xffb4befe + +$text = 0xffcdd6f4 +$subtext1 = 0xffbac2de +$subtext0 = 0xffa6adc8 + +$overlay2 = 0xff9399b2 +$overlay1 = 0xff7f849c +$overlay0 = 0xff6c7086 + +$surface2 = 0xff585b70 +$surface1 = 0xff45475a +$surface0 = 0xff313244 + +$base = 0xff1e1e2e +$mantle = 0xff181825 +$crust = 0xff11111b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/mocha.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/mocha.conf new file mode 100644 index 0000000..1463565 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/hyprland/themes/mocha.conf @@ -0,0 +1,61 @@ +$rosewaterAlpha = f5e0dc +$flamingoAlpha = f2cdcd +$pinkAlpha = f5c2e7 +$mauveAlpha = cba6f7 +$redAlpha = f38ba8 +$maroonAlpha = eba0ac +$peachAlpha = fab387 +$yellowAlpha = f9e2af +$greenAlpha = a6e3a1 +$tealAlpha = 94e2d5 +$skyAlpha = 89dceb +$sapphireAlpha = 74c7ec +$blueAlpha = 89b4fa +$lavenderAlpha = b4befe + +$textAlpha = cdd6f4 +$subtext1Alpha = bac2de +$subtext0Alpha = a6adc8 + +$overlay2Alpha = 9399b2 +$overlay1Alpha = 7f849c +$overlay0Alpha = 6c7086 + +$surface2Alpha = 585b70 +$surface1Alpha = 45475a +$surface0Alpha = 313244 + +$baseAlpha = 1e1e2e +$mantleAlpha = 181825 +$crustAlpha = 11111b + +$rosewater = 0xfff5e0dc +$flamingo = 0xfff2cdcd +$pink = 0xfff5c2e7 +$mauve = 0xffcba6f7 +$red = 0xfff38ba8 +$maroon = 0xffeba0ac +$peach = 0xfffab387 +$yellow = 0xfff9e2af +$green = 0xffa6e3a1 +$teal = 0xff94e2d5 +$sky = 0xff89dceb +$sapphire = 0xff74c7ec +$blue = 0xff89b4fa +$lavender = 0xffb4befe + +$text = 0xffcdd6f4 +$subtext1 = 0xffbac2de +$subtext0 = 0xffa6adc8 + +$overlay2 = 0xff9399b2 +$overlay1 = 0xff7f849c +$overlay0 = 0xff6c7086 + +$surface2 = 0xff585b70 +$surface1 = 0xff45475a +$surface0 = 0xff313244 + +$base = 0xff1e1e2e +$mantle = 0xff181825 +$crust = 0xff11111b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/dracula.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/dracula.conf new file mode 100644 index 0000000..8f05c52 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/dracula.conf @@ -0,0 +1,66 @@ +# https://draculatheme.com/kitty +# +# Installation instructions: +# +# cp dracula.conf ~/.config/kitty/ +# echo "include dracula.conf" >> ~/.config/kitty/kitty.conf +# +# Then reload kitty for the config to take affect. +# Alternatively copy paste below directly into kitty.conf + +foreground #f8f8f2 +background #282a36 +selection_foreground #ffffff +selection_background #44475a + +url_color #8be9fd + +# black +color0 #21222c +color8 #6272a4 + +# red +color1 #ff5555 +color9 #ff6e6e + +# green +color2 #50fa7b +color10 #69ff94 + +# yellow +color3 #f1fa8c +color11 #ffffa5 + +# blue +color4 #bd93f9 +color12 #d6acff + +# magenta +color5 #ff79c6 +color13 #ff92df + +# cyan +color6 #8be9fd +color14 #a4ffff + +# white +color7 #f8f8f2 +color15 #ffffff + +# Cursor colors +cursor #f8f8f2 +cursor_text_color background + +# Tab bar colors +active_tab_foreground #282a36 +active_tab_background #f8f8f2 +inactive_tab_foreground #282a36 +inactive_tab_background #6272a4 + +# Marks +mark1_foreground #282a36 +mark1_background #ff5555 + +# Splits/Windows +active_border_color #f8f8f2 +inactive_border_color #6272a4 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/frappe.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/frappe.conf new file mode 100644 index 0000000..a5959a9 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/frappe.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Frappe +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/frappe.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #C6D0F5 +background #303446 +selection_foreground #303446 +selection_background #F2D5CF + +# Cursor colors +cursor #F2D5CF +cursor_text_color #303446 + +# URL underline color when hovering with mouse +url_color #F2D5CF + +# Kitty window border colors +active_border_color #BABBF1 +inactive_border_color #737994 +bell_border_color #E5C890 + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #232634 +active_tab_background #CA9EE6 +inactive_tab_foreground #C6D0F5 +inactive_tab_background #292C3C +tab_bar_background #232634 + +# Colors for marks (marked text in the terminal) +mark1_foreground #303446 +mark1_background #BABBF1 +mark2_foreground #303446 +mark2_background #CA9EE6 +mark3_foreground #303446 +mark3_background #85C1DC + +# The 16 terminal colors + +# black +color0 #51576D +color8 #626880 + +# red +color1 #E78284 +color9 #E78284 + +# green +color2 #A6D189 +color10 #A6D189 + +# yellow +color3 #E5C890 +color11 #E5C890 + +# blue +color4 #8CAAEE +color12 #8CAAEE + +# magenta +color5 #F4B8E4 +color13 #F4B8E4 + +# cyan +color6 #81C8BE +color14 #81C8BE + +# white +color7 #B5BFE2 +color15 #A5ADCE diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/kitty.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/kitty.conf new file mode 100644 index 0000000..ace157f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/kitty.conf @@ -0,0 +1,14 @@ +# +# Kitty config +# ~/.config/kitty/kitty.conf +# + +include tokyonight_night.conf +#font_family JetBrainsMono Nerd Font +font_family monospace +font_size 12 +confirm_os_window_close 0 +window_padding_width 12 +adjust_line_height 0 +#background_opacity 0.9 +#shell fish diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/latte.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/latte.conf new file mode 100644 index 0000000..2e34c7a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/latte.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Latte +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/latte.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #4C4F69 +background #EFF1F5 +selection_foreground #EFF1F5 +selection_background #DC8A78 + +# Cursor colors +cursor #DC8A78 +cursor_text_color #EFF1F5 + +# URL underline color when hovering with mouse +url_color #DC8A78 + +# Kitty window border colors +active_border_color #7287FD +inactive_border_color #9CA0B0 +bell_border_color #DF8E1D + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #EFF1F5 +active_tab_background #8839EF +inactive_tab_foreground #4C4F69 +inactive_tab_background #9CA0B0 +tab_bar_background #BCC0CC + +# Colors for marks (marked text in the terminal) +mark1_foreground #EFF1F5 +mark1_background #7287fD +mark2_foreground #EFF1F5 +mark2_background #8839EF +mark3_foreground #EFF1F5 +mark3_background #209FB5 + +# The 16 terminal colors + +# black +color0 #5C5F77 +color8 #6C6F85 + +# red +color1 #D20F39 +color9 #D20F39 + +# green +color2 #40A02B +color10 #40A02B + +# yellow +color3 #DF8E1D +color11 #DF8E1D + +# blue +color4 #1E66F5 +color12 #1E66F5 + +# magenta +color5 #EA76CB +color13 #EA76CB + +# cyan +color6 #179299 +color14 #179299 + +# white +color7 #ACB0BE +color15 #BCC0CC diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/macchiato.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/macchiato.conf new file mode 100644 index 0000000..4a95930 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/macchiato.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Macchiato +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/macchiato.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #CAD3F5 +background #24273A +selection_foreground #24273A +selection_background #F4DBD6 + +# Cursor colors +cursor #F4DBD6 +cursor_text_color #24273A + +# URL underline color when hovering with mouse +url_color #F4DBD6 + +# Kitty window border colors +active_border_color #B7BDF8 +inactive_border_color #6E738D +bell_border_color #EED49F + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #181926 +active_tab_background #C6A0F6 +inactive_tab_foreground #CAD3F5 +inactive_tab_background #1E2030 +tab_bar_background #181926 + +# Colors for marks (marked text in the terminal) +mark1_foreground #24273A +mark1_background #B7BDF8 +mark2_foreground #24273A +mark2_background #C6A0F6 +mark3_foreground #24273A +mark3_background #7DC4E4 + +# The 16 terminal colors + +# black +color0 #494D64 +color8 #5B6078 + +# red +color1 #ED8796 +color9 #ED8796 + +# green +color2 #A6DA95 +color10 #A6DA95 + +# yellow +color3 #EED49F +color11 #EED49F + +# blue +color4 #8AADF4 +color12 #8AADF4 + +# magenta +color5 #F5BDE6 +color13 #F5BDE6 + +# cyan +color6 #8BD5CA +color14 #8BD5CA + +# white +color7 #B8C0E0 +color15 #A5ADCB diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/mocha.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/mocha.conf new file mode 100644 index 0000000..3f48800 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/mocha.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Mocha +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #CDD6F4 +background #1E1E2E +selection_foreground #1E1E2E +selection_background #F5E0DC + +# Cursor colors +cursor #F5E0DC +cursor_text_color #1E1E2E + +# URL underline color when hovering with mouse +url_color #F5E0DC + +# Kitty window border colors +active_border_color #B4BEFE +inactive_border_color #6C7086 +bell_border_color #F9E2AF + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111B +active_tab_background #CBA6F7 +inactive_tab_foreground #CDD6F4 +inactive_tab_background #181825 +tab_bar_background #11111B + +# Colors for marks (marked text in the terminal) +mark1_foreground #1E1E2E +mark1_background #B4BEFE +mark2_foreground #1E1E2E +mark2_background #CBA6F7 +mark3_foreground #1E1E2E +mark3_background #74C7EC + +# The 16 terminal colors + +# black +color0 #45475A +color8 #585B70 + +# red +color1 #F38BA8 +color9 #F38BA8 + +# green +color2 #A6E3A1 +color10 #A6E3A1 + +# yellow +color3 #F9E2AF +color11 #F9E2AF + +# blue +color4 #89B4FA +color12 #89B4FA + +# magenta +color5 #F5C2E7 +color13 #F5C2E7 + +# cyan +color6 #94E2D5 +color14 #94E2D5 + +# white +color7 #BAC2DE +color15 #A6ADC8 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_day.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_day.conf new file mode 100644 index 0000000..75f6029 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_day.conf @@ -0,0 +1,50 @@ +# vim:ft=kitty + +## name: Tokyo Night Day +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_day.conf + + +background #e1e2e7 +foreground #3760bf +selection_background #b6bfe2 +selection_foreground #3760bf +url_color #387068 +cursor #3760bf +cursor_text_color #e1e2e7 + +# Tabs +active_tab_background #2e7de9 +active_tab_foreground #e9e9ec +inactive_tab_background #c4c8da +inactive_tab_foreground #8990b3 +#tab_bar_background #e9e9ed + +# Windows +active_border_color #2e7de9 +inactive_border_color #c4c8da + +# normal +color0 #e9e9ed +color1 #f52a65 +color2 #587539 +color3 #8c6c3e +color4 #2e7de9 +color5 #9854f1 +color6 #007197 +color7 #6172b0 + +# bright +color8 #a1a6c5 +color9 #f52a65 +color10 #587539 +color11 #8c6c3e +color12 #2e7de9 +color13 #9854f1 +color14 #007197 +color15 #3760bf + +# extended colors +color16 #b15c00 +color17 #c64343 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_moon.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_moon.conf new file mode 100644 index 0000000..014901b --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_moon.conf @@ -0,0 +1,50 @@ +# vim:ft=kitty + +## name: Tokyo Night Moon +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_moon.conf + + +background #222436 +foreground #c8d3f5 +selection_background #2d3f76 +selection_foreground #c8d3f5 +url_color #4fd6be +cursor #c8d3f5 +cursor_text_color #222436 + +# Tabs +active_tab_background #82aaff +active_tab_foreground #1e2030 +inactive_tab_background #2f334d +inactive_tab_foreground #545c7e +#tab_bar_background #1b1d2b + +# Windows +active_border_color #82aaff +inactive_border_color #2f334d + +# normal +color0 #1b1d2b +color1 #ff757f +color2 #c3e88d +color3 #ffc777 +color4 #82aaff +color5 #c099ff +color6 #86e1fc +color7 #828bb8 + +# bright +color8 #444a73 +color9 #ff757f +color10 #c3e88d +color11 #ffc777 +color12 #82aaff +color13 #c099ff +color14 #86e1fc +color15 #c8d3f5 + +# extended colors +color16 #ff966c +color17 #c53b53 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_night.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_night.conf new file mode 100644 index 0000000..f2d9728 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_night.conf @@ -0,0 +1,50 @@ +# vim:ft=kitty + +## name: Tokyo Night +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_night.conf + + +background #1a1b26 +foreground #c0caf5 +selection_background #283457 +selection_foreground #c0caf5 +url_color #73daca +cursor #c0caf5 +cursor_text_color #1a1b26 + +# Tabs +active_tab_background #7aa2f7 +active_tab_foreground #16161e +inactive_tab_background #292e42 +inactive_tab_foreground #545c7e +#tab_bar_background #15161e + +# Windows +active_border_color #7aa2f7 +inactive_border_color #292e42 + +# normal +color0 #15161e +color1 #f7768e +color2 #9ece6a +color3 #e0af68 +color4 #7aa2f7 +color5 #bb9af7 +color6 #7dcfff +color7 #a9b1d6 + +# bright +color8 #414868 +color9 #f7768e +color10 #9ece6a +color11 #e0af68 +color12 #7aa2f7 +color13 #bb9af7 +color14 #7dcfff +color15 #c0caf5 + +# extended colors +color16 #ff9e64 +color17 #db4b4b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_storm.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_storm.conf new file mode 100644 index 0000000..20e6fca --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/kitty/tokyonight_storm.conf @@ -0,0 +1,50 @@ +# vim:ft=kitty + +## name: Tokyo Night Storm +## license: MIT +## author: Folke Lemaitre +## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_storm.conf + + +background #24283b +foreground #c0caf5 +selection_background #2e3c64 +selection_foreground #c0caf5 +url_color #73daca +cursor #c0caf5 +cursor_text_color #24283b + +# Tabs +active_tab_background #7aa2f7 +active_tab_foreground #1f2335 +inactive_tab_background #292e42 +inactive_tab_foreground #545c7e +#tab_bar_background #1d202f + +# Windows +active_border_color #7aa2f7 +inactive_border_color #292e42 + +# normal +color0 #1d202f +color1 #f7768e +color2 #9ece6a +color3 #e0af68 +color4 #7aa2f7 +color5 #bb9af7 +color6 #7dcfff +color7 #a9b1d6 + +# bright +color8 #414868 +color9 #f7768e +color10 #9ece6a +color11 #e0af68 +color12 #7aa2f7 +color13 #bb9af7 +color14 #7dcfff +color15 #c0caf5 + +# extended colors +color16 #ff9e64 +color17 #db4b4b diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/makepkgs.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/makepkgs.conf new file mode 100644 index 0000000..83fee61 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/makepkgs.conf @@ -0,0 +1,6 @@ +CFLAGS="-march=native -O2 -pipe -fno-plt" +CXXFLAGS="-march=native -O2 -pipe -fno-plt" +MAKEFLAGS="-j$(nproc)" +BUILDENV=(!distcc color ccache !check !sign) +BUILDDIR=/tmp/makepkg +COMPRESSXZ=(xz -c -z - --threads=0) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Material-Design-Iconic-Font.ttf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Material-Design-Iconic-Font.ttf new file mode 100644 index 0000000..5d489fd Binary files /dev/null and b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Material-Design-Iconic-Font.ttf differ diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Bold.otf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Bold.otf new file mode 100644 index 0000000..e774680 Binary files /dev/null and b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Bold.otf differ diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Light.otf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Light.otf new file mode 100644 index 0000000..66b9761 Binary files /dev/null and b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Light.otf differ diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Medium.otf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Medium.otf new file mode 100644 index 0000000..2b60813 Binary files /dev/null and b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/fonts/Netflix Sans Medium.otf differ diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/input.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/input.conf new file mode 100644 index 0000000..78d76c6 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/input.conf @@ -0,0 +1,229 @@ +# mpv keybindings +# +# Location of user-defined bindings: ~/.config/mpv/input.conf +# +# Lines starting with # are comments. Use SHARP to assign the # key. +# Copy this file and uncomment and edit the bindings you want to change. +# +# List of commands and further details: DOCS/man/input.rst +# List of special keys: --input-keylist +# Keybindings testing mode: mpv --input-test --force-window --idle +# +# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore'). +# +# Strings need to be quoted and escaped: +# KEY show-text "This is a single backslash: \\ and a quote: \" !" +# +# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with +# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal). +# +# The default keybindings are hardcoded into the mpv binary. +# You can disable them completely with: --no-input-default-bindings + +# Developer note: +# On compilation, this file is baked into the mpv binary, and all lines are +# uncommented (unless '#' is followed by a space) - thus this file defines the +# default key bindings. + +# If this is enabled, treat all the following bindings as default. +#default-bindings start + +#MBTN_LEFT ignore # don't do anything +#MBTN_LEFT_DBL cycle fullscreen # toggle fullscreen +#MBTN_RIGHT cycle pause # toggle pause/playback mode +#MBTN_BACK playlist-prev # skip to the previous file +#MBTN_FORWARD playlist-next # skip to the next file + +# Mouse wheels, touchpad or other input devices that have axes +# if the input devices supports precise scrolling it will also scale the +# numeric value accordingly +#WHEEL_UP seek 10 # seek 10 seconds forward +#WHEEL_DOWN seek -10 # seek 10 seconds backward +#WHEEL_LEFT add volume -2 +#WHEEL_RIGHT add volume 2 + +## Seek units are in seconds, but note that these are limited by keyframes +#RIGHT seek 5 # seek 5 seconds forward +#LEFT seek -5 # seek 5 seconds backward +#UP seek 60 # seek 1 minute forward +#DOWN seek -60 # seek 1 minute backward +# Do smaller, always exact (non-keyframe-limited), seeks with shift. +# Don't show them on the OSD (no-osd). +#Shift+RIGHT no-osd seek 1 exact # seek exactly 1 second forward +#Shift+LEFT no-osd seek -1 exact # seek exactly 1 second backward +#Shift+UP no-osd seek 5 exact # seek exactly 5 seconds forward +#Shift+DOWN no-osd seek -5 exact # seek exactly 5 seconds backward +#Ctrl+LEFT no-osd sub-seek -1 # seek to the previous subtitle +#Ctrl+RIGHT no-osd sub-seek 1 # seek to the next subtitle +#Ctrl+Shift+LEFT sub-step -1 # change subtitle timing such that the previous subtitle is displayed +#Ctrl+Shift+RIGHT sub-step 1 # change subtitle timing such that the next subtitle is displayed +#Alt+left add video-pan-x 0.1 # move the video right +#Alt+right add video-pan-x -0.1 # move the video left +#Alt+up add video-pan-y 0.1 # move the video down +#Alt+down add video-pan-y -0.1 # move the video up +#Alt++ add video-zoom 0.1 # zoom in +#Alt+- add video-zoom -0.1 # zoom out +#Alt+BS set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0 # reset zoom and pan settings +#PGUP add chapter 1 # seek to the next chapter +#PGDWN add chapter -1 # seek to the previous chapter +#Shift+PGUP seek 600 # seek 10 minutes forward +#Shift+PGDWN seek -600 # seek 10 minutes backward +#[ multiply speed 1/1.1 # decrease the playback speed +#] multiply speed 1.1 # increase the playback speed +#{ multiply speed 0.5 # halve the playback speed +#} multiply speed 2.0 # double the playback speed +#BS set speed 1.0 # reset the speed to normal +#Shift+BS revert-seek # undo the previous (or marked) seek +#Shift+Ctrl+BS revert-seek mark # mark the position for revert-seek +#q quit +#Q quit-watch-later # exit and remember the playback position +#q {encode} quit 4 +#ESC set fullscreen no # leave fullscreen +#ESC {encode} quit 4 +#p cycle pause # toggle pause/playback mode +#. frame-step # advance one frame and pause +#, frame-back-step # go back by one frame and pause +#SPACE cycle pause # toggle pause/playback mode +#> playlist-next # skip to the next file +#ENTER playlist-next # skip to the next file +#< playlist-prev # skip to the previous file +#O no-osd cycle-values osd-level 3 1 # toggle displaying the OSD on user interaction or always +#o show-progress # show playback progress +#P show-progress # show playback progress +#i script-binding stats/display-stats # display information and statistics +#I script-binding stats/display-stats-toggle # toggle displaying information and statistics +#` script-binding console/enable # open the console +#z add sub-delay -0.1 # shift subtitles 100 ms earlier +#Z add sub-delay +0.1 # delay subtitles by 100 ms +#x add sub-delay +0.1 # delay subtitles by 100 ms +#ctrl++ add audio-delay 0.100 # change audio/video sync by delaying the audio +#ctrl+- add audio-delay -0.100 # change audio/video sync by shifting the audio earlier +#Shift+g add sub-scale +0.1 # increase the subtitle font size +#Shift+f add sub-scale -0.1 # decrease the subtitle font size +#9 add volume -2 +#/ add volume -2 +#0 add volume 2 +#* add volume 2 +#m cycle mute # toggle mute +#1 add contrast -1 +#2 add contrast 1 +#3 add brightness -1 +#4 add brightness 1 +#5 add gamma -1 +#6 add gamma 1 +#7 add saturation -1 +#8 add saturation 1 +#Alt+0 set current-window-scale 0.5 # halve the window size +#Alt+1 set current-window-scale 1.0 # reset the window size +#Alt+2 set current-window-scale 2.0 # double the window size +#d cycle deinterlace # toggle the deinterlacing filter +#r add sub-pos -1 # move subtitles up +#R add sub-pos +1 # move subtitles down +#t add sub-pos +1 # move subtitles down +#v cycle sub-visibility # hide or show the subtitles +#Alt+v cycle secondary-sub-visibility # hide or show the secondary subtitles +#V cycle sub-ass-vsfilter-aspect-compat # toggle stretching SSA/ASS subtitles with anamorphic videos to match the historical renderer +#u cycle-values sub-ass-override "force" "no" # toggle overriding SSA/ASS subtitle styles with the normal styles +#j cycle sub # switch subtitle track +#J cycle sub down # switch subtitle track backwards +#SHARP cycle audio # switch audio track +#_ cycle video # switch video track +#T cycle ontop # toggle placing the video on top of other windows +#f cycle fullscreen # toggle fullscreen +#s screenshot # take a screenshot of the video in its original resolution with subtitles +#S screenshot video # take a screenshot of the video in its original resolution without subtitles +#Ctrl+s screenshot window # take a screenshot of the window with OSD and subtitles +#Alt+s screenshot each-frame # automatically screenshot every frame; issue this command again to stop taking screenshots +#w add panscan -0.1 # decrease panscan +#W add panscan +0.1 # shrink black bars by cropping the video +#e add panscan +0.1 # shrink black bars by cropping the video +#A cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1" # cycle the video aspect ratio ("-1" is the container aspect) +#POWER quit +#PLAY cycle pause # toggle pause/playback mode +#PAUSE cycle pause # toggle pause/playback mode +#PLAYPAUSE cycle pause # toggle pause/playback mode +#PLAYONLY set pause no # unpause +#PAUSEONLY set pause yes # pause +#STOP quit +#FORWARD seek 60 # seek 1 minute forward +#REWIND seek -60 # seek 1 minute backward +#NEXT playlist-next # skip to the next file +#PREV playlist-prev # skip to the previous file +#VOLUME_UP add volume 2 +#VOLUME_DOWN add volume -2 +#MUTE cycle mute # toggle mute +#CLOSE_WIN quit +#CLOSE_WIN {encode} quit 4 +#ctrl+w quit +#E cycle edition # switch edition +#l ab-loop # set/clear A-B loop points +#L cycle-values loop-file "inf" "no" # toggle infinite looping +#ctrl+c quit 4 +#DEL script-binding osc/visibility # cycle OSC visibility between never, auto (mouse-move) and always +#ctrl+h cycle-values hwdec "auto" "no" # toggle hardware decoding +#F8 show-text ${playlist} # show the playlist +#F9 show-text ${track-list} # show the list of video, audio and sub tracks + +# +# Legacy bindings (may or may not be removed in the future) +# +#! add chapter -1 # seek to the previous chapter +#@ add chapter 1 # seek to the next chapter + +# +# Not assigned by default +# (not an exhaustive list of unbound commands) +# + +# ? cycle sub-forced-only # toggle DVD forced subs +# ? stop # stop playback (quit or enter idle mode) + + + + +# ========== CUSTOM KEYBINDINGS ========== + +# GENERAL +k cycle ontop + +# VIDEO +d cycle deband +D cycle deinterlace +n cycle video-unscaled +C cycle-values video-aspect-override "16:9" "4:3" "2.35:1" "-1" # cycle the video aspect ratio ("-1" is the container aspect) + +# AUDIO +a cycle audio +A cycle audio down +WHEEL_UP add volume 2 +WHEEL_DOWN add volume -2 +UP add volume 2 +DOWN add volume -2 +x add audio-delay -0.05 +X add audio-delay +0.05 + +# SUBTITLES +Shift+g add sub-scale +0.05 # increase the subtitle font size +Shift+f add sub-scale -0.05 # decrease the subtitle font size +E add sub-gauss +0.1 # https://mpv.io/manual/stable/#options-sub-gauss +R add sub-gauss -0.1 +z add sub-delay -0.05 # shift subtitles 50 ms earlier +Z add sub-delay +0.05 # shift subtitles 50 ms later +u cycle sub-gray # https://mpv.io/manual/stable/#options-sub-gray +U cycle blend-subtitles # https://mpv.io/manual/stable/#options-blend-subtitles +p cycle sub-fix-timing # https://mpv.io/manual/stable/#options-sub-fix-timing +g sub-reload # https://mpv.io/manual/stable/#command-interface-sub-reload +l cycle-values sub-ass-override "yes" "force" "no" # https://mpv.io/manual/stable/#options-sub-ass-override + +# SCRIPT KEYBINDINGS +~ script-message cycle-commands "apply-profile HDR ; show-text 'HDR profile applied'" "apply-profile HDR restore ; show-text 'HDR profile restored'" +# ~ script-message cycle-commands "apply-profile Clip ; show-text 'Clip profile applied'" "apply-profile Mobius ; show-text 'Mobius profile applied'" "apply-profile Reinhard ; show-text 'Reinhard profile applied'" "apply-profile Hable ; show-text 'Hable profile applied'" "apply-profile bt.2390 ; show-text 'bt.2390 profile applied'" "apply-profile Gamma ; show-text 'Gamma profile applied'" "apply-profile Linear ; show-text 'Linear profile applied'" +c script-binding cycle-visualizer # cycle audio visualizer (audio-visualizer.lua) +b script-binding set_gif_start # set the start timestamp for to make GIF (mpv-gif.lua) +B script-binding set_gif_end # set the stop timestamp for to make GIF (mpv-gif.lua) +ctrl+b script-binding make_gif # make the GIF using start and stop timestamps (mpv-gif.lua) +ctrl+B script-binding make_gif_with_subtitles # make the GIF using start and stop timestamps with subtitles (doesn't seem to work) (mpv-gif.lua) +ctrl+c script-binding copy-time # copy current timestamp to clipboard in HH:MM:SS.MS format (copy-time.lua) +ctrl+S script-binding toggle-seeker # toggle keyboard input to seek to inputted timestamp (seek-to.lua) +ctrl+v script-binding paste-timestamp # automatically seek to pasted timestamp from clipboard (seek-to.lua) +alt+b script-binding sponsorblock # toggle sponsorblock on/off (sponsorblock-minimal.lua) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/mpv.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/mpv.conf new file mode 100644 index 0000000..c1223d3 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/mpv.conf @@ -0,0 +1,247 @@ +# ========== GENERAL ========== + +# TODO: Actualy create a config instead of stealing someone else's + + +# This is what profile=gpu-hq do, and it lags a ton on my 1050ti (linux, might be driver issue): +# scale=spline36 +# cscale=spline36 +# dscale=mitchell +# dither-depth=auto +# correct-downscaling=yes +# linear-downscaling=yes +# sigmoid-upscaling=yes +# deband=yes + +#profile=gpu-hq # Allows for higher quality playback on mpv + # Uses scaling methods that are significantly better than default mpv, VLC and MPC +vo=gpu # https://mpv.io/manual/stable/#video-output-drivers-gpu +# priority=high # Makes PC prioritize MPV for allocating resources (Windows only) +# gpu-api=vulkan offers better overall performance but breaks too often, use opengl instead +# For displaying HDR content (not HDR -> SDR) "d3d11" is recommended (Windows only) +gpu-api=opengl # https://mpv.io/manual/stable/#options-gpu-api +fullscreen=no # Start in fullscreen +taskbar-progress=no # Disable playback progress rendering in taskbar +force-seekable=yes # If the player thinks that the media is not seekable, force enable seeking +keep-open=always # Don't close the player after finishing the video, + # and playback will never automatically advance to the next file in the playlist +reset-on-next-file=pause # After playing the next file in the playlist, + # it will automatically play the file instead of a paused state +hwdec=nvdec # Recommended method to do hardware decoding on NVIDIA GPUs + + + + +# ========== SCALERS AND SHADERS ========== + +# Default was (because of profile=gpu-hq): +# scale=spline36 +# cscale=spline36 +# dscale=mitchell + +#scale=ewa_lanczossharp # Luma upscaler +#dscale=mitchell # Luma downscaler +#cscale=ewa_lanczossoft # Chroma up&downscaler + +gpu-shader-cache-dir='~~/shaders/cache' # https://mpv.io/manual/stable/#options-gpu-shader-cache-dir + +# FSRCNNX (more powerful, but tend to cause overshoot), use nnedi13 (below) instead if you notice dropped frames +#glsl-shader="~~/shaders/FSRCNNX_x2_16-0-4-1.glsl" # Luma upscaler + +# nnedi3 +# use nns128 instead of nns256 if you notice dropped frames +# glsl-shader="~~/shaders/nnedi3-nns256-win8x4.hook" # Luma upscaler +# glsl-shader="~~/shaders/nnedi3-nns128-win8x4.hook" # Luma upscaler +# no-scaler-resizes-only # Fixing the pixel shift https://mpv.io/manual/stable/#options-scaler-resizes-only + +# SSimDownscaler +#glsl-shader="~~/shaders/SSimDownscaler.glsl" # Luma downscaler + +# KrigBilateral (people say it's bloat/overkill) +# glsl-shader="~~/shaders/KrigBilateral.glsl" # Chroma up&downscaler + + + + +# ========== CACHE ========== +# cache=yes +# cache-on-disk=yes +# cache-dir="C:\mpv-cache" +# demuxer-max-bytes=1000MiB +# demuxer-readahead-secs=300 +# demuxer-max-back-bytes=200MiB + + + + +# ========== DEBANDING ========== + +# Banding is a visual artifact, visual artifacts should never be in a video. +# Example of banding: https://imgur.com/32d77H0 +# Debanding is the process of removing said banding. +# 6 minute explanation of what causes banding: https://www.youtube.com/watch?v=h9j89L8eQQk + +deband=no # Turn on only for videos with banding. (Keybind=d) +deband-iterations=2 # https://mpv.io/manual/stable/#options-deband-iterations +deband-threshold=64 # https://mpv.io/manual/stable/#options-deband-threshold +deband-range=17 # https://mpv.io/manual/stable/#options-deband-range +deband-grain=12 # https://mpv.io/manual/stable/#options-deband-grain + + + + +# ========== ON SCREEN DISPLAY AND ON SCREEN CONTROLLER ========== + +osd-bar=no # Don't show a huge volume box on screen when turning the volume up/down +osc=no # Allows for custom OSC to be used https://github.com/cyl0/mpv-osc-morden-x +border=no # Optional for modern OSC, but recommended +cursor-autohide-fs-only=yes # If this option is given, the cursor is always visible in windowed mode + # In fullscreen mode, the cursor is shown or hidden according to --cursor-autohide +cursor-autohide=300 # Cursor hide in ms +osd-level=1 # https://mpv.io/manual/stable/#options-osd-level +osd-duration=1000 # Set the duration of the OSD messages in ms +hr-seek=yes # Select when to use precise seeks that are not limited to keyframes + # https://mpv.io/manual/stable/#options-hr-seek + +osd-font='Verdana' +osd-font-size=20 +osd-color='#FFFFFF' # Hex code for white +osd-border-color='#000000' # Hex code for black +osd-border-size=0.6 # Size for osd text and progress bar +osd-blur=0.2 # Gaussian blur factor. 0 means no blur applied (default) + + + + +# ========== LANGUAGE PRIORITY ========== + +alang=ja,jp,jpn,en,eng # Audio language priority +slang=en,eng # Subtitle language priority + + + + +# ========== AUDIO ========== + +volume=100 # default volume, 100 = unchanged +audio-file-auto=fuzzy # Load external audio with (almost) the same name as the video +volume-max=200 # Max volume of the player +audio-pitch-correction=yes # https://mpv.io/manual/stable/#options-audio-pitch-correction + + + + +# ========== SUBTITLES ========== + +demuxer-mkv-subtitle-preroll=yes # https://mpv.io/manual/stable/#options-mkv-subtitle-preroll +sub-ass-vsfilter-blur-compat=no # https://mpv.io/manual/stable/#options-sub-ass-vsfilter-aspect-compat +sub-fix-timing=no # https://mpv.io/manual/stable/#options-sub-fix-timing +sub-auto=fuzzy # https://mpv.io/manual/stable/#options-no-sub-auto + # Load all subs containing the media filename + +# The following options only apply to subtitles without own styling +sub-font='Netflix Sans Medium' # Specify font to use for subtitles that do not themselves specify a particular font +sub-font-size=40 +sub-color='#FFFFFFFF' +sub-border-color='#FF000000' +sub-border-size=2.0 +sub-shadow-offset=0 +sub-spacing=0.0 + + + + +# ========== SCREENSHOT ========== + +screenshot-format=png # Output format of screenshots +screenshot-high-bit-depth=yes # Same output bitdepth as the video. Set it "no" if you want to save disc space +screenshot-png-compression=1 # Compression of the PNG picture (1-9). + # Higher value means better compression, but takes more time +screenshot-directory="~/Pictures/mpv-screenshots" # Output directory +screenshot-template="%f-%wH.%wM.%wS.%wT-#%#00n" # Name format (filename-hour-minute-second-milisecond-number) + + + + +# ========== INTERPOLATION ========== + +# blend-subtitles=yes # Subtitle blending in scenechanges (smoother effect) +# video-sync=display-resample # Set the fps as the max of your monitor refresh rate +# # (only useful and needed with "interpolation=yes) +# interpolation=yes # Enable interpolation +# tscale=oversample # Interpolation method + + + + +# ========== PROFILES ========== + +[HDR] + profile-desc=Tone mapping using reinhard + profile-restore=copy-equal + tone-mapping=reinhard + tone-mapping-param=0.6 + hdr-compute-peak=no + blend-subtitles=video + +# [Clip] +# profile-desc=Tone mapping using clip +# profile-restore=copy-equal +# tone-mapping=clip + +# [Mobius] +# profile-desc=Tone mapping using mobius +# profile-restore=copy-equal +# tone-mapping=mobius + +# [Hable] +# profile-desc=Tone mapping using hable +# profile-restore=copy-equal +# tone-mapping=hable + +# [bt.2390] +# profile-desc=Tone mapping using bt.2390 +# profile-restore=copy-equal +# tone-mapping=bt.2390 + +# [Gamma] +# profile-desc=Tone mapping using gamma +# profile-restore=copy-equal +# tone-mapping=gamma + +# [Linear] +# profile-desc=Tone mapping using linear +# profile-restore=copy-equal +# tone-mapping=linear + + + + +# ========== AUTO PROFILES ========== + +# Auto profiles that automatically applies for WEB-DL anime that need some debanding + +[WEB-DL] + profile-desc=WEB-DL Anime (HatSubs, SubsPlease, HorribleSubs, Erai-raws) + profile-cond=string.match(p.filename, "HatSubs")~=nil or string.match(p.filename, "SubsPlease")~=nil or string.match(p.filename, "HorribleSubs")~=nil or string.match(p.filename, "Erai%-raws")~=nil + deband=yes + +# [Mini-Encode #1] +# profile-desc=Mini Encode Anime 1 +# profile-cond=string.match(p.filename, "ASW")~=nil or string.match(p.filename, "DKB")~=nil or string.match(p.filename, "Judas")~=nil +# deband=yes + +# [Mini-Encode #2] +# profile-desc=Mini Encode Anime 2 +# profile-cond=string.match(p.filename, "Cerberus")~=nil or string.match(p.filename, "Nep%_Blanc")~=nil or string.match(p.filename, "Reaktor")~=nil +# deband=yes + +# [Mini-Encode #3] +# profile-desc=Mini Encode Anime 3 +# profile-cond=string.match(p.filename, "Cleo")~=nil or string.match(p.filename, "Akihito")~=nil or string.match(p.filename, "Reaktor")~=nil +# deband=yes + +# [Mini-Encode #4] +# profile-desc=Mini Encode Anime 4 +# profile-cond=string.match(p.filename, "Ember")~=nil +# deband=yes diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/gif.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/gif.conf new file mode 100644 index 0000000..d06f864 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/gif.conf @@ -0,0 +1,10 @@ +# ========== CONFIGURATION FILE FOR MPV-GIF.LUA ========== + +# Sets the output directory +dir= + +# Sets the resolution of the output GIFs +rez=1920 + +# Sets the framerate of the output gifs. Default is 15. Don't go too overboard or the filesize will balloon +fps=23.976 diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/osc.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/osc.conf new file mode 100644 index 0000000..3586752 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/osc.conf @@ -0,0 +1,14 @@ +# ========== MORDEN-X ========== + +# Scaling of the controller when windowed +scalewindowed=0.8 + +# Scaling of the controller when fullscreen +scalefullscreen=0.8 + +# Duration in ms until the OSC hides if mouse movement +# Enforced non-negative for the user, but internally negative is 'always-on' +hidetimeout=300 + +# Whether to disable the hide timeout on pause +showonpause=no diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/thumbfast.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/thumbfast.conf new file mode 100644 index 0000000..b0ae90a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/script-opts/thumbfast.conf @@ -0,0 +1,17 @@ +# This is configuration file for thumbfast.lua +# The default options are listed in thumbfast.lua + +# Maximum thumbnail size in pixels (scaled down to fit) +# Values are scaled when hidpi is enabled +max_height=250 +max_width=250 + +# Spawn thumbnailer on file load for faster initial thumbnails +spawn_first=yes + +# Enable on network playback +# This allows thumbnailing in videos played over network, e.g. YouTube +network=yes + +# Enable hardware decoding +hwdec=yes diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/audio_visualizer.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/audio_visualizer.lua new file mode 100644 index 0000000..93936c0 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/audio_visualizer.lua @@ -0,0 +1,355 @@ +-- various audio visualization + +local opts = { + mode = "novideo", + -- off disable visualization + -- noalbumart enable visualization when no albumart and no video + -- novideo enable visualization when no video + -- force always enable visualization + + name = "showcqt", + -- off + -- showcqt + -- avectorscope + -- showspectrum + -- showcqtbar + -- showwaves + + quality = "medium", + -- verylow + -- low + -- medium + -- high + -- veryhigh + + height = 6, + -- [4 .. 12] + + forcewindow = true, + -- true (yes) always run visualizer regardless of force-window settings + -- false (no) does not run visualizer when force-window is no +} + +-- key bindings +-- cycle visualizer +local cycle_key = "c" + +if not (mp.get_property("options/lavfi-complex", "") == "") then + return +end + +local visualizer_name_list = { + "off", + "showcqt", + "avectorscope", + "showspectrum", + "showcqtbar", + "showwaves", +} + +local axis_0 = "image/png;base64," .. +"iVBORw0KGgoAAAANSUhEUgAAB4AAAAAgCAQAAABZEK0tAAAACXBIWXMAAA7EAAAOxAGVKw4bAAASO0lEQVR42u2de2wU1xXGV/IfSJEqVUJCQrIUISFFiiqhSFWkKFKFokpB1TqxHROT8ApueDgEE9u4MW4TSqFA" .. +"3TSUQmkSChRwII6BkAQCDSYlBtc1hiSA4/CyMcYGtsZvY3t3vXu719vVPjxzz71zd+wBvnOkdvHZ78w5v7mZmbt7Z9blgsFgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWCw+9HYBFbKboe8lE1A" .. +"HHHEEUccccQRRxxxxBFHHPEHNe4KBSJWijjiiCOOOOKII4444ogjjjjiD1icwWAwGAwGg8FgMBgM9hAYJsAwGAwGg8FgMBgMBnsozOVyR7zuQOSPdQeif0UcccQRRxxxxBFHHHHEEUcc8QciHn05KaPuwGDHYEfd" .. +"gUkZRgkQRxxxxBFHHHHEEUccccQRR/w+jhu9FQ6Hw+FwOBwOh8Ph8AfOx3Zz07LTXpmYzl89McuJOJ6e/czcCWkP7u4Gf/AHf/AHf/AHf/AHf/AHf/B/iPm73D99qaW2u7n7RqI/8lz4LWbxw1tVNjQh7dgH/Z6R" .. +"JdjBzmuXKxl7b42sdvqctrORCjqvTc1S3elx9V9vOXNy1+gcP3r+5K6Bu7y8YW/jqZO7PPU5S+Tyx/Fp9lysO/CLV1TqA3/wB3/wB3/wB3/wB3/wB3/wB/8x4e9yL37N+PlYP3o+/BazePVe+c089XL7D4n6qjJZ" .. +"dUlhrO7TLWo7wKj+gbvxkGbMv3sl8T3Ht8vlL8hLVPr6dq7Xqw/8wR/8wR/8wR/8wR/8wR/8wR/8k86f/89bK26eYazjSsXGsJ8ui90Bo+MVG7ua1HZAY1VoZj9Utacof8b8DSU15cGAmn5tcfnG/zaE2+tqUtsB" .. +"8fXv33T6w8EOxpprYt9xs46xgK9qT0Hes/M2rbr13cgA2SOfP+hnrLacZ68t72sNiYNvrbBWH/iDP/iDP/iDP/iDP/iDP/iDP/jbxD/8f3UVjF2v5q8ef9HlXpQbyjAcuxY7Gp8y8uV1878ZO7lLtsDNv+Ul/e5X" .. +"0b9cqlT9JGFypq+XscZTHM3bRaq7IFo/9z+/zZivPxrdsY7Xt35l5N8paV3XGavcLp8/4GMs0t+UrFvf8mESWcKgVh/4gz/4gz/4gz/4gz/4gz/4gz/428Q/vsC1xQFf9b5JGXcvf3/UqIE1bw57az5yuff/uadl" .. +"eZ5sefzzh8ZTsX+ZPmfvO5MzVRCWv8tXhz8xi6O5+pXeDqjaw1hvazTaFNqtjV/Hvn/Xho4ruUut7QCXO/vV4DBja95Ur0+Ff+Fy8Ad/8Ad/8Ad/8Ad/8Ad/8Ad/8FfgHy2wt7Wugs+d284aNxCJ36xTbb+7mbGj" .. +"76uq4p2vYb9U6XIf3sq/LH/qZfUdwOuvq/juM89F/nnD3ndi6gvt1C+06ovfAaGMN9Q6Bn/wB3/wB3/wB3/wB3/wB3/wB3/b+UcLjFjbOeMGRPFHnpu7yBzKPQ9jkduSH39xweKcJTlLFiz+Sbas3uVe9jrf8soC" .. +"rh8eZOzETpXtx9cfvgm7IOb76/6Y+sw8Je3Jl+R3AF/TfrpMXq/LX5yf5k/VR/FX6c8K/4npOUvi61XjT+l1+Yvz0/yp+ij+Kv1Z4f/oC4tyfz7POn9Kr8tfnJ/mT9VH8Vfpz9rxR+0EMPr4Q5+g9I4/Ipc5/oid" .. +"Pv7I9wf+9yf/1MxXc/kCQav8Rfpk8DfPL8dfVJ8Mf9n+MP7vv/HPr29/Nts6f0qfjOt/8/xy1/+i+mSu/2X7szb+017JWWK+qJYe/2K9/vgX5ZcZ/+L66PEv35/Djj/RAgfaG6u6Gs0/gTCPry4aaOdtNf/70ReM" .. +"NtJ/i7GyUv6qII/ffv1/Cxbly+ld7otH+Kr469Xcvd2M9d+OXSFP60fqv8vVzdWe+oCXsYA3+hV5/23GPvyjGaKfZB/a0nTK211/VH4H3DkfGiQ75PU6/On8Yv4y9Yn4S/dnkX9KWs1HXMEXUZj9epmIv4xehz+d" .. +"X8xfpj4Rf+n+LPJPzfz+GOfLWOfVuYvU+cvodfjT+cX8ZeoT8ZfuzyL/sJcU+geHB+ctVucvo9c7/lP5qeM/XZ/4+C/Zn0X+0+cEfGEf9n77qTp/Gb0Ofzq/mL9MfSL+0v1pjP8JabUf8wsvFvzkL1bGP6XXHf/i" .. +"/PT4p+qjxr9Ufxb5tzdE9i/3jBxV/jJ6Hf50fjF/mfpE/KX7szz+95R6e3jBd86b/cCLePzTer3xT+Wnxj9dn3j8S/Znmf9rr/e08Pz9HmvnX1qvx5/KT/Gn6xPzl+xP6/pHbQI8+vpHYgLM12i/t4axugMu94aS" .. +"tm8W5cY3wON/X8fYuYOJF6D3PN7ek7svf8VYTbnRRtrOMla1m796Zm74t564+e+FPwWg9VOz/AOJj7revEp++4lr0J98qb2BsfYfIv/mzzerrTBDdO4gX/3OmPwEeELaUGeowt/K63X40/nF/Gm9mL9Kf1b4f7mN" .. +"sdvnj29vrmbBq1+r85fR6/Cn84v503oxf5X+rPCv2MhYS+2xbRePDA92XlPnL6PX4U/nF/On9WL+Kv1Z4R8m2nmNb9Xst/FE/GX0Ovzp/GL+tF7MX6U/K/yfmcsfqXG58nLlD8e3rlbnL6PX4U/nF/On9WL+Kv1Z" .. +"G/+pmfwpop3Xaj769tDqIvXxT+v1xj+Vnxr/lJ4a//L9WeHf3jDQwffu5cq+NsaM17mI+MvodfjT+cX8ab2Yv0p/Vvgvez043Nd6uqzhy4DPU69+/JHR6/Cn84v503oxf5X+rPBPSeu+4R+s3ne6zD8w0G5856yI" .. +"v4xehz+dX8yf1ov5q/Rn9fpHbQI8+vpHegLscucuTQnN7fnTvmK/5o7G85alpI2+AA3jaP5PwBt9eHfUa/kK8JsRNFOypmbxXRJ5DDetP7QltLsG+ArysPe2hi45z8hvP3EHuNzb1jLm7Y386/SHoX/1zJgfjU9M" .. +"L3931sLI7nq7aGK6ygT4c75O3v/MXHm9Dn86v5g/rRfzV+tPnX/bue7m8OdNjaeGBxO/+aH5y+h1+NP5xfxpvZi/Wn/q/KdmrS0Ovzr/GWPGP4Mu4i+j1+FP5xfzp/Vi/mr9qfPnzu+84ZdXchPgeP4yeh3+dH4x" .. +"f1ov5q/Wnzp/PsGjfjJCxF9Gr8Ofzi/mT+vF/NX6szL++c+CfHPI+MgmM/5pvd74p/JT45/SU+NfpT91/sX5kUl1b2t3szp/Gb0Ofzq/mD+tF/NX60+d/4kdjIUnQ98eYsx4kbuIv4xehz+dX8yf1ov5q/Wnzn/m" .. +"Lxk7/eFIH+WM7Vinyl9Gr8Ofzi/mT+vF/NX6s3b9ozYBHn39Q0yAfzabPxb79vmi/Ih7vo89QEfjK94YfaftuU+CgfC0k4My+hJ8xnz/YGjG31BakprJPzFYnsefJRbJT+mfnce/+G89G/ls7cmX6vYzFgwW54eH" .. +"Ar39+P7eWlGx0VPPF0xE4o/N7LvFv9bfUxr+z6cg785Fxm7GXWKJJnjTsgN+xg5uKsovzt/2+4tHWHD0CnSRXo8/nT+Rf96yWP6UnuKv2p8q/6deDt/dMTG9+8Y9jyz/aHe0Xo8/nV/Mn9JT/FX7szb+p8/ZvGqw" .. +"o7NRnT+tT8b4F+WXGf/mernxL9+fOv+nZ/v6Oq9+9Q+zCR7Fn9Lr8qfyU/zFepq/Wn+q/PkEr/1Sc03LmSPvGU8yxPxpvR5/Or+YP6Wn+Kv2p8p/UoZ/sKvx6dkbSqbPkT//RunRej3+dH4xf0pP8Vftz9rxn196" .. +"m91XJ3P8F+mTcfwX5Zc5/pvr5Y7/8v2p8t+6mrHPt05Ie2LWnfP3/qvOn9br8afzi/lTeoq/an+q/GctDH8r63Lvfcf4m0oxf1qvx5/OL+ZP6Sn+qv1ZPf6Yu9zxx3QCnLuUPzR6tEVShOLRdeMsGEicmTediszl" .. +"d65nrLTEaDOfbuFFcbm3h/9oMbfIwUKsX1v8f2XI+CdtM+aH73fkFl7wTG0/vv6IBXwlhdH3FC739ob/7usN5w8Gd/9BboI4a+Fofo1f/zhddoKqy5+egIr5i/WJ/J+dF+Vf+7Fkf0ngPymj5Qxjxz6Q4990amJ6" .. +"4mWKmT45/M3zy/E308vyF/anzX/Lav63oU6jB03I8Bfpk8FflF+Gv7lejj/Rnyb/H44Hg0X5lduNJ3g0f7Fen784P81fpJfhT/anxf+JWSMLxgYHOxJ/rEGOP6XX5U/lp/iL9TR/if60+OcuDV0sXeCXcEG/0ZM9" .. +"Kf6UXpc/lZ/iL9bT/CX6S8L51+Wu/djq8UesT8751zy/3PnXTC97/hX2p8mf32Tm7Q0O+/tXvGGFv1ivz1+cn+Yv0svwJ/vT4p+S1tfq69+/6eRufpc9fxKyGn9Kr8ufyk/xF+tp/hL9JeX4Y+ayxx/TCfC07PAt" .. +"zGY7ID7e70m8zb/pdOwE9I+/Nt5QacmdC1EQnVc/+lOkRLF+1kK+tG3k8rKLD+/JmXevhHfJ8ODx7TLbT+wvGLznaTr12uuJlxEXDocfZcOt7WxkWSM9wZuW3R3NH/T3tzfsKVWZoOryl5kAi/iL9Yn8J2Uk8lft" .. +"zwr/adn8AfDG9wmM5l9WOvo9Ir0+f1F+Gf7mejn+Kv1Z4f/YzENbQtOMQHP16AOLDH+xXp+/KL8Mf3O9HH+V/lT5/6aQBS8cdrnNJngUf1qvx5/KT/EX62n+qv2pj/+y0tKSiekpafVfMBb74C7Z8U/pdce/OD89" .. +"/kV6mfGv1p8q/02r+F+aq/f+6e6lYDD26aFy/Gm9Hn8qP8VfrKf5q/Zn7fqHP6rGeIGvzPFfrE/G9Y95frnrHzO97PWPfH+q/FMz275hbLAj4AsGyt9V50/r9fhT+Sn+Yj3NX7U/9fFflD/QMfLX0DVWzT718U/p" .. +"dce/OD89/kV6mfGv1p/V44+Zyx5/TCfAuv7NoeBw+AHYfAnygsXm73xs5sqCzauK8uO/xpfX626f8tTMksLNqwryjB6QT00wKdfVJyO/MX/n9GfGf/ZCftdBVZnVvLr6ZOU34++U/kTjn/snf9F7Wp+uXje/aPw7" .. +"oT9j/vyjjb62riZ+kmk7a/yMA5Hr6pOX35i/c/qjxn9BHmOf/dV6fl29bn5q/I93f8b8V7zBHzLHX5UUMnZyl2pWXX3y8hvzd05/ovFflK93htHVJyO/aPw7oT9j/l+8z9i2tSlpU7MaqwL+KVmqWXX1yctvzN85" .. +"/ZmP/ylZ61fmLj25m2/JSmZdfXLym49/Z/RHnX9tcf0U+zcxtvEt/up6dcCnfgEy3no5fxAmwPdnf+uKfb1BP/9s76mX/75u7PVOr8/u/qK+Yx1j5p/x2q93en329Hf5q86r3PlPvd08o35809U7vT67+5ucGbnX" .. +"74M1jO3aMNZ6p9dnd39TsoaHum/wVzlLGPvXP8Za7/T67O4v7GcPitZ32K93en329dfwZdCfOvIAoyN/Y8xskbF9eqfXZ3d/EV/zZsDXdV30qDl79U6vz+7+bPJknAAG2oe6jm///hhjdfvvPz3lxfkXDtcfZay7" .. +"pf5obYX02vKk6Z1en739PTuP37PQ1VR/tP6o5yJjks92S5re6fXZ3Z/L3VzdXP351oObqvcNdfv6jX/mwU690+uzu7+wn9jZfinysInx0Du9Pvv662rsaancvn9TzT5vz1D3tOyx1ju9Prv7c7n5mb3hn59u6bjC" .. +"TJcY26l3en1298f9nqf7+njqnV6fff2Vv8t/4urEzu8+8/V7e1Izx1rv9Prs7u/xF2srTuy4+q9gYKizcPnY651en9392ezJSLJ+5VAXX4DdenZq1v2oF3vl9uhN1v7+2Id1j43e6fXZ29/shfF3RryQM7Z6p9dn" .. +"d38ud/W+yL0Zva3rV4693un12d0f9x+n8x+zZ+yeZ1LGeOidXp+d/ZVv9PaE9293i9kdtnbqnV6f3f3x59u3/Cf84JQv3h8PvdPrs7s/l/uR5/pu6Sxu19U7vT57+6v9OHyG6WuL/tTLWOqdXp+9/WXk8AfMMea5" .. +"+ItXxkPv9Prs7s9mT9YpIHepTvvjrYfD4Waempm7tDj/+QVWl7fo6p1en939wcfXH3luweKifLMfmbFf7/T67O6Pe/ary/MefWH89E6vz+7+4OPpU7Pyls38pfXzi67e6fXZ29/kzOV5OrMLXb3T67O7P1sdBxc4" .. +"HA6Hw+FwOBwOhz8UDgRwOBwOh8PhcDgcDn8oHAjgcDgcDofD4XA4HP4w+P8AQEuXMXpD8/kAAAAASUVORK5CYII=" + +local axis_1 = "image/png;base64," .. +"iVBORw0KGgoAAAANSUhEUgAAB4AAAAAwCAQAAABaxq+2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAATVklEQVR42u2df0xUZ7rHJ+EPkiabbGJiYkLSmJg0aTYxTTZNmiYb09ykZjO0QLHY+quy9Qe1YgG5Re62rlev" .. +"etluXVevt62rrkq1FLG21epW7FqUZRFtq1LqLxAR1FnkNwIzw8x752V27gzDOe/zvuedA0f5fp9kd+SZ7zPv8zlvz5x35pwzLhcEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAE" .. +"QRAEQRAEQRAEQRAEQRAEQRAEQRBkq1gyK2F3Q1HCkpFHHnnkkUceeeSRRx555JFH/lHNu0KJiEqQRx555JFHHnnkkUceeeSRR/4RyzMIgiAIgiAIgiAImgTCAhiCIAiCIAiCIAiaFHK53JGoq4j8sa4i+lfkkUce" .. +"eeSRRx555JFHHnnkkX8k8tGHU9PrKgY7BjvqKqamGxVAHnnkkUceeeSRRx555JFHHvmHOG/0VAQCgUAgEAgEAoFAIB65AAIEAoFAIBAIBAKBQEyKAAIEAoFAIBAIBAKBQEyKGN+Xm5mV+tqUNP7oqblOxPHsvOcW" .. +"JKc+upsb/MEf/MEf/MEf/MEf/MEf/MF/EvN3uX/5Skttd3P3rfh47IXwU8zyR3eovFBy6omP+j0jN+EKdt64WsnYB+tlvbPmt52PjKDzxoxM1Y0+avw3W86d3ju2xs9ePL134D4f3rC38czpvZ767OVy9UfxafZc" .. +"rqv49Wsq4wN/8Ad/8Ad/8Ad/8Ad/8Ad/8Af/ceHvci97w/gXkn72YvgpZvnqA/Iv88yr7T/F+6tKZd3FBbG+z7erbQCj8Q/cHw1p9qL71+Kfc3KXXP383Hinr2/PJr3xgT/4gz/4gz/4gz/4gz/4gz/4g3/C+fP/" .. +"eWf17XOMdVwr3xKOs6WxG2BsvnxLV5PaBmisCq3sh6r2F+bNXrS5uKYsGFDzbygq2/LPhnB7XU1qG2D0+A9tPfvxYAdjzTWxz7hdx1jAV7U/P/f5hVvX3vlhZILsl68f9DNWW8ar15b1tYbMwXdWWxsf+IM/+IM/" .. +"+IM/+IM/+IM/+IM/+NvEP/x/deWM3azmj5582eVemhOqMBx7LnY0P33ky+vmvzN2eq/sALf9jg/pP/89+pcrlaqfJEzL8PUy1niGo3m3UHUTRMfP44/vMubrj2Z3b+Tj27Qm8u+k1K6bjFXukq8f8DEW6W965p3v" .. +"+TSJnMKgNj7wB3/wB3/wB3/wB3/wB3/wB3/wt4n/6AFuKAr4qg9OTb9/9cfjRg2sf3vYW/OJy33ojz0tq3Jlh8c/f2g8E/uXWfMPvDctQwVh2fv87PCn5nI017/R2wBV+xnrbY1mm0KbtfHb2Ofv3dxxLWeFtQ3g" .. +"cme9HhxmbP3b6uNT4V+wCvzBH/zBH/zBH/zBH/zBH/zBH/wV+EcH2NtaV87Xzm3njRuI5G/Xqbbf3czY8Q9VXaODn8N+pdLlPrqDf1n+zKvqG4CPv678hy88l/nnDQfeixlfaKN+pTW+0RsgVPGWWsfgD/7gD/7g" .. +"D/7gD/7gD/7gD/7gbzv/6AAjartg3IAo/9gLC5aaQ3ngYSxyWfKTLy9elr08e/niZb/IkvW73Cvf5K+8Jp/7hwcZO7VH5fVHjz98EXZ+zPfX/THjM4uk1Kdfkd8A/Jz2s6Xyfl3+4vo0f2p8FH+V/qzwn5KWvXz0" .. +"eNX4U35d/uL6NH9qfBR/lf6s8H/8paU5/7bQOn/Kr8tfXJ/mT42P4q/Sn7X9j9obwNj9D/0Gpbf/EYXM/kcc9P5Hvj/wfzj5p2S8nsNPELTKX+RPBH/z+nL8ReOT4S/bH+b/wzf/+fHtr+ZZ50/5E3H8b15f7vhf" .. +"ND6Z43/Z/qzN/9TXspebn1RLz3+xX3/+i+rLzH/x+Oj5L9+fw/Y/0QEOtDdWdTWafwJhnl9XONDO22r+++MvGb1I/x3GSkv4o/xcfvn1vxQszJPzu9yXj/Gz4m9W8/B2M9Z/N/YMedo/Mv773N1c7akPeBkLeKNf" .. +"kfffZezj35sh+kXWke1NZ7zd9cflN8C9i6FJslver8Ofri/mLzM+EX/p/izyT0qt+YQ7+EkUZr9eJuIv49fhT9cX85cZn4i/dH8W+adk/HiC82Ws8/qCper8Zfw6/On6Yv4y4xPxl+7PIv9wFBf4B4cHFy5T5y/j" .. +"19v/U/Wp/T89PvH+X7I/i/xnzQ/4wjHs/f5zdf4yfh3+dH0xf5nxifhL96cx/5NTaz/lB14s+NmfrMx/yq87/8X16flPjY+a/1L9WeTf3hDZvjzSs1X5y/h1+NP1xfxlxifiL92f5fm/v8Tbwwd876LZD7yI5z/t" .. +"15v/VH1q/tPjE89/yf4s83/jzZ4WXr/fY+39l/br8afqU/zp8Yn5S/andfyjtgAee/wjsQDm52h/sJ6xugqXe3Nx23dLc0Y3wPN/3sjYhcPxB6APPN7e0/uufsNYTZnRi7SdZ6xqH3/03ILwbz1x+R+EPwWg/TMy" .. +"/QPxt7retlb+9ePPQX/6lfYGxtp/ivyb39+sttwM0YXD/Ox3xuQXwMmpQ52hEf5O3q/Dn64v5k/7xfxV+rPC/+udjN29eHJXczULXv9Wnb+MX4c/XV/Mn/aL+av0Z4V/+RbGWmpP7Lx8bHiw84Y6fxm/Dn+6vpg/" .. +"7RfzV+nPCv8w0c4b/FXNfhtPxF/Gr8Ofri/mT/vF/FX6s8L/uQX8lhpXK69W/nRyxzp1/jJ+Hf50fTF/2i/mr9KftfmfksHvItp5o+aT74+sK1Sf/7Rfb/5T9an5T/mp+S/fnxX+7Q0DHXzrXq3sa2PM+DwXEX8Z" .. +"vw5/ur6YP+0X81fpzwr/lW8Gh/taz5Y2fB3weerV9z8yfh3+dH0xf9ov5q/SnxX+Sandt/yD1QfPlvoHBtqNr5wV8Zfx6/Cn64v5034xf5X+rB7/qC2Axx7/SC+AXe6cFUmhtT2/21fs19zRfO7KpNSxB6BhHM3/" .. +"CHijN++ORi0/A/x2BM30zBmZfJNEbsNN+49sD22uAX4GeTh6W0OHnOfkXz9+A7jcOzcw5u2N/Ovsx6F/9cxeFM1PSSt7f+6SyOZ6t3BKmsoC+Et+nrz/uQXyfh3+dH0xf9ov5q/Wnzr/tgvdzeHPmxrPDA/Gf/ND" .. +"85fx6/Cn64v5034xf7X+1PnPyNxQFH508QvGjH8GXcRfxq/Dn64v5k/7xfzV+lPnz4NfecMPr+QWwKP5y/h1+NP1xfxpv5i/Wn/q/PkCj/rJCBF/Gb8Of7q+mD/tF/NX68/K/Oc/C/LdEeM9m8z8p/1685+qT81/" .. +"yk/Nf5X+1PkX5UUW1b2t3c3q/GX8Ovzp+mL+tF/MX60/df6ndjMWXgx9f4Qx45PcRfxl/Dr86fpi/rRfzF+tP3X+c37D2NmPR/ooY2z3RlX+Mn4d/nR9MX/aL+av1p+14x+1BfDY4x9iAfyrefy22HcvFuZFwvNj" .. +"7A46ml/91tgrbS98FgyEl50clNGX4LMX+QdDK/6GkuKUDP6Jwapcfi+xSH3K//xC/sV/6/nIZ2tPv1J3iLFgsCgvPBXo1x/d3zury7d46vkJE5H8E3P67vCv9feXhP/zyc+9d5mx26MOsUQLvJlZAT9jh7cW5hXl" .. +"7fyvy8dYcOwZ6CK/Hn+6fjz/3JWx/Ck/xV+1P1X+z7wavrpjSlr3rQceWf7R7mi/Hn+6vpg/5af4q/Znbf7Pmr9t7WBHZ6M6f9qfiPkvqi8z/839cvNfvj91/s/O8/V1Xv/mL2YLPIo/5dflT9Wn+Iv9NH+1/lT5" .. +"8wVe+5XmmpZzxz4wXmSI+dN+Pf50fTF/yk/xV+1Plf/UdP9gV+Oz8zYXz5ov//4bpUf79fjT9cX8KT/FX7U/a/t/fuhtdl2dzP5f5E/E/l9UX2b/b+6X2//L96fKf8c6xr7ckZz61Nx7Fx/8U50/7dfjT9cX86f8" .. +"FH/V/lT5z10S/lbW5T7wnvE3lWL+tF+PP11fzJ/yU/xV+7O6/zEPuf2P6QI4ZwW/afRYRUqE8tHzxlkwEL8ybzoTWcvv2cRYSbHRy3y+nQ+K2709/EeLuSI7C7F/Q9G/nCHxT9pmLwpf78gVPuGZev3R448o4Csu" .. +"iD6nYJW3N/x3X2+4fjC477/lFohzl4zl1/jtz9NkF6i6/OkFqJi/2B/P//mFUf61n0r2lwD+U9NbzjF24iM5/k1npqTFH6aY+RPD37y+HH8zvyx/YX/a/Lev438b6jS60YQMf5E/EfxF9WX4m/vl+BP9afL/6WQw" .. +"WJhXuct4gUfzF/v1+Yvr0/xFfhn+ZH9a/J+aO3LC2OBgR/yPNcjxp/y6/Kn6FH+xn+Yv0Z8W/5wVoYOlS/wQLug3urMnxZ/y6/Kn6lP8xX6av0R/CXj/dblrP7W6/xH7E/P+a15f7v3XzC/7/ivsT5M/v8jM2xsc" .. +"9vevfssKf7Ffn7+4Ps1f5JfhT/anxT8pta/V139o6+l9/Cp7fidkNf6UX5c/VZ/iL/bT/CX6S8j+xyxk9z+mC+CZWeFLmM02wOh8vyf+Mv+ms7EL0N//h/ELlRTfuxQF0Xn9kz9Ehij2z13CT20bObzs4tN7Wsb9" .. +"a+FNMjx4cpfM68f3Fww+8DSdeePN+MOIS0fDt7LhajsfOa2RXuDNzOqO1g/6+9sb9peoLFB1+cssgEX8xf54/lPT4/mr9meF/8wsfgN44+sExvIvLRn7HJFfn7+ovgx/c78cf5X+rPB/Ys6R7aFlRqC5euyORYa/" .. +"2K/PX1Rfhr+5X46/Sn+q/H9bwIKXjrrcZgs8ij/t1+NP1af4i/00f9X+1Od/aUlJ8ZS0pNT6rxiLvXGX7Pyn/LrzX1yfnv8iv8z8V+tPlf/WtfwvzdUH/nD/SjAYe/dQOf60X48/VZ/iL/bT/FX7s3b8w29VY3yC" .. +"r8z+X+xPxPGPeX254x8zv+zxj3x/qvxTMtq+Y2ywI+ALBsreV+dP+/X4U/Up/mI/zV+1P/X5X5g30DHy19AxVs1B9flP+XXnv7g+Pf9Ffpn5r9af1f2PWcjuf0wXwLrx3ZHgcPgG2PwU5MXLzJ/5xJw1+dvWFuaN" .. +"/hpf3q/7+lSkZBQXbFubn2t0g3xqgUmFrj8R9Y35O6c/M/7zlvCrDqpKrdbV9Seqvhl/p/Qnmv88PvuT3t36dP269UXz3wn9GfPnH230tXU18TeZtvPG9zgQha4/cfWN+TunP2r+5+cy9sX/WK+v69etT83/ie7P" .. +"mP/qt/hN5vij4gLGTu9VrarrT1x9Y/7O6U80/wvz9N5hdP2JqC+a/07oz5j/Vx8ytnNDUuqMzMaqgH96pmpVXX/i6hvzd05/5vN/euamNTkrTu/jr2Slsq4/MfXN578z+qPef20J/RKHtjK25R3+6GZ1wKd+ADLR" .. +"frl4FBbAD2d/G4t8vUE//2zvmVf/vHH8/U4fn939RWP3RsbMP+O13+/08dnT39VvOq/z4D/1dvuc+v5N1+/08dnd37SMyLV+H61nbO/m8fY7fXx29zc9c3io+xZ/lL2csb/9Zbz9Th+f3f2F4/xh0fkd9vudPj77" .. +"+mv4OuhPGbmB0bH/ZczsJGP7/E4fn939RWL92wFf103Rrebs9Tt9fHb3Z1Mk4g1goH2o6+SuH08wVnfo4fNTUZR36Wj9cca6W+qP15ZLn1ueML/Tx2dvf88v5NcsdDXVH68/7rnMmOS93RLmd/r47O7P5W6ubq7+" .. +"csfhrdUHh7p9/cY/82Cn3+njs7u/cJza034lcrOJifA7fXz29dfV2NNSuevQ1pqD3p6h7plZ4+13+vjs7s/l5u/sDX/9fHvHNWZ6irGdfqePz+7+eDzwdN+cSL/Tx2dff2Xv85+4OrXnhy98/d6elIzx9jt9fHb3" .. +"9+TLteWndl//WzAw1Fmwavz9Th+f3f3ZHIkosmnNUBc/Abv1/IzMh9Evjspd0Yus/f2xN+seH7/Tx2dvf/OWjL4y4qXs8fU7fXx29+dyVx+MXJvR27ppzfj7nT4+u/vj8fM0/mP2jD3wTE2fCL/Tx2dnf2VbvD3h" .. +"7dvdYnaFrZ1+p4/P7v74/e1b/hG+ccpXH06E3+njs7s/l/uxF/ru6Jzcrut3+vjs7a/20/A7TF9b9KdextPv9PHZ2196Nr/BHGOey79+bSL8Th+f3f3ZHIl6C8hZodP+RPsRCIRZpGTkrCjKe3Gx1dNbdP1OH5/d" .. +"/SEmNh57YfGywjyzH5mx3+/08dndH4+s11flPv7SxPmdPj67+0NMZMzIzF055zfW3190/U4fn739TctYlauzutD1O318dvdna2DngkAgEAgEAoFAIBCISRFAgEAgEAgEAoFAIBCISRHRh1PT6yqGOoc66yqMr6NC" .. +"HnnkkUceeeSRRx555JFHHvmHOB99WFcRuZGO8b00kUceeeSRRx555JFHHnnkkUf+Ic4zCIIgCIIgCIIgCJoEwgIYgiAIgiAIgiAImhRyRcVK/v+vJS4DIY888sgjjzzyyCOPPPLII4/8o5B3seTQU+6EooQlI488" .. +"8sgjjzzyyCOPPPLII4/8o5qHIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCIAiCEqf/A/SNfayCCBqGAAAAAElFTkSuQmCC" + +local options = require 'mp.options' +local msg = require 'mp.msg' + +options.read_options(opts) +opts.height = math.min(12, math.max(4, opts.height)) +opts.height = math.floor(opts.height) + +if not opts.forcewindow and mp.get_property('force-window') == "no" then + return +end + +local function get_visualizer(name, quality, vtrack) + local w, h, fps + + if quality == "verylow" then + w = 640 + fps = 30 + elseif quality == "low" then + w = 960 + fps = 30 + elseif quality == "medium" then + w = 1280 + fps = 60 + elseif quality == "high" then + w = 1920 + fps = 60 + elseif quality == "veryhigh" then + w = 2560 + fps = 60 + else + msg.log("error", "invalid quality") + return "" + end + + h = w * opts.height / 16 + + if name == "showcqt" then + local count = math.ceil(w * 180 / 1920 / fps) + + return "[aid1] asplit [ao]," .. + "afifo, aformat = channel_layouts = stereo," .. + "firequalizer =" .. + "gain = '1.4884e8 * f*f*f / (f*f + 424.36) / (f*f + 1.4884e8) / sqrt(f*f + 25122.25)':" .. + "scale = linlin:" .. + "wfunc = tukey:" .. + "zero_phase = on:" .. + "fft2 = on," .. + "showcqt =" .. + "fps =" .. fps .. ":" .. + "size =" .. w .. "x" .. h .. ":" .. + "count =" .. count .. ":" .. + "csp = bt709:" .. + "bar_g = 2:" .. + "sono_g = 4:" .. + "bar_v = 9:" .. + "sono_v = 17:" .. + "axisfile = data\\\\:'" .. axis_0 .. "':" .. + "font = 'Nimbus Mono L,Courier New,mono|bold':" .. + "fontcolor = 'st(0, (midi(f)-53.5)/12); st(1, 0.5 - 0.5 * cos(PI*ld(0))); r(1-ld(1)) + b(ld(1))':" .. + "tc = 0.33:" .. + "attack = 0.033:" .. + "tlength = 'st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'," .. + "format = yuv420p [vo]" + + + elseif name == "avectorscope" then + return "[aid1] asplit [ao]," .. + "afifo," .. + "aformat =" .. + "sample_rates = 192000," .. + "avectorscope =" .. + "size =" .. w .. "x" .. h .. ":" .. + "r =" .. fps .. "," .. + "format = rgb0 [vo]" + + + elseif name == "showspectrum" then + return "[aid1] asplit [ao]," .. + "afifo," .. + "showspectrum =" .. + "size =" .. w .. "x" .. h .. ":" .. + "win_func = blackman [vo]" + + + elseif name == "showcqtbar" then + local axis_h = math.ceil(w * 12 / 1920) * 4 + + return "[aid1] asplit [ao]," .. + "afifo, aformat = channel_layouts = stereo," .. + "firequalizer =" .. + "gain = '1.4884e8 * f*f*f / (f*f + 424.36) / (f*f + 1.4884e8) / sqrt(f*f + 25122.25)':" .. + "scale = linlin:" .. + "wfunc = tukey:" .. + "zero_phase = on:" .. + "fft2 = on," .. + "showcqt =" .. + "fps =" .. fps .. ":" .. + "size =" .. w .. "x" .. (h + axis_h)/2 .. ":" .. + "count = 1:" .. + "csp = bt709:" .. + "bar_g = 2:" .. + "sono_g = 4:" .. + "bar_v = 9:" .. + "sono_v = 17:" .. + "sono_h = 0:" .. + "axisfile = data\\\\:'" .. axis_1 .. "':" .. + "axis_h =" .. axis_h .. ":" .. + "font = 'Nimbus Mono L,Courier New,mono|bold':" .. + "fontcolor = 'st(0, (midi(f)-53.5)/12); st(1, 0.5 - 0.5 * cos(PI*ld(0))); r(1-ld(1)) + b(ld(1))':" .. + "tc = 0.33:" .. + "attack = 0.033:" .. + "tlength = 'st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'," .. + "format = yuv420p," .. + "split [v0]," .. + "crop =" .. + "h =" .. (h - axis_h)/2 .. ":" .. + "y = 0," .. + "vflip [v1];" .. + "[v0][v1] vstack [vo]" + + + elseif name == "showwaves" then + return "[aid1] asplit [ao]," .. + "afifo," .. + "showwaves =" .. + "size =" .. w .. "x" .. h .. ":" .. + "r =" .. fps .. ":" .. + "mode = p2p," .. + "format = rgb0 [vo]" + elseif name == "off" then + local hasvideo = false + for id, track in ipairs(mp.get_property_native("track-list")) do + if track.type == "video" then + hasvideo = true + break + end + end + if hasvideo then + return "[aid1] asetpts=PTS [ao]; [vid1] setpts=PTS [vo]" + else + return "[aid1] asetpts=PTS [ao];" .. + "color =" .. + "c = Black:" .. + "s =" .. w .. "x" .. h .. "," .. + "format = yuv420p [vo]" + end + end + + msg.log("error", "invalid visualizer name") + return "" +end + +local function select_visualizer(vtrack) + if opts.mode == "off" then + return "" + elseif opts.mode == "force" then + return get_visualizer(opts.name, opts.quality, vtrack) + elseif opts.mode == "noalbumart" then + if vtrack == nil then + return get_visualizer(opts.name, opts.quality, vtrack) + end + return "" + elseif opts.mode == "novideo" then + if vtrack == nil or vtrack.albumart then + return get_visualizer(opts.name, opts.quality, vtrack) + end + return "" + end + + msg.log("error", "invalid mode") + return "" +end + +local function visualizer_hook() + local count = mp.get_property_number("track-list/count", -1) + if count <= 0 then + return + end + + local atrack = mp.get_property_native("current-tracks/audio") + local vtrack = mp.get_property_native("current-tracks/video") + + --no tracks selected (yet) + if atrack == nil and vtrack == nil then + for id, track in ipairs(mp.get_property_native("track-list")) do + if track.type == "video" and (vtrack == nil or vtrack.albumart == true) and mp.get_property("vid") ~= "no" then + vtrack = track + elseif track.type == "audio" then + atrack = track + end + end + end + + local lavfi = select_visualizer(vtrack) + --prevent endless loop + if lavfi ~= mp.get_property("options/lavfi-complex", "") then + mp.set_property("options/lavfi-complex", lavfi) + end +end + +mp.add_hook("on_preloaded", 50, visualizer_hook) +mp.observe_property("current-tracks/audio", "native", visualizer_hook) +mp.observe_property("current-tracks/video", "native", visualizer_hook) + +local function cycle_visualizer() + local i, index = 1 + for i = 1, #visualizer_name_list do + if (visualizer_name_list[i] == opts.name) then + index = i + 1 + if index > #visualizer_name_list then + index = 1 + end + break + end + end + opts.name = visualizer_name_list[index] + visualizer_hook() +end + +mp.add_key_binding(cycle_key, "cycle-visualizer", cycle_visualizer) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/autoload.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/autoload.lua new file mode 100644 index 0000000..b4d40b5 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/autoload.lua @@ -0,0 +1,221 @@ +-- This script automatically loads playlist entries before and after the +-- the currently played file. It does so by scanning the directory a file is +-- located in when starting playback. It sorts the directory entries +-- alphabetically, and adds entries before and after the current file to +-- the internal playlist. (It stops if it would add an already existing +-- playlist entry at the same position - this makes it "stable".) +-- Add at most 5000 * 2 files when starting a file (before + after). + +--[[ +To configure this script use file autoload.conf in directory script-opts (the "script-opts" +directory must be in the mpv configuration directory, typically ~/.config/mpv/). + +Example configuration would be: + +disabled=no +images=no +videos=yes +audio=yes +ignore_hidden=yes + +--]] + +MAXENTRIES = 5000 + +local msg = require 'mp.msg' +local options = require 'mp.options' +local utils = require 'mp.utils' + +o = { + disabled = false, + images = true, + videos = true, + audio = true, + ignore_hidden = true +} +options.read_options(o) + +function Set (t) + local set = {} + for _, v in pairs(t) do set[v] = true end + return set +end + +function SetUnion (a,b) + local res = {} + for k in pairs(a) do res[k] = true end + for k in pairs(b) do res[k] = true end + return res +end + +EXTENSIONS_VIDEO = Set { + '3g2', '3gp', 'avi', 'flv', 'm2ts', 'm4v', 'mj2', 'mkv', 'mov', + 'mp4', 'mpeg', 'mpg', 'ogv', 'rmvb', 'webm', 'wmv', 'y4m' +} + +EXTENSIONS_AUDIO = Set { + 'aiff', 'ape', 'au', 'flac', 'm4a', 'mka', 'mp3', 'oga', 'ogg', + 'ogm', 'opus', 'wav', 'wma' +} + +EXTENSIONS_IMAGES = Set { + 'avif', 'bmp', 'gif', 'j2k', 'jp2', 'jpeg', 'jpg', 'jxl', 'png', + 'svg', 'tga', 'tif', 'tiff', 'webp' +} + +EXTENSIONS = Set {} +if o.videos then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_VIDEO) end +if o.audio then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_AUDIO) end +if o.images then EXTENSIONS = SetUnion(EXTENSIONS, EXTENSIONS_IMAGES) end + +function add_files_at(index, files) + index = index - 1 + local oldcount = mp.get_property_number("playlist-count", 1) + for i = 1, #files do + mp.commandv("loadfile", files[i], "append") + mp.commandv("playlist-move", oldcount + i - 1, index + i - 1) + end +end + +function get_extension(path) + match = string.match(path, "%.([^%.]+)$" ) + if match == nil then + return "nomatch" + else + return match + end +end + +table.filter = function(t, iter) + for i = #t, 1, -1 do + if not iter(t[i]) then + table.remove(t, i) + end + end +end + +-- alphanum sorting for humans in Lua +-- http://notebook.kulchenko.com/algorithms/alphanumeric-natural-sorting-for-humans-in-lua + +function alphanumsort(filenames) + local function padnum(n, d) + return #d > 0 and ("%03d%s%.12f"):format(#n, n, tonumber(d) / (10 ^ #d)) + or ("%03d%s"):format(#n, n) + end + + local tuples = {} + for i, f in ipairs(filenames) do + tuples[i] = {f:lower():gsub("0*(%d+)%.?(%d*)", padnum), f} + end + table.sort(tuples, function(a, b) + return a[1] == b[1] and #b[2] < #a[2] or a[1] < b[1] + end) + for i, tuple in ipairs(tuples) do filenames[i] = tuple[2] end + return filenames +end + +local autoloaded = nil + +function get_playlist_filenames() + local filenames = {} + for n = 0, pl_count - 1, 1 do + local filename = mp.get_property('playlist/'..n..'/filename') + local _, file = utils.split_path(filename) + filenames[file] = true + end + return filenames +end + +function find_and_add_entries() + local path = mp.get_property("path", "") + local dir, filename = utils.split_path(path) + msg.trace(("dir: %s, filename: %s"):format(dir, filename)) + if o.disabled then + msg.verbose("stopping: autoload disabled") + return + elseif #dir == 0 then + msg.verbose("stopping: not a local path") + return + end + + pl_count = mp.get_property_number("playlist-count", 1) + -- check if this is a manually made playlist + if (pl_count > 1 and autoloaded == nil) or + (pl_count == 1 and EXTENSIONS[string.lower(get_extension(filename))] == nil) then + msg.verbose("stopping: manually made playlist") + return + else + autoloaded = true + end + + local pl = mp.get_property_native("playlist", {}) + local pl_current = mp.get_property_number("playlist-pos-1", 1) + msg.trace(("playlist-pos-1: %s, playlist: %s"):format(pl_current, + utils.to_string(pl))) + + local files = utils.readdir(dir, "files") + if files == nil then + msg.verbose("no other files in directory") + return + end + table.filter(files, function (v, k) + -- The current file could be a hidden file, ignoring it doesn't load other + -- files from the current directory. + if (o.ignore_hidden and not (v == filename) and string.match(v, "^%.")) then + return false + end + local ext = get_extension(v) + if ext == nil then + return false + end + return EXTENSIONS[string.lower(ext)] + end) + alphanumsort(files) + + if dir == "." then + dir = "" + end + + -- Find the current pl entry (dir+"/"+filename) in the sorted dir list + local current + for i = 1, #files do + if files[i] == filename then + current = i + break + end + end + if current == nil then + return + end + msg.trace("current file position in files: "..current) + + local append = {[-1] = {}, [1] = {}} + local filenames = get_playlist_filenames() + for direction = -1, 1, 2 do -- 2 iterations, with direction = -1 and +1 + for i = 1, MAXENTRIES do + local file = files[current + i * direction] + if file == nil or file[1] == "." then + break + end + + local filepath = dir .. file + -- skip files already in playlist + if filenames[file] then break end + + if direction == -1 then + if pl_current == 1 then -- never add additional entries in the middle + msg.info("Prepending " .. file) + table.insert(append[-1], 1, filepath) + end + else + msg.info("Adding " .. file) + table.insert(append[1], filepath) + end + end + end + + add_files_at(pl_current + 1, append[1]) + add_files_at(pl_current, append[-1]) +end + +mp.register_event("start-file", find_and_add_entries) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/copy-time.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/copy-time.lua new file mode 100644 index 0000000..fde717a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/copy-time.lua @@ -0,0 +1,38 @@ +-- copy-time (Windows version) + +-- Copies current timecode in HH:MM:SS.MS format to clipboard + +------------------------------------------------------------------------------- +-- Script adapted by Alex Rogers (https://github.com/linguisticmind) +-- Modified from https://github.com/Arieleg/mpv-copyTime +-- Released under GNU GPL 3.0 + +require "mp" + +function set_clipboard (text) + local echo + if text ~= "" then + for i = 1, 2 do text = text:gsub("[%^&\\<>|]", "^%0") end + echo = "(echo " .. text:gsub("\n", " & echo ") .. ")" + else + echo = "echo:" + end + mp.commandv("run", "cmd.exe", "/d", "/c", echo .. " | clip") +end + +function copy_time() + local time_pos = mp.get_property_number("time-pos") + local time_in_seconds = time_pos + local time_seg = time_pos % 60 + time_pos = time_pos - time_seg + local time_hours = math.floor(time_pos / 3600) + time_pos = time_pos - (time_hours * 3600) + local time_minutes = time_pos/60 + time_seg,time_ms=string.format("%.03f", time_seg):match"([^.]*).(.*)" + time = string.format("%02d:%02d:%02d.%s", time_hours, time_minutes, time_seg, time_ms) + set_clipboard(time) + mp.osd_message(string.format("Copied to clipboard: %s", time)) +end + +-- the keybinding here is set to nil on purpose 'cause I modified the keybinding (in input.conf) +mp.add_key_binding(nil, "copy-time", copy_time) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-commands.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-commands.lua new file mode 100644 index 0000000..e288632 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-commands.lua @@ -0,0 +1,58 @@ +--[=====[ + script to cycle commands with a keybind, accomplished through script messages + available at: https://github.com/CogentRedTester/mpv-scripts + + syntax: + script-message cycle-commands "command1" "command2" "command3" + + The syntax of each command is identical to the standard input.conf syntax, but each command must be within + a pair of double quotes. + + Commands with mutiword arguments require you to send double quotes just like normal command syntax, however, + you will need to escape the quotes with a backslash so that they are sent as part of the string. + Semicolons also work exactly like they do normally, so you can easily send multiple commands each cycle. + + Here is an example of a standard input.conf entry: + + script-message cycle-commands "show-text one 1000 ; print-text two" "show-text \"three four\"" + + This would, on keypress one, print 'one' to the OSD for 1 second and 'two' to the console, + and on keypress two 'three four' would be printed to the OSD. + Notice how the quotation marks around 'three four' are escaped using backslashes. + All other syntax details should be exactly the same as usual input commands. + + There are no limits to the number of commands, and the script message can be used as often as one wants, + the script stores the current iteration for each unique cycle command, so there should be no overlap + unless one binds the exact same command string (including spacing) +]=====]-- + +local mp = require 'mp' +local msg = require 'mp.msg' + +--keeps track of the current position for a specific cycle +local iterators = {} + +--main function to identify and run the cycles +local function main(...) + local commands = {...} + + --to identify the specific cycle we'll concatenate all the strings together to use as our table key + local str = table.concat(commands, " | ") + msg.trace('recieved:', str) + + if iterators[str] == nil then + msg.debug('unknown cycle, creating iterator') + iterators[str] = 1 + else + iterators[str] = iterators[str] + 1 + if iterators[str] > #commands then iterators[str] = 1 end + end + + --mp.command should run the commands exactly as if they were entered in input.conf. + --This should provide universal support for all input.conf command syntax + local cmd = commands[ iterators[str] ] + msg.verbose('sending command:', cmd) + mp.command(cmd) +end + +mp.register_script_message('cycle-commands', main) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-profile.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-profile.lua new file mode 100644 index 0000000..356ebf1 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/cycle-profile.lua @@ -0,0 +1,105 @@ +--[[ + script to cycle profiles with a keybind, accomplished through script messages + available at: https://github.com/CogentRedTester/mpv-scripts + + syntax: + script-message cycle-profiles "profile1;profile2;profile3" + + You must use semicolons to separate the profiles, do not include any spaces that are not part of the profile name. + The script will print the profile description to the screen when switching, if there is no profile description, then it just prints the name +]]-- + +--change this to change what character separates the profile names +seperator = ";" + +msg = require 'mp.msg' + +--splits the profiles string into an array of profile names +--function taken from: https://stackoverflow.com/questions/1426954/split-string-in-lua/7615129#7615129 +function mysplit (inputstr, sep) + if sep == nil then + sep = "%s" + end + local t={} + for str in string.gmatch(inputstr, "([^"..sep.."]+)") do + table.insert(t, str) + end + return t +end + +--table of all available profiles and options +profileList = mp.get_property_native('profile-list') + +--keeps track of current profile for every unique cycle +iterator = {} + +--stores descriptions for profiles +--once requested a description is stored here so it does not need to be found again +profilesDescs = {} + +--if trying to cycle to an unknown profile this function is run to find a description to print +function findDesc(profile) + msg.verbose('unknown profile ' .. profile .. ', searching for description') + + for i = 1, #profileList, 1 do + if profileList[i]['name'] == profile then + msg.verbose('profile found') + local desc = profileList[i]['profile-desc'] + + if desc ~= nil then + msg.verbose('description found') + profilesDescs[profile] = desc + else + msg.verbose('no description, will use name') + profilesDescs[profile] = profile + end + return + end + end + + msg.verbose('profile not found') + profilesDescs[profile] = "no profile '" .. profile .. "'" +end + +--prints the profile description to the OSD +--if the profile has not been requested before during the session then it runs findDesc() +function printProfileDesc(profile) + local desc = profilesDescs[profile] + if desc == nil then + findDesc(profile) + desc = profilesDescs[profile] + end + + msg.verbose('profile description: ' .. desc) + mp.osd_message(desc) +end + +function main(profileStr) + --if there is not already an iterator for this cycle then it creates one + if iterator[profileStr] == nil then + msg.verbose('unknown cycle, creating new iterator') + iterator[profileStr] = 1 + end + local i = iterator[profileStr] + + --converts the string into an array of profile names + local profiles = mysplit(profileStr, seperator) + msg.verbose('cycling ' .. tostring(profiles)) + msg.verbose("number of profiles: " .. tostring(#profiles)) + + --sends the command to apply the profile + msg.info("applying profile " .. profiles[i]) + mp.commandv('apply-profile', profiles[i]) + + --prints the profile description to the OSD + printProfileDesc(profiles[i]) + + --moves the iterator + iterator[profileStr] = iterator[profileStr] + 1 + if iterator[profileStr] > #profiles then + msg.verbose('reached end of profiles, wrapping back to start') + iterator[profileStr] = 1 + end +end + +mp.register_script_message('cycle-profiles', main) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/modernx.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/modernx.lua new file mode 100644 index 0000000..2ea3a78 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/modernx.lua @@ -0,0 +1,2741 @@ +-- mpv-osc-modern by maoiscat +-- email:valarmor@163.com +-- https://github.com/maoiscat/mpv-osc-modern + +-- fork by cyl0 +-- https://github.com/cyl0/ModernX/ + +local assdraw = require 'mp.assdraw' +local msg = require 'mp.msg' +local opt = require 'mp.options' +local utils = require 'mp.utils' + +-- +-- Parameters +-- +-- default user option values +-- may change them in osc.conf +local user_opts = { + showwindowed = true, -- show OSC when windowed? + showfullscreen = true, -- show OSC when fullscreen? + idlescreen = true, -- draw logo and text when idle + scalewindowed = 1.0, -- scaling of the controller when windowed + scalefullscreen = 1.0, -- scaling of the controller when fullscreen + scaleforcedwindow = 2.0, -- scaling when rendered on a forced window + vidscale = true, -- scale the controller with the video? + hidetimeout = 1500, -- duration in ms until the OSC hides if no + -- mouse movement. enforced non-negative for the + -- user, but internally negative is 'always-on'. + fadeduration = 250, -- duration of fade out in ms, 0 = no fade + minmousemove = 1, -- minimum amount of pixels the mouse has to + -- move between ticks to make the OSC show up + iamaprogrammer = false, -- use native mpv values and disable OSC + -- internal track list management (and some + -- functions that depend on it) + font = 'mpv-osd-symbols', -- default osc font + seekbarhandlesize = 1.0, -- size ratio of the slider handle, range 0 ~ 1 + seekrange = true, -- show seekrange overlay + seekrangealpha = 64, -- transparency of seekranges + seekbarkeyframes = true, -- use keyframes when dragging the seekbar + showjump = true, -- show "jump forward/backward 5 seconds" buttons + -- shift+left-click to step 1 frame and + -- right-click to jump 1 minute + jumpamount = 5, -- change the jump amount (in seconds by default) + jumpiconnumber = true, -- show different icon when jumpamount is 5, 10, or 30 + jumpmode = 'exact', -- seek mode for jump buttons. e.g. + -- 'exact', 'relative+keyframes', etc. + title = '${media-title}', -- string compatible with property-expansion + -- to be shown as OSC title + showtitle = true, -- show title in OSC + showonpause = true, -- whether to disable the hide timeout on pause + timetotal = true, -- display total time instead of remaining time? + timems = false, -- Display time down to millliseconds by default + visibility = 'auto', -- only used at init to set visibility_mode(...) + windowcontrols = 'auto', -- whether to show window controls + greenandgrumpy = false, -- disable santa hat + language = 'eng', -- eng=English, chs=Chinese + volumecontrol = true, -- whether to show mute button and volumne slider + keyboardnavigation = false, -- enable directional keyboard navigation + chapter_fmt = "Chapter: %s", -- chapter print format for seekbar-hover. "no" to disable +} + +-- Icons for jump button depending on jumpamount +local jumpicons = { + [5] = {'\239\142\177', '\239\142\163'}, + [10] = {'\239\142\175', '\239\142\161'}, + [30] = {'\239\142\176', '\239\142\162'}, + default = {'\239\142\178 ', '\239\142\178'}, -- second icon is mirrored in layout() +} + +local icons = { + previous = '\239\142\181', + next = '\239\142\180', + play = '\239\142\170', + pause = '\239\142\167', + backward = '\239\142\160', + forward = '\239\142\159', + audio = '\239\142\183', + volume = '\239\142\188', + volume_mute = '\239\142\187', + sub = '\239\143\147', + minimize = '\239\133\172', + fullscreen = '\239\133\173', + info = '', +} + +-- Localization +local language = { + ['eng'] = { + welcome = '{\\fs24\\1c&H0&\\1c&HFFFFFF&}Drop files or URLs to play here.', -- this text appears when mpv starts + off = 'OFF', + na = 'n/a', + none = 'none', + video = 'Video', + audio = 'Audio', + subtitle = 'Subtitle', + available = 'Available ', + track = ' Tracks:', + playlist = 'Playlist', + nolist = 'Empty playlist.', + chapter = 'Chapter', + nochapter = 'No chapters.', + }, + ['chs'] = { + welcome = '{\\1c&H00\\bord0\\fs30\\fn微软雅黑 light\\fscx125}MPV{\\fscx100} 播放器', -- this text appears when mpv starts + off = '关闭', + na = 'n/a', + none = '无', + video = '视频', + audio = '音频', + subtitle = '字幕', + available = '可选', + track = ':', + playlist = '播放列表', + nolist = '无列表信息', + chapter = '章节', + nochapter = '无章节信息', + }, + ['pl'] = { + welcome = '{\\fs24\\1c&H0&\\1c&HFFFFFF&}Upuść plik lub łącze URL do odtworzenia.', -- this text appears when mpv starts + off = 'WYŁ.', + na = 'n/a', + none = 'nic', + video = 'Wideo', + audio = 'Ścieżka audio', + subtitle = 'Napisy', + available = 'Dostępne ', + track = ' Ścieżki:', + playlist = 'Lista odtwarzania', + nolist = 'Lista odtwarzania pusta.', + chapter = 'Rozdział', + nochapter = 'Brak rozdziałów.', + } +} +-- read options from config and command-line +opt.read_options(user_opts, 'osc', function(list) update_options(list) end) +-- apply lang opts +local texts = language[user_opts.language] +local osc_param = { -- calculated by osc_init() + playresy = 0, -- canvas size Y + playresx = 0, -- canvas size X + display_aspect = 1, + unscaled_y = 0, + areas = {}, +} + +local osc_styles = { + TransBg = '{\\blur100\\bord150\\1c&H000000&\\3c&H000000&}', + SeekbarBg = '{\\blur0\\bord0\\1c&HFFFFFF&}', + SeekbarFg = '{\\blur1\\bord1\\1c&HE39C42&}', + VolumebarBg = '{\\blur0\\bord0\\1c&H999999&}', + VolumebarFg = '{\\blur1\\bord1\\1c&HFFFFFF&}', + Ctrl1 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs36\\fnmaterial-design-iconic-font}', + Ctrl2 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs24\\fnmaterial-design-iconic-font}', + Ctrl2Flip = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs24\\fnmaterial-design-iconic-font\\fry180', + Ctrl3 = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&HFFFFFF&\\fs24\\fnmaterial-design-iconic-font}', + Time = '{\\blur0\\bord0\\1c&HFFFFFF&\\3c&H000000&\\fs17\\fn' .. user_opts.font .. '}', + Tooltip = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H000000&\\fs18\\fn' .. user_opts.font .. '}', + Title = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H0\\fs38\\q2\\fn' .. user_opts.font .. '}', + WinCtrl = '{\\blur1\\bord0.5\\1c&HFFFFFF&\\3c&H0\\fs20\\fnmpv-osd-symbols}', + elementDown = '{\\1c&H999999&}', + elementHighlight = '{\\blur1\\bord1\\1c&HFFC033&}', +} + +-- internal states, do not touch +local state = { + showtime, -- time of last invocation (last mouse move) + osc_visible = false, + anistart, -- time when the animation started + anitype, -- current type of animation + animation, -- current animation alpha + mouse_down_counter = 0, -- used for softrepeat + active_element = nil, -- nil = none, 0 = background, 1+ = see elements[] + active_event_source = nil, -- the 'button' that issued the current event + rightTC_trem = not user_opts.timetotal, -- if the right timecode should display total or remaining time + mp_screen_sizeX, mp_screen_sizeY, -- last screen-resolution, to detect resolution changes to issue reINITs + initREQ = false, -- is a re-init request pending? + last_mouseX, last_mouseY, -- last mouse position, to detect significant mouse movement + mouse_in_window = false, + message_text, + message_hide_timer, + fullscreen = false, + tick_timer = nil, + tick_last_time = 0, -- when the last tick() was run + hide_timer = nil, + cache_state = nil, + idle = false, + enabled = true, + input_enabled = true, + showhide_enabled = false, + dmx_cache = 0, + border = true, + maximized = false, + osd = mp.create_osd_overlay('ass-events'), + mute = false, + lastvisibility = user_opts.visibility, -- save last visibility on pause if showonpause + fulltime = user_opts.timems, + highlight_element = 'cy_audio', + chapter_list = {}, -- sorted by time +} + +local thumbfast = { + width = 0, + height = 0, + disabled = true, + available = false +} + +local window_control_box_width = 138 +local tick_delay = 0.03 + +local is_december = os.date("*t").month == 12 + +--- Automatically disable OSC +local builtin_osc_enabled = mp.get_property_native('osc') +if builtin_osc_enabled then + mp.set_property_native('osc', false) +end + +-- + + +-- WindowControl helpers +function window_controls_enabled() + val = user_opts.windowcontrols + if val == 'auto' then + return (not state.border) or state.fullscreen + else + return val ~= 'no' + end +end + + + +function build_keyboard_controls() + + -- prepare the main button row + local bottom_button_line = {} + table.insert(bottom_button_line, 'cy_audio') + table.insert(bottom_button_line, 'cy_sub') + table.insert(bottom_button_line, 'pl_prev') + table.insert(bottom_button_line, 'skipback') + if user_opts.showjump then + table.insert(bottom_button_line, 'jumpback') + end + table.insert(bottom_button_line, 'playpause') + if user_opts.showjump then + table.insert(bottom_button_line, 'jumpfrwd') + end + table.insert(bottom_button_line, 'skipfrwd') + table.insert(bottom_button_line, 'pl_next') + table.insert(bottom_button_line, 'tog_info') + table.insert(bottom_button_line, 'tog_fs') + + -- build up the main mapping object + local mapping = {} + if window_controls_enabled() then + table.insert(mapping, { + 'minimize', + 'maximize', + 'close' + }) + end + table.insert(mapping, { + 'seekbar' + }) + table.insert(mapping, bottom_button_line) + + return mapping +end + + +-- +-- Helperfunctions +-- + +function set_osd(res_x, res_y, text) + if state.osd.res_x == res_x and + state.osd.res_y == res_y and + state.osd.data == text then + return + end + state.osd.res_x = res_x + state.osd.res_y = res_y + state.osd.data = text + state.osd.z = 1000 + state.osd:update() +end + +-- scale factor for translating between real and virtual ASS coordinates +function get_virt_scale_factor() + local w, h = mp.get_osd_size() + if w <= 0 or h <= 0 then + return 0, 0 + end + return osc_param.playresx / w, osc_param.playresy / h +end + +-- return mouse position in virtual ASS coordinates (playresx/y) +function get_virt_mouse_pos() + if state.mouse_in_window then + local sx, sy = get_virt_scale_factor() + local x, y = mp.get_mouse_pos() + return x * sx, y * sy + else + return -1, -1 + end +end + +function set_virt_mouse_area(x0, y0, x1, y1, name) + local sx, sy = get_virt_scale_factor() + mp.set_mouse_area(x0 / sx, y0 / sy, x1 / sx, y1 / sy, name) +end + +function scale_value(x0, x1, y0, y1, val) + local m = (y1 - y0) / (x1 - x0) + local b = y0 - (m * x0) + return (m * val) + b +end + +-- returns hitbox spanning coordinates (top left, bottom right corner) +-- according to alignment +function get_hitbox_coords(x, y, an, w, h) + + local alignments = { + [1] = function () return x, y-h, x+w, y end, + [2] = function () return x-(w/2), y-h, x+(w/2), y end, + [3] = function () return x-w, y-h, x, y end, + + [4] = function () return x, y-(h/2), x+w, y+(h/2) end, + [5] = function () return x-(w/2), y-(h/2), x+(w/2), y+(h/2) end, + [6] = function () return x-w, y-(h/2), x, y+(h/2) end, + + [7] = function () return x, y, x+w, y+h end, + [8] = function () return x-(w/2), y, x+(w/2), y+h end, + [9] = function () return x-w, y, x, y+h end, + } + + return alignments[an]() +end + +function get_hitbox_coords_geo(geometry) + return get_hitbox_coords(geometry.x, geometry.y, geometry.an, + geometry.w, geometry.h) +end + +function get_element_hitbox(element) + return element.hitbox.x1, element.hitbox.y1, + element.hitbox.x2, element.hitbox.y2 +end + +function mouse_hit(element) + return mouse_hit_coords(get_element_hitbox(element)) +end + +function mouse_hit_coords(bX1, bY1, bX2, bY2) + local mX, mY = get_virt_mouse_pos() + return (mX >= bX1 and mX <= bX2 and mY >= bY1 and mY <= bY2) +end + +function limit_range(min, max, val) + if val > max then + val = max + elseif val < min then + val = min + end + return val +end + +-- translate value into element coordinates +function get_slider_ele_pos_for(element, val) + + local ele_pos = scale_value( + element.slider.min.value, element.slider.max.value, + element.slider.min.ele_pos, element.slider.max.ele_pos, + val) + + return limit_range( + element.slider.min.ele_pos, element.slider.max.ele_pos, + ele_pos) +end + +-- translates global (mouse) coordinates to value +function get_slider_value_at(element, glob_pos) + + local val = scale_value( + element.slider.min.glob_pos, element.slider.max.glob_pos, + element.slider.min.value, element.slider.max.value, + glob_pos) + + return limit_range( + element.slider.min.value, element.slider.max.value, + val) +end + +-- get value at current mouse position +function get_slider_value(element) + return get_slider_value_at(element, get_virt_mouse_pos()) +end + +function countone(val) + if not (user_opts.iamaprogrammer) then + val = val + 1 + end + return val +end + +-- multiplies two alpha values, formular can probably be improved +function mult_alpha(alphaA, alphaB) + return 255 - (((1-(alphaA/255)) * (1-(alphaB/255))) * 255) +end + +function add_area(name, x1, y1, x2, y2) + -- create area if needed + if (osc_param.areas[name] == nil) then + osc_param.areas[name] = {} + end + table.insert(osc_param.areas[name], {x1=x1, y1=y1, x2=x2, y2=y2}) +end + +function ass_append_alpha(ass, alpha, modifier) + local ar = {} + + for ai, av in pairs(alpha) do + av = mult_alpha(av, modifier) + if state.animation then + av = mult_alpha(av, state.animation) + end + ar[ai] = av + end + + ass:append(string.format('{\\1a&H%X&\\2a&H%X&\\3a&H%X&\\4a&H%X&}', + ar[1], ar[2], ar[3], ar[4])) +end + +function ass_draw_cir_cw(ass, x, y, r) + ass:round_rect_cw(x-r, y-r, x+r, y+r, r) +end + +function ass_draw_rr_h_cw(ass, x0, y0, x1, y1, r1, hexagon, r2) + if hexagon then + ass:hexagon_cw(x0, y0, x1, y1, r1, r2) + else + ass:round_rect_cw(x0, y0, x1, y1, r1, r2) + end +end + +function ass_draw_rr_h_ccw(ass, x0, y0, x1, y1, r1, hexagon, r2) + if hexagon then + ass:hexagon_ccw(x0, y0, x1, y1, r1, r2) + else + ass:round_rect_ccw(x0, y0, x1, y1, r1, r2) + end +end + + +-- +-- Tracklist Management +-- + +local nicetypes = {video = texts.video, audio = texts.audio, sub = texts.subtitle} + +-- updates the OSC internal playlists, should be run each time the track-layout changes +function update_tracklist() + local tracktable = mp.get_property_native('track-list', {}) + + -- by osc_id + tracks_osc = {} + tracks_osc.video, tracks_osc.audio, tracks_osc.sub = {}, {}, {} + -- by mpv_id + tracks_mpv = {} + tracks_mpv.video, tracks_mpv.audio, tracks_mpv.sub = {}, {}, {} + for n = 1, #tracktable do + if not (tracktable[n].type == 'unknown') then + local type = tracktable[n].type + local mpv_id = tonumber(tracktable[n].id) + + -- by osc_id + table.insert(tracks_osc[type], tracktable[n]) + + -- by mpv_id + tracks_mpv[type][mpv_id] = tracktable[n] + tracks_mpv[type][mpv_id].osc_id = #tracks_osc[type] + end + end +end + +-- return a nice list of tracks of the given type (video, audio, sub) +function get_tracklist(type) + local msg = texts.available .. nicetypes[type] .. texts.track + if #tracks_osc[type] == 0 then + msg = msg .. texts.none + else + for n = 1, #tracks_osc[type] do + local track = tracks_osc[type][n] + local lang, title, selected = 'unknown', '', '○' + if not(track.lang == nil) then lang = track.lang end + if not(track.title == nil) then title = track.title end + if (track.id == tonumber(mp.get_property(type))) then + selected = '●' + end + msg = msg..'\n'..selected..' '..n..': ['..lang..'] '..title + end + end + return msg +end + +-- relatively change the track of given by tracks + --(+1 -> next, -1 -> previous) +function set_track(type, next) + local current_track_mpv, current_track_osc + if (mp.get_property(type) == 'no') then + current_track_osc = 0 + else + current_track_mpv = tonumber(mp.get_property(type)) + current_track_osc = tracks_mpv[type][current_track_mpv].osc_id + end + local new_track_osc = (current_track_osc + next) % (#tracks_osc[type] + 1) + local new_track_mpv + if new_track_osc == 0 then + new_track_mpv = 'no' + else + new_track_mpv = tracks_osc[type][new_track_osc].id + end + + mp.commandv('set', type, new_track_mpv) + +-- if (new_track_osc == 0) then +-- show_message(nicetypes[type] .. ' Track: none') +-- else +-- show_message(nicetypes[type] .. ' Track: ' +-- .. new_track_osc .. '/' .. #tracks_osc[type] +-- .. ' ['.. (tracks_osc[type][new_track_osc].lang or 'unknown') ..'] ' +-- .. (tracks_osc[type][new_track_osc].title or '')) +-- end +end + +-- get the currently selected track of , OSC-style counted +function get_track(type) + local track = mp.get_property(type) + if track ~= 'no' and track ~= nil then + local tr = tracks_mpv[type][tonumber(track)] + if tr then + return tr.osc_id + end + end + return 0 +end + +-- +-- Element Management +-- + +local elements = {} + +function prepare_elements() + + -- remove elements without layout or invisble + local elements2 = {} + for n, element in pairs(elements) do + if not (element.layout == nil) and (element.visible) then + table.insert(elements2, element) + end + end + elements = elements2 + + function elem_compare (a, b) + return a.layout.layer < b.layout.layer + end + + table.sort(elements, elem_compare) + + + for _,element in pairs(elements) do + + local elem_geo = element.layout.geometry + + -- Calculate the hitbox + local bX1, bY1, bX2, bY2 = get_hitbox_coords_geo(elem_geo) + element.hitbox = {x1 = bX1, y1 = bY1, x2 = bX2, y2 = bY2} + + local style_ass = assdraw.ass_new() + + -- prepare static elements + style_ass:append('{}') -- hack to troll new_event into inserting a \n + style_ass:new_event() + style_ass:pos(elem_geo.x, elem_geo.y) + style_ass:an(elem_geo.an) + style_ass:append(element.layout.style) + + element.style_ass = style_ass + + local static_ass = assdraw.ass_new() + + + if (element.type == 'box') then + --draw box + static_ass:draw_start() + ass_draw_rr_h_cw(static_ass, 0, 0, elem_geo.w, elem_geo.h, + element.layout.box.radius, element.layout.box.hexagon) + static_ass:draw_stop() + + elseif (element.type == 'slider') then + --draw static slider parts + local slider_lo = element.layout.slider + -- calculate positions of min and max points + element.slider.min.ele_pos = user_opts.seekbarhandlesize * elem_geo.h / 2 + element.slider.max.ele_pos = elem_geo.w - element.slider.min.ele_pos + element.slider.min.glob_pos = element.hitbox.x1 + element.slider.min.ele_pos + element.slider.max.glob_pos = element.hitbox.x1 + element.slider.max.ele_pos + + static_ass:draw_start() + -- a hack which prepares the whole slider area to allow center placements such like an=5 + static_ass:rect_cw(0, 0, elem_geo.w, elem_geo.h) + static_ass:rect_ccw(0, 0, elem_geo.w, elem_geo.h) + -- marker nibbles + if not (element.slider.markerF == nil) and (slider_lo.gap > 0) then + local markers = element.slider.markerF() + for _,marker in pairs(markers) do + if (marker >= element.slider.min.value) and (marker <= element.slider.max.value) then + local s = get_slider_ele_pos_for(element, marker) + if (slider_lo.gap > 5) then -- draw triangles + --top + if (slider_lo.nibbles_top) then + static_ass:move_to(s - 3, slider_lo.gap - 5) + static_ass:line_to(s + 3, slider_lo.gap - 5) + static_ass:line_to(s, slider_lo.gap - 1) + end + --bottom + if (slider_lo.nibbles_bottom) then + static_ass:move_to(s - 3, elem_geo.h - slider_lo.gap + 5) + static_ass:line_to(s, elem_geo.h - slider_lo.gap + 1) + static_ass:line_to(s + 3, elem_geo.h - slider_lo.gap + 5) + end + else -- draw 2x1px nibbles + --top + if (slider_lo.nibbles_top) then + static_ass:rect_cw(s - 1, 0, s + 1, slider_lo.gap); + end + --bottom + if (slider_lo.nibbles_bottom) then + static_ass:rect_cw(s - 1, elem_geo.h-slider_lo.gap, s + 1, elem_geo.h); + end + end + end + end + end + end + + element.static_ass = static_ass + + -- if the element is supposed to be disabled, + -- style it accordingly and kill the eventresponders + if not (element.enabled) then + element.layout.alpha[1] = 136 + element.eventresponder = nil + end + -- gray out the element if it is toggled off + if (element.off) then + element.layout.alpha[1] = 136 + end + + end +end + +-- +-- Element Rendering +-- + +-- returns nil or a chapter element from the native property chapter-list +function get_chapter(possec) + local cl = state.chapter_list -- sorted, get latest before possec, if any + + for n=#cl,1,-1 do + if possec >= cl[n].time then + return cl[n] + end + end +end + +function render_elements(master_ass) + -- when the slider is dragged or hovered and we have a target chapter name + -- then we use it instead of the normal title. we calculate it before the + -- render iterations because the title may be rendered before the slider. + state.forced_title = nil + if thumbfast.disabled then + local se, ae = state.slider_element, elements[state.active_element] + if user_opts.chapter_fmt ~= "no" and se and (ae == se or (not ae and mouse_hit(se))) then + local dur = mp.get_property_number("duration", 0) + if dur > 0 then + local possec = get_slider_value(se) * dur / 100 -- of mouse pos + local ch = get_chapter(possec) + if ch and ch.title and ch.title ~= "" then + state.forced_title = string.format(user_opts.chapter_fmt, ch.title) + end + end + end + end + + for n=1, #elements do + local element = elements[n] + local style_ass = assdraw.ass_new() + style_ass:merge(element.style_ass) + ass_append_alpha(style_ass, element.layout.alpha, 0) + + if element.eventresponder and (state.active_element == n) then + -- run render event functions + if not (element.eventresponder.render == nil) then + element.eventresponder.render(element) + end + if mouse_hit(element) then + -- mouse down styling + if (element.styledown) then + style_ass:append(osc_styles.elementDown) + end + if (element.softrepeat) and (state.mouse_down_counter >= 15 + and state.mouse_down_counter % 5 == 0) then + + element.eventresponder[state.active_event_source..'_down'](element) + end + state.mouse_down_counter = state.mouse_down_counter + 1 + end + end + + if user_opts.keyboardnavigation and state.highlight_element == element.name then + style_ass:append(osc_styles.elementHighlight) + end + + local elem_ass = assdraw.ass_new() + elem_ass:merge(style_ass) + + if not (element.type == 'button') then + elem_ass:merge(element.static_ass) + end + + if (element.type == 'slider') then + + local slider_lo = element.layout.slider + local elem_geo = element.layout.geometry + local s_min = element.slider.min.value + local s_max = element.slider.max.value + -- draw pos marker + local pos = element.slider.posF() + local seekRanges = element.slider.seekRangesF() + local rh = user_opts.seekbarhandlesize * elem_geo.h / 2 -- Handle radius + local xp + + if pos then + xp = get_slider_ele_pos_for(element, pos) + ass_draw_cir_cw(elem_ass, xp, elem_geo.h/2, rh) + elem_ass:rect_cw(0, slider_lo.gap, xp, elem_geo.h - slider_lo.gap) + end + + if seekRanges then + elem_ass:draw_stop() + elem_ass:merge(element.style_ass) + ass_append_alpha(elem_ass, element.layout.alpha, user_opts.seekrangealpha) + elem_ass:merge(element.static_ass) + + for _,range in pairs(seekRanges) do + local pstart = get_slider_ele_pos_for(element, range['start']) + local pend = get_slider_ele_pos_for(element, range['end']) + elem_ass:rect_cw(pstart - rh, slider_lo.gap, pend + rh, elem_geo.h - slider_lo.gap) + end + end + + elem_ass:draw_stop() + + -- add tooltip + if not (element.slider.tooltipF == nil) then + if mouse_hit(element) then + local sliderpos = get_slider_value(element) + local tooltiplabel = element.slider.tooltipF(sliderpos) + local an = slider_lo.tooltip_an + local ty + if (an == 2) then + ty = element.hitbox.y1 + else + ty = element.hitbox.y1 + elem_geo.h/2 + end + + local tx = get_virt_mouse_pos() + if (slider_lo.adjust_tooltip) then + if (an == 2) then + if (sliderpos < (s_min + 3)) then + an = an - 1 + elseif (sliderpos > (s_max - 3)) then + an = an + 1 + end + elseif (sliderpos > (s_max-s_min)/2) then + an = an + 1 + tx = tx - 5 + else + an = an - 1 + tx = tx + 10 + end + end + + -- tooltip label + elem_ass:new_event() + elem_ass:pos(tx, ty) + elem_ass:an(an) + elem_ass:append(slider_lo.tooltip_style) + ass_append_alpha(elem_ass, slider_lo.alpha, 0) + elem_ass:append(tooltiplabel) + + -- thumbnail + if not thumbfast.disabled then + local osd_w = mp.get_property_number("osd-width") + if osd_w then + local r_w, r_h = get_virt_scale_factor() + + local tooltip_font_size = 18 + local thumbPad = 4 + local thumbMarginX = 18 / r_w + local thumbMarginY = tooltip_font_size + thumbPad + 2 / r_h + local tooltipBgColor = "FFFFFF" + local tooltipBgAlpha = 80 + local thumbX = math.min(osd_w - thumbfast.width - thumbMarginX, math.max(thumbMarginX, tx / r_w - thumbfast.width / 2)) + local thumbY = (ty - thumbMarginY) / r_h - thumbfast.height + + thumbX = math.floor(thumbX + 0.5) + thumbY = math.floor(thumbY + 0.5) + + elem_ass:new_event() + elem_ass:pos(thumbX * r_w, ty - thumbMarginY - thumbfast.height * r_h) + elem_ass:append(osc_styles.Tooltip) + elem_ass:draw_start() + elem_ass:rect_cw(-thumbPad * r_w, -thumbPad * r_h, (thumbfast.width + thumbPad) * r_w, (thumbfast.height + thumbPad) * r_h) + elem_ass:draw_stop() + + mp.commandv("script-message-to", "thumbfast", "thumb", + mp.get_property_number("duration", 0) * (sliderpos / 100), + thumbX, + thumbY + ) + + local se, ae = state.slider_element, elements[state.active_element] + if user_opts.chapter_fmt ~= "no" and se and (ae == se or (not ae and mouse_hit(se))) then + local dur = mp.get_property_number("duration", 0) + if dur > 0 then + local possec = get_slider_value(se) * dur / 100 -- of mouse pos + local ch = get_chapter(possec) + if ch and ch.title and ch.title ~= "" then + elem_ass:new_event() + elem_ass:pos((thumbX + thumbfast.width / 2) * r_w, thumbY * r_h - tooltip_font_size) + elem_ass:an(an) + elem_ass:append(slider_lo.tooltip_style) + ass_append_alpha(elem_ass, slider_lo.alpha, 0) + elem_ass:append(string.format(user_opts.chapter_fmt, ch.title)) + end + end + end + end + end + else + if thumbfast.available then + mp.commandv("script-message-to", "thumbfast", "clear") + end + end + end + + elseif (element.type == 'button') then + + local buttontext + if type(element.content) == 'function' then + buttontext = element.content() -- function objects + elseif not (element.content == nil) then + buttontext = element.content -- text objects + end + + buttontext = buttontext:gsub(':%((.?.?.?)%) unknown ', ':%(%1%)') --gsub('%) unknown %(\'', '') + + local maxchars = element.layout.button.maxchars + -- 认为1个中文字符约等于1.5个英文字符 + -- local charcount = buttontext:len()- (buttontext:len()-select(2, buttontext:gsub('[^\128-\193]', '')))/1.5 + local charcount = (buttontext:len() + select(2, buttontext:gsub('[^\128-\193]', ''))*2) / 3 + if not (maxchars == nil) and (charcount > maxchars) then + local limit = math.max(0, maxchars - 3) + if (charcount > limit) then + while (charcount > limit) do + buttontext = buttontext:gsub('.[\128-\191]*$', '') + charcount = (buttontext:len() + select(2, buttontext:gsub('[^\128-\193]', ''))*2) / 3 + end + buttontext = buttontext .. '...' + end + end + + elem_ass:append(buttontext) + + -- add tooltip + if not (element.tooltipF == nil) and element.enabled then + if mouse_hit(element) then + local tooltiplabel = element.tooltipF + local an = 1 + local ty = element.hitbox.y1 + local tx = get_virt_mouse_pos() + + if ty < osc_param.playresy / 2 then + ty = element.hitbox.y2 + an = 7 + end + + -- tooltip label + if type(element.tooltipF) == 'function' then + tooltiplabel = element.tooltipF() + else + tooltiplabel = element.tooltipF + end + elem_ass:new_event() + elem_ass:pos(tx, ty) + elem_ass:an(an) + elem_ass:append(element.tooltip_style) + elem_ass:append(tooltiplabel) + end + end + end + + master_ass:merge(elem_ass) + end +end + +-- +-- Message display +-- + +-- pos is 1 based +function limited_list(prop, pos) + local proplist = mp.get_property_native(prop, {}) + local count = #proplist + if count == 0 then + return count, proplist + end + + local fs = tonumber(mp.get_property('options/osd-font-size')) + local max = math.ceil(osc_param.unscaled_y*0.75 / fs) + if max % 2 == 0 then + max = max - 1 + end + local delta = math.ceil(max / 2) - 1 + local begi = math.max(math.min(pos - delta, count - max + 1), 1) + local endi = math.min(begi + max - 1, count) + + local reslist = {} + for i=begi, endi do + local item = proplist[i] + item.current = (i == pos) and true or nil + table.insert(reslist, item) + end + return count, reslist +end + +function get_playlist() + local pos = mp.get_property_number('playlist-pos', 0) + 1 + local count, limlist = limited_list('playlist', pos) + if count == 0 then + return texts.nolist + end + + local message = string.format(texts.playlist .. ' [%d/%d]:\n', pos, count) + for i, v in ipairs(limlist) do + local title = v.title + local _, filename = utils.split_path(v.filename) + if title == nil then + title = filename + end + message = string.format('%s %s %s\n', message, + (v.current and '●' or '○'), title) + end + return message +end + +function get_chapterlist() + local pos = mp.get_property_number('chapter', 0) + 1 + local count, limlist = limited_list('chapter-list', pos) + if count == 0 then + return texts.nochapter + end + + local message = string.format(texts.chapter.. ' [%d/%d]:\n', pos, count) + for i, v in ipairs(limlist) do + local time = mp.format_time(v.time) + local title = v.title + if title == nil then + title = string.format(texts.chapter .. ' %02d', i) + end + message = string.format('%s[%s] %s %s\n', message, time, + (v.current and '●' or '○'), title) + end + return message +end + +function show_message(text, duration) + + --print('text: '..text..' duration: ' .. duration) + if duration == nil then + duration = tonumber(mp.get_property('options/osd-duration')) / 1000 + elseif not type(duration) == 'number' then + print('duration: ' .. duration) + end + + -- cut the text short, otherwise the following functions + -- may slow down massively on huge input + text = string.sub(text, 0, 4000) + + -- replace actual linebreaks with ASS linebreaks + text = string.gsub(text, '\n', '\\N') + + state.message_text = text + + if not state.message_hide_timer then + state.message_hide_timer = mp.add_timeout(0, request_tick) + end + state.message_hide_timer:kill() + state.message_hide_timer.timeout = duration + state.message_hide_timer:resume() + request_tick() +end + +function render_message(ass) + if state.message_hide_timer and state.message_hide_timer:is_enabled() and + state.message_text + then + local _, lines = string.gsub(state.message_text, '\\N', '') + + local fontsize = tonumber(mp.get_property('options/osd-font-size')) + local outline = tonumber(mp.get_property('options/osd-border-size')) + local maxlines = math.ceil(osc_param.unscaled_y*0.75 / fontsize) + local counterscale = osc_param.playresy / osc_param.unscaled_y + + fontsize = fontsize * counterscale / math.max(0.65 + math.min(lines/maxlines, 1), 1) + outline = outline * counterscale / math.max(0.75 + math.min(lines/maxlines, 1)/2, 1) + + local style = '{\\bord' .. outline .. '\\fs' .. fontsize .. '}' + + + ass:new_event() + ass:append(style .. state.message_text) + else + state.message_text = nil + end +end + +-- +-- Initialisation and Layout +-- + +function new_element(name, type) + elements[name] = {} + elements[name].type = type + elements[name].name = name + + -- add default stuff + elements[name].eventresponder = {} + elements[name].visible = true + elements[name].enabled = true + elements[name].softrepeat = false + elements[name].styledown = (type == 'button') + elements[name].state = {} + + if (type == 'slider') then + elements[name].slider = {min = {value = 0}, max = {value = 100}} + end + + + return elements[name] +end + +function add_layout(name) + if not (elements[name] == nil) then + -- new layout + elements[name].layout = {} + + -- set layout defaults + elements[name].layout.layer = 50 + elements[name].layout.alpha = {[1] = 0, [2] = 255, [3] = 255, [4] = 255} + + if (elements[name].type == 'button') then + elements[name].layout.button = { + maxchars = nil, + } + elseif (elements[name].type == 'slider') then + -- slider defaults + elements[name].layout.slider = { + border = 1, + gap = 1, + nibbles_top = true, + nibbles_bottom = true, + adjust_tooltip = true, + tooltip_style = '', + tooltip_an = 2, + alpha = {[1] = 0, [2] = 255, [3] = 88, [4] = 255}, + } + elseif (elements[name].type == 'box') then + elements[name].layout.box = {radius = 0, hexagon = false} + end + + return elements[name].layout + else + msg.error('Can\'t add_layout to element \''..name..'\', doesn\'t exist.') + end +end + +-- Window Controls +function window_controls() + local wc_geo = { + x = 0, + y = 32, + an = 1, + w = osc_param.playresx, + h = 32, + } + + local controlbox_w = window_control_box_width + local titlebox_w = wc_geo.w - controlbox_w + + -- Default alignment is 'right' + local controlbox_left = wc_geo.w - controlbox_w + local titlebox_left = wc_geo.x + local titlebox_right = wc_geo.w - controlbox_w + + add_area('window-controls', + get_hitbox_coords(controlbox_left, wc_geo.y, wc_geo.an, + controlbox_w, wc_geo.h)) + + local lo + + local button_y = wc_geo.y - (wc_geo.h / 2) + local first_geo = + {x = controlbox_left + 27, y = button_y, an = 5, w = 40, h = wc_geo.h} + local second_geo = + {x = controlbox_left + 69, y = button_y, an = 5, w = 40, h = wc_geo.h} + local third_geo = + {x = controlbox_left + 115, y = button_y, an = 5, w = 40, h = wc_geo.h} + + -- Window control buttons use symbols in the custom mpv osd font + -- because the official unicode codepoints are sufficiently + -- exotic that a system might lack an installed font with them, + -- and libass will complain that they are not present in the + -- default font, even if another font with them is available. + + -- Close: ?? + ne = new_element('close', 'button') + ne.content = '\238\132\149' + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('quit') end + lo = add_layout('close') + lo.geometry = third_geo + lo.style = osc_styles.WinCtrl + lo.alpha[3] = 0 + + -- Minimize: ?? + ne = new_element('minimize', 'button') + ne.content = '\\n\238\132\146' + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('cycle', 'window-minimized') end + lo = add_layout('minimize') + lo.geometry = first_geo + lo.style = osc_styles.WinCtrl + lo.alpha[3] = 0 + + -- Maximize: ?? /?? + ne = new_element('maximize', 'button') + if state.maximized or state.fullscreen then + ne.content = '\238\132\148' + else + ne.content = '\238\132\147' + end + ne.eventresponder['mbtn_left_up'] = + function () + if state.fullscreen then + mp.commandv('cycle', 'fullscreen') + else + mp.commandv('cycle', 'window-maximized') + end + end + lo = add_layout('maximize') + lo.geometry = second_geo + lo.style = osc_styles.WinCtrl + lo.alpha[3] = 0 +end + +-- +-- Layouts +-- + +local layouts = {} + +-- Default layout +layouts = function () + + local osc_geo = {w, h} + + osc_geo.w = osc_param.playresx + osc_geo.h = 180 + + -- origin of the controllers, left/bottom corner + local posX = 0 + local posY = osc_param.playresy + + osc_param.areas = {} -- delete areas + + -- area for active mouse input + add_area('input', get_hitbox_coords(posX, posY, 1, osc_geo.w, 104)) + + -- area for show/hide + add_area('showhide', 0, 0, osc_param.playresx, osc_param.playresy) + + -- fetch values + local osc_w, osc_h= + osc_geo.w, osc_geo.h + + -- + -- Controller Background + -- + local lo + + new_element('TransBg', 'box') + lo = add_layout('TransBg') + lo.geometry = {x = posX, y = posY, an = 7, w = osc_w, h = 1} + lo.style = osc_styles.TransBg + lo.layer = 10 + lo.alpha[3] = 0 + + -- + -- Alignment + -- + local refX = osc_w / 2 + local refY = posY + local geo + + -- + -- Seekbar + -- + new_element('seekbarbg', 'box') + lo = add_layout('seekbarbg') + lo.geometry = {x = refX , y = refY - 96 , an = 5, w = osc_geo.w - 50, h = 2} + lo.layer = 13 + lo.style = osc_styles.SeekbarBg + lo.alpha[1] = 128 + lo.alpha[3] = 128 + + lo = add_layout('seekbar') + lo.geometry = {x = refX, y = refY - 96 , an = 5, w = osc_geo.w - 50, h = 16} + lo.style = osc_styles.SeekbarFg + lo.slider.gap = 7 + lo.slider.tooltip_style = osc_styles.Tooltip + lo.slider.tooltip_an = 2 + + local showjump = user_opts.showjump + local offset = showjump and 60 or 0 + + -- + -- Volumebar + -- + lo = new_element('volumebarbg', 'box') + lo.visible = (osc_param.playresx >= 750) and user_opts.volumecontrol + lo = add_layout('volumebarbg') + lo.geometry = {x = 155, y = refY - 40, an = 4, w = 80, h = 2} + lo.layer = 13 + lo.style = osc_styles.VolumebarBg + + + lo = add_layout('volumebar') + lo.geometry = {x = 155, y = refY - 40, an = 4, w = 80, h = 8} + lo.style = osc_styles.VolumebarFg + lo.slider.gap = 3 + lo.slider.tooltip_style = osc_styles.Tooltip + lo.slider.tooltip_an = 2 + + -- buttons + lo = add_layout('pl_prev') + lo.geometry = {x = refX - 120 - offset, y = refY - 40 , an = 5, w = 30, h = 24} + lo.style = osc_styles.Ctrl2 + + lo = add_layout('skipback') + lo.geometry = {x = refX - 60 - offset, y = refY - 40 , an = 5, w = 30, h = 24} + lo.style = osc_styles.Ctrl2 + + + if showjump then + lo = add_layout('jumpback') + lo.geometry = {x = refX - 60, y = refY - 40 , an = 5, w = 30, h = 24} + lo.style = osc_styles.Ctrl2 + end + + lo = add_layout('playpause') + lo.geometry = {x = refX, y = refY - 40 , an = 5, w = 45, h = 45} + lo.style = osc_styles.Ctrl1 + + if showjump then + lo = add_layout('jumpfrwd') + lo.geometry = {x = refX + 60, y = refY - 40 , an = 5, w = 30, h = 24} + + -- HACK: jumpfrwd's icon must be mirrored for nonstandard # of seconds + -- as the font only has an icon without a number for rewinding + lo.style = (user_opts.jumpiconnumber and jumpicons[user_opts.jumpamount] ~= nil) and osc_styles.Ctrl2 or osc_styles.Ctrl2Flip + end + + lo = add_layout('skipfrwd') + lo.geometry = {x = refX + 60 + offset, y = refY - 40 , an = 5, w = 30, h = 24} + lo.style = osc_styles.Ctrl2 + + lo = add_layout('pl_next') + lo.geometry = {x = refX + 120 + offset, y = refY - 40 , an = 5, w = 30, h = 24} + lo.style = osc_styles.Ctrl2 + + + -- Time + lo = add_layout('tc_left') + lo.geometry = {x = 25, y = refY - 84, an = 7, w = 64, h = 20} + lo.style = osc_styles.Time + + + lo = add_layout('tc_right') + lo.geometry = {x = osc_geo.w - 25 , y = refY -84, an = 9, w = 64, h = 20} + lo.style = osc_styles.Time + + lo = add_layout('cy_audio') + lo.geometry = {x = 37, y = refY - 40, an = 5, w = 24, h = 24} + lo.style = osc_styles.Ctrl3 + lo.visible = (osc_param.playresx >= 540) + + lo = add_layout('cy_sub') + lo.geometry = {x = 87, y = refY - 40, an = 5, w = 24, h = 24} + lo.style = osc_styles.Ctrl3 + lo.visible = (osc_param.playresx >= 600) + + lo = add_layout('vol_ctrl') + lo.geometry = {x = 137, y = refY - 40, an = 5, w = 24, h = 24} + lo.style = osc_styles.Ctrl3 + lo.visible = (osc_param.playresx >= 650) + + lo = add_layout('tog_fs') + lo.geometry = {x = osc_geo.w - 37, y = refY - 40, an = 5, w = 24, h = 24} + lo.style = osc_styles.Ctrl3 + lo.visible = (osc_param.playresx >= 540) + + lo = add_layout('tog_info') + lo.geometry = {x = osc_geo.w - 87, y = refY - 40, an = 5, w = 24, h = 24} + lo.style = osc_styles.Ctrl3 + lo.visible = (osc_param.playresx >= 600) + + geo = { x = 25, y = refY - 132, an = 1, w = osc_geo.w - 50, h = 48 } + lo = add_layout('title') + lo.geometry = geo + lo.style = string.format('%s{\\clip(%f,%f,%f,%f)}', osc_styles.Title, + geo.x, geo.y - geo.h, geo.x + geo.w , geo.y + 5) + lo.alpha[3] = 0 + lo.button.maxchars = geo.w / 23 +end + +-- Validate string type user options +function validate_user_opts() + if user_opts.windowcontrols ~= 'auto' and + user_opts.windowcontrols ~= 'yes' and + user_opts.windowcontrols ~= 'no' then + msg.warn('windowcontrols cannot be \'' .. + user_opts.windowcontrols .. '\'. Ignoring.') + user_opts.windowcontrols = 'auto' + end +end + +function update_options(list) + validate_user_opts() + request_tick() + visibility_mode(user_opts.visibility, true) + update_duration_watch() + request_init() +end + +-- OSC INIT +function osc_init() + msg.debug('osc_init') + + -- set canvas resolution according to display aspect and scaling setting + local baseResY = 720 + local display_w, display_h, display_aspect = mp.get_osd_size() + local scale = 1 + + if (mp.get_property('video') == 'no') then -- dummy/forced window + scale = user_opts.scaleforcedwindow + elseif state.fullscreen then + scale = user_opts.scalefullscreen + else + scale = user_opts.scalewindowed + end + + if user_opts.vidscale then + osc_param.unscaled_y = baseResY + else + osc_param.unscaled_y = display_h + end + osc_param.playresy = osc_param.unscaled_y / scale + if (display_aspect > 0) then + osc_param.display_aspect = display_aspect + end + osc_param.playresx = osc_param.playresy * osc_param.display_aspect + + -- stop seeking with the slider to prevent skipping files + state.active_element = nil + + elements = {} + + -- some often needed stuff + local pl_count = mp.get_property_number('playlist-count', 0) + local have_pl = (pl_count > 1) + local pl_pos = mp.get_property_number('playlist-pos', 0) + 1 + local have_ch = (mp.get_property_number('chapters', 0) > 0) + local loop = mp.get_property('loop-playlist', 'no') + + local ne + + -- playlist buttons + -- prev + ne = new_element('pl_prev', 'button') + + ne.content = icons.previous + ne.enabled = (pl_pos > 1) or (loop ~= 'no') + ne.eventresponder['mbtn_left_up'] = + function () + mp.commandv('playlist-prev', 'weak') + end + ne.eventresponder['mbtn_right_up'] = + function () show_message(get_playlist()) end + + --next + ne = new_element('pl_next', 'button') + + ne.content = icons.next + ne.enabled = (have_pl and (pl_pos < pl_count)) or (loop ~= 'no') + ne.eventresponder['mbtn_left_up'] = + function () + mp.commandv('playlist-next', 'weak') + end + ne.eventresponder['mbtn_right_up'] = + function () show_message(get_playlist()) end + + + --play control buttons + --playpause + ne = new_element('playpause', 'button') + + ne.content = function () + if mp.get_property('pause') == 'yes' then + return (icons.play) + else + return (icons.pause) + end + end + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('cycle', 'pause') end + --ne.eventresponder['mbtn_right_up'] = + -- function () mp.commandv('script-binding', 'open-file-dialog') end + + if user_opts.showjump then + local jumpamount = user_opts.jumpamount + local jumpmode = user_opts.jumpmode + local icons = jumpicons.default + if user_opts.jumpiconnumber then + icons = jumpicons[jumpamount] or jumpicons.default + end + + --jumpback + ne = new_element('jumpback', 'button') + + ne.softrepeat = true + ne.content = icons[1] + ne.eventresponder['mbtn_left_down'] = + --function () mp.command('seek -5') end + function () mp.commandv('seek', -jumpamount, jumpmode) end + ne.eventresponder['shift+mbtn_left_down'] = + function () mp.commandv('frame-back-step') end + ne.eventresponder['mbtn_right_down'] = + --function () mp.command('seek -60') end + function () mp.commandv('seek', -60, jumpmode) end + ne.eventresponder['enter'] = + --function () mp.command('seek -5') end + function () mp.commandv('seek', -jumpamount, jumpmode) end + + + --jumpfrwd + ne = new_element('jumpfrwd', 'button') + + ne.softrepeat = true + ne.content = icons[2] + ne.eventresponder['mbtn_left_down'] = + --function () mp.command('seek +5') end + function () mp.commandv('seek', jumpamount, jumpmode) end + ne.eventresponder['shift+mbtn_left_down'] = + function () mp.commandv('frame-step') end + ne.eventresponder['mbtn_right_down'] = + --function () mp.command('seek +60') end + function () mp.commandv('seek', 60, jumpmode) end + ne.eventresponder['enter'] = + --function () mp.command('seek +5') end + function () mp.commandv('seek', jumpamount, jumpmode) end + end + + + --skipback + ne = new_element('skipback', 'button') + + ne.softrepeat = true + ne.content = icons.backward + ne.enabled = (have_ch) -- disables button when no chapters available. + ne.eventresponder['mbtn_left_down'] = + --function () mp.command('seek -5') end + --function () mp.commandv('seek', -5, 'relative', 'keyframes') end + function () mp.commandv("add", "chapter", -1) end + --ne.eventresponder['shift+mbtn_left_down'] = + --function () mp.commandv('frame-back-step') end + ne.eventresponder['mbtn_right_down'] = + function () show_message(get_chapterlist()) end + --function () mp.command('seek -60') end + --function () mp.commandv('seek', -60, 'relative', 'keyframes') end + ne.eventresponder['enter'] = + --function () mp.command('seek -5') end + --function () mp.commandv('seek', -5, 'relative', 'keyframes') end + function () mp.commandv("add", "chapter", -1) end + + --skipfrwd + ne = new_element('skipfrwd', 'button') + + ne.softrepeat = true + ne.content = icons.forward + ne.enabled = (have_ch) -- disables button when no chapters available. + ne.eventresponder['mbtn_left_down'] = + --function () mp.command('seek +5') end + --function () mp.commandv('seek', 5, 'relative', 'keyframes') end + function () mp.commandv("add", "chapter", 1) end + --ne.eventresponder['shift+mbtn_left_down'] = + --function () mp.commandv('frame-step') end + ne.eventresponder['mbtn_right_down'] = + function () show_message(get_chapterlist()) end + --function () mp.command('seek +60') end + --function () mp.commandv('seek', 60, 'relative', 'keyframes') end + ne.eventresponder['enter'] = + --function () mp.command('seek +5') end + --function () mp.commandv('seek', 5, 'relative', 'keyframes') end + function () mp.commandv("add", "chapter", 1) end + + -- + update_tracklist() + + --cy_audio + ne = new_element('cy_audio', 'button') + ne.enabled = (#tracks_osc.audio > 0) + ne.off = (get_track('audio') == 0) + ne.visible = (osc_param.playresx >= 540) + ne.content = icons.audio + ne.tooltip_style = osc_styles.Tooltip + ne.tooltipF = function () + local msg = texts.off + if not (get_track('audio') == 0) then + msg = (texts.audio .. ' [' .. get_track('audio') .. ' ∕ ' .. #tracks_osc.audio .. '] ') + local prop = mp.get_property('current-tracks/audio/title') --('current-tracks/audio/lang') + if not prop then + prop = texts.na + end + msg = msg .. '[' .. prop .. ']' + prop = mp.get_property('current-tracks/audio/lang') --('current-tracks/audio/title') + if prop then + msg = msg .. ' ' .. prop + end + return msg + end + return msg + end + ne.eventresponder['mbtn_left_up'] = + function () set_track('audio', 1) end + ne.eventresponder['mbtn_right_up'] = + function () set_track('audio', -1) end + ne.eventresponder['shift+mbtn_left_down'] = + function () show_message(get_tracklist('audio')) end + ne.eventresponder['enter'] = + function () set_track('audio', 1); show_message(get_tracklist('audio')) end + + --cy_sub + ne = new_element('cy_sub', 'button') + ne.enabled = (#tracks_osc.sub > 0) + ne.off = (get_track('sub') == 0) + ne.visible = (osc_param.playresx >= 600) + ne.content = icons.sub + ne.tooltip_style = osc_styles.Tooltip + ne.tooltipF = function () + local msg = texts.off + if not (get_track('sub') == 0) then + msg = (texts.subtitle .. ' [' .. get_track('sub') .. ' ∕ ' .. #tracks_osc.sub .. '] ') + local prop = mp.get_property('current-tracks/sub/lang') + if not prop then + prop = texts.na + end + msg = msg .. '[' .. prop .. ']' + prop = mp.get_property('current-tracks/sub/title') + if prop then + msg = msg .. ' ' .. prop + end + return msg + end + return msg + end + ne.eventresponder['mbtn_left_up'] = + function () set_track('sub', 1) end + ne.eventresponder['mbtn_right_up'] = + function () set_track('sub', -1) end + ne.eventresponder['shift+mbtn_left_down'] = + function () show_message(get_tracklist('sub')) end + ne.eventresponder['enter'] = + function () set_track('sub', 1); show_message(get_tracklist('sub')) end + + -- vol_ctrl + ne = new_element('vol_ctrl', 'button') + ne.enabled = (get_track('audio')>0) + ne.visible = (osc_param.playresx >= 650) and user_opts.volumecontrol + ne.content = function () + if (state.mute) then + return (icons.volume_mute) + else + return (icons.volume) + end + end + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('cycle', 'mute') end + ne.eventresponder["wheel_up_press"] = + function () mp.commandv("osd-auto", "add", "volume", 5) end + ne.eventresponder["wheel_down_press"] = + function () mp.commandv("osd-auto", "add", "volume", -5) end + + --tog_fs + ne = new_element('tog_fs', 'button') + ne.content = function () + if (state.fullscreen) then + return (icons.minimize) + else + return (icons.fullscreen) + end + end + ne.visible = (osc_param.playresx >= 540) + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('cycle', 'fullscreen') end + + --tog_info + ne = new_element('tog_info', 'button') + ne.content = icons.info + ne.visible = (osc_param.playresx >= 600) + ne.eventresponder['mbtn_left_up'] = + function () mp.commandv('script-binding', 'stats/display-stats-toggle') end + + -- title + ne = new_element('title', 'button') + ne.content = function () + local title = state.forced_title or + mp.command_native({"expand-text", user_opts.title}) + if state.paused then + title = title:gsub('\\n', ' '):gsub('\\$', ''):gsub('{','\\{') + else + title = title:gsub('\\n', ' '):gsub('\\$', ''):gsub('{','\\{') --title = ' ' + end + return not (title == '') and title or ' ' + end + ne.visible = osc_param.playresy >= 320 and user_opts.showtitle + + --seekbar + ne = new_element('seekbar', 'slider') + + ne.enabled = not (mp.get_property('percent-pos') == nil) + state.slider_element = ne.enabled and ne or nil -- used for forced_title + ne.slider.markerF = function () + local duration = mp.get_property_number('duration', nil) + if not (duration == nil) then + local chapters = mp.get_property_native('chapter-list', {}) + local markers = {} + for n = 1, #chapters do + markers[n] = (chapters[n].time / duration * 100) + end + return markers + else + return {} + end + end + ne.slider.posF = + function () return mp.get_property_number('percent-pos', nil) end + ne.slider.tooltipF = function (pos) + local duration = mp.get_property_number('duration', nil) + if not ((duration == nil) or (pos == nil)) then + possec = duration * (pos / 100) + return mp.format_time(possec) + else + return '' + end + end + ne.slider.seekRangesF = function() + if not user_opts.seekrange then + return nil + end + local cache_state = state.cache_state + if not cache_state then + return nil + end + local duration = mp.get_property_number('duration', nil) + if (duration == nil) or duration <= 0 then + return nil + end + local ranges = cache_state['seekable-ranges'] + if #ranges == 0 then + return nil + end + local nranges = {} + for _, range in pairs(ranges) do + nranges[#nranges + 1] = { + ['start'] = 100 * range['start'] / duration, + ['end'] = 100 * range['end'] / duration, + } + end + return nranges + end + ne.eventresponder['mouse_move'] = --keyframe seeking when mouse is dragged + function (element) + if not element.state.mbtnleft then return end -- allow drag for mbtnleft only! + -- mouse move events may pile up during seeking and may still get + -- sent when the user is done seeking, so we need to throw away + -- identical seeks + local seekto = get_slider_value(element) + if (element.state.lastseek == nil) or + (not (element.state.lastseek == seekto)) then + local flags = 'absolute-percent' + if not user_opts.seekbarkeyframes then + flags = flags .. '+exact' + end + mp.commandv('seek', seekto, flags) + element.state.lastseek = seekto + end + + end + ne.eventresponder['mbtn_left_down'] = --exact seeks on single clicks + function (element) + mp.commandv('seek', get_slider_value(element), 'absolute-percent', 'exact') + element.state.mbtnleft = true + end + ne.eventresponder['mbtn_left_up'] = + function (element) element.state.mbtnleft = false end + ne.eventresponder['mbtn_right_down'] = --seeks to chapter start + function (element) + local duration = mp.get_property_number('duration', nil) + if not (duration == nil) then + local chapters = mp.get_property_native('chapter-list', {}) + if #chapters > 0 then + local pos = get_slider_value(element) + local ch = #chapters + for n = 1, ch do + if chapters[n].time / duration * 100 >= pos then + ch = n - 1 + break + end + end + mp.commandv('set', 'chapter', ch - 1) + --if chapters[ch].title then show_message(chapters[ch].time) end + end + end + end + ne.eventresponder['reset'] = + function (element) element.state.lastseek = nil end + + --volumebar + ne = new_element('volumebar', 'slider') + ne.visible = (osc_param.playresx >= 700) and user_opts.volumecontrol + ne.enabled = (get_track('audio')>0) + ne.slider.markerF = function () + return {} + end + ne.slider.seekRangesF = function() + return nil + end + ne.slider.posF = + function () + local val = mp.get_property_number('volume', nil) + return val*val/100 + end + ne.eventresponder['mouse_move'] = + function (element) + if not element.state.mbtnleft then return end -- allow drag for mbtnleft only! + local seekto = get_slider_value(element) + if (element.state.lastseek == nil) or + (not (element.state.lastseek == seekto)) then + mp.commandv('set', 'volume', 10*math.sqrt(seekto)) + element.state.lastseek = seekto + end + end + ne.eventresponder['mbtn_left_down'] = --exact seeks on single clicks + function (element) + local seekto = get_slider_value(element) + mp.commandv('set', 'volume', 10*math.sqrt(seekto)) + element.state.mbtnleft = true + end + ne.eventresponder['mbtn_left_up'] = + function (element) element.state.mbtnleft = false end + ne.eventresponder['reset'] = + function (element) element.state.lastseek = nil end + ne.eventresponder["wheel_up_press"] = + function () mp.commandv("osd-auto", "add", "volume", 5) end + ne.eventresponder["wheel_down_press"] = + function () mp.commandv("osd-auto", "add", "volume", -5) end + + -- tc_left (current pos) + ne = new_element('tc_left', 'button') + ne.content = function () + if (state.fulltime) then + return (mp.get_property_osd('playback-time/full')) + else + return (mp.get_property_osd('playback-time')) + end + end + ne.eventresponder["mbtn_left_up"] = function () + state.fulltime = not state.fulltime + request_init() + end + -- tc_right (total/remaining time) + ne = new_element('tc_right', 'button') + ne.content = function () + if (mp.get_property_number('duration', 0) <= 0) then return '--:--:--' end + if (state.rightTC_trem) then + if (state.fulltime) then + return ('-'..mp.get_property_osd('playtime-remaining/full')) + else + return ('-'..mp.get_property_osd('playtime-remaining')) + end + else + if (state.fulltime) then + return (mp.get_property_osd('duration/full')) + else + return (mp.get_property_osd('duration')) + end + + end + end + ne.eventresponder['mbtn_left_up'] = + function () state.rightTC_trem = not state.rightTC_trem end + + -- load layout + layouts() + + -- load window controls + if window_controls_enabled() then + window_controls() + end + + --do something with the elements + prepare_elements() +end + +function shutdown() + +end + +-- +-- Other important stuff +-- + + +function show_osc() + -- show when disabled can happen (e.g. mouse_move) due to async/delayed unbinding + if not state.enabled then return end + + msg.trace('show_osc') + --remember last time of invocation (mouse move) + state.showtime = mp.get_time() + + osc_visible(true) + + if user_opts.keyboardnavigation == true then + osc_enable_key_bindings() + end + + if (user_opts.fadeduration > 0) then + state.anitype = nil + end +end + +function hide_osc() + msg.trace('hide_osc') + if not state.enabled then + -- typically hide happens at render() from tick(), but now tick() is + -- no-op and won't render again to remove the osc, so do that manually. + state.osc_visible = false + render_wipe() + if user_opts.keyboardnavigation == true then + osc_disable_key_bindings() + end + elseif (user_opts.fadeduration > 0) then + if not(state.osc_visible == false) then + state.anitype = 'out' + request_tick() + end + else + osc_visible(false) + end +end + +function osc_visible(visible) + if state.osc_visible ~= visible then + state.osc_visible = visible + end + request_tick() +end + +function pause_state(name, enabled) + state.paused = enabled + mp.add_timeout(0.1, function() state.osd:update() end) + if user_opts.showonpause then + if enabled then + state.lastvisibility = user_opts.visibility + visibility_mode("always", true) + show_osc() + else + visibility_mode(state.lastvisibility, true) + end + end + request_tick() +end + +function cache_state(name, st) + state.cache_state = st + request_tick() +end + +-- Request that tick() is called (which typically re-renders the OSC). +-- The tick is then either executed immediately, or rate-limited if it was +-- called a small time ago. +function request_tick() + if state.tick_timer == nil then + state.tick_timer = mp.add_timeout(0, tick) + end + + if not state.tick_timer:is_enabled() then + local now = mp.get_time() + local timeout = tick_delay - (now - state.tick_last_time) + if timeout < 0 then + timeout = 0 + end + state.tick_timer.timeout = timeout + state.tick_timer:resume() + end +end + +function mouse_leave() + if get_hidetimeout() >= 0 then + hide_osc() + end + -- reset mouse position + state.last_mouseX, state.last_mouseY = nil, nil + state.mouse_in_window = false +end + +function request_init() + state.initREQ = true + request_tick() +end + +-- Like request_init(), but also request an immediate update +function request_init_resize() + request_init() + -- ensure immediate update + state.tick_timer:kill() + state.tick_timer.timeout = 0 + state.tick_timer:resume() +end + +function render_wipe() + msg.trace('render_wipe()') + state.osd:remove() +end + +function render() + msg.trace('rendering') + local current_screen_sizeX, current_screen_sizeY, aspect = mp.get_osd_size() + local mouseX, mouseY = get_virt_mouse_pos() + local now = mp.get_time() + + -- check if display changed, if so request reinit + if not (state.mp_screen_sizeX == current_screen_sizeX + and state.mp_screen_sizeY == current_screen_sizeY) then + + request_init_resize() + + state.mp_screen_sizeX = current_screen_sizeX + state.mp_screen_sizeY = current_screen_sizeY + end + + -- init management + if state.active_element then + -- mouse is held down on some element - keep ticking and igore initReq + -- till it's released, or else the mouse-up (click) will misbehave or + -- get ignored. that's because osc_init() recreates the osc elements, + -- but mouse handling depends on the elements staying unmodified + -- between mouse-down and mouse-up (using the index active_element). + request_tick() + elseif state.initREQ then + osc_init() + state.initREQ = false + + -- store initial mouse position + if (state.last_mouseX == nil or state.last_mouseY == nil) + and not (mouseX == nil or mouseY == nil) then + + state.last_mouseX, state.last_mouseY = mouseX, mouseY + end + end + + + -- fade animation + if not(state.anitype == nil) then + + if (state.anistart == nil) then + state.anistart = now + end + + if (now < state.anistart + (user_opts.fadeduration/1000)) then + + if (state.anitype == 'in') then --fade in + osc_visible(true) + state.animation = scale_value(state.anistart, + (state.anistart + (user_opts.fadeduration/1000)), + 255, 0, now) + elseif (state.anitype == 'out') then --fade out + state.animation = scale_value(state.anistart, + (state.anistart + (user_opts.fadeduration/1000)), + 0, 255, now) + end + + else + if (state.anitype == 'out') then + osc_visible(false) + end + state.anistart = nil + state.animation = nil + state.anitype = nil + end + else + state.anistart = nil + state.animation = nil + state.anitype = nil + end + + --mouse show/hide area + for k,cords in pairs(osc_param.areas['showhide']) do + set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'showhide') + end + if osc_param.areas['showhide_wc'] then + for k,cords in pairs(osc_param.areas['showhide_wc']) do + set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'showhide_wc') + end + else + set_virt_mouse_area(0, 0, 0, 0, 'showhide_wc') + end + do_enable_keybindings() + + --mouse input area + local mouse_over_osc = false + + for _,cords in ipairs(osc_param.areas['input']) do + if state.osc_visible then -- activate only when OSC is actually visible + set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'input') + end + if state.osc_visible ~= state.input_enabled then + if state.osc_visible then + mp.enable_key_bindings('input') + else + mp.disable_key_bindings('input') + end + state.input_enabled = state.osc_visible + end + + if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then + mouse_over_osc = true + end + end + + if osc_param.areas['window-controls'] then + for _,cords in ipairs(osc_param.areas['window-controls']) do + if state.osc_visible then -- activate only when OSC is actually visible + set_virt_mouse_area(cords.x1, cords.y1, cords.x2, cords.y2, 'window-controls') + mp.enable_key_bindings('window-controls') + else + mp.disable_key_bindings('window-controls') + end + + if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then + mouse_over_osc = true + end + end + end + + if osc_param.areas['window-controls-title'] then + for _,cords in ipairs(osc_param.areas['window-controls-title']) do + if (mouse_hit_coords(cords.x1, cords.y1, cords.x2, cords.y2)) then + mouse_over_osc = true + end + end + end + + -- autohide + if not (state.showtime == nil) and (get_hidetimeout() >= 0) then + local timeout = state.showtime + (get_hidetimeout()/1000) - now + if timeout <= 0 then + if (state.active_element == nil) and not (mouse_over_osc) then + hide_osc() + end + else + -- the timer is only used to recheck the state and to possibly run + -- the code above again + if not state.hide_timer then + state.hide_timer = mp.add_timeout(0, tick) + end + state.hide_timer.timeout = timeout + -- re-arm + state.hide_timer:kill() + state.hide_timer:resume() + end + end + + + -- actual rendering + local ass = assdraw.ass_new() + + -- Messages + render_message(ass) + + -- actual OSC + if state.osc_visible then + render_elements(ass) + end + + -- submit + set_osd(osc_param.playresy * osc_param.display_aspect, + osc_param.playresy, ass.text) +end + +-- +-- Eventhandling +-- + +local function element_has_action(element, action) + return element and element.eventresponder and + element.eventresponder[action] +end + +function process_event(source, what) + local action = string.format('%s%s', source, + what and ('_' .. what) or '') + + if what == 'down' or what == 'press' then + + for n = 1, #elements do + + if mouse_hit(elements[n]) and + elements[n].eventresponder and + (elements[n].eventresponder[source .. '_up'] or + elements[n].eventresponder[action]) then + + if what == 'down' then + state.active_element = n + state.active_event_source = source + end + -- fire the down or press event if the element has one + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) + end + + end + end + + elseif what == 'up' then + + if elements[state.active_element] then + local n = state.active_element + + if n == 0 then + --click on background (does not work) + elseif element_has_action(elements[n], action) and + mouse_hit(elements[n]) then + + elements[n].eventresponder[action](elements[n]) + end + + --reset active element + if element_has_action(elements[n], 'reset') then + elements[n].eventresponder['reset'](elements[n]) + end + + end + state.active_element = nil + state.mouse_down_counter = 0 + + elseif source == 'mouse_move' then + + state.mouse_in_window = true + + local mouseX, mouseY = get_virt_mouse_pos() + if (user_opts.minmousemove == 0) or + (not ((state.last_mouseX == nil) or (state.last_mouseY == nil)) and + ((math.abs(mouseX - state.last_mouseX) >= user_opts.minmousemove) + or (math.abs(mouseY - state.last_mouseY) >= user_opts.minmousemove) + ) + ) then + show_osc() + end + state.last_mouseX, state.last_mouseY = mouseX, mouseY + + local n = state.active_element + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) + end + end + + -- ensure rendering after any (mouse) event - icons could change etc + request_tick() +end + +local logo_lines = { + -- White border + "{\\c&HE5E5E5&\\p6}m 895 10 b 401 10 0 410 0 905 0 1399 401 1800 895 1800 1390 1800 1790 1399 1790 905 1790 410 1390 10 895 10 {\\p0}", + -- Purple fill + "{\\c&H682167&\\p6}m 925 42 b 463 42 87 418 87 880 87 1343 463 1718 925 1718 1388 1718 1763 1343 1763 880 1763 418 1388 42 925 42{\\p0}", + -- Darker fill + "{\\c&H430142&\\p6}m 1605 828 b 1605 1175 1324 1456 977 1456 631 1456 349 1175 349 828 349 482 631 200 977 200 1324 200 1605 482 1605 828{\\p0}", + -- White fill + "{\\c&HDDDBDD&\\p6}m 1296 910 b 1296 1131 1117 1310 897 1310 676 1310 497 1131 497 910 497 689 676 511 897 511 1117 511 1296 689 1296 910{\\p0}", + -- Triangle + "{\\c&H691F69&\\p6}m 762 1113 l 762 708 b 881 776 1000 843 1119 911 1000 978 881 1046 762 1113{\\p0}", +} + +local santa_hat_lines = { + -- Pompoms + "{\\c&HC0C0C0&\\p6}m 500 -323 b 491 -322 481 -318 475 -311 465 -312 456 -319 446 -318 434 -314 427 -304 417 -297 410 -290 404 -282 395 -278 390 -274 387 -267 381 -265 377 -261 379 -254 384 -253 397 -244 409 -232 425 -228 437 -228 446 -218 457 -217 462 -216 466 -213 468 -209 471 -205 477 -203 482 -206 491 -211 499 -217 508 -222 532 -235 556 -249 576 -267 584 -272 584 -284 578 -290 569 -305 550 -312 533 -309 523 -310 515 -316 507 -321 505 -323 503 -323 500 -323{\\p0}", + "{\\c&HE0E0E0&\\p6}m 315 -260 b 286 -258 259 -240 246 -215 235 -210 222 -215 211 -211 204 -188 177 -176 172 -151 170 -139 163 -128 154 -121 143 -103 141 -81 143 -60 139 -46 125 -34 129 -17 132 -1 134 16 142 30 145 56 161 80 181 96 196 114 210 133 231 144 266 153 303 138 328 115 373 79 401 28 423 -24 446 -73 465 -123 483 -174 487 -199 467 -225 442 -227 421 -232 402 -242 384 -254 364 -259 342 -250 322 -260 320 -260 317 -261 315 -260{\\p0}", + -- Main cap + "{\\c&H0000F0&\\p6}m 1151 -523 b 1016 -516 891 -458 769 -406 693 -369 624 -319 561 -262 526 -252 465 -235 479 -187 502 -147 551 -135 588 -111 1115 165 1379 232 1909 761 1926 800 1952 834 1987 858 2020 883 2053 912 2065 952 2088 1000 2146 962 2139 919 2162 836 2156 747 2143 662 2131 615 2116 567 2122 517 2120 410 2090 306 2089 199 2092 147 2071 99 2034 64 1987 5 1928 -41 1869 -86 1777 -157 1712 -256 1629 -337 1578 -389 1521 -436 1461 -476 1407 -509 1343 -507 1284 -515 1240 -519 1195 -521 1151 -523{\\p0}", + -- Cap shadow + "{\\c&H0000AA&\\p6}m 1657 248 b 1658 254 1659 261 1660 267 1669 276 1680 284 1689 293 1695 302 1700 311 1707 320 1716 325 1726 330 1735 335 1744 347 1752 360 1761 371 1753 352 1754 331 1753 311 1751 237 1751 163 1751 90 1752 64 1752 37 1767 14 1778 -3 1785 -24 1786 -45 1786 -60 1786 -77 1774 -87 1760 -96 1750 -78 1751 -65 1748 -37 1750 -8 1750 20 1734 78 1715 134 1699 192 1694 211 1689 231 1676 246 1671 251 1661 255 1657 248 m 1909 541 b 1914 542 1922 549 1917 539 1919 520 1921 502 1919 483 1918 458 1917 433 1915 407 1930 373 1942 338 1947 301 1952 270 1954 238 1951 207 1946 214 1947 229 1945 239 1939 278 1936 318 1924 356 1923 362 1913 382 1912 364 1906 301 1904 237 1891 175 1887 150 1892 126 1892 101 1892 68 1893 35 1888 2 1884 -9 1871 -20 1859 -14 1851 -6 1854 9 1854 20 1855 58 1864 95 1873 132 1883 179 1894 225 1899 273 1908 362 1910 451 1909 541{\\p0}", + -- Brim and tip pompom + "{\\c&HF8F8F8&\\p6}m 626 -191 b 565 -155 486 -196 428 -151 387 -115 327 -101 304 -47 273 2 267 59 249 113 219 157 217 213 215 265 217 309 260 302 285 283 373 264 465 264 555 257 608 252 655 292 709 287 759 294 816 276 863 298 903 340 972 324 1012 367 1061 394 1125 382 1167 424 1213 462 1268 482 1322 506 1385 546 1427 610 1479 662 1510 690 1534 725 1566 752 1611 796 1664 830 1703 880 1740 918 1747 986 1805 1005 1863 991 1897 932 1916 880 1914 823 1945 777 1961 725 1979 673 1957 622 1938 575 1912 534 1862 515 1836 473 1790 417 1755 351 1697 305 1658 266 1633 216 1593 176 1574 138 1539 116 1497 110 1448 101 1402 77 1371 37 1346 -16 1295 15 1254 6 1211 -27 1170 -62 1121 -86 1072 -104 1027 -128 976 -133 914 -130 851 -137 794 -162 740 -181 679 -168 626 -191 m 2051 917 b 1971 932 1929 1017 1919 1091 1912 1149 1923 1214 1970 1254 2000 1279 2027 1314 2066 1325 2139 1338 2212 1295 2254 1238 2281 1203 2287 1158 2282 1116 2292 1061 2273 1006 2229 970 2206 941 2167 938 2138 918{\\p0}", +} + +-- called by mpv on every frame +function tick() + if (not state.enabled) then return end + + if (state.idle) then + + -- render idle message + msg.trace('idle message') + local _, _, display_aspect = mp.get_osd_size() + local display_h = 360 + local display_w = display_h * display_aspect + -- logo is rendered at 2^(6-1) = 32 times resolution with size 1800x1800 + local icon_x, icon_y = (display_w - 1800 / 32) / 2, 140 + local line_prefix = ('{\\rDefault\\an7\\1a&H00&\\bord0\\shad0\\pos(%f,%f)}'):format(icon_x, icon_y) + + local ass = assdraw.ass_new() + -- mpv logo + if user_opts.idlescreen then + for i, line in ipairs(logo_lines) do + ass:new_event() + ass:append(line_prefix .. line) + end + end + + -- Santa hat + if is_december and user_opts.idlescreen and not user_opts.greenandgrumpy then + for i, line in ipairs(santa_hat_lines) do + ass:new_event() + ass:append(line_prefix .. line) + end + end + + if user_opts.idlescreen then + ass:new_event() + ass:pos(display_w / 2, icon_y + 65) + ass:an(8) + ass:append(texts.welcome) + end + set_osd(display_w, display_h, ass.text) + + if state.showhide_enabled then + mp.disable_key_bindings('showhide') + mp.disable_key_bindings('showhide_wc') + state.showhide_enabled = false + end + + + elseif (state.fullscreen and user_opts.showfullscreen) + or (not state.fullscreen and user_opts.showwindowed) then + + -- render the OSC + render() + else + -- Flush OSD + set_osd(osc_param.playresy, osc_param.playresy, '') + end + + state.tick_last_time = mp.get_time() + + if state.anitype ~= nil then + -- state.anistart can be nil - animation should now start, or it can + -- be a timestamp when it started. state.idle has no animation. + if not state.idle and + (not state.anistart or + mp.get_time() < 1 + state.anistart + user_opts.fadeduration/1000) + then + -- animating or starting, or still within 1s past the deadline + request_tick() + else + kill_animation() + end + end +end + +function do_enable_keybindings() + if state.enabled then + if not state.showhide_enabled then + mp.enable_key_bindings('showhide', 'allow-vo-dragging+allow-hide-cursor') + mp.enable_key_bindings('showhide_wc', 'allow-vo-dragging+allow-hide-cursor') + end + state.showhide_enabled = true + end +end + +function enable_osc(enable) + state.enabled = enable + if enable then + do_enable_keybindings() + else + hide_osc() -- acts immediately when state.enabled == false + if state.showhide_enabled then + mp.disable_key_bindings('showhide') + mp.disable_key_bindings('showhide_wc') + end + state.showhide_enabled = false + end +end + +-- duration is observed for the sole purpose of updating chapter markers +-- positions. live streams with chapters are very rare, and the update is also +-- expensive (with request_init), so it's only observed when we have chapters +-- and the user didn't disable the livemarkers option (update_duration_watch). +function on_duration() request_init() end + +local duration_watched = false +function update_duration_watch() + local want_watch = user_opts.livemarkers and + (mp.get_property_number("chapters", 0) or 0) > 0 and + true or false -- ensure it's a boolean + + if (want_watch ~= duration_watched) then + if want_watch then + mp.observe_property("duration", nil, on_duration) + else + mp.unobserve_property(on_duration) + end + duration_watched = want_watch + end +end + +validate_user_opts() +update_duration_watch() + +mp.register_event('shutdown', shutdown) +mp.register_event('start-file', request_init) +mp.observe_property('track-list', nil, request_init) +mp.observe_property('playlist', nil, request_init) +mp.observe_property("chapter-list", "native", function(_, list) + list = list or {} -- safety, shouldn't return nil + table.sort(list, function(a, b) return a.time < b.time end) + state.chapter_list = list + update_duration_watch() + request_init() +end) + +mp.register_script_message('osc-message', show_message) +mp.register_script_message('osc-chapterlist', function(dur) + show_message(get_chapterlist(), dur) +end) +mp.register_script_message('osc-playlist', function(dur) + show_message(get_playlist(), dur) +end) +mp.register_script_message('osc-tracklist', function(dur) + local msg = {} + for k,v in pairs(nicetypes) do + table.insert(msg, get_tracklist(k)) + end + show_message(table.concat(msg, '\n\n'), dur) +end) + +mp.observe_property('fullscreen', 'bool', + function(name, val) + state.fullscreen = val + request_init_resize() + end +) +mp.observe_property('mute', 'bool', + function(name, val) + state.mute = val + end +) +mp.observe_property('border', 'bool', + function(name, val) + state.border = val + request_init_resize() + end +) +mp.observe_property('window-maximized', 'bool', + function(name, val) + state.maximized = val + request_init_resize() + end +) +mp.observe_property('idle-active', 'bool', + function(name, val) + state.idle = val + request_tick() + end +) +mp.observe_property('pause', 'bool', pause_state) +mp.observe_property('demuxer-cache-state', 'native', cache_state) +mp.observe_property('vo-configured', 'bool', function(name, val) + request_tick() +end) +mp.observe_property('playback-time', 'number', function(name, val) + request_tick() +end) +mp.observe_property('osd-dimensions', 'native', function(name, val) + -- (we could use the value instead of re-querying it all the time, but then + -- we might have to worry about property update ordering) + request_init_resize() +end) + +-- mouse show/hide bindings +mp.set_key_bindings({ + {'mouse_move', function(e) process_event('mouse_move', nil) end}, + {'mouse_leave', mouse_leave}, +}, 'showhide', 'force') +mp.set_key_bindings({ + {'mouse_move', function(e) process_event('mouse_move', nil) end}, + {'mouse_leave', mouse_leave}, +}, 'showhide_wc', 'force') +do_enable_keybindings() + +--mouse input bindings +mp.set_key_bindings({ + {"mbtn_left", function(e) process_event("mbtn_left", "up") end, + function(e) process_event("mbtn_left", "down") end}, + {"shift+mbtn_left", function(e) process_event("shift+mbtn_left", "up") end, + function(e) process_event("shift+mbtn_left", "down") end}, + {"mbtn_right", function(e) process_event("mbtn_right", "up") end, + function(e) process_event("mbtn_right", "down") end}, + -- alias to shift_mbtn_left for single-handed mouse use + {"mbtn_mid", function(e) process_event("shift+mbtn_left", "up") end, + function(e) process_event("shift+mbtn_left", "down") end}, + {"wheel_up", function(e) process_event("wheel_up", "press") end}, + {"wheel_down", function(e) process_event("wheel_down", "press") end}, + {"mbtn_left_dbl", "ignore"}, + {"shift+mbtn_left_dbl", "ignore"}, + {"mbtn_right_dbl", "ignore"}, +}, "input", "force") +mp.enable_key_bindings('input') + +mp.set_key_bindings({ + {'mbtn_left', function(e) process_event('mbtn_left', 'up') end, + function(e) process_event('mbtn_left', 'down') end}, +}, 'window-controls', 'force') +mp.enable_key_bindings('window-controls') + +function get_hidetimeout() + if user_opts.visibility == 'always' then + return -1 -- disable autohide + end + return user_opts.hidetimeout +end + +function always_on(val) + if state.enabled then + if val then + show_osc() + else + hide_osc() + end + end +end + +-- mode can be auto/always/never/cycle +-- the modes only affect internal variables and not stored on its own. +function visibility_mode(mode, no_osd) + if mode == "cycle" then + if not state.enabled then + mode = "auto" + elseif user_opts.visibility ~= "always" then + mode = "always" + else + mode = "never" + end + end + + if mode == 'auto' then + always_on(false) + enable_osc(true) + elseif mode == 'always' then + enable_osc(true) + always_on(true) + elseif mode == 'never' then + enable_osc(false) + else + msg.warn('Ignoring unknown visibility mode \"' .. mode .. '\"') + return + end + + user_opts.visibility = mode + utils.shared_script_property_set("osc-visibility", mode) + + if not no_osd and tonumber(mp.get_property('osd-level')) >= 1 then + mp.osd_message('OSC visibility: ' .. mode) + end + + -- Reset the input state on a mode change. The input state will be + -- recalcuated on the next render cycle, except in 'never' mode where it + -- will just stay disabled. + mp.disable_key_bindings('input') + mp.disable_key_bindings('window-controls') + state.input_enabled = false + request_tick() +end + + +-- KeyboardControl +-- + +local osc_key_bindings = {} + +function osc_kb_control_up() + visibility_mode('always', true) + local keyboard_controls = build_keyboard_controls() + local rows = {} + local active_row_index = 0 + local active_row_name = nil + + local row_index = -1 + for row_name, row_controls in pairs(keyboard_controls) do + row_index = row_index + 1 + rows[row_index] = row_name + for i, control in pairs(row_controls) do + if control == state.highlight_element then + active_row_index = row_index + active_row_name = row_name + end + end + end + + if active_row_index - 1 < 0 then + return + end + + local next_row_index = active_row_index - 1 + + local new_active_row_name = rows[next_row_index] + local new_active_row = keyboard_controls[new_active_row_name] + + for i, control in pairs(new_active_row) do + state.highlight_element = control + return + end +end + +function osc_kb_control_down() + visibility_mode('always', true) + local keyboard_controls = build_keyboard_controls() + local rows = {} + local active_row_index = 0 + local active_row_name = nil + + local row_index = -1 + for row_name, row_controls in pairs(keyboard_controls) do + row_index = row_index + 1 + rows[row_index] = row_name + for i, control in pairs(row_controls) do + if control == state.highlight_element then + active_row_index = row_index + active_row_name = row_name + end + end + end + + if active_row_index + 1 > #rows then + return + end + + local next_row_index = active_row_index + 1 + + local new_active_row_name = rows[next_row_index] + local new_active_row = keyboard_controls[new_active_row_name] + + for i, control in pairs(new_active_row) do + state.highlight_element = control + return + end + +end + +function osc_kb_control_left() + visibility_mode('always', true) + local keyboard_controls = build_keyboard_controls() + + local active_control_name = nil + for row_name, row_controls in pairs(keyboard_controls) do + local controls = {} + local controls_index = -1 + for i, control in pairs(row_controls) do + controls_index = controls_index + 1 + controls[controls_index] = control + if control == state.highlight_element then + active_control_index = controls_index + active_control_name = control + end + end + + if active_control_name == 'seekbar' then + mp.commandv('seek', -5, 'exact', 'keyframes') + return + end + + if active_control_name then + if active_control_index - 1 < 0 then + return + end + + local next_control_index = active_control_index - 1 + state.highlight_element = controls[next_control_index] + return + end + end + +end + +function osc_kb_control_right() + visibility_mode('always', true) + local keyboard_controls = build_keyboard_controls() + + local active_control_name = nil + for row_name, row_controls in pairs(keyboard_controls) do + local controls = {} + local controls_index = -1 + for i, control in pairs(row_controls) do + controls_index = controls_index + 1 + controls[controls_index] = control + if control == state.highlight_element then + active_control_index = controls_index + active_control_name = control + end + end + + if active_control_name == 'seekbar' then + mp.commandv('seek', 5, 'exact', 'keyframes') + return + end + + if active_control_name then + if active_control_index + 1 > #controls then + return + end + + local next_control_index = active_control_index + 1 + state.highlight_element = controls[next_control_index] + return + end + end + +end + +function osc_kb_control_back() + visibility_mode('auto', true) +end + +function osc_kb_control_enter() + visibility_mode('always', true) + for n = 1, #elements do + if elements[n].name == state.highlight_element then + + local action = 'enter' + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) + return + end + + local action = 'mbtn_left_up' + if element_has_action(elements[n], action) then + elements[n].eventresponder[action](elements[n]) + return + end + end + end + +end + +function osc_add_key_binding(key, name, fn, flags) + osc_key_bindings[#osc_key_bindings + 1] = name + mp.add_forced_key_binding(key, name, fn, flags) +end + +-- This is based on code from https://github.com/darsain/uosc +function osc_enable_key_bindings() + osc_key_bindings = {} + -- The `mp.set_key_bindings()` method would be easier here, but that + -- doesn't support 'repeatable' flag, so we are stuck with this monster. + osc_add_key_binding('up', 'osc-kb-control-prev1', osc_kb_control_up, 'repeatable') + osc_add_key_binding('down', 'osc-kb-control-next1', osc_kb_control_down, 'repeatable') + osc_add_key_binding('left', 'osc-kb-control-left1', osc_kb_control_left, 'repeatable') + osc_add_key_binding('right', 'osc-kb-control-right1', osc_kb_control_right, 'repeatable') + osc_add_key_binding('enter', 'osc-kb-control-select-alt3', osc_kb_control_enter, 'repeatable') + osc_add_key_binding('esc', 'osc-kb-control-close', osc_kb_control_back, 'repeatable') +end + +function osc_disable_key_bindings() + for _, name in ipairs(osc_key_bindings) do mp.remove_key_binding(name) end + osc_key_bindings = {} +end + + + +visibility_mode(user_opts.visibility, true) +mp.register_script_message('osc-visibility', visibility_mode) +mp.add_key_binding(nil, 'visibility', function() visibility_mode('cycle') end) + +mp.register_script_message("thumbfast-info", function(json) + local data = utils.parse_json(json) + if type(data) ~= "table" or not data.width or not data.height then + msg.error("thumbfast-info: received json didn't produce a table with thumbnail information") + else + thumbfast = data + end +end) + +set_virt_mouse_area(0, 0, 0, 0, 'input') +set_virt_mouse_area(0, 0, 0, 0, 'window-controls') diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/mpv-gif.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/mpv-gif.lua new file mode 100644 index 0000000..cfc2083 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/mpv-gif.lua @@ -0,0 +1,191 @@ +-- Original by Ruin0x11 +-- Ported to Windows by Scheliux, Dragoner7 + +-- Create animated GIFs with mpv +-- Requires ffmpeg. +-- Adapted from http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html +-- Usage: "b" to set start frame, "B" to set end frame, "Ctrl+b" to create. + +require 'mp.options' +local msg = require 'mp.msg' + +local options = { + dir = "C:/Program Files/mpv/gifs", + rez = 600, + fps = 15, +} + +read_options(options, "gif") + + +local fps + +-- Check for invalid fps values +-- Can you believe Lua doesn't have a proper ternary operator in the year of our lord 2020? +if options.fps ~= nil and options.fps >= 1 and options.fps < 30 then + fps = options.fps +else + fps = 15 +end + +-- Set this to the filters to pass into ffmpeg's -vf option. +-- filters="fps=24,scale=320:-1:flags=spline" +filters=string.format("fps=%s,scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1,scale=%s:-1:flags=spline", fps, options.rez) --change spline to lanczos depending on preference + +-- Setup output directory +output_directory=string.gsub(options.dir, '\"', '') + +start_time = -1 +end_time = -1 +palette="%TEMP%palette.png" + +-- The roundabout way has to be used due to a some weird +-- behavior with %TEMP% on the subtitles= parameter in ffmpeg +-- on Windows–it needs to be quadruple backslashed +subs = "C:/Users/%USERNAME%/AppData/Local/Temp/subs.srt" + +function make_gif_with_subtitles() + make_gif_internal(true) +end + +function make_gif() + make_gif_internal(false) +end + +function table_length(t) + local count = 0 + for _ in pairs(t) do count = count + 1 end + return count +end + + +function make_gif_internal(burn_subtitles) + local start_time_l = start_time + local end_time_l = end_time + if start_time_l == -1 or end_time_l == -1 or start_time_l >= end_time_l then + mp.osd_message("Invalid start/end time.") + return + end + + mp.osd_message("Creating GIF.") + + -- shell escape + function esc(s) + return string.gsub(s, '"', '"\\""') + end + + function esc_for_sub(s) + s = string.gsub(s, [[\]], [[/]]) + s = string.gsub(s, '"', '"\\""') + s = string.gsub(s, ":", [[\\:]]) + s = string.gsub(s, "'", [[\\']]) + return s + end + + local pathname = mp.get_property("path", "") + local trim_filters = esc(filters) + + local position = start_time_l + local duration = end_time_l - start_time_l + + if burn_subtitles then + -- Determine currently active sub track + + local i = 0 + local tracks_count = mp.get_property_number("track-list/count") + local subs_array = {} + + -- check for subtitle tracks + + while i < tracks_count do + local type = mp.get_property(string.format("track-list/%d/type", i)) + local selected = mp.get_property(string.format("track-list/%d/selected", i)) + + -- if it's a sub track, save it + + if type == "sub" then + local length = table_length(subs_array) + subs_array[length] = selected == "yes" + end + i = i + 1 + end + + if table_length(subs_array) > 0 then + + local correct_track = 0 + + -- iterate through saved subtitle tracks until the correct one is found + + for index, is_selected in pairs(subs_array) do + if (is_selected) then + correct_track = index + end + end + + trim_filters = trim_filters .. string.format(",subtitles=%s:si=%s", esc_for_sub(pathname), correct_track) + + end + + end + + + -- first, create the palette + args = string.format('ffmpeg -v warning -ss %s -t %s -i "%s" -vf "%s,palettegen" -y "%s"', position, duration, esc(pathname), esc(trim_filters), esc(palette)) + msg.debug(args) + os.execute(args) + + -- then, make the gif + local filename = mp.get_property("filename/no-ext") + local file_path = output_directory .. "/" .. filename + + -- increment filename + for i=0,999 do + local fn = string.format('%s_%03d.gif',file_path,i) + if not file_exists(fn) then + gifname = fn + break + end + end + if not gifname then + mp.osd_message('No available filenames!') + return + end + + local copyts = "" + + if burn_subtitles then + copyts = "-copyts" + end + + args = string.format('ffmpeg -v warning -ss %s %s -t %s -i "%s" -i "%s" -lavfi "%s [x]; [x][1:v] paletteuse" -y "%s"', position, copyts, duration, esc(pathname), esc(palette), esc(trim_filters), esc(gifname)) + os.execute(args) + + local ok, err, code = os.rename(gifname, gifname) + if ok then + msg.info("GIF created: " .. gifname) + mp.osd_message("GIF created: " .. gifname) + else + mp.osd_message("Error creating file, check CLI for more info.") + end +end + +function set_gif_start() + start_time = mp.get_property_number("time-pos", -1) + mp.osd_message("GIF Start: " .. start_time) +end + +function set_gif_end() + end_time = mp.get_property_number("time-pos", -1) + mp.osd_message("GIF End: " .. end_time) +end + +function file_exists(name) + local f=io.open(name,"r") + if f~=nil then io.close(f) return true else return false end +end + +-- all keybindings here are set to nil on purpose 'cause I modified the keybindings (in input.conf) +mp.add_key_binding(nil, "set_gif_start", set_gif_start) +mp.add_key_binding(nil, "set_gif_end", set_gif_end) +mp.add_key_binding(nil, "make_gif", make_gif) +mp.add_key_binding(nil, "make_gif_with_subtitles", make_gif_with_subtitles) -- making GIFs with subtitles doesn't seem to work diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/playlistmanager.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/playlistmanager.lua new file mode 100644 index 0000000..7b8dbbd --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/playlistmanager.lua @@ -0,0 +1,1472 @@ +local settings = { + + -- #### FUNCTIONALITY SETTINGS + + --navigation keybindings force override only while playlist is visible + --if "no" then you can display the playlist by any of the navigation keys + dynamic_binds = true, + + -- to bind multiple keys separate them by a space + + -- main key to show playlist + key_showplaylist = "SHIFT+ENTER", + + -- display playlist while key is held down + key_peek_at_playlist = "", + + -- dynamic keys + key_moveup = "UP", + key_movedown = "DOWN", + key_movepageup = "PGUP", + key_movepagedown = "PGDWN", + key_movebegin = "HOME", + key_moveend = "END", + key_selectfile = "RIGHT LEFT", + key_unselectfile = "", + key_playfile = "ENTER", + key_removefile = "BS", + key_closeplaylist = "ESC SHIFT+ENTER", + + -- extra functionality keys + key_sortplaylist = "", + key_shuffleplaylist = "", + key_reverseplaylist = "", + key_loadfiles = "", + key_saveplaylist = "", + + --replaces matches on filenames based on extension, put as empty string to not replace anything + --replace rules are executed in provided order + --replace rule key is the pattern and value is the replace value + --uses :gsub('pattern', 'replace'), read more http://lua-users.org/wiki/StringLibraryTutorial + --'all' will match any extension or protocol if it has one + --uses json and parses it into a lua table to be able to support .conf file + + filename_replace = [[ + [ + { + "protocol": { "all": true }, + "rules": [ + { "%%(%x%x)": "hex_to_char" } + ] + } + ] + ]], + +--[=====[ START OF SAMPLE REPLACE - Remove this line to use it + --Sample replace: replaces underscore to space on all files + --for mp4 and webm; remove extension, remove brackets and surrounding whitespace, change dot between alphanumeric to space + filename_replace = [[ + [ + { + "ext": { "all": true}, + "rules": [ + { "_" : " " } + ] + },{ + "ext": { "mp4": true, "mkv": true }, + "rules": [ + { "^(.+)%..+$": "%1" }, + { "%s*[%[%(].-[%]%)]%s*": "" }, + { "(%w)%.(%w)": "%1 %2" } + ] + },{ + "protocol": { "http": true, "https": true }, + "rules": [ + { "^%a+://w*%.?": "" } + ] + } + ] + ]], +--END OF SAMPLE REPLACE ]=====] + + --json array of filetypes to search from directory + loadfiles_filetypes = [[ + [ + "jpg", "jpeg", "png", "tif", "tiff", "gif", "webp", "svg", "bmp", + "mp3", "wav", "ogm", "flac", "m4a", "wma", "ogg", "opus", + "mkv", "avi", "mp4", "ogv", "webm", "rmvb", "flv", "wmv", "mpeg", "mpg", "m4v", "3gp" + ] + ]], + + --loadfiles at startup if 1 or more items in playlist + loadfiles_on_start = false, + -- loadfiles from working directory on idle startup + loadfiles_on_idle_start = false, + --always put loaded files after currently playing file + loadfiles_always_append = false, + + --sort playlist when files are added to playlist + sortplaylist_on_file_add = false, + + --default sorting method, must be one of: "name-asc", "name-desc", "date-asc", "date-desc", "size-asc", "size-desc". + default_sort = "name-asc", + + --"linux | windows | auto" + system = "auto", + + --Use ~ for home directory. Leave as empty to use mpv/playlists + playlist_savepath = "", + + -- constant filename to save playlist as. Note that it will override existing playlist. Leave empty for generated name. + playlist_save_filename = "", + + --save playlist automatically after current file was unloaded + save_playlist_on_file_end = false, + + + --show playlist or filename every time a new file is loaded + --2 shows playlist, 1 shows current file(filename strip applied) as osd text, 0 shows nothing + --instead of using this you can also call script-message playlistmanager show playlist/filename + --ex. KEY playlist-next ; script-message playlistmanager show playlist + show_playlist_on_fileload = 0, + + --sync cursor when file is loaded from outside reasons(file-ending, playlist-next shortcut etc.) + --has the sideeffect of moving cursor if file happens to change when navigating + --good side is cursor always following current file when going back and forth files with playlist-next/prev + sync_cursor_on_load = true, + + --allow the playlist cursor to loop from end to start and vice versa + loop_cursor = true, + + --youtube-dl executable for title resolving if enabled, probably "youtube-dl" or "yt-dlp", can be absolute path + youtube_dl_executable = "youtube-dl", + + -- allow playlistmanager to write watch later config when navigating between files + allow_write_watch_later_config = true, + + -- reset cursor navigation when closing or opening playlist + reset_cursor_on_close = true, + reset_cursor_on_open = true, + + --#### VISUAL SETTINGS + + --prefer to display titles for following files: "all", "url", "none". Sorting still uses filename. + prefer_titles = "url", + + --call youtube-dl to resolve the titles of urls in the playlist + resolve_url_titles = false, + + --call ffprobe to resolve the titles of local files in the playlist (if they exist in the metadata) + resolve_local_titles = false, + + -- timeout in seconds for url title resolving + resolve_title_timeout = 15, + + -- how many url titles can be resolved at a time. Higher number might lead to stutters. + concurrent_title_resolve_limit = 10, + + --osd timeout on inactivity in seconds, use 0 for no timeout + playlist_display_timeout = 0, + + -- when peeking at playlist, show playlist at the very least for display timeout + peek_respect_display_timeout = false, + + -- the maximum amount of lines playlist will render. Optimal value depends on font/video size etc. + showamount = 9, + + --font size scales by window, if false requires larger font and padding sizes + scale_playlist_by_window=true, + --playlist ass style overrides inside curly brackets, \keyvalue is one field, extra \ for escape in lua + --example {\\fnUbuntu\\fs10\\b0\\bord1} equals: font=Ubuntu, size=10, bold=no, border=1 + --read http://docs.aegisub.org/3.2/ASS_Tags/ for reference of tags + --undeclared tags will use default osd settings + --these styles will be used for the whole playlist + style_ass_tags = "{}", + --paddings from top left corner + text_padding_x = 10, + text_padding_y = 30, + + --screen dim when menu is open 0.0 - 1.0 (0 is no dim, 1 is black) + curtain_opacity=0, + + --set title of window with stripped name + set_title_stripped = false, + title_prefix = "", + title_suffix = " - mpv", + + --slice long filenames, and how many chars to show + slice_longfilenames = false, + slice_longfilenames_amount = 70, + + --Playlist header template + --%mediatitle or %filename = title or name of playing file + --%pos = position of playing file + --%cursor = position of navigation + --%plen = playlist length + --%N = newline + playlist_header = "[%cursor/%plen]", + + --Playlist file templates + --%pos = position of file with leading zeros + --%name = title or name of file + --%N = newline + --you can also use the ass tags mentioned above. For example: + -- selected_file="{\\c&HFF00FF&}➔ %name" | to add a color for selected file. However, if you + -- use ass tags you need to reset them for every line (see https://github.com/jonniek/mpv-playlistmanager/issues/20) + normal_file = "○ %name", + hovered_file = "● %name", + selected_file = "➔ %name", + playing_file = "▷ %name", + playing_hovered_file = "▶ %name", + playing_selected_file = "➤ %name", + + + -- what to show when playlist is truncated + playlist_sliced_prefix = "...", + playlist_sliced_suffix = "...", + + --output visual feedback to OSD for tasks + display_osd_feedback = true, +} +local opts = require("mp.options") +opts.read_options(settings, "playlistmanager", function(list) update_opts(list) end) + +local utils = require("mp.utils") +local msg = require("mp.msg") +local assdraw = require("mp.assdraw") + + +--check os +if settings.system=="auto" then + local o = {} + if mp.get_property_native('options/vo-mmcss-profile', o) ~= o then + settings.system = "windows" + else + settings.system = "linux" + end +end + +--global variables +local playlist_visible = false +local strippedname = nil +local path = nil +local directory = nil +local filename = nil +local pos = 0 +local plen = 0 +local cursor = 0 +--table for saved media titles for later if we prefer them +local title_table = {} +-- table for urls and local file paths that we have requested to be resolved to titles +local requested_titles = {} + +local filetype_lookup = {} + +function update_opts(changelog) + msg.verbose('updating options') + + --parse filename json + if changelog.filename_replace then + if(settings.filename_replace~="") then + settings.filename_replace = utils.parse_json(settings.filename_replace) + else + settings.filename_replace = false + end + end + + --parse loadfiles json + if changelog.loadfiles_filetypes then + settings.loadfiles_filetypes = utils.parse_json(settings.loadfiles_filetypes) + + filetype_lookup = {} + --create loadfiles set + for _, ext in ipairs(settings.loadfiles_filetypes) do + filetype_lookup[ext] = true + end + end + + if changelog.resolve_url_titles then + resolve_titles() + end + + if changelog.resolve_local_titles then + resolve_titles() + end + + if changelog.playlist_display_timeout then + keybindstimer = mp.add_periodic_timer(settings.playlist_display_timeout, remove_keybinds) + keybindstimer:kill() + end + + if playlist_visible then showplaylist() end +end + +update_opts({filename_replace = true, loadfiles_filetypes = true}) + +local sort_modes = { + { + id="name-asc", + title="name ascending", + sort_fn=function (a, b, playlist) + return alphanumsort(playlist[a].string, playlist[b].string) + end, + }, + { + id="name-desc", + title="name descending", + sort_fn=function (a, b, playlist) + return alphanumsort(playlist[b].string, playlist[a].string) + end, + }, + { + id="date-asc", + title="date ascending", + sort_fn=function (a, b) + return (get_file_info(a).mtime or 0) < (get_file_info(b).mtime or 0) + end, + }, + { + id="date-desc", + title="date descending", + sort_fn=function (a, b) + return (get_file_info(a).mtime or 0) > (get_file_info(b).mtime or 0) + end, + }, + { + id="size-asc", + title="size ascending", + sort_fn=function (a, b) + return (get_file_info(a).size or 0) < (get_file_info(b).size or 0) + end, + }, + { + id="size-desc", + title="size descending", + sort_fn=function (a, b) + return (get_file_info(a).size or 0) > (get_file_info(b).size or 0) + end, + }, +} + +local sort_mode = 1 +for mode, sort_data in pairs(sort_modes) do + if sort_data.id == settings.default_sort then + sort_mode = mode + end +end + +function is_protocol(path) + return type(path) == 'string' and path:match('^%a[%a%d-_]+://') ~= nil +end + +function on_file_loaded() + refresh_globals() + filename = mp.get_property("filename") + path = mp.get_property('path') + local media_title = mp.get_property("media-title") + if is_protocol(path) and not title_table[path] and path ~= media_title then + title_table[path] = media_title + end + + if settings.sync_cursor_on_load then + cursor=pos + --refresh playlist if cursor moved + if playlist_visible then draw_playlist() end + end + + strippedname = stripfilename(mp.get_property('media-title')) + if settings.show_playlist_on_fileload == 2 then + showplaylist() + elseif settings.show_playlist_on_fileload == 1 then + mp.commandv('show-text', strippedname) + end + if settings.set_title_stripped then + mp.set_property("title", settings.title_prefix..strippedname..settings.title_suffix) + end +end + +function on_start_file() + refresh_globals() + filename = mp.get_property("filename") + path = mp.get_property('path') + --if not a url then join path with working directory + if not is_protocol(path) then + path = utils.join_path(mp.get_property('working-directory'), path) + directory = utils.split_path(path) + else + directory = nil + end + + if settings.loadfiles_on_start and plen == 1 then + local ext = filename:match("%.([^%.]+)$") + -- a directory or playlist has been loaded, let's not do anything as mpv will expand it into files + if ext and filetype_lookup[ext:lower()] then + msg.info("Loading files from playing files directory") + playlist() + end + end +end + +function on_end_file() + if settings.save_playlist_on_file_end then save_playlist() end + strippedname = nil + path = nil + directory = nil + filename = nil + if playlist_visible then showplaylist() end +end + +function refresh_globals() + pos = mp.get_property_number('playlist-pos', 0) + plen = mp.get_property_number('playlist-count', 0) +end + +function escapepath(dir, escapechar) + return string.gsub(dir, escapechar, '\\'..escapechar) +end + +function replace_table_has_value(value, valid_values) + if value == nil or valid_values == nil then + return false + end + return valid_values['all'] or valid_values[value] +end + +local filename_replace_functions = { + --decode special characters in url + hex_to_char = function(x) return string.char(tonumber(x, 16)) end +} + +--strip a filename based on its extension or protocol according to rules in settings +function stripfilename(pathfile, media_title) + if pathfile == nil then return '' end + local ext = pathfile:match("%.([^%.]+)$") + local protocol = pathfile:match("^(%a%a+)://") + if not ext then ext = "" end + local tmp = pathfile + if settings.filename_replace and not media_title then + for k,v in ipairs(settings.filename_replace) do + if replace_table_has_value(ext, v['ext']) or replace_table_has_value(protocol, v['protocol']) then + for ruleindex, indexrules in ipairs(v['rules']) do + for rule, override in pairs(indexrules) do + override = filename_replace_functions[override] or override + tmp = tmp:gsub(rule, override) + end + end + end + end + end + if settings.slice_longfilenames and tmp:len()>settings.slice_longfilenames_amount+5 then + tmp = tmp:sub(1, settings.slice_longfilenames_amount).." ..." + end + return tmp +end + +--gets the file info of an item +function get_file_info(item) + local path = mp.get_property('playlist/' .. item - 1 .. '/filename') + if is_protocol(path) then return {} end + local file_info = utils.file_info(path) + if not file_info then + msg.warn('failed to read file info for', path) + return {} + end + + return file_info +end + +--gets a nicename of playlist entry at 0-based position i +function get_name_from_index(i, notitle) + refresh_globals() + if plen <= i then msg.error("no index in playlist", i, "length", plen); return nil end + local _, name = nil + local title = mp.get_property('playlist/'..i..'/title') + local name = mp.get_property('playlist/'..i..'/filename') + + local should_use_title = settings.prefer_titles == 'all' or is_protocol(name) and settings.prefer_titles == 'url' + --check if file has a media title stored or as property + if not title and should_use_title then + local mtitle = mp.get_property('media-title') + if i == pos and mp.get_property('filename') ~= mtitle then + if not title_table[name] then + title_table[name] = mtitle + end + title = mtitle + elseif title_table[name] then + title = title_table[name] + end + end + + --if we have media title use a more conservative strip + if title and not notitle and should_use_title then + -- Escape a string for verbatim display on the OSD + -- Ref: https://github.com/mpv-player/mpv/blob/94677723624fb84756e65c8f1377956667244bc9/player/lua/stats.lua#L145 + return stripfilename(title, true):gsub("\\", '\\\239\187\191'):gsub("{", "\\{"):gsub("^ ", "\\h") + end + + --remove paths if they exist, keeping protocols for stripping + if string.sub(name, 1, 1) == '/' or name:match("^%a:[/\\]") then + _, name = utils.split_path(name) + end + return stripfilename(name):gsub("\\", '\\\239\187\191'):gsub("{", "\\{"):gsub("^ ", "\\h") +end + +function parse_header(string) + local esc_title = stripfilename(mp.get_property("media-title"), true):gsub("%%", "%%%%") + local esc_file = stripfilename(mp.get_property("filename")):gsub("%%", "%%%%") + return string:gsub("%%N", "\\N") + :gsub("%%pos", mp.get_property_number("playlist-pos",0)+1) + :gsub("%%plen", mp.get_property("playlist-count")) + :gsub("%%cursor", cursor+1) + :gsub("%%mediatitle", esc_title) + :gsub("%%filename", esc_file) + -- undo name escape + :gsub("%%%%", "%%") +end + +function parse_filename(string, name, index) + local base = tostring(plen):len() + local esc_name = stripfilename(name):gsub("%%", "%%%%") + return string:gsub("%%N", "\\N") + :gsub("%%pos", string.format("%0"..base.."d", index+1)) + :gsub("%%name", esc_name) + -- undo name escape + :gsub("%%%%", "%%") +end + +function parse_filename_by_index(index) + local template = settings.normal_file + + local is_idle = mp.get_property_native('idle-active') + local position = is_idle and -1 or pos + + if index == position then + if index == cursor then + if selection then + template = settings.playing_selected_file + else + template = settings.playing_hovered_file + end + else + template = settings.playing_file + end + elseif index == cursor then + if selection then + template = settings.selected_file + else + template = settings.hovered_file + end + end + + return parse_filename(template, get_name_from_index(index), index) +end + + +function draw_playlist() + refresh_globals() + local ass = assdraw.ass_new() + + local _, _, a = mp.get_osd_size() + local h = 360 + local w = h * a + + if settings.curtain_opacity ~= nil and settings.curtain_opacity ~= 0 and settings.curtain_opacity < 1.0 then + -- curtain dim from https://github.com/christoph-heinrich/mpv-quality-menu/blob/501794bfbef468ee6a61e54fc8821fe5cd72c4ed/quality-menu.lua#L699-L707 + local alpha = 255 - math.ceil(255 * settings.curtain_opacity) + ass.text = string.format('{\\pos(0,0)\\rDefault\\an7\\1c&H000000&\\alpha&H%X&}', alpha) + ass:draw_start() + ass:rect_cw(0, 0, w, h) + ass:draw_stop() + ass:new_event() + end + + ass:append(settings.style_ass_tags) + + -- TODO: padding should work even on different osd alignments + if mp.get_property("osd-align-x") == "left" and mp.get_property("osd-align-y") == "top" then + ass:pos(settings.text_padding_x, settings.text_padding_y) + end + + if settings.playlist_header ~= "" then + ass:append(parse_header(settings.playlist_header).."\\N") + end + + -- (visible index, playlist index) pairs of playlist entries that should be rendered + local visible_indices = {} + + local one_based_cursor = cursor + 1 + table.insert(visible_indices, one_based_cursor) + + local offset = 1; + local visible_indices_length = 1; + while visible_indices_length < settings.showamount and visible_indices_length < plen do + -- add entry for offset steps below the cursor + local below = one_based_cursor + offset + if below <= plen then + table.insert(visible_indices, below) + visible_indices_length = visible_indices_length + 1; + end + + -- add entry for offset steps above the cursor + -- also need to double check that there is still space, this happens if we have even numbered limit + local above = one_based_cursor - offset + if above >= 1 and visible_indices_length < settings.showamount and visible_indices_length < plen then + table.insert(visible_indices, 1, above) + visible_indices_length = visible_indices_length + 1; + end + + offset = offset + 1 + end + + -- both indices are 1 based + for display_index, playlist_index in pairs(visible_indices) do + if display_index == 1 and playlist_index ~= 1 then + ass:append(settings.playlist_sliced_prefix.."\\N") + elseif display_index == settings.showamount and playlist_index ~= plen then + ass:append(settings.playlist_sliced_suffix) + else + -- parse_filename_by_index expects 0 based index + ass:append(parse_filename_by_index(playlist_index - 1).."\\N") + end + end + + if settings.scale_playlist_by_window then w,h = 0, 0 end + mp.set_osd_ass(w, h, ass.text) +end + +local peek_display_timer = nil +local peek_button_pressed = false + +function peek_timeout() + peek_display_timer:kill() + if not peek_button_pressed and not playlist_visible then + remove_keybinds() + end +end + +function handle_complex_playlist_toggle(table) + local event = table["event"] + if event == "press" then + msg.error("Complex key event not supported. Falling back to normal playlist display.") + showplaylist() + elseif event == "down" then + showplaylist(1000000) + if settings.peek_respect_display_timeout then + peek_button_pressed = true + peek_display_timer = mp.add_periodic_timer(settings.playlist_display_timeout, peek_timeout) + end + elseif event == "up" then + -- set playlist state to not visible, doesn't actually hide playlist yet + -- this will allow us to check if other functionality has rendered playlist before removing binds + playlist_visible = false + + function remove_keybinds_after_timeout() + -- if playlist is still not visible then lets actually hide it + -- this lets other keys that interupt the peek to render playlist without peek up event closing it + if not playlist_visible then + remove_keybinds() + end + end + + if settings.peek_respect_display_timeout then + peek_button_pressed = false + if not peek_display_timer:is_enabled() then + mp.add_timeout(0.01, remove_keybinds_after_timeout) + end + else + -- use small delay to let dynamic binds run before keys are potentially unbound + mp.add_timeout(0.01, remove_keybinds_after_timeout) + end + end +end + +function toggle_playlist(show_function) + local show = show_function or showplaylist + if playlist_visible then + remove_keybinds() + else + -- toggle always shows without timeout + show(0) + end +end + +function showplaylist(duration) + refresh_globals() + if plen == 0 then return end + if not playlist_visible and settings.reset_cursor_on_open then + resetcursor() + end + + playlist_visible = true + add_keybinds() + + draw_playlist() + keybindstimer:kill() + + local dur = duration or settings.playlist_display_timeout + if dur > 0 then + keybindstimer = mp.add_periodic_timer(dur, remove_keybinds) + end +end + +function showplaylist_non_interactive(duration) + refresh_globals() + if plen == 0 then return end + if not playlist_visible and settings.reset_cursor_on_open then + resetcursor() + end + playlist_visible = true + draw_playlist() + keybindstimer:kill() + + local dur = duration or settings.playlist_display_timeout + if dur > 0 then + keybindstimer = mp.add_periodic_timer(dur, remove_keybinds) + end +end + +selection=nil +function selectfile() + refresh_globals() + if plen == 0 then return end + if not selection then + selection=cursor + else + selection=nil + end + showplaylist() +end + +function unselectfile() + selection=nil + showplaylist() +end + +function resetcursor() + selection = nil + cursor = mp.get_property_number('playlist-pos', 1) +end + +function removefile() + refresh_globals() + if plen == 0 then return end + selection = nil + if cursor==pos then mp.command("script-message unseenplaylist mark true \"playlistmanager avoid conflict when removing file\"") end + mp.commandv("playlist-remove", cursor) + if cursor==plen-1 then cursor = cursor - 1 end + if plen == 1 then + remove_keybinds() + else + showplaylist() + end +end + +function moveup() + refresh_globals() + if plen == 0 then return end + if cursor~=0 then + if selection then mp.commandv("playlist-move", cursor,cursor-1) end + cursor = cursor-1 + elseif settings.loop_cursor then + if selection then mp.commandv("playlist-move", cursor,plen) end + cursor = plen-1 + end + showplaylist() +end + +function movedown() + refresh_globals() + if plen == 0 then return end + if cursor ~= plen-1 then + if selection then mp.commandv("playlist-move", cursor,cursor+2) end + cursor = cursor + 1 + elseif settings.loop_cursor then + if selection then mp.commandv("playlist-move", cursor,0) end + cursor = 0 + end + showplaylist() +end + +function movepageup() + refresh_globals() + if plen == 0 or cursor == 0 then return end + local prev_cursor = cursor + cursor = cursor - settings.showamount + if cursor < 0 then cursor = 0 end + if selection then mp.commandv("playlist-move", prev_cursor, cursor) end + showplaylist() +end + +function movepagedown() + refresh_globals() + if plen == 0 or cursor == plen-1 then return end + local prev_cursor = cursor + cursor = cursor + settings.showamount + if cursor >= plen then cursor = plen-1 end + if selection then mp.commandv("playlist-move", prev_cursor, cursor+1) end + showplaylist() +end + +function movebegin() + refresh_globals() + if plen == 0 or cursor == 0 then return end + local prev_cursor = cursor + cursor = 0 + if selection then mp.commandv("playlist-move", prev_cursor, cursor) end + showplaylist() +end + +function moveend() + refresh_globals() + if plen == 0 or cursor == plen-1 then return end + local prev_cursor = cursor + cursor = plen-1 + if selection then mp.commandv("playlist-move", prev_cursor, cursor+1) end + showplaylist() +end + +function write_watch_later(force_write) + if settings.allow_write_watch_later_config then + if mp.get_property_bool("save-position-on-quit") or force_write then + mp.command("write-watch-later-config") + end + end +end + +function playlist_next(force_write) + write_watch_later(force_write) + mp.commandv("playlist-next", "weak") +end + +function playlist_prev(force_write) + write_watch_later(force_write) + mp.commandv("playlist-prev", "weak") +end + +function playfile() + refresh_globals() + if plen == 0 then return end + selection = nil + local is_idle = mp.get_property_native('idle-active') + if cursor ~= pos or is_idle then + write_watch_later() + mp.set_property("playlist-pos", cursor) + else + if cursor~=plen-1 then + cursor = cursor + 1 + end + write_watch_later() + mp.commandv("playlist-next", "weak") + end + if settings.show_playlist_on_fileload ~= 2 then + remove_keybinds() + end +end + +function file_filter(filenames) + local files = {} + for i = 1, #filenames do + local file = filenames[i] + local ext = file:match('%.([^%.]+)$') + if ext and filetype_lookup[ext:lower()] then + table.insert(files, file) + end + end + return files +end + +function get_playlist_filenames_set() + local filenames = {} + for n=0,plen-1,1 do + local filename = mp.get_property('playlist/'..n..'/filename') + local _, file = utils.split_path(filename) + filenames[file] = true + end + return filenames +end + +--Creates a playlist of all files in directory, will keep the order and position +--For exaple, Folder has 12 files, you open the 5th file and run this, the remaining 7 are added behind the 5th file and prior 4 files before it +function playlist(force_dir) + refresh_globals() + if not directory and plen > 0 then return end + local hasfile = true + if plen == 0 then + hasfile = false + dir = mp.get_property('working-directory') + else + dir = directory + end + + if dir == "." then dir = "" end + if force_dir then dir = force_dir end + + local files = file_filter(utils.readdir(dir, "files")) + table.sort(files, alphanumsort) + + if files == nil then + msg.verbose("no files in directory") + return + end + + local filenames = get_playlist_filenames_set() + local c, c2 = 0,0 + if files then + local cur = false + local filename = mp.get_property("filename") + for _, file in ipairs(files) do + if file == nil or file[1] == "." then + break + end + local appendstr = "append" + if not hasfile then + cur = true + appendstr = "append-play" + hasfile = true + end + if filename == file then + cur = true + elseif filenames[file] then + -- skip files already in playlist + elseif cur == true or settings.loadfiles_always_append then + mp.commandv("loadfile", utils.join_path(dir, file), appendstr) + msg.info("Appended to playlist: " .. file) + c2 = c2 + 1 + else + mp.commandv("loadfile", utils.join_path(dir, file), appendstr) + msg.info("Prepended to playlist: " .. file) + mp.commandv("playlist-move", mp.get_property_number("playlist-count", 1)-1, c) + c = c + 1 + end + end + if c2 > 0 or c>0 then + msg.info("Added "..c + c2.." files to playlist") + else + msg.info("No additional files found") + end + cursor = mp.get_property_number('playlist-pos', 1) + else + msg.error("Could not scan for files: "..(error or "")) + end + refresh_globals() + if playlist_visible then + showplaylist() + elseif settings.display_osd_feedback then + if c2 > 0 or c>0 then + mp.osd_message("Added "..c + c2.." files to playlist") + else + mp.osd_message("No additional files found") + end + end + return c + c2 +end + +function parse_home(path) + if not path:find("^~") then + return path + end + local home_dir = os.getenv("HOME") or os.getenv("USERPROFILE") + if not home_dir then + local drive = os.getenv("HOMEDRIVE") + local path = os.getenv("HOMEPATH") + if drive and path then + home_dir = utils.join_path(drive, path) + else + msg.error("Couldn't find home dir.") + return nil + end + end + local result = path:gsub("^~", home_dir) + return result +end + +local interactive_save = false +function activate_playlist_save() + if interactive_save then + remove_keybinds() + mp.command("script-message playlistmanager-save-interactive \"start interactive filenaming process\"") + else + save_playlist() + end +end + +--saves the current playlist into a m3u file +function save_playlist(filename) + local length = mp.get_property_number('playlist-count', 0) + if length == 0 then return end + + --get playlist save path + local savepath + if settings.playlist_savepath == nil or settings.playlist_savepath == "" then + savepath = mp.command_native({"expand-path", "~~home/"}).."/playlists" + else + savepath = parse_home(settings.playlist_savepath) + if savepath == nil then return end + end + + --create savepath if it doesn't exist + if utils.readdir(savepath) == nil then + local windows_args = {'powershell', '-NoProfile', '-Command', 'mkdir', savepath} + local unix_args = { 'mkdir', savepath } + local args = settings.system == 'windows' and windows_args or unix_args + local res = utils.subprocess({ args = args, cancellable = false }) + if res.status ~= 0 then + msg.error("Failed to create playlist save directory "..savepath..". Error: "..(res.error or "unknown")) + return + end + end + + local name = filename + if name == nil then + if settings.playlist_save_filename == nil or settings.playlist_save_filename == "" then + local date = os.date("*t") + local datestring = ("%02d-%02d-%02d_%02d-%02d-%02d"):format(date.year, date.month, date.day, date.hour, date.min, date.sec) + + name = datestring.."_playlist-size_"..length..".m3u" + else + name = settings.playlist_save_filename + end + end + + local savepath = utils.join_path(savepath, name) + local file, err = io.open(savepath, "w") + if not file then + msg.error("Error in creating playlist file, check permissions. Error: "..(err or "unknown")) + else + file:write("#EXTM3U\n") + local i=0 + while i < length do + local pwd = mp.get_property("working-directory") + local filename = mp.get_property('playlist/'..i..'/filename') + local fullpath = filename + if not is_protocol(filename) then + fullpath = utils.join_path(pwd, filename) + end + local title = mp.get_property('playlist/'..i..'/title') or title_table[filename] + if title then + file:write("#EXTINF:,"..title.."\n") + end + file:write(fullpath, "\n") + i=i+1 + end + local saved_msg = "Playlist written to: "..savepath + if settings.display_osd_feedback then mp.osd_message(saved_msg) end + msg.info(saved_msg) + file:close() + end +end + +function alphanumsort(a, b) + local function padnum(d) + local dec, n = string.match(d, "(%.?)0*(.+)") + return #dec > 0 and ("%.12f"):format(d) or ("%s%03d%s"):format(dec, #n, n) + end + return tostring(a):lower():gsub("%.?%d+",padnum)..("%3d"):format(#b) + < tostring(b):lower():gsub("%.?%d+",padnum)..("%3d"):format(#a) +end + +-- fast sort algo from https://github.com/zsugabubus/dotfiles/blob/master/.config/mpv/scripts/playlist-filtersort.lua +function sortplaylist(startover) + local playlist = mp.get_property_native('playlist') + if #playlist < 2 then return end + + local order = {} + for i=1, #playlist do + order[i] = i + playlist[i].string = get_name_from_index(i - 1, true) + end + + table.sort(order, function(a, b) + return sort_modes[sort_mode].sort_fn(a, b, playlist) + end) + + for i=1, #playlist do + playlist[order[i]].new_pos = i + end + + for i=1, #playlist do + while true do + local j = playlist[i].new_pos + if i == j then + break + end + mp.commandv('playlist-move', (i) - 1, (j + 1) - 1) + mp.commandv('playlist-move', (j - 1) - 1, (i) - 1) + playlist[j], playlist[i] = playlist[i], playlist[j] + end + end + + for i = 1, #playlist do + local filename = mp.get_property('playlist/' .. i - 1 .. '/filename') + local ext = filename:match("%.([^%.]+)$") + if not ext or not filetype_lookup[ext:lower()] then + --move the directory to the end of the playlist + mp.commandv('playlist-move', i - 1, #playlist) + end + end + + cursor = mp.get_property_number('playlist-pos', 0) + if startover then + mp.set_property('playlist-pos', 0) + end + if playlist_visible then + showplaylist() + end + if settings.display_osd_feedback then + mp.osd_message("Playlist sorted with "..sort_modes[sort_mode].title) + end +end + +function reverseplaylist() + local length = mp.get_property_number('playlist-count', 0) + if length < 2 then return end + for outer=1, length-1, 1 do + mp.commandv('playlist-move', outer, 0) + end + if playlist_visible then + showplaylist() + elseif settings.display_osd_feedback then + mp.osd_message("Playlist reversed") + end +end + +function shuffleplaylist() + refresh_globals() + if plen < 2 then return end + mp.command("playlist-shuffle") + math.randomseed(os.time()) + mp.commandv("playlist-move", pos, math.random(0, plen-1)) + + local playlist = mp.get_property_native('playlist') + for i = 1, #playlist do + local filename = mp.get_property('playlist/' .. i - 1 .. '/filename') + local ext = filename:match("%.([^%.]+)$") + if not ext or not filetype_lookup[ext:lower()] then + --move the directory to the end of the playlist + mp.commandv('playlist-move', i - 1, #playlist) + end + end + + mp.set_property('playlist-pos', 0) + refresh_globals() + if playlist_visible then + showplaylist() + elseif settings.display_osd_feedback then + mp.osd_message("Playlist shuffled") + end +end + +function bind_keys(keys, name, func, opts) + if keys == nil or keys == "" then + mp.add_key_binding(keys, name, func, opts) + return + end + local i = 1 + for key in keys:gmatch("[^%s]+") do + local prefix = i == 1 and '' or i + mp.add_key_binding(key, name..prefix, func, opts) + i = i + 1 + end +end + +function bind_keys_forced(keys, name, func, opts) + if keys == nil or keys == "" then + mp.add_forced_key_binding(keys, name, func, opts) + return + end + local i = 1 + for key in keys:gmatch("[^%s]+") do + local prefix = i == 1 and '' or i + mp.add_forced_key_binding(key, name..prefix, func, opts) + i = i + 1 + end +end + +function unbind_keys(keys, name) + if keys == nil or keys == "" then + mp.remove_key_binding(name) + return + end + local i = 1 + for key in keys:gmatch("[^%s]+") do + local prefix = i == 1 and '' or i + mp.remove_key_binding(name..prefix) + i = i + 1 + end +end + +function add_keybinds() + bind_keys_forced(settings.key_moveup, 'moveup', moveup, "repeatable") + bind_keys_forced(settings.key_movedown, 'movedown', movedown, "repeatable") + bind_keys_forced(settings.key_movepageup, 'movepageup', movepageup, "repeatable") + bind_keys_forced(settings.key_movepagedown, 'movepagedown', movepagedown, "repeatable") + bind_keys_forced(settings.key_movebegin, 'movebegin', movebegin, "repeatable") + bind_keys_forced(settings.key_moveend, 'moveend', moveend, "repeatable") + bind_keys_forced(settings.key_selectfile, 'selectfile', selectfile) + bind_keys_forced(settings.key_unselectfile, 'unselectfile', unselectfile) + bind_keys_forced(settings.key_playfile, 'playfile', playfile) + bind_keys_forced(settings.key_removefile, 'removefile', removefile, "repeatable") + bind_keys_forced(settings.key_closeplaylist, 'closeplaylist', remove_keybinds) +end + +function remove_keybinds() + keybindstimer:kill() + keybindstimer = mp.add_periodic_timer(settings.playlist_display_timeout, remove_keybinds) + keybindstimer:kill() + mp.set_osd_ass(0, 0, "") + playlist_visible = false + if settings.reset_cursor_on_close then + resetcursor() + end + if settings.dynamic_binds then + unbind_keys(settings.key_moveup, 'moveup') + unbind_keys(settings.key_movedown, 'movedown') + unbind_keys(settings.key_movepageup, 'movepageup') + unbind_keys(settings.key_movepagedown, 'movepagedown') + unbind_keys(settings.key_movebegin, 'movebegin') + unbind_keys(settings.key_moveend, 'moveend') + unbind_keys(settings.key_selectfile, 'selectfile') + unbind_keys(settings.key_unselectfile, 'unselectfile') + unbind_keys(settings.key_playfile, 'playfile') + unbind_keys(settings.key_removefile, 'removefile') + unbind_keys(settings.key_closeplaylist, 'closeplaylist') + end +end + +keybindstimer = mp.add_periodic_timer(settings.playlist_display_timeout, remove_keybinds) +keybindstimer:kill() + +if not settings.dynamic_binds then + add_keybinds() +end + +if settings.loadfiles_on_idle_start and mp.get_property_number('playlist-count', 0) == 0 then + playlist() +end + +mp.observe_property('playlist-count', "number", function(_, plcount) + --if we promised to listen and sort on playlist size increase do it + if settings.sortplaylist_on_file_add and (plcount > plen) then + msg.info("Added files will be automatically sorted") + refresh_globals() + sortplaylist() + end + if playlist_visible then showplaylist() end + resolve_titles() +end) + + +url_request_queue = {} +function url_request_queue.push(item) table.insert(url_request_queue, item) end +function url_request_queue.pop() return table.remove(url_request_queue, 1) end +local url_titles_to_fetch = url_request_queue +local ongoing_url_requests = {} + +function url_fetching_throttler() + if #url_titles_to_fetch == 0 then + url_title_fetch_timer:kill() + end + + local ongoing_url_requests_count = 0 + for _, ongoing in pairs(ongoing_url_requests) do + if ongoing then + ongoing_url_requests_count = ongoing_url_requests_count + 1 + end + end + + -- start resolving some url titles if there is available slots + local amount_to_fetch = math.max(0, settings.concurrent_title_resolve_limit - ongoing_url_requests_count) + for index=1,amount_to_fetch,1 do + local file = url_titles_to_fetch.pop() + if file then + ongoing_url_requests[file] = true + resolve_ytdl_title(file) + end + end +end + +url_title_fetch_timer = mp.add_periodic_timer(0.1, url_fetching_throttler) +url_title_fetch_timer:kill() + +local_request_queue = {} +function local_request_queue.push(item) table.insert(local_request_queue, item) end +function local_request_queue.pop() return table.remove(local_request_queue, 1) end +local local_titles_to_fetch = local_request_queue +local ongoing_local_request = false + +-- this will only allow 1 concurrent local title resolve process +function local_fetching_throttler() + if not ongoing_local_request then + local file = local_titles_to_fetch.pop() + if file then + ongoing_local_request = true + resolve_ffprobe_title(file) + end + end +end + +function resolve_titles() + if settings.prefer_titles == 'none' then return end + if not settings.resolve_url_titles and not settings.resolve_local_titles then return end + + local length = mp.get_property_number('playlist-count', 0) + if length < 2 then return end + -- loop all items in playlist because we can't predict how it has changed + local added_urls = false + local added_local = false + for i=0,length - 1,1 do + local filename = mp.get_property('playlist/'..i..'/filename') + local title = mp.get_property('playlist/'..i..'/title') + if i ~= pos + and filename + and not title + and not title_table[filename] + and not requested_titles[filename] + then + requested_titles[filename] = true + if filename:match('^https?://') then + url_titles_to_fetch.push(filename) + added_urls = true + elseif settings.prefer_titles == "all" then + local_titles_to_fetch.push(filename) + added_local = true + end + end + end + if added_urls then + url_title_fetch_timer:resume() + end + if added_local then + local_fetching_throttler() + end +end + +function resolve_ytdl_title(filename) + local args = { + settings.youtube_dl_executable, + '--no-playlist', + '--flat-playlist', + '-sJ', + '--no-config', + filename, + } + local req = mp.command_native_async( + { + name = "subprocess", + args = args, + playback_only = false, + capture_stdout = true + }, + function (success, res) + ongoing_url_requests[filename] = false + if res.killed_by_us then + msg.verbose('Request to resolve url title ' .. filename .. ' timed out') + return + end + if res.status == 0 then + local json, err = utils.parse_json(res.stdout) + if not err then + local is_playlist = json['_type'] and json['_type'] == 'playlist' + local title = (is_playlist and '[playlist]: ' or '') .. json['title'] + msg.verbose(filename .. " resolved to '" .. title .. "'") + title_table[filename] = title + refresh_globals() + if playlist_visible then showplaylist() end + else + msg.error("Failed parsing json, reason: "..(err or "unknown")) + end + else + msg.error("Failed to resolve url title "..filename.." Error: "..(res.error or "unknown")) + end + end + ) + + mp.add_timeout( + settings.resolve_title_timeout, + function() + mp.abort_async_command(req) + ongoing_url_requests[filename] = false + end + ) +end + +function resolve_ffprobe_title(filename) + local args = { "ffprobe", "-show_format", "-show_entries", "format=tags", "-loglevel", "quiet", filename } + local req = mp.command_native_async( + { + name = "subprocess", + args = args, + playback_only = false, + capture_stdout = true + }, + function (success, res) + ongoing_local_request = false + local_fetching_throttler() + if res.killed_by_us then + msg.verbose('Request to resolve local title ' .. filename .. ' timed out') + return + end + if res.status == 0 then + local title = string.match(res.stdout, "title=([^\n\r]+)") + if title then + msg.verbose(filename .. " resolved to '" .. title .. "'") + title_table[filename] = title + refresh_globals() + if playlist_visible then showplaylist() end + end + else + msg.error("Failed to resolve local title "..filename.." Error: "..(res.error or "unknown")) + end + end + ) +end + +--script message handler +function handlemessage(msg, value, value2) + if msg == "show" and value == "playlist" then + if value2 ~= "toggle" then + showplaylist(value2) + return + else + toggle_playlist(showplaylist) + return + end + end + if msg == "show" and value == "playlist-nokeys" then + if value2 ~= "toggle" then + showplaylist_non_interactive(value2) + return + else + toggle_playlist(showplaylist_non_interactive) + return + end + end + if msg == "show" and value == "filename" and strippedname and value2 then + mp.commandv('show-text', strippedname, tonumber(value2)*1000 ) ; return + end + if msg == "show" and value == "filename" and strippedname then + mp.commandv('show-text', strippedname ) ; return + end + if msg == "sort" then sortplaylist(value) ; return end + if msg == "shuffle" then shuffleplaylist() ; return end + if msg == "reverse" then reverseplaylist() ; return end + if msg == "loadfiles" then playlist(value) ; return end + if msg == "save" then save_playlist(value) ; return end + if msg == "playlist-next" then playlist_next(true) ; return end + if msg == "playlist-prev" then playlist_prev(true) ; return end + if msg == "enable-interactive-save" then interactive_save = true end + if msg == "close" then remove_keybinds() end +end + +mp.register_script_message("playlistmanager", handlemessage) + +bind_keys(settings.key_sortplaylist, "sortplaylist", function() + sortplaylist() + sort_mode = sort_mode + 1 + if sort_mode > #sort_modes then sort_mode = 1 end +end) +bind_keys(settings.key_shuffleplaylist, "shuffleplaylist", shuffleplaylist) +bind_keys(settings.key_reverseplaylist, "reverseplaylist", reverseplaylist) +bind_keys(settings.key_loadfiles, "loadfiles", playlist) +bind_keys(settings.key_saveplaylist, "saveplaylist", activate_playlist_save) +bind_keys(settings.key_showplaylist, "showplaylist", showplaylist) +bind_keys( + settings.key_peek_at_playlist, + "peek_at_playlist", + handle_complex_playlist_toggle, + { complex=true } +) + +mp.register_event("start-file", on_start_file) +mp.register_event("file-loaded", on_file_loaded) +mp.register_event("end-file", on_end_file) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/seek-to.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/seek-to.lua new file mode 100644 index 0000000..3f2c82a --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/seek-to.lua @@ -0,0 +1,192 @@ +-- Source: https://github.com/dexeonify/mpv-config/blob/main/scripts/seek-to.lua +-- with modifications + +local assdraw = require 'mp.assdraw' +local utils = require 'mp.utils' +local msg = require 'mp.msg' +local active = false +local cursor_position = 1 +local time_scale = {60*60*10, 60*60, 60*10, 60, 10, 1, 0.1, 0.01, 0.001} + +local ass_begin = mp.get_property("osd-ass-cc/0") +local ass_end = mp.get_property("osd-ass-cc/1") + +local history = { {} } +for i = 1, 9 do + history[1][i] = 0 +end +local history_position = 1 + +-- timer to redraw periodically the message +-- to avoid leaving bindings when the seeker disappears for whatever reason +-- pretty hacky tbh +local timer = nil +local timer_duration = 3 + +function show_seeker() + local prepend_char = {'','',':','',':','','.','',''} + local str = '' + for i = 1, 9 do + str = str .. prepend_char[i] + if i == cursor_position then + str = str .. '{\\b1}' .. history[history_position][i] .. '{\\r}' + else + str = str .. history[history_position][i] + end + end + mp.osd_message("Seek to: " .. ass_begin .. str .. ass_end, timer_duration) +end + +function copy_history_to_last() + if history_position ~= #history then + for i = 1, 9 do + history[#history][i] = history[history_position][i] + end + history_position = #history + end +end + +function change_number(i) + -- can't set above 60 minutes or seconds + if (cursor_position == 3 or cursor_position == 5) and i >= 6 then + return + end + if history[history_position][cursor_position] ~= i then + copy_history_to_last() + history[#history][cursor_position] = i + end + shift_cursor(false) +end + +function shift_cursor(left) + if left then + cursor_position = math.max(1, cursor_position - 1) + else + cursor_position = math.min(cursor_position + 1, 9) + end +end + +function current_time_as_sec(time) + local sec = 0 + for i = 1, 9 do + sec = sec + time_scale[i] * time[i] + end + return sec +end + +function time_equal(lhs, rhs) + for i = 1, 9 do + if lhs[i] ~= rhs[i] then + return false + end + end + return true +end + +function seek_to() + copy_history_to_last() + mp.commandv("osd-bar", "seek", current_time_as_sec(history[history_position]), "absolute") + --deduplicate consecutive timestamps + if #history == 1 or not time_equal(history[history_position], history[#history - 1]) then + history[#history + 1] = {} + history_position = #history + end + for i = 1, 9 do + history[#history][i] = 0 + end +end + +function backspace() + if history[history_position][cursor_position] ~= 0 then + copy_history_to_last() + history[#history][cursor_position] = 0 + end + shift_cursor(true) +end + +function history_move(up) + if up then + history_position = math.max(1, history_position - 1) + else + history_position = math.min(history_position + 1, #history) + end +end + +local key_mappings = { + LEFT = function() shift_cursor(true) show_seeker() end, + RIGHT = function() shift_cursor(false) show_seeker() end, + UP = function() history_move(true) show_seeker() end, + DOWN = function() history_move(false) show_seeker() end, + BS = function() backspace() show_seeker() end, + ESC = function() set_inactive() end, + ENTER = function() seek_to() set_inactive() end +} +for i = 0, 9 do + local func = function() change_number(i) show_seeker() end + key_mappings[string.format("KP%d", i)] = func + key_mappings[string.format("%d", i)] = func +end + +function set_active() + if not mp.get_property("seekable") then return end + -- find duration of the video and set cursor position accordingly + local duration = mp.get_property_number("duration") + if duration ~= nil then + for i = 1, 9 do + if duration > time_scale[i] then + cursor_position = i + break + end + end + end + for key, func in pairs(key_mappings) do + mp.add_forced_key_binding(key, "seek-to-"..key, func) + end + show_seeker() + timer = mp.add_periodic_timer(timer_duration, show_seeker) + active = true +end + +function set_inactive() + mp.osd_message("") + for key, _ in pairs(key_mappings) do + mp.remove_key_binding("seek-to-"..key) + end + timer:kill() + active = false +end + +function paste_timestamp() + -- get clipboard data + local clipboard = utils.subprocess({ + args = { "powershell", "-Command", "Get-Clipboard", "-Raw" }, + playback_only = false, + capture_stdout = true, + capture_stderr = true + }) + + -- error handling + if not clipboard.error then + timestamp = clipboard.stdout + else + msg.error("Error getting data from clipboard:") + msg.error(" stderr: " .. clipboard.stderr) + msg.error(" stdout: " .. clipboard.stdout) + return + end + + -- find timestamp from clipboard + match = timestamp:match("%d?%d?:?%d%d:%d%d%.?%d*") + + -- paste and seek to timestamp + if match ~= nil then + mp.osd_message("Timestamp pasted: " .. match) + mp.commandv("osd-bar", "seek", match, "absolute") + else + msg.warn("No pastable timestamp found!") + end +end + +-- keybindings are set in input.conf +mp.add_key_binding(nil, "toggle-seeker", function() if active then set_inactive() else set_active() end end) +mp.add_key_binding(nil, "paste-timestamp", paste_timestamp) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/sponsorblock-minimal.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/sponsorblock-minimal.lua new file mode 100644 index 0000000..967348b --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/sponsorblock-minimal.lua @@ -0,0 +1,147 @@ +-- sponsorblock-minimal.lua +-- source: https://codeberg.org/jouni/mpv_sponsorblock_minimal +-- +-- This script skips sponsored segments of YouTube videos +-- using data from https://github.com/ajayyy/SponsorBlock + +local opt = require 'mp.options' +local utils = require 'mp.utils' + +local ON = false +local ranges = nil + +local options = { + server = "https://sponsor.ajay.app/api/skipSegments", + + -- Categories to fetch and skip + categories = '"sponsor"', + + -- Set this to "true" to use sha256HashPrefix instead of videoID + hash = "" +} + +opt.read_options(options) + +function get_ranges(youtube_id, url) + local luacurl_available, cURL = pcall(require,'cURL') + + local res = nil + if not(luacurl_available) then -- if Lua-cURL is not available on this system + local sponsors = mp.command_native{ + name = "subprocess", + capture_stdout = true, + playback_only = false, + args = {"curl", "-L", "-s", "-g", url} + } + res = sponsors.stdout + else -- otherwise use Lua-cURL (binding to libcurl) + local buf={} + local c = cURL.easy_init() + c:setopt_followlocation(1) + c:setopt_url(url) + c:setopt_writefunction(function(chunk) table.insert(buf,chunk); return true; end) + c:perform() + res = table.concat(buf) + end + + if res then + local json = utils.parse_json(res) + if type(json) == "table" then + if options.hash == "true" then + for _, i in pairs(json) do + if i.videoID == youtube_id then + return i.segments + end + end + else + return json + end + end + end + + return nil +end + +function skip_ads(name,pos) + if pos then + for _, i in pairs(ranges) do + v = i.segment[2] + if i.segment[1] <= pos and v > pos then + --this message may sometimes be wrong + --it only seems to be a visual thing though + mp.osd_message(("[sponsorblock] skipping forward %ds"):format(math.floor(v-mp.get_property("time-pos")))) + --need to do the +0.01 otherwise mpv will start spamming skip sometimes + --example: https://www.youtube.com/watch?v=4ypMJzeNooo + mp.set_property("time-pos",v+0.01) + return + end + end + end +end + +function file_loaded() + local video_path = mp.get_property("path", "") + local video_referer = string.match(mp.get_property("http-header-fields", ""), "Referer:([^,]+)") or "" + + local urls = { + "ytdl://youtu%.be/([%w-_]+).*", + "ytdl://w?w?w?%.?youtube%.com/v/([%w-_]+).*", + "https?://youtu%.be/([%w-_]+).*", + "https?://w?w?w?%.?youtube%.com/v/([%w-_]+).*", + "/watch.*[?&]v=([%w-_]+).*", + "/embed/([%w-_]+).*", + "^ytdl://([%w-_]+)$", + "-([%w-_]+)%." + } + local youtube_id = nil + local purl = mp.get_property("metadata/by-key/PURL", "") + for i,url in ipairs(urls) do + youtube_id = youtube_id or string.match(video_path, url) or string.match(video_referer, url) or string.match(purl, url) + if youtube_id then break end + end + + if not youtube_id or string.len(youtube_id) < 11 then return end + youtube_id = string.sub(youtube_id, 1, 11) + + local url = "" + if options.hash == "true" then + local sha = mp.command_native{ + name = "subprocess", + capture_stdout = true, + args = {"sha256sum"}, + stdin_data = youtube_id + } + url = ("%s/%s?categories=[%s]"):format(options.server, string.sub(sha.stdout, 0, 4), options.categories) + else + url = ("%s?videoID=%s&categories=[%s]"):format(options.server, youtube_id, options.categories) + end + + ranges = get_ranges(youtube_id, url) + if ranges then + ON = true + mp.add_key_binding("b","sponsorblock",toggle) + mp.observe_property("time-pos", "native", skip_ads) + end +end + +function end_file() + if not ON then return end + mp.unobserve_property(skip_ads) + ranges = nil + ON = false +end + +function toggle() + if ON then + mp.unobserve_property(skip_ads) + mp.osd_message("[sponsorblock] off") + ON = false + else + mp.observe_property("time-pos", "native", skip_ads) + mp.osd_message("[sponsorblock] on") + ON = true + end +end + +mp.register_event("file-loaded", file_loaded) +mp.register_event("end-file", end_file) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/thumbfast.lua b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/thumbfast.lua new file mode 100644 index 0000000..723a402 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/scripts/thumbfast.lua @@ -0,0 +1,926 @@ +-- thumbfast.lua +-- +-- High-performance on-the-fly thumbnailer +-- +-- Built for easy integration in third-party UIs. + +--[[ +This Source Code Form is subject to the terms of the Mozilla Public +License, v. 2.0. If a copy of the MPL was not distributed with this +file, You can obtain one at https://mozilla.org/MPL/2.0/. +]] + +local options = { + -- Socket path (leave empty for auto) + socket = "", + + -- Thumbnail path (leave empty for auto) + thumbnail = "", + + -- Maximum thumbnail size in pixels (scaled down to fit) + -- Values are scaled when hidpi is enabled + max_height = 200, + max_width = 200, + + -- Apply tone-mapping, no to disable + tone_mapping = "auto", + + -- Overlay id + overlay_id = 42, + + -- Spawn thumbnailer on file load for faster initial thumbnails + spawn_first = false, + + -- Close thumbnailer process after an inactivity period in seconds, 0 to disable + quit_after_inactivity = 0, + + -- Enable on network playback + network = false, + + -- Enable on audio playback + audio = false, + + -- Enable hardware decoding + hwdec = false, + + -- Windows only: use native Windows API to write to pipe (requires LuaJIT) + direct_io = false, + + -- Custom path to the mpv executable + mpv_path = "mpv" +} + +mp.utils = require "mp.utils" +mp.options = require "mp.options" +mp.options.read_options(options, "thumbfast") + +local properties = {} +local pre_0_30_0 = mp.command_native_async == nil +local pre_0_33_0 = true + +function subprocess(args, async, callback) + callback = callback or function() end + + if not pre_0_30_0 then + if async then + return mp.command_native_async({name = "subprocess", playback_only = true, args = args}, callback) + else + return mp.command_native({name = "subprocess", playback_only = false, capture_stdout = true, args = args}) + end + else + if async then + return mp.utils.subprocess_detached({args = args}, callback) + else + return mp.utils.subprocess({args = args}) + end + end +end + +local winapi = {} +if options.direct_io then + local ffi_loaded, ffi = pcall(require, "ffi") + if ffi_loaded then + winapi = { + ffi = ffi, + C = ffi.C, + bit = require("bit"), + socket_wc = "", + + -- WinAPI constants + CP_UTF8 = 65001, + GENERIC_WRITE = 0x40000000, + OPEN_EXISTING = 3, + FILE_FLAG_WRITE_THROUGH = 0x80000000, + FILE_FLAG_NO_BUFFERING = 0x20000000, + PIPE_NOWAIT = ffi.new("unsigned long[1]", 0x00000001), + + INVALID_HANDLE_VALUE = ffi.cast("void*", -1), + + -- don't care about how many bytes WriteFile wrote, so allocate something to store the result once + _lpNumberOfBytesWritten = ffi.new("unsigned long[1]"), + } + -- cache flags used in run() to avoid bor() call + winapi._createfile_pipe_flags = winapi.bit.bor(winapi.FILE_FLAG_WRITE_THROUGH, winapi.FILE_FLAG_NO_BUFFERING) + + ffi.cdef[[ + void* __stdcall CreateFileW(const wchar_t *lpFileName, unsigned long dwDesiredAccess, unsigned long dwShareMode, void *lpSecurityAttributes, unsigned long dwCreationDisposition, unsigned long dwFlagsAndAttributes, void *hTemplateFile); + bool __stdcall WriteFile(void *hFile, const void *lpBuffer, unsigned long nNumberOfBytesToWrite, unsigned long *lpNumberOfBytesWritten, void *lpOverlapped); + bool __stdcall CloseHandle(void *hObject); + bool __stdcall SetNamedPipeHandleState(void *hNamedPipe, unsigned long *lpMode, unsigned long *lpMaxCollectionCount, unsigned long *lpCollectDataTimeout); + int __stdcall MultiByteToWideChar(unsigned int CodePage, unsigned long dwFlags, const char *lpMultiByteStr, int cbMultiByte, wchar_t *lpWideCharStr, int cchWideChar); + ]] + + winapi.MultiByteToWideChar = function(MultiByteStr) + if MultiByteStr then + local utf16_len = winapi.C.MultiByteToWideChar(winapi.CP_UTF8, 0, MultiByteStr, -1, nil, 0) + if utf16_len > 0 then + local utf16_str = winapi.ffi.new("wchar_t[?]", utf16_len) + if winapi.C.MultiByteToWideChar(winapi.CP_UTF8, 0, MultiByteStr, -1, utf16_str, utf16_len) > 0 then + return utf16_str + end + end + end + return "" + end + + else + options.direct_io = false + end +end + +local file = nil +local file_bytes = 0 +local spawned = false +local disabled = false +local force_disabled = false +local spawn_waiting = false +local spawn_working = false +local script_written = false + +local dirty = false + +local x = nil +local y = nil +local last_x = x +local last_y = y + +local last_seek_time = nil + +local effective_w = options.max_width +local effective_h = options.max_height +local real_w = nil +local real_h = nil +local last_real_w = nil +local last_real_h = nil + +local script_name = nil + +local show_thumbnail = false + +local filters_reset = {["lavfi-crop"]=true, ["crop"]=true} +local filters_runtime = {["hflip"]=true, ["vflip"]=true} +local filters_all = {["hflip"]=true, ["vflip"]=true, ["lavfi-crop"]=true, ["crop"]=true} + +local tone_mappings = {["none"]=true, ["clip"]=true, ["linear"]=true, ["gamma"]=true, ["reinhard"]=true, ["hable"]=true, ["mobius"]=true} +local last_tone_mapping = nil + +local last_vf_reset = "" +local last_vf_runtime = "" + +local last_rotate = 0 + +local par = "" +local last_par = "" + +local last_has_vid = 0 +local has_vid = 0 + +local file_timer = nil +local file_check_period = 1/60 + +local allow_fast_seek = true + +local client_script = [=[ +#!/usr/bin/env bash +MPV_IPC_FD=0; MPV_IPC_PATH="%s" +trap "kill 0" EXIT +while [[ $# -ne 0 ]]; do case $1 in --mpv-ipc-fd=*) MPV_IPC_FD=${1/--mpv-ipc-fd=/} ;; esac; shift; done +if echo "print-text thumbfast" >&"$MPV_IPC_FD"; then echo -n > "$MPV_IPC_PATH"; tail -f "$MPV_IPC_PATH" >&"$MPV_IPC_FD" & while read -r -u "$MPV_IPC_FD" 2>/dev/null; do :; done; fi +]=] + +local function get_os() + local raw_os_name = "" + + if jit and jit.os and jit.arch then + raw_os_name = jit.os + else + if package.config:sub(1,1) == "\\" then + -- Windows + local env_OS = os.getenv("OS") + if env_OS then + raw_os_name = env_OS + end + else + raw_os_name = subprocess({"uname", "-s"}).stdout + end + end + + raw_os_name = (raw_os_name):lower() + + local os_patterns = { + ["windows"] = "windows", + ["linux"] = "linux", + + ["osx"] = "darwin", + ["mac"] = "darwin", + ["darwin"] = "darwin", + + ["^mingw"] = "windows", + ["^cygwin"] = "windows", + + ["bsd$"] = "darwin", + ["sunos"] = "darwin" + } + + -- Default to linux + local str_os_name = "linux" + + for pattern, name in pairs(os_patterns) do + if raw_os_name:match(pattern) then + str_os_name = name + break + end + end + + return str_os_name +end + +local os_name = mp.get_property("platform") or get_os() + +local path_separator = os_name == "windows" and "\\" or "/" + +if options.socket == "" then + if os_name == "windows" then + options.socket = "thumbfast" + else + options.socket = "/tmp/thumbfast" + end +end + +if options.thumbnail == "" then + if os_name == "windows" then + options.thumbnail = os.getenv("TEMP").."\\thumbfast.out" + else + options.thumbnail = "/tmp/thumbfast.out" + end +end + +local unique = mp.utils.getpid() + +options.socket = options.socket .. unique +options.thumbnail = options.thumbnail .. unique + +if options.direct_io then + if os_name == "windows" then + winapi.socket_wc = winapi.MultiByteToWideChar("\\\\.\\pipe\\" .. options.socket) + end + + if winapi.socket_wc == "" then + options.direct_io = false + end +end + +local mpv_path = options.mpv_path + +if mpv_path == "mpv" and os_name == "darwin" and unique then + -- TODO: look into ~~osxbundle/ + mpv_path = string.gsub(subprocess({"ps", "-o", "comm=", "-p", tostring(unique)}).stdout, "[\n\r]", "") + if mpv_path ~= "mpv" then + mpv_path = string.gsub(mpv_path, "/mpv%-bundle$", "/mpv") + local mpv_bin = mp.utils.file_info("/usr/local/mpv") + if mpv_bin and mpv_bin.is_file then + mpv_path = "/usr/local/mpv" + else + local mpv_app = mp.utils.file_info("/Applications/mpv.app/Contents/MacOS/mpv") + if mpv_app and mpv_app.is_file then + mp.msg.warn("symlink mpv to fix Dock icons: `sudo ln -s /Applications/mpv.app/Contents/MacOS/mpv /usr/local/mpv`") + else + mp.msg.warn("drag to your Applications folder and symlink mpv to fix Dock icons: `sudo ln -s /Applications/mpv.app/Contents/MacOS/mpv /usr/local/mpv`") + end + end + end +end + +local function vo_tone_mapping() + local passes = mp.get_property_native("vo-passes") + if passes and passes["fresh"] then + for k, v in pairs(passes["fresh"]) do + for k2, v2 in pairs(v) do + if k2 == "desc" and v2 then + local tone_mapping = string.match(v2, "([0-9a-z.-]+) tone map") + if tone_mapping then + return tone_mapping + end + end + end + end + end +end + +local function vf_string(filters, full) + local vf = "" + local vf_table = properties["vf"] + + if vf_table and #vf_table > 0 then + for i = #vf_table, 1, -1 do + if filters[vf_table[i].name] then + local args = "" + for key, value in pairs(vf_table[i].params) do + if args ~= "" then + args = args .. ":" + end + args = args .. key .. "=" .. value + end + vf = vf .. vf_table[i].name .. "=" .. args .. "," + end + end + end + + if (full and options.tone_mapping ~= "no") or options.tone_mapping == "auto" then + if properties["video-params"] and properties["video-params"]["primaries"] == "bt.2020" then + local tone_mapping = options.tone_mapping + if tone_mapping == "auto" then + tone_mapping = last_tone_mapping or properties["tone-mapping"] + if tone_mapping == "auto" and properties["current-vo"] == "gpu-next" then + tone_mapping = vo_tone_mapping() + end + end + if not tone_mappings[tone_mapping] then + tone_mapping = "hable" + end + last_tone_mapping = tone_mapping + vf = vf .. "zscale=transfer=linear,format=gbrpf32le,tonemap="..tone_mapping..",zscale=transfer=bt709," + end + end + + if full then + vf = vf.."scale=w="..effective_w..":h="..effective_h..par..",pad=w="..effective_w..":h="..effective_h..":x=-1:y=-1,format=bgra" + end + + return vf +end + +local function calc_dimensions() + local width = properties["video-out-params"] and properties["video-out-params"]["dw"] + local height = properties["video-out-params"] and properties["video-out-params"]["dh"] + if not width or not height then return end + + local scale = properties["display-hidpi-scale"] or 1 + + if width / height > options.max_width / options.max_height then + effective_w = math.floor(options.max_width * scale + 0.5) + effective_h = math.floor(height / width * effective_w + 0.5) + else + effective_h = math.floor(options.max_height * scale + 0.5) + effective_w = math.floor(width / height * effective_h + 0.5) + end + + local v_par = properties["video-out-params"] and properties["video-out-params"]["par"] or 1 + if v_par == 1 then + par = ":force_original_aspect_ratio=decrease" + else + par = "" + end +end + +local info_timer = nil + +local function info(w, h) + local rotate = properties["video-params"] and properties["video-params"]["rotate"] + local image = properties["current-tracks/video"] and properties["current-tracks/video"]["image"] + local albumart = image and properties["current-tracks/video"]["albumart"] + + disabled = (w or 0) == 0 or (h or 0) == 0 or + has_vid == 0 or + (properties["demuxer-via-network"] and not options.network) or + (albumart and not options.audio) or + (image and not albumart) or + force_disabled + + if info_timer then + info_timer:kill() + info_timer = nil + elseif has_vid == 0 or (rotate == nil and not disabled) then + info_timer = mp.add_timeout(0.05, function() info(w, h) end) + end + + local json, err = mp.utils.format_json({width=w, height=h, disabled=disabled, available=true, socket=options.socket, thumbnail=options.thumbnail, overlay_id=options.overlay_id}) + if pre_0_30_0 then + mp.command_native({"script-message", "thumbfast-info", json}) + else + mp.command_native_async({"script-message", "thumbfast-info", json}, function() end) + end +end + +local function remove_thumbnail_files() + if file then + file:close() + file = nil + file_bytes = 0 + end + os.remove(options.thumbnail) + os.remove(options.thumbnail..".bgra") +end + +local activity_timer + +local function spawn(time) + if disabled then return end + + local path = properties["path"] + if path == nil then return end + + if options.quit_after_inactivity > 0 then + if show_thumbnail or activity_timer:is_enabled() then + activity_timer:kill() + end + activity_timer:resume() + end + + local open_filename = properties["stream-open-filename"] + local ytdl = open_filename and properties["demuxer-via-network"] and path ~= open_filename + if ytdl then + path = open_filename + end + + remove_thumbnail_files() + + local vid = properties["vid"] + has_vid = vid or 0 + + local args = { + mpv_path, "--no-config", "--msg-level=all=no", "--idle", "--pause", "--keep-open=always", "--really-quiet", "--no-terminal", + "--load-scripts=no", "--osc=no", "--ytdl=no", "--load-stats-overlay=no", "--load-osd-console=no", "--load-auto-profiles=no", + "--edition="..(properties["edition"] or "auto"), "--vid="..(vid or "auto"), "--no-sub", "--no-audio", + "--start="..time, allow_fast_seek and "--hr-seek=no" or "--hr-seek=yes", + "--ytdl-format=worst", "--demuxer-readahead-secs=0", "--demuxer-max-bytes=128KiB", + "--vd-lavc-skiploopfilter=all", "--vd-lavc-software-fallback=1", "--vd-lavc-fast", "--vd-lavc-threads=2", "--hwdec="..(options.hwdec and "auto" or "no"), + "--vf="..vf_string(filters_all, true), + "--sws-scaler=fast-bilinear", + "--video-rotate="..last_rotate, + "--ovc=rawvideo", "--of=image2", "--ofopts=update=1", "--o="..options.thumbnail + } + + if not pre_0_30_0 then + table.insert(args, "--sws-allow-zimg=no") + end + + if os_name == "darwin" and properties["macos-app-activation-policy"] then + table.insert(args, "--macos-app-activation-policy=accessory") + end + + if os_name == "windows" or pre_0_33_0 then + table.insert(args, "--input-ipc-server="..options.socket) + elseif not script_written then + local client_script_path = options.socket..".run" + local script = io.open(client_script_path, "w+") + if script == nil then + mp.msg.error("client script write failed") + return + else + script_written = true + script:write(string.format(client_script, options.socket)) + script:close() + subprocess({"chmod", "+x", client_script_path}, true) + table.insert(args, "--scripts="..client_script_path) + end + else + local client_script_path = options.socket..".run" + table.insert(args, "--scripts="..client_script_path) + end + + table.insert(args, "--") + table.insert(args, path) + + spawned = true + spawn_waiting = true + + subprocess(args, true, + function(success, result) + if spawn_waiting and (success == false or (result.status ~= 0 and result.status ~= -2)) then + spawned = false + spawn_waiting = false + options.tone_mapping = "no" + mp.msg.error("mpv subprocess create failed") + if not spawn_working then -- notify users of required configuration + if options.mpv_path == "mpv" then + if properties["current-vo"] == "libmpv" then + if options.mpv_path == mpv_path then -- attempt to locate ImPlay + mpv_path = "ImPlay" + spawn(time) + else -- ImPlay not in path + if os_name ~= "darwin" then + force_disabled = true + info(real_w or effective_w, real_h or effective_h) + end + mp.commandv("show-text", "thumbfast: ERROR! cannot create mpv subprocess", 5000) + mp.commandv("script-message-to", "implay", "show-message", "thumbfast initial setup", "Set mpv_path=PATH_TO_ImPlay in thumbfast config:\n" .. string.gsub(mp.command_native({"expand-path", "~~/script-opts/thumbfast.conf"}), "[/\\]", path_separator).."\nand restart ImPlay") + end + else + mp.commandv("show-text", "thumbfast: ERROR! cannot create mpv subprocess", 5000) + if os_name == "windows" then + mp.commandv("script-message-to", "mpvnet", "show-text", "thumbfast: ERROR! install standalone mpv, see README", 5000, 20) + mp.commandv("script-message", "mpv.net", "show-text", "thumbfast: ERROR! install standalone mpv, see README", 5000, 20) + end + end + else + mp.commandv("show-text", "thumbfast: ERROR! cannot create mpv subprocess", 5000) + -- found ImPlay but not defined in config + mp.commandv("script-message-to", "implay", "show-message", "thumbfast", "Set mpv_path=PATH_TO_ImPlay in thumbfast config:\n" .. string.gsub(mp.command_native({"expand-path", "~~/script-opts/thumbfast.conf"}), "[/\\]", path_separator).."\nand restart ImPlay") + end + end + elseif success == true and (result.status == 0 or result.status == -2) then + if not spawn_working and properties["current-vo"] == "libmpv" and options.mpv_path ~= mpv_path then + mp.commandv("script-message-to", "implay", "show-message", "thumbfast initial setup", "Set mpv_path=ImPlay in thumbfast config:\n" .. string.gsub(mp.command_native({"expand-path", "~~/script-opts/thumbfast.conf"}), "[/\\]", path_separator).."\nand restart ImPlay") + end + spawn_working = true + spawn_waiting = false + end + end + ) +end + +local function run(command) + if not spawned then return end + + if options.direct_io then + local hPipe = winapi.C.CreateFileW(winapi.socket_wc, winapi.GENERIC_WRITE, 0, nil, winapi.OPEN_EXISTING, winapi._createfile_pipe_flags, nil) + if hPipe ~= winapi.INVALID_HANDLE_VALUE then + local buf = command .. "\n" + winapi.C.SetNamedPipeHandleState(hPipe, winapi.PIPE_NOWAIT, nil, nil) + winapi.C.WriteFile(hPipe, buf, #buf + 1, winapi._lpNumberOfBytesWritten, nil) + winapi.C.CloseHandle(hPipe) + end + + return + end + + local command_n = command.."\n" + + if os_name == "windows" then + if file and file_bytes + #command_n >= 4096 then + file:close() + file = nil + file_bytes = 0 + end + if not file then + file = io.open("\\\\.\\pipe\\"..options.socket, "r+b") + end + elseif pre_0_33_0 then + subprocess({"/usr/bin/env", "sh", "-c", "echo '" .. command .. "' | socat - " .. options.socket}) + return + elseif not file then + file = io.open(options.socket, "r+") + end + if file then + file_bytes = file:seek("end") + file:write(command_n) + file:flush() + end +end + +local function draw(w, h, script) + if not w or not show_thumbnail then return end + if x ~= nil then + if pre_0_30_0 then + mp.command_native({"overlay-add", options.overlay_id, x, y, options.thumbnail..".bgra", 0, "bgra", w, h, (4*w)}) + else + mp.command_native_async({"overlay-add", options.overlay_id, x, y, options.thumbnail..".bgra", 0, "bgra", w, h, (4*w)}, function() end) + end + elseif script then + local json, err = mp.utils.format_json({width=w, height=h, x=x, y=y, socket=options.socket, thumbnail=options.thumbnail, overlay_id=options.overlay_id}) + mp.commandv("script-message-to", script, "thumbfast-render", json) + end +end + +local function real_res(req_w, req_h, filesize) + local count = filesize / 4 + local diff = (req_w * req_h) - count + + if (properties["video-params"] and properties["video-params"]["rotate"] or 0) % 180 == 90 then + req_w, req_h = req_h, req_w + end + + if diff == 0 then + return req_w, req_h + else + local threshold = 5 -- throw out results that change too much + local long_side, short_side = req_w, req_h + if req_h > req_w then + long_side, short_side = req_h, req_w + end + for a = short_side, short_side - threshold, -1 do + if count % a == 0 then + local b = count / a + if long_side - b < threshold then + if req_h < req_w then return b, a else return a, b end + end + end + end + return nil + end +end + +local function move_file(from, to) + if os_name == "windows" then + os.remove(to) + end + -- move the file because it can get overwritten while overlay-add is reading it, and crash the player + os.rename(from, to) +end + +local function seek(fast) + if last_seek_time then + run("async seek " .. last_seek_time .. (fast and " absolute+keyframes" or " absolute+exact")) + end +end + +local seek_period = 3/60 +local seek_period_counter = 0 +local seek_timer +seek_timer = mp.add_periodic_timer(seek_period, function() + if seek_period_counter == 0 then + seek(allow_fast_seek) + seek_period_counter = 1 + else + if seek_period_counter == 2 then + if allow_fast_seek then + seek_timer:kill() + seek() + end + else seek_period_counter = seek_period_counter + 1 end + end +end) +seek_timer:kill() + +local function request_seek() + if seek_timer:is_enabled() then + seek_period_counter = 0 + else + seek_timer:resume() + seek(allow_fast_seek) + seek_period_counter = 1 + end +end + +local function check_new_thumb() + -- the slave might start writing to the file after checking existance and + -- validity but before actually moving the file, so move to a temporary + -- location before validity check to make sure everything stays consistant + -- and valid thumbnails don't get overwritten by invalid ones + local tmp = options.thumbnail..".tmp" + move_file(options.thumbnail, tmp) + local finfo = mp.utils.file_info(tmp) + if not finfo then return false end + spawn_waiting = false + local w, h = real_res(effective_w, effective_h, finfo.size) + if w then -- only accept valid thumbnails + move_file(tmp, options.thumbnail..".bgra") + + real_w, real_h = w, h + if real_w and (real_w ~= last_real_w or real_h ~= last_real_h) then + last_real_w, last_real_h = real_w, real_h + info(real_w, real_h) + end + if not show_thumbnail then + file_timer:kill() + end + return true + end + + return false +end + +file_timer = mp.add_periodic_timer(file_check_period, function() + if check_new_thumb() then + draw(real_w, real_h, script_name) + end +end) +file_timer:kill() + +local function clear() + file_timer:kill() + seek_timer:kill() + if options.quit_after_inactivity > 0 then + if show_thumbnail or activity_timer:is_enabled() then + activity_timer:kill() + end + activity_timer:resume() + end + last_seek_time = nil + show_thumbnail = false + last_x = nil + last_y = nil + if script_name then return end + if pre_0_30_0 then + mp.command_native({"overlay-remove", options.overlay_id}) + else + mp.command_native_async({"overlay-remove", options.overlay_id}, function() end) + end +end + +local function quit() + activity_timer:kill() + if show_thumbnail then + activity_timer:resume() + return + end + run("quit") + spawned = false + real_w, real_h = nil, nil + clear() +end + +activity_timer = mp.add_timeout(options.quit_after_inactivity, quit) +activity_timer:kill() + +local function thumb(time, r_x, r_y, script) + if disabled then return end + + time = tonumber(time) + if time == nil then return end + + if r_x == "" or r_y == "" then + x, y = nil, nil + else + x, y = math.floor(r_x + 0.5), math.floor(r_y + 0.5) + end + + script_name = script + if last_x ~= x or last_y ~= y or not show_thumbnail then + show_thumbnail = true + last_x = x + last_y = y + draw(real_w, real_h, script) + end + + if options.quit_after_inactivity > 0 then + if show_thumbnail or activity_timer:is_enabled() then + activity_timer:kill() + end + activity_timer:resume() + end + + if time == last_seek_time then return end + last_seek_time = time + if not spawned then spawn(time) end + request_seek() + if not file_timer:is_enabled() then file_timer:resume() end +end + +local function watch_changes() + if not dirty or not properties["video-out-params"] then return end + dirty = false + + local old_w = effective_w + local old_h = effective_h + + calc_dimensions() + + local vf_reset = vf_string(filters_reset) + local rotate = properties["video-rotate"] or 0 + + local resized = old_w ~= effective_w or + old_h ~= effective_h or + last_vf_reset ~= vf_reset or + (last_rotate % 180) ~= (rotate % 180) or + par ~= last_par + + if resized then + last_rotate = rotate + info(effective_w, effective_h) + elseif last_has_vid ~= has_vid and has_vid ~= 0 then + info(effective_w, effective_h) + end + + if spawned then + if resized then + -- mpv doesn't allow us to change output size + local seek_time = last_seek_time + run("quit") + clear() + spawned = false + spawn(seek_time or mp.get_property_number("time-pos", 0)) + file_timer:resume() + else + if rotate ~= last_rotate then + run("set video-rotate "..rotate) + end + local vf_runtime = vf_string(filters_runtime) + if vf_runtime ~= last_vf_runtime then + run("vf set "..vf_string(filters_all, true)) + last_vf_runtime = vf_runtime + end + end + else + last_vf_runtime = vf_string(filters_runtime) + end + + last_vf_reset = vf_reset + last_rotate = rotate + last_par = par + last_has_vid = has_vid + + if not spawned and not disabled and options.spawn_first and resized then + spawn(mp.get_property_number("time-pos", 0)) + file_timer:resume() + end +end + +local function update_property(name, value) + properties[name] = value +end + +local function update_property_dirty(name, value) + properties[name] = value + dirty = true + if name == "tone-mapping" then + last_tone_mapping = nil + end +end + +local function update_tracklist(name, value) + -- current-tracks shim + for _, track in ipairs(value) do + if track.type == "video" and track.selected then + properties["current-tracks/video"] = track + return + end + end +end + +local function sync_changes(prop, val) + update_property(prop, val) + if val == nil then return end + + if type(val) == "boolean" then + if prop == "vid" then + has_vid = 0 + last_has_vid = 0 + info(effective_w, effective_h) + clear() + return + end + val = val and "yes" or "no" + end + + if prop == "vid" then + has_vid = 1 + end + + if not spawned then return end + + run("set "..prop.." "..val) + dirty = true +end + +local function file_load() + clear() + spawned = false + real_w, real_h = nil, nil + last_real_w, last_real_h = nil, nil + last_tone_mapping = nil + last_seek_time = nil + if info_timer then + info_timer:kill() + info_timer = nil + end + + calc_dimensions() + info(effective_w, effective_h) +end + +local function shutdown() + run("quit") + remove_thumbnail_files() + if os_name ~= "windows" then + os.remove(options.socket) + os.remove(options.socket..".run") + end +end + +local function on_duration(prop, val) + allow_fast_seek = (val or 30) >= 30 +end + +mp.observe_property("current-tracks/video", "native", function(name, value) + if pre_0_33_0 then + mp.unobserve_property(update_tracklist) + pre_0_33_0 = false + end + update_property(name, value) +end) + +mp.observe_property("track-list", "native", update_tracklist) +mp.observe_property("display-hidpi-scale", "native", update_property_dirty) +mp.observe_property("video-out-params", "native", update_property_dirty) +mp.observe_property("video-params", "native", update_property_dirty) +mp.observe_property("vf", "native", update_property_dirty) +mp.observe_property("tone-mapping", "native", update_property_dirty) +mp.observe_property("demuxer-via-network", "native", update_property) +mp.observe_property("stream-open-filename", "native", update_property) +mp.observe_property("macos-app-activation-policy", "native", update_property) +mp.observe_property("current-vo", "native", update_property) +mp.observe_property("video-rotate", "native", update_property) +mp.observe_property("path", "native", update_property) +mp.observe_property("vid", "native", sync_changes) +mp.observe_property("edition", "native", sync_changes) +mp.observe_property("duration", "native", on_duration) + +mp.register_script_message("thumb", thumb) +mp.register_script_message("clear", clear) + +mp.register_event("file-loaded", file_load) +mp.register_event("shutdown", shutdown) + +mp.register_idle(watch_changes) diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/FSRCNNX_x2_16-0-4-1.glsl b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/FSRCNNX_x2_16-0-4-1.glsl new file mode 100644 index 0000000..db044f3 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/FSRCNNX_x2_16-0-4-1.glsl @@ -0,0 +1,1133 @@ +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC feature map 1 +//!BIND LUMA +//!SAVE FEATURE1 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0158583000302315,0.0481607876718044,0.0216744001954794,0.0327517539262772); +res += vec4(0.0055716447532177,-0.0011689565144479,0.0060354629531503,-0.0038142984267324) * float(LUMA_texOff(vec2(-2,-2))); +res += vec4(-0.0511216484010220,0.0695900619029999,-0.0402262769639492,-0.2699918746948242) * float(LUMA_texOff(vec2(-2,-1))); +res += vec4(0.0568219460546970,0.0143233733251691,0.0573288090527058,0.1329403370618820) * float(LUMA_texOff(vec2(-2,0))); +res += vec4(0.0749029889702797,-0.0856373012065887,0.0275473278015852,0.0870117172598839) * float(LUMA_texOff(vec2(-2,1))); +res += vec4(0.0059168273583055,0.0431331694126129,0.0110861351713538,-0.0060971858911216) * float(LUMA_texOff(vec2(-2,2))); +res += vec4(0.0023135771043599,-0.0356510132551193,-0.0198473632335663,0.1518625020980835) * float(LUMA_texOff(vec2(-1,-2))); +res += vec4(0.0796200335025787,-0.0332430601119995,0.1661894172430038,0.0414402447640896) * float(LUMA_texOff(vec2(-1,-1))); +res += vec4(0.3913435935974121,-0.0070745791308582,-0.3234040439128876,-0.3177863061428070) * float(LUMA_texOff(vec2(-1,0))); +res += vec4(-0.2875826358795166,-0.1528938859701157,-0.0496717989444733,-0.0847533568739891) * float(LUMA_texOff(vec2(-1,1))); +res += vec4(0.0118880448862910,-0.0508498139679432,-0.0021516310516745,0.1032346263527870) * float(LUMA_texOff(vec2(-1,2))); +res += vec4(-0.0703228861093521,-0.1651142090559006,-0.1199417710304260,-0.0288288500159979) * float(LUMA_texOff(vec2(0,-2))); +res += vec4(0.1257767677307129,-0.1048138290643692,0.4004893004894257,-0.0309179127216339) * float(LUMA_texOff(vec2(0,-1))); +res += vec4(-0.7917575240135193,0.3903119266033173,0.3126059174537659,-0.0034788434859365) * float(LUMA_texOff(vec2(0,0))); +res += vec4(0.2019260078668594,0.1287178546190262,-0.6099877953529358,0.2216860502958298) * float(LUMA_texOff(vec2(0,1))); +res += vec4(-0.0255547054111958,0.2735108733177185,0.1398646086454391,-0.0773279890418053) * float(LUMA_texOff(vec2(0,2))); +res += vec4(0.0327996239066124,0.0393296107649803,-0.0118844136595726,-0.0788307189941406) * float(LUMA_texOff(vec2(1,-2))); +res += vec4(-0.0523803792893887,0.2635756731033325,-0.0843483880162239,0.2639326751232147) * float(LUMA_texOff(vec2(1,-1))); +res += vec4(0.4495396912097931,-0.5813834071159363,0.1550076454877853,-0.1014123335480690) * float(LUMA_texOff(vec2(1,0))); +res += vec4(-0.0275334194302559,0.0760609954595566,-0.0728811249136925,-0.0323722735047340) * float(LUMA_texOff(vec2(1,1))); +res += vec4(-0.0302287433296442,-0.0609264522790909,0.0201333332806826,-0.0218520220369101) * float(LUMA_texOff(vec2(1,2))); +res += vec4(-0.0078709209337831,-0.0724855363368988,0.0160489808768034,-0.0519895330071449) * float(LUMA_texOff(vec2(2,-2))); +res += vec4(-0.0093699758872390,-0.0221181977540255,0.0012721448438242,-0.1051536500453949) * float(LUMA_texOff(vec2(2,-1))); +res += vec4(-0.1118478253483772,0.0650174096226692,-0.0050289300270379,0.1248002946376801) * float(LUMA_texOff(vec2(2,0))); +res += vec4(0.0107028540223837,-0.0938652306795120,0.0155469048768282,0.0065242056734860) * float(LUMA_texOff(vec2(2,1))); +res += vec4(0.0103917606174946,-0.0048142350278795,-0.0063812667503953,0.0058583738282323) * float(LUMA_texOff(vec2(2,2))); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC feature map 2 +//!BIND LUMA +//!SAVE FEATURE2 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.0035126404836774,-0.1424804031848907,0.0098019242286682,-0.2324347645044327); +res += vec4(-0.0081599559634924,0.0153401214629412,-0.0000884819819476,-0.0041208495385945) * float(LUMA_texOff(vec2(-2,-2))); +res += vec4(0.0348629020154476,-0.0261084530502558,0.1412381976842880,0.0120648415759206) * float(LUMA_texOff(vec2(-2,-1))); +res += vec4(-0.0182201806455851,0.0420538075268269,0.1279103606939316,0.0005762653308921) * float(LUMA_texOff(vec2(-2,0))); +res += vec4(0.0074240369722247,0.0205862484872341,-0.0248792562633753,-0.0096883391961455) * float(LUMA_texOff(vec2(-2,1))); +res += vec4(-0.0147575987502933,-0.0138801140710711,0.0336018688976765,0.0101419175043702) * float(LUMA_texOff(vec2(-2,2))); +res += vec4(-0.0168300196528435,-0.0323963575065136,-0.1103628277778625,0.0184982456266880) * float(LUMA_texOff(vec2(-1,-2))); +res += vec4(0.0336258038878441,0.0090460535138845,0.1413228511810303,0.0213951021432877) * float(LUMA_texOff(vec2(-1,-1))); +res += vec4(-0.2192985862493515,-0.1210875585675240,-0.5916258096694946,0.1427909880876541) * float(LUMA_texOff(vec2(-1,0))); +res += vec4(0.0442710407078266,-0.0331254564225674,0.2450466305017471,0.0069104693830013) * float(LUMA_texOff(vec2(-1,1))); +res += vec4(-0.0385449007153511,-0.0156025458127260,0.0130665311589837,0.0061669168062508) * float(LUMA_texOff(vec2(-1,2))); +res += vec4(0.0162507221102715,0.1013157293200493,0.1922776401042938,-0.0295907501131296) * float(LUMA_texOff(vec2(0,-2))); +res += vec4(0.4103461503982544,-0.2687482833862305,0.2803195714950562,0.2368032187223434) * float(LUMA_texOff(vec2(0,-1))); +res += vec4(0.0594542995095253,1.1106108427047729,-0.0012417822144926,0.6573531627655029) * float(LUMA_texOff(vec2(0,0))); +res += vec4(-0.3231450319290161,-0.0818216651678085,-0.0780772641301155,0.0890857279300690) * float(LUMA_texOff(vec2(0,1))); +res += vec4(0.0311414338648319,0.0114796580746770,-0.0333797559142113,0.0220009069889784) * float(LUMA_texOff(vec2(0,2))); +res += vec4(0.0005678526358679,-0.0108715193346143,-0.1475655883550644,0.0124691976234317) * float(LUMA_texOff(vec2(1,-2))); +res += vec4(0.0859664827585220,-0.0096361991018057,-0.2825120091438293,0.0380329117178917) * float(LUMA_texOff(vec2(1,-1))); +res += vec4(0.0296897795051336,-0.3303853869438171,0.0030247638933361,0.1928089261054993) * float(LUMA_texOff(vec2(1,0))); +res += vec4(-0.1064484789967537,-0.0895809978246689,0.1988810151815414,0.0761259049177170) * float(LUMA_texOff(vec2(1,1))); +res += vec4(-0.0114818075671792,0.0129500832408667,-0.0847826823592186,-0.0188437569886446) * float(LUMA_texOff(vec2(1,2))); +res += vec4(-0.0039359503425658,-0.0073066619224846,0.0316172763705254,0.0056592230685055) * float(LUMA_texOff(vec2(2,-2))); +res += vec4(-0.0143255395814776,-0.0037881892640144,-0.1154748499393463,-0.0094808740541339) * float(LUMA_texOff(vec2(2,-1))); +res += vec4(0.0334111787378788,0.0511705093085766,0.1090561151504517,0.0004155720234849) * float(LUMA_texOff(vec2(2,0))); +res += vec4(-0.0173786189407110,-0.0189253110438585,-0.0971138030290604,-0.0048367069102824) * float(LUMA_texOff(vec2(2,1))); +res += vec4(-0.0020564326550812,-0.0088429925963283,0.0409048907458782,0.0098554128780961) * float(LUMA_texOff(vec2(2,2))); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC feature map 3 +//!BIND LUMA +//!SAVE FEATURE3 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0074675981886685,-0.0112727740779519,-0.0078150173649192,0.0054601472802460); +res += vec4(0.0058205719105899,0.0104424925521016,0.0102249477058649,-0.0246734209358692) * float(LUMA_texOff(vec2(-2,-2))); +res += vec4(-0.0504507981240749,-0.0265871956944466,-0.0211575180292130,0.0639910921454430) * float(LUMA_texOff(vec2(-2,-1))); +res += vec4(0.0854370445013046,0.0320916883647442,-0.0444113314151764,0.0667080804705620) * float(LUMA_texOff(vec2(-2,0))); +res += vec4(-0.0717485323548317,0.1007603406906128,0.0549219138920307,0.0006571425474249) * float(LUMA_texOff(vec2(-2,1))); +res += vec4(-0.0096475556492805,-0.0109533462673426,-0.0034293907228857,-0.0298656821250916) * float(LUMA_texOff(vec2(-2,2))); +res += vec4(0.0612395852804184,0.1438739448785782,-0.1342615187168121,0.0005135608371347) * float(LUMA_texOff(vec2(-1,-2))); +res += vec4(-0.1905109286308289,-0.0487579554319382,0.1215000376105309,-0.3903875648975372) * float(LUMA_texOff(vec2(-1,-1))); +res += vec4(-0.1105766519904137,0.1457407474517822,0.3190293610095978,0.3644915223121643) * float(LUMA_texOff(vec2(-1,0))); +res += vec4(0.2406846284866333,-0.1006923243403435,-0.2059815675020218,-0.0087168551981449) * float(LUMA_texOff(vec2(-1,1))); +res += vec4(0.0242295619100332,0.0973422899842262,0.0189558453857899,0.0454756766557693) * float(LUMA_texOff(vec2(-1,2))); +res += vec4(-0.2777403295040131,-0.0261268876492977,0.0557462945580482,0.1156388074159622) * float(LUMA_texOff(vec2(0,-2))); +res += vec4(0.4593666791915894,-0.5746087431907654,0.3516879677772522,0.5441487431526184) * float(LUMA_texOff(vec2(0,-1))); +res += vec4(0.1454727351665497,0.4347074031829834,-0.5649513602256775,-0.2891949117183685) * float(LUMA_texOff(vec2(0,0))); +res += vec4(-0.1971357613801956,-0.0528701394796371,0.1234181076288223,-0.3138715028762817) * float(LUMA_texOff(vec2(0,1))); +res += vec4(-0.0748024880886078,-0.1438121795654297,-0.0849649086594582,-0.0026638933923095) * float(LUMA_texOff(vec2(0,2))); +res += vec4(0.1365336179733276,0.1782812327146530,0.0145155806094408,-0.0544562637805939) * float(LUMA_texOff(vec2(1,-2))); +res += vec4(-0.1609659045934677,0.0399771369993687,-0.2471204251050949,-0.3522113263607025) * float(LUMA_texOff(vec2(1,-1))); +res += vec4(-0.0015608231769875,-0.3023138046264648,-0.0579032227396965,0.0277623422443867) * float(LUMA_texOff(vec2(1,0))); +res += vec4(-0.0035330341197550,0.2225222438573837,0.2519835233688354,0.2358573675155640) * float(LUMA_texOff(vec2(1,1))); +res += vec4(0.0797009617090225,-0.1369067281484604,-0.0032011670991778,-0.1078757569193840) * float(LUMA_texOff(vec2(1,2))); +res += vec4(-0.0340625829994678,-0.0491722412407398,0.0248667076230049,0.0046607558615506) * float(LUMA_texOff(vec2(2,-2))); +res += vec4(0.1101173907518387,0.0255349930375814,-0.0124160917475820,0.0940967351198196) * float(LUMA_texOff(vec2(2,-1))); +res += vec4(-0.1285010129213333,0.0126118278130889,0.1080744639039040,0.0213258527219296) * float(LUMA_texOff(vec2(2,0))); +res += vec4(0.0379831343889236,0.1150698363780975,-0.0470580570399761,-0.0274534691125154) * float(LUMA_texOff(vec2(2,1))); +res += vec4(-0.0675948560237885,-0.0150815304368734,-0.0260353796184063,0.0053928769193590) * float(LUMA_texOff(vec2(2,2))); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC feature map 4 +//!BIND LUMA +//!SAVE FEATURE4 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.0231404807418585,0.0264000315219164,-0.0196782369166613,0.0193342305719852); +res += vec4(-0.0002864966227207,-0.0063192103989422,0.0176236815750599,0.0021022548899055) * float(LUMA_texOff(vec2(-2,-2))); +res += vec4(0.0030383218545467,0.0160587038844824,-0.0215296540409327,0.0022535317111760) * float(LUMA_texOff(vec2(-2,-1))); +res += vec4(-0.0327238291501999,0.1294472962617874,0.0004141363606323,-0.0643630251288414) * float(LUMA_texOff(vec2(-2,0))); +res += vec4(-0.0072918534278870,0.0081034628674388,-0.0076351291500032,0.0612725690007210) * float(LUMA_texOff(vec2(-2,1))); +res += vec4(0.0077398689463735,0.0009626992978156,0.0004907781840302,0.0158306453377008) * float(LUMA_texOff(vec2(-2,2))); +res += vec4(0.0169805102050304,0.0017006965354085,-0.0351677052676678,0.0070601841434836) * float(LUMA_texOff(vec2(-1,-2))); +res += vec4(0.0503231473267078,-0.1359812021255493,-0.1726402193307877,0.0505710020661354) * float(LUMA_texOff(vec2(-1,-1))); +res += vec4(0.5929844379425049,-0.4670899212360382,0.1338799595832825,0.0521798394620419) * float(LUMA_texOff(vec2(-1,0))); +res += vec4(-0.0016857853624970,-0.0980291739106178,-0.0766545012593269,-0.1788613498210907) * float(LUMA_texOff(vec2(-1,1))); +res += vec4(0.0055230301804841,0.0227276254445314,0.0062132971361279,-0.0205314252525568) * float(LUMA_texOff(vec2(-1,2))); +res += vec4(-0.0632932260632515,0.0206124242395163,0.0203190892934799,-0.0383010655641556) * float(LUMA_texOff(vec2(0,-2))); +res += vec4(0.3401337563991547,0.0347416475415230,-0.1285047084093094,0.1899463981389999) * float(LUMA_texOff(vec2(0,-1))); +res += vec4(-0.4421386420726776,0.2934384047985077,0.8403331041336060,-0.1730615049600601) * float(LUMA_texOff(vec2(0,0))); +res += vec4(-0.1677902936935425,-0.2289065122604370,-0.0876600667834282,0.3486402034759521) * float(LUMA_texOff(vec2(0,1))); +res += vec4(0.0101460181176662,-0.0013741940492764,-0.0227308031171560,-0.1236668676137924) * float(LUMA_texOff(vec2(0,2))); +res += vec4(0.0416196137666702,-0.0025786985643208,-0.0321756042540073,-0.0049003348685801) * float(LUMA_texOff(vec2(1,-2))); +res += vec4(0.0264755990356207,0.0366033166646957,-0.2230065017938614,-0.2322043776512146) * float(LUMA_texOff(vec2(1,-1))); +res += vec4(-0.3769855499267578,0.3444519937038422,-0.0913550406694412,0.0529095120728016) * float(LUMA_texOff(vec2(1,0))); +res += vec4(0.0496573671698570,0.1734852045774460,-0.1757829487323761,-0.0754000768065453) * float(LUMA_texOff(vec2(1,1))); +res += vec4(0.0092390561476350,0.0240796990692616,0.0486575216054916,0.0034698238596320) * float(LUMA_texOff(vec2(1,2))); +res += vec4(-0.0061075761914253,0.0163863543421030,0.0051472936756909,0.0245978105813265) * float(LUMA_texOff(vec2(2,-2))); +res += vec4(-0.0219590999186039,-0.0549665205180645,0.0169540457427502,0.0773543193936348) * float(LUMA_texOff(vec2(2,-1))); +res += vec4(0.0130640128627419,-0.0906993970274925,0.0318272411823273,0.0213559772819281) * float(LUMA_texOff(vec2(2,0))); +res += vec4(-0.0263035502284765,-0.0683158710598946,0.0060625332407653,-0.0366725400090218) * float(LUMA_texOff(vec2(2,1))); +res += vec4(-0.0033458373509347,0.0166716929525137,-0.0066949445754290,0.0069377254694700) * float(LUMA_texOff(vec2(2,2))); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 1_1 +//!BIND FEATURE1 +//!BIND FEATURE2 +//!BIND FEATURE3 +//!BIND FEATURE4 +//!SAVE MODEL21 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.2535822391510010,-0.2086673378944397,-0.1971909999847412,-0.0509869605302811); +res += mat4(-0.2771639227867126,-0.0897865369915962,0.2583256959915161,0.1160498261451721,0.0936901941895485,-0.1911094635725021,-0.1356087327003479,-0.2737614214420319,-0.0840661674737930,0.3071749806404114,-0.1382381021976471,0.0401598662137985,0.0078477216884494,-0.2248300164937973,-0.1277811974287033,0.0695948302745819) * FEATURE1_texOff(vec2(-1,-1)); +res += mat4(0.1083878129720688,-0.3206554055213928,0.1545115262269974,-0.0320371277630329,-0.1938588172197342,-0.1473862826824188,-0.0282243248075247,-0.1354303658008575,-0.1186024993658066,-0.0809327214956284,-0.0136826746165752,-0.0899777114391327,0.0719721689820290,0.1930700838565826,-0.1158982515335083,0.0772358104586601) * FEATURE2_texOff(vec2(-1,-1)); +res += mat4(-0.0439350903034210,-0.3943499624729156,0.2428358793258667,-0.1589881926774979,0.1062002107501030,0.3110131621360779,0.1892369836568832,-0.4146962761878967,0.2854582071304321,-0.1033756285905838,0.2935918271541595,-0.3346719741821289,0.0666174665093422,0.0610550120472908,-0.1994506865739822,-0.2256885766983032) * FEATURE3_texOff(vec2(-1,-1)); +res += mat4(0.1148382350802422,-0.4204422533512115,-0.0359638184309006,-0.1530147343873978,-0.0726560875773430,0.2168974876403809,0.3526575863361359,-0.3311845958232880,0.0656990334391594,0.2305561602115631,0.0385423824191093,0.1258286833763123,0.0722775310277939,0.5053561925888062,0.6200680136680603,0.1733734011650085) * FEATURE4_texOff(vec2(-1,-1)); +res += mat4(0.2637681365013123,-0.2313590347766876,-0.1710360497236252,-0.4150753617286682,-0.0291996710002422,0.1454502344131470,0.0285777729004622,-0.0749426186084747,-0.0187464319169521,-0.0788161307573318,-0.1390142142772675,0.4122431576251984,-0.0424673929810524,0.0481288805603981,-0.1688672900199890,-0.3983225524425507) * FEATURE1_texOff(vec2(-1,0)); +res += mat4(0.0667020902037621,0.2114472687244415,0.1192239969968796,-0.2236148864030838,-0.0777044594287872,-0.2462731599807739,0.2634125351905823,-0.1940607130527496,0.0336417406797409,-0.0972627550363541,-0.2950557470321655,0.2406509518623352,-0.0279604401439428,-0.0602857805788517,-0.0872009843587875,-0.1229272857308388) * FEATURE2_texOff(vec2(-1,0)); +res += mat4(0.2794125378131866,-0.4944160580635071,0.4512123167514801,0.2009913176298141,-0.2796518802642822,-0.0334346629679203,-0.0112056173384190,-0.3892775475978851,-0.1192756518721581,0.2117638289928436,-0.4059759974479675,0.2690156698226929,-0.0456493757665157,-0.0304120033979416,-0.2477626502513885,0.4191759228706360) * FEATURE3_texOff(vec2(-1,0)); +res += mat4(-0.0039319223724306,-0.0600352995097637,0.4458162486553192,0.1474803835153580,0.0940916240215302,-0.3791440427303314,0.3606577217578888,-0.4092902839183807,0.1703228652477264,-0.1827025562524796,0.0514233745634556,0.4128525555133820,-0.0793079584836960,-0.0907753482460976,0.1223130822181702,-0.1207918524742126) * FEATURE4_texOff(vec2(-1,0)); +res += mat4(-0.2494225054979324,0.1870742887258530,0.0837734341621399,-0.2739089429378510,-0.0571023263037205,0.1391844749450684,-0.0675746276974678,0.1305333226919174,-0.0307636223733425,0.4430510401725769,0.0028207190334797,-0.0904692336916924,0.0088010514155030,-0.0354460701346397,0.0043582450598478,0.4011381268501282) * FEATURE1_texOff(vec2(-1,1)); +res += mat4(0.0587932765483856,-0.1308003664016724,-0.1161855384707451,0.1607838273048401,0.1059153527021408,-0.1711840778589249,-0.0445863120257854,-0.1130510568618774,0.0448016002774239,0.1559550613164902,-0.0720835253596306,0.0672131329774857,-0.0249006003141403,0.1765320748090744,-0.1224699541926384,0.0470521636307240) * FEATURE2_texOff(vec2(-1,1)); +res += mat4(-0.0384641103446484,0.2872657477855682,0.0640715956687927,0.3555822372436523,0.0471152290701866,-0.1418067067861557,-0.1464726030826569,0.3959751725196838,0.2157984673976898,-0.0174972768872976,-0.2503038048744202,0.0358669087290764,-0.0771151334047318,0.3911861777305603,-0.0674204975366592,-0.1664280891418457) * FEATURE3_texOff(vec2(-1,1)); +res += mat4(-0.0502385906875134,-0.2417445182800293,-0.2242267578840256,-0.0672638416290283,-0.1355054825544357,-0.3461876213550568,0.4824717044830322,-0.2761393785476685,-0.0341378860175610,-0.0760281234979630,0.4350158274173737,0.4765976667404175,-0.0782985687255859,-0.1459587216377258,-0.0172249134629965,-0.0147242834791541) * FEATURE4_texOff(vec2(-1,1)); +res += mat4(-0.2630992829799652,0.2823100388050079,0.0943108573555946,0.4031386077404022,0.0995653420686722,-0.1206451952457428,-0.0305370874702930,0.0642247647047043,0.0560359954833984,0.0542743578553200,0.1328519582748413,0.3271641731262207,0.0286087840795517,-0.0301680061966181,0.4063064754009247,-0.0947660803794861) * FEATURE1_texOff(vec2(0,-1)); +res += mat4(0.2625299096107483,0.0842924192547798,0.7629656791687012,-0.2671873569488525,0.2069786489009857,-0.2454696893692017,0.0612405501306057,0.1021422892808914,-0.4223764240741730,0.3173877894878387,0.2887442708015442,0.1909165084362030,-0.1770869791507721,0.1346962451934814,0.1143044829368591,0.0229503251612186) * FEATURE2_texOff(vec2(0,-1)); +res += mat4(-0.4152803719043732,0.1540635079145432,-0.2777018547058105,0.6474476456642151,-0.1949630677700043,-0.0181875545531511,0.3886533379554749,0.3629097938537598,-0.3201324343681335,0.4255363047122955,-0.3785362839698792,0.1957572698593140,0.1620309501886368,-0.2288520336151123,-0.0135895386338234,-0.0196984149515629) * FEATURE3_texOff(vec2(0,-1)); +res += mat4(0.1041403189301491,-0.1766346842050552,0.4300306439399719,-0.5048146247863770,-0.4282442331314087,0.2367089539766312,-0.0609208792448044,0.0131418621167541,0.0577571578323841,-0.0810485184192657,0.0756059587001801,-0.3013808131217957,0.1408018022775650,0.0530188716948032,0.4606562554836273,-0.3839898407459259) * FEATURE4_texOff(vec2(0,-1)); +res += mat4(-0.1521688550710678,-0.0032123478595167,0.3116574883460999,-0.2972046434879303,0.6955487728118896,-0.3735982179641724,0.0215148627758026,0.6849833130836487,0.4760347604751587,-1.0485177040100098,-0.1261294931173325,0.2331533879041672,0.0917195081710815,0.4458359181880951,-0.0091531546786427,0.5207492113113403) * FEATURE1_texOff(vec2(0,0)); +res += mat4(-0.1011519357562065,-0.2413177788257599,0.5347595214843750,-0.3520763516426086,1.1230159997940063,-1.1015644073486328,-0.7193110585212708,0.8510805368423462,0.8157641291618347,-0.2430049031972885,0.2581803798675537,-0.4335567951202393,-0.0874094665050507,-0.6334270834922791,-0.6894448399543762,0.0596196018159389) * FEATURE2_texOff(vec2(0,0)); +res += mat4(0.2854309976100922,-0.1557229459285736,-0.1809468418359756,-1.3902940750122070,0.6910412311553955,-0.2587812542915344,-0.0482749044895172,0.7059345245361328,0.1759572327136993,-0.1393056362867355,0.5609810352325439,-0.4832382500171661,-0.0000602358450124,-0.2900169491767883,0.3908173143863678,-0.6049022674560547) * FEATURE3_texOff(vec2(0,0)); +res += mat4(-0.0872106701135635,-0.1346540600061417,1.4156285524368286,-1.1883758306503296,-0.7596164941787720,0.1885419785976410,-0.5785369277000427,0.9477756023406982,1.5934140682220459,-1.2882608175277710,-1.2094374895095825,1.3799823522567749,0.4614370167255402,-0.0916836485266685,-0.5338310003280640,0.3820723593235016) * FEATURE4_texOff(vec2(0,0)); +res += mat4(0.0441628322005272,-0.0834458991885185,-0.0842079296708107,-0.0668803155422211,0.0368445180356503,0.2561661899089813,-0.1183663904666901,-0.0662262961268425,0.0612826459109783,-0.0493311323225498,-0.1413672119379044,-0.0592455714941025,0.0167923998087645,-0.3271788358688354,0.2014455944299698,-0.6534197330474854) * FEATURE1_texOff(vec2(0,1)); +res += mat4(-0.4044690728187561,-0.1691768616437912,-0.2559798955917358,0.3357487618923187,0.0253558568656445,-0.1398200690746307,-0.2404493540525436,0.2267729192972183,0.0485114641487598,-0.1099041774868965,0.4590287208557129,0.0762615874409676,-0.0548993311822414,-0.1307289451360703,-0.1234042271971703,-0.0231516994535923) * FEATURE2_texOff(vec2(0,1)); +res += mat4(-0.0988199859857559,0.0238037649542093,0.0435022264719009,-0.3168803453445435,-0.1213417872786522,-0.0779432877898216,0.2743633389472961,-0.0408632978796959,0.1799435466527939,-0.2463587224483490,-0.1358537077903748,0.2689833939075470,0.0539833642542362,0.1290988624095917,-0.0515714474022388,0.0580415092408657) * FEATURE3_texOff(vec2(0,1)); +res += mat4(-0.0934378430247307,-0.0576035231351852,0.1248585656285286,-0.4788450300693512,-0.0699084699153900,-0.1344984918832779,0.4291284382343292,-0.0945518091320992,0.1735085546970367,-0.3810331225395203,0.2658713161945343,-0.0407779440283775,-0.2733527123928070,-0.2201107889413834,-0.2199274003505707,0.2047093063592911) * FEATURE4_texOff(vec2(0,1)); +res += mat4(-0.0567484796047211,0.0829793587327003,-0.4746561646461487,0.0256525389850140,0.0835705399513245,-0.1755325645208359,-0.2114038169384003,-0.1711267083883286,0.1664180457592010,0.1463819295167923,-0.2656275629997253,-0.2758075296878815,0.0265674404799938,-0.1956520974636078,0.0414405986666679,0.0479561910033226) * FEATURE1_texOff(vec2(1,-1)); +res += mat4(0.0563601851463318,0.4714728593826294,-0.0800048857927322,-0.1705953329801559,0.2594836354255676,-0.2075097709894180,0.1695188879966736,-0.4107047319412231,-0.0706016868352890,-0.2547818720340729,-0.3957505524158478,-0.2354479134082794,0.0384419634938240,-0.0460053943097591,-0.0207829847931862,-0.0093786139041185) * FEATURE2_texOff(vec2(1,-1)); +res += mat4(0.0942042469978333,0.0404988750815392,-0.1232881695032120,-0.2178550660610199,0.1357689797878265,0.0359092727303505,-0.2060291618108749,-0.3273082375526428,0.5002653002738953,-0.1923164129257202,0.4921628534793854,0.2727786898612976,-0.2186055183410645,0.3011177480220795,-0.3585500419139862,0.1814153641462326) * FEATURE3_texOff(vec2(1,-1)); +res += mat4(-0.0447341054677963,0.0810466259717941,0.2046322971582413,-0.0233065690845251,0.2438813596963882,-0.5253956913948059,0.1698510050773621,-0.0923427864909172,0.3008512258529663,0.0888842046260834,0.2270209491252899,-0.0200825128704309,0.1317300051450729,-0.0595603473484516,0.1512535065412521,-0.1234729290008545) * FEATURE4_texOff(vec2(1,-1)); +res += mat4(-0.2651814818382263,-0.2288072854280472,-0.1599031686782837,0.2945036888122559,-0.5219144225120544,0.2868134975433350,0.0882711112499237,0.1873165518045425,-0.3225394189357758,0.5725277066230774,0.9555261731147766,0.1013209298253059,-0.0960882678627968,0.4585131406784058,-0.4613201320171356,0.0265702158212662) * FEATURE1_texOff(vec2(1,0)); +res += mat4(-0.0731972157955170,-0.0449099875986576,0.5571532249450684,-0.1073949784040451,-0.0349713973701000,0.0071747689507902,-0.5417777299880981,-0.1344508528709412,-0.3132073581218719,0.0723055228590965,-0.2280079871416092,-0.0006024244939908,-0.1621860861778259,0.0284414086490870,0.0161129496991634,0.1501607745885849) * FEATURE2_texOff(vec2(1,0)); +res += mat4(0.0067174173891544,0.2343200147151947,-0.5080283284187317,0.5312495827674866,0.0454211644828320,0.2897656559944153,-0.1136429458856583,-0.3823511302471161,-0.2790622413158417,-0.3745599091053009,0.0601127929985523,-0.1175373196601868,-0.1063450872898102,-0.0410735420882702,-0.2890635728836060,0.5056386590003967) * FEATURE3_texOff(vec2(1,0)); +res += mat4(0.5037181973457336,-1.1170947551727295,-0.5449797511100769,0.3597307205200195,-0.0285126268863678,0.3148215115070343,0.4604218900203705,0.2808663249015808,0.0162206999957561,-0.3732328414916992,-0.5785920023918152,0.1976140588521957,-0.5090074539184570,0.6523973941802979,-0.1632602810859680,-0.1469507217407227) * FEATURE4_texOff(vec2(1,0)); +res += mat4(-0.0661215856671333,0.2697862982749939,-0.1526191383600235,0.3426537811756134,-0.0941963717341423,-0.0453732609748840,-0.1661902964115143,0.0029509349260479,-0.1297422945499420,0.3132496774196625,0.0477103367447853,-0.0763362720608711,0.2142441421747208,-0.2151754349470139,0.0798331648111343,0.0610793232917786) * FEATURE1_texOff(vec2(1,1)); +res += mat4(-0.0336847305297852,-0.3289247453212738,0.4004055559635162,0.2447433471679688,0.1103943735361099,0.3727104365825653,0.3764447569847107,-0.0454859547317028,0.0884784683585167,0.0267046000808477,-0.3515844941139221,-0.2293561398983002,0.0277891717851162,-0.0138099212199450,0.1696697175502777,0.0516055934131145) * FEATURE2_texOff(vec2(1,1)); +res += mat4(0.0018621622584760,0.2604791820049286,0.2717927396297455,0.3943259119987488,-0.0989849790930748,-0.2238094806671143,-0.3049607276916504,0.1484513133764267,-0.4653285443782806,0.4149819910526276,0.2806181013584137,-0.0392659343779087,0.1793054938316345,0.0728375092148781,0.7856308221817017,0.0007568100700155) * FEATURE3_texOff(vec2(1,1)); +res += mat4(-0.1371228843927383,-0.4515758156776428,-0.1283617764711380,0.2101248651742935,0.2646862864494324,-0.4533604681491852,0.1065965071320534,0.0693597942590714,0.2889678776264191,0.0214051268994808,0.6909635663032532,0.2163403928279877,0.3420628011226654,-0.2050398141145706,-0.0816402360796928,0.0032103767152876) * FEATURE4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.4853514730930328,0.0194640476256609,0.0559235066175461,0.9239075779914856) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 1_2 +//!BIND FEATURE1 +//!BIND FEATURE2 +//!BIND FEATURE3 +//!BIND FEATURE4 +//!SAVE MODEL22 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.1381223350763321,-0.0308194756507874,0.1110133975744247,-0.0683282017707825); +res += mat4(-0.2088769525289536,-0.0105850258842111,-0.1151953488588333,0.0346273891627789,-0.3365945518016815,-0.0517612397670746,0.0336230397224426,-0.0372144170105457,0.1981399059295654,0.1342182457447052,-0.1760965287685394,0.2307879626750946,-0.1530198454856873,-0.1098565682768822,0.0360668078064919,-0.0083812475204468) * FEATURE1_texOff(vec2(-1,-1)); +res += mat4(-0.1177931874990463,-0.0846288949251175,-0.2833393514156342,-0.1577735990285873,0.1323858946561813,-0.0128489714115858,-0.2080941498279572,-0.0380874052643776,-0.2245622128248215,-0.1485987454652786,0.0010099023347721,-0.1531151384115219,-0.1019563600420952,-0.0452317036688328,0.0589019767940044,0.0121880760416389) * FEATURE2_texOff(vec2(-1,-1)); +res += mat4(0.0704127103090286,0.0245257895439863,-0.1575127989053726,0.1349024325609207,-0.1563488990068436,-0.0450201816856861,0.0279316585510969,0.1888295561075211,-0.0059769251383841,0.1732009947299957,0.1763417571783066,0.0518473982810974,0.0620901659131050,-0.0433492250740528,-0.0562263280153275,-0.1273161619901657) * FEATURE3_texOff(vec2(-1,-1)); +res += mat4(0.1267730593681335,-0.0329404771327972,0.2025095671415329,0.1193531453609467,0.0728927850723267,0.0823160484433174,0.1572242677211761,0.1716777533292770,0.2288017272949219,-0.2456564903259277,-0.0219315327703953,-0.3694605827331543,0.0219488814473152,-0.1276920139789581,-0.0379748567938805,-0.0840378776192665) * FEATURE4_texOff(vec2(-1,-1)); +res += mat4(0.2056158930063248,0.2981309592723846,0.4551208317279816,0.3621589541435242,0.1664001643657684,0.2786794006824493,-0.1290398538112640,0.1190336570143700,0.1758793741464615,-0.0912702158093452,-0.4254598915576935,0.2246738970279694,-0.0261087883263826,0.2550060749053955,-0.0596518293023109,-0.1216617897152901) * FEATURE1_texOff(vec2(-1,0)); +res += mat4(-0.0796719565987587,0.0087867546826601,0.3371246457099915,-0.3683475852012634,-0.2284196317195892,0.1553688198328018,0.1120917648077011,-0.0740640237927437,-0.0330910012125969,0.5079706311225891,0.0464495383203030,-0.0281568299978971,0.0377068296074867,0.0486547499895096,-0.0274681914597750,-0.1364037692546844) * FEATURE2_texOff(vec2(-1,0)); +res += mat4(0.3227785527706146,0.1808989048004150,0.2177855074405670,0.1488631516695023,0.0276129115372896,-0.0884175524115562,-0.1514154821634293,-0.4444026648998260,-0.2891204059123993,-0.1344766467809677,-0.1440485715866089,-0.4961053133010864,0.1105418205261230,0.1085827052593231,0.0921985581517220,-0.1675277352333069) * FEATURE3_texOff(vec2(-1,0)); +res += mat4(-0.1732871979475021,0.4281528890132904,-0.0204508714377880,-0.1851426213979721,-0.1087937057018280,-0.3815968632698059,0.2121615111827850,-0.5234569311141968,0.1071098297834396,0.5851136445999146,-0.1577875763177872,-0.2906306684017181,-0.7021292448043823,0.2255133390426636,-0.1295063495635986,-0.1320244520902634) * FEATURE4_texOff(vec2(-1,0)); +res += mat4(-0.1757937669754028,-0.2319357842206955,-0.1836598366498947,0.1259083151817322,0.5745494365692139,-0.0729667767882347,-0.1101969778537750,0.1380585283041000,-0.1041931733489037,-0.3247266709804535,-0.0038968466687948,0.3799381852149963,0.1569617539644241,-0.1585843116044998,0.1072080880403519,-0.0745987668633461) * FEATURE1_texOff(vec2(-1,1)); +res += mat4(0.4278232753276825,0.1297351717948914,0.0242699328809977,0.1919889599084854,0.1342368423938751,-0.1163052171468735,0.0549292564392090,-0.0147566581144929,0.1688189953565598,-0.1894697397947311,-0.0977199077606201,0.2842393219470978,0.1062431111931801,-0.0455371215939522,0.0077982707880437,0.0216805879026651) * FEATURE2_texOff(vec2(-1,1)); +res += mat4(0.0561123453080654,-0.1753604114055634,-0.1611851602792740,-0.0905591323971748,0.6435936689376831,0.1204528734087944,0.0111874192953110,0.3374686241149902,0.3051860928535461,-0.0780762061476707,0.2443095892667770,-0.2589598298072815,-0.0003057309950236,-0.1137806028127670,-0.1054927855730057,0.0880511328577995) * FEATURE3_texOff(vec2(-1,1)); +res += mat4(-0.2937435507774353,0.2320816367864609,0.0320707336068153,-0.0581145994365215,-0.2367461323738098,0.4746437370777130,0.0147240571677685,-0.1799026876688004,-0.0346993468701839,0.0699583739042282,-0.3170774877071381,0.2222882062196732,0.3463763594627380,-0.2493554353713989,0.0534604340791702,0.3099468946456909) * FEATURE4_texOff(vec2(-1,1)); +res += mat4(-0.7647771239280701,-0.3693305552005768,0.6674076914787292,-0.2018796503543854,-0.1837627589702606,-0.2026533484458923,-0.2065198272466660,-0.7396225929260254,0.8524928092956543,-0.3777147233486176,0.0014601636212319,-0.0749434828758240,-0.4064617753028870,0.1136885806918144,-0.2240319401025772,0.1771318167448044) * FEATURE1_texOff(vec2(0,-1)); +res += mat4(0.0152301695197821,-0.1906797885894775,0.6144173145294189,0.3965292274951935,-0.0969559252262115,-0.0965181961655617,0.2601015865802765,-0.1854272931814194,0.0161584168672562,0.2746478021144867,-0.2444981634616852,0.0295571684837341,-0.0056955255568027,0.0136870443820953,-0.0315799862146378,-0.0970168113708496) * FEATURE2_texOff(vec2(0,-1)); +res += mat4(-0.2683302462100983,0.3706904053688049,-0.3019535541534424,-0.7962921857833862,0.1152348443865776,-0.0349015258252621,-0.3777785003185272,-0.2090991586446762,-0.6641592979431152,-0.0305389035493135,-0.7255446314811707,-0.0721698999404907,-0.0974985733628273,0.0589145533740520,-0.3214484453201294,0.1777489185333252) * FEATURE3_texOff(vec2(0,-1)); +res += mat4(0.0061144740320742,0.2519157528877258,0.1558316051959991,0.4245251417160034,-0.6843578815460205,0.1966717094182968,-0.4610933661460876,-0.2540432512760162,0.0210541579872370,0.1831053048372269,0.4746453762054443,-0.0526402108371258,-0.0040490669198334,-0.0342687070369720,0.3900658488273621,-0.3303281068801880) * FEATURE4_texOff(vec2(0,-1)); +res += mat4(-0.4828728139400482,0.5191280841827393,-1.1391385793685913,-0.7054628133773804,1.0957189798355103,-0.5038015246391296,1.1690396070480347,0.8840553760528564,-1.2126139402389526,-0.1944981217384338,-0.3844216167926788,1.5913034677505493,0.4191325902938843,0.0223961118608713,0.2826472818851471,-0.0871717706322670) * FEATURE1_texOff(vec2(0,0)); +res += mat4(-1.4643236398696899,-0.7375335693359375,0.2441195696592331,0.4990673959255219,-0.8329786062240601,-0.3049604892730713,0.9556087851524353,0.2383137643337250,0.5312217473983765,-0.5947279334068298,0.1804114133119583,-0.5788916945457458,0.3507929444313049,-0.0233711879700422,-0.2017675191164017,0.2487143874168396) * FEATURE2_texOff(vec2(0,0)); +res += mat4(-0.1819303482770920,-0.5676728487014771,0.2360317111015320,0.0851088836789131,0.3140235841274261,0.1351734697818756,0.0945767760276794,-0.7279174923896790,1.6670336723327637,-0.0221601165831089,-0.0541631169617176,0.5291170477867126,0.5370565652847290,0.3250507712364197,0.2952508032321930,0.7118167877197266) * FEATURE3_texOff(vec2(0,0)); +res += mat4(-0.4443428218364716,1.7487819194793701,0.7934173345565796,0.4780461490154266,0.9800529479980469,-0.9448102116584778,-0.9966609477996826,-0.5082603096961975,-0.9662690758705139,-0.1383059471845627,0.5476665496826172,0.8644275665283203,0.2329450398683548,-0.2073891162872314,0.6153110265731812,-0.8020766377449036) * FEATURE4_texOff(vec2(0,0)); +res += mat4(1.3168696165084839,0.3006781041622162,0.2233006358146667,-0.7741575837135315,-1.2183657884597778,0.1592453569173813,-0.1303313076496124,-0.5448666214942932,0.0890172719955444,0.0626696199178696,0.4082972407341003,-0.0174469910562038,-0.5905545353889465,-0.1600939035415649,0.1808805614709854,0.4527755379676819) * FEATURE1_texOff(vec2(0,1)); +res += mat4(0.2451122701168060,0.0711479261517525,-0.4790588915348053,-0.0287401173263788,-0.6085331439971924,0.0391158387064934,0.1979900598526001,0.6233009099960327,-0.4468613266944885,0.1692452281713486,0.3975573182106018,-0.0298757180571556,-0.0155079197138548,0.0266936160624027,-0.0893321484327316,-0.0689681470394135) * FEATURE2_texOff(vec2(0,1)); +res += mat4(-0.0973365902900696,0.2272831350564957,0.0554595254361629,0.6588506102561951,-0.7055286765098572,-0.0497792214155197,-0.0126299904659390,0.3630616366863251,-0.7668600678443909,-0.0601201094686985,0.2889628410339355,0.7213001251220703,-0.5142368078231812,-0.2921136617660522,-0.0372818075120449,0.0245624762028456) * FEATURE3_texOff(vec2(0,1)); +res += mat4(-0.6794872283935547,-0.1474942564964294,0.1974916905164719,-0.0832043588161469,0.3203485012054443,-0.1725142896175385,-0.1287368983030319,0.2957201898097992,-0.2809852659702301,-0.2404037415981293,0.3074257671833038,0.1061463952064514,0.3400422930717468,0.1731379330158234,-0.6084728240966797,0.1411322951316833) * FEATURE4_texOff(vec2(0,1)); +res += mat4(-0.1315720230340958,-0.1491559147834778,-0.1476573199033737,0.0172325670719147,0.0603457167744637,0.1274620592594147,0.0230694599449635,0.2419043183326721,-0.2473622113466263,0.1825644075870514,-0.0844093039631844,-0.1179033219814301,0.0535174496471882,-0.0359878912568092,0.2790770828723907,0.1150204017758369) * FEATURE1_texOff(vec2(1,-1)); +res += mat4(-0.3542392551898956,-0.0167406518012285,-0.0500063747167587,0.1317760497331619,0.2503667771816254,0.0965770110487938,0.0886839926242828,0.2376044392585754,0.3583405613899231,-0.0593837574124336,-0.0855230018496513,-0.0920166969299316,0.0858608484268188,0.0060294447466731,-0.0157861225306988,0.0127252563834190) * FEATURE2_texOff(vec2(1,-1)); +res += mat4(0.3226392865180969,0.0865219160914421,-0.1496476382017136,0.1624807566404343,0.3655589520931244,-0.0445664376020432,0.1227211430668831,-0.2220589071512222,-0.2631477713584900,0.0820850655436516,0.5568479895591736,0.0730609148740768,-0.0937359035015106,0.2295248508453369,-0.3294035196304321,-0.2036383599042892) * FEATURE3_texOff(vec2(1,-1)); +res += mat4(0.3742868900299072,-0.1802055388689041,-0.0593203529715538,0.1976574063301086,0.8271688222885132,0.0117016453295946,0.5063909292221069,0.2256126701831818,0.1593020707368851,-0.1280505210161209,0.0390553958714008,-0.1892147809267044,0.0888174250721931,-0.1376793980598450,0.5697006583213806,0.2485611587762833) * FEATURE4_texOff(vec2(1,-1)); +res += mat4(0.2118279337882996,0.0513114370405674,0.2285705506801605,0.5599109530448914,-0.5099740028381348,0.1410261243581772,-0.3096668720245361,0.7005844116210938,-0.4349140822887421,0.4047641158103943,0.4812763929367065,0.1051402017474174,0.2456628382205963,0.0377773605287075,-0.6833984255790710,-0.3006701469421387) * FEATURE1_texOff(vec2(1,0)); +res += mat4(-0.7107729315757751,-0.3105662167072296,-0.2076982706785202,-0.1214028969407082,-0.1795432120561600,0.1798780262470245,-0.0163973346352577,0.1743666827678680,-0.4378082156181335,0.1835298836231232,0.0649149790406227,0.0880983099341393,-0.1403774917125702,-0.0377079211175442,-0.1460157334804535,0.0355062298476696) * FEATURE2_texOff(vec2(1,0)); +res += mat4(0.0914793089032173,0.0385615527629852,0.1190174892544746,-0.0553938411176205,-0.4308855831623077,0.1630966216325760,0.3357785642147064,0.0585900247097015,-0.1960757374763489,-0.1455840319395065,-0.3593325614929199,-0.3946797251701355,-0.0507271811366081,-0.2539891600608826,-0.0905557572841644,-0.6227382421493530) * FEATURE3_texOff(vec2(1,0)); +res += mat4(0.2614709436893463,0.0061688483692706,0.3611848056316376,-0.1338395625352859,-1.0093911886215210,0.0553577207028866,0.1186351701617241,0.3184973597526550,-0.5891544818878174,-0.1016779243946075,-0.2224645316600800,0.0639321878552437,-0.2353626340627670,0.2742255926132202,-0.9502924680709839,0.7192491292953491) * FEATURE4_texOff(vec2(1,0)); +res += mat4(0.3778582513332367,-0.1000494062900543,-0.3470661938190460,0.1308858692646027,-0.0679450184106827,-0.0160419829189777,-0.0135374749079347,-0.0480017438530922,-0.2798678874969482,-0.0037702140398324,-0.1513005942106247,0.1505549550056458,0.5613264441490173,-0.0316404215991497,0.2104064077138901,0.0057972222566605) * FEATURE1_texOff(vec2(1,1)); +res += mat4(0.5251657366752625,0.0792712643742561,-0.1533361673355103,0.0648916959762573,0.1299594342708588,-0.0274657960981131,0.2256900221109390,-0.1350511759519577,0.3783259689807892,-0.1323687285184860,-0.1913703531026840,-0.0371813550591469,-0.3229732215404510,0.0125484764575958,0.0712098628282547,0.0355844199657440) * FEATURE2_texOff(vec2(1,1)); +res += mat4(-0.1488132029771805,-0.1394258141517639,0.0912211686372757,-0.2606098055839539,-0.0499770082533360,-0.0108409021049738,-0.0542243905365467,-0.0962965711951256,0.7122877240180969,0.2720184922218323,-0.3723897337913513,-0.1091977506875992,0.3245325982570648,-0.0505217276513577,0.5785158276557922,0.2982622087001801) * FEATURE3_texOff(vec2(1,1)); +res += mat4(0.1374520808458328,-0.0015341561520472,-0.1311945766210556,0.2911640405654907,-0.3659119606018066,-0.0591222643852234,0.3697520196437836,0.0210731234401464,-0.1840991079807281,0.0390477702021599,0.0259844064712524,0.2170744538307190,-0.0889984294772148,0.0531435646116734,0.2462018877267838,-0.4002745449542999) * FEATURE4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0506038926541805,-1.0047781467437744,-0.4045023024082184,0.9032984972000122) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 1_3 +//!BIND FEATURE1 +//!BIND FEATURE2 +//!BIND FEATURE3 +//!BIND FEATURE4 +//!SAVE MODEL23 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.1987741589546204,-0.9577525258064270,-0.0384856425225735,-0.1572636365890503); +res += mat4(0.6966392397880554,-0.4640935063362122,0.2297160476446152,-0.0832405164837837,-0.0009435203392059,-0.0578446798026562,-0.1164432391524315,-0.1221262738108635,-0.1412358880043030,-0.0279388818889856,0.0489265844225883,0.0063599492423236,0.2360319495201111,0.0912766307592392,-0.1941773593425751,0.2315690666437149) * FEATURE1_texOff(vec2(-1,-1)); +res += mat4(-0.1167130470275879,0.0778460651636124,0.1076761484146118,-0.2353819608688354,0.0524621158838272,-0.0356444679200649,0.2539249062538147,0.2634229958057404,0.2133077681064606,-0.1919374763965607,-0.2158848792314529,0.0518384873867035,0.0609824284911156,-0.1305586248636246,-0.1013210490345955,0.1769250631332397) * FEATURE2_texOff(vec2(-1,-1)); +res += mat4(0.1402679532766342,0.2941172719001770,-0.1457418501377106,0.3779373764991760,-0.1932400017976761,-0.2161010503768921,0.0722947195172310,0.0502758324146271,-0.3296416103839874,0.4798662662506104,0.2580823302268982,-0.0627183541655540,0.0147153036668897,0.2626453340053558,0.0540219917893410,0.1939793974161148) * FEATURE3_texOff(vec2(-1,-1)); +res += mat4(0.1847409754991531,0.4179320335388184,0.1568926721811295,-0.2688268125057220,0.1841754466295242,-0.1598462462425232,0.1664924770593643,-0.6711257100105286,-0.3222356140613556,-0.3005515038967133,-0.1475231498479843,0.1409637480974197,-0.1211405694484711,-0.4659332334995270,-0.4637466669082642,0.3335506618022919) * FEATURE4_texOff(vec2(-1,-1)); +res += mat4(0.5968201160430908,0.0195734798908234,0.2521410584449768,0.1837282180786133,-0.2368906587362289,-0.1613323688507080,0.3105871975421906,-0.5328266620635986,0.6818410158157349,-0.2313661426305771,0.1797828674316406,-0.4353945851325989,0.3843055069446564,0.2114877700805664,-0.3301143646240234,-0.0251296106725931) * FEATURE1_texOff(vec2(-1,0)); +res += mat4(0.5452771782875061,0.3973252177238464,-0.2990077137947083,-0.6833023428916931,-0.0103876451030374,-0.2633355557918549,0.2405222356319427,-0.1847756654024124,0.0809822008013725,-0.5386145710945129,0.3198210299015045,0.5242416858673096,-0.0943189039826393,0.1589269340038300,-0.2653484344482422,-0.2556872963905334) * FEATURE2_texOff(vec2(-1,0)); +res += mat4(-0.0612921006977558,0.3507350981235504,0.2488755732774734,0.1469088792800903,-0.3519552946090698,-0.2370343953371048,-0.1770581305027008,0.1431888490915298,-0.6166468262672424,-0.1131900474429131,-0.4911212325096130,0.5227483510971069,-0.3461691737174988,0.0986021012067795,0.7038308978080750,-0.3039589524269104) * FEATURE3_texOff(vec2(-1,0)); +res += mat4(0.1912881582975388,-0.5830649733543396,0.2136552929878235,0.1866988241672516,-0.5624901652336121,0.2385427057743073,0.1727342009544373,-0.4540549218654633,0.4965006113052368,-0.3204718232154846,-0.1158104166388512,0.5111644268035889,1.0713713169097900,0.1508440226316452,-0.5791803598403931,-0.0009748075972311) * FEATURE4_texOff(vec2(-1,0)); +res += mat4(0.9698884487152100,-0.2014376223087311,-0.6689079999923706,0.4241695106029510,-0.0573838278651237,0.1175749525427818,-0.3876985013484955,0.2512328326702118,0.5065176486968994,-0.0682719275355339,-0.3141808807849884,-0.1387684196233749,-0.1143181324005127,-0.0706263333559036,-0.2333269715309143,0.5111127495765686) * FEATURE1_texOff(vec2(-1,1)); +res += mat4(-0.5634623765945435,0.0672075673937798,0.2458319514989853,-0.2465665936470032,1.0935126543045044,-0.3243642449378967,0.3043719530105591,0.0064766071736813,0.9648159146308899,0.1759704202413559,-0.1268455684185028,0.0441841222345829,-0.8189800977706909,-0.0071217310614884,-0.0554777421057224,-0.2554271817207336) * FEATURE2_texOff(vec2(-1,1)); +res += mat4(-0.1151394397020340,-0.0710884630680084,0.1666608154773712,0.2001230269670486,-0.3966263532638550,0.3185620605945587,0.2014131247997284,-0.6153194308280945,-0.1701968014240265,-0.0540665499866009,0.0967301502823830,-0.1836527884006500,-0.2557096779346466,-0.4019114375114441,-0.4702650904655457,-0.1317474097013474) * FEATURE3_texOff(vec2(-1,1)); +res += mat4(-0.3346468508243561,-0.0425257682800293,0.1464348584413528,-0.0702658221125603,-1.1866838932037354,-0.1095336750149727,0.2232391387224197,0.1260936558246613,0.3364435434341431,0.0271857567131519,-0.2763819098472595,-0.2012097984552383,-0.5574805140495300,0.4211027026176453,0.0042814216576517,-0.0079778516665101) * FEATURE4_texOff(vec2(-1,1)); +res += mat4(-0.3540650010108948,0.0071619492955506,-0.1938177198171616,0.6681747436523438,-0.8133658766746521,-0.5995404124259949,-0.3652176260948181,0.5787848830223083,-1.1667940616607666,-0.1285391598939896,-0.0541963428258896,0.8525529503822327,0.1709660291671753,-0.2035605609416962,-0.0489438250660896,-0.0194259360432625) * FEATURE1_texOff(vec2(0,-1)); +res += mat4(-0.0078989947214723,-0.6119658946990967,-0.2015484124422073,-0.2649651169776917,-0.6429963707923889,0.2694746255874634,-0.4319376945495605,-0.3059541285037994,-0.0497270785272121,0.1026998609304428,-0.0897300168871880,0.1753655374050140,0.2096567898988724,0.2093304544687271,-0.0014726204099134,-0.1757658571004868) * FEATURE2_texOff(vec2(0,-1)); +res += mat4(0.4870032668113708,-0.3136315047740936,0.0027699931524694,0.0663692802190781,-0.3052871823310852,0.3439637422561646,-0.1048567295074463,-0.1991288512945175,0.3137850165367126,0.0046365256421268,-0.1638680994510651,-0.4108964502811432,0.0508278496563435,-0.2253065854310989,-0.1633804589509964,0.2289161980152130) * FEATURE3_texOff(vec2(0,-1)); +res += mat4(-0.1308068782091141,-0.4817227125167847,-0.0263788085430861,-0.3971874713897705,-0.2506425678730011,0.0695889964699745,-0.2154289782047272,0.5419184565544128,-0.2379133403301239,0.4222696423530579,0.5321872234344482,-0.4691502451896667,0.5537111759185791,0.2836233973503113,-0.0807907357811928,-0.1053616553544998) * FEATURE4_texOff(vec2(0,-1)); +res += mat4(-1.3340888023376465,0.1811003237962723,-0.0891653820872307,0.2640296220779419,0.0198112688958645,0.3743432164192200,0.2111666053533554,0.0528086237609386,1.4712600708007812,1.2311338186264038,-0.9427970051765442,-0.6471102833747864,-0.1417239755392075,-0.0687683522701263,0.6658940315246582,-0.2936039566993713) * FEATURE1_texOff(vec2(0,0)); +res += mat4(0.6384365558624268,0.9694315791130066,-0.9346356391906738,-1.0230228900909424,-0.5444990992546082,0.7220879793167114,-1.3095484972000122,-0.1715894937515259,-0.1845342367887497,0.2809494435787201,-0.7519769072532654,0.5043348670005798,0.0642623752355576,0.5404297709465027,0.4980618953704834,-0.4332457780838013) * FEATURE2_texOff(vec2(0,0)); +res += mat4(0.4064006507396698,-0.1983926743268967,-0.3653252422809601,-0.4969399273395538,0.9744088053703308,-0.4507445096969604,-0.2631619274616241,0.3812571465969086,0.1463315337896347,-0.3806351721286774,-0.1298433393239975,-1.0762634277343750,0.6555476784706116,0.2125965803861618,-0.2418732196092606,-0.7435741424560547) * FEATURE3_texOff(vec2(0,0)); +res += mat4(0.5863549113273621,-0.7426007390022278,1.0520230531692505,-0.3021634817123413,1.0178332328796387,0.3958678841590881,-1.2147421836853027,-0.2803310155868530,0.9442859292030334,0.9875133633613586,-1.3295483589172363,0.3140213191509247,-1.2360699176788330,0.0436276197433472,0.8192564249038696,0.9244912862777710) * FEATURE4_texOff(vec2(0,0)); +res += mat4(-0.0778036788105965,0.1303569674491882,-0.0946515947580338,0.1500514000654221,-0.8376330137252808,0.0064494702965021,0.4018820524215698,0.3726169466972351,-0.0240886732935905,0.1562727540731430,0.5867211222648621,0.0861321687698364,-0.0752925500273705,0.2072228193283081,0.0571691095829010,-0.3941327631473541) * FEATURE1_texOff(vec2(0,1)); +res += mat4(-0.6260624527931213,0.2243167608976364,-0.0777204260230064,-0.0948459953069687,0.1986584663391113,0.0779278427362442,-0.0409294515848160,-0.1123309731483459,-0.5333513021469116,-0.3017018139362335,0.3394177854061127,0.0070442100986838,-1.2051154375076294,0.1886872202157974,0.0150700416415930,0.2271993011236191) * FEATURE2_texOff(vec2(0,1)); +res += mat4(-0.1438168585300446,-0.0561682283878326,-0.0726087689399719,-0.1063039004802704,0.8472042083740234,-0.1650467067956924,-0.4323893487453461,0.1089009195566177,-0.2962348163127899,-0.0804210677742958,0.3090696632862091,0.1938772201538086,-0.9304508566856384,0.2099634110927582,-0.2387906461954117,0.4645425677299500) * FEATURE3_texOff(vec2(0,1)); +res += mat4(-0.3891402482986450,0.1677001267671585,-0.3542142212390900,0.4825044274330139,-0.7494704127311707,0.0327095612883568,-0.3160547018051147,0.0381647609174252,-0.3395038843154907,-0.0875114798545837,0.1697681397199631,-0.0070069218054414,0.2785872519016266,-0.3053137958049774,-0.4394780993461609,-0.4758984446525574) * FEATURE4_texOff(vec2(0,1)); +res += mat4(0.1764032542705536,0.3245241641998291,-0.3035278022289276,-0.0335294082760811,0.0819542557001114,0.0181823037564754,-0.4616291821002960,0.3710139989852905,-0.2668941020965576,0.1378638595342636,-0.3516434729099274,0.2218741774559021,-0.1380484700202942,0.2721910178661346,0.1993634998798370,-0.0507654286921024) * FEATURE1_texOff(vec2(1,-1)); +res += mat4(0.1138257235288620,0.0702949985861778,0.0519753210246563,0.0316211394965649,-0.1142372712492943,-0.3463631868362427,-0.1331373304128647,0.0943566113710403,0.1118926182389259,-0.0014000118244439,-0.0389710702002048,-0.2867488861083984,-0.0759893879294395,-0.0621335469186306,0.0294951014220715,0.1627990603446960) * FEATURE2_texOff(vec2(1,-1)); +res += mat4(-0.0370159111917019,-0.0134843364357948,-0.0296634603291750,-0.2262785434722900,-0.2126005589962006,0.1114539355039597,-0.3452126085758209,0.4179220199584961,0.1400017142295837,0.1337017863988876,0.1674517989158630,0.6095085144042969,0.1415290385484695,0.1256051212549210,-0.0247143786400557,-0.3213684260845184) * FEATURE3_texOff(vec2(1,-1)); +res += mat4(0.2360568046569824,0.0886762887239456,0.2882657349109650,0.0703785941004753,0.0481112562119961,0.1826563030481339,0.2045601755380630,-0.7343208193778992,0.2727248668670654,-0.1472977846860886,0.1000528633594513,0.1027388945221901,0.0052390284836292,-0.1624580770730972,-0.2070121914148331,0.0261196251958609) * FEATURE4_texOff(vec2(1,-1)); +res += mat4(0.5196351408958435,-0.1754677295684814,0.0290226303040981,-0.4108504652976990,0.7359254956245422,0.1325557529926300,0.7144725918769836,0.1152682229876518,0.5018915534019470,0.1675622016191483,0.1405982822179794,0.3300459384918213,-0.2479736208915710,0.1644758880138397,-0.2817023694515228,0.3316636085510254) * FEATURE1_texOff(vec2(1,0)); +res += mat4(0.8050370812416077,0.5533731579780579,-0.3099412024021149,0.1754989326000214,-0.1735986918210983,0.0404918454587460,0.2438879311084747,-0.2540093660354614,-0.4142113626003265,0.0423586852848530,0.2983778417110443,-0.6657259464263916,-0.0323144160211086,0.1928859353065491,0.0626569986343384,-0.2675825357437134) * FEATURE2_texOff(vec2(1,0)); +res += mat4(-0.8682364821434021,0.2794692516326904,0.2730025053024292,0.1207608506083488,0.5389584302902222,0.0149545557796955,-0.1274863481521606,-0.0567482747137547,-0.0887703672051430,0.6914038658142090,-0.3094426095485687,-0.2982452213764191,0.4080916643142700,0.0426792725920677,-0.0051025901921093,0.6209579110145569) * FEATURE3_texOff(vec2(1,0)); +res += mat4(0.0917436853051186,-0.0701907053589821,-0.2328515946865082,-0.1792335063219070,0.6472560167312622,-0.0877070501446724,-0.3649670481681824,0.2790137529373169,0.5136012434959412,-0.1430896967649460,0.4229614138603210,0.2363108694553375,0.5988228321075439,0.0732361972332001,0.3804556727409363,-0.6032572984695435) * FEATURE4_texOff(vec2(1,0)); +res += mat4(-0.4129971563816071,-0.0148138366639614,0.0773900002241135,-0.3664886355400085,0.7110533118247986,-0.3235684633255005,0.0094040073454380,-0.0542590022087097,-0.1800988018512726,-0.1026054248213768,0.2341964095830917,0.2807213664054871,-0.3103989362716675,-0.6431574821472168,-0.2740025222301483,-0.3599634468555450) * FEATURE1_texOff(vec2(1,1)); +res += mat4(0.1131857261061668,-0.3137154579162598,0.3429902195930481,-0.2737554609775543,1.2133983373641968,-0.1039248928427696,-0.0803684666752815,0.0061881896108389,-0.0924719199538231,0.1144402697682381,-0.2670459151268005,-0.1642477959394455,-0.4046771526336670,-0.1048694700002670,-0.0008883008267730,0.0014021961251274) * FEATURE2_texOff(vec2(1,1)); +res += mat4(0.1959314346313477,0.0085384212434292,-0.0705676227807999,0.2818849384784698,-0.2752107381820679,0.1570400297641754,0.2566027343273163,0.1972118318080902,0.9400491714477539,-0.2308340966701508,0.0559823065996170,0.0408312715590000,0.3904103934764862,-0.5421842932701111,-0.1970631629228592,-0.1138259097933769) * FEATURE3_texOff(vec2(1,1)); +res += mat4(-1.2016843557357788,0.0032943340484053,0.1414308100938797,-0.3150011897087097,-0.5170863270759583,0.1909369528293610,0.1779014021158218,0.0504081510007381,0.1417503207921982,-0.2203383594751358,-0.0287875495851040,-0.0217010006308556,-0.7724525332450867,-0.0255299452692270,0.0156590901315212,-0.1772062629461288) * FEATURE4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.0190296284854412,0.0706401318311691,0.7972527742385864,0.0644450262188911) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 1_4 +//!BIND FEATURE1 +//!BIND FEATURE2 +//!BIND FEATURE3 +//!BIND FEATURE4 +//!SAVE MODEL24 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.1087156683206558,-0.9075642228126526,-0.0346042588353157,0.1664762347936630); +res += mat4(0.2831370532512665,0.0058452812954783,-0.1289279460906982,0.2047349065542221,-0.4432878494262695,0.4621333479881287,0.4035988152027130,-0.2761998772621155,0.4163680672645569,0.0915144309401512,-0.0111864032223821,-0.4257704913616180,-0.1714486926794052,0.1755180656909943,-0.5092523097991943,0.4639800190925598) * FEATURE1_texOff(vec2(-1,-1)); +res += mat4(-0.0974804461002350,-0.0661083459854126,0.2698374986648560,0.4155388474464417,-0.0774852782487869,0.0143058374524117,0.2624184489250183,0.3015262186527252,0.0072107692249119,-0.0115862442180514,-0.1178141161799431,-0.0702119544148445,0.0091381752863526,-0.0762502029538155,-0.0035026811528951,-0.0673689618706703) * FEATURE2_texOff(vec2(-1,-1)); +res += mat4(-0.0683186650276184,0.0347410701215267,0.0645584538578987,0.5791540145874023,-0.2505789697170258,0.0295746494084597,0.2193876951932907,-0.2011970281600952,-0.3917951285839081,0.3113734424114227,0.2716041803359985,-0.3423127830028534,-0.2599830925464630,0.2731236815452576,0.1352142393589020,-0.6103169322013855) * FEATURE3_texOff(vec2(-1,-1)); +res += mat4(0.1382907032966614,0.1567241251468658,-0.2623529136180878,0.2330288439989090,0.1026417240500450,0.1336921900510788,-0.0960267484188080,-0.4534229338169098,0.2093876749277115,-0.3144259452819824,-0.0117062618955970,0.2396877259016037,-0.0440586656332016,-0.3048300743103027,0.2870889604091644,0.7035214900970459) * FEATURE4_texOff(vec2(-1,-1)); +res += mat4(-0.1377581655979156,0.0860724225640297,-0.7544308900833130,-0.7329372763633728,0.0180966202169657,-0.3518326580524445,0.3025939762592316,0.1215278208255768,0.2151169478893280,0.1350875347852707,-0.6827735304832458,0.5395355224609375,-0.0290531590580940,-0.1038386523723602,-0.2184213846921921,-0.9552698135375977) * FEATURE1_texOff(vec2(-1,0)); +res += mat4(-0.0563997998833656,-0.2057088613510132,0.1763602644205093,0.8703269958496094,-0.0177724920213223,0.3830640614032745,-0.0683283954858780,0.6795098781585693,0.2762976884841919,0.1239195168018341,-0.4393113255500793,-0.2310952693223953,0.0125381853431463,0.1744433194398880,0.1020421013236046,-0.2529702782630920) * FEATURE2_texOff(vec2(-1,0)); +res += mat4(0.2566922307014465,0.4717541038990021,-0.2663963735103607,-0.2526082992553711,-0.1143780574202538,0.2739281058311462,0.0537307523190975,0.3152118325233459,0.3445367217063904,-0.0012370349140838,0.1016864702105522,-0.2253527641296387,-0.0035550640895963,-0.4149434268474579,-0.2514138221740723,0.0322588421404362) * FEATURE3_texOff(vec2(-1,0)); +res += mat4(-0.2215952426195145,-0.0110388817265630,-0.2461408078670502,-0.4067878723144531,-0.5773093104362488,0.5065827965736389,-0.6598036289215088,-0.0595017410814762,0.4899374246597290,0.2303059250116348,-0.4807002842426300,0.7196635603904724,0.4076787829399109,-0.0242379792034626,-0.1136177778244019,-0.1848805695772171) * FEATURE4_texOff(vec2(-1,0)); +res += mat4(-0.0076391175389290,-0.2041926831007004,0.7404879927635193,0.0289287958294153,0.0456222109496593,0.0330134965479374,0.3433131873607635,-0.0810455009341240,-0.1985356509685516,-0.5179297924041748,0.4881610572338104,0.0078276675194502,0.0087746055796742,-0.1056760698556900,0.2095190286636353,0.7285584807395935) * FEATURE1_texOff(vec2(-1,1)); +res += mat4(0.1195456460118294,0.0032121676485986,-0.5120199918746948,-0.5298866033554077,-0.0995549932122231,0.1369630396366119,-0.1829387843608856,0.2486933171749115,-0.0488051250576973,0.2010894566774368,0.2991284132003784,-0.0388986207544804,-0.0002756736357696,-0.1491157859563828,-0.0484132729470730,-0.1802987605333328) * FEATURE2_texOff(vec2(-1,1)); +res += mat4(-0.0290505327284336,-0.5906178951263428,0.4409755766391754,0.0070458007976413,0.0482775717973709,0.2681422531604767,-0.1142541691660881,-0.3494954705238342,-0.1452796012163162,-0.1575714498758316,-0.2524724602699280,-0.1038879528641701,0.0732139572501183,0.2315133512020111,0.1530150920152664,0.0840636864304543) * FEATURE3_texOff(vec2(-1,1)); +res += mat4(-0.0325694419443607,-0.2112122029066086,0.2012213468551636,0.2090254873037338,0.1002777218818665,0.0359562151134014,0.2956393063068390,-0.0423515550792217,-0.1421563923358917,-0.2423527091741562,0.0935527235269547,0.3131506443023682,-0.0729856491088867,0.0598148182034492,-0.4247841238975525,-0.8078673481941223) * FEATURE4_texOff(vec2(-1,1)); +res += mat4(-0.2672279477119446,0.0677437037229538,-0.3512685596942902,-0.1972570568323135,0.0390892066061497,0.0446520186960697,-0.0022914779838175,0.3543418049812317,-0.4907896816730499,-0.3693255484104156,-0.0339384861290455,0.0572401657700539,0.3714402318000793,0.0966239944100380,-0.2475168853998184,0.5476519465446472) * FEATURE1_texOff(vec2(0,-1)); +res += mat4(-0.8543110489845276,-0.0671872422099113,-0.0705442354083061,0.1570529192686081,0.0825821384787560,0.2611544132232666,-0.1222487613558769,0.1643241792917252,0.1565754264593124,-0.0417577736079693,0.2425020486116409,0.1290563046932220,0.0018513374961913,0.0828469917178154,0.0405366159975529,-0.0648405849933624) * FEATURE2_texOff(vec2(0,-1)); +res += mat4(0.6323528885841370,0.2739350795745850,-0.2666106224060059,-0.7200468182563782,-0.1899063885211945,-0.6205863952636719,0.0421243421733379,0.3463516235351562,0.1843721121549606,-0.2456515282392502,0.4096761643886566,-0.2125853598117828,0.3226993083953857,-0.1005071029067039,-0.4462574124336243,0.1020871326327324) * FEATURE3_texOff(vec2(0,-1)); +res += mat4(-0.2349889576435089,-0.0292534027248621,-0.0411632061004639,0.4069747030735016,-0.3070210218429565,-0.4162268042564392,0.4625560045242310,0.5024183392524719,-0.5629498958587646,0.1867086291313171,0.3565312922000885,-0.1979124397039413,-0.2834521234035492,0.2735725045204163,0.3703005015850067,-0.0476065389811993) * FEATURE4_texOff(vec2(0,-1)); +res += mat4(-0.1110515445470810,-0.0889210999011993,0.5447590947151184,0.5599544644355774,0.0503268949687481,0.5344191193580627,-0.8062646985054016,-0.0667447745800018,-0.6623851656913757,-0.5459131598472595,1.5236161947250366,-0.0879496559500694,-0.0745205506682396,-0.0589255765080452,1.3849964141845703,-0.6337348222732544) * FEATURE1_texOff(vec2(0,0)); +res += mat4(-1.5323712825775146,-0.0780734047293663,0.6519567370414734,0.3739070892333984,0.3757006227970123,0.9047968387603760,-0.0571847669780254,0.4038882553577423,-0.1069322824478149,-0.2172508686780930,0.5056326389312744,1.2829581499099731,-0.1444370597600937,0.5224547386169434,-0.0722906515002251,0.0795549526810646) * FEATURE2_texOff(vec2(0,0)); +res += mat4(-0.6640521883964539,0.5300254225730896,-0.0877570062875748,0.4579716026782990,0.8427389264106750,0.1519258320331573,-0.4424907565116882,-1.1069610118865967,-0.5535061359405518,0.0053214239887893,-0.7151303887367249,-0.4114071726799011,-0.5903876423835754,0.1780086755752563,0.5006626248359680,-1.5713576078414917) * FEATURE3_texOff(vec2(0,0)); +res += mat4(-0.9901613593101501,0.5854467749595642,-0.4626945555210114,-1.4144535064697266,0.4928303956985474,-0.5428397655487061,0.2632802724838257,0.3861836194992065,1.4645655155181885,0.8884012699127197,-0.5033279061317444,-0.3723740577697754,-0.2988887429237366,0.2345651835203171,-0.5706858038902283,0.6728245615959167) * FEATURE4_texOff(vec2(0,0)); +res += mat4(0.3330448865890503,-0.0112070143222809,0.0356724001467228,-0.6474183797836304,0.0812799334526062,0.0869863256812096,-0.3065863847732544,0.4735077917575836,-0.0033763803075999,0.0593322105705738,-0.6203757524490356,-0.5629683732986450,-0.0974204465746880,0.4720092117786407,0.0359686203300953,0.0232102889567614) * FEATURE1_texOff(vec2(0,1)); +res += mat4(0.0082539124414325,0.3939676284790039,-0.0776229128241539,-0.2679301202297211,0.0027645381633192,-0.0417950749397278,0.0923903882503510,0.1083738878369331,0.0481295213103294,-0.0261830873787403,-0.1667288690805435,-0.3122136890888214,-0.0156238935887814,0.0977522209286690,0.0455260388553143,0.1199765577912331) * FEATURE2_texOff(vec2(0,1)); +res += mat4(0.0047927461564541,-0.2047413140535355,0.1119864657521248,-0.0603350065648556,-0.2410678416490555,-0.0583524815738201,0.5357083678245544,0.2207382619380951,0.0469230078160763,0.5270653963088989,-0.1780998557806015,-0.1674558818340302,0.1456317305564880,-0.0401461794972420,0.0933937430381775,0.6531956195831299) * FEATURE3_texOff(vec2(0,1)); +res += mat4(0.0811188220977783,0.1855691522359848,0.5768072009086609,0.6195318102836609,-0.1750047355890274,-0.0456597469747066,0.0544740520417690,0.0523158796131611,-0.1887115687131882,-0.0920856148004532,0.2902313172817230,0.1041692793369293,0.1448101103305817,-0.2443434298038483,0.0036924448795617,-0.2103126198053360) * FEATURE4_texOff(vec2(0,1)); +res += mat4(0.2381375432014465,0.0663627311587334,0.2335012406110764,-0.4627820551395416,0.0784997120499611,-0.0597434937953949,-0.4166316390037537,0.0074965548701584,0.3907958269119263,0.1916564106941223,-0.2059002667665482,0.4835616052150726,-0.1457022279500961,-0.1120766475796700,0.2817732691764832,-0.2332912832498550) * FEATURE1_texOff(vec2(1,-1)); +res += mat4(0.0222312137484550,-0.0120648341253400,-0.0721819549798965,0.3582895100116730,0.0691022127866745,0.1871034353971481,-0.2465584874153137,0.0685276314616203,-0.2311962693929672,0.1878426522016525,0.2817679941654205,-0.4235020875930786,0.0142014203593135,-0.0222091376781464,-0.0658412203192711,-0.0145346689969301) * FEATURE2_texOff(vec2(1,-1)); +res += mat4(-0.3453203439712524,-0.2888496816158295,0.0926567688584328,-0.2852761745452881,0.1101823970675468,0.1956752538681030,-0.2150241434574127,0.1415577530860901,0.0338111296296120,0.2003097236156464,-0.4137915968894958,0.1386701911687851,0.1041650995612144,-0.2015049159526825,0.0317280702292919,-0.1441253572702408) * FEATURE3_texOff(vec2(1,-1)); +res += mat4(0.1853863447904587,-0.0027557848952711,0.3130645453929901,-0.2007332146167755,0.1552875041961670,0.2765832543373108,-0.0549829043447971,-0.4224346280097961,0.0121838003396988,-0.3931493163108826,-0.0699725449085236,-0.3622962236404419,0.0923926681280136,-0.0462332814931870,-0.5720705389976501,-0.5957081913948059) * FEATURE4_texOff(vec2(1,-1)); +res += mat4(-0.1048749312758446,0.3038594424724579,0.0877718999981880,-0.5723592638969421,0.1507204025983810,-0.2664858698844910,0.4885557293891907,-0.0462419800460339,-0.1107062175869942,-0.0146323684602976,0.0514640919864178,-0.4875652790069580,0.0883469134569168,-0.2287716269493103,-0.0465135686099529,0.2910905480384827) * FEATURE1_texOff(vec2(1,0)); +res += mat4(0.0466432012617588,0.0349049381911755,0.1494108885526657,0.1739636659622192,0.0478214323520660,0.2432070374488831,-0.0177862383425236,-0.0793354362249374,-0.1829998195171356,0.1144796311855316,0.0297554768621922,0.2117564082145691,-0.0676111206412315,-0.0684614256024361,0.1142124012112617,-0.0069754370488226) * FEATURE2_texOff(vec2(1,0)); +res += mat4(0.1866484284400940,-0.1311591118574142,-0.0755611211061478,-0.1545641869306564,-0.1843944787979126,-0.3941308557987213,0.1287009268999100,-0.5104728937149048,0.0809461697936058,-0.0393850989639759,0.5790613889694214,0.1231456026434898,0.2869783937931061,-0.0183582436293364,-0.0692270994186401,0.2544916272163391) * FEATURE3_texOff(vec2(1,0)); +res += mat4(-0.0310170222073793,0.4162579774856567,-0.1859597861766815,-0.5479277968406677,0.3031933009624481,-0.0237672720104456,-0.2337787002325058,-0.4088483750820160,0.3291740715503693,0.3458972871303558,0.2511204481124878,-0.0650157034397125,-0.0741363167762756,0.0105352764949203,0.7500665187835693,-0.0325997248291969) * FEATURE4_texOff(vec2(1,0)); +res += mat4(-0.0696199908852577,-0.0312602259218693,-0.3989183604717255,0.0745669603347778,-0.0644938871264458,-0.2105388045310974,-0.0457618758082390,0.1598308533430099,0.0451122224330902,-0.0662788227200508,-0.2538039088249207,0.5548169016838074,0.0271571110934019,-0.0747818723320961,-0.8167809247970581,-0.5255750417709351) * FEATURE1_texOff(vec2(1,1)); +res += mat4(0.0454585738480091,0.0796022489666939,0.0746575891971588,-0.2704296708106995,0.0789716318249702,-0.1085990220308304,0.0633433163166046,0.0348055623471737,-0.0633753612637520,0.0536539033055305,-0.4138174951076508,0.0117621375247836,0.0342889316380024,0.0145183121785522,-0.0361714251339436,0.0064807245507836) * FEATURE2_texOff(vec2(1,1)); +res += mat4(-0.0557610355317593,-0.2160326540470123,-0.0119402194395661,0.0404285416007042,0.0745694935321808,-0.0587787367403507,-0.2089506536722183,0.3658298552036285,0.0678608715534210,-0.1341597437858582,0.0637727901339531,-0.5492725968360901,-0.0415159165859222,0.1558386832475662,-0.1377484798431396,0.0551406964659691) * FEATURE3_texOff(vec2(1,1)); +res += mat4(-0.0351044386625290,-0.3134496510028839,-0.0776799321174622,-0.5582964420318604,-0.1094810813665390,-0.2420932352542877,0.0866121128201485,-0.0139054777100682,-0.0232693497091532,-0.0878517329692841,-0.1818398535251617,-0.1748342961072922,0.0291870851069689,-0.0635103136301041,0.2051592320203781,0.2843922674655914) * FEATURE4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.8224552273750305,0.0907779783010483,-0.8194684386253357,0.7123059630393982) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 2_1 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL1 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.1821142584085464,0.2680435180664062,0.0072256801649928,-0.1534767448902130); +res += mat4(0.1567186117172241,0.1995420008897781,0.3876445293426514,-0.0657437443733215,-0.2419036328792572,-0.0437269136309624,-0.2063243538141251,-0.0750159919261932,0.7670885920524597,0.0008573648519814,-0.1210522502660751,0.0726916193962097,0.1269507706165314,0.0502357371151447,-0.0651772618293762,0.0675387755036354) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(-1.3524439334869385,0.3195005059242249,0.1917120516300201,0.1658273935317993,0.0782139450311661,0.0182677172124386,0.0383682511746883,-0.0341160148382187,0.0195416361093521,0.1128480508923531,-0.1998605728149414,0.2079982757568359,-0.2893924117088318,0.0977299958467484,-0.2218614667654037,-0.0945199429988861) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(0.0076252417638898,-0.0967269837856293,0.3000745773315430,0.4004792869091034,-0.0856744647026062,0.0516689606010914,-0.0221493914723396,0.0029376018792391,0.4413319826126099,0.0865859538316727,-0.1825978457927704,0.1487386226654053,-0.3030017316341400,0.1085127368569374,-0.0123953092843294,-0.1547867208719254) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(-0.8065760731697083,-0.0367696434259415,0.0877586156129837,-0.0537286400794983,-0.0701612755656242,-0.1005082055926323,0.0130320955067873,0.1380047053098679,0.1492499262094498,-0.1195761263370514,-0.1748647242784500,0.1239927485585213,-0.4883742034435272,0.0717922672629356,0.0781278908252716,-0.0129398517310619) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(0.0333379022777081,-0.2495142370462418,-0.2084558606147766,0.0531433485448360,0.0851450264453888,-0.2658228576183319,0.1058013588190079,-0.4307983219623566,0.1927942186594009,0.2174018770456314,0.0456488057971001,0.3917725980281830,0.8125612139701843,0.3295940160751343,-0.4563819169998169,-0.0668170005083084) * MODEL21_texOff(vec2(-1,0)); +res += mat4(-0.1991187632083893,-0.0398979596793652,-0.1471599936485291,-0.1525022089481354,0.2197243869304657,-0.0161120090633631,-0.0291145816445351,-0.0731005445122719,0.4118004143238068,-0.1268711835145950,0.1246666610240936,0.0325524769723415,-0.4228635430335999,0.0653037428855896,0.9307349920272827,-0.3417280912399292) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.0911106318235397,-0.1293365806341171,0.2490556836128235,-0.2674607336521149,-0.2140632718801498,-0.0961873531341553,-0.0138489585369825,0.1502670645713806,0.2489348948001862,-0.1887987405061722,0.2666619420051575,-0.1154452785849571,0.0820531323552132,-0.0129997190088034,0.0963720157742500,-0.0252925604581833) * MODEL23_texOff(vec2(-1,0)); +res += mat4(-1.3609907627105713,-0.0742893442511559,-0.0125409606844187,-0.0056720492430031,0.0778579562902451,0.0618307478725910,0.1911646276712418,0.0333926491439342,0.6612700819969177,-0.0953298956155777,-0.2552929818630219,0.1396622061729431,-0.1745201647281647,0.0346113406121731,0.1850840449333191,0.0185419023036957) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.3591235578060150,0.2359590530395508,-0.2886492311954498,0.0527037158608437,-0.1544393002986908,0.0854820013046265,0.1401815116405487,-0.1968982666730881,-0.1077311411499977,-0.0662739872932434,0.0243663974106312,-0.0608084313571453,-0.1768577247858047,0.0570018291473389,0.2061744332313538,0.0576052591204643) * MODEL21_texOff(vec2(-1,1)); +res += mat4(-0.0572265945374966,-0.0552289001643658,0.1011031270027161,0.1035296767950058,-0.0300345961004496,-0.1117853671312332,-0.0263337921351194,0.0094234542921185,0.1769479662179947,-0.0179979670792818,0.1946553289890289,-0.0712494775652885,-0.2151643931865692,-0.0934141129255295,-0.4591092169284821,0.1333216726779938) * MODEL22_texOff(vec2(-1,1)); +res += mat4(-0.0737016946077347,-0.1227276995778084,-0.1683048903942108,-0.0236847456544638,0.1358708888292313,0.0047147679142654,-0.0391176939010620,-0.1973716020584106,0.0702386870980263,0.0448955483734608,-0.0558337457478046,-0.0901165679097176,-0.2186353653669357,0.0084573915228248,0.0841164141893387,0.0704563483595848) * MODEL23_texOff(vec2(-1,1)); +res += mat4(0.0492553226649761,-0.0671901404857635,0.0388167165219784,-0.0680868476629257,0.1270323693752289,-0.0159644298255444,-0.1079521402716637,0.0222510322928429,0.3358281254768372,-0.1708553582429886,-0.1252177208662033,0.0763640031218529,0.1933518797159195,-0.0705295801162720,-0.3656790852546692,-0.0959990024566650) * MODEL24_texOff(vec2(-1,1)); +res += mat4(-0.1263016015291214,0.0133211184293032,0.0842036530375481,0.0142416367307305,-0.1877359002828598,-0.3686734437942505,-0.0018322402611375,0.1556163281202316,-0.2742095887660980,0.1279869675636292,0.1694325655698776,-0.0867729112505913,0.0498056113719940,0.1580689102411270,-0.1015132665634155,-0.1334203332662582) * MODEL21_texOff(vec2(0,-1)); +res += mat4(-0.3412644565105438,0.3071808218955994,0.1298775672912598,-0.0151394074782729,-0.1365107297897339,0.0794544816017151,-0.0338835604488850,-0.1141469553112984,0.0488405674695969,-0.1304851919412613,-0.0011596791446209,-0.0413838326931000,-0.1392471194267273,-0.3956683278083801,0.4911434948444366,0.0361462570726871) * MODEL22_texOff(vec2(0,-1)); +res += mat4(0.2449082285165787,-0.4345789253711700,0.4849193692207336,0.8864058256149292,-0.2164106816053391,-0.0341735631227493,0.1066467314958572,0.1131146848201752,0.0052013010717928,-0.6583964228630066,0.2482749819755554,-0.2270440012216568,-0.4508041441440582,0.0308938957750797,-0.1488518714904785,-0.3525811433792114) * MODEL23_texOff(vec2(0,-1)); +res += mat4(-1.1301820278167725,-0.1139227300882339,-0.0902033075690269,-0.0815369635820389,-0.6447158455848694,0.0044209216721356,0.3049816191196442,-0.1885408312082291,0.2548591196537018,-0.1266584843397141,-0.1311751753091812,0.4100277423858643,0.5975887179374695,0.0288057103753090,-1.0636798143386841,0.0248462166637182) * MODEL24_texOff(vec2(0,-1)); +res += mat4(0.2010120749473572,-1.2808847427368164,-0.7578352689743042,0.1681615263223648,-0.1318595111370087,0.2353363186120987,0.0309769660234451,-0.1553873419761658,0.4740163087844849,0.1202724725008011,-0.1335061937570572,-0.1300238966941833,0.5667089819908142,-1.3050092458724976,0.3937561810016632,0.0676776319742203) * MODEL21_texOff(vec2(0,0)); +res += mat4(-0.0423373468220234,0.1925407946109772,0.2199071794748306,0.3929440677165985,-0.2842360734939575,-0.0180727411061525,0.1322070807218552,-0.2691322863101959,0.2204505503177643,-0.2613276541233063,0.2861527800559998,0.0240724403411150,0.0266265962272882,-0.0488316640257835,-1.1076385974884033,-0.8230466842651367) * MODEL22_texOff(vec2(0,0)); +res += mat4(0.1157649457454681,-0.5262610912322998,-0.4589408934116364,-0.3231031000614166,-0.1873793303966522,0.1040373072028160,-0.0043132947757840,-0.2475142627954483,-0.4760713875293732,1.0741505622863770,0.3271216154098511,0.3974502682685852,-1.2799012660980225,-0.1491752415895462,-0.0626190677285194,0.3458690643310547) * MODEL23_texOff(vec2(0,0)); +res += mat4(-1.7880072593688965,-0.2957656979560852,0.2039281576871872,0.8241132497787476,0.4561480879783630,-0.1978895813226700,-0.2962991297245026,-0.4750007390975952,0.2250721603631973,-0.2444366663694382,-0.1919652819633484,0.3538269996643066,-0.2579703032970428,-0.0596731863915920,0.4506496787071228,-0.0758553668856621) * MODEL24_texOff(vec2(0,0)); +res += mat4(-0.2363123893737793,-0.2024950683116913,0.4612375795841217,0.0570622235536575,0.0881865248084068,-0.0166694410145283,0.2792043387889862,0.4196121394634247,-0.1977110058069229,-0.2585518658161163,-0.1096482425928116,-0.1421143114566803,-0.3357407450675964,0.4351834952831268,0.0629108995199203,0.0411290898919106) * MODEL21_texOff(vec2(0,1)); +res += mat4(-0.0054646912030876,-0.0600186586380005,0.0738468095660210,0.1228874176740646,0.2729446589946747,0.1031413972377777,-0.0801865309476852,-0.0856407806277275,0.1911747008562088,0.1428168565034866,0.0383216328918934,-0.0306113492697477,0.3450233936309814,0.0242073778063059,-0.1353743970394135,0.2545643746852875) * MODEL22_texOff(vec2(0,1)); +res += mat4(0.1516852378845215,0.1281777173280716,0.0495800264179707,0.0709310695528984,0.4112361371517181,-0.1296079009771347,-0.0835521146655083,-0.0831478238105774,0.3761658966541290,-0.0807763114571571,-0.3550937175750732,0.1545328646898270,-0.1909658759832382,0.3049871027469635,-0.2306296229362488,0.5257671475410461) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.5683341622352600,-0.2224640548229218,-0.1304718255996704,-0.3179947435855865,-0.2497202455997467,0.0933883860707283,-0.0180351864546537,0.3762677609920502,0.4063305258750916,-0.1836601644754410,-0.1099256500601768,0.1693253517150879,0.0693730935454369,-0.1310130953788757,0.5590953826904297,-0.0960289835929871) * MODEL24_texOff(vec2(0,1)); +res += mat4(-0.0448128581047058,0.0955501049757004,-0.0131698353216052,-0.0220590531826019,-0.1163260191679001,-0.1044962033629417,0.2927580773830414,0.0900845080614090,-0.0908898562192917,-0.0140993846580386,-0.1200544610619545,0.0472135804593563,-0.2083983272314072,0.0617266818881035,-0.1182451546192169,0.0665644034743309) * MODEL21_texOff(vec2(1,-1)); +res += mat4(-0.0803786739706993,0.0827859640121460,0.0072462079115212,-0.2093681544065475,-0.1504998654127121,0.1586733907461166,0.0233440455049276,-0.0907380953431129,0.2275118231773376,-0.0361422561109066,-0.1722713708877563,0.0016444522188976,-0.0094037437811494,-0.0401315316557884,0.1533747762441635,0.2347405254840851) * MODEL22_texOff(vec2(1,-1)); +res += mat4(-0.0795541778206825,-0.0415713526308537,-0.5099042057991028,-0.0149333784356713,-0.2474434971809387,-0.0654927119612694,-0.0335343852639198,0.1252077370882034,-0.1952859163284302,0.1456465572118759,-0.0701137110590935,0.0986037403345108,-0.2069234102964401,-0.1180571690201759,-0.0970456451177597,-0.1523316949605942) * MODEL23_texOff(vec2(1,-1)); +res += mat4(-0.2704406976699829,-0.1032495945692062,0.0287192743271589,-0.1506863534450531,-0.0400577299296856,0.2502267658710480,-0.0014179557329044,-0.1011240780353546,0.0739094018936157,-0.1213546693325043,-0.1125583201646805,0.3609499037265778,-0.3276679813861847,0.1689044237136841,0.2304164320230484,-0.0001931495644385) * MODEL24_texOff(vec2(1,-1)); +res += mat4(-0.1978055983781815,0.1357314586639404,0.1586758643388748,-0.0945459157228470,-0.4273775219917297,0.2047612667083740,0.0722427740693092,-0.3048678040504456,0.6182712316513062,-0.1360633820295334,-0.0148682333528996,-0.0552632026374340,0.0355981625616550,0.0679149776697159,0.4708693623542786,-0.0924237072467804) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.1895539909601212,0.0620631873607635,0.1083511039614677,0.0031299949623644,0.0098341582342982,0.1454111188650131,-0.0994552299380302,0.2133522182703018,0.4204807877540588,0.1561957448720932,0.0839771330356598,0.0947130024433136,-0.2763549685478210,0.4134998917579651,-0.3971848785877228,-0.0562333762645721) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.1201812475919724,-0.0794004648923874,0.2589171230792999,-0.2570854723453522,-0.0500254817306995,-0.1267163306474686,0.0093950657173991,0.2073075473308563,-0.1715992838144302,-0.5256302356719971,-0.0471544377505779,-0.2598889470100403,0.3023664951324463,-0.3980978429317474,0.1450010985136032,-0.1947911083698273) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.6694424748420715,-0.0984072983264923,-0.0158487502485514,-0.0387963205575943,-0.0327408984303474,-0.1224467456340790,-0.2588094174861908,-0.4945738017559052,-0.0965986251831055,-0.2402145564556122,-0.1900290995836258,0.4495627582073212,0.3433674573898315,0.1855849176645279,0.2503889203071594,0.2258707880973816) * MODEL24_texOff(vec2(1,0)); +res += mat4(-0.1427439004182816,0.0232400503009558,0.0614709183573723,-0.0313369631767273,-0.2033404409885406,0.1010737940669060,-0.3053102195262909,-0.1093115955591202,0.1278154850006104,0.0462433546781540,0.2780232727527618,0.1207928806543350,-0.0630893185734749,0.1609147638082504,-0.3244910240173340,0.0420972406864166) * MODEL21_texOff(vec2(1,1)); +res += mat4(0.0540682710707188,0.0489707849919796,0.1434160768985748,-0.0263705123215914,0.3189105987548828,-0.0194563362747431,-0.0015234283637255,-0.1185838729143143,-0.1406057775020599,-0.0664507374167442,0.1184594258666039,0.0576133131980896,-0.0515225417912006,-0.1751619428396225,0.5659244060516357,-0.1315055191516876) * MODEL22_texOff(vec2(1,1)); +res += mat4(0.0292246416211128,-0.0583971366286278,0.0184998158365488,-0.0616783015429974,-0.1326405405998230,0.0737697705626488,0.0509051755070686,-0.1636607348918915,0.0829640030860901,0.0984901785850525,-0.0760249570012093,-0.0393353812396526,0.1848428100347519,0.0810922980308533,-0.0835731029510498,-0.1527970433235168) * MODEL23_texOff(vec2(1,1)); +res += mat4(0.1098753735423088,-0.1152176111936569,-0.0297945626080036,-0.0429614298045635,0.3004037737846375,-0.0118061201646924,0.0696947872638702,0.2093984186649323,0.1215613707900047,-0.1341927945613861,-0.0733395144343376,0.1597006767988205,0.1582593768835068,-0.1383092254400253,-0.3920480310916901,0.0803317874670029) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0138328820466995,0.6884090304374695,-0.3778789639472961,0.0335069037973881) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 2_2 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL2 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.1488664448261261,-0.3665277659893036,0.2105678319931030,0.2431615889072418); +res += mat4(-0.0209767278283834,-0.3804727494716644,0.0663711279630661,0.1559448540210724,-0.7823102474212646,0.0327561274170876,0.0540102683007717,-0.1310726553201675,0.1931789815425873,-0.1646288931369781,0.1219010725617409,0.0445458665490150,0.0016282304422930,0.0971931293606758,0.1857922673225403,-0.1043798327445984) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(0.4213770925998688,0.4195652604103088,-0.7362828254699707,-0.0048468001186848,0.0455092750489712,0.0810072496533394,0.0412613227963448,0.1747123897075653,-0.1279432028532028,-0.1154062822461128,-0.1147719696164131,-0.3269986212253571,-0.1911139041185379,0.0527008846402168,-0.0984842479228973,-0.1479913443326950) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(-0.0879788175225258,-0.3954658508300781,0.2055625319480896,0.3015489578247070,0.1120360046625137,-0.1616907417774200,0.0821904093027115,-0.0118853077292442,-0.0370529182255268,0.0719115212559700,-0.1579851806163788,-0.3017398118972778,-0.0244198907166719,0.0105502773076296,-0.0938296243548393,0.0975423976778984) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(-0.0093844309449196,0.0437207221984863,0.0675221458077431,0.1927775293588638,0.2635573446750641,0.2475218921899796,0.0567236356437206,0.0603825785219669,0.1537563800811768,0.0857703611254692,0.2134899497032166,-0.4813969731330872,-0.1290699839591980,0.2495704889297485,0.2372044026851654,-0.0117452535778284) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(0.4083919525146484,0.1783591061830521,-0.0956984385848045,-0.2499091178178787,-1.7284232378005981,-0.4100556671619415,0.1243892982602119,0.0198476538062096,0.2060415297746658,-0.0525438860058784,-0.1886686235666275,-0.0174900069832802,-0.2235226035118103,-0.3373796939849854,-0.2612507343292236,-0.0146219292655587) * MODEL21_texOff(vec2(-1,0)); +res += mat4(0.1432350128889084,0.5602362751960754,-0.5797067284584045,0.2074658870697021,0.0187970548868179,0.0178430322557688,0.0442645438015461,0.0339028500020504,-0.4133535623550415,-0.0538620986044407,0.0512013956904411,0.2325866669416428,0.0893165320158005,-0.3604934513568878,-0.1180035024881363,0.0262325238436460) * MODEL22_texOff(vec2(-1,0)); +res += mat4(0.2469130605459213,0.4839991331100464,0.2031589746475220,-0.2946717739105225,-0.1321040540933609,-0.2264211177825928,0.2053416073322296,0.0078430837020278,0.1857969164848328,-0.2007324248552322,0.0725167244672775,0.1926081627607346,0.2548782527446747,0.0827651545405388,0.2406112551689148,-0.0407047085464001) * MODEL23_texOff(vec2(-1,0)); +res += mat4(0.0828146636486053,0.0865400582551956,0.1932517141103745,0.2175391018390656,0.1142690703272820,0.1374290436506271,0.0615031346678734,-0.0207381490617990,0.1915358901023865,-0.0319920741021633,0.0051920590922236,-0.9361169934272766,0.0073183747008443,0.1199636980891228,-0.0483770743012428,-0.1557808965444565) * MODEL24_texOff(vec2(-1,0)); +res += mat4(0.0676551461219788,0.0048673334531486,-0.1837492138147354,0.4258618056774139,-0.5135343074798584,-0.3120350241661072,-0.0071885827928782,-0.0406319499015808,-0.2463573515415192,0.1431833654642105,0.1748166233301163,-0.0105671910569072,-0.0699452683329582,0.1292552053928375,-0.0014936180086806,0.0179299116134644) * MODEL21_texOff(vec2(-1,1)); +res += mat4(0.2675818502902985,0.2416653037071228,-0.2863791882991791,0.2014812082052231,0.0785021260380745,0.0527739636600018,0.0860331654548645,-0.0324266068637371,-0.1051566079258919,0.1046611443161964,-0.0194833986461163,-0.3063759803771973,-0.0681753531098366,-0.0490408688783646,0.2593856453895569,0.2360491454601288) * MODEL22_texOff(vec2(-1,1)); +res += mat4(0.0276840645819902,-0.1336680799722672,0.0120388455688953,0.0228763688355684,-0.0438108332455158,-0.0796145349740982,-0.0109203783795238,-0.0991106778383255,0.0081140063703060,-0.1780876815319061,0.0395902618765831,0.3544999063014984,0.3345801234245300,0.2487742155790329,0.1700582355260849,0.2577689290046692) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.0195066519081593,-0.0057190088555217,-0.0528206415474415,0.0456047132611275,0.2927095592021942,-0.0287597328424454,-0.0689215958118439,-0.0735881552100182,0.2405999749898911,0.0682441517710686,0.0884225219488144,-0.7075817584991455,-0.0792603269219398,0.0144493831321597,-0.0936887264251709,0.0407843478024006) * MODEL24_texOff(vec2(-1,1)); +res += mat4(0.2638292014598846,0.1321179270744324,-0.3282649219036102,0.1449954211711884,-0.1059715524315834,-0.4213337600231171,0.0888387262821198,0.0785648524761200,0.5093721151351929,0.2934474349021912,0.2116974741220474,0.1434847712516785,0.0233318489044905,0.0169317442923784,-0.3048302829265594,0.3552511930465698) * MODEL21_texOff(vec2(0,-1)); +res += mat4(-0.0006108223460615,-0.8525040149688721,0.2292312681674957,0.0670521706342697,0.1908545941114426,0.1113816425204277,0.0131995510309935,0.4049734771251678,-0.1704349219799042,-0.1992454230785370,0.1286296993494034,-0.4365665912628174,0.5170667171478271,-0.2130605578422546,-0.3376957476139069,0.2425667643547058) * MODEL22_texOff(vec2(0,-1)); +res += mat4(2.6007122993469238,-0.4045737981796265,0.2440708875656128,-0.6878179907798767,-0.1587067693471909,-0.0362795069813728,-0.2442864775657654,-0.1149008274078369,-0.0489179715514183,-0.0458397902548313,0.1453526914119720,0.3821898400783539,-0.2518219053745270,0.0271638035774231,0.1576943546533585,-0.0347718335688114) * MODEL23_texOff(vec2(0,-1)); +res += mat4(-0.2895047068595886,-0.2282049357891083,0.2446162104606628,0.1061088964343071,0.0080963568761945,-0.0599781461060047,-0.3279895484447479,0.0812600925564766,0.1272254437208176,0.0560115240514278,-0.1846324354410172,-0.9808861017227173,-0.1482340842485428,0.8221842646598816,0.0221485923975706,0.0719476789236069) * MODEL24_texOff(vec2(0,-1)); +res += mat4(0.0339426398277283,0.5930976867675781,0.2564468383789062,0.1119002699851990,0.8898367881774902,-0.6156752109527588,0.1269108504056931,-0.2929377555847168,1.0610867738723755,-0.3349628746509552,-0.4281881153583527,0.0377563461661339,-0.2603005468845367,-0.3311541676521301,1.0532506704330444,-0.7641850113868713) * MODEL21_texOff(vec2(0,0)); +res += mat4(0.2146379500627518,0.2676785290241241,-0.7391330599784851,0.1521523594856262,-0.2685771882534027,0.2021048963069916,0.0981994196772575,0.2597109377384186,-0.4331949949264526,0.3671139180660248,-0.1601590961217880,-0.2596710324287415,-0.1365760862827301,0.3456763625144958,0.0260859876871109,0.1499751359224319) * MODEL22_texOff(vec2(0,0)); +res += mat4(-0.4414543509483337,0.1875744611024857,-0.6906532049179077,0.1743199676275253,-0.6289122104644775,-0.4084732234477997,0.3361287415027618,-0.0457460992038250,0.5822556614875793,0.5126429796218872,0.3484890460968018,-1.2192883491516113,0.4538821578025818,-0.0073624793440104,-0.2771317660808563,-0.2402551472187042) * MODEL23_texOff(vec2(0,0)); +res += mat4(-1.3552881479263306,-0.0462988875806332,-0.9949124455451965,0.3322547674179077,-0.6281521320343018,-1.0690743923187256,0.0267870500683784,0.0392859280109406,0.3305831849575043,-0.0056408219970763,-0.1609006524085999,-1.7105754613876343,-0.3269245028495789,-1.0086795091629028,-0.4690948128700256,0.4611120522022247) * MODEL24_texOff(vec2(0,0)); +res += mat4(0.2988446652889252,0.3127099275588989,0.0188631992787123,-0.1760921627283096,-0.1780847012996674,-0.4430866837501526,-0.2036319524049759,-0.1021577641367912,-0.8201317191123962,0.1630726456642151,-0.0020800509955734,0.0576628297567368,0.1705153137445450,-0.1894215494394302,0.0107206311076880,0.1925764083862305) * MODEL21_texOff(vec2(0,1)); +res += mat4(0.2376920729875565,0.3652732074260712,-0.2681298553943634,-0.0732383355498314,0.1779675185680389,0.0073725385591388,0.1464152187108994,0.2233835905790329,-0.0569469146430492,-0.1233587786555290,0.0616926848888397,-0.1734538525342941,-0.0847201347351074,0.0654263123869896,-0.4428806006908417,-0.0111119458451867) * MODEL22_texOff(vec2(0,1)); +res += mat4(-0.1337117999792099,-0.0917584300041199,-0.3312341570854187,0.1923831552267075,-0.4488549530506134,0.0056631849147379,-0.1590194851160049,0.0815478563308716,0.1391742974519730,0.0849350765347481,0.2781904041767120,-0.0765718370676041,0.3601172864437103,-0.0282259564846754,-0.4200063049793243,0.0093057192862034) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.4692421853542328,-0.0067639327608049,-0.8812321424484253,0.1007703617215157,0.1055886894464493,-0.1098278909921646,-0.2009087353944778,-0.0958641320466995,0.2970055639743805,0.0348862037062645,0.0272636990994215,-0.9529185891151428,0.1262121647596359,0.1741883754730225,0.0202931892126799,-0.2663290202617645) * MODEL24_texOff(vec2(0,1)); +res += mat4(0.1469807624816895,0.1303935497999191,0.0896321758627892,-0.2362475395202637,0.0948089957237244,-0.0777317211031914,0.2014655768871307,-0.2769223749637604,0.0730939731001854,0.0609405860304832,0.1171776428818703,0.0423140898346901,0.1374751031398773,0.0574923083186150,-0.1033022776246071,-0.0672734901309013) * MODEL21_texOff(vec2(1,-1)); +res += mat4(0.3127930760383606,0.0793014988303185,-0.0861674025654793,-0.1551166921854019,-0.0192798860371113,-0.1602066755294800,0.3099381327629089,0.3853404819965363,0.0630520731210709,-0.2478599399328232,0.1548751145601273,0.1398821473121643,-0.0075504593551159,-0.3303685188293457,0.0874341651797295,-0.5678073763847351) * MODEL22_texOff(vec2(1,-1)); +res += mat4(0.8626602888107300,0.6299208402633667,0.3481609225273132,-0.3566454052925110,0.2352108210325241,0.0871835052967072,-0.1579112708568573,-0.1360978931188583,-0.0546774789690971,0.0105291418731213,0.1289151459932327,-0.2137751281261444,-0.5862585902214050,-0.1872048676013947,0.1039593741297722,-0.1749892830848694) * MODEL23_texOff(vec2(1,-1)); +res += mat4(0.0250483658164740,0.0839775055646896,-0.0152837857604027,0.0708492994308472,0.0369295068085194,0.1913179159164429,0.0859351307153702,0.2727108597755432,0.2288390547037125,0.0523356795310974,0.0111408699303865,-0.8543776273727417,0.1787012219429016,0.0148324538022280,-0.0245518311858177,0.1681433320045471) * MODEL24_texOff(vec2(1,-1)); +res += mat4(-0.0239319372922182,-0.4354290962219238,-0.2683517038822174,-0.1997521072626114,0.4122439026832581,0.1550730317831039,-0.3221629261970520,-0.1298160254955292,0.0950022935867310,0.2507815361022949,-0.0881524011492729,-0.0639841631054878,0.2319356501102448,-0.6966038346290588,-0.0397054664790630,0.4412520229816437) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.1208788603544235,-0.0198400486260653,0.0076595889404416,0.2348303049802780,-1.1361124515533447,-0.4350675642490387,0.0239142440259457,0.3064677715301514,-0.3484390974044800,-0.5301837325096130,0.1611283421516418,0.2733446359634399,-0.2087745666503906,-0.0077716144733131,-0.3304704725742340,0.0962273627519608) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.0936548337340355,-0.0465661548078060,-0.5533027648925781,0.0699570327997208,-0.4536454379558563,-0.2327289283275604,-0.0652478486299515,0.0300565119832754,-0.2186639010906219,-0.0268815066665411,-0.1598256528377533,0.1521155685186386,0.0351926349103451,0.0382955521345139,-0.0934746935963631,-0.0356465578079224) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.5175559520721436,-0.2126751840114594,-0.8077430129051208,0.1647069752216339,-0.6812220811843872,0.4328734874725342,0.1401884406805038,-0.0622220039367676,0.1508309245109558,0.1850917786359787,-0.3344543278217316,-1.2550662755966187,0.1219360232353210,0.0785530507564545,0.3424720764160156,0.1394288837909698) * MODEL24_texOff(vec2(1,0)); +res += mat4(0.1494058966636658,-0.0262660067528486,0.1069759577512741,-0.1044483631849289,0.1752733886241913,-0.1177315935492516,-0.1014335229992867,0.0606800317764282,-0.1761364489793777,-0.2150237411260605,-0.0211684145033360,-0.0490109845995903,0.0894560739398003,0.1764076948165894,0.0660840347409248,-0.2252688407897949) * MODEL21_texOff(vec2(1,1)); +res += mat4(0.1909719705581665,0.2775556147098541,0.0468198619782925,0.1209030076861382,0.2390864342451096,0.0357237868010998,0.0170792061835527,0.3361988067626953,0.0989573746919632,-0.0619680508971214,-0.0968791320919991,0.2800474464893341,0.1319000422954559,-0.1231441274285316,0.0501711182296276,0.0618691183626652) * MODEL22_texOff(vec2(1,1)); +res += mat4(-0.1873787045478821,-0.2900189459323883,-0.1443230956792831,-0.0696712806820869,0.0206835996359587,0.1998709142208099,-0.2105196118354797,0.1657706499099731,0.0755774602293968,-0.0921563357114792,-0.0388352870941162,0.0177477933466434,-0.0317857898771763,-0.0110247610136867,0.4244059026241302,-0.2647388577461243) * MODEL23_texOff(vec2(1,1)); +res += mat4(-0.0794162675738335,-0.0399710051715374,-0.6511958837509155,0.0573051460087299,-0.2584303915500641,-0.1717665195465088,-0.0519161112606525,-0.2069894224405289,0.0579880736768246,-0.0119817890226841,-0.0570329166948795,-0.8578505516052246,0.4742889106273651,0.0761649161577225,-0.0809451341629028,0.2192245572805405) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0941418558359146,0.3569962680339813,0.1796773225069046,0.1741173118352890) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 2_3 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL3 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.0066682859323919,0.1202210560441017,0.3046946525573730,0.2505163252353668); +res += mat4(0.0290132965892553,-0.0188452024012804,-0.1533977836370468,-0.1067951619625092,0.1700883209705353,0.0818259268999100,0.0889855772256851,-0.1758281886577606,-0.0270557105541229,-0.1933409571647644,-0.1522650718688965,-0.0245281904935837,-0.0318037793040276,0.0060473526827991,-0.0713956132531166,-0.0529519394040108) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(-0.1215844452381134,-0.1604707986116409,-0.2217374145984650,0.4647205770015717,0.0720433965325356,0.0238498337566853,0.2154294699430466,-0.8106933832168579,-0.0166082810610533,0.0123423933982849,0.2943998873233795,0.2643729746341705,0.2178313732147217,-0.1877526938915253,-0.1607087999582291,0.0817975848913193) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(0.0348120294511318,-0.1505140215158463,0.0392659530043602,-0.0591855719685555,-0.0842739567160606,-0.0755315199494362,-0.0566308349370956,0.1370046138763428,-0.0768655911087990,0.0127081945538521,0.0006222645752132,0.0295355357229710,0.0345451831817627,-0.0244563166052103,-0.0628556981682777,-0.2384018152952194) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(0.0132616572082043,-0.0431224741041660,0.1906826943159103,0.1017528772354126,0.0688100457191467,-0.0935687795281410,0.3243868649005890,-0.0203835107386112,0.0052955681458116,0.0479177162051201,0.1202547252178192,-0.1763626188039780,-0.0186099298298359,0.0209609139710665,0.3737168312072754,-0.1119295731186867) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(0.5388159751892090,-0.2135659754276276,-0.2266898304224014,-0.2475482523441315,0.1198944225907326,-0.4396203756332397,-0.3164595961570740,-0.4326503574848175,0.1382073909044266,0.2324950248003006,0.3956564962863922,0.1629193872213364,0.2198685258626938,0.0606291443109512,-0.2473667860031128,0.1646345555782318) * MODEL21_texOff(vec2(-1,0)); +res += mat4(-0.2376261204481125,-0.3529677093029022,-0.9142848849296570,0.1806028783321381,-0.1755564510822296,-0.1039216816425323,0.1525559425354004,-1.3849759101867676,-0.0138412853702903,-0.1475173383951187,-0.0225327052175999,-0.2495775520801544,-0.2196561694145203,-0.1701721996068954,0.5651873350143433,-0.1366901248693466) * MODEL22_texOff(vec2(-1,0)); +res += mat4(0.1812306195497513,0.2870511710643768,-0.8379774689674377,-0.3259818851947784,0.0109941521659493,0.0240284819155931,0.0813926085829735,-0.2351125031709671,-0.0976382493972778,-0.2823610603809357,-0.2308166474103928,0.2114551961421967,0.0991419255733490,-0.0750869885087013,-0.1149587109684944,0.1740831583738327) * MODEL23_texOff(vec2(-1,0)); +res += mat4(0.1131239160895348,-0.0061346525326371,-1.4211069345474243,-0.4551773071289062,-0.0855798870325089,-0.0124564077705145,-0.2818833887577057,-1.0334341526031494,-0.0967212393879890,0.1651065349578857,0.0023735912982374,0.1059542447328568,-0.0494578145444393,0.2192097008228302,-0.0975484251976013,0.0254097152501345) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.4793096184730530,-0.3400304615497589,0.0551011599600315,-0.3136283159255981,0.0980083495378494,0.0143072502687573,-0.0419476479291916,0.1841769665479660,-0.0337203964591026,0.0428854264318943,-0.1797774732112885,-0.0146793983876705,-0.1857822090387344,-0.0159035604447126,0.1136668846011162,-0.0135319530963898) * MODEL21_texOff(vec2(-1,1)); +res += mat4(-0.1619209200143814,-0.3122106194496155,-0.1499443352222443,0.3182814419269562,0.1222203820943832,-0.1094487309455872,-0.1626464426517487,-0.2342467904090881,0.3386610448360443,0.2449438124895096,0.2991871237754822,0.6013329029083252,-0.0282594580203295,0.0483290478587151,-0.3856660127639771,0.0446886047720909) * MODEL22_texOff(vec2(-1,1)); +res += mat4(0.0056901825591922,0.0512946397066116,-0.1859404593706131,0.1390966922044754,0.1050675287842751,0.1182925850152969,-0.0403152741491795,0.0605711564421654,0.1724978089332581,-0.0263700466603041,0.0577792413532734,-0.0812572687864304,-0.2954929471015930,0.0696404129266739,-0.1038054004311562,-0.1730726063251495) * MODEL23_texOff(vec2(-1,1)); +res += mat4(0.0609802417457104,0.3091067373752594,-1.2640422582626343,-0.0934868305921555,0.0553861148655415,0.1677501052618027,-0.1159948334097862,0.0338112302124500,-0.1220021098852158,-0.0119204642251134,0.4659876823425293,-0.1226724609732628,0.0620302595198154,0.0658627673983574,-0.1589452624320984,-0.1176110357046127) * MODEL24_texOff(vec2(-1,1)); +res += mat4(0.1108018830418587,-0.0295175444334745,0.1724258214235306,0.1165243387222290,-0.1271227449178696,-0.0690366327762604,0.0256086662411690,-0.0561957322061062,0.1214720308780670,-0.1521558165550232,-0.3580622076988220,-0.2178569287061691,-0.0343545377254486,-0.0489014983177185,-0.0935015529394150,-0.3787882030010223) * MODEL21_texOff(vec2(0,-1)); +res += mat4(-0.2200368344783783,-0.0983062386512756,0.1177969723939896,0.2765811085700989,0.0608604773879051,-0.0291329734027386,0.3812954127788544,-1.2877732515335083,-0.1201128140091896,-0.3451268374919891,0.2535594403743744,0.5281679630279541,-0.4405971169471741,-0.1572794616222382,0.2344320267438889,0.0894578993320465) * MODEL22_texOff(vec2(0,-1)); +res += mat4(-0.0361681021749973,0.5539910793304443,0.5104171037673950,0.3096115291118622,-0.0892805382609367,0.0291877482086420,0.0916282385587692,0.2968068122863770,0.0921689122915268,0.2749517261981964,-0.4967111945152283,-0.1605041027069092,0.0680588185787201,-0.1536256372928619,-0.4558827877044678,0.5897802114486694) * MODEL23_texOff(vec2(0,-1)); +res += mat4(-0.0047689182683825,-0.2312191873788834,0.0009415594977327,0.2574448585510254,0.1399297416210175,-0.0306464172899723,0.4498404860496521,-0.2827948927879333,-0.0281588006764650,-0.0402123257517815,0.5185984373092651,0.3226799964904785,0.0689876750111580,0.1460169106721878,-0.5434475541114807,-0.5083435177803040) * MODEL24_texOff(vec2(0,-1)); +res += mat4(-0.2525883018970490,0.1703216880559921,-0.4818914532661438,0.4096133112907410,-0.2682815790176392,0.3717361688613892,0.3698177039623260,0.2319176048040390,-0.0655022040009499,0.4077894985675812,0.2445998191833496,-0.0773120895028114,0.5059666633605957,0.8733859658241272,-0.4637008309364319,0.2281443625688553) * MODEL21_texOff(vec2(0,0)); +res += mat4(0.0117727974429727,-0.3128577470779419,-0.2089310139417648,0.5525887012481689,-0.0280407276004553,-0.2635460495948792,-0.4444211721420288,-2.3140270709991455,0.1044904366135597,-0.4133822619915009,0.5928612947463989,-0.2180936783552170,1.1765084266662598,0.5144562721252441,0.4285456836223602,-0.4101267755031586) * MODEL22_texOff(vec2(0,0)); +res += mat4(0.6317111849784851,-0.2674438357353210,-0.4763470888137817,0.2370125800371170,-0.3426514565944672,0.6665347814559937,-0.1387838274240494,0.2744057476520538,-0.4305954575538635,-0.4799051582813263,0.2968683242797852,-0.2656145393848419,-0.0720861256122589,-0.2917108535766602,-0.2012223005294800,0.4298218786716461) * MODEL23_texOff(vec2(0,0)); +res += mat4(0.7652570605278015,-0.4442400932312012,-1.9730776548385620,-0.4957124590873718,-0.4321589171886444,-0.1306711137294769,-0.3108777999877930,0.1393012106418610,-0.3097234070301056,-0.1121014952659607,-0.1184069886803627,0.0876741930842400,-0.2437544167041779,-1.0382152795791626,0.3805285692214966,0.3978357017040253) * MODEL24_texOff(vec2(0,0)); +res += mat4(-0.2273610830307007,-0.1658958941698074,-0.2111845761537552,-0.1289273947477341,0.2267702966928482,0.0840075314044952,-0.1557343006134033,-0.1759068369865417,0.3195409774780273,-0.2773442268371582,-0.3100412487983704,-0.1754461228847504,-0.3303289711475372,-0.3503413498401642,0.2393816858530045,-0.1590999513864517) * MODEL21_texOff(vec2(0,1)); +res += mat4(-0.3217451274394989,-0.1748124808073044,0.3970140218734741,0.2459747195243835,-0.1000586524605751,-0.0321493037045002,-0.3445504605770111,-0.4839210212230682,0.2975541353225708,0.2202562689781189,0.6160834431648254,0.2920646071434021,-0.3151476979255676,-0.1247873678803444,-0.4011890888214111,0.0199267379939556) * MODEL22_texOff(vec2(0,1)); +res += mat4(-0.1417886763811111,0.0123265227302909,-0.2584630250930786,-0.0164458341896534,0.3121669590473175,0.0723152831196785,-0.0524155721068382,0.0893669053912163,0.3630716502666473,0.7337093949317932,-0.4140587449073792,0.0647370442748070,-0.5781412720680237,0.7325563430786133,0.7431692481040955,-0.0231557507067919) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.0520879700779915,-0.0348345451056957,-1.5661777257919312,0.3947445154190063,0.1748250424861908,-0.1960754543542862,-0.2971701025962830,-0.0221235621720552,-0.1597236245870590,0.0704871267080307,0.0796882435679436,-0.1891844868659973,0.1158331558108330,0.0322225056588650,0.0540029183030128,-0.1276303082704544) * MODEL24_texOff(vec2(0,1)); +res += mat4(0.0334619022905827,0.0928742587566376,-0.1305006146430969,-0.0028848932124674,-0.0838772431015968,-0.0054304334335029,0.1435932815074921,0.1332150846719742,0.0396108888089657,0.0999704077839851,-0.0642382949590683,-0.1394932121038437,-0.0994569361209869,-0.1198409125208855,0.1582884788513184,0.2221760302782059) * MODEL21_texOff(vec2(1,-1)); +res += mat4(-0.1408305019140244,-0.0921994820237160,0.2596518695354462,0.1239631921052933,0.0281823500990868,0.1066832020878792,-0.0844504386186600,-0.0636380910873413,0.0503867603838444,0.0480992868542671,0.2414136976003647,0.2044187188148499,-0.1391227096319199,0.0104366149753332,-0.0188095178455114,0.1703838258981705) * MODEL22_texOff(vec2(1,-1)); +res += mat4(0.0029042097739875,-0.2371903955936432,0.3780680000782013,-0.5323799848556519,0.0140476590022445,-0.1495406031608582,0.2071592658758163,-0.0084102991968393,-0.2589507997035980,-0.0764100030064583,-0.0055115716531873,-0.0274913627654314,-0.0275828577578068,-0.0740682631731033,-0.2882716059684753,-0.4000352919101715) * MODEL23_texOff(vec2(1,-1)); +res += mat4(0.0340863130986691,-0.0282875075936317,0.3615622520446777,-0.0057205650955439,0.1357596814632416,-0.0411523021757603,-0.1364872008562088,-0.0118581736460328,-0.1352293491363525,-0.0483191721141338,0.1568620949983597,0.0946996882557869,-0.0662061497569084,-0.0988727882504463,0.4928822815418243,0.2401342391967773) * MODEL24_texOff(vec2(1,-1)); +res += mat4(-0.1097468510270119,0.1942698657512665,0.0040931529365480,-0.0400064811110497,-0.3087880611419678,-0.2598313987255096,-0.0051750377751887,-0.0650142654776573,0.1402599811553955,0.2281410545110703,0.1578211188316345,0.1005987673997879,0.1452177911996841,0.0173886064440012,0.1351331919431686,0.2313813120126724) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.1577404886484146,-0.0305066294968128,0.2379322499036789,0.0308942031115294,0.0830573365092278,-0.3151981532573700,-0.3253603279590607,0.2475974857807159,0.0443270653486252,-0.0193476825952530,0.1386305242776871,-0.0373829044401646,-0.2579297125339508,-0.1532946974039078,0.2150248140096664,0.4174665212631226) * MODEL22_texOff(vec2(1,0)); +res += mat4(0.1439764350652695,0.3407106995582581,-0.0615493319928646,0.0023591942153871,0.2019049525260925,-0.3147303462028503,0.1363119632005692,-0.2246542721986771,0.1331851333379745,0.0677685439586639,0.1401423066854477,-0.1164609342813492,-0.0428065992891788,-0.1498794257640839,0.3509467840194702,-0.4461643397808075) * MODEL23_texOff(vec2(1,0)); +res += mat4(0.1535163968801498,-0.1193488463759422,-0.1260807812213898,0.3858011662960052,-0.0790592283010483,0.6075788736343384,-0.3078390657901764,-0.1092664450407028,-0.3794676065444946,-0.0701059028506279,0.3518251180648804,0.5549364686012268,0.0932475775480270,0.3079295456409454,-0.1271117478609085,0.2804728448390961) * MODEL24_texOff(vec2(1,0)); +res += mat4(-0.0260474067181349,-0.0398008786141872,0.1998758912086487,-0.1780950576066971,0.0013479664921761,-0.0123051870614290,-0.0901704356074333,-0.1598365753889084,-0.0321404710412025,0.1329830288887024,0.0247267540544271,0.0441971644759178,-0.0566960573196411,0.0255114361643791,0.0987359061837196,-0.1076177731156349) * MODEL21_texOff(vec2(1,1)); +res += mat4(-0.1944607496261597,0.0444287993013859,0.2728273272514343,-0.1345956027507782,-0.2663154602050781,0.0077556986361742,-0.1447391659021378,0.1522699445486069,0.1935738772153854,0.0280280169099569,0.2472678124904633,0.2790086269378662,0.1250506043434143,0.1299894750118256,0.0860879197716713,-0.2023737132549286) * MODEL22_texOff(vec2(1,1)); +res += mat4(0.0107089392840862,0.0757343471050262,0.0578177720308304,0.1139081716537476,-0.0010778970317915,0.0142402015626431,-0.0777464210987091,0.0163372829556465,0.0894660502672195,0.0048105982132256,0.0235740207135677,-0.1469545364379883,-0.2090159952640533,0.0983165726065636,0.0136493127793074,-0.2945146560668945) * MODEL23_texOff(vec2(1,1)); +res += mat4(-0.1292741000652313,-0.1052215844392776,-0.1081540435552597,0.0396977886557579,-0.3071779310703278,-0.1655648797750473,-0.1314524263143539,0.1864617764949799,-0.1990943998098373,0.0167746078222990,0.1467040926218033,-0.1280262768268585,0.0534911192953587,0.0058396384119987,-0.0083683151751757,0.3378030657768250) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.0175827611237764,0.7972076535224915,0.0112308701500297,0.0626640766859055) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 2_4 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL4 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.2618981599807739,-0.0272141322493553,0.1978147178888321,0.1838742196559906); +res += mat4(0.3203423619270325,-0.2375466823577881,-0.2311870753765106,-0.1404046118259430,-0.1116818562150002,0.0169112384319305,0.0177364815026522,0.1829731315374374,0.2324923574924469,-0.1492699533700943,-0.0345585308969021,-0.0732511207461357,-0.0768176317214966,-0.1181547865271568,-0.0554209016263485,-0.0583907887339592) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(0.0807724073529243,-0.2254235148429871,0.6873410344123840,-0.1763365268707275,-0.1449452489614487,0.0189746413379908,0.2269700616598129,0.0883083790540695,0.0470402911305428,0.6898033022880554,0.1623040437698364,0.1642086803913116,-0.4184429645538330,0.0878895595669746,0.0678840875625610,0.2335358411073685) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(0.2088841348886490,0.7400224208831787,0.3838779926300049,-0.8565384149551392,-0.0261555053293705,0.2415239810943604,0.0058844261802733,0.0311756990849972,-0.0710533335804939,-0.0517776943743229,-0.2189657688140869,-0.1773550063371658,0.1505380868911743,0.0705150812864304,-0.0917380228638649,0.0854334831237793) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(-0.0700366571545601,0.1746245324611664,0.0463343597948551,0.0256793927401304,-0.0146809378638864,-0.1434955447912216,0.2785597741603851,0.2305340021848679,0.1221156194806099,-0.0462324805557728,0.0756224319338799,0.0408317334949970,-0.0351550802588463,-0.1952673196792603,0.1835533678531647,-0.2333324849605560) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(-1.2905079126358032,-0.0528796203434467,0.3968045711517334,-0.4772018492221832,-0.0381646603345871,-0.0249421130865812,-0.1307162493467331,0.1164818927645683,0.4554768502712250,-0.1476756036281586,-0.1412851959466934,-0.0609309300780296,-0.0039473162032664,0.4662524461746216,-0.0444753281772137,0.3187219202518463) * MODEL21_texOff(vec2(-1,0)); +res += mat4(0.1611919701099396,-1.3754422664642334,0.0417292863130569,-0.3652147352695465,-0.7307597994804382,-0.0057830205187201,0.0941176116466522,-0.0242457669228315,-1.2055057287216187,0.8820493221282959,0.2724837958812714,0.4328245222568512,0.0721918717026711,-0.0722622349858284,0.1880809962749481,-0.1931017041206360) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.0464881993830204,-0.4977321922779083,0.2844241857528687,-0.1416633129119873,0.2688022851943970,-0.2087855488061905,-0.2219491153955460,0.0513183288276196,0.0243211444467306,0.2198460698127747,0.0974607467651367,0.3570106625556946,0.0461267605423927,0.0820912569761276,0.0386747866868973,0.2782809138298035) * MODEL23_texOff(vec2(-1,0)); +res += mat4(-0.2263965904712677,0.0119835119694471,0.3215164542198181,0.1319056749343872,-0.9058688282966614,-0.4233278334140778,0.1065735742449760,-0.4460813105106354,-0.0695195719599724,-0.2787844240665436,0.1991541534662247,0.0922988504171371,0.0297270491719246,0.1954278051853180,0.0062130275182426,0.0696197226643562) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.1804848313331604,-0.5613523125648499,-0.4550373852252960,-0.5635682344436646,-0.1632910370826721,0.1187769919633865,-0.3213490247726440,-0.2689736485481262,0.0472449734807014,0.1680916845798492,0.0901900678873062,0.2972181141376495,0.0242962017655373,0.1103710904717445,0.1173390373587608,-0.0270986035466194) * MODEL21_texOff(vec2(-1,1)); +res += mat4(0.2393277436494827,-0.5017011761665344,0.2169336676597595,0.2137065231800079,-0.3550960719585419,-0.1301461160182953,0.2405073046684265,-0.0257033314555883,-0.1141087263822556,0.2353459596633911,0.5700230598449707,0.3301207125186920,-0.0793050453066826,0.0170175842940807,-0.3630143404006958,0.3265556097030640) * MODEL22_texOff(vec2(-1,1)); +res += mat4(0.1285964548587799,0.1330558210611343,-0.0416678972542286,0.0528282448649406,0.0764098763465881,0.0281098093837500,-0.0382813438773155,0.0310887284576893,0.1230183392763138,-0.2056455612182617,-0.0828496888279915,-0.1691433936357498,0.0903539285063744,-0.1575526893138885,-0.0784928575158119,0.3540493845939636) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.1338908225297928,-0.0003932896070182,0.3739605545997620,-0.0032687252387404,-0.1752334982156754,0.0500757656991482,0.0544755123555660,-0.0904007703065872,0.1839655041694641,-0.1541325151920319,0.2571626305580139,0.2349375635385513,-0.0411910004913807,-0.0948274806141853,-0.0947207584977150,-0.0618695616722107) * MODEL24_texOff(vec2(-1,1)); +res += mat4(-0.1735517233610153,-0.1884111762046814,0.2472496628761292,0.1157463118433952,0.2316774278879166,0.0809216573834419,0.2136737406253815,0.4023383557796478,-0.2456857562065125,-0.2026455104351044,-0.0837441384792328,0.0047799651511014,-0.0416668429970741,-0.2348129898309708,0.1912510395050049,0.1240000128746033) * MODEL21_texOff(vec2(0,-1)); +res += mat4(0.0986720994114876,0.2302175909280777,-0.5095402002334595,-0.5116504430770874,-0.0159094277769327,-0.2062777131795883,0.2209034711122513,0.1478719562292099,-0.0936135649681091,-0.1403303742408752,-0.5889059305191040,-0.2721848487854004,0.1495044529438019,-0.1733209639787674,-0.1109227463603020,0.1321036368608475) * MODEL22_texOff(vec2(0,-1)); +res += mat4(0.1583139151334763,0.4662604928016663,0.0749393254518509,1.1870090961456299,0.0149827850982547,0.0499051921069622,0.1296198964118958,-0.4785905480384827,-0.0083293160423636,0.2108646929264069,0.0510768666863441,0.2132322490215302,-0.2477501034736633,-0.0111771719530225,-0.0363363474607468,0.2452402263879776) * MODEL23_texOff(vec2(0,-1)); +res += mat4(0.0317361131310463,0.0770889744162560,0.1376695781946182,0.0397783927619457,0.0544366426765919,-0.3385850191116333,0.1112513169646263,0.3020723164081573,0.0754054486751556,0.2211898416280746,-0.0396015644073486,0.0286546442657709,-0.4639288783073425,0.0985592380166054,-0.1409995257854462,0.3716880381107330) * MODEL24_texOff(vec2(0,-1)); +res += mat4(0.5109571218490601,0.9223093390464783,0.1859842389822006,0.2396878600120544,0.2978311181068420,-0.1416329145431519,-0.2947293519973755,-1.4947435855865479,-0.4519229531288147,0.8225970268249512,0.3091182112693787,-0.9985001087188721,0.1723853051662445,0.5456789731979370,-0.2690940797328949,0.8217062354087830) * MODEL21_texOff(vec2(0,0)); +res += mat4(0.1589053571224213,-0.4827378392219543,-0.4693800210952759,-0.8193519711494446,-0.6941610574722290,-1.5228459835052490,-0.7820520997047424,-0.6704961061477661,-0.2171749472618103,-0.8324849009513855,-2.2413654327392578,-1.5074603557586670,-0.2572051286697388,0.1064953729510307,-0.0056538027711213,-0.5387867093086243) * MODEL22_texOff(vec2(0,0)); +res += mat4(0.0391535386443138,-1.4287612438201904,0.2699595987796783,-0.6650040149688721,-0.0988853499293327,0.4216991662979126,0.0637140348553658,0.2098554670810699,-0.8102505207061768,-0.3652212917804718,0.3275896906852722,-0.3590414524078369,-0.2724997997283936,-0.0883407741785049,-0.2451451420783997,-0.8137302994728088) * MODEL23_texOff(vec2(0,0)); +res += mat4(0.1246679127216339,-0.0300861652940512,0.0997866913676262,-0.6487255692481995,0.3512567579746246,0.8345553874969482,0.7273539900779724,0.4227346777915955,0.2933959662914276,-0.1051366180181503,-0.1759402155876160,-0.0114844748750329,0.4016981720924377,0.4352439641952515,-0.0182086061686277,0.3906862735748291) * MODEL24_texOff(vec2(0,0)); +res += mat4(-0.0691076219081879,0.7181659340858459,-0.3326966464519501,0.2068112790584564,0.0007111207232811,0.5322738885879517,0.2143927067518234,0.9343239665031433,-0.0955833941698074,-0.0449995249509811,-0.0059315729886293,-0.5656683444976807,0.0783866345882416,-0.0487202554941177,-0.1274579018354416,-0.6693290472030640) * MODEL21_texOff(vec2(0,1)); +res += mat4(0.0910984128713608,0.0079865092411637,-0.0134474486112595,0.1073060110211372,-0.1281730532646179,-0.5945880413055420,-0.1750696748495102,-0.0824373885989189,-0.1921980082988739,-0.2417781800031662,-1.2219647169113159,-0.3861470818519592,-0.0197522863745689,-0.0422438420355320,0.1084365025162697,0.4388374388217926) * MODEL22_texOff(vec2(0,1)); +res += mat4(-0.0405590273439884,0.3364722132682800,0.0340287163853645,0.5000361800193787,0.0451833792030811,0.7587022185325623,0.3476577103137970,0.1372276842594147,-0.2742692530155182,0.0497781559824944,0.1567011475563049,-0.1736435443162918,0.0604428462684155,0.0313023664057255,0.1569791436195374,0.0404267311096191) * MODEL23_texOff(vec2(0,1)); +res += mat4(0.0518231056630611,-1.0536848306655884,-0.2377561777830124,-1.3607717752456665,-0.3254396021366119,0.0689994841814041,-0.0591381192207336,0.3321301639080048,0.1006338670849800,0.0672427713871002,0.2957704961299896,0.3493945896625519,-0.0940009951591492,-0.2684634625911713,0.5259480476379395,0.2820456326007843) * MODEL24_texOff(vec2(0,1)); +res += mat4(0.0506687946617603,-0.0672884061932564,-0.0947070345282555,-0.0711966156959534,0.0949534848332405,0.1151713877916336,0.1201184391975403,-0.0314808450639248,-0.0706284120678902,-0.1123861744999886,0.1360195577144623,-0.1103572621941566,0.1085182130336761,0.0715388208627701,-0.2147644609212875,-0.1271135061979294) * MODEL21_texOff(vec2(1,-1)); +res += mat4(0.1458884179592133,-0.0483437515795231,0.1487196981906891,-0.1635223925113678,0.0468507856130600,0.2004905343055725,-0.1661941856145859,-0.1715333908796310,0.0405882000923157,0.1016650348901749,-0.3222144246101379,0.0014929913450032,0.1783287972211838,0.1605405360460281,-0.3112948536872864,-0.2211681008338928) * MODEL22_texOff(vec2(1,-1)); +res += mat4(-0.3449542224407196,-0.2643767893314362,-1.2442095279693604,-0.0055516464635730,-0.0290109291672707,-0.0531168505549431,-0.0100549366325140,-0.0421273186802864,0.0406958609819412,-0.1173181459307671,-0.0954332947731018,0.0343313068151474,-0.1324431598186493,-0.0029157740063965,0.0493107922375202,0.2932595610618591) * MODEL23_texOff(vec2(1,-1)); +res += mat4(0.0597545318305492,0.0579895004630089,0.0330565869808197,0.0266821533441544,0.2274957150220871,-0.1440460830926895,0.0706733837723732,0.1258082687854767,-0.0238740332424641,0.1669197678565979,0.2824452519416809,0.1991728842258453,0.2431868016719818,-0.0821011215448380,-0.0380413234233856,-0.2547401785850525) * MODEL24_texOff(vec2(1,-1)); +res += mat4(-0.0514334328472614,-0.1075393334031105,0.6129282116889954,0.3304093182086945,0.0418562963604927,-0.3380452394485474,-0.1095468625426292,-1.1982278823852539,-0.0091031938791275,-0.3492802083492279,-0.0715793222188950,0.0283715836703777,0.1627623736858368,-0.2478841841220856,-0.1275325268507004,0.0753507539629936) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.0710584446787834,-0.0795726478099823,0.1102423667907715,0.1615608930587769,0.0400473400950432,-0.1247625201940536,-0.8664048910140991,-1.4803600311279297,0.0598112307488918,0.2241897135972977,-1.6030251979827881,-0.1858558803796768,-0.0049995915032923,-0.2061183005571365,0.0831907689571381,-0.3442726135253906) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.1566273719072342,-0.3271358907222748,-0.4640483856201172,-0.2436946779489517,-0.0301623810082674,-0.4387421607971191,-0.4622590243816376,-0.1521215885877609,0.0995048359036446,0.2005099803209305,0.0182304996997118,0.1740360558032990,-0.2895718812942505,0.3530801534652710,-0.4486841559410095,-0.9784322381019592) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.0021386719308794,0.1484365910291672,-0.2306481152772903,-0.2454898208379745,-0.0255514066666365,0.0938307866454124,-0.0233576018363237,0.2101462483406067,0.1627648919820786,0.1235651299357414,0.0506546199321747,0.0221781507134438,0.4662755429744720,-0.2199778258800507,-0.6283662915229797,0.0379081666469574) * MODEL24_texOff(vec2(1,0)); +res += mat4(-0.0182653721421957,0.1785921901464462,0.1522493362426758,0.1736439168453217,-0.0319013446569443,0.1207593083381653,-0.3337399065494537,0.4353213012218475,0.0712353736162186,0.1208399757742882,-0.1030251830816269,0.0402180440723896,-0.1057578176259995,-0.1592700779438019,0.0997642651200294,-0.5390369296073914) * MODEL21_texOff(vec2(1,1)); +res += mat4(0.0597565993666649,0.1085522696375847,0.1351424455642700,0.1795979589223862,0.0740121901035309,-0.4540854692459106,-0.4426850378513336,-0.3672344982624054,0.0618441253900528,-0.0444655306637287,-0.5309899449348450,-0.3420858085155487,0.1326380372047424,0.0735115706920624,0.3639954626560211,0.5657085180282593) * MODEL22_texOff(vec2(1,1)); +res += mat4(-0.0113841835409403,-0.1627709716558456,0.0593168660998344,-0.1079842969775200,0.0340214520692825,-0.2508184015750885,-0.1898239850997925,0.0072992448695004,-0.1270765513181686,0.0241425670683384,-0.1750517189502716,0.0232428964227438,-0.1698446720838547,0.0585229583084583,0.4057764112949371,-0.0506146699190140) * MODEL23_texOff(vec2(1,1)); +res += mat4(-0.0771756023168564,0.0903209969401360,0.0408543720841408,-0.5892044901847839,0.0189124587923288,0.5071246027946472,0.0599331595003605,-0.0512724369764328,0.0913599580526352,0.0496477931737900,0.1396266967058182,0.1325918883085251,0.2898302078247070,-0.1028916388750076,0.0570955872535706,-0.3936383128166199) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0671599730849266,0.2514712214469910,0.0454521626234055,-0.1015913039445877) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 3_1 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!SAVE MODEL21 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0939240753650665,0.1070799157023430,-0.4192370474338531,-0.2009796947240829); +res += mat4(0.1766631752252579,-0.1148459315299988,0.1303748786449432,0.1874862164258957,0.0400640964508057,0.0249448716640472,0.0479296818375587,-0.0451686643064022,0.0400613583624363,0.0721665620803833,0.0162833929061890,0.1299638748168945,-0.1976952701807022,0.1583755314350128,-0.0451218150556087,0.0093258330598474) * MODEL1_texOff(vec2(-1,-1)); +res += mat4(-0.0646747574210167,-0.1131666302680969,0.0774783194065094,-0.1875849664211273,0.1489513665437698,0.0614610463380814,0.0551691800355911,-0.2633447945117950,-0.1215979605913162,0.1179030388593674,0.1464152485132217,0.1342537403106689,-0.1263999640941620,0.0371266864240170,-0.0571325086057186,-0.0951198637485504) * MODEL2_texOff(vec2(-1,-1)); +res += mat4(0.1455701142549515,0.0904433131217957,0.1709385812282562,0.0677307099103928,-0.0468935593962669,-0.0356049574911594,-0.1504066586494446,-0.0919781476259232,-0.0795241743326187,0.0195050779730082,-0.0061774053610861,-0.0350675992667675,0.1814181804656982,0.0052565839141607,0.1122208908200264,-0.0216086618602276) * MODEL3_texOff(vec2(-1,-1)); +res += mat4(0.2275224328041077,-0.1887758970260620,-0.0591825507581234,-0.0255115255713463,0.1821129769086838,-0.0972185358405113,0.1868964433670044,0.0663591623306274,-0.0951612070202827,-0.1931359469890594,-0.1538779437541962,-0.0970020219683647,0.0220909640192986,-0.0459185689687729,-0.2080574631690979,0.0792068094015121) * MODEL4_texOff(vec2(-1,-1)); +res += mat4(0.1789263337850571,-0.0923565179109573,0.0234071612358093,0.2566697895526886,-0.3969378173351288,0.1525186449289322,-0.1570488065481186,-0.1292294859886169,-0.0078855939209461,0.0073424843139946,-0.0253147967159748,0.0776322335004807,-0.3640538454055786,0.0294748172163963,-0.1845595240592957,0.0254504717886448) * MODEL1_texOff(vec2(-1,0)); +res += mat4(0.2526902258396149,0.0658242180943489,0.2199242413043976,-0.2072209119796753,0.1815013438463211,0.3576187491416931,0.1445612013339996,-0.3206026256084442,0.1072679534554482,-0.1361077874898911,0.0916604697704315,0.3789470791816711,0.0989762768149376,-0.0294604822993279,0.0581037811934948,0.0445599481463432) * MODEL2_texOff(vec2(-1,0)); +res += mat4(-0.0093334335833788,0.1357327103614807,0.0280408691614866,0.1034970134496689,-0.2703523635864258,0.1945694833993912,-0.1136413291096687,-0.0291410721838474,-0.0401322692632675,0.0878827199339867,-0.0686209499835968,-0.0557576827704906,0.1943955570459366,0.1612215936183929,0.1887363791465759,0.0070634381845593) * MODEL3_texOff(vec2(-1,0)); +res += mat4(0.3716565668582916,-0.3613735139369965,0.0844924449920654,0.0343478210270405,0.2465848028659821,-0.0314175374805927,0.2159696966409683,0.1732785403728485,-0.0862246528267860,-0.0265530031174421,-0.1918380260467529,-0.1378531157970428,-0.1230628266930580,0.2098480761051178,-0.3888647556304932,-0.2004205882549286) * MODEL4_texOff(vec2(-1,0)); +res += mat4(-0.2449404895305634,0.0653455182909966,0.0135820396244526,0.1158687770366669,-0.0626734495162964,-0.1324901431798935,0.0122612882405519,0.0722110792994499,-0.0592312589287758,0.0290565639734268,-0.0977197289466858,0.0284935012459755,0.1286304742097855,-0.0964016020298004,0.0769306123256683,-0.0453671775758266) * MODEL1_texOff(vec2(-1,1)); +res += mat4(0.0851763933897018,-0.0065216314978898,0.0767411142587662,-0.1651934087276459,-0.0391551367938519,0.0352120287716389,0.0193297695368528,0.0492741614580154,0.4617889821529388,0.1350731998682022,0.1599364131689072,0.3893656432628632,-0.0166238248348236,0.0806706696748734,0.0505172014236450,-0.1259910613298416) * MODEL2_texOff(vec2(-1,1)); +res += mat4(0.0700512304902077,-0.0141933942213655,0.2592144608497620,0.0921078026294708,-0.1485483944416046,-0.0075393421575427,-0.1429287344217300,0.0355093553662300,0.0583429560065269,0.1349573731422424,0.0837503075599670,-0.0213678143918514,0.1826371997594833,0.1823416054248810,0.1543735116720200,-0.0142616210505366) * MODEL3_texOff(vec2(-1,1)); +res += mat4(0.0473574660718441,-0.0411762557923794,0.0556247085332870,0.0216518286615610,-0.0571878999471664,0.0466939695179462,0.0007601453689858,-0.0309802722185850,0.0881771817803383,-0.1278077661991119,0.0275780353695154,0.0055053601972759,0.0258457921445370,0.0533790476620197,0.0462624691426754,-0.0727247446775436) * MODEL4_texOff(vec2(-1,1)); +res += mat4(-0.1539228558540344,0.0128557216376066,-0.2806452810764313,0.2308432459831238,0.0992715358734131,-0.1948739886283875,0.2201962172985077,-0.2213711440563202,-0.1619242280721664,0.0522838011384010,0.1370293647050858,0.0646882131695747,0.1614316850900650,0.0388166792690754,0.2212044149637222,-0.0348678305745125) * MODEL1_texOff(vec2(0,-1)); +res += mat4(0.0057150884531438,-0.3920969069004059,-0.1632852852344513,-0.4735216796398163,-0.2241761088371277,0.1111730188131332,-0.1845528185367584,0.2525207400321960,0.2744160592556000,0.0427548661828041,0.0471794493496418,0.1975667774677277,-0.1709664016962051,-0.0968290343880653,-0.0364571139216423,-0.0123703358694911) * MODEL2_texOff(vec2(0,-1)); +res += mat4(0.3471515178680420,0.0035508037544787,-0.0242346487939358,-0.2053472548723221,0.0366874001920223,-0.1820769309997559,-0.1406559646129608,-0.4743737578392029,0.2084551602602005,-0.0934072062373161,-0.0095417900010943,-0.0922358036041260,0.1286945492029190,-0.1099522709846497,-0.0111708277836442,0.0115120420232415) * MODEL3_texOff(vec2(0,-1)); +res += mat4(-0.2889384031295776,0.0593274906277657,-0.2738704979419708,-0.1730263084173203,-0.3150477707386017,0.0824517607688904,-0.5353992581367493,0.3430648148059845,-0.0943045169115067,0.0704220905900002,-0.3742286264896393,0.1915865242481232,-0.1212448105216026,-0.1403315663337708,-0.2767850458621979,0.0417246297001839) * MODEL4_texOff(vec2(0,-1)); +res += mat4(-0.2087233811616898,0.1168561428785324,0.0238043814897537,0.2219242900609970,0.5486283898353577,-1.1923955678939819,0.7928161621093750,-0.3067701756954193,-0.2462628632783890,0.1201698333024979,-0.0080536343157291,-0.1661250889301300,0.4892369508743286,-0.1491003781557083,0.6520683765411377,-0.9978116750717163) * MODEL1_texOff(vec2(0,0)); +res += mat4(0.0986968204379082,0.1483289748430252,-0.4946940541267395,0.5676410198211670,-0.1753920614719391,-0.0350872278213501,-0.6812604665756226,-0.1051912903785706,0.2388358712196350,-0.2064633965492249,0.0954692140221596,0.3972575068473816,0.0277511160820723,-0.1490469276905060,-0.1304923892021179,-0.0849914923310280) * MODEL2_texOff(vec2(0,0)); +res += mat4(0.3919466137886047,0.2604148387908936,-0.1364194452762604,-0.3725306987762451,0.6220794320106506,0.0711414515972137,0.0487920157611370,0.8275957107543945,0.2210596054792404,0.0889535248279572,-0.1202557981014252,-0.2345736026763916,0.5414448380470276,-0.0852774530649185,-0.0166040845215321,0.4876805841922760) * MODEL3_texOff(vec2(0,0)); +res += mat4(-1.1044557094573975,-0.1582177132368088,0.2023978829383850,-0.2040194123983383,-0.5193357467651367,0.5642085671424866,-1.0636546611785889,0.4562705457210541,-0.1209019646048546,0.0562094524502754,-0.3072849214076996,0.3943085670471191,0.1958889365196228,-0.1018345132470131,-0.3185061514377594,-0.1533579230308533) * MODEL4_texOff(vec2(0,0)); +res += mat4(0.1175472810864449,-0.0106185721233487,0.0317506045103073,-0.0582309067249298,-0.2228898108005524,-0.0492197163403034,0.1172570735216141,-0.0781362503767014,-0.2347405254840851,0.0250689368695021,-0.0337609052658081,0.0258333384990692,-0.2739647924900055,-0.0703237727284431,-0.0301027502864599,-0.1310820728540421) * MODEL1_texOff(vec2(0,1)); +res += mat4(0.0788076817989349,-0.1156876161694527,-0.1305500864982605,-0.4772673845291138,-0.1036096736788750,-0.0186788085848093,-0.0497039295732975,-0.0562514178454876,-0.4980307519435883,0.3032779097557068,-0.2864224612712860,-0.2571246623992920,-0.2961620986461639,0.2024095952510834,-0.2083405703306198,-0.0262568816542625) * MODEL2_texOff(vec2(0,1)); +res += mat4(0.3185229003429413,-0.1336676329374313,0.0055090165697038,-0.0625768750905991,0.0301016960293055,-0.1402244716882706,0.2638555169105530,0.2491406500339508,0.0175193380564451,0.3635352849960327,0.2369791567325592,-0.0125836068764329,0.3937492072582245,0.1693996936082840,-0.0088062463328242,0.2431912273168564) * MODEL3_texOff(vec2(0,1)); +res += mat4(-0.2064793109893799,-0.1411489397287369,-0.3089267611503601,-0.1338297426700592,0.1840019971132278,-0.1287958025932312,0.1202731803059578,-0.2698229253292084,-0.1723199039697647,0.1201079860329628,-0.0454297512769699,0.0911703184247017,0.1651924252510071,-0.0695007964968681,-0.0951692461967468,0.0140034575015306) * MODEL4_texOff(vec2(0,1)); +res += mat4(-0.0351636521518230,-0.3665920197963715,-0.1235053911805153,0.1023030504584312,-0.0568292252719402,-0.1067840829491615,-0.1690988391637802,-0.1293577402830124,0.1123710498213768,0.0593810230493546,0.0756259411573410,-0.0498257279396057,0.2800794541835785,-0.1813902258872986,0.3736729621887207,0.0055663096718490) * MODEL1_texOff(vec2(1,-1)); +res += mat4(-0.0052344598807395,-0.0827632471919060,-0.1968964040279388,-0.1781204640865326,0.1491862088441849,0.0471050664782524,0.2822955846786499,0.0341789536178112,0.0792400613427162,0.0593985691666603,0.0653597190976143,0.0306967999786139,-0.2650067508220673,-0.1417366117238998,-0.0618015266954899,-0.1712649762630463) * MODEL2_texOff(vec2(1,-1)); +res += mat4(-0.1884882450103760,-0.0646363869309425,0.1265687942504883,-0.0198807623237371,0.1710745990276337,-0.1991294920444489,0.2257161587476730,0.0990899652242661,-0.0123038114979863,-0.0604469887912273,0.0861879140138626,0.0514908321201801,0.0632287636399269,-0.0564893335103989,-0.2878070771694183,0.1281028836965561) * MODEL3_texOff(vec2(1,-1)); +res += mat4(0.1748222410678864,0.1559326499700546,0.2274629622697830,-0.2599287927150726,-0.1274228245019913,0.1170183941721916,0.0254840347915888,0.3059220910072327,-0.4317791461944580,-0.2744959294795990,-0.3259294927120209,-0.0761090889573097,-0.1382412314414978,-0.2113056033849716,0.1788181811571121,0.2996733188629150) * MODEL4_texOff(vec2(1,-1)); +res += mat4(0.0582458488643169,-0.2011986672878265,-0.1032724976539612,0.0572311282157898,-0.2976129949092865,0.1335859149694443,-0.1642884314060211,0.0469525307416916,0.1173821613192558,0.0175531003624201,0.0590624660253525,-0.0186468325555325,-0.2939463555812836,-0.0627523511648178,-0.0904852002859116,0.0437535047531128) * MODEL1_texOff(vec2(1,0)); +res += mat4(-1.0379866361618042,-0.0779533982276917,-0.4585119783878326,-0.2419675886631012,-0.1771658360958099,0.2385675758123398,0.4636667668819427,0.2159792035818100,-0.0779691860079765,-0.0443072207272053,0.1458922326564789,0.1625780165195465,-0.0606213472783566,0.2021027803421021,-0.0766457915306091,-0.0725013092160225) * MODEL2_texOff(vec2(1,0)); +res += mat4(-0.1223943233489990,0.0499060340225697,0.2337128371000290,0.0877007842063904,-0.4041709005832672,0.0202713161706924,0.4482367634773254,-0.0970616489648819,-0.2139305770397186,-0.0016079441411421,-0.0643812268972397,-0.1715632826089859,-0.1512379497289658,-0.0972021818161011,-0.4451365768909454,0.1773481220006943) * MODEL3_texOff(vec2(1,0)); +res += mat4(0.1889666616916656,0.1565265655517578,-0.0462163686752319,-0.2980217635631561,-0.2271247357130051,0.2018182426691055,0.0352049097418785,-0.0071235750801861,-0.7249425053596497,-0.1264755576848984,-0.8086061477661133,0.0717744827270508,-0.2927641272544861,0.1403367966413498,0.3376818597316742,0.1329329758882523) * MODEL4_texOff(vec2(1,0)); +res += mat4(0.0950300097465515,0.0221716705709696,0.0456663332879543,-0.1242675408720970,0.2974790930747986,0.1077141836285591,0.0673227831721306,0.0374278537929058,-0.0262136477977037,-0.0091568045318127,-0.0168234482407570,0.1881603151559830,-0.0118044698610902,0.0741767808794975,-0.0131553094834089,0.0480604358017445) * MODEL1_texOff(vec2(1,1)); +res += mat4(-0.1107144579291344,0.0098598729819059,-0.0693243071436882,-0.1960892528295517,-0.0331989787518978,0.1361626088619232,-0.0834455564618111,0.0961192920804024,-0.0686278939247131,0.0854749158024788,0.1144494563341141,-0.0621937587857246,-0.2368322759866714,0.0297667793929577,-0.1093277558684349,-0.0013569450238720) * MODEL2_texOff(vec2(1,1)); +res += mat4(-0.2876231670379639,-0.0896124094724655,-0.2461586445569992,0.0163489244878292,0.0424887128174305,0.0044482382945716,0.1063006594777107,0.0976624488830566,0.2709029614925385,0.1093918979167938,-0.2742790877819061,0.2572947144508362,-0.0381617844104767,-0.0245694518089294,-0.0991176888346672,0.1488055735826492) * MODEL3_texOff(vec2(1,1)); +res += mat4(0.0107373334467411,0.1041472703218460,0.0299074444919825,-0.1995789408683777,-0.0317324884235859,0.0384061299264431,-0.0420682542026043,-0.0465260408818722,-0.1401028484106064,0.1354913264513016,0.0475854165852070,-0.1428409367799759,-0.3365491628646851,-0.1023249477148056,0.1386373341083527,0.2461400628089905) * MODEL4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.0454893484711647,0.6504164338111877,-0.0375871248543262,-0.3642866313457489) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 3_2 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!SAVE MODEL22 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.2766854465007782,-0.0856682732701302,0.4891575574874878,0.0358843207359314); +res += mat4(-0.3082252144813538,0.1421664655208588,-0.0411954857409000,0.1205241158604622,0.2738791704177856,-0.0431190282106400,0.1191648468375206,0.0376528576016426,-0.3940974771976471,-0.0540972277522087,-0.9005880355834961,0.1463838368654251,0.0659264847636223,0.1836163252592087,0.0197399482131004,0.0815236419439316) * MODEL1_texOff(vec2(-1,-1)); +res += mat4(-0.0152115318924189,0.1181607842445374,-0.1681683808565140,-0.0840278565883636,-0.2195560038089752,0.2071736305952072,-0.0520277246832848,-0.2059306502342224,0.0841627866029739,0.1697496175765991,0.0743092000484467,-0.1171413883566856,-0.5985020399093628,0.3979639410972595,-0.3463142216205597,0.0510277226567268) * MODEL2_texOff(vec2(-1,-1)); +res += mat4(-0.0469058454036713,-0.1439702361822128,0.0587836243212223,0.0072227055206895,-0.0203045327216387,-0.1439272016286850,-0.0913980677723885,0.2590387761592865,0.0427818670868874,0.1357506066560745,0.0856071859598160,0.2076624184846878,-0.2039159387350082,0.2199477702379227,-0.0665217041969299,0.1113462895154953) * MODEL3_texOff(vec2(-1,-1)); +res += mat4(0.6119036078453064,-0.2367514520883560,-0.0474185831844807,-0.0738599747419357,0.2150397002696991,-0.1425740569829941,-0.2506031095981598,-0.0127827581018209,0.0595776550471783,0.1329316347837448,0.0184186585247517,-0.1671197712421417,-0.4632082581520081,-0.0973000228404999,0.0642428249120712,-0.1473356187343597) * MODEL4_texOff(vec2(-1,-1)); +res += mat4(-0.1912296116352081,-0.0609239228069782,-0.1602058261632919,-0.0227724649012089,-0.4201372563838959,0.4554587304592133,-0.0227187257260084,-0.0378096066415310,0.1912428140640259,0.0682459622621536,-1.0177114009857178,0.3858880996704102,-0.0226255208253860,0.2118644565343857,0.1322475522756577,-0.2449918538331985) * MODEL1_texOff(vec2(-1,0)); +res += mat4(-0.2439029216766357,-0.0880997478961945,-0.1612567901611328,-0.4472371041774750,-0.1740748286247253,-0.0585206896066666,-0.0657029673457146,-0.0897132232785225,0.0199276376515627,0.1176935732364655,-0.1753555536270142,-0.0216708388179541,-0.5421268939971924,0.2451691776514053,0.2713908851146698,-0.1808403730392456) * MODEL2_texOff(vec2(-1,0)); +res += mat4(0.0636586472392082,-0.0982676669955254,-0.2402346730232239,-0.0729618296027184,-0.0778831765055656,0.0221842341125011,0.0728839635848999,0.0256734061986208,-0.0296111032366753,0.0160355139523745,0.1967004984617233,-0.0364510081708431,-0.1154832020401955,0.0664381235837936,-0.1580185890197754,-0.1150302141904831) * MODEL3_texOff(vec2(-1,0)); +res += mat4(-0.1614706814289093,-0.3007177114486694,-0.0077538061887026,0.1562442332506180,-0.0116249406710267,-0.0763486921787262,-0.0728502124547958,0.1449433118104935,0.1028612777590752,-0.0802665725350380,0.0317276343703270,0.3957915306091309,-0.0113516477867961,-0.2576089501380920,-0.0250909272581339,-0.3440415263175964) * MODEL4_texOff(vec2(-1,0)); +res += mat4(-0.0721431076526642,0.0617929846048355,0.0236721988767385,-0.1713178306818008,0.0801177248358727,-0.0077098137699068,-0.1302033662796021,0.1205692663788795,-0.1801013350486755,0.3740012347698212,-0.4390102922916412,0.2259115278720856,-0.0943693146109581,0.0032138365786523,-0.1379340589046478,-0.0831489339470863) * MODEL1_texOff(vec2(-1,1)); +res += mat4(-0.0361295416951180,-0.0423301756381989,0.0237964522093534,-0.0884843170642853,-0.0765647217631340,0.0764393284916878,-0.2291554659605026,0.0330178700387478,0.1890143007040024,-0.3994705080986023,0.1141545847058296,-0.3930031657218933,-0.1419301927089691,-0.0915622636675835,-0.5227252840995789,0.0471889413893223) * MODEL2_texOff(vec2(-1,1)); +res += mat4(0.0244284309446812,-0.0262696258723736,0.1562546193599701,-0.0066187661141157,-0.1507112234830856,0.1415329426527023,-0.0896876007318497,0.0598894916474819,0.0509236603975296,0.0035465008113533,-0.0006597613682970,0.1432638168334961,0.0633045285940170,0.0205333437770605,-0.1529020816087723,0.0278088022023439) * MODEL3_texOff(vec2(-1,1)); +res += mat4(-0.0013071940047666,-0.1215862557291985,0.1564798504114151,0.0205783136188984,-0.1420968621969223,0.1075428128242493,0.0872842520475388,0.0079967444762588,-0.0594218485057354,-0.1015119478106499,-0.1151336580514908,0.0227370969951153,0.1221681982278824,0.1577650308609009,-0.0548945218324661,-0.1438567042350769) * MODEL4_texOff(vec2(-1,1)); +res += mat4(-0.6033390164375305,-0.2823020517826080,0.0765986815094948,-0.0168070066720247,0.1330042928457260,0.3693281412124634,0.0154768042266369,-0.1817414015531540,-0.1879704594612122,0.1986478865146637,-1.2290372848510742,0.2091535180807114,-0.2778144180774689,-0.2049327790737152,-0.0833392888307571,0.1576944887638092) * MODEL1_texOff(vec2(0,-1)); +res += mat4(-0.2492198497056961,-0.0573792122304440,0.0536363571882248,-0.0028804065659642,-0.6152865886688232,-0.2403887361288071,-0.3645218312740326,0.0169817730784416,-0.4057780504226685,-0.0315363407135010,0.3864345550537109,0.0341531969606876,0.3265593349933624,-0.4443338215351105,-0.5211750864982605,0.2147141098976135) * MODEL2_texOff(vec2(0,-1)); +res += mat4(0.0928920134902000,0.1127678453922272,-0.2038836181163788,-0.0687354058027267,-0.4012863636016846,0.0305966697633266,-0.2824791967868805,0.3182746767997742,-0.2477563768625259,-0.1787149608135223,-0.1280913800001144,-0.2693536281585693,-0.2007386982440948,0.2500161826610565,-0.1692083477973938,0.2201835960149765) * MODEL3_texOff(vec2(0,-1)); +res += mat4(0.4433092176914215,-0.2782422900199890,0.1955523788928986,0.0446265041828156,0.2695930600166321,0.4516450762748718,-0.0869306996464729,0.2080718427896500,-0.3609630167484283,-0.2756880223751068,-0.0572468861937523,0.0923518687486649,-0.2521983087062836,-0.0607448406517506,-0.1430182605981827,-0.0809801742434502) * MODEL4_texOff(vec2(0,-1)); +res += mat4(-0.5648784637451172,-0.0078862020745873,-0.0799404531717300,-0.3679954111576080,0.3843144178390503,-0.7055245637893677,-0.8288373947143555,0.1270771771669388,-0.0056138485670090,0.4444505274295807,-1.0627838373184204,0.0743907466530800,0.5623774528503418,0.1460260748863220,0.2430976182222366,-0.4247787296772003) * MODEL1_texOff(vec2(0,0)); +res += mat4(-0.1028358787298203,-0.7443224191665649,-0.2842544615268707,-0.7112095952033997,0.5257666110992432,-0.4121195673942566,-0.2406257987022400,0.3721483945846558,-0.0295912455767393,-0.0090005975216627,0.3495620191097260,-0.3244813084602356,0.1984122097492218,-0.1381660550832748,0.1999670416116714,-0.1392254829406738) * MODEL2_texOff(vec2(0,0)); +res += mat4(-0.2189147621393204,-0.3101506233215332,-0.3582707047462463,0.6731706261634827,-0.0630217045545578,-0.7331262230873108,0.0304036866873503,-0.2192881107330322,-0.3842722773551941,-0.1572354137897491,-0.1318689137697220,-0.1704041659832001,-0.4817813038825989,-0.1687027812004089,-0.3037893474102020,-0.3955264985561371) * MODEL3_texOff(vec2(0,0)); +res += mat4(-0.0350833274424076,0.1781712621450424,0.4963554143905640,-0.5230069756507874,-0.0323612317442894,-0.2684666216373444,-0.0216306671500206,-0.5467779636383057,0.1643877923488617,-0.3850797414779663,-0.0079383878037333,-0.4840333759784698,-0.4436331093311310,-0.0161991715431213,-0.2919921576976776,-0.6045735478401184) * MODEL4_texOff(vec2(0,0)); +res += mat4(0.0631479918956757,-0.0759769305586815,0.1899980753660202,-0.7697417736053467,0.0048485705628991,0.2741712033748627,-0.0055032907985151,0.2066910862922668,-0.1501127332448959,0.3565596938133240,-0.8306923508644104,0.1663600057363510,0.0771821588277817,0.0152697730809450,0.0880215913057327,0.0921067818999290) * MODEL1_texOff(vec2(0,1)); +res += mat4(-0.1451108753681183,-0.4456967115402222,0.0038733964320272,0.1149310395121574,0.1009142324328423,0.2150571495294571,0.0943882092833519,-0.0743561014533043,0.1195020973682404,0.5845862030982971,0.0343878380954266,-0.3899781107902527,-0.4041344523429871,0.3338281214237213,-0.0199393369257450,0.0934275463223457) * MODEL2_texOff(vec2(0,1)); +res += mat4(0.2694981694221497,0.1683813631534576,-0.0827538445591927,-0.9855439066886902,0.1228355169296265,0.1367452442646027,-0.1180073469877243,-0.3259690999984741,-0.3450045883655548,-0.1005374863743782,-0.1464527249336243,-0.1674241274595261,0.1783515959978104,-0.4858917295932770,-0.2419071942567825,-0.1595151573419571) * MODEL3_texOff(vec2(0,1)); +res += mat4(0.1846605837345123,0.2596315443515778,0.2425408214330673,0.3251174986362457,0.0843155756592751,0.2367650866508484,-0.2045378684997559,0.0772629603743553,-0.2504093647003174,-0.0491534061729908,0.0135239763185382,0.3528170585632324,0.1446651220321655,-0.0448730662465096,-0.0475514978170395,-0.2215046882629395) * MODEL4_texOff(vec2(0,1)); +res += mat4(0.3496626913547516,-0.0416278280317783,0.1267942488193512,0.1846652030944824,0.0825802311301231,-0.0858073681592941,-0.1442968696355820,0.0075921313837171,-0.2857237756252289,0.2616439759731293,-0.5992080569267273,0.1289489418268204,0.1400072127580643,0.1107556670904160,0.2755304872989655,0.1546024233102798) * MODEL1_texOff(vec2(1,-1)); +res += mat4(0.0377431400120258,0.0305332988500595,0.0120427943766117,0.0411608815193176,0.2350389063358307,0.1466522365808487,0.0528812482953072,0.1578131765127182,0.1993547379970551,0.0172306522727013,-0.1550423502922058,0.1076474338769913,-0.2865282297134399,0.3427429795265198,0.0945115536451340,0.2316128164529800) * MODEL2_texOff(vec2(1,-1)); +res += mat4(-0.0609900802373886,-0.0944926515221596,-0.2119262367486954,-0.0069179581478238,0.0360044389963150,0.1666931211948395,0.2129596620798111,0.2629804313182831,-0.1959801316261292,0.0509368106722832,-0.0875207930803299,-0.1775096058845520,0.3542068898677826,0.1606763750314713,0.0899846851825714,0.0402658544480801) * MODEL3_texOff(vec2(1,-1)); +res += mat4(0.1717642992734909,-0.2124918401241302,0.0481774210929871,-0.0357615984976292,0.0568622574210167,0.0519891344010830,-0.2438391298055649,-0.0353425256907940,0.0392028875648975,-0.0987027660012245,-0.0311603695154190,-0.0224185455590487,0.4272132813930511,0.1244610548019409,0.0514792986214161,0.0763168707489967) * MODEL4_texOff(vec2(1,-1)); +res += mat4(-0.0818905532360077,-0.2310486733913422,0.0471217706799507,-0.0838337242603302,0.0181213170289993,0.0821879133582115,-0.0322279706597328,0.0799539163708687,-0.1965402066707611,0.2742959260940552,-0.7167144417762756,0.0575326457619667,0.0642850175499916,-0.1227741986513138,-0.0497060939669609,-0.2855891585350037) * MODEL1_texOff(vec2(1,0)); +res += mat4(0.2123161703348160,-0.2346035838127136,0.1092509478330612,0.1562874168157578,0.1066971719264984,0.2767858505249023,-0.3046181797981262,-0.0273845475167036,-0.3696175813674927,-0.0598086304962635,-0.1019269675016403,-0.0927008464932442,-0.1281058192253113,0.3493737280368805,-0.3503416180610657,-0.3022629022598267) * MODEL2_texOff(vec2(1,0)); +res += mat4(-0.0880725234746933,0.2408671975135803,-0.1795619726181030,0.1810989826917648,0.1211275905370712,0.4736292362213135,0.0064709093421698,-0.3257658183574677,-0.3594385087490082,0.0024678865447640,0.0314037911593914,-0.0911884680390358,-0.0311477817595005,-0.1242813691496849,-0.1627479493618011,0.3381403386592865) * MODEL3_texOff(vec2(1,0)); +res += mat4(-0.0876098796725273,0.2889081239700317,0.2039415985345840,-0.0505445413291454,-0.1711472421884537,0.3027215301990509,0.1295015215873718,0.2873072326183319,0.1006578281521797,-0.3762693107128143,0.0244721211493015,-0.2519020438194275,-0.1871100217103958,0.1793846189975739,-0.2067656368017197,-0.3798410892486572) * MODEL4_texOff(vec2(1,0)); +res += mat4(0.0071486891247332,0.0327866934239864,-0.0724201947450638,-0.3820834457874298,0.0678572282195091,0.0313744433224201,-0.0951966121792793,-0.0104408366605639,-0.2017306685447693,0.2389510869979858,-0.8141521811485291,0.0672826170921326,0.1411330401897430,-0.1417368054389954,0.1756392568349838,0.1432631909847260) * MODEL1_texOff(vec2(1,1)); +res += mat4(-0.0169192869216204,0.0134304529055953,-0.0439525134861469,0.0853186175227165,-0.0271293148398399,0.0552158914506435,-0.4424555599689484,-0.0221184864640236,0.1248477473855019,-0.1369054317474365,0.2032888382673264,0.4237955808639526,-0.1370280236005783,0.0774284079670906,-0.3221918344497681,0.0986522659659386) * MODEL2_texOff(vec2(1,1)); +res += mat4(-0.0016994937323034,-0.3168563842773438,-0.2978757619857788,-0.1239660754799843,0.1501535922288895,0.0411236807703972,-0.3058364391326904,0.0213185362517834,-0.1830658763647079,-0.3084793984889984,-0.0796889662742615,-0.1118396595120430,0.0839603170752525,-0.0018456405960023,-0.2057147920131683,0.0484040603041649) * MODEL3_texOff(vec2(1,1)); +res += mat4(0.3530099093914032,-0.2546278834342957,0.4894405007362366,-0.0462108962237835,0.0373030193150043,-0.0540172420442104,-0.1831854879856110,-0.0725690498948097,-0.1877104043960571,0.3815770149230957,0.0154178757220507,0.0679738372564316,0.2268005311489105,-0.0374227240681648,-0.1764841973781586,0.3064631521701813) * MODEL4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.1011536195874214,-0.0269211996346712,-0.0399007871747017,0.1815684139728546) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 3_3 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!SAVE MODEL23 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0096962312236428,-0.1828956305980682,-0.3072965741157532,0.3628412187099457); +res += mat4(0.0966185852885246,-0.6135466098785400,0.1222296357154846,-0.1271366775035858,-0.0659370869398117,0.1779254078865051,-0.0182557422667742,0.0037988279946148,-0.0624240785837173,-0.0021543647162616,-0.0371171571314335,0.0114635583013296,-0.0971337482333183,-0.3905356526374817,0.0018126725917682,-0.0468830652534962) * MODEL1_texOff(vec2(-1,-1)); +res += mat4(0.0238531120121479,-0.6746900081634521,0.1587852537631989,-0.0541999749839306,0.1455587893724442,0.1401162594556808,0.0800143107771873,0.0067800586111844,-0.1083246991038322,0.4153499007225037,-0.0090921055525541,0.1080789342522621,0.0504096634685993,-0.5217405557632446,-0.0277403518557549,0.0075404588133097) * MODEL2_texOff(vec2(-1,-1)); +res += mat4(-0.1730122119188309,-0.2118499428033829,0.0321336425840855,0.0257543101906776,0.0492732115089893,-0.0492192357778549,-0.0415452122688293,0.2035491466522217,0.1021632179617882,0.2431710809469223,-0.0390984788537025,0.2217389643192291,0.1717329174280167,-0.2138804644346237,0.0192105397582054,0.1068543791770935) * MODEL3_texOff(vec2(-1,-1)); +res += mat4(-0.0713640674948692,-0.7597609758377075,0.0916400700807571,-0.1611132174730301,0.1112890094518661,0.0431755259633064,-0.0392427630722523,0.0301910303533077,-0.0716047734022141,-0.4293081164360046,-0.0941429734230042,-0.0926984921097755,0.3202439546585083,-0.6363947391510010,0.1387458592653275,0.0786793977022171) * MODEL4_texOff(vec2(-1,-1)); +res += mat4(0.0061861029826105,-0.2433091551065445,0.2566366493701935,0.0533551722764969,-0.0290800239890814,0.3748449683189392,-0.0315197892487049,-0.5474284887313843,-0.0388411879539490,-0.0617205537855625,0.0158661734312773,0.1277355402708054,-0.1119790449738503,-0.3430351316928864,0.0742595493793488,-0.2360652983188629) * MODEL1_texOff(vec2(-1,0)); +res += mat4(0.1328734904527664,-0.4145849347114563,-0.5556353330612183,-0.1917155981063843,-0.0579247437417507,0.0271499268710613,-0.2180203199386597,-0.2175027877092361,-0.0770114809274673,-0.0746197402477264,-0.1473943889141083,0.0477991849184036,-0.0148708047345281,-0.0942263156175613,-0.1056677773594856,-0.3181895613670349) * MODEL2_texOff(vec2(-1,0)); +res += mat4(-0.0933884605765343,0.4464295804500580,0.1864062547683716,-0.2428316175937653,0.0091863730922341,0.0066727939993143,0.2278614938259125,0.0407700166106224,-0.0217400901019573,-0.0089303944259882,0.0608105957508087,0.0034453994594514,-0.0575114041566849,-0.3221804797649384,0.1051684170961380,0.0491008646786213) * MODEL3_texOff(vec2(-1,0)); +res += mat4(0.0175898224115372,-0.0022226218134165,-0.2113958448171616,0.3449440598487854,-0.1412918716669083,-0.1120014712214470,-0.3145899474620819,0.3299396932125092,0.0570392832159996,0.3087191581726074,-0.0436424948275089,-0.1651565432548523,-0.2497800141572952,-0.4630553722381592,0.1206926479935646,-0.0631397441029549) * MODEL4_texOff(vec2(-1,0)); +res += mat4(0.0863930583000183,0.4767310321331024,-0.0583035126328468,0.0486125871539116,0.0731265991926193,-0.0980255678296089,0.1599799990653992,-0.1969169527292252,0.0129284346476197,-0.1523057520389557,0.1927413493394852,0.0369221642613411,0.0267726648598909,0.0085872625932097,-0.2059309929609299,-0.0781255662441254) * MODEL1_texOff(vec2(-1,1)); +res += mat4(-0.0053160390816629,-0.0114771798253059,-0.0920668691396713,-0.1277164816856384,0.1347965002059937,-0.1123904660344124,0.2623544931411743,0.1807247251272202,-0.1826624423265457,0.0890938192605972,-0.2081806659698486,-0.0265102572739124,-0.2511420249938965,-0.3642075955867767,-0.1960840672254562,0.2282556742429733) * MODEL2_texOff(vec2(-1,1)); +res += mat4(0.1304119229316711,-0.1310023069381714,-0.1879419535398483,-0.1534926742315292,0.0867782682180405,-0.1649359315633774,0.1634290069341660,0.0068767536431551,-0.0467854514718056,0.1089409291744232,0.0465519055724144,0.2068714201450348,-0.0290457345545292,0.2391352653503418,-0.0619399435818195,0.1424463242292404) * MODEL3_texOff(vec2(-1,1)); +res += mat4(-0.0018676006002352,0.1332158446311951,0.3071989119052887,0.0174633916467428,-0.0699404776096344,0.1084066629409790,0.1364846229553223,0.1159763559699059,-0.0480275079607964,-0.4437184333801270,0.1823548525571823,-0.1592775881290436,0.0239598173648119,0.0776209533214569,-0.3734119832515717,0.0483766272664070) * MODEL4_texOff(vec2(-1,1)); +res += mat4(0.3958072364330292,0.4064818620681763,0.1182176992297173,-0.0630514547228813,-0.2958301305770874,0.2158587723970413,0.1844703406095505,0.0829237923026085,0.0300246998667717,-0.0076577407307923,-0.1118960455060005,0.0657947883009911,0.1468003392219543,0.1012594997882843,-0.1200218871235847,0.0575959905982018) * MODEL1_texOff(vec2(0,-1)); +res += mat4(-0.0439574532210827,-0.0342512875795364,0.1198491603136063,0.0569071359932423,-0.2773189544677734,0.0276473425328732,0.0503465831279755,-0.0294683892279863,-0.1125778257846832,-0.1835590004920959,-0.2119190990924835,0.0135993221774697,0.3683224320411682,-0.6543045043945312,0.0588777251541615,-0.0644268468022346) * MODEL2_texOff(vec2(0,-1)); +res += mat4(-0.6709493994712830,-0.0510004945099354,-0.0327867940068245,-0.0542119666934013,0.5428741574287415,-0.2171358913183212,-0.1788071691989899,-0.0115239555016160,0.0560156069695950,-0.0389721207320690,-0.2194385826587677,-0.0730813071131706,0.2017922103404999,-0.3187334835529327,0.1126372441649437,0.0659322142601013) * MODEL3_texOff(vec2(0,-1)); +res += mat4(-0.0853002369403839,-0.5523035526275635,-0.0062804054468870,-0.1822048574686050,-0.1589933186769485,0.2936513423919678,0.3282754123210907,-0.0821304619312286,0.3000006377696991,0.0232181232422590,0.0296038947999477,-0.2985506653785706,0.1611278057098389,-0.3611412644386292,0.2865517735481262,-0.1553557664155960) * MODEL4_texOff(vec2(0,-1)); +res += mat4(-0.1738335639238358,0.3487513065338135,-0.1364589333534241,-0.3615652024745941,0.4185519814491272,0.5301572680473328,-0.9419437646865845,-0.8370573520660400,0.0375004485249519,-0.0669632777571678,0.1191441267728806,0.1945374906063080,-0.2194370031356812,0.6181265115737915,0.3488807082176208,0.2756504416465759) * MODEL1_texOff(vec2(0,0)); +res += mat4(0.3569741845130920,-0.2014349699020386,-0.7833114266395569,-0.2818526327610016,0.1310144215822220,-0.1745538711547852,-0.3036801218986511,0.7271450757980347,0.0465441606938839,-0.4831406474113464,-0.3451803624629974,-0.1129988580942154,-0.0218575540930033,0.2799502015113831,0.3072584867477417,0.2912150621414185) * MODEL2_texOff(vec2(0,0)); +res += mat4(0.2870803773403168,0.1482480764389038,0.1605004072189331,-0.1584322750568390,-0.3893961906433105,-0.7580126523971558,0.5952653884887695,-0.0874569267034531,-0.0303031001240015,-0.0761542543768883,-0.2135511636734009,0.1952854841947556,0.0925365984439850,-0.4599846601486206,0.2825924754142761,-0.7044473290443420) * MODEL3_texOff(vec2(0,0)); +res += mat4(-0.0922626033425331,-0.0603037066757679,-0.4493271410465240,-0.5298621058464050,-0.2890153825283051,0.0927275121212006,-1.0531142950057983,-0.6113587617874146,-0.1618873625993729,0.0476957969367504,-0.0018244569655508,-0.5462905168533325,0.1010603010654449,-0.2124905884265900,-0.2762548327445984,-0.2766358852386475) * MODEL4_texOff(vec2(0,0)); +res += mat4(0.1988933831453323,0.0994351357221603,-0.4228837788105011,0.0489445999264717,-0.1829699128866196,0.2394288927316666,0.5436335206031799,-0.1593505591154099,-0.0227949935942888,-0.2940272092819214,0.0947608277201653,-0.0181172564625740,0.1085731834173203,-0.1314677298069000,0.3206368088722229,-0.2062132954597473) * MODEL1_texOff(vec2(0,1)); +res += mat4(-0.2541041076183319,0.2557089924812317,-0.4808665215969086,-0.2363691478967667,0.1692509800195694,-0.0390186458826065,0.0974366217851639,0.2243825048208237,-0.4363555014133453,-0.3497348129749298,-0.6913013458251953,0.0185462776571512,-0.3049576282501221,-0.3033468425273895,-0.4316872358322144,-0.1699993610382080) * MODEL2_texOff(vec2(0,1)); +res += mat4(0.3071744740009308,0.3621467053890228,-0.1005984172224998,0.0747817009687424,-0.0433912649750710,-0.3260292410850525,0.0102246813476086,0.0993230938911438,-0.4786410927772522,0.1699418127536774,-0.3136234283447266,-0.3366701900959015,-0.2117681652307510,-0.2202868908643723,-0.3204817771911621,-0.2898558378219604) * MODEL3_texOff(vec2(0,1)); +res += mat4(0.0263315960764885,-0.3030783832073212,0.5731752514839172,0.0163164157420397,0.0994879081845284,0.0459609739482403,0.0356153398752213,0.3358831703662872,-0.2208869010210037,0.3033982813358307,0.0253771729767323,-0.3519003093242645,-0.0202707070857286,-0.1821469962596893,-0.3992060422897339,0.0346953496336937) * MODEL4_texOff(vec2(0,1)); +res += mat4(0.3334394693374634,-0.1968406885862350,0.1701373010873795,0.1021427288651466,-0.0147269601002336,0.0701922625303268,0.0501354150474072,-0.0238048546016216,-0.0242276247590780,-0.3706024587154388,0.0057721352204680,0.0673455297946930,0.1210014969110489,0.2068747729063034,-0.0184159558266401,-0.1844947785139084) * MODEL1_texOff(vec2(1,-1)); +res += mat4(-0.0711980611085892,-0.1646527200937271,-0.0348984114825726,0.0458331070840359,-0.0592295564711094,0.0429804362356663,0.0633668527007103,-0.0887297615408897,0.0591199062764645,0.2785882353782654,0.1546631008386612,0.0576921850442886,0.1357407271862030,0.0261168684810400,-0.2746448218822479,0.0076845628209412) * MODEL2_texOff(vec2(1,-1)); +res += mat4(-0.2072208076715469,0.1141251027584076,0.0491079241037369,-0.0414020381867886,0.2520525753498077,-0.0095078833401203,0.0605663172900677,-0.0657160580158234,0.2095283269882202,0.1218301057815552,-0.0085758138448000,-0.0047799674794078,0.0383018031716347,-0.1704875975847244,-0.0236699488013983,-0.0657273232936859) * MODEL3_texOff(vec2(1,-1)); +res += mat4(-0.0391417890787125,-0.0950736999511719,-0.0867062881588936,-0.1508761197328568,-0.0721105113625526,0.3227547705173492,0.1170788034796715,0.1071276441216469,0.3144429326057434,0.1505455076694489,0.2037825584411621,0.2058983594179153,0.2463132888078690,0.0262015853077173,0.1655953228473663,0.0284772794693708) * MODEL4_texOff(vec2(1,-1)); +res += mat4(-0.2142096757888794,-0.3336849510669708,0.1100151464343071,0.1912226378917694,-0.0637261494994164,-0.0036669168621302,-0.0317040383815765,0.0309900958091021,0.0629468336701393,-0.0138057358562946,0.0198006369173527,0.0468734242022038,-0.1184963062405586,0.2932909131050110,0.1430784016847610,-0.2738595008850098) * MODEL1_texOff(vec2(1,0)); +res += mat4(0.0263565480709076,-0.2182097584009171,0.0248852483928204,0.0806952863931656,0.0411778949201107,0.0462260097265244,0.2508244514465332,-0.2604519128799438,0.1782611757516861,-0.0552900508046150,-0.0188052784651518,0.1505897045135498,0.1071805506944656,0.1933152079582214,0.0772838443517685,-0.3518147766590118) * MODEL2_texOff(vec2(1,0)); +res += mat4(-0.3039082586765289,0.2085517495870590,0.1073516756296158,0.0792794078588486,0.0139703052118421,0.1793562620878220,-0.0779549032449722,-0.4413506090641022,-0.0154337212443352,0.1998108625411987,-0.1112744733691216,-0.0729703530669212,0.0364848375320435,-0.1272945255041122,0.2254590988159180,-0.2005347013473511) * MODEL3_texOff(vec2(1,0)); +res += mat4(-0.0273634362965822,0.2264695465564728,0.1658903509378433,0.2102769166231155,-0.1478670835494995,0.2959378957748413,-0.1816536337137222,0.2262745201587677,-0.0842936486005783,0.2780936658382416,-0.1769950538873672,-0.1050595194101334,0.0085508283227682,0.2996675074100494,0.1085069105029106,0.0264055654406548) * MODEL4_texOff(vec2(1,0)); +res += mat4(0.0275089219212532,-0.0199142079800367,-0.1471563428640366,0.0359929502010345,-0.0232283771038055,-0.2136822640895844,0.3263385593891144,-0.0078923916444182,-0.0089772054925561,-0.2155348360538483,0.0575222708284855,-0.0584659241139889,-0.1102655529975891,0.0794615447521210,0.0324593000113964,-0.0505253821611404) * MODEL1_texOff(vec2(1,1)); +res += mat4(-0.0989244282245636,-0.1169452443718910,-0.0588202178478241,0.2295041233301163,-0.0500692725181580,0.1185398548841476,0.2176976650953293,-0.0961228460073471,-0.3480427563190460,0.3826696872711182,-0.2737647891044617,0.3211134970188141,-0.0960477218031883,-0.2945753335952759,-0.1037626191973686,-0.1685638427734375) * MODEL2_texOff(vec2(1,1)); +res += mat4(-0.0226573441177607,0.2182911187410355,0.0424330383539200,-0.0281616933643818,-0.0349009595811367,-0.1639105528593063,0.2685182988643646,-0.2577687799930573,-0.2169789373874664,-0.0619792789220810,-0.0216093808412552,-0.0641317814588547,0.0200322512537241,0.0781936794519424,0.1579122543334961,-0.0302272662520409) * MODEL3_texOff(vec2(1,1)); +res += mat4(-0.0130745423957705,-0.0074001727625728,-0.4127369225025177,-0.1832849383354187,-0.0191794950515032,-0.1459515541791916,0.0506785213947296,-0.0798520520329475,-0.1798611879348755,0.0208102259784937,-0.0432562939822674,0.0866297408938408,-0.1733963042497635,0.3829587697982788,-0.1485795825719833,0.0457934252917767) * MODEL4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.2022365331649780,0.0257512368261814,0.0406768731772900,0.2374598830938339) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 3_4 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!SAVE MODEL24 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.1615822762250900,-0.3181393742561340,-0.1999485045671463,-0.3559705018997192); +res += mat4(-0.1974588930606842,-0.0361125282943249,0.0272251442074776,0.3330465853214264,0.1987139582633972,0.2116202712059021,0.0364080779254436,0.0950169339776039,-0.0183155369013548,0.1389241069555283,0.0915704816579819,0.0289167705923319,-0.1128599345684052,-0.0840830653905869,0.0487023331224918,-0.0443631745874882) * MODEL1_texOff(vec2(-1,-1)); +res += mat4(0.0031848836224526,0.1297396570444107,-0.0644683688879013,0.0848719477653503,0.3124601542949677,0.4512622654438019,0.0452612601220608,0.1563718467950821,0.0617647059261799,0.0545460805296898,-0.0145732900127769,-0.1544342786073685,0.3531651198863983,-0.0244909264147282,-0.0518489591777325,0.0819958001375198) * MODEL2_texOff(vec2(-1,-1)); +res += mat4(0.3703565895557404,0.3106299340724945,-0.0596154928207397,-0.0143657997250557,-0.1106218844652176,-0.2220201492309570,-0.0493395030498505,-0.0209231022745371,-0.0452506951987743,-0.0562542080879211,0.0413091406226158,0.1060889288783073,-0.1341663300991058,-0.2745214104652405,0.0044015492312610,0.1632619202136993) * MODEL3_texOff(vec2(-1,-1)); +res += mat4(-0.0422523096203804,-0.1062318906188011,-0.0942376032471657,0.0562276653945446,0.2332727015018463,-0.0921145454049110,0.1994942575693130,-0.0289016347378492,-0.3205979466438293,-0.0989910215139389,-0.0473002642393112,-0.0369105041027069,0.1293666362762451,-0.3146778047084808,-0.0866488367319107,-0.0980222001671791) * MODEL4_texOff(vec2(-1,-1)); +res += mat4(-0.0427063852548599,-0.1648644804954529,0.0379024669528008,-0.0208045244216919,-0.1719881892204285,0.3812213838100433,0.1619504541158676,0.0470844097435474,0.1719943434000015,-0.2370854169130325,0.0481606535613537,0.0425046421587467,0.0846692100167274,-0.1100198403000832,-0.2590966522693634,0.0026085490826517) * MODEL1_texOff(vec2(-1,0)); +res += mat4(-0.2735429108142853,0.1730803400278091,0.3100599348545074,0.0985910445451736,0.1110698357224464,0.6594412326812744,0.7377954721450806,-0.2639446258544922,-0.0634758099913597,-0.1699009984731674,-0.1212719082832336,0.0028376460541040,-0.1164819374680519,-1.0320463180541992,-0.0450741462409496,-0.1320651471614838) * MODEL2_texOff(vec2(-1,0)); +res += mat4(-0.0713348165154457,0.2158897370100021,0.0068049891851842,0.2112420648336411,0.1104797795414925,-0.1926867812871933,-0.2347638309001923,-0.0045262179337442,-0.1009434685111046,-0.0155510986223817,0.1563263982534409,0.0713946446776390,0.0621294677257538,-0.6294711828231812,0.1566622406244278,-0.0091994525864720) * MODEL3_texOff(vec2(-1,0)); +res += mat4(-0.3112075030803680,-0.6678212881088257,-0.2279316931962967,0.0975699722766876,0.0887780785560608,-0.6464394330978394,0.4730529189109802,-0.1636635661125183,0.3923094570636749,-0.2109929919242859,-0.0590078011155128,0.1201331168413162,0.0747839882969856,-0.6923506855964661,-0.1845218688249588,-0.6314243078231812) * MODEL4_texOff(vec2(-1,0)); +res += mat4(0.1466641724109650,-0.0201342832297087,0.0536496415734291,-0.1008828654885292,-0.0157332532107830,0.1040282845497131,-0.1103689000010490,0.0703886225819588,0.0615994036197662,0.1226205825805664,0.0363954119384289,0.0492972880601883,-0.0888964235782623,-0.4082735776901245,-0.0756086632609367,0.0448960103094578) * MODEL1_texOff(vec2(-1,1)); +res += mat4(0.0087998807430267,-0.1445795148611069,0.1685708165168762,-0.2043169140815735,0.0506292805075645,0.1092414259910583,-0.0573321618139744,0.2661716639995575,0.2547429502010345,0.5587040781974792,0.5166037082672119,-0.2281772345304489,0.5585767030715942,-0.3029598295688629,0.0948151722550392,-0.2011469453573227) * MODEL2_texOff(vec2(-1,1)); +res += mat4(0.0988581106066704,-0.0050347773358226,0.0214924830943346,0.0934388861060143,-0.0946071669459343,0.0599846467375755,-0.1351220011711121,0.1020606458187103,-0.2519436478614807,-0.0515622273087502,0.0842102542519569,0.0880617350339890,0.0549225658178329,-0.0714932754635811,0.0816045850515366,0.0435110107064247) * MODEL3_texOff(vec2(-1,1)); +res += mat4(-0.0891644656658173,0.2382436543703079,-0.0550603754818439,-0.1067416295409203,0.1685477197170258,0.0988656878471375,0.1751660406589508,0.1592041403055191,-0.0025217381771654,-0.0715155899524689,-0.1038656681776047,0.0117675382643938,-0.0858341678977013,0.1848066747188568,0.0730907768011093,0.1294896751642227) * MODEL4_texOff(vec2(-1,1)); +res += mat4(0.1480890065431595,0.1093944683670998,0.0273557640612125,0.0978048443794250,-0.1570419818162918,-0.0844203978776932,-0.1055161878466606,0.0666613504290581,0.0353829339146614,0.1729962825775146,0.1570480465888977,0.1071970239281654,0.0467069819569588,-0.0041125947609544,-0.1477214992046356,-0.0558170601725578) * MODEL1_texOff(vec2(0,-1)); +res += mat4(-0.0766604617238045,-0.0088386107236147,-0.1634499430656433,0.0254724863916636,-0.1766208857297897,0.1404360383749008,0.1722287982702255,0.0101510491222143,-0.1669355183839798,0.0280846152454615,-0.0156840607523918,-0.0646581575274467,0.5041709542274475,0.1393980532884598,-0.0197534523904324,0.0634621903300285) * MODEL2_texOff(vec2(0,-1)); +res += mat4(-0.1562757045030594,-0.1491460204124451,-0.1293769925832748,-0.0993995070457458,0.0518447905778885,-0.0883174687623978,-0.3151679337024689,0.0233054235577583,0.0155591340735555,0.2825752496719360,0.0820059627294540,0.1270603984594345,0.1299761980772018,-0.3897947967052460,-0.0983077734708786,0.1207662671804428) * MODEL3_texOff(vec2(0,-1)); +res += mat4(0.0201731696724892,0.5210286974906921,-0.0586822256445885,-0.0883760228753090,-0.0129213891923428,0.5142046809196472,0.1718618422746658,0.2975693345069885,-0.3396313786506653,0.1059687063097954,0.0777886360883713,-0.0071464977227151,0.1728369146585464,0.3824301362037659,-0.0833638533949852,-0.2928820848464966) * MODEL4_texOff(vec2(0,-1)); +res += mat4(0.0064954073168337,0.1674818545579910,0.0887469202280045,-0.7010315060615540,0.3658912777900696,-0.4067452549934387,0.4187158048152924,0.3783641755580902,0.1789065748453140,0.1189458966255188,0.0024689293932170,-0.0299046002328396,-0.2898829281330109,0.4775104820728302,0.1953880339860916,0.0813034474849701) * MODEL1_texOff(vec2(0,0)); +res += mat4(-0.0485714860260487,-0.5938887000083923,0.4764872193336487,0.1407720744609833,0.0093602379783988,0.1419454663991928,-0.4671202898025513,0.1723480522632599,-0.7166591882705688,0.4574638009071350,-0.0326357334852219,-0.0583588704466820,-0.0941323116421700,0.4582560956478119,0.1340586692094803,-0.3326202929019928) * MODEL2_texOff(vec2(0,0)); +res += mat4(-0.0684696584939957,-0.0358825363218784,-0.2395974695682526,0.0954800844192505,0.1807143390178680,0.4913621544837952,-0.0526139996945858,-0.6320487856864929,-0.0204235855489969,0.1250404417514801,0.2128109931945801,-0.0169341322034597,0.0350728556513786,-0.0781793445348740,0.0091825509443879,0.0751496478915215) * MODEL3_texOff(vec2(0,0)); +res += mat4(-0.4747851788997650,0.3133098781108856,-0.3814404308795929,0.1067867875099182,0.1430086493492126,0.1043839082121849,0.2127566039562225,-0.4224065542221069,0.0955729708075523,-0.3406157791614532,0.1246647760272026,0.1407596766948700,-0.2837055027484894,0.7860319614410400,-0.2027616798877716,-0.4297810494899750) * MODEL4_texOff(vec2(0,0)); +res += mat4(0.0459526479244232,0.2253930121660233,-0.1006621196866035,-0.3292084634304047,0.0446605868637562,-0.2177486866712570,-0.0548334866762161,-0.2977205514907837,0.1104483753442764,0.0816389992833138,0.1431364119052887,0.0702833682298660,-0.2710016071796417,-0.1197729110717773,-0.0982481837272644,0.2712083756923676) * MODEL1_texOff(vec2(0,1)); +res += mat4(-0.2157401442527771,-0.0775162652134895,0.4440428316593170,-0.6906740069389343,0.2072909325361252,-0.0245185904204845,-0.0075218183919787,-0.2698760926723480,-0.1381023973226547,-0.5785195231437683,0.6836381554603577,-0.2779017984867096,0.1575073450803757,-0.0533783882856369,0.1232813969254494,0.3853336870670319) * MODEL2_texOff(vec2(0,1)); +res += mat4(0.2543635964393616,-0.1031905189156532,-0.1863321214914322,0.1541504561901093,0.0573079325258732,-0.0309962946921587,-0.0597893632948399,0.1371916234493256,-0.1392024308443069,-0.1404805779457092,-0.0184998251497746,-0.3532753884792328,0.1169531121850014,-0.1732151508331299,0.1489966958761215,-0.3539541065692902) * MODEL3_texOff(vec2(0,1)); +res += mat4(-0.1335048824548721,-0.0026021120138466,-0.2061898857355118,-0.0614206343889236,0.1404600590467453,-0.0945246815681458,0.0452495291829109,0.1688058525323868,-0.0646559670567513,0.4283471107482910,0.1381076723337173,-0.1573742926120758,0.1510650962591171,0.1086952090263367,0.1548220962285995,0.0828442424535751) * MODEL4_texOff(vec2(0,1)); +res += mat4(-0.0242201369255781,0.0997985452413559,-0.1483216881752014,0.1901189386844635,-0.0716479793190956,0.1051960438489914,-0.0346695780754089,0.0622938871383667,0.1448462009429932,0.1205437332391739,0.0731006562709808,0.0288040526211262,-0.0466316454112530,-0.2884612679481506,0.0575182922184467,0.1197100803256035) * MODEL1_texOff(vec2(1,-1)); +res += mat4(0.0110533563420177,0.1390976607799530,-0.0671180188655853,0.0268602054566145,0.0147142149507999,-0.1020987257361412,0.0262565556913614,0.0969162508845329,-0.0498718880116940,-0.1287681758403778,0.0755067318677902,0.0858733430504799,0.1504770666360855,-0.1764158755540848,0.0081835035234690,0.0668434947729111) * MODEL2_texOff(vec2(1,-1)); +res += mat4(-0.0589775331318378,0.1392201185226440,-0.0361892916262150,-0.2372763007879257,0.1082609817385674,0.0466561466455460,0.0278300307691097,0.0998477637767792,0.0669115632772446,-0.2091742604970932,0.1381004750728607,0.0766300112009048,0.1446924954652786,0.1631669253110886,-0.0644430965185165,0.0767935365438461) * MODEL3_texOff(vec2(1,-1)); +res += mat4(0.0524473711848259,-0.1524970829486847,0.1444454789161682,-0.1205128729343414,0.0662038400769234,0.1602598577737808,0.0945349857211113,0.2149742394685745,-0.0533903911709785,0.3189899027347565,-0.1177339255809784,0.0019386430503801,0.1200195476412773,-0.2956101298332214,0.1650701165199280,0.0415289178490639) * MODEL4_texOff(vec2(1,-1)); +res += mat4(-0.0486291609704494,0.3953767120838165,-0.1255990713834763,-0.3293313086032867,0.1416009515523911,0.1239224448800087,0.2408447265625000,0.2534500956535339,0.1353967189788818,0.0096069956198335,0.0511887893080711,-0.1374846547842026,-0.2171303778886795,-0.0621167272329330,0.0551748014986515,-0.1582599282264709) * MODEL1_texOff(vec2(1,0)); +res += mat4(-0.1558980643749237,0.2135347872972488,-0.0382786728441715,0.0563892051577568,0.2865737378597260,-0.2930139899253845,0.1893816143274307,0.0373828299343586,0.1701010316610336,-0.1615521311759949,-0.0457543432712555,0.0079989656805992,0.4211249053478241,-0.2294072806835175,0.0191718637943268,-0.2165979892015457) * MODEL2_texOff(vec2(1,0)); +res += mat4(-0.0352835580706596,0.0126804132014513,0.1060079634189606,0.0810654908418655,0.0728891044855118,-0.0235399026423693,0.0480183027684689,-0.5944545269012451,0.0423041731119156,0.0811937302350998,0.1780243217945099,-0.3017739951610565,0.0543744824826717,0.0653476417064667,0.0503508001565933,0.0260920189321041) * MODEL3_texOff(vec2(1,0)); +res += mat4(-0.4671322107315063,-0.0928015857934952,0.2024582177400589,-0.2208473086357117,0.2275488525629044,0.1748902946710587,0.1170512139797211,-0.2093700170516968,-0.1567525714635849,0.7000426650047302,0.1178150996565819,0.0175986383110285,0.0477720387279987,-0.6606707572937012,0.2863810062408447,-0.3851889967918396) * MODEL4_texOff(vec2(1,0)); +res += mat4(0.2252556532621384,-0.2217492759227753,-0.0934017598628998,-0.0658233538269997,0.0241077225655317,-0.1290224492549896,0.0603329613804817,-0.0828618034720421,0.1114495173096657,0.0259773936122656,0.1097635626792908,0.0774067267775536,0.0278273224830627,-0.0860898271203041,-0.0221626814454794,-0.1882199347019196) * MODEL1_texOff(vec2(1,1)); +res += mat4(-0.1687875241041183,0.0478606447577477,-0.0516307912766933,-0.3704669475555420,0.1190483495593071,-0.1301420480012894,0.1876411139965057,0.0759634152054787,-0.0653661862015724,-0.0197278223931789,0.1632201224565506,0.1205626502633095,0.1190266013145447,0.2711841762065887,0.0045819743536413,-0.3520955741405487) * MODEL2_texOff(vec2(1,1)); +res += mat4(0.0539962351322174,-0.0687875524163246,0.0390589311718941,0.3079180121421814,-0.1250923424959183,-0.1496006846427917,0.0689963996410370,0.1750945746898651,-0.1237833872437477,0.2568069696426392,-0.0401086509227753,-0.6318426728248596,0.2254602909088135,0.1945572644472122,0.1131982803344727,0.2567225992679596) * MODEL3_texOff(vec2(1,1)); +res += mat4(-0.2952269017696381,-0.0350491218268871,-0.0263390596956015,0.0551356598734856,0.1985633224248886,-0.1453243643045425,0.0687370896339417,0.2197585701942444,-0.2182653546333313,0.2905139923095703,-0.0267444811761379,-0.2130593657493591,0.0779621079564095,-0.1403796523809433,0.2053179889917374,0.3907326459884644) * MODEL4_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.1542360335588455,0.1412342339754105,0.2793002426624298,-0.0122240018099546) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 4_1 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL1 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.4017260372638702,-0.2961334884166718,-0.1361677497625351,-0.0893436446785927); +res += mat4(0.2097381800413132,0.0455209799110889,0.0259832218289375,-0.0885811075568199,-0.0067618829198182,-0.0790565013885498,-0.1110692024230957,-0.0180842950940132,0.0158209800720215,-0.0187969636172056,-0.0204427260905504,-0.2228807806968689,-0.0711185410618782,-0.0127975698560476,0.0209482349455357,0.0492094419896603) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(0.0825126916170120,0.0142949596047401,0.0014128192560747,0.1430399119853973,-0.1104710847139359,0.0465638190507889,-0.0133922407403588,-0.1491267383098602,-0.0963994413614273,-0.0794140994548798,-0.0114508774131536,0.2101793587207794,0.0521571338176727,0.0200386326760054,0.0641321614384651,-0.0391873233020306) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(-0.1520352214574814,0.0362231470644474,-0.1735580861568451,-0.0480187125504017,0.0255993194878101,0.0021788808517158,0.0240470990538597,-0.0222435146570206,0.0286579951643944,0.0400702878832817,0.0619828291237354,0.1402423828840256,-0.0478758364915848,-0.0099906520918012,-0.0750462785363197,-0.0264946576207876) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(-0.0258351694792509,0.0523434728384018,-0.0001439041661797,-0.4302446544170380,0.2808142602443695,0.0586529597640038,0.0233658440411091,0.0250332076102495,-0.1439442187547684,0.0323054641485214,0.0306089632213116,-0.0787173062562943,0.2927255332469940,-0.0432015433907509,0.1597368568181992,0.0631633177399635) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(-0.0406202860176563,0.0948056876659393,-0.0016681901179254,0.0702174976468086,0.1148841306567192,-0.1661987155675888,0.0636739060282707,-0.0837402492761612,0.1120814383029938,-0.0271764490753412,-0.0322991609573364,-0.1166550219058990,-0.1365866363048553,-0.0204168818891048,-0.0006664992542937,-0.0552206113934517) * MODEL21_texOff(vec2(-1,0)); +res += mat4(-0.2642927765846252,0.0292292218655348,-0.0285296738147736,-0.0599881522357464,-0.0689995810389519,-0.1233489960432053,-0.1328419595956802,-0.2746882438659668,-0.2931686937808990,0.1162078306078911,-0.0205998104065657,-0.2093065381050110,0.4624252617359161,0.1201894655823708,0.1537899672985077,-0.1396795362234116) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.0468857064843178,0.0680844113230705,-0.0621197260916233,-0.1120299324393272,0.2493423074483871,-0.0360720269382000,0.1085719913244247,0.0258240625262260,0.0603066310286522,-0.0100611504167318,0.0094873001798987,0.0243063438683748,-0.0421180427074432,0.0433366373181343,-0.0360187962651253,-0.0118739269673824) * MODEL23_texOff(vec2(-1,0)); +res += mat4(0.0021250096615404,0.0066482825204730,0.0012090024538338,-0.0424312166869640,-0.2473762929439545,0.0487834848463535,-0.0168533548712730,-0.0338227190077305,0.1850264370441437,0.1778176277875900,0.0584322102367878,-0.0196400973945856,0.0880245119333267,-0.0483354441821575,-0.0032457294873893,0.3941470980644226) * MODEL24_texOff(vec2(-1,0)); +res += mat4(0.1407747119665146,0.0285373218357563,-0.0326111093163490,-0.0126952938735485,-0.0986694246530533,-0.1084323599934578,0.2191060334444046,0.0870947688817978,-0.4361937344074249,-0.0923902466893196,-0.0366748645901680,-0.0339165031909943,-0.3207955658435822,0.0006921324529685,0.0325197428464890,-0.0059981741942465) * MODEL21_texOff(vec2(-1,1)); +res += mat4(0.0493194982409477,0.0047612232156098,-0.0501776710152626,0.0761292353272438,0.0440238378942013,-0.0962646976113319,-0.0159055087715387,-0.0891461148858070,-0.0807150751352310,0.1511806398630142,-0.0009086466743611,0.0526818148791790,0.0227832496166229,0.0163672640919685,0.1001215651631355,-0.0190013367682695) * MODEL22_texOff(vec2(-1,1)); +res += mat4(0.1284213811159134,0.0020348706748337,-0.0224223677068949,0.0618590824306011,-0.0182180218398571,-0.1362143009901047,-0.0246695056557655,-0.0094380369409919,0.0524647533893585,0.0233174934983253,-0.0424746274948120,-0.0974605008959770,0.0615278035402298,-0.0220964886248112,-0.0383524969220161,-0.0995529666543007) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.0797834247350693,0.0756283625960350,-0.0404821448028088,-0.1541213095188141,0.2288120239973068,0.0381797179579735,-0.0554104149341583,-0.0191117413341999,0.1889799833297729,0.0610259659588337,-0.0413142666220665,-0.0681122764945030,-0.2335439771413803,0.0230415090918541,0.0580160096287727,-0.0376873239874840) * MODEL24_texOff(vec2(-1,1)); +res += mat4(0.1205652803182602,0.0567708238959312,0.0532078668475151,0.0023451852612197,0.0004279239219613,0.1615711599588394,0.0226642377674580,0.0061074844561517,0.0973163396120071,0.0454865433275700,0.0075657670386136,-0.0291110761463642,-0.2150427550077438,-0.0380354188382626,0.0195998251438141,0.0733001306653023) * MODEL21_texOff(vec2(0,-1)); +res += mat4(-0.0121162114664912,0.0026517154183239,0.1457572430372238,0.1338728964328766,0.0548631958663464,-0.0518958866596222,0.1171092316508293,0.1558521389961243,-0.1996449083089828,0.0507291331887245,-0.0580380372703075,-0.0554652661085129,0.1130587980151176,-0.0673785731196404,0.0412916131317616,0.0101153869181871) * MODEL22_texOff(vec2(0,-1)); +res += mat4(-0.0724401921033859,0.1120468005537987,-0.2719030678272247,-0.0212808307260275,0.2433746457099915,-0.0861721932888031,0.0562748312950134,-0.0693661868572235,-0.2198645323514938,-0.0902982130646706,0.0976229459047318,-0.0972380563616753,-0.1861834973096848,-0.0242842808365822,0.0934249460697174,-0.0893250033259392) * MODEL23_texOff(vec2(0,-1)); +res += mat4(0.1657098382711411,0.0126938382163644,-0.0438225679099560,-0.0742039903998375,0.2963215410709381,-0.0713309645652771,0.0827048197388649,0.0660631582140923,-0.1251822412014008,-0.0499160476028919,-0.2584874331951141,-0.1251225322484970,0.1618934273719788,-0.1064148470759392,0.1819295287132263,0.2171864509582520) * MODEL24_texOff(vec2(0,-1)); +res += mat4(0.1569976806640625,0.3101954758167267,0.0150568205863237,-0.0887403264641762,0.0229867883026600,0.4311129748821259,-0.1446330398321152,-0.1213236078619957,-0.0203808881342411,0.2042820155620575,-0.0433217436075211,-0.0179664622992277,-0.2846025526523590,-0.0990165472030640,0.0056579820811749,-0.0683584734797478) * MODEL21_texOff(vec2(0,0)); +res += mat4(-0.0853557437658310,-0.0774037018418312,-0.0415960364043713,-0.1887119114398956,-0.5862891077995300,0.0278921741992235,0.0256915763020515,-0.0210970006883144,0.2069407552480698,-0.1677509099245071,-0.0279460810124874,0.0731252431869507,0.5933819413185120,-0.1151936426758766,-0.0640015155076981,-0.0522294752299786) * MODEL22_texOff(vec2(0,0)); +res += mat4(-0.1260266751050949,-0.2648131549358368,-0.1370221376419067,0.2285791039466858,0.2001305967569351,0.1079795658588409,0.2466328740119934,0.0457031726837158,-0.0482302606105804,0.0922641381621361,0.1157679036259651,0.0874616578221321,-0.2405085563659668,0.2206059396266937,-0.1060627028346062,-0.1089278236031532) * MODEL23_texOff(vec2(0,0)); +res += mat4(-0.1133070364594460,0.0483875982463360,0.0714892596006393,-0.1741379052400589,-0.0075362133793533,-0.1605125516653061,-0.0356721058487892,-0.1034936383366585,-0.3046982884407043,-0.2816949784755707,0.1567458659410477,0.0703221932053566,-0.3049350976943970,0.0748891606926918,-0.3223647773265839,0.3255655467510223) * MODEL24_texOff(vec2(0,0)); +res += mat4(0.2866676747798920,0.0061847539618611,-0.0146162826567888,-0.0140134487301111,-0.0492958836257458,0.2509532868862152,0.2757189273834229,0.0991292446851730,-0.0792517438530922,0.2112044692039490,0.0271733049303293,0.0229198448359966,-0.1673509776592255,-0.1144836321473122,-0.0379185862839222,-0.1211301758885384) * MODEL21_texOff(vec2(0,1)); +res += mat4(0.3355725407600403,0.0442647859454155,-0.0838595926761627,0.1079318448901176,-0.2963336408138275,0.0576937161386013,-0.1598837226629257,0.0096225263550878,0.1108556762337685,-0.0730845928192139,0.0671025812625885,-0.0082114962860942,0.2242141515016556,0.1097397506237030,0.0286945737898350,0.1402641087770462) * MODEL22_texOff(vec2(0,1)); +res += mat4(0.0355083383619785,0.0025727578904480,0.0215286500751972,0.0641032680869102,0.1199254021048546,0.2343555688858032,-0.1932496577501297,-0.0099069811403751,0.2384359985589981,-0.0141440071165562,-0.1757063120603561,-0.0082274377346039,-0.0970101431012154,-0.0258587580174208,-0.1223197653889656,-0.0665969997644424) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.5002747178077698,-0.1544622480869293,0.0256742816418409,0.1729249954223633,-0.0812580212950706,-0.0510701090097427,0.0390088669955730,0.0295602343976498,-0.1957711130380630,-0.1831477880477905,-0.0720937699079514,0.0142635153606534,-0.2937955260276794,0.0205176435410976,0.0880671143531799,-0.0333128981292248) * MODEL24_texOff(vec2(0,1)); +res += mat4(0.0517796464264393,-0.0542778223752975,0.0063309129327536,0.0192148517817259,-0.1953081041574478,-0.0495741665363312,-0.0320096313953400,0.0262839626520872,0.1965485662221909,0.0579232648015022,0.0040284935384989,0.0084932213649154,-0.0804616361856461,-0.0339209511876106,-0.0477394163608551,-0.0912244990468025) * MODEL21_texOff(vec2(1,-1)); +res += mat4(0.1388270705938339,-0.0794934481382370,-0.0060276612639427,0.0195973459631205,0.1203104034066200,-0.0191927794367075,0.0834798216819763,-0.0049274601042271,-0.2150519788265228,-0.0466494448482990,-0.1428831666707993,-0.0850805714726448,0.1603372097015381,0.0740652829408646,0.0193773657083511,-0.1526438742876053) * MODEL22_texOff(vec2(1,-1)); +res += mat4(-0.3676199316978455,-0.0407186113297939,-0.0791402086615562,0.0401397943496704,-0.2821306586265564,0.1057764440774918,-0.0107554029673338,0.0340133756399155,-0.0502954721450806,0.1529730111360550,0.0264162663370371,-0.0219731032848358,-0.0581691265106201,0.0023856244515628,-0.0353333987295628,0.0176197551190853) * MODEL23_texOff(vec2(1,-1)); +res += mat4(-0.6594786643981934,-0.1180216446518898,-0.0536138117313385,-0.0736580863595009,0.3629510402679443,-0.0126025620847940,0.0704809352755547,0.0210348665714264,0.0380675010383129,0.1170240938663483,-0.0444464273750782,-0.0492949001491070,0.0362430326640606,0.0684820264577866,0.0186503622680902,0.0150468759238720) * MODEL24_texOff(vec2(1,-1)); +res += mat4(0.1482787728309631,-0.0365413613617420,0.0086090015247464,-0.0034506188239902,0.1712284833192825,-0.3256959319114685,-0.0199483390897512,-0.0377518758177757,-0.4051332771778107,-0.0191734265536070,-0.0113983657211065,0.0821225270628929,-0.4675072133541107,-0.2551299333572388,0.0303181782364845,-0.0401000455021858) * MODEL21_texOff(vec2(1,0)); +res += mat4(-0.3577684164047241,-0.1069141551852226,-0.0075849895365536,0.0423410274088383,-0.2249272912740707,0.1607808619737625,-0.0434508286416531,-0.0630646347999573,0.0467253662645817,-0.0850183889269829,0.0327854491770267,0.2028924971818924,0.4897454082965851,-0.0970613285899162,0.0489688776433468,-0.0030162953771651) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.0016830641543493,0.0805390849709511,-0.1892860084772110,-0.1161972433328629,-0.0632022395730019,0.1641979813575745,0.0994559228420258,-0.2015440464019775,0.0025371038354933,0.0016705504385754,0.0146092707291245,0.0851408392190933,-0.1325370669364929,0.0693494006991386,-0.0077681690454483,0.0221750363707542) * MODEL23_texOff(vec2(1,0)); +res += mat4(0.1509591937065125,0.0103544639423490,-0.0993898361921310,-0.1025217771530151,-0.3009583950042725,-0.0696848407387733,-0.0247161574661732,0.0697777643799782,-0.0050856992602348,-0.1217825189232826,0.0495748966932297,0.1007262021303177,-0.3699915111064911,0.0564243532717228,0.0082164555788040,0.0585284866392612) * MODEL24_texOff(vec2(1,0)); +res += mat4(0.0351840443909168,-0.0647222995758057,-0.0100252823904157,-0.0335104949772358,-0.2296986281871796,-0.1618685126304626,0.0621194280683994,-0.0818901062011719,0.1464237421751022,0.0368709973990917,-0.0003796320233960,-0.0569860376417637,-0.2498854845762253,-0.1455738246440887,0.0041685332544148,-0.0121320234611630) * MODEL21_texOff(vec2(1,1)); +res += mat4(0.2348484843969345,0.0012038116110489,-0.0960916578769684,0.1704002171754837,-0.2120207697153091,0.0348598435521126,-0.0052639539353549,0.0917042419314384,-0.7559375166893005,-0.2539097964763641,0.0407256148755550,-0.1221201717853546,0.3407650887966156,-0.1105026379227638,-0.0182420276105404,-0.0694810226559639) * MODEL22_texOff(vec2(1,1)); +res += mat4(-0.0135694928467274,-0.0555824525654316,-0.0049720159731805,-0.0731092318892479,-0.2569287121295929,0.2798099219799042,-0.0756197869777679,-0.0065567190758884,0.1923488527536392,-0.0026427132543176,-0.0308974441140890,0.0103814210742712,0.1518303751945496,0.0891486555337906,-0.0057648457586765,-0.0346083641052246) * MODEL23_texOff(vec2(1,1)); +res += mat4(-0.1657511144876480,0.0101053500548005,0.0973210036754608,-0.0716674402356148,0.2944849431514740,0.0328244790434837,-0.0530092269182205,-0.0151719739660621,0.1255925446748734,0.0991518944501877,0.0034502455964684,0.0031958257313818,-0.0669909268617630,0.0833601877093315,-0.0631546378135681,0.0264812838286161) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0738428458571434,-0.0537280328571796,0.1541616767644882,0.0600824654102325) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 4_2 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL2 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-1.3576488494873047,-1.2308499813079834,-0.0150942681357265,-0.1689438074827194); +res += mat4(0.0002222305047326,0.2126581817865372,-0.4436426460742950,-0.0265662744641304,0.0120948767289519,0.2213644683361053,-0.1760943531990051,0.1429262906312943,-0.2877714037895203,-0.0088296765461564,-1.9501984119415283,0.0885886475443840,-0.1727663576602936,-0.1734728217124939,-1.9370113611221313,-0.0425419993698597) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(-0.0526014566421509,0.0003678515495267,0.2852052450180054,-0.0790593400597572,-0.3033583164215088,-0.1894276589155197,-1.5888235569000244,-0.0376820005476475,0.0662743598222733,-0.4705247879028320,-0.8843554258346558,0.0803821012377739,0.1606564372777939,-0.1361556947231293,0.0592208355665207,0.0616206489503384) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(-0.0321790128946304,0.2487015426158905,-0.3988892734050751,0.0128471786156297,-0.0173364486545324,-0.1853401660919189,-0.2320190221071243,-0.0286743044853210,-0.0776202753186226,0.0980081930756569,0.0480991043150425,0.0124340718612075,-0.0705425217747688,0.0209217481315136,-0.5196899771690369,-0.0973696857690811) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(-0.0016310828505084,-0.1694957464933395,-3.7118730545043945,-0.0495798103511333,-0.0887507721781731,-0.1900598108768463,0.1969994455575943,-0.1086452603340149,-0.0323995985090733,-0.1345285028219223,0.1391065418720245,0.0422845482826233,0.5854858160018921,-0.8024836182594299,-1.3573205471038818,0.1715474575757980) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(-0.5026074051856995,0.9941442608833313,-0.1181278079748154,-0.1071377545595169,-0.3640037477016449,0.1423653513193130,0.1483183354139328,0.1491519063711166,0.4714116454124451,-0.6614524722099304,0.0689334198832512,0.4130813181400299,-0.2428199052810669,-0.5482697486877441,-0.0643231868743896,0.0820593982934952) * MODEL21_texOff(vec2(-1,0)); +res += mat4(0.3884255290031433,0.0864198803901672,0.0709599480032921,-0.0727549865841866,-0.0210617538541555,-0.5082446336746216,0.0696677193045616,-0.0653665512800217,-0.3965116739273071,-0.5612360239028931,-0.0430528111755848,-0.1742940098047256,-0.0391180962324142,0.0120964674279094,0.0278037898242474,-0.1474379450082779) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.0801782086491585,-0.3312005102634430,-0.0722291469573975,0.1868390589952469,-0.1296129226684570,-0.0983095318078995,0.1288020163774490,0.0442728921771049,-0.1188574805855751,-0.2784206569194794,0.0334004350006580,0.0193342156708241,-0.2584644556045532,0.2669636309146881,-0.0028693764470518,-0.1062500998377800) * MODEL23_texOff(vec2(-1,0)); +res += mat4(0.0388953760266304,0.0024954907130450,-0.1337166726589203,-0.1613133698701859,0.1160835772752762,0.1638180911540985,-0.0579901784658432,0.0131390430033207,-0.2732858955860138,-0.3843875527381897,-0.0702876299619675,-0.1991503983736038,-0.6187487840652466,0.1528591811656952,0.0061654588207603,-0.2680108845233917) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.2792676091194153,0.0347407497465611,-0.0249916408210993,-0.0471252836287022,0.0655104964971542,0.2337010949850082,0.0092136999592185,0.0498593896627426,0.2532851994037628,-0.3329302668571472,0.0197737384587526,0.2485453784465790,-0.0320697724819183,-0.2859528362751007,-0.0262277740985155,-0.0102716153487563) * MODEL21_texOff(vec2(-1,1)); +res += mat4(-0.1766127049922943,-0.2082416713237762,0.0884197950363159,0.0531922541558743,0.0156908091157675,0.0239643827080727,0.0414093174040318,0.0693400129675865,-0.0447647050023079,0.0395914763212204,0.0231642629951239,-0.0426138713955879,-0.1834529191255569,0.0084871575236320,-0.0274198353290558,-0.0644422397017479) * MODEL22_texOff(vec2(-1,1)); +res += mat4(-0.0741052180528641,0.0246290937066078,-0.0369153693318367,0.0561013817787170,0.1028454825282097,0.0061585321091115,-0.0537896417081356,-0.0337303876876831,-0.0662548840045929,-0.0498280376195908,0.0457142703235149,0.0811578556895256,-0.1037622764706612,-0.0888546183705330,-0.0436059087514877,-0.0936727076768875) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.2277279943227768,-0.1982262581586838,-0.0134356319904327,-0.2890455722808838,-0.0378793254494667,0.0101268338039517,-0.0035741112660617,-0.0955145284533501,-0.0813091322779655,-0.0232999380677938,0.0124657666310668,0.0689150840044022,0.0433216728270054,0.2974031269550323,0.0363154485821724,0.0258811712265015) * MODEL24_texOff(vec2(-1,1)); +res += mat4(-0.0491647906601429,0.0150416148826480,0.0893379226326942,0.1105656847357750,-0.1163008585572243,-0.1098743379116058,0.0009594966541044,-0.0562435500323772,0.0399161949753761,0.0971821621060371,0.0255073197185993,0.0342289730906487,-0.1388117969036102,-0.2983616590499878,-0.0290130954235792,-0.0430332459509373) * MODEL21_texOff(vec2(0,-1)); +res += mat4(0.1405151784420013,-0.1738028973340988,0.0729382410645485,0.0060116075910628,-0.1093452870845795,-0.3609048128128052,0.0800551176071167,-0.1479738205671310,-0.0661064237356186,0.0784058421850204,0.0276903901249170,-0.1308635324239731,-0.3087964355945587,0.2989252507686615,0.0413251183927059,0.0298706330358982) * MODEL22_texOff(vec2(0,-1)); +res += mat4(-0.4313424229621887,-0.0101253967732191,-0.0788659304380417,0.1731674820184708,-0.0627171993255615,-0.0078195510432124,0.0234318710863590,-0.1402248293161392,-1.7050009965896606,-0.1074014008045197,0.0621128939092159,0.0886992216110229,0.1283528059720993,-0.0102964043617249,-0.0357159823179245,0.0694401115179062) * MODEL23_texOff(vec2(0,-1)); +res += mat4(-0.2309935092926025,-0.3976728916168213,-0.1636141389608383,-0.0505089759826660,0.0542949028313160,-0.0111915767192841,0.0006312167388387,0.1045704483985901,-0.0083215739578009,0.0779492780566216,-0.1483388245105743,-0.1207443773746490,0.5473612546920776,-0.0428715869784355,0.0853060111403465,-0.3940364718437195) * MODEL24_texOff(vec2(0,-1)); +res += mat4(-0.0491685457527637,-0.4690579175949097,0.0852821841835976,0.1396847814321518,0.3277880549430847,0.0143328038975596,0.1600318551063538,-0.0773719325661659,-2.0900523662567139,-0.8753762245178223,-0.0359358787536621,0.5931379199028015,-1.8106154203414917,-1.9298766851425171,-0.0305595826357603,-0.2771121561527252) * MODEL21_texOff(vec2(0,0)); +res += mat4(-0.5724825263023376,-0.3126274943351746,-0.1602590829133987,-0.1358845680952072,-0.3762953877449036,0.4733247160911560,-0.1556626856327057,-0.1226351782679558,0.3881927132606506,-0.7162722349166870,0.0828518494963646,-0.1600222438573837,0.3124102056026459,-0.2831121385097504,0.1034529954195023,0.1893790364265442) * MODEL22_texOff(vec2(0,0)); +res += mat4(0.5791679620742798,0.4442782700061798,-0.0131130153313279,-0.0340854935348034,-0.5826350450515747,0.3008985519409180,0.1346484422683716,-0.0789088234305382,0.2625213563442230,-0.2921890914440155,-0.0083887400105596,-0.0039507765322924,-0.3452711403369904,-1.0642710924148560,0.1451635956764221,0.6255943775177002) * MODEL23_texOff(vec2(0,0)); +res += mat4(-0.5329001545906067,-0.2816036939620972,0.1381849050521851,0.1182930096983910,-0.5080990195274353,-0.4889704585075378,0.1049989685416222,0.3051874935626984,0.7868168354034424,-0.4957133829593658,-0.0782789364457130,0.1021046563982964,-1.4790620803833008,-0.4282301962375641,0.0350809842348099,0.1706625968217850) * MODEL24_texOff(vec2(0,0)); +res += mat4(-0.1630038321018219,-0.1386075019836426,-0.0036164813209325,0.1390982419252396,-0.0548254437744617,0.2364829033613205,-0.0585732832551003,0.0257268603891134,-0.4578105807304382,0.2689254581928253,-0.0008447229629382,0.1336311846971512,-0.2541263699531555,-0.9333946108818054,-0.0084364973008633,-0.1582275032997131) * MODEL21_texOff(vec2(0,1)); +res += mat4(-0.0611987821757793,0.3971358239650726,0.0519041791558266,-0.2514325678348541,-0.4202302098274231,0.1293289810419083,0.0303316470235586,-0.1522188931703568,-0.3939264118671417,-0.8553654551506042,0.0072963964194059,0.0974675714969635,-0.2082433849573135,-0.0826819464564323,-0.0346855260431767,-0.0538582429289818) * MODEL22_texOff(vec2(0,1)); +res += mat4(-0.3731344044208527,-0.3428409397602081,-0.0580359585583210,0.0011560770217329,-0.4720404148101807,0.0411235652863979,-0.0730860307812691,-0.1378994882106781,-0.2114659398794174,-0.2510804831981659,0.0324120186269283,-0.0588292889297009,-0.0750492289662361,0.0516041405498981,0.0142624052241445,0.0762141942977905) * MODEL23_texOff(vec2(0,1)); +res += mat4(0.2003266066312790,-0.3097744882106781,-0.0497338101267815,0.1900421231985092,0.2505185008049011,0.2198565602302551,0.0431300476193428,0.0684944465756416,-0.5235838890075684,0.0500761978328228,0.0365656577050686,-0.0031358739361167,-0.2059436887502670,0.1846282482147217,0.0071397400461137,0.0693401098251343) * MODEL24_texOff(vec2(0,1)); +res += mat4(-0.0042014140635729,-0.0525740236043930,-0.0171905551105738,-0.0581245087087154,0.0485358685255051,-0.0782260224223137,-0.0030551524832845,-0.0716038197278976,-0.0489421710371971,-0.0497942827641964,0.0204748343676329,-0.0116019900888205,-0.1027395874261856,-0.2276215404272079,-0.0065505700185895,0.0101102003827691) * MODEL21_texOff(vec2(1,-1)); +res += mat4(-0.0748871713876724,-0.1956935524940491,0.0010277481051162,-0.0725164115428925,-0.1371487826108932,-0.2153946757316589,0.0289711598306894,0.0479902103543282,-0.3926549851894379,-0.3859789967536926,-0.0123246852308512,0.0445899255573750,-0.0373382009565830,-0.0602863170206547,-0.0710507780313492,-0.0711589530110359) * MODEL22_texOff(vec2(1,-1)); +res += mat4(0.0720328018069267,0.2373535484075546,-0.0241738017648458,-0.0539755597710609,-0.0287363287061453,0.1945647597312927,-0.0113422973081470,0.2388608008623123,0.1582005470991135,0.4138346910476685,-0.0016715164529160,0.0711019933223724,-0.1226481050252914,-0.0764425471425056,-0.0585050545632839,-0.0245702769607306) * MODEL23_texOff(vec2(1,-1)); +res += mat4(-0.2826507687568665,-0.1364578604698181,-0.0561215952038765,-0.0743082463741302,-0.2760685682296753,-0.0331254787743092,0.0283021926879883,0.1009528338909149,0.0032031354494393,0.0542680397629738,-0.0284216683357954,-0.0048767263069749,-0.3685995340347290,-0.1592012792825699,0.0067512779496610,0.1387375891208649) * MODEL24_texOff(vec2(1,-1)); +res += mat4(0.0073975622653961,0.2009483426809311,-0.0117812231183052,-0.0740807130932808,-0.2477743327617645,-0.3778422772884369,0.0459524206817150,-0.0773427635431290,0.1540841013193130,0.3211053013801575,-0.0188168492168188,-0.0615393407642841,0.0032952076289803,-0.2650936841964722,-0.0279312487691641,-0.1892956048250198) * MODEL21_texOff(vec2(1,0)); +res += mat4(-0.0320254303514957,0.0943216234445572,-0.0224026683717966,-0.1085841134190559,-0.8607506155967712,-0.9446119070053101,0.0583956837654114,0.0846797972917557,-0.3580646812915802,-0.1429646909236908,0.0066589307971299,0.0307449307292700,0.3498374819755554,0.0596029423177242,-0.0778255090117455,-0.2372472286224365) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.3538910746574402,-0.5438384413719177,0.0300271715968847,0.0259353835135698,-0.0217854585498571,0.1497974097728729,0.0079162567853928,0.1637305915355682,-0.1231346353888512,-0.0285450499504805,-0.0020361966453493,0.0748025998473167,-0.1468269675970078,0.0726128518581390,0.0329792387783527,-0.0343051739037037) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.3467789888381958,-0.6177062988281250,-0.0004547669668682,-0.0695421993732452,0.0771730020642281,0.4323795735836029,-0.0108288945630193,-0.2320528030395508,-0.3504230678081512,-0.2344139665365219,-0.0060447426512837,0.0424748435616493,-0.3702187836170197,-0.1867645382881165,0.0227929949760437,-0.0589118450880051) * MODEL24_texOff(vec2(1,0)); +res += mat4(-0.1212871819734573,-0.0925505831837654,-0.0210698843002319,-0.1102557256817818,0.0964596942067146,-0.1762590408325195,-0.0260235387831926,-0.0322984941303730,-0.2268410772085190,-0.1099716052412987,0.0028596802148968,-0.0435424409806728,0.0338655002415180,-0.0084998104721308,0.0110553447157145,-0.0637936368584633) * MODEL21_texOff(vec2(1,1)); +res += mat4(-0.3963612020015717,-0.7054618597030640,0.0888577476143837,0.0486618503928185,-0.2505936920642853,-0.0695356801152229,0.0166353881359100,0.0361196286976337,0.1280656009912491,0.1052540093660355,-0.0460976138710976,-0.4243462979793549,-0.1481497287750244,-0.3150199055671692,-0.0155357057228684,-0.0100513044744730) * MODEL22_texOff(vec2(1,1)); +res += mat4(0.0335134156048298,-0.0727859139442444,-0.0133455023169518,0.0521334595978260,-0.1833966523408890,0.1802965402603149,0.0792936831712723,0.4655365049839020,0.1774647384881973,0.1161453500390053,0.0228213164955378,0.0274636540561914,0.0343310683965683,-0.0128710521385074,-0.0213328227400780,-0.0579575076699257) * MODEL23_texOff(vec2(1,1)); +res += mat4(0.0513603501021862,0.0107538942247629,-0.0082096224650741,-0.0443236157298088,0.1392785608768463,0.3404515385627747,0.0024068458005786,0.0242234971374273,0.1059209108352661,0.1276680678129196,0.0005027093575336,0.0201072059571743,-0.1857346147298813,-0.1753924787044525,-0.0199812017381191,-0.0288379266858101) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.0588584952056408,0.0545518882572651,0.0072807688266039,0.1775767654180527) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 4_3 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL3 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.1500374227762222,-0.5942718982696533,-0.2223509401082993,-0.7379623055458069); +res += mat4(0.0377564951777458,-0.0878159105777740,-0.0640691071748734,-0.1205077320337296,0.0063348636031151,-0.0615546405315399,0.0725330412387848,0.0315341800451279,0.0305612366646528,-0.1050232648849487,0.0199433136731386,-0.0293507445603609,0.0054702782072127,-0.1033336594700813,-0.0246256664395332,-0.0293234679847956) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(0.0960297584533691,0.0489416979253292,0.0456786714494228,-0.0304410420358181,-0.0264467485249043,-0.1808978915214539,0.0002239939494757,0.0978726968169212,0.0576720982789993,0.0627044662833214,0.1644076406955719,-0.1149405092000961,-0.0502514913678169,0.0530369617044926,-0.0983912944793701,-0.0911485180258751) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(0.0192345343530178,0.0737345293164253,-0.0694067627191544,-0.1192083954811096,-0.0153750851750374,-0.0094519695267081,0.0430041737854481,-0.0007860237383284,0.0574510805308819,-0.0099295461550355,-0.0037663441617042,-0.0417793281376362,-0.0447106771171093,0.0573733784258366,-0.0056610680185258,-0.1495522707700729) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(0.0020685896743089,-0.1271421909332275,-0.0915819332003593,-0.1303324252367020,-0.0046015819534659,-0.0537667907774448,-0.0757439434528351,-0.1034274026751518,-0.0360045954585075,0.1330265849828720,-0.1028348729014397,0.0029844422824681,-0.1337770670652390,0.0038527846336365,0.1660691797733307,-0.1233417540788651) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(0.1424528658390045,-0.3160114586353302,0.1415333896875381,0.3533829748630524,-0.0286452919244766,-0.3519482910633087,-0.0720888450741768,0.0498850271105766,-0.0992853417992592,-0.1978190243244171,0.1384896934032440,-0.9744571447372437,-0.0627422258257866,0.0621821247041225,-0.0077503439970315,-0.6523983478546143) * MODEL21_texOff(vec2(-1,0)); +res += mat4(0.1006538048386574,0.2699738442897797,-0.0071857841685414,0.1695696413516998,0.0032719045411795,-0.6151775121688843,0.0345238298177719,-0.2692067325115204,0.0156748909503222,0.0570620149374008,-0.1344172209501266,-0.1108755916357040,0.0470011979341507,0.1119287982583046,0.0036730696447194,0.0595798902213573) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.0951662063598633,-0.1915390044450760,0.0358977876603603,-0.0575600825250149,0.0578359439969063,-0.1603155881166458,-0.0611245594918728,-0.0717436149716377,-0.0712571591138840,-0.0973955020308495,-0.0607430003583431,-0.2901412248611450,-0.0458060204982758,-0.0617536008358002,0.0254287105053663,0.1835725605487823) * MODEL23_texOff(vec2(-1,0)); +res += mat4(0.0369277596473694,0.1574100255966187,-0.1701986193656921,-0.0723235905170441,-0.0370706990361214,0.0901095569133759,0.0174682717770338,0.1185340285301208,-0.0318144150078297,0.1076717376708984,0.0036862681154162,0.2513314783573151,-0.0918712839484215,0.0061007686890662,-0.0271367914974689,0.0996778458356857) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.2165136039257050,-0.1521220058202744,0.0699792578816414,-0.3011166453361511,0.0376400910317898,0.0138800414279103,-0.0751532092690468,0.2856407761573792,-0.0486437380313873,-0.4256193339824677,-0.0754015594720840,0.1991343349218369,0.0650824233889580,0.0828495621681213,-0.0835029110312462,-0.0316090695559978) * MODEL21_texOff(vec2(-1,1)); +res += mat4(-0.0260196980088949,-0.1864022314548492,-0.0310866907238960,-0.0623466856777668,-0.0642979294061661,-0.1373288780450821,-0.0159831158816814,-0.0124002248048782,0.0798067525029182,0.1961414515972137,0.1806756108999252,-0.1208630427718163,-0.0814799442887306,0.0403802730143070,-0.0328070558607578,-0.1056066974997520) * MODEL22_texOff(vec2(-1,1)); +res += mat4(-0.0299819316715002,-0.0889745429158211,0.0569998808205128,0.0332611165940762,0.0115742832422256,0.1793977320194244,0.0184927303344011,0.2229049056768417,-0.0112913632765412,-0.0566435828804970,0.0235551521182060,-0.0210226234048605,-0.0147442752495408,-0.0738831833004951,-0.0232846438884735,-0.2047595083713531) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.0327938608825207,-0.0907200723886490,-0.0786106139421463,-0.1022977158427238,-0.0338565595448017,0.0219198167324066,0.0460100173950195,-0.0048057329840958,0.0835243389010429,-0.1593090891838074,0.0768458098173141,-0.2045104503631592,0.0142094166949391,0.0893841013312340,0.0081078819930553,0.0187870431691408) * MODEL24_texOff(vec2(-1,1)); +res += mat4(0.0743091925978661,0.1794881671667099,-0.0103652523830533,-0.0236152894794941,0.0288069024682045,0.0337621532380581,-0.2239373475313187,-0.2287402004003525,0.0656228065490723,-0.1356081217527390,-0.0215050932019949,-0.0495702549815178,-0.0080893067643046,-0.0129955671727657,-0.0376574248075485,-0.1526909023523331) * MODEL21_texOff(vec2(0,-1)); +res += mat4(0.1155378967523575,0.0461832843720913,0.0694100186228752,0.0977504998445511,0.1158053204417229,-0.4835779368877411,-0.1165023297071457,-0.3830997645854950,-0.0268404856324196,0.1766329109668732,-0.0935022532939911,0.2643847167491913,0.1049658805131912,-0.2734475135803223,0.1369055956602097,-0.1859778463840485) * MODEL22_texOff(vec2(0,-1)); +res += mat4(0.0853447467088699,-0.2528608143329620,0.1267696619033813,-0.2803182601928711,-0.0168390404433012,-0.0977839827537537,-0.0200390461832285,-0.0927241444587708,0.2636003494262695,-0.3587063848972321,0.0953568816184998,-0.2884494066238403,0.0479793325066566,-0.0213569868355989,0.1081461161375046,0.1447212696075439) * MODEL23_texOff(vec2(0,-1)); +res += mat4(0.0436067730188370,-0.1798084676265717,-0.0948345884680748,-0.2366777062416077,0.0355512723326683,0.0659205242991447,0.0968739762902260,0.0681645944714546,-0.0963704809546471,-0.2047032862901688,0.0296659562736750,0.2185016721487045,0.0729882717132568,-0.2979782521724701,0.0987690463662148,0.1509135216474533) * MODEL24_texOff(vec2(0,-1)); +res += mat4(-0.3182998895645142,0.3356809318065643,0.0111110834404826,0.0150333689525723,0.1041853725910187,0.4490790963172913,0.0896795317530632,-0.0866959914565086,0.0392647124826908,-0.1925222277641296,0.1741016954183578,-0.4646819829940796,0.0497794710099697,-0.5663666725158691,-0.2714867889881134,-0.0592256747186184) * MODEL21_texOff(vec2(0,0)); +res += mat4(0.1111427769064903,-0.1000821515917778,-0.0178503897041082,-0.1479834318161011,-0.1389848440885544,-1.0152058601379395,0.0488378591835499,-0.9044187664985657,-0.0814175009727478,0.1881174147129059,0.1010084003210068,-0.0512255541980267,-0.2274746447801590,0.1815966516733170,0.1712158620357513,0.4774157404899597) * MODEL22_texOff(vec2(0,0)); +res += mat4(-0.0059305485337973,-0.1144885420799255,-0.2710224986076355,-0.1402731090784073,0.1813898980617523,-0.2947344481945038,-0.1376086026430130,0.0725278779864311,-0.3061678409576416,-0.5112835168838501,0.0217667482793331,-0.8153681159019470,-0.0844952687621117,-0.2149795889854431,0.1889654546976089,-1.2212493419647217) * MODEL23_texOff(vec2(0,0)); +res += mat4(-0.0341001749038696,-0.1420918703079224,0.1134353876113892,-0.4964024424552917,-0.1400564312934875,-0.1850375086069107,-0.0509905591607094,-0.3107085227966309,-0.1972130686044693,-0.2262127101421356,-0.2440759539604187,-0.9205277562141418,0.0067904163151979,-0.1521847695112228,-0.0305872578173876,-0.1767082661390305) * MODEL24_texOff(vec2(0,0)); +res += mat4(0.1605410724878311,0.3388625383377075,0.0714963674545288,-0.1148637980222702,-0.0052194483578205,-0.0250399727374315,0.0900572389364243,-0.2010394185781479,-0.0373205728828907,0.2243118286132812,0.0030151007231325,-0.2477314919233322,-0.0448656566441059,-0.1584238708019257,-0.0071867620572448,-0.1099929586052895) * MODEL21_texOff(vec2(0,1)); +res += mat4(0.2631414830684662,0.1322173625230789,0.0458182729780674,-0.3096752762794495,-0.0986642092466354,-0.0550793372094631,0.0348238013684750,-0.1960585862398148,0.0001171030016849,-0.0951457470655441,-0.0208438690751791,0.3503931760787964,-0.1294434219598770,-0.2129892706871033,-0.0337771810591221,-0.3645725846290588) * MODEL22_texOff(vec2(0,1)); +res += mat4(0.0230048038065434,-0.3137907087802887,-0.0455664396286011,-0.3168298602104187,-0.1254154592752457,-0.3636295497417450,0.0555187463760376,-0.5812803506851196,0.0968207567930222,0.0430275276303291,0.0260681677609682,0.0166934933513403,-0.0593838915228844,-0.0298860482871532,-0.0491982251405716,0.1096109300851822) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.0425861254334450,0.2389982491731644,-0.2154820412397385,0.0344516113400459,0.0133962258696556,0.1938802748918533,-0.0303258616477251,0.1895022094249725,0.1505155861377716,-0.2698439359664917,0.0434911847114563,-0.0383978523313999,-0.0998124107718468,-0.0785168483853340,0.0346746817231178,-0.3279105126857758) * MODEL24_texOff(vec2(0,1)); +res += mat4(-0.0323498025536537,0.0846708193421364,0.0160553399473429,0.0838855579495430,0.0505255311727524,0.0333184413611889,0.0966457277536392,-0.0295467507094145,0.0452348515391350,-0.0351583436131477,-0.0023901220411062,-0.0617642849683762,-0.1099836751818657,0.0652595907449722,-0.1435693353414536,0.0057237530127168) * MODEL21_texOff(vec2(1,-1)); +res += mat4(-0.0193974375724792,0.0016734238015488,0.0061322576366365,0.1420889347791672,0.1173601076006889,-0.2071816623210907,-0.0622596442699432,-0.1906256228685379,-0.0246932730078697,-0.0615690983831882,0.1726177930831909,-0.2643700242042542,-0.0333817377686501,0.0129060298204422,0.0331733487546444,-0.1577276885509491) * MODEL22_texOff(vec2(1,-1)); +res += mat4(0.0801763385534286,-0.0372839346528053,-0.0168425142765045,-0.2399083971977234,-0.0189349614083767,0.0942898318171501,-0.0729247778654099,-0.0238776616752148,0.1150797605514526,0.1397802680730820,-0.0183684974908829,0.1276283115148544,-0.0157978404313326,-0.0528203174471855,-0.1145365387201309,0.1804308444261551) * MODEL23_texOff(vec2(1,-1)); +res += mat4(0.0500828027725220,-0.0335871949791908,-0.2075745761394501,-0.1354399025440216,-0.0421485789120197,-0.1626830250024796,-0.0355155467987061,0.2916752696037292,0.0702783986926079,0.1286368221044540,0.0692304298281670,-0.0455261133611202,-0.0741670653223991,-0.0544008165597916,-0.0917922481894493,-0.0997074395418167) * MODEL24_texOff(vec2(1,-1)); +res += mat4(-0.0355155616998672,-0.0909207761287689,-0.1253741830587387,0.1635140925645828,0.1276675611734390,-0.0806095600128174,-0.1514761596918106,0.0043431958183646,0.0002952353679575,-0.0139419650658965,0.0475891306996346,0.0351057685911655,-0.0728895291686058,-0.1997010409832001,-0.0971152633428574,-0.1916919946670532) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.1372255682945251,-0.0207272171974182,0.0889865458011627,-0.2631049454212189,-0.2188265025615692,0.0158922318369150,0.1334166079759598,-0.0689261108636856,0.0453482381999493,-0.0496409982442856,-0.2181027680635452,0.1843331903219223,-0.1296746879816055,0.0919201672077179,-0.1342144906520844,0.1672039926052094) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.1896142363548279,-0.0512465536594391,0.0234036892652512,-0.1613356769084930,0.0824260115623474,0.1054236441850662,0.0918725058436394,-0.3392824828624725,0.1978214532136917,0.0938010141253471,0.0898380726575851,-0.0236080754548311,-0.0496704280376434,-0.2935241758823395,0.0667751133441925,-0.0413334220647812) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.2518352568149567,-0.0967062264680862,-0.0311718937009573,-0.1696653813123703,0.0618922710418701,-0.1388243883848190,-0.1375103592872620,-0.0170210711658001,-0.1778676807880402,-0.0918823927640915,0.0683643892407417,0.1721435934305191,-0.0004981383099221,-0.0015442923177034,0.0468944981694221,-0.2256978154182434) * MODEL24_texOff(vec2(1,0)); +res += mat4(0.0285391937941313,-0.0687587484717369,-0.0310993380844593,0.0689143836498260,-0.0630959719419479,-0.0410000756382942,0.0744176656007767,0.1270437687635422,-0.0114579461514950,-0.1284157335758209,0.0115379542112350,-0.2296856939792633,-0.0008102712454274,0.0451832450926304,0.0238849166780710,-0.1001020148396492) * MODEL21_texOff(vec2(1,1)); +res += mat4(0.1745711863040924,-0.1091389134526253,0.1056216657161713,-0.2693535089492798,0.0516469962894917,-0.0944463908672333,-0.1669354140758514,-0.2559992372989655,-0.1755313277244568,0.0471935942769051,0.1343710720539093,-0.0531820692121983,-0.0740357264876366,0.0620074383914471,0.0233539957553148,0.1963060945272446) * MODEL22_texOff(vec2(1,1)); +res += mat4(0.0198090206831694,-0.0145830921828747,0.0248054042458534,0.0190177466720343,0.0270872525870800,0.1001457944512367,-0.1013614386320114,-0.2797769010066986,0.0309396479278803,-0.0560803562402725,-0.0174046792089939,0.0804931297898293,0.0086273970082402,0.1054844632744789,-0.0108949420973659,0.0660903900861740) * MODEL23_texOff(vec2(1,1)); +res += mat4(-0.0267767459154129,-0.2279723435640335,0.0914289280772209,0.0536161959171295,-0.1565176099538803,-0.1910002529621124,0.0184659957885742,-0.0085408445447683,0.1435611546039581,0.0478647537529469,-0.0153546296060085,-0.1074507609009743,-0.0590481050312519,-0.0880034863948822,-0.0324065126478672,-0.1419066786766052) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(0.1263981312513351,0.1096418797969818,0.0206240471452475,0.0498061478137970) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC mapping 4_4 +//!BIND MODEL21 +//!BIND MODEL22 +//!BIND MODEL23 +//!BIND MODEL24 +//!SAVE MODEL4 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.6117309331893921,-0.2601747810840607,-0.1224166676402092,-0.0921374112367630); +res += mat4(0.0588301829993725,0.1117252707481384,0.0290296375751495,-0.0075088986195624,-0.2325710505247116,-0.0747735947370529,0.0284211989492178,0.0291971098631620,-0.0733436122536659,-0.0913104042410851,0.0549855045974255,-0.0942513719201088,-0.1460192650556564,0.1396849751472473,0.0367813184857368,-0.1054962798953056) * MODEL21_texOff(vec2(-1,-1)); +res += mat4(-0.0784313306212425,-0.0461387373507023,-0.0727669522166252,0.0118116578087211,-0.1512983143329620,-0.0355164147913456,0.0369271598756313,-0.0068201655521989,-0.2708147764205933,-0.1983853131532669,-0.3019596636295319,-0.1962331533432007,0.0822714418172836,-0.0831912979483604,-0.0377775803208351,0.0309812836349010) * MODEL22_texOff(vec2(-1,-1)); +res += mat4(-0.3031086027622223,-0.2022219151258469,0.0690917819738388,0.0061479001305997,-0.0775924474000931,0.0018291157903150,0.0206548795104027,0.0031519813928753,-0.0045580794103444,0.1408297717571259,0.0968878120183945,-0.0543158203363419,-0.0320595875382423,-0.0856794491410255,-0.0074029173702002,-0.0381582640111446) * MODEL23_texOff(vec2(-1,-1)); +res += mat4(0.0502191707491875,-0.0144976442679763,-0.0172777995467186,0.0511240437626839,-0.1379772424697876,0.0781990662217140,-0.0490357093513012,0.0095915235579014,0.0698529779911041,-0.1821251213550568,0.0341909043490887,0.0522364303469658,0.3007288575172424,0.5696339011192322,0.0366077609360218,0.1034736111760139) * MODEL24_texOff(vec2(-1,-1)); +res += mat4(-0.0080737425014377,-0.0355745144188404,0.0014717100420967,0.0775283500552177,0.0521322488784790,0.0694085732102394,-0.0287078022956848,0.0724895447492599,-0.3758259117603302,0.2388086169958115,-0.2982285916805267,0.0783643573522568,-0.3888894319534302,-0.1828081458806992,0.0064303274266422,-0.0228065531700850) * MODEL21_texOff(vec2(-1,0)); +res += mat4(0.1062617301940918,-0.1536732017993927,0.1790993064641953,-0.1221694126725197,-0.0649711787700653,-0.0404628328979015,0.0378675349056721,0.0112943490967155,-0.1770968586206436,-0.0647308602929115,0.0703201144933701,-0.0830667614936829,0.1437005847692490,0.2010622769594193,-0.1075596585869789,0.0721796378493309) * MODEL22_texOff(vec2(-1,0)); +res += mat4(-0.4432499110698700,0.0662404224276543,-0.0012972981203347,-0.0641796439886093,-0.1632681190967560,0.2097074985504150,0.0027037130203098,0.0656440407037735,-0.1145439520478249,-0.0657788291573524,0.0632528811693192,0.0139947058632970,-0.3886598050594330,0.0857761129736900,-0.1246560290455818,-0.0749224871397018) * MODEL23_texOff(vec2(-1,0)); +res += mat4(-0.1543783098459244,-0.0005317142349668,0.0304446890950203,-0.0185355897992849,-0.0794916823506355,-0.0090007977560163,0.0349782891571522,-0.0200218036770821,-0.0618562102317810,-0.0984001308679581,-0.0182003285735846,-0.0028434169944376,0.2633704543113708,0.1335592716932297,0.0175556372851133,0.0097391176968813) * MODEL24_texOff(vec2(-1,0)); +res += mat4(-0.1916415244340897,0.0176885668188334,-0.0010301425354555,-0.0303842704743147,0.4026271402835846,0.0028871756512672,0.0946683585643768,0.0258910451084375,-0.2777474820613861,-0.1369234770536423,0.1530053317546844,0.0188194774091244,0.0261684823781252,-0.0732094198465347,0.0251430086791515,-0.0204035751521587) * MODEL21_texOff(vec2(-1,1)); +res += mat4(-0.2784962654113770,0.0650645866990089,-0.0385713949799538,0.0038350508548319,0.1441659182310104,0.0722042471170425,-0.0898543149232864,0.0076085105538368,-0.1453610211610794,-0.1651353538036346,-0.0508589819073677,0.0093160448595881,0.0937918201088905,-0.0456123910844326,0.0581589378416538,0.0176383275538683) * MODEL22_texOff(vec2(-1,1)); +res += mat4(-0.0702055096626282,-0.0406810194253922,-0.0525443106889725,0.0150361964479089,0.1566798388957977,-0.0621452368795872,0.0586791262030602,-0.0347721055150032,-0.1604612320661545,0.1239183172583580,-0.0497633032500744,0.0080846343189478,-0.0567909032106400,0.0014030648162588,0.0475553460419178,-0.0038453373126686) * MODEL23_texOff(vec2(-1,1)); +res += mat4(-0.1280421465635300,-0.0095578841865063,-0.0669014528393745,0.0325631424784660,-0.0902950242161751,-0.0520857498049736,-0.0410674624145031,0.0060283262282610,-0.2110912352800369,0.2167985439300537,-0.0017860599327832,0.0106685347855091,0.0589333102107048,0.0673409774899483,0.1835579872131348,-0.0222739614546299) * MODEL24_texOff(vec2(-1,1)); +res += mat4(0.3193575441837311,0.1526530683040619,0.0688570886850357,-0.0523017607629299,-0.0355069674551487,-0.0414056740701199,0.0593797154724598,-0.1457111537456512,0.1123095601797104,0.0547662116587162,-0.0618266090750694,0.0241949036717415,-0.5081633329391479,0.2198492884635925,-0.2311547696590424,0.0886767283082008) * MODEL21_texOff(vec2(0,-1)); +res += mat4(0.0350187979638577,0.1337995529174805,-0.1493063867092133,-0.0603591017425060,0.2146350592374802,0.0859285071492195,-0.1323813050985336,-0.0390987657010555,-0.2041820734739304,-0.1156193763017654,0.0565129481256008,0.0598160736262798,-0.0166044365614653,-0.0735203996300697,0.0949761494994164,0.0783202648162842) * MODEL22_texOff(vec2(0,-1)); +res += mat4(-0.2893728017807007,-0.2627750039100647,0.3722718954086304,-0.0792744681239128,-0.2059971690177917,0.0250780824571848,-0.0059698885306716,0.0627116337418556,-0.2310166954994202,0.1220641285181046,0.4420708715915680,-0.0523065738379955,0.6394421458244324,0.0480617098510265,-0.1123329624533653,-0.1512102782726288) * MODEL23_texOff(vec2(0,-1)); +res += mat4(-0.3148698806762695,-0.2718702256679535,0.0451150685548782,-0.0301917884498835,-0.1496489495038986,0.1856218129396439,-0.0316816195845604,-0.0149062424898148,0.1320873796939850,-0.4058004319667816,0.0752313062548637,-0.0841734260320663,0.0650784373283386,0.2807834744453430,0.1322926729917526,0.2572420537471771) * MODEL24_texOff(vec2(0,-1)); +res += mat4(-0.5741783976554871,0.0708733573555946,-0.0278440415859222,0.0807770118117332,-0.4908486306667328,-0.0314228646457195,-0.2657569348812103,0.3589760959148407,0.2063553035259247,-0.1892435550689697,0.0999130755662918,-0.0633614584803581,-1.3165725469589233,-0.2463347613811493,-0.0429119206964970,-0.0830666646361351) * MODEL21_texOff(vec2(0,0)); +res += mat4(-0.6296326518058777,0.0223524719476700,0.3363357186317444,-0.0321827568113804,0.1343389004468918,-0.0002569323114585,0.3277089595794678,-0.0482071489095688,-0.7526341080665588,-0.4833517670631409,-0.1878197491168976,0.0168213583528996,0.5115908384323120,0.3069213628768921,-0.0195354912430048,0.2755083739757538) * MODEL22_texOff(vec2(0,0)); +res += mat4(0.4816035926342010,-0.0118750659748912,-0.5715824961662292,0.3641453385353088,-0.2267543822526932,0.3607449531555176,0.1609801650047302,0.0312804840505123,-1.1321628093719482,-0.0340943932533264,0.5982204079627991,-0.0645050927996635,-0.9616246819496155,-0.0790921300649643,0.0994648709893227,-0.0525478385388851) * MODEL23_texOff(vec2(0,0)); +res += mat4(-0.1681258827447891,0.3006833493709564,-0.1290128231048584,0.0994041785597801,0.0419847816228867,-0.0162974465638399,0.0750185772776604,0.0067303152754903,-0.5632289052009583,-0.6013663411140442,0.1094968020915985,-0.0669717490673065,-0.0433492772281170,0.1537660658359528,0.2179587930440903,0.2389836013317108) * MODEL24_texOff(vec2(0,0)); +res += mat4(-0.1355514526367188,0.0764053314924240,0.0782326161861420,0.0052023138850927,-0.0493257232010365,-0.0347116813063622,0.2622268795967102,-0.0836203470826149,0.2588089704513550,0.0903544947504997,-0.1340770274400711,-0.0735411271452904,-0.8339405655860901,-0.3164103925228119,0.0937255769968033,0.0183939673006535) * MODEL21_texOff(vec2(0,1)); +res += mat4(-0.0299103204160929,0.2381526976823807,-0.0743641108274460,0.0692583620548248,0.2554559111595154,0.0813719108700752,-0.1800950467586517,-0.0378679186105728,-0.7257626652717590,-0.1854881495237350,-0.0862643644213676,-0.0597154051065445,-0.2556095719337463,-0.1928845345973969,0.0932397618889809,-0.0223879218101501) * MODEL22_texOff(vec2(0,1)); +res += mat4(-0.3263361155986786,-0.0260708797723055,-0.1460820287466049,-0.0375549383461475,-0.6202657222747803,0.0670073628425598,0.1381717473268509,-0.0525274127721786,0.0015859459526837,0.0923536643385887,-0.0649344399571419,0.0501156300306320,0.1358997970819473,0.1016764789819717,-0.0658142641186714,0.0008362260996364) * MODEL23_texOff(vec2(0,1)); +res += mat4(-0.1045667529106140,-0.1845665425062180,0.1492197811603546,-0.0243269335478544,0.2153147906064987,0.0400264747440815,-0.0199366249144077,-0.0087428214028478,0.2773247361183167,0.2803338170051575,-0.3493885695934296,0.0705009847879410,-0.0007065620156936,0.0782219246029854,0.1402112096548080,-0.0266525372862816) * MODEL24_texOff(vec2(0,1)); +res += mat4(-0.0687473416328430,-0.0976584330201149,-0.0204729977995157,0.0394477620720863,-0.0760568827390671,-0.1528743654489517,-0.0427904799580574,-0.0270075369626284,-0.0428314357995987,0.1161894425749779,0.0378351584076881,-0.0166105981916189,-0.3585070669651031,0.0260688569396734,-0.0470666438341141,-0.0668430775403976) * MODEL21_texOff(vec2(1,-1)); +res += mat4(-0.2025795578956604,-0.1040630340576172,0.0077593000605702,-0.0085673155263066,0.2008401304483414,0.0450796410441399,-0.0514111481606960,0.0697687268257141,-0.8376560807228088,-0.0572007037699223,0.0195921938866377,-0.0302999522536993,0.1791645884513855,0.0291367080062628,0.0256281513720751,0.1226494833827019) * MODEL22_texOff(vec2(1,-1)); +res += mat4(0.2643510997295380,-0.1555069983005524,-0.0438335798680782,-0.0753439068794250,-0.0654477328062057,-0.1468031555414200,0.0201415866613388,0.0347742103040218,0.4952626526355743,0.0354427844285965,0.1585405319929123,0.0533435493707657,-0.1004230752587318,-0.0073178131133318,-0.0025874432176352,-0.0168156363070011) * MODEL23_texOff(vec2(1,-1)); +res += mat4(0.0305943284183741,-0.0923460796475410,0.2677863836288452,-0.1577823907136917,-0.1658991575241089,0.1487926542758942,-0.0842318758368492,0.1213353276252747,0.1446245312690735,0.1689673364162445,0.1651263386011124,0.0070332037284970,-0.1205493360757828,0.0841202288866043,0.0706500336527824,0.1018933504819870) * MODEL24_texOff(vec2(1,-1)); +res += mat4(0.0058475290425122,-0.0147246504202485,-0.0711641162633896,0.0262836534529924,-0.1645931154489517,-0.0062692351639271,-0.0730468332767487,-0.0025198473595083,-0.0626813247799873,-0.0695614293217659,0.0290160402655602,-0.0316769331693649,-0.6183116436004639,-0.0400702990591526,-0.1214808225631714,0.0002649093512446) * MODEL21_texOff(vec2(1,0)); +res += mat4(0.1040114238858223,0.0050341086462140,0.1487061679363251,-0.0124844061210752,-0.0512321032583714,-0.0299732834100723,0.0485554710030556,0.0502416752278805,-0.7323374152183533,0.0262728352099657,-0.2605053484439850,-0.0820339992642403,0.3148089647293091,0.0988902598619461,-0.0878399088978767,0.0049472432583570) * MODEL22_texOff(vec2(1,0)); +res += mat4(-0.6670171618461609,-0.0419046916067600,-0.1335263699293137,-0.1558401286602020,0.3467949926853180,0.0999339222908020,0.0650746077299118,0.0115758376196027,0.2258281856775284,0.0860922858119011,0.0232560746371746,-0.0429502837359905,0.0903110504150391,-0.0678725913167000,-0.0120888268575072,-0.0215729400515556) * MODEL23_texOff(vec2(1,0)); +res += mat4(-0.9070100188255310,0.2937509715557098,-0.2831438779830933,0.1536857038736343,-0.3677567541599274,-0.0543512813746929,0.0991915985941887,-0.0454416386783123,-0.0357653610408306,0.0163458101451397,-0.0842088386416435,-0.0565353184938431,-0.3366691768169403,0.1085810437798500,0.0516485534608364,0.0113117303699255) * MODEL24_texOff(vec2(1,0)); +res += mat4(-0.0568292513489723,0.0104662915691733,0.0623478703200817,-0.0014252853579819,-0.0979081839323044,0.0609358027577400,0.1053483039140701,0.0708121657371521,-0.1396476030349731,0.0478940345346928,-0.0240719709545374,0.0486258938908577,-0.0907382741570473,-0.0414548330008984,0.0288387108594179,-0.0126393558457494) * MODEL21_texOff(vec2(1,1)); +res += mat4(-0.5088644623756409,0.1501386016607285,-0.0918121039867401,-0.0677468329668045,-0.0786677002906799,-0.1030455604195595,0.0109195560216904,-0.0461675822734833,-0.4709203541278839,-0.2292010337114334,0.1345106065273285,-0.0504489876329899,0.0237664654850960,-0.0646439492702484,-0.0267701372504234,0.0238957721740007) * MODEL22_texOff(vec2(1,1)); +res += mat4(-0.0895369723439217,-0.0949736088514328,-0.0357055142521858,0.0383817180991173,0.1084862425923347,-0.0324429087340832,-0.0470693334937096,0.0320119112730026,-0.0884663164615631,0.0110423937439919,-0.0695655867457390,-0.0641552731394768,-0.0534201189875603,0.1069035902619362,-0.0068280585110188,-0.0280597191303968) * MODEL23_texOff(vec2(1,1)); +res += mat4(0.0298939421772957,-0.2368630617856979,0.1043336987495422,-0.0642990842461586,0.1983366906642914,0.0042332601733506,-0.0626417845487595,0.0139195146039128,-0.0387627035379410,0.0920238122344017,-0.0391244664788246,-0.0123970182612538,-0.0278437342494726,-0.0243430268019438,0.0272651109844446,-0.0030155780259520) * MODEL24_texOff(vec2(1,1)); +res = max(res, vec4(0.0)) + vec4(-0.0744055807590485,0.0582032799720764,0.1600257009267807,0.2022268623113632) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC sub-band residuals 1 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!BIND FEATURE1 +//!SAVE RES1 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0218873005360365,-0.0149576151743531,-0.0256180185824633,-0.0858701169490814); +res += mat4(0.0221681538969278,-0.2356450855731964,0.0643408298492432,-1.1138032674789429,0.1064624637365341,-0.8914715647697449,-0.0294173005968332,-0.0022653567139059,-0.0252699330449104,-0.1230333074927330,-0.0858245044946671,0.0581396929919720,0.0181231293827295,0.1111536994576454,0.0935193970799446,-0.0742835476994514) * MODEL1_texOff(0); +res += mat4(0.0736283138394356,0.0147979715839028,0.0464740432798862,-0.2148900032043457,0.4483453333377838,0.2830028533935547,0.0562076941132545,0.3613960742950439,0.0668433532118797,-0.2692199349403381,0.0970326364040375,0.1248507574200630,0.0208180323243141,0.0532030761241913,-0.0098368674516678,0.0498967394232750) * MODEL2_texOff(0); +res += mat4(-0.0427469126880169,0.1918861865997314,-0.0468214377760887,-0.1154606193304062,-0.8018212318420410,0.3941400647163391,0.0562537945806980,0.2459305673837662,-0.0034576300531626,-0.4044605493545532,0.0631769001483917,0.2570861279964447,0.3880051076412201,0.2102442532777786,0.1035031601786613,-0.1845092624425888) * MODEL3_texOff(0); +res += mat4(-0.0736504569649696,-0.4329134225845337,-0.0331883579492569,0.4859155714511871,0.0300663169473410,-0.1431413143873215,0.0900689288973808,0.0027509836945683,-0.0178727619349957,-0.1037448570132256,-0.0429062619805336,0.0104557601734996,-0.0787484720349312,0.0334280952811241,-0.0210850816220045,-0.2790249288082123) * MODEL4_texOff(0); +res += FEATURE1_texOff(0); +res = max(res, vec4(0.0)) + vec4(-0.0009421827271581,0.0372365266084671,0.5457454919815063,-0.0045580286532640) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC sub-band residuals 2 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!BIND FEATURE2 +//!SAVE RES2 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0132746873423457,0.0731124207377434,0.0296694040298462,-0.0570529401302338); +res += mat4(0.0329166017472744,0.0485021844506264,-0.4523101150989532,-0.0322404317557812,-0.0172702632844448,-0.0456021204590797,-0.3700943291187286,0.0706288889050484,-0.0264692343771458,0.0057114795781672,0.1072568818926811,-0.0367026627063751,0.0059698573313653,0.0111432811245322,-0.1592733412981033,-0.0146981095895171) * MODEL1_texOff(0); +res += mat4(-0.0338360369205475,-0.1407372504472733,0.8440989255905151,0.2665281593799591,-0.0766022056341171,0.1776377707719803,0.6822218894958496,-0.2348744422197342,-0.0140444673597813,-0.0049600838683546,-0.1120925694704056,0.0485411062836647,0.0048136659897864,-0.0084126451984048,0.0507854782044888,0.0059754410758615) * MODEL2_texOff(0); +res += mat4(0.0534943863749504,-0.0054587344639003,-0.2227865755558014,0.0236868932843208,0.0262969471514225,0.1232359185814857,0.1288655251264572,-0.1138820722699165,-0.0812139436602592,-0.0455541759729385,0.0849144086241722,0.0463144332170486,-0.1888351738452911,-0.4850543141365051,-0.1564003974199295,0.2618831992149353) * MODEL3_texOff(0); +res += mat4(-0.0221897140145302,0.0031840829178691,0.1487526446580887,-0.0075739510357380,-0.0042014098726213,0.0185069050639868,-0.0972303748130798,-0.0048297117464244,-0.0396384298801422,-0.0136362798511982,0.1502435356378555,0.0022969150450081,0.0987038090825081,-0.0011944774305448,-0.3419188559055328,0.0331442765891552) * MODEL4_texOff(0); +res += FEATURE2_texOff(0); +res = max(res, vec4(0.0)) + vec4(1.1018482446670532,0.9337472915649414,0.0558062084019184,1.0061426162719727) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC sub-band residuals 3 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!BIND FEATURE3 +//!SAVE RES3 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0231755860149860,-0.0123003274202347,-0.0431877225637436,-0.0482062324881554); +res += mat4(0.0061688339337707,-0.3225260674953461,-0.1020668447017670,0.0756559520959854,0.0190322343260050,0.0429529212415218,0.0133566455915570,-0.0357269980013371,-0.0511975735425949,0.0205178000032902,0.0802695825695992,-0.0699724704027176,0.0727552399039268,-0.0051232990808785,-0.0231811776757240,0.0385252349078655) * MODEL1_texOff(0); +res += mat4(0.0003796273667831,-0.1514156907796860,-0.0766110196709633,0.0278693865984678,0.3816023766994476,0.1842953413724899,-0.3427250981330872,-0.0513318441808224,0.0783963724970818,0.1034169569611549,0.1413960307836533,0.1308334171772003,0.0067153824493289,0.0158144067972898,-0.0463985614478588,0.1229471415281296) * MODEL2_texOff(0); +res += mat4(0.1385668069124222,-0.3332454562187195,-0.0325091183185577,-0.0500471331179142,0.0109276790171862,0.1346410959959030,-0.2194238454103470,-0.3841372132301331,0.2030243873596191,0.0367027409374714,0.0746235847473145,0.0858945399522781,-0.0915820300579071,0.4482104778289795,-0.3705481290817261,-0.4631932377815247) * MODEL3_texOff(0); +res += mat4(0.0772577896714211,-0.4344681203365326,-0.5865671634674072,-0.9034788608551025,0.0337008647620678,-0.0119147822260857,0.0028720106929541,0.0309769921004772,-0.0911888480186462,0.2908170223236084,0.0235594492405653,0.0098438179120421,0.0186014920473099,-0.0568258389830589,-0.0455871261656284,-0.1069583073258400) * MODEL4_texOff(0); +res += FEATURE3_texOff(0); +res = max(res, vec4(0.0)) + vec4(0.0984692946076393,-0.0528433769941330,0.1861927509307861,-0.0793913379311562) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC sub-band residuals 4 +//!BIND MODEL1 +//!BIND MODEL2 +//!BIND MODEL3 +//!BIND MODEL4 +//!BIND FEATURE4 +//!SAVE RES4 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(-0.0254043601453304,-0.0337074063718319,0.0073674134910107,-0.0777111053466797); +res += mat4(-0.0152108408510685,-0.0290673710405827,0.0152149023488164,0.0001182962441817,-0.0191980488598347,0.0593055188655853,-0.1341477930545807,-0.0611830428242683,-0.0543372966349125,0.0298834946006536,0.1418028175830841,-0.2027935534715652,0.0062750629149377,0.0106279915198684,0.0231198258697987,-0.0041293469257653) * MODEL1_texOff(0); +res += mat4(0.1140645742416382,-0.1693866401910782,-0.5153092145919800,-0.1875651776790619,-0.0672051906585693,0.6262952089309692,0.5045496225357056,-0.0827279761433601,0.0161168053746223,-0.1674159020185471,-0.1741122007369995,0.0655852109193802,-0.0021867123432457,-0.1953728497028351,-0.0054047326557338,-0.0233427695930004) * MODEL2_texOff(0); +res += mat4(0.0293430704623461,-0.0239756125956774,-0.0894790217280388,-0.3600888848304749,0.0042837061919272,0.0316841900348663,0.1484906524419785,0.0149612911045551,0.0249301753938198,-0.0022203570697457,-0.0415629185736179,0.0302883405238390,0.0327147059142590,-0.1360170692205429,-0.1607593148946762,-0.6076013445854187) * MODEL3_texOff(0); +res += mat4(-0.0638960301876068,0.0897183865308762,0.0621560215950012,-0.5748775005340576,0.0110273323953152,-0.0082545885816216,-0.0169698987156153,0.0448103360831738,-0.0238428302109241,-0.0090155471116304,0.0205770675092936,-0.0579754747450352,0.0513568818569183,0.0123459398746490,-0.1044728681445122,0.1379940360784531) * MODEL4_texOff(0); +res += FEATURE4_texOff(0); +res = max(res, vec4(0.0)) + vec4(0.9187455177307129,0.3813512325286865,1.0033930540084839,0.1104508787393570) * min(res, vec4(0.0)); +return res; +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!DESC sub-pixel convolution 1 +//!BIND RES1 +//!BIND RES2 +//!BIND RES3 +//!BIND RES4 +//!SAVE SUBCONV1 +//!COMPONENTS 4 +vec4 hook() +{ +vec4 res = vec4(0.2004896253347397,0.1965623348951340,0.2031263858079910,0.1992818266153336); +res += mat4x4(-0.0094980411231518,0.0023788863327354,-0.0022216471843421,0.0003509943489917,-0.0552016757428646,0.0855648964643478,0.0698453187942505,-0.0073109264485538,-0.0066510867327452,0.0147740254178643,0.0113036027178168,0.0048131505027413,-0.0040690936148167,0.0065816720016301,-0.0004572885518428,-0.0090634562075138) * RES1_texOff(vec2(-1,-1)); +res += mat4x4(-0.0134373474866152,0.0051314681768417,0.0116530936211348,0.0104887820780277,0.0247752983123064,-0.0160156358033419,-0.0261716526001692,-0.0161977726966143,0.0369832850992680,-0.1506783068180084,0.0486416928470135,-0.0316048339009285,-0.0061850538477302,0.0044224648736417,0.0053729196079075,0.0004756637790706) * RES2_texOff(vec2(-1,-1)); +res += mat4x4(0.0010956295300275,-0.0006739810341969,-0.0023001984227449,-0.0046076728031039,-0.0086221992969513,-0.0076229758560658,-0.0009145328658633,-0.0054856799542904,0.0039743827655911,-0.0010353162651882,-0.0013344871113077,-0.0032652264926583,0.0075248428620398,-0.0015257894992828,-0.0042923530563712,0.0093235671520233) * RES3_texOff(vec2(-1,-1)); +res += mat4x4(-0.0021727732382715,0.0007165882270783,-0.0062267961911857,0.0109751019626856,0.0139423953369260,-0.0074228323064744,-0.0275850314646959,-0.0084508210420609,0.0104034338146448,0.0014346154639497,0.0112520074471831,0.0052605904638767,0.0638059675693512,-0.0249607227742672,-0.0104660186916590,-0.0186718292534351) * RES4_texOff(vec2(-1,-1)); +res += mat4x4(0.0265536569058895,0.0001271427026950,-0.0261117573827505,-0.0235340055078268,0.3512704372406006,0.0999423563480377,0.0193040892481804,0.1757085025310516,0.0103672035038471,-0.0012839237460867,0.0179779101163149,0.0041811168193817,0.0040395306423306,-0.0499604344367981,0.0245391409844160,0.0226321499794722) * RES1_texOff(vec2(-1,0)); +res += mat4x4(0.0384991914033890,-0.0450659804046154,-0.0101390583440661,0.0220608171075583,0.0418405607342720,0.0510034635663033,-0.0249340515583754,-0.0456024855375290,-0.1545022726058960,0.2145315408706665,-0.1191349253058434,-0.0326999053359032,-0.0053544868715107,-0.0073985042981803,0.0037008037324995,0.0099292118102312) * RES2_texOff(vec2(-1,0)); +res += mat4x4(-0.0202872715890408,0.0307369828224182,-0.0144446128979325,0.0071235611103475,-0.0376118794083595,0.0325335487723351,-0.0112367551773787,0.0102629121392965,-0.0383120849728584,0.0423947423696518,0.0243418365716934,0.0210620071738958,0.0132888518273830,0.0360053405165672,0.0100925499573350,-0.0135364001616836) * RES3_texOff(vec2(-1,0)); +res += mat4x4(-0.0057181096635759,-0.0204568132758141,-0.0183743461966515,-0.0151624437421560,0.0028684337157756,0.0245951302349567,-0.0505386032164097,-0.0526789799332619,-0.0125096822157502,-0.0006854855455458,0.0087874904274940,0.0151118943467736,-0.0449581444263458,0.0157140661031008,0.0004651887866203,0.0124214673414826) * RES4_texOff(vec2(-1,0)); +res += mat4x4(-0.0024702695664018,0.0064441123977304,0.0018684890819713,-0.0075190430507064,-0.0822586268186569,0.0438106693327427,0.0218858793377876,-0.0781861469149590,-0.0030735647305846,-0.0170502737164497,0.0035027237609029,0.0147414589300752,-0.0028982846997678,0.0342733748257160,-0.0081898812204599,-0.0086565474048257) * RES1_texOff(vec2(-1,1)); +res += mat4x4(-0.0035721133463085,0.0204634200781584,-0.0043158503249288,-0.0032766335643828,-0.0237986985594034,0.0068355891853571,-0.0162488855421543,-0.0227953065186739,0.0675579383969307,-0.0396639332175255,-0.0059354491531849,0.0051652374677360,0.0041596912778914,-0.0034006051719189,0.0025730042252690,0.0046709501184523) * RES2_texOff(vec2(-1,1)); +res += mat4x4(0.0174455400556326,-0.0353569723665714,0.0072374437004328,0.0190037265419960,0.0095157930627465,0.0083068385720253,0.0079982848837972,-0.0021254434250295,0.0199435707181692,-0.0410243608057499,0.0019970838911831,-0.0007492507575080,-0.0055135628208518,-0.0148889161646366,0.0085017476230860,0.0147673422470689) * RES3_texOff(vec2(-1,1)); +res += mat4x4(0.0040913843549788,0.0095514366403222,0.0025204438716173,-0.0062991455197334,-0.0084351906552911,-0.0107593908905983,-0.0031122143846005,-0.0152742723003030,0.0180264879018068,0.0035381091292948,0.0072233397513628,0.0141055267304182,-0.0047497055493295,0.0139257498085499,0.0008672008989379,0.0056309537030756) * RES4_texOff(vec2(-1,1)); +res += mat4x4(-0.0205192342400551,0.0035032271407545,0.0511485636234283,-0.0024385969154537,-0.0881214737892151,0.3079357743263245,-0.3256671428680420,0.2675876915454865,0.0045523792505264,0.0296388268470764,-0.0116298887878656,0.0326066017150879,-0.0258616954088211,-0.0029669052455574,0.0351182892918587,0.0021836776286364) * RES1_texOff(vec2(0,-1)); +res += mat4x4(0.0273221414536238,-0.0257267896085978,-0.0050437781028450,-0.0224122107028961,0.0542206130921841,-0.0279902089387178,0.0579320825636387,-0.0361812375485897,0.1095771044492722,-0.1980792731046677,0.0754484012722969,-0.2903145253658295,-0.0108189834281802,0.0070500555448234,-0.0098569672554731,0.0098409783095121) * RES2_texOff(vec2(0,-1)); +res += mat4x4(0.0182558707892895,-0.0004734874528367,-0.0078873941674829,-0.0000882323365659,-0.0150029920041561,-0.0083330124616623,-0.0198020357638597,-0.0081914011389017,-0.0084193097427487,0.0029257496353239,-0.0043335305526853,0.0031402623280883,-0.0062353843823075,0.0042604114860296,-0.0014385635731742,-0.0153938829898834) * RES3_texOff(vec2(0,-1)); +res += mat4x4(-0.0146446321159601,-0.0020139440894127,-0.0195920094847679,0.0131280329078436,-0.0573658235371113,0.0003872774250340,0.0434953272342682,-0.0096412943676114,0.0132301421836019,-0.0086105931550264,-0.0038419184274971,0.0006242461386137,-0.0479317568242550,0.0343790166079998,0.0496469177305698,0.0063778031617403) * RES4_texOff(vec2(0,-1)); +res += mat4x4(-0.0886482372879982,-0.1149815395474434,0.0364607945084572,0.1096290275454521,0.1008122637867928,0.0281752888113260,0.3008427619934082,0.0804056376218796,0.2204556763172150,-0.2482117563486099,0.1546043306589127,-0.0760536938905716,0.0558703318238258,0.0110450601205230,-0.0682374238967896,0.0286046285182238) * RES1_texOff(vec2(0,0)); +res += mat4x4(0.0509124360978603,-0.1266279220581055,0.2212082296609879,-0.1488939523696899,0.3209297955036163,0.4181137681007385,0.2016167342662811,0.3663260638713837,-0.0981808155775070,0.1554665118455887,-0.1419739574193954,0.1935243159532547,0.5998122692108154,0.5774222612380981,0.6332547664642334,0.5999547839164734) * RES2_texOff(vec2(0,0)); +res += mat4x4(-0.0132361799478531,-0.0487179905176163,0.0883441641926765,-0.0214207563549280,-0.0519132018089294,0.0597040131688118,-0.0639006718993187,0.0623196884989738,0.0265893898904324,-0.0472132489085197,-0.1152362823486328,-0.0002589400392026,0.1015622764825821,0.0238978657871485,-0.0931206196546555,-0.0433236174285412) * RES3_texOff(vec2(0,0)); +res += mat4x4(0.1458993703126907,0.0153151275590062,-0.1496266722679138,-0.3040931522846222,-0.1793874502182007,-0.2153502255678177,0.2235168665647507,0.2049497067928314,0.1524304300546646,0.1716024577617645,0.1148274764418602,0.0788738727569580,0.0443262755870819,-0.0094674434512854,0.0095163015648723,-0.0466275624930859) * RES4_texOff(vec2(0,0)); +res += mat4x4(-0.0046434928663075,-0.0003897719143424,0.0028130675200373,-0.0085096163675189,-0.1916470676660538,0.2195042073726654,-0.2039673179388046,0.1004208773374557,-0.0287556014955044,0.0299344193190336,-0.0242406297475100,-0.0310826431959867,-0.0059730121865869,0.0066875112242997,0.0053000268526375,-0.0125830061733723) * RES1_texOff(vec2(0,1)); +res += mat4x4(0.0447437874972820,-0.0225228350609541,0.0237912647426128,0.0244589075446129,-0.0828435197472572,0.0348524712026119,-0.0545933209359646,0.0271499827504158,0.0855012536048889,0.0196409244090319,0.0961431562900543,-0.0927204564213753,0.0164071917533875,-0.0032793551217765,0.0095342965796590,-0.0037637823261321) * RES2_texOff(vec2(0,1)); +res += mat4x4(-0.0116172991693020,0.0510076172649860,-0.0091573577374220,-0.0473218895494938,0.0069195278920233,0.0125233512371778,0.0044246641919017,0.0228615943342447,0.0027514654211700,0.0754077881574631,0.0371949858963490,-0.0247637983411551,-0.0058305920101702,0.0521190911531448,0.0077110137790442,-0.0160914603620768) * RES3_texOff(vec2(0,1)); +res += mat4x4(-0.0023388352710754,-0.0146656855940819,0.0021010492928326,-0.0042505273595452,-0.0047369911335409,-0.0313913896679878,0.0011872148606926,0.0643994882702827,0.0725545957684517,-0.0238730907440186,0.0550865903496742,-0.0257390290498734,0.0021659301128238,-0.0376078188419342,-0.0114223891869187,0.0003648806596175) * RES4_texOff(vec2(0,1)); +res += mat4x4(0.0165412686765194,0.0023022976238281,-0.0271380208432674,0.0095817185938358,0.0084499921649694,-0.0126049844548106,0.0269258525222540,0.0366241224110126,0.0071499678306282,0.0176498852670193,0.0088612614199519,0.0117251062765718,0.0062044579535723,-0.0003486862697173,0.0034539531916380,0.0026289536617696) * RES1_texOff(vec2(1,-1)); +res += mat4x4(-0.0072817839682102,-0.0031623679678887,0.0006788446917199,-0.0174324437975883,-0.0143718319013715,-0.0093826102092862,0.0221808739006519,-0.0059602400287986,-0.0524991862475872,-0.0554307326674461,-0.0234730504453182,-0.0944415479898453,0.0027662173379213,-0.0000003128636763,-0.0070756948553026,0.0003757302765734) * RES2_texOff(vec2(1,-1)); +res += mat4x4(-0.0059956023469567,-0.0109885698184371,0.0131031777709723,-0.0064099249430001,-0.0007332267705351,-0.0054377247579396,-0.0042348760180175,-0.0079171815887094,0.0042275548912585,0.0038190928753465,0.0012226465623826,-0.0091538941487670,-0.0047898464836180,0.0020623977761716,0.0052864491008222,-0.0035777383018285) * RES3_texOff(vec2(1,-1)); +res += mat4x4(0.0133276600390673,0.0030601196922362,-0.0000833513477119,0.0117228757590055,0.0180890634655952,0.0006835858803242,0.0155890220776200,0.0023330044932663,0.0016764352330938,-0.0001878916082205,0.0077882641926408,0.0030453875660896,0.0007069727871567,-0.0032804955262691,-0.0258806515485048,0.0120186852291226) * RES4_texOff(vec2(1,-1)); +res += mat4x4(0.0138642648234963,0.0450335033237934,0.0573485493659973,-0.0283165313303471,-0.0353950075805187,-0.0246198587119579,0.1079513281583786,-0.0786227360367775,-0.0199374537914991,-0.0203778892755508,0.0989598408341408,-0.1151264309883118,-0.0075402003712952,0.0069887228310108,-0.0005508214817382,-0.0211458336561918) * RES1_texOff(vec2(1,0)); +res += mat4x4(-0.0173939410597086,-0.0076088067144156,-0.0270000118762255,0.0400075353682041,-0.0209513846784830,-0.0395910814404488,0.0813595503568649,0.0521225370466709,-0.1410388797521591,-0.0733730420470238,0.0030183335766196,0.2795495092868805,0.0052713518962264,0.0093284752219915,-0.0111799864098430,-0.0086231678724289) * RES2_texOff(vec2(1,0)); +res += mat4x4(-0.0051672095432878,0.0126797044649720,-0.0475894063711166,0.0283157788217068,-0.0130900656804442,0.0079299174249172,-0.0232257433235645,0.0235086344182491,-0.0172755066305399,-0.0176396835595369,0.0426433272659779,-0.0097808614373207,-0.0175288487225771,-0.0215636640787125,-0.0089064724743366,0.0157484728842974) * RES3_texOff(vec2(1,0)); +res += mat4x4(0.0398572608828545,0.0358022972941399,-0.0244492460042238,-0.0299847554415464,0.0384783037006855,0.0354996435344219,-0.0414791777729988,0.0031456071883440,0.0217112209647894,0.0295640993863344,-0.0574064217507839,-0.0089215245097876,-0.0100018810480833,0.0062383566983044,-0.0062790168449283,0.0353761576116085) * RES4_texOff(vec2(1,0)); +res += mat4x4(0.0005601430893876,-0.0111780380830169,-0.0034504993818700,0.0335592329502106,-0.0091825602576137,-0.0629493743181229,-0.0673106834292412,0.0803333818912506,-0.0166647452861071,-0.0052054836414754,-0.0284464918076992,0.0311517249792814,-0.0081933317705989,-0.0097267255187035,0.0085491342470050,0.0063192397356033) * RES1_texOff(vec2(1,1)); +res += mat4x4(0.0045089237391949,0.0023073307238519,0.0163356605917215,-0.0106160407885909,-0.0110078146681190,-0.0141240349039435,-0.0408387668430805,0.0008771637803875,-0.0169897880405188,-0.0579932145774364,0.0061155906878412,-0.0052699390798807,-0.0005207836511545,0.0013564876280725,0.0064209848642349,-0.0011977740796283) * RES2_texOff(vec2(1,1)); +res += mat4x4(0.0042469059117138,-0.0113333491608500,-0.0050657880492508,0.0154049899429083,0.0083776470273733,-0.0045062573626637,0.0149497529491782,-0.0006315388600342,-0.0074721821583807,-0.0056236772798002,-0.0164248198270798,0.0365500412881374,0.0061139329336584,0.0037679118104279,-0.0104186907410622,-0.0330689847469330) * RES3_texOff(vec2(1,1)); +res += mat4x4(0.0021872087381780,0.0173248164355755,0.0193927604705095,-0.0043931179679930,0.0088961208239198,0.0238487515598536,0.0053819441236556,-0.0194583926349878,0.0060333325527608,0.0123941889032722,0.0321498438715935,-0.0068496093153954,0.0071646152064204,0.0009137570741586,0.0105294361710548,-0.0256906449794769) * RES4_texOff(vec2(1,1)); +return vec4(res); +} + +//!HOOK LUMA +//!WHEN OUTPUT.w LUMA.w / 1.300 > OUTPUT.h LUMA.h / 1.300 > * +//!WIDTH LUMA.w 2 * +//!HEIGHT LUMA.h 2 * +//!DESC aggregation +//!BIND SUBCONV1 +vec4 hook() +{ +vec2 fcoord = fract(SUBCONV1_pos * SUBCONV1_size); +vec2 base = SUBCONV1_pos + (vec2(0.5) - fcoord) * SUBCONV1_pt; +ivec2 index = ivec2(fcoord * vec2(2)); +vec4 res = SUBCONV1_tex(base); +return vec4(res[index.x * 2 + index.y], 0, 0, 1); +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/KrigBilateral.glsl b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/KrigBilateral.glsl new file mode 100644 index 0000000..48ffc31 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/KrigBilateral.glsl @@ -0,0 +1,214 @@ +// KrigBilateral by Shiandow +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3.0 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library. + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LUMA +//!SAVE LOWRES_Y +//!WIDTH LUMA.w +//!WHEN CHROMA.w LUMA.w < +//!DESC KrigBilateral Downscaling Y pass 1 + +#define offset vec2(0) + +#define axis 1 + +#define Kernel(x) dot(vec3(0.42659, -0.49656, 0.076849), cos(vec3(0, 1, 2) * acos(-1.) * (x + 1.))) + +vec4 hook() { + // Calculate bounds + float low = ceil((LUMA_pos - CHROMA_pt) * LUMA_size - offset - 0.5)[axis]; + float high = floor((LUMA_pos + CHROMA_pt) * LUMA_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = LUMA_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = LUMA_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - LUMA_pos[axis])*CHROMA_size[axis]; + float w = Kernel(rel); + + vec4 y = textureGrad(LUMA_raw, pos, vec2(0.0), vec2(0.0)).xxxx * LUMA_mul; + y.y *= y.y; + avg += w * y; + W += w; + } + avg /= W; + avg.y = abs(avg.y - avg.x * avg.x); + return avg; +} + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LOWRES_Y +//!SAVE LOWRES_Y +//!WHEN CHROMA.w LUMA.w < +//!DESC KrigBilateral Downscaling Y pass 2 + +#define offset vec2(0) + +#define axis 0 + +#define Kernel(x) dot(vec3(0.42659, -0.49656, 0.076849), cos(vec3(0, 1, 2) * acos(-1.) * (x + 1.))) + +vec4 hook() { + // Calculate bounds + float low = ceil((LOWRES_Y_pos - CHROMA_pt) * LOWRES_Y_size - offset - 0.5)[axis]; + float high = floor((LOWRES_Y_pos + CHROMA_pt) * LOWRES_Y_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = LOWRES_Y_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = LOWRES_Y_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - LOWRES_Y_pos[axis])*CHROMA_size[axis]; + float w = Kernel(rel); + + vec4 y = textureGrad(LOWRES_Y_raw, pos, vec2(0.0), vec2(0.0)).xxxx * LOWRES_Y_mul; + y.y *= y.y; + avg += w * y; + W += w; + } + avg /= W; + avg.y = abs(avg.y - avg.x * avg.x) + LOWRES_Y_texOff(0).y; + return avg; +} + +//!HOOK CHROMA +//!BIND HOOKED +//!BIND LUMA +//!BIND LOWRES_Y +//!WIDTH LUMA.w +//!HEIGHT LUMA.h +//!WHEN CHROMA.w LUMA.w < +//!OFFSET ALIGN +//!DESC KrigBilateral Upscaling UV + +#define sqr(x) dot(x,x) +#define sigma_nsq 256.0/(255.0*255.0) + +#define N 8 + +#define M(i,j) Mx[min(i,j)*N + max(i,j) - (min(i,j)*(min(i,j)+1))/2] + +#define C(i,j) (inversesqrt(1.0 + (X[i].y + X[j].y) / Var) * exp(-0.5 * (sqr(X[i].x - X[j].x) / (localVar + X[i].y + X[j].y + sigma_nsq) + sqr((coords[i] - coords[j]) / radius))) + (X[i].x - y) * (X[j].x - y) / (Var + sigma_nsq)) +#define c(i) (inversesqrt(1.0 + X[i].y / Var) * exp(-0.5 * (sqr(X[i].x - y) / (localVar + X[i].y + sigma_nsq) + sqr((coords[i] - offset) / radius)))) + +#define getnsum(i) X[i] = vec4(LOWRES_Y_tex(LOWRES_Y_pt*(pos+coords[i]+vec2(0.5))).xy, \ + CHROMA_tex(CHROMA_pt*(pos+coords[i]+vec2(0.5))).xy); \ + w = clamp(1.5 - abs(coords[i] - offset), 0.0, 1.0); \ + total += w.x*w.y*vec4(X[i].x, X[i].x * X[i].x, X[i].y, 1.0); + +#define I3(f, n) f(n) f(n+1) f(n+2) +#define I9(f, n) I3(f, n) I3(f, n+3) I3(f, n+6) + +vec4 hook() { + vec2 pos = CHROMA_pos * HOOKED_size - vec2(0.5); + vec2 offset = pos - round(pos); + pos -= offset; + + vec2 coords[N+1]; + vec4 X[N+1]; + vec2 w; + vec4 total = vec4(0); + + coords[0] = vec2(-1,-1); coords[1] = vec2(-1, 0); coords[2] = vec2(-1, 1); + coords[3] = vec2( 0,-1); coords[4] = vec2( 0, 1); coords[5] = vec2( 1,-1); + coords[6] = vec2( 1, 0); coords[7] = vec2( 1, 1); coords[8] = vec2( 0, 0); + + I9(getnsum, 0) + + total.xyz /= total.w; + float localVar = max(total.y - total.x * total.x, 1e-6); + float Var = localVar + total.z; + float radius = 1.0; + + float y = LUMA_texOff(0).x; + float Mx[(N*(N+1))/2]; + float b[N]; + vec2 interp = X[N].zw; + + b[0] = c(0) - c(N) - C(0,N) + C(N,N); M(0, 0) = C(0,0) - C(0,N) - C(0,N) + C(N,N); M(0, 1) = C(0,1) - C(1,N) - C(0,N) + C(N,N); M(0, 2) = C(0,2) - C(2,N) - C(0,N) + C(N,N); M(0, 3) = C(0,3) - C(3,N) - C(0,N) + C(N,N); M(0, 4) = C(0,4) - C(4,N) - C(0,N) + C(N,N); M(0, 5) = C(0,5) - C(5,N) - C(0,N) + C(N,N); M(0, 6) = C(0,6) - C(6,N) - C(0,N) + C(N,N); M(0, 7) = C(0,7) - C(7,N) - C(0,N) + C(N,N); + b[1] = c(1) - c(N) - C(1,N) + C(N,N); M(1, 1) = C(1,1) - C(1,N) - C(1,N) + C(N,N); M(1, 2) = C(1,2) - C(2,N) - C(1,N) + C(N,N); M(1, 3) = C(1,3) - C(3,N) - C(1,N) + C(N,N); M(1, 4) = C(1,4) - C(4,N) - C(1,N) + C(N,N); M(1, 5) = C(1,5) - C(5,N) - C(1,N) + C(N,N); M(1, 6) = C(1,6) - C(6,N) - C(1,N) + C(N,N); M(1, 7) = C(1,7) - C(7,N) - C(1,N) + C(N,N); + b[2] = c(2) - c(N) - C(2,N) + C(N,N); M(2, 2) = C(2,2) - C(2,N) - C(2,N) + C(N,N); M(2, 3) = C(2,3) - C(3,N) - C(2,N) + C(N,N); M(2, 4) = C(2,4) - C(4,N) - C(2,N) + C(N,N); M(2, 5) = C(2,5) - C(5,N) - C(2,N) + C(N,N); M(2, 6) = C(2,6) - C(6,N) - C(2,N) + C(N,N); M(2, 7) = C(2,7) - C(7,N) - C(2,N) + C(N,N); + b[3] = c(3) - c(N) - C(3,N) + C(N,N); M(3, 3) = C(3,3) - C(3,N) - C(3,N) + C(N,N); M(3, 4) = C(3,4) - C(4,N) - C(3,N) + C(N,N); M(3, 5) = C(3,5) - C(5,N) - C(3,N) + C(N,N); M(3, 6) = C(3,6) - C(6,N) - C(3,N) + C(N,N); M(3, 7) = C(3,7) - C(7,N) - C(3,N) + C(N,N); + b[4] = c(4) - c(N) - C(4,N) + C(N,N); M(4, 4) = C(4,4) - C(4,N) - C(4,N) + C(N,N); M(4, 5) = C(4,5) - C(5,N) - C(4,N) + C(N,N); M(4, 6) = C(4,6) - C(6,N) - C(4,N) + C(N,N); M(4, 7) = C(4,7) - C(7,N) - C(4,N) + C(N,N); + b[5] = c(5) - c(N) - C(5,N) + C(N,N); M(5, 5) = C(5,5) - C(5,N) - C(5,N) + C(N,N); M(5, 6) = C(5,6) - C(6,N) - C(5,N) + C(N,N); M(5, 7) = C(5,7) - C(7,N) - C(5,N) + C(N,N); + b[6] = c(6) - c(N) - C(6,N) + C(N,N); M(6, 6) = C(6,6) - C(6,N) - C(6,N) + C(N,N); M(6, 7) = C(6,7) - C(7,N) - C(6,N) + C(N,N); + b[7] = c(7) - c(N) - C(7,N) + C(N,N); M(7, 7) = C(7,7) - C(7,N) - C(7,N) + C(N,N); + + b[1] -= b[0] * M(0, 1) / M(0, 0); M(1, 1) -= M(0, 1) * M(0, 1) / M(0, 0); M(1, 2) -= M(0, 2) * M(0, 1) / M(0, 0); M(1, 3) -= M(0, 3) * M(0, 1) / M(0, 0); M(1, 4) -= M(0, 4) * M(0, 1) / M(0, 0); M(1, 5) -= M(0, 5) * M(0, 1) / M(0, 0); M(1, 6) -= M(0, 6) * M(0, 1) / M(0, 0); M(1, 7) -= M(0, 7) * M(0, 1) / M(0, 0); + b[2] -= b[0] * M(0, 2) / M(0, 0); M(2, 2) -= M(0, 2) * M(0, 2) / M(0, 0); M(2, 3) -= M(0, 3) * M(0, 2) / M(0, 0); M(2, 4) -= M(0, 4) * M(0, 2) / M(0, 0); M(2, 5) -= M(0, 5) * M(0, 2) / M(0, 0); M(2, 6) -= M(0, 6) * M(0, 2) / M(0, 0); M(2, 7) -= M(0, 7) * M(0, 2) / M(0, 0); + b[3] -= b[0] * M(0, 3) / M(0, 0); M(3, 3) -= M(0, 3) * M(0, 3) / M(0, 0); M(3, 4) -= M(0, 4) * M(0, 3) / M(0, 0); M(3, 5) -= M(0, 5) * M(0, 3) / M(0, 0); M(3, 6) -= M(0, 6) * M(0, 3) / M(0, 0); M(3, 7) -= M(0, 7) * M(0, 3) / M(0, 0); + b[4] -= b[0] * M(0, 4) / M(0, 0); M(4, 4) -= M(0, 4) * M(0, 4) / M(0, 0); M(4, 5) -= M(0, 5) * M(0, 4) / M(0, 0); M(4, 6) -= M(0, 6) * M(0, 4) / M(0, 0); M(4, 7) -= M(0, 7) * M(0, 4) / M(0, 0); + b[5] -= b[0] * M(0, 5) / M(0, 0); M(5, 5) -= M(0, 5) * M(0, 5) / M(0, 0); M(5, 6) -= M(0, 6) * M(0, 5) / M(0, 0); M(5, 7) -= M(0, 7) * M(0, 5) / M(0, 0); + b[6] -= b[0] * M(0, 6) / M(0, 0); M(6, 6) -= M(0, 6) * M(0, 6) / M(0, 0); M(6, 7) -= M(0, 7) * M(0, 6) / M(0, 0); + b[7] -= b[0] * M(0, 7) / M(0, 0); M(7, 7) -= M(0, 7) * M(0, 7) / M(0, 0); + + b[2] -= b[1] * M(1, 2) / M(1, 1); M(2, 2) -= M(1, 2) * M(1, 2) / M(1, 1); M(2, 3) -= M(1, 3) * M(1, 2) / M(1, 1); M(2, 4) -= M(1, 4) * M(1, 2) / M(1, 1); M(2, 5) -= M(1, 5) * M(1, 2) / M(1, 1); M(2, 6) -= M(1, 6) * M(1, 2) / M(1, 1); M(2, 7) -= M(1, 7) * M(1, 2) / M(1, 1); + b[3] -= b[1] * M(1, 3) / M(1, 1); M(3, 3) -= M(1, 3) * M(1, 3) / M(1, 1); M(3, 4) -= M(1, 4) * M(1, 3) / M(1, 1); M(3, 5) -= M(1, 5) * M(1, 3) / M(1, 1); M(3, 6) -= M(1, 6) * M(1, 3) / M(1, 1); M(3, 7) -= M(1, 7) * M(1, 3) / M(1, 1); + b[4] -= b[1] * M(1, 4) / M(1, 1); M(4, 4) -= M(1, 4) * M(1, 4) / M(1, 1); M(4, 5) -= M(1, 5) * M(1, 4) / M(1, 1); M(4, 6) -= M(1, 6) * M(1, 4) / M(1, 1); M(4, 7) -= M(1, 7) * M(1, 4) / M(1, 1); + b[5] -= b[1] * M(1, 5) / M(1, 1); M(5, 5) -= M(1, 5) * M(1, 5) / M(1, 1); M(5, 6) -= M(1, 6) * M(1, 5) / M(1, 1); M(5, 7) -= M(1, 7) * M(1, 5) / M(1, 1); + b[6] -= b[1] * M(1, 6) / M(1, 1); M(6, 6) -= M(1, 6) * M(1, 6) / M(1, 1); M(6, 7) -= M(1, 7) * M(1, 6) / M(1, 1); + b[7] -= b[1] * M(1, 7) / M(1, 1); M(7, 7) -= M(1, 7) * M(1, 7) / M(1, 1); + + b[3] -= b[2] * M(2, 3) / M(2, 2); M(3, 3) -= M(2, 3) * M(2, 3) / M(2, 2); M(3, 4) -= M(2, 4) * M(2, 3) / M(2, 2); M(3, 5) -= M(2, 5) * M(2, 3) / M(2, 2); M(3, 6) -= M(2, 6) * M(2, 3) / M(2, 2); M(3, 7) -= M(2, 7) * M(2, 3) / M(2, 2); + b[4] -= b[2] * M(2, 4) / M(2, 2); M(4, 4) -= M(2, 4) * M(2, 4) / M(2, 2); M(4, 5) -= M(2, 5) * M(2, 4) / M(2, 2); M(4, 6) -= M(2, 6) * M(2, 4) / M(2, 2); M(4, 7) -= M(2, 7) * M(2, 4) / M(2, 2); + b[5] -= b[2] * M(2, 5) / M(2, 2); M(5, 5) -= M(2, 5) * M(2, 5) / M(2, 2); M(5, 6) -= M(2, 6) * M(2, 5) / M(2, 2); M(5, 7) -= M(2, 7) * M(2, 5) / M(2, 2); + b[6] -= b[2] * M(2, 6) / M(2, 2); M(6, 6) -= M(2, 6) * M(2, 6) / M(2, 2); M(6, 7) -= M(2, 7) * M(2, 6) / M(2, 2); + b[7] -= b[2] * M(2, 7) / M(2, 2); M(7, 7) -= M(2, 7) * M(2, 7) / M(2, 2); + + b[4] -= b[3] * M(3, 4) / M(3, 3); M(4, 4) -= M(3, 4) * M(3, 4) / M(3, 3); M(4, 5) -= M(3, 5) * M(3, 4) / M(3, 3); M(4, 6) -= M(3, 6) * M(3, 4) / M(3, 3); M(4, 7) -= M(3, 7) * M(3, 4) / M(3, 3); + b[5] -= b[3] * M(3, 5) / M(3, 3); M(5, 5) -= M(3, 5) * M(3, 5) / M(3, 3); M(5, 6) -= M(3, 6) * M(3, 5) / M(3, 3); M(5, 7) -= M(3, 7) * M(3, 5) / M(3, 3); + b[6] -= b[3] * M(3, 6) / M(3, 3); M(6, 6) -= M(3, 6) * M(3, 6) / M(3, 3); M(6, 7) -= M(3, 7) * M(3, 6) / M(3, 3); + b[7] -= b[3] * M(3, 7) / M(3, 3); M(7, 7) -= M(3, 7) * M(3, 7) / M(3, 3); + + b[5] -= b[4] * M(4, 5) / M(4, 4); M(5, 5) -= M(4, 5) * M(4, 5) / M(4, 4); M(5, 6) -= M(4, 6) * M(4, 5) / M(4, 4); M(5, 7) -= M(4, 7) * M(4, 5) / M(4, 4); + b[6] -= b[4] * M(4, 6) / M(4, 4); M(6, 6) -= M(4, 6) * M(4, 6) / M(4, 4); M(6, 7) -= M(4, 7) * M(4, 6) / M(4, 4); + b[7] -= b[4] * M(4, 7) / M(4, 4); M(7, 7) -= M(4, 7) * M(4, 7) / M(4, 4); + + b[6] -= b[5] * M(5, 6) / M(5, 5); M(6, 6) -= M(5, 6) * M(5, 6) / M(5, 5); M(6, 7) -= M(5, 7) * M(5, 6) / M(5, 5); + b[7] -= b[5] * M(5, 7) / M(5, 5); M(7, 7) -= M(5, 7) * M(5, 7) / M(5, 5); + + b[7] -= b[6] * M(6, 7) / M(6, 6); M(7, 7) -= M(6, 7) * M(6, 7) / M(6, 6); + + b[7] /= M(7, 7); + interp += b[7] * (X[7] - X[N]).zw; + + b[6] -= M(6, 7) * b[7]; b[6] /= M(6, 6); + interp += b[6] * (X[6] - X[N]).zw; + + b[5] -= M(5, 6) * b[6]; b[5] -= M(5, 7) * b[7]; b[5] /= M(5, 5); + interp += b[5] * (X[5] - X[N]).zw; + + b[4] -= M(4, 5) * b[5]; b[4] -= M(4, 6) * b[6]; b[4] -= M(4, 7) * b[7]; b[4] /= M(4, 4); + interp += b[4] * (X[4] - X[N]).zw; + + b[3] -= M(3, 4) * b[4]; b[3] -= M(3, 5) * b[5]; b[3] -= M(3, 6) * b[6]; b[3] -= M(3, 7) * b[7]; b[3] /= M(3, 3); + interp += b[3] * (X[3] - X[N]).zw; + + b[2] -= M(2, 3) * b[3]; b[2] -= M(2, 4) * b[4]; b[2] -= M(2, 5) * b[5]; b[2] -= M(2, 6) * b[6]; b[2] -= M(2, 7) * b[7]; b[2] /= M(2, 2); + interp += b[2] * (X[2] - X[N]).zw; + + b[1] -= M(1, 2) * b[2]; b[1] -= M(1, 3) * b[3]; b[1] -= M(1, 4) * b[4]; b[1] -= M(1, 5) * b[5]; b[1] -= M(1, 6) * b[6]; b[1] -= M(1, 7) * b[7]; b[1] /= M(1, 1); + interp += b[1] * (X[1] - X[N]).zw; + + b[0] -= M(0, 1) * b[1]; b[0] -= M(0, 2) * b[2]; b[0] -= M(0, 3) * b[3]; b[0] -= M(0, 4) * b[4]; b[0] -= M(0, 5) * b[5]; b[0] -= M(0, 6) * b[6]; b[0] -= M(0, 7) * b[7]; b[0] /= M(0, 0); + interp += b[0] * (X[0] - X[N]).zw; + + return interp.xyxy; +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/SSimDownscaler.glsl b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/SSimDownscaler.glsl new file mode 100644 index 0000000..f518476 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/SSimDownscaler.glsl @@ -0,0 +1,213 @@ +// SSimDownscaler by Shiandow +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 3.0 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library. + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND PREKERNEL +//!SAVE L2 +//!WIDTH NATIVE_CROPPED.w +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!COMPONENTS 3 +//!DESC SSimDownscaler L2 pass 1 + +#define axis 1 + +#define offset vec2(0,0) + +#define MN(B,C,x) (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C)) +#define Kernel(x) MN(.0, .5, abs(x)) +#define taps 2.0 + +vec4 hook() { + vec2 base = PREKERNEL_pt * (PREKERNEL_pos * input_size + tex_offset); + + float low = ceil((PREKERNEL_pos - taps*POSTKERNEL_pt) * input_size - offset + tex_offset - 0.5)[axis]; + float high = floor((PREKERNEL_pos + taps*POSTKERNEL_pt) * input_size - offset + tex_offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = base; + + for (float k = low; k <= high; k++) { + pos[axis] = PREKERNEL_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - base[axis])*POSTKERNEL_size[axis]; + float w = Kernel(rel); + + avg += w * pow(textureLod(PREKERNEL_raw, pos, 0.0) * PREKERNEL_mul, vec4(2.0)); + W += w; + } + avg /= W; + + return avg; +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND L2 +//!SAVE L2 +//!WHEN NATIVE_CROPPED.w POSTKERNEL.w > +//!COMPONENTS 3 +//!DESC SSimDownscaler L2 pass 2 + +#define axis 0 + +#define offset vec2(0,0) + +#define MN(B,C,x) (x < 1.0 ? ((2.-1.5*B-(C))*x + (-3.+2.*B+C))*x*x + (1.-(B)/3.) : (((-(B)/6.-(C))*x + (B+5.*C))*x + (-2.*B-8.*C))*x+((4./3.)*B+4.*C)) +#define Kernel(x) MN(.0, .5, abs(x)) +#define taps 2.0 + +vec4 hook() { + float low = ceil((L2_pos - taps*POSTKERNEL_pt) * L2_size - offset - 0.5)[axis]; + float high = floor((L2_pos + taps*POSTKERNEL_pt) * L2_size - offset - 0.5)[axis]; + + float W = 0.0; + vec4 avg = vec4(0); + vec2 pos = L2_pos; + + for (float k = low; k <= high; k++) { + pos[axis] = L2_pt[axis] * (k - offset[axis] + 0.5); + float rel = (pos[axis] - L2_pos[axis])*POSTKERNEL_size[axis]; + float w = Kernel(rel); + + avg += w * textureLod(L2_raw, pos, 0.0) * L2_mul; + W += w; + } + avg /= W; + + return avg; +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND L2 +//!SAVE MR +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!COMPONENTS 4 +//!DESC SSimDownscaler mean & R + +#define sigma_nsq 49. / (255.*255.) +#define locality 2.0 + +#define offset vec2(0,0) + +#define Kernel(x) pow(1.0 / locality, abs(x)) +#define taps 3.0 + +#define Luma(rgb) ( dot(rgb, vec3(0.2126, 0.7152, 0.0722)) ) + +mat3x3 ScaleH(vec2 pos) { + float low = ceil(-0.5*taps - offset)[0]; + float high = floor(0.5*taps - offset)[0]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[0] = HOOKED_pos[0] + HOOKED_pt[0] * k; + float rel = k + offset[0]; + float w = Kernel(rel); + + vec3 L = POSTKERNEL_tex(pos).rgb; + avg += w * mat3x3(L, L*L, L2_tex(pos).rgb); + W += w; + } + avg /= W; + + return avg; +} + +vec4 hook() { + vec2 pos = HOOKED_pos; + + float low = ceil(-0.5*taps - offset)[1]; + float high = floor(0.5*taps - offset)[1]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[1] = HOOKED_pos[1] + HOOKED_pt[1] * k; + float rel = k + offset[1]; + float w = Kernel(rel); + + avg += w * ScaleH(pos); + W += w; + } + avg /= W; + + float Sl = Luma(max(avg[1] - avg[0] * avg[0], 0.)) + sigma_nsq; + float Sh = Luma(max(avg[2] - avg[0] * avg[0], 0.)) + sigma_nsq; + return vec4(avg[0], sqrt(Sh / Sl)); +} + +//!HOOK POSTKERNEL +//!BIND HOOKED +//!BIND MR +//!WHEN NATIVE_CROPPED.h POSTKERNEL.h > +//!DESC SSimDownscaler final pass + +#define locality 2.0 + +#define offset vec2(0,0) + +#define Kernel(x) pow(1.0 / locality, abs(x)) +#define taps 3.0 + +#define Gamma(x) ( pow(x, vec3(1.0/2.0)) ) +#define GammaInv(x) ( pow(clamp(x, 0.0, 1.0), vec3(2.0)) ) + +mat3x3 ScaleH(vec2 pos) { + float low = ceil(-0.5*taps - offset)[0]; + float high = floor(0.5*taps - offset)[0]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[0] = HOOKED_pos[0] + HOOKED_pt[0] * k; + float rel = k + offset[0]; + float w = Kernel(rel); + + vec4 MR = MR_tex(pos); + avg += w * mat3x3(MR.a*MR.rgb, MR.rgb, MR.aaa); + W += w; + } + avg /= W; + + return avg; +} + +vec4 hook() { + vec2 pos = HOOKED_pos; + + float low = ceil(-0.5*taps - offset)[1]; + float high = floor(0.5*taps - offset)[1]; + + float W = 0.0; + mat3x3 avg = mat3x3(0); + + for (float k = low; k <= high; k++) { + pos[1] = HOOKED_pos[1] + HOOKED_pt[1] * k; + float rel = k + offset[1]; + float w = Kernel(rel); + + avg += w * ScaleH(pos); + W += w; + } + avg /= W; + vec4 L = POSTKERNEL_texOff(0); + return vec4(avg[1] + avg[2] * L.rgb - avg[0], L.a); +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns128-win8x4.hook b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns128-win8x4.hook new file mode 100644 index 0000000..33a980c --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns128-win8x4.hook @@ -0,0 +1,418 @@ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . + +//!DESC NNEDI3 (double_y, nns128, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!SAVE nnedi3_int +//!WHEN HOOKED.h OUTPUT.h / 0.707106 < +float nnedi3(vec4 samples[8]) { +float sum = 0.0, sumsq = 0.0; +for (int i = 0; i < 8; i++) { + sum += dot(samples[i], vec4(1.0)); + sumsq += dot(samples[i], samples[i]); +} +float mstd0 = sum / 32.0; +float mstd1 = sumsq / 32.0 - mstd0 * mstd0; +float mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7); +mstd1 *= mstd2; +float vsum = 0.0, wsum = 0.0, sum1, sum2; +#define T(x) intBitsToFloat(x) +#define W(i,w0,w1,w2,w3) dot(samples[i],vec4(T(w0),T(w1),T(w2),T(w3))) +#define WS(w0,w1) sum1 = exp(sum1 * mstd2 + T(w0)); sum2 = sum2 * mstd2 + T(w1); wsum += sum1; vsum += sum1*(sum2/(1.0+abs(sum2))); +sum1=W(0,-1106336704,-1104338237,1041734649,-1112016931)+W(1,-1134422686,-1108550970,-1135080854,-1117701445)+W(2,-1097058997,1036063029,1053379177,-1099451832)+W(3,-1096794255,1068454954,1068510503,-1092648385)+W(4,-1096428577,1045547931,-1114733521,-1101312270)+W(5,-1108910446,-1102009308,-1146436468,-1118387353)+W(6,-1110459731,-1122481515,-1107441476,-1118789516)+W(7,-1101174078,1017740065,-1113618698,-1107281979);sum2=W(0,-1107960738,1034572820,-1105088633,-1147785184)+W(1,1022891960,1003346080,-1103397515,1035529310)+W(2,-1112828174,-1096749055,1056062200,-1105585021)+W(3,-1099542471,1067566060,-1127174872,1034766166)+W(4,1028527356,-1090311143,1048792675,-1117109292)+W(5,-1124169384,1028295012,-1106700271,-1116900804)+W(6,1003609248,-1101382023,1033154740,-1121486356)+W(7,1019646072,-1102277943,1037356874,-1114899026);WS(-1075683047,-1087125913); +sum1=W(0,1042687663,1052977914,-1087267578,1041384601)+W(1,1034752002,1046022844,-1097639380,1034807969)+W(2,1020877136,1051043629,-1087388173,1037740431)+W(3,1043598702,1049374510,-1095656786,1044538321)+W(4,1032834596,1044576234,-1108370107,-1113942663)+W(5,1049059763,-1108783446,-1101488315,1043415765)+W(6,1041786741,-1105784362,-1111228387,1011031587)+W(7,1050972591,-1089957133,-1108747496,1034104676);sum2=W(0,-1129327146,-1112916736,-1109246006,-1168639863)+W(1,-1149557934,-1120018795,1012425107,-1122303521)+W(2,1027469999,-1105442406,1044505132,-1114911422)+W(3,-1116270499,1056936993,1054092693,-1109477794)+W(4,-1107094547,1036431709,1015080154,-1122292075)+W(5,-1114668504,1029410453,-1102188513,1038663029)+W(6,-1136313139,-1126491682,-1123974759,-1124857486)+W(7,-1115408970,-1112281372,-1115235380,1004657207);WS(1042212664,-1102203684); +sum1=W(0,-1140902818,1040147851,1035472140,-1111794429)+W(1,1019874102,-1104962202,1045102086,1033944684)+W(2,-1138465404,-1102798136,1044852023,-1122108180)+W(3,1041713132,-1085739950,1052255697,1042129278)+W(4,1031911135,-1090423514,1050093153,1026181805)+W(5,1032244040,-1096835716,-1114874577,1045351411)+W(6,-1122713961,1015091005,-1125530488,1045226448)+W(7,1032066151,-1100137137,1025859399,1037723887);sum2=W(0,1025219442,-1109152196,1026944460,-1136900198)+W(1,-1119436548,-1122141349,1040314652,-1112897189)+W(2,1041363772,1032935700,-1124096755,-1144192892)+W(3,1026037858,-1095545125,-1132954458,1046665648)+W(4,-1106963956,1029288712,1063106013,-1112667488)+W(5,-1148187164,1048235476,1044093468,-1091150222)+W(6,-1115265228,1017807431,-1119277141,-1098670428)+W(7,1027834104,-1124373883,-1115291573,-1099776205);WS(-1106435384,1038338229); +sum1=W(0,1040095954,1057302312,-1085504617,1038469973)+W(1,1019822615,1048464174,-1109673285,1008999077)+W(2,1037825128,1048602738,-1088007186,1047759857)+W(3,1041126536,1046177110,-1089584127,1042217259)+W(4,1042659628,-1113571175,-1112427435,-1122205838)+W(5,1046281616,1010729037,-1099904421,1042535855)+W(6,1025627498,-1116720143,985851280,1020820192)+W(7,1052688116,-1090676327,-1109333660,1034203799);sum2=W(0,1016257202,1059204215,1078138204,1045786159)+W(1,1025056091,1059357388,1057901024,-1115583727)+W(2,-1123344133,-1096239491,-1075026282,1040463834)+W(3,-1117490597,-1080318626,-1073900782,1043123901)+W(4,-1139226916,-1097775023,1041808545,1021989454)+W(5,-1121712633,-1121076469,1040778731,-1105966927)+W(6,1032149092,-1108589001,1040543247,1015040126)+W(7,1018740994,1042934709,1013253724,-1147555881);WS(-1079558823,-1098708322); +sum1=W(0,-1107155318,-1102044491,-1157836704,1018716763)+W(1,1025234303,-1098872409,1050456336,1032647774)+W(2,1015859078,-1087610848,1055919296,1043448582)+W(3,1036194249,-1086405173,1051086989,1041211303)+W(4,-1109510417,1049149960,1049231261,1032229161)+W(5,-1106597869,-1113006787,1047976577,-1113988824)+W(6,-1106784003,1034815041,1037659280,-1114873522)+W(7,-1107821257,-1109243348,1045770027,-1115826050);sum2=W(0,-1115121954,1038073794,-1128914993,-1116577465)+W(1,1012713185,-1114116718,1041575276,-1124395325)+W(2,-1120959275,1048906430,1074552079,1055266270)+W(3,979525395,-1089285214,-1076455267,1060162115)+W(4,1031308048,1044939824,-1081125046,-1098098687)+W(5,1023425822,960279117,-1109266711,1021768571)+W(6,1008898041,-1114246838,1028966618,-1124862202)+W(7,1015643115,-1116674868,-1116558128,1013382601);WS(1045132600,-1120782135); +sum1=W(0,-1105751784,1057393815,-1105555137,-1117651397)+W(1,-1105178898,1048859946,-1097544977,1030868229)+W(2,-1104184899,1059464001,-1093321826,-1113548192)+W(3,-1114219853,1046945589,-1096850414,-1114482291)+W(4,-1110381909,-1115358437,1045680426,-1100710867)+W(5,1038688878,-1101266388,1054674458,-1101910270)+W(6,-1129240105,1006928425,1040711722,-1109195062)+W(7,1028338913,1001553277,1051440502,-1106616547);sum2=W(0,1017265392,1041015042,-1100279165,1015388608)+W(1,-1109811903,1031690548,-1110095441,-1118750728)+W(2,1023756444,1041543835,-1121800962,1018680528)+W(3,-1113627340,1061785433,1052269299,-1143924414)+W(4,1014378799,-1112539854,1027655784,-1099334823)+W(5,-1145950526,1033767962,-1103181542,1020584168)+W(6,-1129429444,-1111764061,-1110834939,-1108053853)+W(7,1013677319,-1098545742,-1106577514,1036964648);WS(1052573852,-1122511817); +sum1=W(0,-1122539822,-1107197216,-1123108403,1051517474)+W(1,1036520122,-1104137920,1038549849,1023654291)+W(2,-1150669710,-1095755763,1032946604,1039184399)+W(3,-1131456914,-1089160552,1050538028,1041388597)+W(4,1027717464,-1090293588,1052989852,-1168884669)+W(5,1032118773,-1090056564,1057974832,1033029075)+W(6,1021054902,-1092174087,1053464075,1028526105)+W(7,1030809195,-1086001910,1057808582,1041880934);sum2=W(0,-1085894681,-1108201039,1070882268,-1081052443)+W(1,1038192816,-1090848333,-1093216289,-1102549623)+W(2,-1098445483,1052221636,1067999858,-1087793608)+W(3,-1102898046,1071505414,1073865984,-1090403840)+W(4,1008806191,-1098981857,1058878464,-1095780376)+W(5,1050638036,-1086351349,-1083525828,1055133376)+W(6,-1102617523,-1096799400,-1107159037,-1096503933)+W(7,1057325981,-1088620184,-1083206959,1053790412);WS(-1073219892,-1080326418); +sum1=W(0,-1114077580,-1101602915,1057495924,-1151047116)+W(1,-1142635506,-1103425331,1053716920,-1114784094)+W(2,-1142955026,-1090278522,1055741332,-1111276924)+W(3,-1123237842,-1092662145,1051447237,-1121668701)+W(4,1038107057,-1091646784,1052494629,1000704387)+W(5,-1103324917,-1114692451,1049044089,-1109204280)+W(6,1026598572,-1101848592,1043005848,1010568075)+W(7,-1095875035,1038718196,1047828379,-1156952092);sum2=W(0,-1121663397,-1095443331,-1067370736,1005231721)+W(1,-1116542136,1050195534,-1071776975,974104521)+W(2,1042431779,-1123573301,1068672794,-1111985184)+W(3,1037730633,-1100504352,1077012119,1047585075)+W(4,1010053773,1043186658,1070664889,1016528922)+W(5,-1137348615,-1102861372,1045361006,-1109020232)+W(6,1028087910,-1110454800,-1123945395,1037668055)+W(7,-1119025600,1040229501,1027642294,-1117277443);WS(-1130027456,1047744266); +sum1=W(0,1030328637,-1103440100,1050534604,-1130350917)+W(1,-1100312969,1043447132,1038395889,-1105733872)+W(2,1036569044,-1096543805,1037345619,1043114871)+W(3,1044449278,-1093151398,-1106526388,1022399622)+W(4,-1106699970,1024264999,-1115006287,1020228332)+W(5,1046212150,-1115860524,1035372917,1024836117)+W(6,-1104762293,1041344218,980910400,-1123108872)+W(7,-1124975021,1032410566,1044066628,-1112803412);sum2=W(0,1029880722,1033391383,-1137819024,-1114516031)+W(1,-1098453144,1041649400,-1137377888,1025620716)+W(2,1029103498,-1095624145,1040796761,1035240799)+W(3,1067660000,-1082091368,-1080643124,1066795978)+W(4,-1094604015,1056223691,-1102259819,-1098376459)+W(5,1046293202,1027973488,-1121978412,1036814117)+W(6,-1104816365,1034193475,-1148596400,-1107858514)+W(7,-1117927817,1034286113,1041009105,-1114981924);WS(1049012636,1037011386); +sum1=W(0,-1108102978,-1097922903,1049818257,1041216474)+W(1,1042768739,-1089977373,1052134241,-1106782690)+W(2,1036457352,-1083790961,1059747641,-1120768141)+W(3,-1105146600,1050515995,1062551839,975424142)+W(4,-1100621772,1053649082,-1088576433,1042971413)+W(5,-1100160944,1044221701,-1093385002,1047421135)+W(6,-1149100234,1020595485,-1108848982,-1142399358)+W(7,-1116535239,-1110188826,-1147628986,1034144007);sum2=W(0,-1130376652,-1109271051,-1098570547,1029552052)+W(1,-1109307779,1040605589,-1097221185,-1097745138)+W(2,998991648,-1117670218,-1087670872,-1101762859)+W(3,-1105231849,1068278024,1068017963,-1100990121)+W(4,-1124853008,-1099193318,-1103240593,-1094879980)+W(5,-1110904873,1035466738,1049832589,-1119653306)+W(6,1033926100,-1111928806,1018913792,-1099498770)+W(7,1012787248,1025845624,1035573068,1046656503);WS(-1099128120,1074104605); +sum1=W(0,1001695642,1031876531,-1106225286,1039516460)+W(1,-1114738061,1036082771,-1127447088,1037331996)+W(2,-1137881464,1049670772,-1114090766,1048871226)+W(3,1035838167,1045634202,-1084335000,1024672505)+W(4,1036976671,1039176783,-1092101927,-1111706306)+W(5,1043227732,1044499416,-1106295064,1040216275)+W(6,1024532056,-1115296143,-1108352670,1018355325)+W(7,1041576607,1036111714,-1103209586,-1129216251);sum2=W(0,-1125983803,1057121124,-1097673861,-1097055530)+W(1,1026289226,1048908439,-1081617292,-1105528539)+W(2,1003361806,1042597022,-1083990029,-1094090339)+W(3,1036989304,-1101738899,1066557847,1060807350)+W(4,-1121376018,-1101518001,1050089807,1045798092)+W(5,-1127516251,-1114490175,1021212715,1007168711)+W(6,999276462,1032222895,-1107462587,1021142275)+W(7,1020382491,-1111061815,1048167829,1024157832);WS(1043392312,-1114334171); +sum1=W(0,1041086874,1046571639,-1101297859,-1108043111)+W(1,1027676176,1051603231,-1100311555,1031499310)+W(2,1029494548,-1114765098,-1090719068,-1123479337)+W(3,1038182418,1063881062,-1092551191,1047470620)+W(4,1033375641,1036439434,-1093343060,1029157954)+W(5,1014428948,1039261900,-1095549099,-1113522785)+W(6,1016176348,1049353410,-1102133676,1032866554)+W(7,1036956537,1039119196,-1097401399,-1108903402);sum2=W(0,1032922039,-1110774431,1024080221,-1111786600)+W(1,1034144522,1041464609,1024001520,1038622987)+W(2,1035186417,-1089347840,-1102975683,-1098326560)+W(3,-1106146153,1063858171,1062496232,-1094555153)+W(4,995983013,-1103182741,-1104694448,-1110476474)+W(5,1014708981,-1105498679,1034761930,-1107944280)+W(6,-1118508182,1046443094,-1113235807,1045574278)+W(7,-1122673776,-1107403517,-1126790312,-1119406695);WS(1055141020,1060902337); +sum1=W(0,1034435725,1057965143,-1123568702,-1104499136)+W(1,-1133288704,1052483105,-1121795134,1006999415)+W(2,1026181508,1052696320,-1094115828,-1153162900)+W(3,1033934442,-1122504460,-1084201687,1029709087)+W(4,1030709219,1052884304,-1093347107,1036285529)+W(5,-1118188821,1049027177,-1096042081,-1155692311)+W(6,1027652318,1046782257,-1098441692,1013713298)+W(7,1035419593,1045790650,-1101051195,-1111952258);sum2=W(0,1043194323,-1070666261,-1098866335,-1101126135)+W(1,1017945729,-1075189642,-1106608294,1010301074)+W(2,992756489,1068575013,1051129947,-1107911121)+W(3,-1117717167,1076566585,1049134123,1046700061)+W(4,1023440269,1056539999,1047751107,1020103457)+W(5,-1108161809,-1098049115,-1097073139,1026363561)+W(6,1034607052,1036076910,1011007330,1035420194)+W(7,-1115924363,-1112346970,1016205049,-1137869730);WS(-1090579868,1070279725); +sum1=W(0,1032329895,1048430680,-1101560157,-1129281319)+W(1,-1102328821,1050349544,-1091335294,1012204235)+W(2,-1113203900,1052980239,1039656780,1033674783)+W(3,-1098061089,1057014372,-1084573078,-1115372202)+W(4,-1105344998,1057962188,-1103450436,-1108117804)+W(5,1034205973,1038273502,1043587871,-1111454739)+W(6,-1106552005,1046276062,-1098888483,-1115265901)+W(7,1041435478,1049777060,1002064136,-1109943484);sum2=W(0,987673807,1027892228,-1103141235,1005138532)+W(1,1036995374,-1102736131,1049007178,1028221332)+W(2,-1095509641,1034852634,-1090760003,-1123669832)+W(3,-1094252408,1059241808,1060311666,-1128511149)+W(4,-1119095571,-1103859919,-1129798465,1032914452)+W(5,-1103179232,1043446486,-1100012675,1006285508)+W(6,1040985329,-1109795439,1051746582,-1122773902)+W(7,-1114181285,1004807604,-1113144024,987177167);WS(1058381774,-1086956646); +sum1=W(0,1005434106,-1096145742,1046241393,1026532260)+W(1,-1149835360,-1100460324,1039571170,-1120107684)+W(2,1034370117,-1096424577,1054608457,-1107524072)+W(3,1036055789,1033532617,-1110152984,-1123297125)+W(4,1007595428,1049990129,-1100950084,1032832748)+W(5,-1173712576,1042033667,-1103984787,1041584782)+W(6,-1122685332,-1147483724,-1122634471,-1111048693)+W(7,-1119060568,1021597150,1016207588,1023439817);sum2=W(0,1073050559,1049113865,1048373410,-1123382260)+W(1,1069067455,1035642194,-1101089925,1035361564)+W(2,-1096535796,-1105600932,1050248373,-1105239942)+W(3,-1073893027,-1114871718,-1113393188,1000972215)+W(4,-1077684470,-1104998692,1015693919,-1112223483)+W(5,1038335059,1034875990,1032989733,987872957)+W(6,994568047,1004288083,1024635942,1016564448)+W(7,-1109196141,1019116562,1041247426,1019016937);WS(1051792028,1027146209); +sum1=W(0,-1173418992,-1096555104,1048715847,1037767898)+W(1,1031492470,-1099279313,1043543405,1032372106)+W(2,1030866682,-1102472206,1045948678,1031937048)+W(3,-1111745573,-1086728512,1048944276,1030986133)+W(4,1037975597,-1098029143,1053562136,1035090980)+W(5,1032231158,-1099704976,1041023999,1038793940)+W(6,1021051177,-1107704157,1031959404,1031982829)+W(7,1029296729,-1088435526,1046674105,1043937550);sum2=W(0,1076285256,-1071495861,-1089164092,1024798548)+W(1,1067013205,-1080654015,1044446905,-1130255717)+W(2,1054912747,-1092768710,-1089831336,-1111620633)+W(3,-1103468782,1053690657,1049463752,-1129289568)+W(4,-1082179927,1062196550,-1116071286,1022374674)+W(5,-1086354611,1059230433,1055604285,-1147177200)+W(6,-1086555076,1065208788,-1102169042,1008723412)+W(7,-1077304359,1069826015,1049830695,990531682);WS(-1116843232,1041538044); +sum1=W(0,1038718416,1050813118,-1091780513,-1107356403)+W(1,1041393778,1048646402,-1107072481,1032833522)+W(2,1023355030,1043671731,-1097953353,-1126022145)+W(3,1040958951,1037057641,-1088265503,-1185162751)+W(4,1040537034,1050123337,-1105750724,1038008293)+W(5,-1112360254,1052799074,-1091053114,-1123581176)+W(6,1043346413,1037436293,-1121572392,1033129910)+W(7,1047211822,1042212684,-1091261766,-1116284746);sum2=W(0,-1127892588,-1090048491,-1076486023,1071993665)+W(1,1025248710,-1124324076,-1080184847,1067215194)+W(2,-1127740272,-1092974499,-1080442855,1068762214)+W(3,-1114879615,1047668544,1048567939,1014309155)+W(4,-1125515678,1042122418,1066323214,-1079656754)+W(5,-1135605467,1052455522,1068938556,-1077318729)+W(6,1015277154,-1102075660,1066205534,-1083078137)+W(7,-1118452308,1052515578,1058048535,-1086246531);WS(1045082936,1047750074); +sum1=W(0,1017867382,1038967959,-1107005280,-1117189504)+W(1,-1105827232,1036533543,-1101431328,1000061951)+W(2,-1139557912,1048524561,1044741561,1034808454)+W(3,-1098507795,1057427781,-1099209723,-1102176472)+W(4,-1112138258,1057555836,-1103886606,-1102736460)+W(5,-1113781499,1044700722,-1117912777,-1102956733)+W(6,-1117154624,1037485187,-1108908881,-1113728179)+W(7,1024003356,1046059755,1024367918,-1108156515);sum2=W(0,1003184961,1024857236,-1114215978,1037587704)+W(1,971431442,-1109323954,1030818718,-1121823736)+W(2,-1131894760,1026446282,1031262679,1045339410)+W(3,-1133283297,-1105665514,1056963612,-1107079097)+W(4,984723076,-1116186208,1055283667,-1090072253)+W(5,1031831407,1024492508,975724297,-1102678968)+W(6,-1125590160,-1121629964,-1116339968,-1103014356)+W(7,1031681833,-1148808497,1026784592,-1123463096);WS(1059869006,1015916977); +sum1=W(0,-1111801867,-1103727218,1051877295,-1115491581)+W(1,1039164638,-1102716146,1051739903,-1106752078)+W(2,1023424768,-1089648586,1057614174,-1104830517)+W(3,-1118862224,-1092420393,1055627629,-1112797325)+W(4,-1114194639,1049092536,-1096079006,1038662167)+W(5,-1099094340,1052180160,1008315659,1030088557)+W(6,-1118811114,1032231232,-1121275805,-1131680577)+W(7,-1096321008,1046058153,1039975892,-1175801754);sum2=W(0,-1113427160,-1090644207,1034414883,1038986783)+W(1,-1104433368,-1091764889,-1120815960,-1135559136)+W(2,-1104169884,-1109333336,995253792,1033390214)+W(3,-1117600576,1065407690,1059846520,-1120264784)+W(4,-1102319880,-1098732665,1048874179,-1104270640)+W(5,1039627671,-1109931470,1008884504,1019376128)+W(6,-1097619580,1043714297,1021072320,-1111461786)+W(7,1047721667,1041133481,-1103318888,-1142244432);WS(1054131356,-1077482588); +sum1=W(0,-1100136045,-1101215881,1045307006,1047064142)+W(1,989703980,-1100083265,1039854844,-1120855287)+W(2,-1114161471,-1091699940,1051542530,1042850313)+W(3,-1117800461,-1088812180,1056393300,-1122501592)+W(4,1013262449,-1095974704,1053327664,-1118254671)+W(5,-1112319975,1033042241,1059113280,-1111473941)+W(6,1027862775,-1095224480,1049428707,-1119385054)+W(7,-1103330903,-1102789769,1055440053,-1109190398);sum2=W(0,-1098032416,1063396296,1043414797,-1093635160)+W(1,1055692800,1024719031,1032661901,1049215120)+W(2,-1101668743,1065491656,1058961916,-1090478816)+W(3,-1100435053,1073645059,1063424749,1050905898)+W(4,-1089098280,1060161647,-1096580753,-1135528507)+W(5,-1094416925,-1074198531,-1098776178,1042380471)+W(6,-1099202751,-1081296593,-1115458644,1032695397)+W(7,-1104551065,-1083400329,-1092624053,1054277265);WS(-1082679118,-1072338335); +sum1=W(0,-1126832308,-1092407662,1041636256,1032452512)+W(1,998650886,-1099976035,1035459839,-1118647007)+W(2,1029713605,-1098757312,1053507448,-1113994637)+W(3,1045660229,1049242330,-1097348797,1019901759)+W(4,-1125245511,1052609817,-1097111418,1026546307)+W(5,1001090478,1049104969,-1099322690,1041545965)+W(6,-1126242526,958956607,-1116731426,-1113342195)+W(7,-1128346278,-1170516592,1009511091,1027607012);sum2=W(0,-1069228184,-1099529380,-1112044089,-1144476451)+W(1,-1073602631,1043301860,1041147606,-1112019052)+W(2,1021776922,1054858487,-1119872164,1036271953)+W(3,1076866983,1044685536,-1106846135,1018899191)+W(4,1069809281,1062109344,1042271976,-1114284680)+W(5,-1101499289,-1097491140,1035368326,-1126672913)+W(6,1013617559,-1149319294,1025827813,-1112053703)+W(7,1036050969,-1113127688,-1115137330,-1146921887);WS(-1125906880,1029353026); +sum1=W(0,1052620124,-1082830235,1044570800,1033131793)+W(1,1040928385,-1087911853,1048894344,1031982257)+W(2,1053619569,-1088553290,1054767249,-1118254573)+W(3,1034478636,-1115166792,1052323270,1037418321)+W(4,-1149501032,-1104403058,-1096342700,1045103465)+W(5,1027228408,1046902211,-1092690897,1053685367)+W(6,1033816441,-1140598044,-1112660402,1032758420)+W(7,-1143379631,-1115398454,-1089842615,1056771243);sum2=W(0,1052242091,-1123374674,-1088438592,-1109756837)+W(1,-1105901664,1032004261,-1109896025,-1117902306)+W(2,1041713460,1057464262,-1106721416,-1106560728)+W(3,-1098081544,1055897675,1057898227,-1101499608)+W(4,-1101414896,-1108453649,1044097375,-1114554169)+W(5,-1140318759,-1099401944,1041656473,1042131382)+W(6,-1123485994,1039811869,1042751001,-1104786072)+W(7,-1108472633,-1092934450,1033994653,1048148308);WS(-1080878567,1068324028); +sum1=W(0,-1115471279,-1095139206,1057833304,1032811018)+W(1,1019310859,-1103458412,1049561152,-1118469827)+W(2,-1121098697,-1090917913,1058273109,-1107876783)+W(3,-1115193805,-1094785898,1054221326,-1109399058)+W(4,-1153442440,-1100131090,1050583410,-1121957752)+W(5,-1104713039,-1118370765,1048985266,-1109945243)+W(6,1023975060,-1102569730,1041261354,-1125987028)+W(7,-1094675607,1044057356,1045920684,-1144681671);sum2=W(0,-1122597644,1052263517,1084267296,1037076324)+W(1,1032420914,-1132353885,1077171750,1017945885)+W(2,-1109997244,-1113437764,-1076080701,1045994672)+W(3,1029919127,-1086124512,-1066836895,-1105598049)+W(4,-1129031901,-1134522929,-1073829589,-1115453382)+W(5,1025876905,-1137529969,-1128728545,1027437378)+W(6,-1121404056,1041285329,-1128683125,-1112127416)+W(7,1025649559,-1111439550,-1109934248,1032857588);WS(-1106960696,-1099012034); +sum1=W(0,-1114528403,-1099071342,1055554285,-1109121109)+W(1,-1119077260,-1099370430,1049964157,-1115766890)+W(2,-1143558020,-1089278443,1061104081,-1114965299)+W(3,-1119877760,-1086538844,1056629915,-1120868875)+W(4,-1109244232,1010994112,1049997315,1034547527)+W(5,-1096650748,1041376829,1042073805,-1114495407)+W(6,-1112604445,1042854492,1031563405,-1139584324)+W(7,-1100402892,1049345155,-1123516568,-1118254096);sum2=W(0,-1116593925,1027806287,1032648371,1024756439)+W(1,1028908115,-1136470458,1006654490,-1116529299)+W(2,999050165,1039840949,1052059722,-1107372324)+W(3,1037914955,-1122048333,1057985079,-1128153177)+W(4,-1106109711,1057135276,-1090440242,-1142966917)+W(5,-1105957739,-1105275062,-1131926605,-1123338691)+W(6,-1123834115,-1096566133,1018741845,1013415162)+W(7,-1113783754,-1105721601,-1124260101,1018182189);WS(-1103089976,1059868827); +sum1=W(0,1026631887,-1091300264,1056895190,1031003956)+W(1,1033737723,-1096562704,1050565142,-1140469197)+W(2,1034000797,-1087537316,1059766350,-1108911023)+W(3,-1130496915,-1094386976,1053939124,1032926090)+W(4,-1106694966,1044429902,-1108577640,-1120892680)+W(5,-1105866475,1045093007,-1109922270,1034482579)+W(6,-1106727101,1040636078,-1122075862,-1136817768)+W(7,-1098705919,1044615672,-1100982776,1045052014);sum2=W(0,-1114832682,1044376552,1052671036,-1084839384)+W(1,1038307608,-1101986459,-1094811671,-1076225566)+W(2,-1109268272,1025272345,-1106762472,-1074779618)+W(3,1031259614,-1112738770,1052706603,-1088390497)+W(4,-1136199018,1014008179,1040752903,1066038403)+W(5,-1118450441,1042085570,-1100877636,1071357616)+W(6,1025376385,-1110075404,1051973899,1068318141)+W(7,-1125957173,1027010884,1036345951,1050587817);WS(-1089897038,998399462); +sum1=W(0,-1100326508,-1114312802,1049930251,-1141222070)+W(1,-1099771006,-1109889234,1047140918,-1114407115)+W(2,-1103969415,-1092992143,1060325312,-1106384368)+W(3,1030998252,-1098209637,1062808044,1017922927)+W(4,-1111096702,-1116385180,-1128865717,1023432554)+W(5,-1129527451,-1096464604,1048691588,-1125954964)+W(6,-1115021151,-1111889198,-1137813989,-1121716413)+W(7,-1124899748,-1109224641,1043572929,1020452535);sum2=W(0,-1094975511,-1113696880,1023473326,1029862812)+W(1,-1089233591,1032844980,1036803698,-1117299445)+W(2,-1089977002,1066397244,-1129026618,1025970568)+W(3,1033778332,1037917830,-1104280508,1031377784)+W(4,1006981461,1039504138,1024702770,-1122944997)+W(5,-1137053176,1032622380,-1121975322,1022461928)+W(6,-1125132764,1021506052,974010432,-1130740686)+W(7,979684320,-1119563165,-1138205260,1024270227);WS(-1096120220,-1099720911); +sum1=W(0,1052677544,-1105594052,-1101878153,990296621)+W(1,1027883172,1050583742,-1120505890,1026529890)+W(2,1046184634,1030711656,-1094174707,1039246623)+W(3,1036941212,1050761182,-1087347673,1031039363)+W(4,1037786724,1044997418,-1091299260,1038193547)+W(5,1039372749,1051859318,-1092171165,1036921611)+W(6,992842790,1041579690,-1105854769,-1115076484)+W(7,1040590154,1052858474,-1087724293,1007468831);sum2=W(0,1040381409,1023777345,-1110031849,1022623295)+W(1,-1131846701,-1095435966,-1146822820,-1096899181)+W(2,1030695069,-1111411494,-1089001391,1049343346)+W(3,1015259161,-1085163747,-1074171332,-1107180310)+W(4,1026868853,-1100600319,-1078760233,1043071461)+W(5,-1164136976,1052695808,1048168469,1020495459)+W(6,-1121164685,1041440525,1074132102,1017314953)+W(7,-1109936403,1051545155,1072577306,1050115198);WS(-1080112807,-1111145054); +sum1=W(0,-1103297132,1049824404,-1133975251,1026400021)+W(1,-1106341774,1049617192,-1122989109,1042898005)+W(2,-1098278655,1059552348,-1086286580,1041608840)+W(3,1024154699,1031972225,-1137351813,-1145221295)+W(4,1037514093,-1085661228,1056970252,-1102084285)+W(5,1034961350,-1097823136,992708574,1041904442)+W(6,-1125780682,-1114326813,1021582000,1038246926)+W(7,-1109009483,-1119831648,1040424089,1042525799);sum2=W(0,1041258750,989910477,-1134607603,-1109794979)+W(1,-1109734283,-1100922013,1016064722,1041809078)+W(2,-1123542769,-1096844113,1041392492,-1126381362)+W(3,-1113561957,1051742866,1057819912,982123162)+W(4,-1110564237,-1100235579,1047439582,-1119465765)+W(5,1026811493,-1105813951,-1113868277,1026735929)+W(6,-1130694514,-1151284621,-1118083589,1019553626)+W(7,1024057869,-1136706867,-1114600003,-1114678252);WS(1043409720,-1105036943); +sum1=W(0,1040191749,-1096303173,-1115184605,1041655059)+W(1,1033970558,-1095924673,1041748910,1041917006)+W(2,1042494496,-1093807736,1044442592,-1160531625)+W(3,1046767380,-1092831585,1042876074,1039311757)+W(4,972615552,-1096756208,-1140612185,1020654492)+W(5,1032778168,-1126846855,1018241414,1043700571)+W(6,1032217109,-1115229280,1027878365,1034107952)+W(7,1032356247,-1098580285,1034858676,1036396440);sum2=W(0,1027808259,-1139047739,986751832,-1095774205)+W(1,1010119787,1043340308,1026247831,-1093511024)+W(2,-1111510504,-1106790738,1065364148,-1089533357)+W(3,-1113418759,-1096910874,1040723354,1053173071)+W(4,1032132185,1040059331,1038861011,-1106558855)+W(5,-1121052855,-1115460243,-1113647147,1027584935)+W(6,1014515195,1017581734,1041604470,-1121443175)+W(7,1010692603,-1120741339,-1135975307,1014681515);WS(1035857520,1029952289); +sum1=W(0,-1143077795,1037051011,-1110400621,-1121149466)+W(1,-1105351783,1029971495,-1106469910,1043652126)+W(2,-1113811952,1049064844,-1094483622,1027875988)+W(3,-1106526780,1035603988,1058276716,1035104701)+W(4,1035289215,-1083894414,1056346487,-1114346217)+W(5,999420801,-1098557596,1050633420,-1123554317)+W(6,-1129002434,-1111645039,1042325343,-1130799743)+W(7,-1113970285,-1130790920,1026109447,1025377311);sum2=W(0,-1118517607,1026484093,1039465846,1008581907)+W(1,-1101077931,1046485772,1030900361,-1114630284)+W(2,1029148161,-1098019518,1048118782,-1106945018)+W(3,-1087996420,1071267691,1064954318,-1097625455)+W(4,1047526016,-1082674625,-1084489705,-1156379726)+W(5,-1108756119,1032470282,-1118487613,1024110641)+W(6,1038718292,-1106613565,-1112021711,1020048570)+W(7,1024464693,-1113199029,-1120012731,1036291722);WS(1058189134,1034857672); +sum1=W(0,-1171748679,1031241360,-1100969760,987174985)+W(1,-1105475825,1044072484,-1094075536,1045893176)+W(2,-1097172873,1057114388,-1082247827,1042860595)+W(3,-1108837708,1051374554,1060030327,1031954257)+W(4,1038034707,-1083662360,1058651386,-1120638978)+W(5,-1131134898,-1099379283,1046921459,-1137288661)+W(6,-1113151849,-1121036423,1041721673,1037681908)+W(7,-1119273967,1018101850,1036514264,1029972391);sum2=W(0,1003810984,1020569783,-1128982694,1043745048)+W(1,1036204547,-1114489126,-1099380876,-1104004872)+W(2,-1101998989,-1121260135,-1101918458,-1104165612)+W(3,1041029203,1052640914,1059611184,-1121067579)+W(4,-1098215637,1059150102,1040381797,-1100369008)+W(5,1044393168,-1098121773,-1094102036,1032515174)+W(6,-1110527635,1037147118,1028175839,-1114899975)+W(7,1027560485,-1110248773,-1113935142,1000033398);WS(-1107450480,1040804833); +sum1=W(0,1040192716,1040473489,-1095196747,-1124855402)+W(1,1022226221,1047969017,-1098407451,1020416041)+W(2,1002013395,1044185574,-1087290490,-1160070647)+W(3,-1117682794,1060667554,-1089168888,1045737613)+W(4,1001040843,1057909434,-1111951852,-1101676720)+W(5,1000424795,1049088596,-1119291421,-1103624738)+W(6,-1120982404,1038016429,1031577591,-1104451167)+W(7,1025306833,1042416864,-1112956481,-1115902938);sum2=W(0,1014727333,-1124633329,1026257754,-1111611661)+W(1,-1117243126,-1107065949,-1111801245,-1136702760)+W(2,1029406572,1041729284,-1084100906,-1103677442)+W(3,1027900147,-1094200388,1052541581,1050798725)+W(4,-1112527674,-1104959017,1070744988,-1105828213)+W(5,-1114664521,1040214496,-1111707080,-1111536822)+W(6,-1111634336,1005029260,-1127513012,-1106506739)+W(7,-1107116047,1049039902,-1107038609,-1140667375);WS(-1113867888,1064515135); +sum1=W(0,-1113562537,1048061265,1011269086,-1105945126)+W(1,-1107046062,1043460993,-1098944190,-1148623547)+W(2,-1103978495,1060048584,-1107431310,-1111558073)+W(3,-1098739202,1062873548,1045822761,-1114838028)+W(4,-1122423580,-1119786749,1025265092,-1101841139)+W(5,1019693149,1023528257,-1112998912,-1117915947)+W(6,-1116789880,-1106657727,-1142662356,-1106868487)+W(7,1020558520,-1137576074,-1104660585,-1122252061);sum2=W(0,-1145158406,1022878354,-1111624996,1010204019)+W(1,1012385731,-1129472106,1015658802,-1123973089)+W(2,1016118130,1044961455,1040055751,-1157676569)+W(3,1024197601,1049544336,1057430996,1022031298)+W(4,-1112179804,1030346877,-1114498280,-1124728962)+W(5,-1119519161,-1131221354,1020564842,1023003938)+W(6,-1127326042,-1095482557,-1112131584,-1121117277)+W(7,-1113792718,-1093377057,1019749938,-1141925830);WS(1051333020,-1087054195); +sum1=W(0,-1112042433,-1104387605,1052246829,-1113527444)+W(1,1019002067,-1096771599,1048899277,-1098301717)+W(2,-1115058903,-1102529947,1054136106,-1095193948)+W(3,1046618143,-1093976551,1044227957,1044013586)+W(4,-1107874438,-1089735051,1060328029,-1107288943)+W(5,-1148774132,-1129150690,1046377228,1038700845)+W(6,1036768028,-1101876091,1045160291,1024370318)+W(7,-1154881470,-1098135714,1045432325,1019966234);sum2=W(0,-1114066012,1041392892,1044719218,-1097547793)+W(1,1029900262,-1112610934,1046575198,-1095644935)+W(2,-1114806697,1041587346,1050162797,-1102972970)+W(3,-1110038644,1025557898,1055420600,-1095936036)+W(4,1036646832,1055783298,-1099287148,1028020818)+W(5,-1110070018,-1102485451,-1100701871,-1113902766)+W(6,1020625547,988088600,1033323822,-1135974783)+W(7,987867800,1039502616,-1119304428,1018696751);WS(-1120103648,-1090070191); +sum1=W(0,-1117418940,1049030490,-1112262737,-1114427969)+W(1,1024592611,1050801054,-1094705236,1032013281)+W(2,1040968250,-1111205267,1042055990,-1110419822)+W(3,1049918615,-1116228463,-1085341341,1047944497)+W(4,1034410595,1050512309,-1106227665,-1132367051)+W(5,1035134604,-1102511675,1036298997,1025392341)+W(6,-1119948353,1034763283,-1138448657,-1111046724)+W(7,-1144523437,1039656998,-1110564136,-1120201127);sum2=W(0,-1122606938,1046354401,-1124762815,-1118515993)+W(1,-1141997982,1040228902,-1102583710,1036845124)+W(2,1027805544,-1143835982,1052785838,-1106443071)+W(3,-1120462650,1061896257,1059397472,1043676745)+W(4,-1100560083,-1080731069,-1120768779,995709275)+W(5,-1105726471,-1098049024,-1126645315,-1128858827)+W(6,1025575588,1026943708,1011421951,-1112152255)+W(7,-1113668318,1032253740,-1122685018,-1127110207);WS(1060158670,1068766623); +sum1=W(0,-1116432453,1056712636,-1087151539,1040295867)+W(1,-1131098839,1049784895,-1102593034,1033948341)+W(2,-1099753724,1057908127,-1089291740,1031077093)+W(3,1034945056,1044163070,-1094800699,1027113355)+W(4,-1122123599,1028198895,1036808107,-1132674679)+W(5,1040823512,-1122504371,-1120242995,-1117547229)+W(6,1040184285,-1123329903,-1127465369,1040274980)+W(7,1050332416,-1096645803,-1132187055,-1137741501);sum2=W(0,1036379663,-1098232449,-1128107780,-1120677803)+W(1,-1108907739,1058983203,1035811659,-1120240179)+W(2,1070189048,1016986873,1040144345,1029686139)+W(3,1073213180,1047923452,-1105399966,-1109097268)+W(4,1065321765,1033582270,-1110681209,1041308319)+W(5,-1076673488,1031365639,1039880527,-1109042515)+W(6,-1079893128,1038048757,-1116001167,1034493417)+W(7,-1072585926,-1107019906,1018297481,-1131123922);WS(-1112459888,1031046963); +sum1=W(0,-1112719265,-1128634346,1043326546,-1115081924)+W(1,-1129483154,-1120462421,-1103778738,-1114915140)+W(2,-1103727283,-1112785958,1050524372,-1104237825)+W(3,-1091575740,1056781779,1067939282,-1096588493)+W(4,-1104335643,-1153409228,1048587330,-1108534894)+W(5,-1155155940,-1108013960,-1132710977,-1114726045)+W(6,-1114094348,-1118230989,-1109505653,991235804)+W(7,-1105426861,1027667442,1036777787,-1111746006);sum2=W(0,-1119086167,1037241732,-1114652243,-1131518324)+W(1,1013020612,-1129818230,1028260797,-1115730540)+W(2,-1141008560,1029187991,-1112264831,1036245214)+W(3,-1108719150,-1074141953,1072760747,1034705438)+W(4,1023891147,1019083994,1042535682,-1119172530)+W(5,-1145112744,-1124211508,-1131878972,-1133917220)+W(6,1018251990,-1122886966,1037493286,-1114007324)+W(7,-1116478859,1027168441,-1129254230,1018465006);WS(-1086783566,-1086791567); +sum1=W(0,-1115195632,-1095708330,-1123676804,1041725033)+W(1,-1153026662,-1093442522,1018199561,-1121101892)+W(2,-1134496297,-1098161001,1037878573,1034570216)+W(3,-1108787789,1044632085,1064261167,-1103584185)+W(4,-1119803561,-1091375169,1057417647,-1108866704)+W(5,-1145121243,-1107384199,1052226946,-1122033784)+W(6,-1131708777,-1100078210,1046948682,-1117964907)+W(7,-1110064394,-1104664012,1047330733,1022321300);sum2=W(0,1031515378,-1077397139,-1134939312,-1112896962)+W(1,-1121810184,-1079753374,-1097085111,1035985281)+W(2,1010081392,1044674665,1052841311,-1105060263)+W(3,-1119765868,1073378801,1007836336,1031953140)+W(4,1035546479,1056367001,1044809025,1022446080)+W(5,-1106495935,-1109376902,-1118570548,1031289566)+W(6,1028378344,1035615024,992033726,1032016077)+W(7,1003402623,-1118889676,1010750288,-1150317246);WS(-1096711324,-1080143969); +sum1=W(0,-1135181951,-1095339398,1050582337,1026786373)+W(1,1025399430,-1094144146,1049483953,-1123204644)+W(2,1033906501,-1093853897,1045129706,1006467326)+W(3,1041786535,-1089314149,1046728732,1031608549)+W(4,-1133559462,-1089126233,1045641984,-1135165794)+W(5,1003671004,-1110956839,1051092970,1017185520)+W(6,-1123695637,-1129083412,1049638101,996324016)+W(7,-1105366874,-1113909272,1057307443,1009923752);sum2=W(0,1023911567,-1108118447,1044892126,-1112738860)+W(1,1004932796,-1134375038,-1138359022,1020475455)+W(2,-1119124867,1035251904,1063133445,-1102926770)+W(3,1022775023,1037995724,1074655410,1047698054)+W(4,1011639102,1050162042,1070062472,-1113839430)+W(5,1036397588,1037707684,-1083132698,-1117927031)+W(6,999444348,-1111062570,-1073510095,1017195567)+W(7,-1106309084,-1101285996,-1073687480,1041743674);WS(-1089880270,1068594400); +sum1=W(0,-1114467040,-1104513741,1050219169,-1118490053)+W(1,1023170830,-1091458130,1042545281,-1120682309)+W(2,1036273894,1034367029,1048674674,1031296832)+W(3,-1107800974,-1100997781,1042739212,-1110241363)+W(4,1029867434,-1095286649,1053624831,1034289100)+W(5,-1106779367,1047811540,1034908007,-1107012174)+W(6,1024593089,-1096228817,1034674708,1021221591)+W(7,-1110449433,-1109179032,1049808694,-1126204757);sum2=W(0,1030004067,-1133064657,1024174065,-1119836251)+W(1,-1117028113,-1134091777,-1113615539,1025775761)+W(2,-1105887481,1045929484,1032698350,-1118489229)+W(3,-1066126465,1081917443,-1097201480,1041573100)+W(4,-1104777348,1043726141,1033613382,-1124268877)+W(5,-1122550707,1028310407,-1107697461,1030764051)+W(6,-1130918117,1016764395,1029778305,-1116797441)+W(7,1023720579,-1116064873,1018371831,1018350967);WS(1067475431,-1126058166); +sum1=W(0,-1108052732,-1097851361,1049362324,1040199303)+W(1,1043040440,-1108210069,1048929252,-1109622414)+W(2,1048922396,-1084429932,1054104112,1041203782)+W(3,-1097574342,1055911149,1047147106,-1104274751)+W(4,-1119673025,1041902328,-1085779789,1047880876)+W(5,-1101774749,1035827603,1049622021,-1116198608)+W(6,1019400344,-1115594513,1019477630,-1107876353)+W(7,1007801026,-1107003538,1037086373,1036701569);sum2=W(0,1013753738,1020731454,-1120697178,1009873360)+W(1,-1113150555,1046742995,1034035253,-1099358283)+W(2,1015248850,1045156685,-1094710566,1039470065)+W(3,1042650722,-1104352239,-1128318417,1046693145)+W(4,1040818978,-1089864705,1045040370,1036008061)+W(5,-1105652199,1045331461,1025091411,1030627793)+W(6,1033430289,-1109224259,-1106535436,1017876415)+W(7,-1120377801,1016214593,1019751894,-1132110931);WS(1060496974,-1099362699); +sum1=W(0,1054706808,-1109706041,-1098091909,-1129324363)+W(1,1036662868,1041317773,-1123237413,1015757258)+W(2,1045895019,1051554925,-1091928498,1021341985)+W(3,1033303646,1049334366,-1083798889,-1112852963)+W(4,1044095763,1051166813,-1095315343,1041804248)+W(5,-1130190200,1053590462,-1087007295,-1127492145)+W(6,1035564779,1049285205,-1097088265,1039262630)+W(7,1040746168,1055551482,-1094550458,-1114905285);sum2=W(0,-1073385920,1077926840,1032559783,-1094451238)+W(1,-1084887580,1058818874,-1089669880,-1121878040)+W(2,-1083140914,1060159151,1045764296,-1173171215)+W(3,-1081800202,1074845707,1059775011,-1120435570)+W(4,-1085954594,1061906872,-1103860568,-1115590029)+W(5,1037413129,-1084431515,-1094536545,1053315192)+W(6,-1096433065,-1126824848,-1133232881,-1107838893)+W(7,1054210787,-1087315344,-1099186518,1052978812);WS(-1078369703,1041267413); +sum1=W(0,1024386586,1041630887,-1102607056,1016693023)+W(1,-1098405416,-1112635974,1051293608,1018393854)+W(2,1044040033,-1132435208,-1094040968,1046099151)+W(3,-1098286219,1041292515,1052507157,-1095618428)+W(4,-1130684104,-1091497929,1056853585,1018959206)+W(5,1045750173,1016159377,-1105775474,-1117949682)+W(6,-1098338270,-1139597330,1049412460,-1118540325)+W(7,1041584973,-1101611546,1026100205,1040982949);sum2=W(0,1035615459,-1097925659,1043665288,1020457849)+W(1,1028814353,1038714809,1033337220,-1103657321)+W(2,1062855981,-1077657685,1051048913,-1109823715)+W(3,1052250964,-1101970047,-1113114333,1058024935)+W(4,1056109526,-1098468896,-1085664062,1056999181)+W(5,-1106019250,-1114182260,1040975429,-1105846491)+W(6,1048995011,-1104046747,-1109605260,1042595027)+W(7,-1115640692,-1130122971,1034778788,-1112374505);WS(1049151900,-1114127847); +sum1=W(0,1050216581,1044969414,-1106856243,-1099359923)+W(1,1000015204,1047621718,-1112471205,-1148711507)+W(2,-1136218178,1057314961,-1091938023,-1133921207)+W(3,1023136961,1055877843,-1092033343,-1112054390)+W(4,-1130455775,1054358666,-1099719178,1034273823)+W(5,-1133465094,1052966059,-1089783713,-1122838974)+W(6,-1160090192,1045850836,-1099053307,1019980258)+W(7,1035991733,1052491071,-1087984664,-1112322824);sum2=W(0,-1105478410,1011113448,1068049752,-1082501551)+W(1,1039552519,1050864081,-1103020148,1059003564)+W(2,-1131405058,-1125310098,1066695202,-1098156272)+W(3,-1099466970,1043215106,1074596924,1039344435)+W(4,1049027924,1034334973,1067601936,-1099880092)+W(5,-1115050596,-1095883745,-1084539788,-1107282542)+W(6,-1129231446,1036178144,-1075514015,-1097076855)+W(7,1049583286,-1088635155,-1074115054,1042018058);WS(-1081332839,-1093454830); +sum1=W(0,-1109709318,1035356975,1039420520,-1111308088)+W(1,-1104916884,1037116623,-1122158672,1014687039)+W(2,-1108177419,-1125155242,1053028347,-1112931654)+W(3,-1117212646,1030327966,-1104761999,1020526050)+W(4,-1119705461,1050241163,1032136206,-1119448076)+W(5,1032417267,-1103907222,-1115200780,-1112611266)+W(6,-1118748528,1046095669,-1115609017,-1136487898)+W(7,987327371,1033262333,1029855614,-1104533373);sum2=W(0,1013207527,-1118344664,-1124997045,1036829905)+W(1,-1127355075,1028266047,-1117884424,1016171285)+W(2,-1103159789,1043690369,-1116887196,1024917624)+W(3,1040955478,1051132935,1047094008,1041601336)+W(4,1008876024,-1108842627,1057384051,-1127506713)+W(5,-1116686760,1041402295,-1100609336,1033786361)+W(6,1035764738,-1105537330,-1098518151,-1114313206)+W(7,-1154118338,-1128237045,-1089828796,-1102385561);WS(1063446990,1030048893); +sum1=W(0,-1131562670,1043069042,-1108681470,-1108650254)+W(1,-1099483503,1049571969,-1106599551,-1106453175)+W(2,-1106193120,1061428532,-1097709592,1008661917)+W(3,-1102405700,1053095529,1046689338,-1102088711)+W(4,1021119810,-1115069793,1029025472,-1123233168)+W(5,-1113568905,-1119868742,1006738196,-1104754348)+W(6,1009340592,1027160065,-1120287391,-1136963210)+W(7,1030255032,1043118346,-1111789333,-1114502129);sum2=W(0,1012371361,1017109065,-1110016822,-1103671135)+W(1,-1149491589,-1115161102,-1109821790,-1097972516)+W(2,1023756477,1012418345,1060485172,-1094449842)+W(3,-1165255819,-1111308586,1031379047,1049769129)+W(4,-1111467932,1015942947,1046805034,999148403)+W(5,1019335917,-1106016138,-1114576028,1022790203)+W(6,-1140694601,1015823021,1024897044,1032463998)+W(7,1010513313,1026481588,-1114618076,-1146831635);WS(1060385486,1040268319); +sum1=W(0,-1115333181,-1105770459,1048230464,1022495614)+W(1,-1113839600,-1104706211,-1122113023,-1115044751)+W(2,1026945989,-1085502934,1051932092,997701279)+W(3,1041834949,-1112644646,1065603891,1044329112)+W(4,-1100015113,-1102865873,-1105250533,1038196649)+W(5,1010458454,-1112283012,1054415097,-1113673817)+W(6,-1113704543,-1108020290,-1122402466,-1105082025)+W(7,-1110169699,-1115522389,1046973419,-1115640050);sum2=W(0,-1115664423,1041813775,-1142717933,-1120925434)+W(1,-1122287706,1041645390,-1094011677,-1119842210)+W(2,1044568139,-1087138046,-1124627987,-1120985148)+W(3,-1099350461,1067461852,1027339570,-1113918825)+W(4,-1102715015,-1116572542,1045144111,-1100833175)+W(5,1042022920,-1109622665,1054026149,-1101147879)+W(6,1031291077,-1113357449,-1122353792,-1112018489)+W(7,1032474264,-1110133469,1047364150,-1109170005);WS(1049043868,1050086952); +sum1=W(0,-1127858130,-1091279607,1054362490,1028884238)+W(1,1025810768,-1101354119,1044465651,1022883995)+W(2,1034666762,-1089232423,1050465752,1032068165)+W(3,989092984,-1092016019,1058690160,1005443958)+W(4,-1115481017,-1089729669,1053482909,1007092039)+W(5,-1119959429,-1104525366,1051092259,-1149438996)+W(6,1012364567,-1121438163,1019953121,-1137072337)+W(7,-1097661520,-1160888088,1051219071,1017307814);sum2=W(0,1030282550,-1099759289,1070065566,-1078832473)+W(1,1012065197,1050936278,1068820850,-1076346523)+W(2,1049708534,1018991152,1068572253,-1075628240)+W(3,-1101566471,1050588571,1075164582,-1072955990)+W(4,1043525707,-1112383125,1046261639,-1093459475)+W(5,1038111746,-1121285468,1053555382,-1088795804)+W(6,1040589253,1039884984,1040055978,-1099780818)+W(7,-1106531005,-1113841779,1058828770,-1090423367);WS(-1083655502,1074535575); +sum1=W(0,973651072,-1100106921,1049212555,-1122472503)+W(1,1028862937,-1096173461,1052529147,996549482)+W(2,1029517469,-1088250868,1057957824,-1111380529)+W(3,-1111330742,-1101351113,1060855844,-1125410415)+W(4,1043404639,-1092528244,1050267538,-1109626381)+W(5,-1105397947,1034877328,-1104065896,-1122247818)+W(6,-1129726574,-1113904430,1041335934,-1108333759)+W(7,-1099887737,-1118418050,1047916353,1037233742);sum2=W(0,1037582341,-1116649305,-1107051108,1040538112)+W(1,1032149251,-1112916551,1041643977,-1112067691)+W(2,-1135487115,1044443302,1030763641,1036263743)+W(3,-1107247151,-1117703407,1053360182,-1115814520)+W(4,1053968825,1049963138,-1087331905,1035849297)+W(5,-1096732175,1042101117,-1089009482,-1104153316)+W(6,1034930229,1046616621,-1110671517,-1104877620)+W(7,-1094249638,-1127010106,1059951262,-1116847106);WS(-1132786560,1056578758); +sum1=W(0,1031072232,1043718831,-1098888378,-1123786893)+W(1,1019453021,1050053971,-1104586611,1030360908)+W(2,-1112153353,1057505465,-1090760605,-1123598824)+W(3,-1127115205,1049535379,-1081773448,1035671447)+W(4,-1153314582,1052394474,-1106021324,1044649456)+W(5,-1105591705,1045418390,-1120283669,-1105554848)+W(6,986346381,1044283028,1036365944,1033186457)+W(7,1024604121,1048806335,-1103287167,-1108912601);sum2=W(0,1040658557,1011638864,1041865287,-1109113498)+W(1,-1106354313,1020064744,-1103147627,1033931950)+W(2,1027144364,1049840877,1026998340,-1120927100)+W(3,-1103628435,1050147177,1053587315,-1102211113)+W(4,-1123462592,-1117174472,-1118058864,1033328738)+W(5,-1130705048,-1105120318,1036775410,-1101351534)+W(6,-1126068784,-1113970774,-1104140895,1028877580)+W(7,1016031184,-1135769248,1030416564,-1112076066);WS(1062711758,-1109562142); +sum1=W(0,-1107075140,-1100622401,1053288051,1017596397)+W(1,-1125545776,-1104747337,1049612355,1007433175)+W(2,-1121788380,-1103229831,1059638178,-1120034657)+W(3,-1112684886,-1083301774,1048337697,-1098025711)+W(4,-1128625782,1050510715,1052952654,-1112854653)+W(5,-1102890883,-1097610180,1051307580,-1108240645)+W(6,-1129119788,-1109077454,1041285742,1022176121)+W(7,-1102110160,1030737729,1049115768,1020667959);sum2=W(0,1022257834,977550902,-1113927342,1036504102)+W(1,1033804876,-1105772859,1042844173,-1107093105)+W(2,1033963400,-1098748483,-1096777339,1028160469)+W(3,-1113268759,1063293804,1059312088,-1089861840)+W(4,-1123922685,-1090033704,-1134320563,-1101525036)+W(5,1029999681,1051039483,1037687330,1017532722)+W(6,1015463858,-1104977553,1024487701,-1122996995)+W(7,-1125618402,1022914778,1004875175,-1116068477);WS(1046002488,-1083997249); +sum1=W(0,-1116203964,-1099156844,1050076828,1025075217)+W(1,1044431961,1028498222,1049400252,1035032656)+W(2,1041235242,-1096363997,1050263757,1032516798)+W(3,1046371486,-1079124621,1020370202,1050189128)+W(4,-1106267745,-1088685662,1048790666,1042510329)+W(5,-1117705943,-1103556299,1053355933,1039724554)+W(6,-1122870401,999993136,1034829570,1027729159)+W(7,-1109240562,-1106798659,1037276039,1037249299);sum2=W(0,-1094982381,1041875660,1017839086,1045890174)+W(1,1024745423,-1091311273,1044409386,-1107764806)+W(2,-1097113645,1042706326,974632891,1048260200)+W(3,1017043870,-1148119319,1061393923,-1118443235)+W(4,1052555320,-1098101314,1043955676,-1097368628)+W(5,-1107563793,1010824956,-1098402228,1041238578)+W(6,1049262968,-1094774489,1042935118,-1116185663)+W(7,-1118735987,1030619863,-1094515595,1042214090);WS(-1083255246,-1075588436); +sum1=W(0,-1154522904,1026375684,-1099839750,1037990411)+W(1,-1106371438,1036249778,-1113752075,-1119606102)+W(2,-1105464695,1056687627,-1092436626,1043935324)+W(3,1036086422,-1097055709,1050924256,1036476796)+W(4,1023783355,-1088556578,1056650964,-1111337285)+W(5,-1127243930,-1108055408,1045926824,-1110940389)+W(6,1030176790,-1105944807,1039385437,-1124332025)+W(7,1031412139,-1123388097,1041066449,1021333175);sum2=W(0,-1117330831,1032531181,1043756688,1060766869)+W(1,1023708058,-1114369361,1031926890,1067300065)+W(2,-1133288218,1017487862,-1104593512,-1105945514)+W(3,-1122435213,1047518334,1043258354,-1075696003)+W(4,-1139180683,-1122916014,-1096895795,-1102393264)+W(5,1020252429,1027012545,1049767697,-1106946489)+W(6,1025188082,-1103557501,1019544307,1020047431)+W(7,-1109968059,1046855474,-1112657711,-1113285900);WS(1056055196,1023945849); +sum1=W(0,-1104545849,1036175954,1032040419,-1111539988)+W(1,-1139517988,-1138851412,1009002268,1026875367)+W(2,-1101013315,1048468083,1040659763,-1104005681)+W(3,-1136100212,-1097789539,1059870683,-1112873620)+W(4,-1148373856,-1096999890,1039368714,-1135793772)+W(5,1013350648,-1097071058,1053644410,-1132670698)+W(6,-1120654743,995622088,-1122818538,1028030253)+W(7,-1108930702,-1128233700,1033002810,-1133516850);sum2=W(0,1033182461,-1110992702,1011638125,-1116812221)+W(1,-1135790885,1041801313,976542168,-1135785781)+W(2,1036058972,-1115959119,-1106760241,1013579453)+W(3,-1145806187,-1083556559,-1068720208,1034110873)+W(4,1026470367,1047402951,1080067579,1048786168)+W(5,-1125994579,1026458945,1043021822,-1124564059)+W(6,-1123856921,1021989349,-1118809257,-1115658442)+W(7,-1152817846,1029289545,1027196491,-1110636256);WS(1047050040,1036867972); +sum1=W(0,1031952202,1041031945,-1098508279,-1117663192)+W(1,1040033213,1050476745,-1097704487,1033331580)+W(2,1049413776,1016870010,-1091275871,1012948685)+W(3,1052329098,1054273441,-1087382286,1043041286)+W(4,-1134253939,1041748879,-1095309386,-1131302504)+W(5,1023712847,1035493153,-1117526273,-1125396951)+W(6,-1129317744,1041656495,-1112254893,-1153578470)+W(7,1023414180,1041394937,-1108492595,-1112644847);sum2=W(0,-1120609508,-1138324119,-1110367912,1021280635)+W(1,-1098653081,1042859622,1038385587,1026624912)+W(2,-1074671298,1072071026,1026263792,1026288466)+W(3,-1081276780,1068070176,-1107049493,-1122098825)+W(4,-1097107702,1044485226,1024907208,1040255596)+W(5,-1110118090,1040658983,-1122488627,-1152233050)+W(6,-1137118351,-1118978815,1038809437,-1126727249)+W(7,-1119823807,1035453187,-1111098449,1006813455);WS(1047287096,1059538103); +sum1=W(0,1030804480,1034749929,-1102474905,1013951379)+W(1,-1111595219,1051408038,-1094490621,1039425378)+W(2,-1123153834,1049213285,-1099609086,-1112788128)+W(3,-1098057279,1057344539,1048597242,-1098419769)+W(4,1007980582,1048793645,-1094890059,-1118093753)+W(5,1018775223,-1106759404,1046324795,-1108341356)+W(6,1036089754,-1115115061,1003815995,-1120388747)+W(7,1030691489,1033654600,-1126686757,-1135294247);sum2=W(0,-1112864979,1024004698,1034996841,1004307827)+W(1,1034721747,-1109416755,1041661735,-1116757818)+W(2,-1108077379,988806988,1041642045,1037366938)+W(3,1023366533,1058238498,1008174217,-1107547239)+W(4,1021246669,-1115279539,-1122858630,-1108868659)+W(5,1032508120,1041332549,-1089151778,-1128614293)+W(6,-1113986367,1033457886,-1130797677,-1130732717)+W(7,-1153257254,1018109285,-1111548255,-1122125438);WS(1066216871,-1084582294); +sum1=W(0,1009745022,-1095963722,1050775177,1027534757)+W(1,1023325836,-1096473834,1046303345,-1126933960)+W(2,1034246149,-1087129751,1057767679,-1118146623)+W(3,-1103455511,-1142570129,1064400323,-1103828265)+W(4,1025953385,-1094684497,1038452388,1018950609)+W(5,-1105242559,-1107829831,992534739,1030437560)+W(6,988118663,-1107520037,1025316967,1020674901)+W(7,-1107601837,-1117719279,1044853309,1033139589);sum2=W(0,-1127013105,1031626404,1029958550,1017794797)+W(1,1018526115,-1117975133,-1113082476,1023300847)+W(2,-1123587641,1062148372,1035325186,-1145491637)+W(3,1052346460,1074624908,-1130733653,1041942663)+W(4,-1098654594,-1090512380,1046581721,-1113152926)+W(5,1029804743,-1070854231,-1113725416,-1139181075)+W(6,-1118240305,-1095518794,1031776819,-1120299385)+W(7,1030491706,1041467716,-1115594754,-1142763637);WS(1033725552,-1082653885); +sum1=W(0,1027658456,-1091894661,1054730080,1024810077)+W(1,1033791775,-1094613753,1052727904,1020875129)+W(2,1038169633,-1085886368,1060322284,-1114253244)+W(3,-1130834725,-1094605577,1054915405,1021660859)+W(4,-1105755912,1049096200,-1115316932,1010914050)+W(5,-1107114253,1038006563,-1113871235,1032412472)+W(6,-1106878767,1040399888,-1114082704,1016596422)+W(7,-1102176852,1038046228,-1098681477,1044096992);sum2=W(0,-1126607908,-1109006144,-1093467963,1059727060)+W(1,-1111819446,1050929158,1063076656,1073053378)+W(2,1032709615,1025316173,1048889614,1073749745)+W(3,-1119610542,-1107176811,-1090320472,1058093447)+W(4,1027594385,-1123863107,1046933317,-1079533534)+W(5,1029384695,-1122531221,1051206364,-1073154062)+W(6,-1115269200,1026796828,997945380,-1075936158)+W(7,1032209203,-1115616555,-1109796884,-1088004581);WS(-1087442510,1045166814); +sum1=W(0,-1106921670,1032009478,1041337656,-1110338367)+W(1,1032907600,-1127325529,-1100890040,1042108264)+W(2,-1111070674,-1106321881,1060092296,-1105899594)+W(3,1047421629,-1085655355,1044767811,1027442111)+W(4,-1094092352,1057239638,1040377247,-1105935775)+W(5,1031075349,-1098381173,1037296628,1037469097)+W(6,-1136240762,-1128650952,-1131454723,1027139781)+W(7,-1129052086,-1107389381,1037463686,991481919);sum2=W(0,-1119426781,1040351141,-1104019881,1015410156)+W(1,-1109786529,1043540747,-1106797782,1043466418)+W(2,1041819143,-1105926532,-1098594115,1048709183)+W(3,1018220925,-1133247980,1066013053,-1092013542)+W(4,-1103055916,-1096724541,-1136157126,-1109288787)+W(5,-1124599508,1038612076,-1097021086,1027934232)+W(6,986571056,1019567362,1025702119,-1140871148)+W(7,1024618671,-1143357456,1008181894,1027080058);WS(1059279054,1041683061); +sum1=W(0,1028823114,-1096417644,1041071884,1040139175)+W(1,1033060856,-1095251776,1051348966,-1133443258)+W(2,-1136683218,-1096755466,-1106154521,1027763154)+W(3,1041097809,-1095420880,1062896338,1037083176)+W(4,-1108712682,-1087904547,1057053635,-1109247178)+W(5,-1099515041,-1117180600,1050313119,-1169250436)+W(6,-1114499693,-1113115866,1041134484,1007514196)+W(7,-1105525449,-1121084634,1043053335,1031868218);sum2=W(0,-1104031080,1039900182,1028023758,-1125301559)+W(1,-1113246189,1044206765,-1122555834,1027754708)+W(2,-1124792744,1043086617,1041018096,-1129842792)+W(3,-1107688308,1057123143,-1100462314,1022410763)+W(4,-1084040655,1066602722,-1123151815,1034604384)+W(5,-1089958554,1037219700,1032289221,1029558442)+W(6,-1098618924,-1111210157,1028867168,-1139711519)+W(7,-1098033920,1036938090,-1143651414,-1122704124);WS(-1093886876,-1092780259); +sum1=W(0,1031521076,1034696971,-1098366291,991412379)+W(1,1040859655,1027092583,-1107551117,1023411481)+W(2,-1123954783,1057011018,-1084481759,1037665034)+W(3,-1115369432,1055452141,-1086775792,1037775165)+W(4,1027325374,1055461116,1050583573,-1102735091)+W(5,-1130075936,1043845385,-1098824964,-1106471523)+W(6,1017430099,1041326696,1032795870,-1113156096)+W(7,1005655277,1045628689,-1110858724,-1108701199);sum2=W(0,-1099549152,-1115620025,1042476476,-1128057356)+W(1,-1101982776,-1110046443,-1138118945,-1104607948)+W(2,1039636960,1067650764,1056117723,-1129519972)+W(3,1065032135,-1096892917,-1084935200,1039009532)+W(4,1046191187,-1084058149,1043334912,1042222420)+W(5,-1112740199,-1089814493,-1116550886,-1114781123)+W(6,-1120755726,1022618460,1030169574,1023299940)+W(7,-1138571865,-1106519005,-1123579094,1029490149);WS(-1103384376,1050555318); +sum1=W(0,990997212,1056616014,-1113359817,-1104278389)+W(1,-1104723373,1049493908,-1101985253,-1112669305)+W(2,-1102560870,1060440249,-1095607555,-1117918862)+W(3,-1110645588,1063537686,-1091747296,-1124628967)+W(4,-1114771100,1049398171,-1098384586,-1120789735)+W(5,1006886950,-1123261404,-1094355067,1020875660)+W(6,1011892746,1042753094,-1098733239,1029891897)+W(7,1041403778,1041297647,-1099641616,-1143354303);sum2=W(0,-1097904627,1056762738,1033294591,-1113205081)+W(1,-1102268820,998260703,-1102966386,-1105114179)+W(2,-1101696600,1049156882,1040206209,1028552759)+W(3,-1102083058,1055125136,1048772561,1023069474)+W(4,-1100977750,1040009482,1004029807,-1108173489)+W(5,1022682138,-1099421122,1040485303,1040370279)+W(6,-1105396681,-1114104451,-1118051402,-1109779069)+W(7,1035758392,-1112582051,1040482786,-1135668672);WS(1042369848,-1095650924); +sum1=W(0,1032801852,1060985291,-1088222536,-1154392525)+W(1,-1124780413,1056066249,-1093287088,1017158008)+W(2,-1142443027,1059062488,-1089766974,1041310978)+W(3,1031124370,1046815795,-1084610255,-1111535759)+W(4,1024489633,1051554984,-1096293908,-1118760812)+W(5,1037041722,1026983110,1035048291,-1118618480)+W(6,-1157391942,1037131073,-1113190096,1032589425)+W(7,1048283534,1028118439,-1107690581,-1101944856);sum2=W(0,1056251107,-1084477192,-1077785336,1053829707)+W(1,-1118435725,1041984407,-1086371528,-1113013425)+W(2,-1111043713,-1093515412,-1093010832,1046411943)+W(3,-1090037466,1073185178,1074151927,-1090694669)+W(4,-1129656805,1051712939,1054463958,-1095714333)+W(5,-1093926860,1053076395,-1094829660,-1103046632)+W(6,1052716525,-1096065312,-1090812268,1035367276)+W(7,-1083761792,1066458198,1063500158,-1087950464);WS(-1081634407,-1072784825); +sum1=W(0,-1102740818,1024862651,1056867014,1016622683)+W(1,-1115394775,1046040367,1027952685,-1112643478)+W(2,-1101924733,-1109613465,1058509811,-1096240139)+W(3,-1100839185,-1115978107,1050187219,-1101581667)+W(4,-1123768914,1049722038,-1098437541,1008822020)+W(5,-1140848016,-1098661743,1033615035,1023463264)+W(6,-1118249725,-1138059466,-1143195264,-1116668435)+W(7,-1116477425,1025943000,-1132571500,1036595961);sum2=W(0,-1139809909,1046126277,-1119940899,1040903120)+W(1,-1126178115,-1111752353,1055245806,-1104413152)+W(2,1032546581,1034216546,-1088954301,1019748625)+W(3,-1097752958,1042101074,1058677046,-1089277711)+W(4,1042272246,1043290796,-1087007443,1028591970)+W(5,-1118367610,-1112722386,1048637958,-1139620757)+W(6,-1138081685,1034532478,-1140548675,1017306737)+W(7,1017774855,1030093406,1029648824,1033828758);WS(1050645916,1033550915); +sum1=W(0,-1118556120,-1107219907,1039060494,1030703933)+W(1,-1108262319,1043545243,-1145250020,-1110184190)+W(2,1043230361,-1086762442,1059123936,-1110311564)+W(3,-1094947334,-1104041435,1057758321,-1100512367)+W(4,-1103841584,1058293794,-1096913490,1044416908)+W(5,1018079143,-1097977901,1039599795,-1132472896)+W(6,1032598742,1041130248,-1151122424,-1147952664)+W(7,1008731683,-1123331655,-1123961290,1022228292);sum2=W(0,1040267615,-1112791644,1010515766,1024308395)+W(1,1048409433,-1110540665,1032365064,1041630361)+W(2,-1107165984,-1088877638,-1090038325,1040244783)+W(3,-1086251247,1053330884,1049266570,1037513285)+W(4,-1113957324,1057377190,1028890653,-1098504745)+W(5,-1107976602,1057673067,-1103454662,1039941233)+W(6,-1122078587,1024512949,1041725883,-1103661415)+W(7,-1111525785,1042772014,-1143554104,1024552651);WS(1051978908,-1102077462); +sum1=W(0,-1132165009,1045761591,1013540534,-1106078467)+W(1,-1117187439,1051430047,-1096198150,1014010165)+W(2,-1108837850,1060286099,-1130717861,-1121999817)+W(3,1037183202,1046972447,-1085387922,1030141582)+W(4,1028473682,-1128782822,-1105434962,1008925446)+W(5,1045655273,1028047735,-1101497054,1018887490)+W(6,1025240990,-1178179968,-1110960744,-1122721428)+W(7,1033734537,1035331372,-1102517015,1026996307);sum2=W(0,1023072493,974611657,-1101792417,-1112121991)+W(1,-1125531833,1047662948,1051899312,1037288067)+W(2,1030396885,1035351326,1080526024,1042102238)+W(3,-1118880502,-1090109833,-1069022098,-1113214479)+W(4,1027419877,-1110942359,-1087739606,1032127295)+W(5,-1161271853,1033315833,1036440530,-1143368203)+W(6,1019485964,1010290822,-1124554651,-1132377096)+W(7,1028708277,-1156901930,-1114394737,-1141169667);WS(1058455886,-1096183470); +sum1=W(0,-1105360672,-1112611850,1060616064,-1104075433)+W(1,-1112035684,1032735242,1033545283,-1111940643)+W(2,-1105059667,1048808633,1051085625,-1115570744)+W(3,-1103063975,1042817013,-1097442806,-1097216429)+W(4,-1112638549,1058906409,-1102188695,-1107200030)+W(5,-1104182327,1047248804,-1103229812,-1108265532)+W(6,-1106250503,1047193699,-1106970890,-1119499692)+W(7,-1103319623,1057710235,-1109193562,-1106901731);sum2=W(0,-1135393651,-1114274101,-1117767149,-1110403581)+W(1,-1131009665,1016197705,-1130986601,-1136444051)+W(2,1004138181,-1143366053,1026922589,-1112183743)+W(3,-1111055824,1051632163,1048764370,-1121253595)+W(4,-1134829555,-1111579981,1036257166,1009689523)+W(5,-1127256265,1038147066,-1112945554,989872074)+W(6,-1113946573,1025185617,-1143942149,-1123668797)+W(7,1010148467,-1137859715,-1123068365,-1123716033);WS(-1103618872,1023577831); +sum1=W(0,1041702149,1057806109,-1091063799,1022049043)+W(1,1032268701,997904496,-1106010126,-1102660926)+W(2,1021026046,1057675340,-1090884608,1046995709)+W(3,1032012647,-1129702414,-1094077941,-1100395542)+W(4,1023662430,1056283152,-1094732237,1050214494)+W(5,-1111766616,1039716321,-1100869456,-1096243374)+W(6,-1112590149,1049875952,-1105996279,1047647816)+W(7,1042231991,1054291708,-1098425069,-1100607928);sum2=W(0,1073849383,-1072987051,1040644897,1022236877)+W(1,1069429154,-1080077361,-1098556311,-1128073567)+W(2,1070121938,-1076996297,-1124122091,-1118780260)+W(3,1066905653,-1086754234,-1095882058,1027638421)+W(4,-1087755842,1060194671,-1096747545,1012182550)+W(5,-1080359597,1067521081,1048551041,-1129108935)+W(6,-1073496568,1074652354,-1092793409,-1130588931)+W(7,-1070245916,1075883836,1058695504,1001812541);WS(1010873216,-1100304815); +sum1=W(0,-1154187044,1045945805,-1102222630,-1113759340)+W(1,1028741017,1051026373,-1103217414,1022415534)+W(2,-1114247598,1058185854,-1097780567,-1105383733)+W(3,-1099084427,1059904750,-1091550752,-1111624796)+W(4,-1104966895,1052860588,-1108718914,-1114326870)+W(5,994968800,1038231664,-1110664976,-1110217221)+W(6,-1113228468,1040557287,1017403508,-1108875519)+W(7,1028263947,1032103905,1017865354,-1109350878);sum2=W(0,-1114639192,-1100331344,1035901690,1012858414)+W(1,1039210963,1069298433,1043940791,-1126620651)+W(2,1047528380,1080352854,1030733380,1036529177)+W(3,-1099502544,-1067747068,-1084572959,-1099630936)+W(4,1041344628,-1080996124,1003800555,1043527822)+W(5,-1108972702,1032407437,1045939813,-1119860547)+W(6,1021595805,-1121090437,-1121287047,-1145664907)+W(7,-1116883371,1016604711,-1122259179,1034105585);WS(1044302648,-1104457270); +sum1=W(0,-1115179413,1029190781,-1108944696,-1115207128)+W(1,-1101763748,1045938783,-1102720380,1013266237)+W(2,999269803,1034810490,1038235218,1025157307)+W(3,-1106420033,1055724168,-1101615303,-1105407492)+W(4,1041707045,1053359959,-1094303566,1045691477)+W(5,-1128885581,-1100033022,1043259278,-1113033137)+W(6,-1110751840,1037908026,1011056201,-1114066571)+W(7,1029110244,1035419021,-1123807773,-1113282394);sum2=W(0,-1117238549,-1109414288,-1115125848,1023475415)+W(1,-1115295266,-1128441429,-1121954754,1024122972)+W(2,1033754662,-1104877135,1018153798,1002646200)+W(3,-1095438097,1053172955,1038786210,-1106263750)+W(4,-1106855439,1056926069,-1104082080,1034246226)+W(5,1011060498,-1108715476,1043675119,1025499367)+W(6,-1117460606,1036225840,1008366234,-1107090094)+W(7,1032653312,-1114450934,1018894269,1013321052);WS(1068015911,1043072951); +sum1=W(0,-1127841379,-1101991257,1041159238,1035382295)+W(1,1035792844,-1091973141,1040826438,-1098419575)+W(2,-1155603908,-1110119406,1052691071,1043898844)+W(3,1018341976,-1095315357,1053842800,1030324599)+W(4,-1111053022,-1107228151,1042506601,-1108241413)+W(5,1044403491,-1111437840,1050221764,1043481954)+W(6,-1112313859,-1097295811,1030249017,-1098652336)+W(7,1005208661,-1103670736,1046985745,1032196534);sum2=W(0,-1134315530,-1125722365,-1135384490,-1118933131)+W(1,1033824390,1019923991,998580556,1027495017)+W(2,-1112867968,1039464885,-1093291922,1045077367)+W(3,1039862799,-1087456726,-1061395777,1087627027)+W(4,1005143468,-1119378177,-1106942114,1034637079)+W(5,-1114969920,1042059959,-1121281813,-1148550692)+W(6,1030354102,-1113780490,1034179020,-1118611519)+W(7,-1131720457,1009971850,1032010553,-1117397469);WS(1060186318,-1131602669); +sum1=W(0,1022422466,1050205114,-1099402401,-1112848707)+W(1,-1102049002,1052887138,-1102238785,-1106285089)+W(2,1050775273,1052456073,-1100510367,1039607513)+W(3,-1097141731,1049038746,-1088759247,-1098786589)+W(4,1056872997,1040490435,-1122526498,1048305743)+W(5,-1099566807,1039690728,-1099089908,-1104192622)+W(6,1025667942,1043457059,-1102859210,1032266998)+W(7,1032894309,1045856748,-1106963501,-1118572779);sum2=W(0,989650422,-1120410947,1047633630,-1081060940)+W(1,-1108234271,1050158699,1066272871,-1074101109)+W(2,-1120122674,-1092804082,1075424781,-1079387458)+W(3,1045260201,1024838498,1061734347,1050344942)+W(4,-1114112879,-1125280065,-1091697647,1043540897)+W(5,1037831837,-1119936776,1003481288,1039609275)+W(6,-1117501250,-1114421818,1011848513,-1131708367)+W(7,1024132690,1035095434,-1106020023,1026462111);WS(1057810382,986287880); +sum1=W(0,-1105255365,-1110142276,1041191503,1050176972)+W(1,1027767677,-1106138450,1031406779,-1130243957)+W(2,1037147968,-1092238936,1027980992,1041310918)+W(3,1038550632,-1090210593,1049547413,1041377527)+W(4,-1136315263,-1089134184,1052451129,-1115128119)+W(5,1035749561,-1093055129,1057536820,1033537239)+W(6,-1115075413,-1097497096,1050343212,-1127231554)+W(7,1028257967,-1089420006,1058108487,1031965752);sum2=W(0,-1099824579,1070708271,1075074245,-1097074436)+W(1,-1113793286,-1104040400,-1084124078,1023561426)+W(2,1053512844,-1091831853,-1082668198,1039380165)+W(3,-1112943238,-1072548459,-1072503695,1009216489)+W(4,1041834894,-1093778092,1056090411,1043969626)+W(5,-1099992002,1057576575,1053907302,-1107563771)+W(6,-1120789532,1064181862,1058602971,1034348623)+W(7,1024916046,1051972140,1054786345,-1106961801);WS(-1075707047,1038147646); +sum1=W(0,1038492938,1050722763,-1095596015,1040870942)+W(1,-1115961531,1026800423,-1103730686,-1122935577)+W(2,1036899040,1055626176,-1091210886,1047700685)+W(3,1041066756,1052178217,-1090286882,1036539085)+W(4,1038870159,1027667391,-1094135001,-1102625947)+W(5,1045702796,1053246416,-1095582752,1048523811)+W(6,1022987667,-1100305296,-1109653838,-1105859960)+W(7,1044017707,1049962981,-1093296229,-1117734303);sum2=W(0,-1145353723,1027969677,-1115030411,1052090154)+W(1,-1113260796,-1095928859,1031463199,-1110261785)+W(2,-1112198364,1052169305,-1108227013,1041877601)+W(3,-1113367096,1052353113,1051016428,-1099630700)+W(4,1007958125,-1129450520,1041462653,-1087173862)+W(5,1047146251,1051473061,1045242344,-1102681887)+W(6,-1122974002,-1091037095,1032341221,-1095485390)+W(7,1021064313,1050393555,1020102815,-1111896409);WS(-1102302520,1068562064); +sum1=W(0,-1130894152,-1101486038,1044130034,1031789673)+W(1,1029216267,-1094978851,1029251017,-1102217970)+W(2,1029150351,-1104755260,1053252560,1042516209)+W(3,1029804895,-1093484995,1050941559,1040658618)+W(4,-1108054071,-1110271975,1036880709,-1113036417)+W(5,1046304488,-1106599349,1050863202,1041743615)+W(6,-1107326720,-1102131284,-1128083416,-1102226940)+W(7,1018120580,-1102274525,1047248574,1032422999);sum2=W(0,1019111797,1022527979,-1131519898,1029130971)+W(1,-1123809812,-1111065998,1023737355,-1117143513)+W(2,1006739898,1031759809,1045357020,-1106220344)+W(3,1041109085,-1095097056,1082939698,-1064938697)+W(4,-1126211453,1034613952,1027342607,-1122955245)+W(5,1028972357,-1107360163,1033832936,-1112280546)+W(6,-1118372569,1033659253,-1112248823,1032152906)+W(7,1025713585,-1118642675,-1118824157,1028082979);WS(1066566439,-1125753148); +sum1=W(0,1020091828,-1096367972,1038767583,1030663671)+W(1,1041951168,-1098758994,1048997640,1025331919)+W(2,-1130301450,-1093467737,-1130818632,-1108818909)+W(3,1052053147,-1089881409,1064063659,1044746920)+W(4,-1131231944,-1092544881,-1116991019,1022962726)+W(5,1033588155,-1098181717,1042770882,1041997189)+W(6,1009411772,-1110070786,1046860728,1018371147)+W(7,-1116682291,-1096392077,1027361773,1038578846);sum2=W(0,-1105507764,1019815533,-1136431769,1024962860)+W(1,-1149004498,1047279899,-1121679526,1041000955)+W(2,-1098298748,-1106660204,-1096656341,-1107413740)+W(3,-1115729482,1058550934,1058580319,1027135608)+W(4,-1094576030,1031191852,-1098228632,-1101441076)+W(5,-1111478010,1032716298,1041490224,1035067556)+W(6,-1129010369,-1117054989,1047791827,-1123460834)+W(7,1018600957,1019851909,-1106522387,1005788722);WS(1050996380,1066787661); +sum1=W(0,1042843177,-1109518091,-1098674409,-1112832565)+W(1,-1120310187,1043911830,-1097687209,-1133582755)+W(2,1033453959,1059519229,-1096304487,-1116528532)+W(3,-1107450543,1061971625,-1098011863,-1105396874)+W(4,1017862620,1051823058,-1095767039,1033796902)+W(5,-1134072575,1046601317,-1095249970,999923683)+W(6,1025308393,1042112788,-1098354285,1030029487)+W(7,1033769739,1046863997,-1098417599,-1109771063);sum2=W(0,-1103321099,-1087654445,-1098379129,1013739975)+W(1,1033376724,-1114493691,-1096458683,1015354012)+W(2,-1108916223,1049058628,1036368268,-1121134774)+W(3,1033194077,1065240604,1054396447,-1115257551)+W(4,1038197771,-1128335788,1049730119,-1129699908)+W(5,1032881798,-1094150295,-1108472207,1021079748)+W(6,1017830932,1006224046,1031462702,-1117224382)+W(7,-1138730935,-1112103411,-1102017203,1038189385);WS(1027314912,-1081149641); +sum1=W(0,-1109480125,1051429188,-1118844062,-1097611416)+W(1,-1114947760,1053252314,-1094077252,1034118735)+W(2,-1101195017,1058130398,-1113091794,-1104617542)+W(3,-1132100201,1061393767,-1085308129,1035982720)+W(4,-1103759537,1057940398,-1102037735,-1114189097)+W(5,1044342469,-1104522586,-1094497965,1036294793)+W(6,-1111893319,1055491172,-1103334896,-1128796810)+W(7,1051194426,-1120202825,-1094870250,1030785028);sum2=W(0,-1131039707,-1098833779,-1147567565,1035790053)+W(1,1024995350,-1124760267,1057070390,995065627)+W(2,-1104486127,-1078713050,-1091843304,1037354874)+W(3,1015537291,-1065942779,-1081156610,-1154356731)+W(4,1053996441,1047686732,-1094140189,-1107145709)+W(5,-1103676904,1084085461,1060423478,1026796886)+W(6,1047124046,1064521940,1046849692,-1108476011)+W(7,-1111129691,-1093915430,1018309905,1038591472);WS(-1081542375,1044780323); +sum1=W(0,1026864081,1046719985,-1098857847,-1114219435)+W(1,-1100303790,1054288460,-1108679899,-1104586877)+W(2,1048337215,1054459103,-1098101851,1041408644)+W(3,-1098110473,1048901488,-1093175556,-1098306531)+W(4,1054474587,1041639871,-1104037973,1046672715)+W(5,-1099969099,1034589376,-1107626335,-1104199322)+W(6,1023999910,1043694031,-1101510966,1022681657)+W(7,1028627178,1046235480,-1106600025,-1126646775);sum2=W(0,1017985090,1024212320,-1099849981,1067245211)+W(1,1027847194,-1098721130,-1081468176,1074345814)+W(2,1036519222,1050387030,-1070464929,1070597407)+W(3,-1113167123,-1094712479,-1096550174,-1088417301)+W(4,1037009826,-1100822056,1057690620,-1104880956)+W(5,-1113380621,1028269032,1042714784,-1102737214)+W(6,1031131596,1009055356,-1145638655,1000105719)+W(7,-1115360802,-1113841920,1046010973,-1112342255);WS(1059294542,1020616832); +sum1=W(0,-1157534552,-1096856701,1050532499,-1112831597)+W(1,1039080142,1044861738,1041652423,1046540791)+W(2,-1097783100,-1089052876,1057029426,-1098369827)+W(3,1031217968,-1085780263,1047119538,1040272239)+W(4,-1164216296,1044573672,1039715347,1024931118)+W(5,-1138897989,-1097342660,1043073721,-1103025619)+W(6,1026686634,1041475528,1040308239,1045404192)+W(7,-1105498094,-1105558033,1048391538,-1114523696);sum2=W(0,-1106291706,1040318024,-1114208076,-1142193319)+W(1,1001372950,-1105705183,-1116263519,-1145917455)+W(2,-1099590495,1045484852,-1108179199,1036599633)+W(3,-1093748925,1061316313,1049891427,-1108356360)+W(4,1015225205,-1098311584,1040668388,-1148092276)+W(5,-1105937891,1041085521,-1111581107,1032743264)+W(6,-1112612361,1028378294,-1115787941,1021281994)+W(7,995169980,1035732349,-1113959318,1024794158);WS(1059376718,-1137270291); +sum1=W(0,-1118257199,1043258576,-1114290826,-1112002778)+W(1,1037392427,-1106073464,-1124279079,1022160871)+W(2,-1097794403,1054680411,-1115190716,1045843716)+W(3,1035766677,-1099046488,1052189312,1011458515)+W(4,1026067385,-1088020070,1054691490,-1110958220)+W(5,1032186693,1041392887,-1097245116,1046761570)+W(6,-1108679762,-1113652045,1025610423,-1117145658)+W(7,-1139304576,-1111666975,-1123561026,1032305501);sum2=W(0,1025244035,1033595807,1016573022,1002397687)+W(1,-1122852568,-1087687504,1048825911,-1104089806)+W(2,-1092220395,1066421651,1058107887,-1130145014)+W(3,1038019467,1047700223,-1089540205,-1111655831)+W(4,1048072683,-1084925862,1045215493,1032935415)+W(5,-1113553750,1050883425,-1098430697,1015641098)+W(6,-1119930901,-1105555859,1041208433,1001885951)+W(7,-1139793711,-1146566911,-1124843514,-1131703250);WS(1058596686,1013962118); +sum1=W(0,1000024554,1052551424,-1088298614,1039656505)+W(1,-1127551432,1049056438,-1098656348,1034731345)+W(2,-1100000762,1057499982,-1090756927,1019232187)+W(3,1035333436,1036076760,-1097067922,1033429441)+W(4,-1122612871,-1127972943,1040213184,-1125045580)+W(5,1044766998,-1116046252,1015197910,-1113717771)+W(6,1041477861,-1118015335,-1123679237,1037833508)+W(7,1051562743,-1099275107,-1122278672,-1122272135);sum2=W(0,-1104434141,1048601996,1033271157,1004930429)+W(1,1029025211,-1091369704,-1119340081,1028438774)+W(2,-1078497608,1052827694,1025214064,-1106316897)+W(3,-1079110377,-1106615386,-1109539756,1034989376)+W(4,-1085502108,-1115334546,1050957039,-1108631008)+W(5,1066279808,1037382016,-1106594885,1023198169)+W(6,1062913146,-1122817088,1036274829,-1134348613)+W(7,1068620036,1048688798,-1118139306,-1139733884);WS(1044771128,1023341948); +sum1=W(0,-1156220044,-1092336191,1051560294,1036528391)+W(1,1034545464,-1098819215,1044146859,1029114797)+W(2,1033488922,-1096491302,1051910286,1022761170)+W(3,-1111313058,-1086850728,1045449190,1029767950)+W(4,1038420969,-1102939421,1053458817,1041877300)+W(5,1008511890,-1100928894,1038883707,1034675856)+W(6,1013986230,-1115524377,1012126018,1037411178)+W(7,1011084871,-1089482302,1046748951,1043196317);sum2=W(0,-1071004894,1076503146,1057610169,-1122913984)+W(1,-1080574884,1066884159,-1107351326,-1130255370)+W(2,-1089987082,1058011283,1054000347,1038970611)+W(3,1049506323,-1098882467,-1090234844,1014162118)+W(4,1065282653,-1084978169,1030898490,-1114000490)+W(5,1062249589,-1088626314,-1090230279,1022492087)+W(6,1060165079,-1082249713,1044380003,-1131621088)+W(7,1070844945,-1077734377,-1096516163,1013009282);WS(-1111817840,-1134998409); +sum1=W(0,1022731056,-1102901203,1029699069,1021112442)+W(1,1045262352,-1094315057,1052915216,-1107194439)+W(2,1044888721,-1085070720,1058770140,-1097785743)+W(3,1029818259,-1111793509,1057078063,-1117717150)+W(4,-1105915720,1055206544,-1095183540,1040740592)+W(5,-1114660906,1046806370,-1097451385,1036425016)+W(6,1027479949,-1123039746,-1112670352,1005586201)+W(7,991785104,-1136267423,-1114500629,1016465988);sum2=W(0,-1129690332,-1113356803,997943457,1015499837)+W(1,1030842707,1026318374,-1119512995,-1180561029)+W(2,-1123486113,1041923626,1037525758,-1144014736)+W(3,1054087898,-1089332833,-1088292904,1037328869)+W(4,-1105176966,1068558125,1040210770,-1107365912)+W(5,-1097205966,-1141184456,1050151959,-1114055561)+W(6,-1098021434,-1107728348,1018682892,1009592392)+W(7,-1106929221,-1104288342,1006954668,1013301204);WS(-1100650808,1043653943); +sum1=W(0,1038392637,1044290651,-1095199164,1033771919)+W(1,1032036848,1040683515,-1115398639,1038316223)+W(2,-1120772452,-1106266873,-1094097345,1042896310)+W(3,1043637149,-1090111931,-1097393337,1045751664)+W(4,1040259489,-1133467790,-1104941765,-1159203906)+W(5,1047398869,1044787930,-1101572298,1015063331)+W(6,1038054351,1023591523,1016760834,1030908740)+W(7,1050576478,1037223428,-1102689443,-1125005703);sum2=W(0,1018053796,1046306039,-1101305605,1031448374)+W(1,1000548496,1043541862,1029064982,-1112893849)+W(2,1049079603,1010667960,-1116813778,1021972628)+W(3,1039189619,1064529690,1038487223,-1105518867)+W(4,-1128574308,1047996002,-1100258391,1037842238)+W(5,-1118597354,-1087406141,1048794746,1033382833)+W(6,-1106984497,-1095617964,-1114392997,1021089548)+W(7,-1104543855,-1086946593,1045938007,-1140458600);WS(-1121537248,1047151836); +sum1=W(0,-1096325448,1052654400,1000450324,-1116556387)+W(1,-1113135282,1035132488,-1110395025,1023519458)+W(2,-1098188693,1046868890,-1139200797,-1111260975)+W(3,-1112146268,-1134150082,1049727010,-1110207458)+W(4,-1108791588,-1129891280,1041189572,-1104838938)+W(5,-1117696601,-1098847494,1056884317,-1098805187)+W(6,-1123869651,1032919412,1041128337,-1146298440)+W(7,-1114157115,-1107856679,1058220805,-1103148146);sum2=W(0,-1142864271,1043572739,-1125571574,-1107989855)+W(1,1021304865,1026011378,1028667063,-1140649559)+W(2,1043366966,-1102859954,1022196210,1020722946)+W(3,-1107584343,-1080136051,-1072538638,-1132367054)+W(4,1014758407,-1103597159,-1076945816,1041979768)+W(5,-1130465374,-1115654645,1048815254,-1126224006)+W(6,-1120740451,1046511165,1072551214,1027667511)+W(7,1000478551,1053224660,1074776028,1048839210);WS(-1086568910,969651201); +sum1=W(0,-1128189323,-1096064919,1047521403,1043461231)+W(1,1044154939,-1089612648,1054908701,-1099266659)+W(2,1043534732,-1084798775,1056987371,-1113308531)+W(3,-1114366976,1053159863,1057685165,-1152040120)+W(4,-1098469330,1053431542,-1089249613,1042761408)+W(5,-1101372520,1050787607,-1090701774,1049635020)+W(6,-1123038043,1036747448,-1105030179,1010635844)+W(7,-1132910587,-1116020373,1027268120,1018344000);sum2=W(0,1042932965,-1103892922,-1104364155,-1139842168)+W(1,-1103428495,1060495074,1060109323,-1118896922)+W(2,1039997403,1052448567,1064108701,991756114)+W(3,-1093583228,-1075640666,-1073056297,-1097481656)+W(4,1044856824,1057723154,1055665788,1040659602)+W(5,-1121819542,1057002090,1060503917,-1099984054)+W(6,-1177180368,-1112150955,-1116550688,1034919451)+W(7,1028413178,-1118134166,-1110515035,1041069777);WS(-1084093518,-1116656412); +sum1=W(0,1002008836,1058416208,-1096672513,-1112390467)+W(1,959481663,1026388179,-1109778819,1023428581)+W(2,-1104590931,1059097973,-1088144465,-1112632704)+W(3,1050696243,1042079029,-1096264126,1040470858)+W(4,-1106608235,1041679827,-1101432288,-1102954054)+W(5,1047962207,1049127990,-1100480244,1047012782)+W(6,1030562773,1031439243,-1113594772,-1112144502)+W(7,1015783795,1042535660,-1093923750,-1145396437);sum2=W(0,1007960967,1027407916,-1129957403,-1132155403)+W(1,-1110192070,1010716935,1018303319,-1121935910)+W(2,1049899326,-1097456083,1037417999,-1137993343)+W(3,1056650247,-1070859565,-1094713389,-1142796285)+W(4,1078512141,-1068241064,-1096379657,1039214170)+W(5,1081472440,-1079514242,1043613542,-1111213656)+W(6,1058404171,-1094427160,1025537830,1032528613)+W(7,999915485,1030657127,-1116925932,1024356221);WS(1052225948,1018668194); +sum1=W(0,-1120453498,1051775516,-1117579103,-1107074656)+W(1,-1123160289,1048325451,-1111291056,-1112742544)+W(2,-1108654867,1058214550,-1093397513,-1147977428)+W(3,-1104839613,1064670427,-1091445969,-1119335936)+W(4,1041378113,-1126638409,-1092047898,-1109154218)+W(5,1036965515,1049967085,-1099225050,1034167881)+W(6,1044186084,-1096299613,-1112850625,-1138567959)+W(7,1034438594,-1128237844,-1112057991,1019177609);sum2=W(0,-1121001958,-1117606942,-1103097305,-1130038396)+W(1,-1148685985,-1111847761,1021935234,-1112487949)+W(2,1018483434,-1120566718,1049895592,1038078839)+W(3,1021815720,-1076982600,-1081972918,-1125812992)+W(4,1049361594,1074852012,1051964198,-1152546434)+W(5,-1108634723,1048076514,1040925857,-1104919092)+W(6,-1132118692,-1102180777,1017568960,1026180028)+W(7,-1105580672,-1116866514,1040155911,-1123068468);WS(-1096382876,-1091051652); +sum1=W(0,-1116126267,1057278592,-1096000788,-1116910752)+W(1,-1113197617,1048826126,-1097274020,-1140807037)+W(2,-1112424211,1058810754,-1088739494,1039925053)+W(3,-1124324715,1056304110,-1091311905,-1132679170)+W(4,-1136579346,1041995897,-1114916522,-1107191661)+W(5,1040875430,1016295122,1038826452,-1119450067)+W(6,-1113905512,1024916389,-1128507781,1023437062)+W(7,1017323784,1042534003,1017648027,-1098370349);sum2=W(0,-1120311657,1025682064,1036682152,-1108273289)+W(1,1036113080,-1107470193,-1108061877,1012612647)+W(2,-1109045199,1035621932,1051542033,-1101063214)+W(3,1029662296,-1118009189,-1101792442,-1076098595)+W(4,-1122358251,1045290388,-1093646778,-1080861029)+W(5,-1114085873,1009830751,1056395710,1039398973)+W(6,1016737279,1035169596,-1091719234,1065137390)+W(7,-1115835645,1030264440,1052430993,1072502688);WS(1040082544,-1114755812); +sum1=W(0,1017784372,-1110974758,1040296296,1024480479)+W(1,1037505264,-1108514902,1041424680,-1104471944)+W(2,1045745417,-1095324708,1054913780,-1106439461)+W(3,1019379817,1052579502,-1106396419,-1115066496)+W(4,-1109308706,1058051822,-1087512533,1040857799)+W(5,-1124056118,1046163210,-1093666877,1001482384)+W(6,1025470519,1038459986,-1106674096,995688529)+W(7,1039469090,998280780,-1109356390,-1108404770);sum2=W(0,-1162396366,1045315846,1034748092,1035646876)+W(1,-1117720653,-1118054954,1034773210,-1100298043)+W(2,-1104226850,1057942904,1043388435,-1097646834)+W(3,-1105580348,1059476362,1067689202,-1093789486)+W(4,-1105643813,-1090022037,-1083232471,1040357620)+W(5,1031813906,1045409162,-1101262587,-1113573448)+W(6,1011045214,-1106412098,-1124577575,1012935222)+W(7,1018164327,1023977529,-1102021751,1024454049);WS(1036525168,-1082462584); +sum1=W(0,-1116308971,-1085123800,1057675329,1019612704)+W(1,1037298441,-1087372070,1051660338,1027541711)+W(2,1027885589,-1086414101,1059597873,-1109257541)+W(3,-1122874917,-1096064460,1059581688,1041073820)+W(4,-1154089797,-1099879381,1052784510,1028059367)+W(5,-1108384819,-1104319094,-1117339864,1045372305)+W(6,1028179743,-1127380522,1039251609,1031554934)+W(7,1003463273,-1096394215,-1110971807,1053758651);sum2=W(0,1060691160,-1081285622,-1080809247,1052276353)+W(1,-1103295177,-1090050073,1050684042,-1106187369)+W(2,1035985281,-1102851017,-1087522637,1048638013)+W(3,-1085964582,1072728426,1060852217,-1090587145)+W(4,-1105398566,1060511611,1058511518,1029176048)+W(5,-1107551093,1033954581,1041242888,-1094879840)+W(6,1049030608,-1086630634,1028348456,1046256182)+W(7,-1090293163,1058069039,1062481845,-1087039462);WS(-1074352935,1040600857); +sum1=W(0,1042034194,1057627204,-1090157751,1024364622)+W(1,1028652336,1025049468,-1105875707,-1105990299)+W(2,1024054004,1057567995,-1088931067,1048022018)+W(3,1030695172,1022098295,-1095088235,-1100928004)+W(4,1029627411,1052602222,-1094832321,1049957878)+W(5,-1117605317,1039437212,-1104356174,-1095846092)+W(6,-1114002447,1049556590,-1107260676,1047165477)+W(7,1041624512,1053416947,-1101255271,-1098759166);sum2=W(0,-1075440350,1073165865,-1112383192,-1148975848)+W(1,-1079714919,1065983198,1048707236,-1115591486)+W(2,-1079134350,1068716226,-1135853868,1038054064)+W(3,-1081735031,1066499710,-1098543278,-1125971282)+W(4,1055569671,-1095308006,1021808504,1040311395)+W(5,1066585571,-1080754250,-1108920844,-1110109816)+W(6,1071644179,-1074800849,1050977418,1035370814)+W(7,1075476470,-1073191304,-1090378667,-1120408347);WS(1041022776,1033480094); +sum1=W(0,-1132576057,1026327841,-1110434490,-1119031508)+W(1,-1123321429,1042302896,-1109312954,1021323174)+W(2,1028959481,1052457903,-1089918670,1029242558)+W(3,-1104176578,1063677500,1025377120,-1118638740)+W(4,1046472198,-1097607903,-1090934974,1013298461)+W(5,-1121060138,-1123802109,1046523967,-1106699146)+W(6,1027556403,-1118671609,-1112257611,1030036314)+W(7,-1115611836,1039698959,1000531209,-1116635705);sum2=W(0,-1106027239,1049930690,-1110218398,1034564779)+W(1,-1122286155,-1127267122,-1108798456,1018367610)+W(2,-1102546078,1041115945,1058786995,-1095860458)+W(3,1055155948,-1091935564,1075372513,1043590800)+W(4,-1096754888,1052250618,-1071163371,-1112711414)+W(5,1032068992,-1103388917,-1123143101,-1119323979)+W(6,-1121774513,1038737216,-1121707895,1016553114)+W(7,1036170969,-1108790214,1032355550,1017858173);WS(1055618972,-1117202987); +sum1=W(0,1030962480,1039894129,-1101932469,1031993659)+W(1,-1101414710,1053882576,-1089999221,1048656807)+W(2,-1098100923,1057347458,-1085784352,1043352452)+W(3,-1111740150,1049814740,1051098296,1031031542)+W(4,1036980413,-1090053902,1056052448,-1104607674)+W(5,1041005827,-1088233382,1051763396,-1119077705)+W(6,1021681163,-1105970903,1044301630,1022017143)+W(7,-1112834597,-1117339136,1032801282,1039235901);sum2=W(0,-1114659327,-1101541229,-1107338771,1039378885)+W(1,-1123577690,1043634319,1057974128,-1111523166)+W(2,1042921002,1066882360,1050113378,1040130625)+W(3,-1105097716,-1077668162,-1080704784,-1104122760)+W(4,1042773509,1037629509,1051155360,1012227066)+W(5,-1093975266,1058638399,1052705661,-1110420726)+W(6,1032061179,-1108208741,1008396554,-1125218199)+W(7,1000405669,-1131856909,-1111189711,1025207949);WS(-1091387548,-1116324289); +sum1=W(0,1026642697,-1112220622,1049897926,1027958127)+W(1,1044682252,-1093973688,1047211372,-1098544270)+W(2,1041967213,1046046637,1050365286,-1112662293)+W(3,1032214050,-1086442024,-1112122925,-1106755108)+W(4,-1131062694,-1099996941,1046223135,-1116559746)+W(5,1015214154,1053177927,-1132096750,1034258897)+W(6,-1137069945,-1098783494,1024489425,-1111108842)+W(7,-1110158325,1037567917,1042021623,1031638516);sum2=W(0,-1108095393,1011776651,-1101257730,1019145070)+W(1,1016776222,1024100809,-1105403134,1032882678)+W(2,977935538,-1097248934,-1101986254,-1124027994)+W(3,-1122468710,1057627889,1060632600,-1103033100)+W(4,1019959206,1042194141,-1090719303,1039533068)+W(5,1030099429,-1117226417,1037412790,-1110127978)+W(6,-1104930054,1051928720,-1109292621,-1125661478)+W(7,1002749526,1041814459,-1115385474,-1108291818);WS(1057965518,-1118811194); +sum1=W(0,-1104352985,-1106566686,1052732873,-1107147458)+W(1,1038892389,-1112643723,1003767366,-1114250980)+W(2,-1105058276,1026830542,1060358287,-1096574819)+W(3,1042490232,-1091938531,1019887594,1048844541)+W(4,-1121521774,1058056073,-1118338013,1024329053)+W(5,-1099594944,-1101314965,1042464324,-1107780158)+W(6,1033536020,-1098044778,1024562028,1032778872)+W(7,-1095161930,1039936570,1046000094,-1107207172);sum2=W(0,-1116205334,993944814,1032713731,-1106373772)+W(1,1042905425,-1113078065,-1104977559,1039619019)+W(2,-1109155755,1044406596,1048672381,-1115343154)+W(3,1044205280,1040105843,-1104277422,1048332350)+W(4,1035597621,1043112037,-1103087244,999501191)+W(5,1008636092,-1123380436,-1153474446,-1106439836)+W(6,1036458751,-1105268129,1015784078,1021528398)+W(7,-1092853308,1005260887,1036094123,-1106473413);WS(1053420700,1049909457); +sum1=W(0,-1115258034,-1106165874,1050401361,-1113250117)+W(1,1034071238,-1089903413,1041332866,1023742249)+W(2,1027276239,1036166247,1049384898,-1130552842)+W(3,-1115686559,-1100423414,1037380859,-1120158506)+W(4,1041096236,-1093491554,1052388787,1037333727)+W(5,-1102788144,1049835542,1034784425,-1103514783)+W(6,1034068157,-1095323722,1031952854,1037170040)+W(7,-1107460367,-1110396954,1050882791,-1114330639);sum2=W(0,-1112500393,1024557142,-1136367764,1020782048)+W(1,1028289272,-1165623582,1035333264,-1122738507)+W(2,1049127312,-1095250820,-1114028070,1025362120)+W(3,1086771603,-1062269001,-1087155359,1034731082)+W(4,1048088739,-1095068995,1022077560,-1125007838)+W(5,1020087240,999933935,1034746908,-1120796207)+W(6,1014851096,-1135945992,-1120864651,1026594640)+W(7,-1146529543,1025716258,-1127622484,-1128255426);WS(1063806286,1027083983); +sum1=W(0,-1114823180,1045480194,-1118427516,-1109705966)+W(1,1030313470,1039206373,-1106496703,1020453816)+W(2,-1111791457,1061885616,1010686340,-1103432478)+W(3,-1111977289,1050451993,-1083830979,1039658735)+W(4,-1108043857,1057912708,-1099420545,-1114670584)+W(5,1019729830,1036575619,-1105267089,-1109909656)+W(6,-1114640622,1039765761,-1131920190,-1113587473)+W(7,1033983240,1034424532,-1125840468,-1112770081);sum2=W(0,1033978022,-1122290634,1016780797,-1164938552)+W(1,-1100194899,-1091664523,-1103111994,1002490582)+W(2,1033701105,-1071413373,1047766898,-1105595809)+W(3,1050426550,1075108998,-1096749849,1051489664)+W(4,-1104028404,1062092502,1027350687,-1108336227)+W(5,1034191613,-1103668501,-1131589290,1021076655)+W(6,-1141130302,1034149895,-1131724600,-1149103768)+W(7,1010895851,-1140709165,1027888251,-1131210373);WS(1058288590,1045994186); +sum1=W(0,1018135640,-1093342072,1052167946,1038262801)+W(1,-1123855059,-1096797372,1041780692,1015346466)+W(2,1040223430,-1086390197,1052872019,-1132654257)+W(3,-1112801779,-1105293320,1059840396,-1134794696)+W(4,1036317947,-1091216419,1051866430,-1117665797)+W(5,-1098800665,-1117054299,1050341107,1012611090)+W(6,1034707665,-1096209979,1048652350,-1139713758)+W(7,-1096517871,1023470716,1050625648,1010858330);sum2=W(0,1041114210,-1099008397,-1123917868,-1125418381)+W(1,-1099284356,1047276236,-1111523652,-1120564910)+W(2,1038292116,-1081084758,1037708884,1020505319)+W(3,-1092208278,-1071665325,-1086778305,-1100128811)+W(4,1054381469,1054365119,-1101037019,1024474915)+W(5,-1104534119,1081581342,1026238413,-1125603475)+W(6,1025804573,1062322644,-1134916894,1025011807)+W(7,1033400256,-1093538640,1052085127,-1103707544);WS(-1088887374,1070119449); +sum1=W(0,1040460421,1052058645,-1090595183,-1105506686)+W(1,1041554590,1048371361,-1115426747,1029097335)+W(2,1013850612,1048732808,-1094790815,-1129317061)+W(3,1038262022,1042754705,-1087902678,1001782464)+W(4,1042710919,1047384127,-1106656361,1038072126)+W(5,-1106869091,1054439312,-1090477876,-1131475029)+W(6,1044864290,1032508990,-1122940954,1028935005)+W(7,1046057615,1042772520,-1091795237,-1119515740);sum2=W(0,1024604999,1056461606,1071685965,-1075212110)+W(1,-1112923336,1030035123,1066713447,-1080779344)+W(2,1027433809,1050727550,1068313262,-1078194918)+W(3,1025504127,-1090534096,1028028856,-1153515923)+W(4,1007245204,-1105339223,-1081367671,1068056044)+W(5,-1144581942,-1095507508,-1078816510,1069903211)+W(6,-1129047399,1043793174,-1081156501,1064173276)+W(7,1021294865,-1095638178,-1090770344,1060536751);WS(1040470840,1011790950); +sum1=W(0,1015095158,1043725275,-1105535856,-1108386992)+W(1,-1120734562,1051465082,-1108441440,1030149375)+W(2,-1116691398,1058372660,-1095343471,-1112701741)+W(3,-1118217942,1055309890,-1081260869,1026499745)+W(4,1019898057,1046636817,1047492563,1032201014)+W(5,-1123629847,1044874098,-1093096561,-1115283258)+W(6,1034607368,1043010193,-1105294873,1028457510)+W(7,1041822001,1040878843,-1106259483,-1112399171);sum2=W(0,1022830461,-1117997331,1037270083,1023767946)+W(1,1021246145,-1110014342,-1125616185,-1130403951)+W(2,1015115055,-1111993293,1044158772,1025796328)+W(3,-1114703004,1036613835,1073620398,1050812248)+W(4,-1120910531,1023720090,-1076883688,-1112499600)+W(5,1015720307,-1117604953,-1087890801,1028283916)+W(6,983370825,-1120463052,1025754476,-1104874229)+W(7,-1123770073,1036937497,-1113287589,1033737696);WS(1058309838,-1101980246); +sum1=W(0,-1118965337,-1110907254,1038642111,1028903966)+W(1,-1098779704,1049643561,1038999679,-1108240479)+W(2,1049071256,-1081904943,1054751182,1040887994)+W(3,-1113399754,1042163763,1056093093,-1118832415)+W(4,1026571427,1052138696,-1083956910,1046797612)+W(5,-1110569018,-1106220306,1050507993,-1104697276)+W(6,-1131332475,1025191299,-1146247429,-1123883748)+W(7,-1128371676,-1129449041,1030864044,1017502086);sum2=W(0,-1137655511,-1111106723,1035105104,-1112318930)+W(1,1043191716,1033166752,-1112822728,1027572041)+W(2,-1121349336,1033268708,-1104857525,1035699332)+W(3,-1097517035,1052576386,1055574555,-1097542777)+W(4,1046822141,-1107318253,-1114990789,-1110157019)+W(5,-1129223371,-1102887232,-1121581721,1031007843)+W(6,-1116759551,1040601750,-1152414880,-1157281192)+W(7,-1124684976,993535634,-1107957817,1025775603);WS(1063710542,-1111213649); +sum1=W(0,1039559517,1052251350,-1101160384,-1113889808)+W(1,-1110192145,1049489370,-1097695264,1031901152)+W(2,-1107309859,1058328276,-1093740712,-1104513406)+W(3,-1118762901,1061120005,-1096321197,-1097003636)+W(4,-1108199122,1049656673,-1097289639,-1112381384)+W(5,1037245627,1033876357,-1114972772,-1176476024)+W(6,-1139769966,1041987905,-1102516745,1022802380)+W(7,1035326852,1045428971,-1103522251,-1115185874);sum2=W(0,1026803387,-1115186477,999853755,-1112425236)+W(1,1021750253,1031459540,1031446318,-1106593609)+W(2,1040812059,-1116326399,1058720440,-1086524651)+W(3,-1107480079,1040651083,1071698983,-1075753828)+W(4,1041131835,1020594503,1051128601,-1096266051)+W(5,-1115082464,1033768858,1034660038,-1108942599)+W(6,1006187407,-1132516997,1027131696,-1123360193)+W(7,1001155939,1015478283,1041372466,-1104453127);WS(1039772272,-1082982873); +sum1=W(0,1039127452,1049032497,-1098139952,-1155633625)+W(1,-1106264016,1053169593,-1088020664,1043520647)+W(2,-1104546353,1060522592,-1087153807,1040400554)+W(3,-1145518233,1056693961,1038834197,-1139907193)+W(4,1041713673,-1095982984,1053429837,-1104883452)+W(5,1044410893,-1088607916,1048228018,-1103034636)+W(6,1039725795,-1099512929,1030077856,-1134131855)+W(7,1007790526,-1120546088,-1130616150,1012687882);sum2=W(0,1032987173,-1092902636,1027660911,1032111389)+W(1,-1102803435,1037122437,1039508875,-1101516234)+W(2,-1097110538,-1083842457,-1115097563,1001644292)+W(3,-1101871105,1067610414,1067552095,-1104358647)+W(4,-1101555589,1033006847,-1096151174,-1145661076)+W(5,-1123533577,1041814167,1026567371,-1104681426)+W(6,-1098769512,1045724867,-1107225085,1020958965)+W(7,1048796624,999019252,-1105667947,1028203943);WS(-1101412664,1073047832); +sum1=W(0,-1113880945,1059007377,-1091904865,-1133362719)+W(1,-1123950537,1047579477,-1097814305,-1131741454)+W(2,-1109995975,1060416389,-1087199740,1032803377)+W(3,-1123565085,1056063051,-1092124214,-1113780884)+W(4,-1123728428,1046383171,-1099567891,-1113889390)+W(5,1035385983,1040643140,1038341800,-1126485237)+W(6,-1115318676,1033389702,-1119557930,1012558775)+W(7,1010675502,1041003725,1042882861,-1096461162);sum2=W(0,1013686761,1030949359,-1109223248,-1132915573)+W(1,-1123503757,1039110679,1035635962,996209923)+W(2,1035262859,-1105775253,-1106751414,1029135163)+W(3,-1115490710,1027204409,1057425426,1070858778)+W(4,1025861040,1019519396,1043312829,1067133266)+W(5,980681483,-1111394964,-1098000154,-1098902818)+W(6,-1125276038,1024413043,1051287795,-1083268694)+W(7,-1129892230,-1126757058,-1103421662,-1073095921);WS(-1103532344,-1105840701); +sum1=W(0,-1106756472,-1105825052,1050195304,1044840709)+W(1,-1106322913,1053932942,1007328528,-1104890465)+W(2,1029810954,-1086676361,1057202097,-1144507642)+W(3,-1096389739,-1098358914,1054492326,-1098185309)+W(4,-1116067305,1054020609,-1093369370,1032208700)+W(5,1035916925,-1096691570,1012599092,1048715303)+W(6,-1105566449,1051257001,1027855335,-1100267787)+W(7,1034505108,1026552303,-1101687900,1050640157);sum2=W(0,-1111707317,-1101137684,-1116414033,-1103752872)+W(1,-1119262447,-1109186725,-1107841286,1034593530)+W(2,1037989791,1049211868,1056722210,-1110917586)+W(3,1056036881,-1099242284,-1094543747,1049861706)+W(4,-1105645897,1038198606,1053421235,1030171051)+W(5,1006194414,-1118866635,-1104714858,-1103907620)+W(6,-1146663095,-1109483964,-1120693058,1032413269)+W(7,-1129479912,-1114787638,-1115357885,1029169157);WS(1045178680,-1115117954); +sum1=W(0,-1102680211,1048681528,1019008549,1008490315)+W(1,-1123018420,-1113607536,1040296293,1012835273)+W(2,-1116849368,-1092105355,1035615004,1027033246)+W(3,1024407336,-1093530556,1061339424,-1128145511)+W(4,-1107241006,-1096193779,1057711678,-1103222073)+W(5,1026392201,-1102060551,1055864515,-1110547491)+W(6,-1107918421,-1102337510,1045891981,-1110097884)+W(7,-1123314455,-1095199752,1052562824,1020395952);sum2=W(0,-1108321996,-1096948503,-1112108000,1026091852)+W(1,-1115537892,-1104693583,-1112710060,1022753169)+W(2,-1106228104,1047339287,-1126080161,-1120501740)+W(3,998645667,1055675007,1051246853,-1105262859)+W(4,-1112292909,1049114511,1041989299,-1123292948)+W(5,1035781218,-1100682049,1025978716,-1139782977)+W(6,-1111036660,1032758858,1034053890,-1111667328)+W(7,1018530825,-1113969306,-1113712936,1033000622);WS(1044590904,1058699692); +sum1=W(0,985175380,-1092606720,1051210502,1009220799)+W(1,1034192409,-1090621088,1050384326,-1109361592)+W(2,1020554347,-1093618783,1055009987,-1117059707)+W(3,1024014533,-1113905855,1062574818,-1128567457)+W(4,-1115433194,-1096920415,1054554325,1015981863)+W(5,-1128687821,-1112503613,1031218808,1039114097)+W(6,1008304190,-1100279725,-1105751509,-1127205548)+W(7,-1115445028,-1101027255,-1144235755,1035507338);sum2=W(0,1036009101,-1108619644,1010492213,-1131279719)+W(1,-1117283755,1041337919,-1100684466,1035041542)+W(2,1033667347,1012813669,1015579759,-1124020763)+W(3,-1107239966,1053310286,1056064408,1025470531)+W(4,1034685217,-1103814148,1050883237,1032198922)+W(5,-1128406639,1029066827,-1113069964,-1104788458)+W(6,-1123321687,-1109499964,-1098878001,1024066141)+W(7,-1125402335,-1123197815,-1096911819,-1108347132);WS(1044030776,-1089132931); +sum1=W(0,1034269487,-1093699058,1045160768,1040395197)+W(1,1032883970,-1097458090,1050995424,-1135242887)+W(2,1042439154,-1086092656,1057188990,1040422743)+W(3,1044751430,-1078975458,-1096290982,1048952172)+W(4,1019707982,1035194756,1032938655,1042217766)+W(5,1041434446,1038040390,1043682915,1043586045)+W(6,-1133288904,-1131544335,1022768458,1029073256)+W(7,-1128708109,-1101499019,1043305900,1044718778);sum2=W(0,1043294282,-1107262777,-1132728616,-1112978295)+W(1,-1127265324,-1107127922,-1133435576,-1101649503)+W(2,1035036911,1048700262,-1115280193,-1142433873)+W(3,1051203976,-1114081637,1060204569,-1138065032)+W(4,-1092441683,1027047222,-1096051714,1049542158)+W(5,1037063919,-1087538045,1059699424,1027406094)+W(6,-1095318743,1043898666,-1091030613,1036599707)+W(7,-1096741875,-1114635611,1057805441,-1117298502);WS(-1083489614,-1078579141); +sum1=W(0,-1113694287,-1091060438,1048678744,1022130309)+W(1,1048897616,-1104759380,1055607032,1045345264)+W(2,-1104500498,-1089217572,1025763911,-1098656951)+W(3,1029397720,-1096433234,1056656214,1045280313)+W(4,1039983475,-1090900481,1055730826,1003335600)+W(5,-1099529286,-1103761763,1039576037,-1104729181)+W(6,1047818144,-1126261903,1050842685,1045845834)+W(7,-1100400745,-1098862766,1044462332,-1124798927);sum2=W(0,1034867092,-1113896283,-1089397746,1053130734)+W(1,1036831152,1008734783,-1143881728,1048547317)+W(2,-1155378720,-1107821706,-1090933436,1050664536)+W(3,1050005016,1036439980,1067046868,-1081990202)+W(4,-1109019109,-1105188391,1074023168,-1073616958)+W(5,-1107857756,-1103852014,1073004488,-1073650181)+W(6,1025727369,-1113326142,1071596064,-1078582463)+W(7,-1105627363,1036502992,1068047188,-1079035066);WS(-1123566816,-1118788492); +sum1=W(0,1034266605,-1131696345,-1102436480,1029920799)+W(1,-1136553988,1054570946,-1101485920,1027694719)+W(2,1032767842,1043367745,-1093672570,1029228634)+W(3,-1119057557,1057910725,-1081257723,1038070160)+W(4,1032596498,1051309065,-1104247863,1041012541)+W(5,-1138237144,1050053561,-1097237249,-1104490509)+W(6,1034235800,1044754161,-1100737384,1036672371)+W(7,1038972738,1047609962,-1118734125,-1101643609);sum2=W(0,1001205015,-1108935456,-1123729961,-1151981614)+W(1,1006355343,1048575251,1037564428,-1123825361)+W(2,1030505158,-1114918170,-1096130861,1015236500)+W(3,-1119701641,-1088419213,-1068662368,-1095410362)+W(4,1039794598,1032736312,1076967646,1049774729)+W(5,-1107202062,1045905661,1068403675,-1105335733)+W(6,1026836118,-1116946341,-1104305708,1050153445)+W(7,-1115440174,1003805295,-1124006983,-1103176791);WS(-1103567160,1051728620); +sum1=W(0,1022317012,1037463598,-1094952698,1033922872)+W(1,-1105517764,1027268637,-1107670055,1024776175)+W(2,-1109296554,1052072875,-1103880757,1038888053)+W(3,1030946149,-1094107172,1052944567,1043766492)+W(4,1032988986,-1087396213,1057943536,-1110506946)+W(5,-1117957958,-1098739651,1052382091,-1108829569)+W(6,1025729823,-1104965205,1036164793,-1132271979)+W(7,1009731405,1017302004,1041821631,1015545129);sum2=W(0,1031290011,-1127050317,-1113481669,-1080536402)+W(1,-1114551402,1026829489,1042490649,-1076466135)+W(2,-1137203270,1032334734,1043198364,1038797044)+W(3,1025723227,-1098446681,-1127701979,1074254195)+W(4,1020823723,1041359246,1057793899,1035340712)+W(5,-1107112701,1041376772,-1100591458,-1118262367)+W(6,-1156747895,1034398482,-1114292550,1013380262)+W(7,-1140368490,-1104694439,1037536680,1032104302);WS(-1106439480,1029090439); +sum1=W(0,1034559195,1042655458,-1102396839,1026400220)+W(1,-1151887836,1030625962,-1115609614,1035325646)+W(2,1020849475,1059377738,-1089162129,1042909598)+W(3,1042053132,-1084013087,-1083731653,1039293086)+W(4,1043127920,-1107145304,1052971191,1029716960)+W(5,1043814293,1032281331,-1107154457,1024778063)+W(6,1037260390,1040913704,-1113717087,1028666946)+W(7,1043715864,1033172451,1017680531,-1130742978);sum2=W(0,-1129107524,1021999108,1022835844,-1129901940)+W(1,-1123636938,-1148550480,1016982596,-1140398984)+W(2,-1116921954,-1104180688,1016773924,1030858450)+W(3,1035143287,1058583951,1054454385,-1117386658)+W(4,1036996009,-1112895549,-1097314323,-1108156993)+W(5,1026655402,-1116180274,-1099699990,-1118751234)+W(6,-1117010042,-1131502740,-1132536424,1016259828)+W(7,-1126794884,-1138164712,-1129763396,-1117013506);WS(1048151864,1059242544); +sum1=W(0,-1122367849,-1097114939,1043794348,1026875087)+W(1,-1121466768,-1097911384,1033810391,1014185912)+W(2,1042165293,-1085899247,1063564267,-1106211614)+W(3,-1116044868,1042506911,1042284551,-1111561384)+W(4,-1105437493,1056857214,-1089674786,1040868541)+W(5,1037358179,-1105063934,1049648847,1028107682)+W(6,-1125163356,-1123578292,1021855394,-1111395274)+W(7,-1111398955,-1106114902,1045389303,1010402126);sum2=W(0,-1139648101,-1110557326,-1106733442,1039330638)+W(1,-1108856547,1041627874,-1106727608,987619817)+W(2,1015236663,1032833232,1048813377,1025349119)+W(3,-1095822659,1054902128,1055403310,-1095503796)+W(4,-1137977893,-1098765424,-1097123375,1050144719)+W(5,1038373686,-1121592121,1045561320,-1108448514)+W(6,1015865663,-1106594443,-1106386080,1041979856)+W(7,1025690243,-1117564251,1017823319,-1105901385);WS(1058511566,1043187024); +sum1=W(0,1042620242,1041476871,-1106861387,1043942651)+W(1,1027981614,1044640335,-1120607404,1040914531)+W(2,1037513401,1039039385,-1101062960,1040902562)+W(3,1050564856,-1085132912,-1089194338,1048598306)+W(4,1040390932,-1095196494,1032203084,1019897185)+W(5,1044188393,-1116362934,-1134658518,1032634704)+W(6,1032851398,-1107832665,1026497359,1027555603)+W(7,1043046140,-1105825814,-1105488567,1032742569);sum2=W(0,-1094808435,-1083260450,1041967320,1026111290)+W(1,-1132385524,-1089624726,-1102801635,1034887813)+W(2,-1110994277,-1098133391,1050258559,-1123786474)+W(3,1039748829,1063143581,1037743779,1033106845)+W(4,1038866141,1043371703,1048943341,-1110363077)+W(5,1012861192,1040218148,-1112998265,-1121754906)+W(6,1030487914,1012758152,1031702418,1012203560)+W(7,-1132742376,1052570990,-1105604919,-1111765769);WS(-1087236686,1061665912); +sum1=W(0,-1115274057,1023071688,-1107980923,-1119301463)+W(1,-1116162424,1030200068,-1101866270,-1128116268)+W(2,-1104461343,1054050807,-1092884195,-1109238785)+W(3,-1093387666,1067462106,1056570668,-1095571507)+W(4,-1113556238,1050597447,1044256537,-1103733247)+W(5,-1115159031,1031104576,-1106234576,-1111522325)+W(6,-1126942285,-1121547516,-1128835891,-1111458030)+W(7,-1121543315,1042315272,-1114796114,-1109780718);sum2=W(0,-1127633710,1024134807,-1114424195,-1109129714)+W(1,1024854732,1020748524,-1098546148,1025355297)+W(2,-1123781128,-1117094752,-1079772750,-1102118069)+W(3,1040493279,1065417820,1059484680,-1114766469)+W(4,-1105896535,1047826025,-1107504040,1033237727)+W(5,1033983514,-1102101577,1049649199,-1154145757)+W(6,-1122459292,1040101538,-1105983778,1012710689)+W(7,-1120616672,-1124130304,1041220419,-1123999628);WS(-1092106140,-1084163121); +sum1=W(0,1036347305,1049849489,-1101083230,-1106738110)+W(1,1016904817,1040213041,-1152694122,-1115216475)+W(2,1034414494,1056746079,-1083169173,1039797369)+W(3,1040590819,1048812489,-1107117385,1022569263)+W(4,1047670567,-1084779712,1051667767,-1112982247)+W(5,1030378702,1040726752,-1109066592,-1125038036)+W(6,-1114654031,1033236350,1024925978,1025136605)+W(7,1037868673,1034988241,-1107106473,-1146668256);sum2=W(0,-1144361879,-1111008682,-1092072719,1021883158)+W(1,-1128843246,-1134810723,-1121102479,-1116668390)+W(2,1005924247,1041181160,1045581242,-1109114373)+W(3,-1104940693,1054697191,1046555600,-1113715104)+W(4,-1123234701,1052731012,-1103970223,-1128555074)+W(5,1030348431,1042931729,-1104348933,1032936433)+W(6,1032437115,-1112071203,-1113690885,-1136719027)+W(7,1024671661,-1111460488,-1129885552,-1114960949);WS(1058637774,-1109876822); +sum1=W(0,-1123254812,1042623060,-1126486401,-1112485473)+W(1,1041301297,-1105094644,-1111052512,1037949088)+W(2,-1108082435,1059472952,-1094910408,1016105496)+W(3,-1113241451,1043969956,-1094009726,1038892497)+W(4,-1110973875,-1113269955,1058531737,-1093047519)+W(5,1027216056,1026816394,-1100061186,1032398170)+W(6,1014894339,-1130602892,1032486130,-1128303438)+W(7,1019588394,1026167148,-1117291247,1021704844);sum2=W(0,1019183838,-1103677237,1041385745,-1115238116)+W(1,1031923668,1026573624,1025625867,1024201143)+W(2,1049015983,-1101357077,-1095136476,1024442030)+W(3,-1096362417,1060010174,-1096248497,-1122837727)+W(4,1005830618,-1122620605,-1115221092,1034369966)+W(5,1036998273,-1106684685,1049273019,1031554545)+W(6,-1119396253,1023743335,-1112424814,1004099770)+W(7,-1125844722,970656667,1011280453,1010302645);WS(1068382951,-1145853862); +sum1=W(0,-1109092968,-1104283584,-1126224104,-1142984099)+W(1,-1120835030,-1104742016,1048835390,1035504970)+W(2,1015957108,-1087137628,1060142968,1044651720)+W(3,1033165317,-1082841532,1050512116,1036256010)+W(4,1015780402,1048723479,1050625794,1040271692)+W(5,-1098982451,-1119342334,1046183055,-1112268532)+W(6,-1106789039,1037068029,1033167819,-1115364877)+W(7,-1105810191,998682871,1042826568,-1113754717);sum2=W(0,1042289605,-1105845074,-1105090355,1041479887)+W(1,-1123754179,1032442894,-1106552079,1028813354)+W(2,1040865617,-1090127653,-1075116096,-1087510643)+W(3,1025996190,1055606718,1073431719,-1084272058)+W(4,-1100913998,-1104101067,1067916428,1045036562)+W(5,-1118459936,1026136504,1042119939,-1131666845)+W(6,-1114401734,1031986833,-1112990087,1021173748)+W(7,-1118182115,1045409779,1031635830,-1131440550);WS(-1115823328,-1115141930); +sum1=W(0,994860217,-1096937968,1034643656,1022968545)+W(1,1043355533,-1093401724,1045563268,-1100277972)+W(2,1046651158,-1082957735,1056739037,-1106135459)+W(3,1031967699,1057829358,1053028032,-1113373017)+W(4,-1112906011,1054780763,-1085595451,1036473238)+W(5,-1139800861,1049387203,-1100812438,1042166401)+W(6,1032268536,1029694230,-1112691098,-1109328859)+W(7,1021673189,1032667294,-1163065290,1026417494);sum2=W(0,1041009418,1006794492,1023178506,-1126244586)+W(1,-1106230161,1034312638,-1120362931,1021996758)+W(2,-1113994011,-1108126219,-1105213924,-1131146954)+W(3,-1100787264,1060460225,1054015707,997147503)+W(4,-1102450993,-1119222967,1053508358,-1107185372)+W(5,-1114680808,-1097084093,-1133314452,-1126416406)+W(6,1031764893,-1125377404,-1141774536,-1126617106)+W(7,-1145068408,-1105852265,-1120752408,-1131039214);WS(1044911928,1063248560); +sum1=W(0,-1117210934,-1089987573,1050931427,-1154913199)+W(1,1045807559,1006551364,1049202419,1049427019)+W(2,-1116245664,-1085623154,1044690392,-1098224261)+W(3,-1122601008,-1098705597,1056494849,1043742399)+W(4,1041679280,-1089608778,1054654497,1009817082)+W(5,-1102494868,-1098692501,1047881833,-1102952115)+W(6,1044187563,1040126000,1043119951,1048685800)+W(7,-1101059428,-1100421777,1043071666,-1132265536);sum2=W(0,-1110897864,1031814971,1060526454,-1090228093)+W(1,-1104703066,-1126406622,1034850394,-1097166620)+W(2,1039476246,-1112535334,1060516426,-1091926928)+W(3,-1102025112,-1088994686,-1088701567,1063814816)+W(4,1041770976,1050082866,-1072347435,1074296249)+W(5,1044782005,1038057456,-1075073775,1073862535)+W(6,-1112640404,1029663347,-1077197270,1067261757)+W(7,1045848501,-1098794387,-1081012351,1067785227);WS(-1105546040,1026157880); +sum1=W(0,1040950836,1040614249,-1102499357,1036650571)+W(1,1036866652,1043435937,1032157499,1032871003)+W(2,1045419231,1048836647,-1088963702,1035867609)+W(3,1057171433,-1092874056,-1078642173,1040635958)+W(4,1039696013,1049109967,-1094603626,1039966133)+W(5,1040737235,1037560064,999044599,1035782037)+W(6,1031337694,1039556030,-1107844556,1034875342)+W(7,1043417390,1020658754,-1101965321,1029450491);sum2=W(0,999804672,1033414560,-1131242272,-1111239120)+W(1,965076992,-1142972544,-1152459008,-1114613368)+W(2,1017997216,-1117537424,1043660652,1024438240)+W(3,-1113573416,-1080122522,1068973644,1009242816)+W(4,1015814944,-1116987776,-1113471168,1026341216)+W(5,1013150208,1009041344,1023678672,-1111376032)+W(6,1004325632,1030258512,-1115573696,-1124670336)+W(7,-1116017408,-1123867424,1025739248,1011147520);WS(-1081027239,1060388068); +sum1=W(0,1040945153,1049191505,-1103567931,-1142725077)+W(1,1018532824,1052335227,-1106690587,-1126830164)+W(2,1048158700,1053224518,-1098210230,1044049241)+W(3,1050078256,-1089652372,-1079677805,1037048166)+W(4,1043330564,1050009062,-1090769236,1037549983)+W(5,1045983912,1019623144,-1102526621,-1124021470)+W(6,1034126717,1043374892,-1113976903,1031972104)+W(7,1042366848,1037373643,-1106920486,1000910717);sum2=W(0,1029289565,-1119356133,-1126159585,-1119814653)+W(1,1023484285,1031916514,-1111485988,-1133461586)+W(2,1041097307,-1120749829,-1121314077,-1112201820)+W(3,1044843621,1057057740,1024531885,1001931237)+W(4,-1101664529,1055633817,-1102656055,1035253182)+W(5,-1108647964,-1098024997,1016983721,1019582313)+W(6,-1111945130,1038083406,-1105960100,1011319026)+W(7,-1129898257,-1101101054,1022769465,-1110859200);WS(-1121436896,-1083449266); +sum1=W(0,-1131437006,1057845458,-1096100393,-1112818966)+W(1,-1126965659,1026072602,-1106937331,1025271436)+W(2,-1106898372,1058188821,-1089458543,-1120770471)+W(3,1049661628,1047051462,-1093909527,1039868950)+W(4,-1110051320,1036301673,-1105302990,-1101852248)+W(5,1048826500,1049513187,-1097831955,1048680544)+W(6,1018834023,1026266705,-1115312055,-1111779257)+W(7,1030351624,1043516478,-1094725407,-1137214404);sum2=W(0,1025140224,-1118806788,-1126785121,1031495588)+W(1,1016993788,1030590564,-1118559458,991152164)+W(2,-1106156741,1042721449,-1106137914,1038491925)+W(3,-1085967118,1078987048,-1100137345,1040984057)+W(4,-1070014283,1078555235,1044823121,-1111978905)+W(5,-1066270592,1069325982,-1105174392,1030579932)+W(6,-1089828448,1051485796,-1121082393,-1113499951)+W(7,-1115300709,1026006822,1011662011,-1120641633);WS(1060473294,-1125032523); +sum1=W(0,-1118381578,1043924207,1028842287,-1103983036)+W(1,-1131528546,1048790648,-1094915206,1032416951)+W(2,-1103035725,1057928103,1048586166,-1131359957)+W(3,1044891665,-1096003632,-1089668066,1041536420)+W(4,1017562024,-1104437021,1048997587,-1119623443)+W(5,1038728371,-1127678449,-1106021950,1026802338)+W(6,1013193724,-1138265298,1016196772,-1112764523)+W(7,1017619335,1019650740,-1112334062,1028850580);sum2=W(0,-1124013145,1023871771,1041717973,1027246941)+W(1,-1154979909,-1104183315,-1104961174,-1105906795)+W(2,-1113455493,1024353365,-1071159846,-1114760758)+W(3,1042673063,-1099433949,1075222357,1048045634)+W(4,1009341589,1037029004,1061754151,-1101645527)+W(5,-1131887235,-1106752952,-1106459992,1027783079)+W(6,-1126494367,-1136822537,1037905746,-1130069351)+W(7,-1120394460,-1135604889,1020599743,1023779471);WS(1063175758,1049951270); +sum1=W(0,1051934199,-1084051495,1040719576,1028219745)+W(1,1041620825,-1091045702,1046456792,1028165760)+W(2,1053157077,-1089200998,1054477181,-1110307566)+W(3,1019501037,-1103613676,1050464826,1037889601)+W(4,-1121035141,-1103906809,-1098419444,1045652053)+W(5,1024394007,1042850683,-1097805325,1054554722)+W(6,1034798936,-1117239270,1011564046,1031152711)+W(7,999909159,-1106705027,-1091232034,1056053333);sum2=W(0,-1091471926,1062079447,1055700238,1015596856)+W(1,1042259987,-1095572989,1041645665,1033532620)+W(2,-1103057728,-1089203271,1037140407,1035045090)+W(3,1049412228,-1092861102,-1093629070,1042934527)+W(4,1044973062,1034556296,-1095940003,1032040702)+W(5,-1116401558,1047552828,-1106623325,-1106239816)+W(6,1011000463,-1110031497,-1107294450,1033073048)+W(7,-1130123924,1051271629,1053844390,-1095799213);WS(-1085388366,-1090694979); +sum1=W(0,-1123787314,1044273497,-1108110651,-1115475932)+W(1,-1119481145,-1130943626,1041576542,-1117135031)+W(2,1032777214,1047368143,-1087220302,1040347561)+W(3,-1112850502,1059845268,1027588771,-1101064470)+W(4,1041751591,-1095680144,1036323946,1037523789)+W(5,-1125429276,1039407200,-1111657568,-1126225621)+W(6,-1140788444,990533574,1021334836,-1134357621)+W(7,-1113892940,1032644049,-1143449895,-1109271006);sum2=W(0,-1107190004,1037736456,-1125693587,-1120404934)+W(1,1013881877,-1105376838,1040619572,-1122228614)+W(2,-1118295314,-1123416196,-1082924015,1051908042)+W(3,-1121103222,1042717593,1068021664,-1087341114)+W(4,-1127822751,-1115549939,1016978358,1042189807)+W(5,-1115317828,1043660085,-1108863865,-1125959243)+W(6,-1126179247,-1126402007,-1136349779,1038966556)+W(7,-1114801766,1040920849,-1107267301,1023515477);WS(1065904679,-1122628785); +return clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0); +} // nnedi3 +vec4 hook() { +vec4 ret = vec4(0.0); +vec4 samples[8]; +samples[0][0] = HOOKED_texOff(vec2(-3.0, -1.0)).x; +samples[0][1] = HOOKED_texOff(vec2(-3.0, 0.0)).x; +samples[0][2] = HOOKED_texOff(vec2(-3.0, 1.0)).x; +samples[0][3] = HOOKED_texOff(vec2(-3.0, 2.0)).x; +samples[1][0] = HOOKED_texOff(vec2(-2.0, -1.0)).x; +samples[1][1] = HOOKED_texOff(vec2(-2.0, 0.0)).x; +samples[1][2] = HOOKED_texOff(vec2(-2.0, 1.0)).x; +samples[1][3] = HOOKED_texOff(vec2(-2.0, 2.0)).x; +samples[2][0] = HOOKED_texOff(vec2(-1.0, -1.0)).x; +samples[2][1] = HOOKED_texOff(vec2(-1.0, 0.0)).x; +samples[2][2] = HOOKED_texOff(vec2(-1.0, 1.0)).x; +samples[2][3] = HOOKED_texOff(vec2(-1.0, 2.0)).x; +samples[3][0] = HOOKED_texOff(vec2(0.0, -1.0)).x; +samples[3][1] = HOOKED_texOff(vec2(0.0, 0.0)).x; +samples[3][2] = HOOKED_texOff(vec2(0.0, 1.0)).x; +samples[3][3] = HOOKED_texOff(vec2(0.0, 2.0)).x; +samples[4][0] = HOOKED_texOff(vec2(1.0, -1.0)).x; +samples[4][1] = HOOKED_texOff(vec2(1.0, 0.0)).x; +samples[4][2] = HOOKED_texOff(vec2(1.0, 1.0)).x; +samples[4][3] = HOOKED_texOff(vec2(1.0, 2.0)).x; +samples[5][0] = HOOKED_texOff(vec2(2.0, -1.0)).x; +samples[5][1] = HOOKED_texOff(vec2(2.0, 0.0)).x; +samples[5][2] = HOOKED_texOff(vec2(2.0, 1.0)).x; +samples[5][3] = HOOKED_texOff(vec2(2.0, 2.0)).x; +samples[6][0] = HOOKED_texOff(vec2(3.0, -1.0)).x; +samples[6][1] = HOOKED_texOff(vec2(3.0, 0.0)).x; +samples[6][2] = HOOKED_texOff(vec2(3.0, 1.0)).x; +samples[6][3] = HOOKED_texOff(vec2(3.0, 2.0)).x; +samples[7][0] = HOOKED_texOff(vec2(4.0, -1.0)).x; +samples[7][1] = HOOKED_texOff(vec2(4.0, 0.0)).x; +samples[7][2] = HOOKED_texOff(vec2(4.0, 1.0)).x; +samples[7][3] = HOOKED_texOff(vec2(4.0, 2.0)).x; +ret[0] = nnedi3(samples); +return ret; +} // hook +//!DESC NNEDI3 (combine_y, nns128, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND nnedi3_int +//!HEIGHT 2 HOOKED.h * +//!OFFSET 0.000000 -0.500000 +//!WHEN HOOKED.h OUTPUT.h / 0.707106 < +vec4 hook() { + vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5; + if (dir.y < 0.0) { + return HOOKED_texOff(-dir); + } else { + return nnedi3_int_texOff(-dir); + } +} +//!DESC NNEDI3 (double_x, nns128, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!SAVE nnedi3_int +//!WHEN HOOKED.w OUTPUT.w / 0.707106 < +float nnedi3(vec4 samples[8]) { +float sum = 0.0, sumsq = 0.0; +for (int i = 0; i < 8; i++) { + sum += dot(samples[i], vec4(1.0)); + sumsq += dot(samples[i], samples[i]); +} +float mstd0 = sum / 32.0; +float mstd1 = sumsq / 32.0 - mstd0 * mstd0; +float mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7); +mstd1 *= mstd2; +float vsum = 0.0, wsum = 0.0, sum1, sum2; +#define T(x) intBitsToFloat(x) +#define W(i,w0,w1,w2,w3) dot(samples[i],vec4(T(w0),T(w1),T(w2),T(w3))) +#define WS(w0,w1) sum1 = exp(sum1 * mstd2 + T(w0)); sum2 = sum2 * mstd2 + T(w1); wsum += sum1; vsum += sum1*(sum2/(1.0+abs(sum2))); +sum1=W(0,-1106336704,-1134422686,-1097058997,-1096794255)+W(1,-1096428577,-1108910446,-1110459731,-1101174078)+W(2,-1104338237,-1108550970,1036063029,1068454954)+W(3,1045547931,-1102009308,-1122481515,1017740065)+W(4,1041734649,-1135080854,1053379177,1068510503)+W(5,-1114733521,-1146436468,-1107441476,-1113618698)+W(6,-1112016931,-1117701445,-1099451832,-1092648385)+W(7,-1101312270,-1118387353,-1118789516,-1107281979);sum2=W(0,-1107960738,1022891960,-1112828174,-1099542471)+W(1,1028527356,-1124169384,1003609248,1019646072)+W(2,1034572820,1003346080,-1096749055,1067566060)+W(3,-1090311143,1028295012,-1101382023,-1102277943)+W(4,-1105088633,-1103397515,1056062200,-1127174872)+W(5,1048792675,-1106700271,1033154740,1037356874)+W(6,-1147785184,1035529310,-1105585021,1034766166)+W(7,-1117109292,-1116900804,-1121486356,-1114899026);WS(-1075683047,-1087125913); +sum1=W(0,1042687663,1034752002,1020877136,1043598702)+W(1,1032834596,1049059763,1041786741,1050972591)+W(2,1052977914,1046022844,1051043629,1049374510)+W(3,1044576234,-1108783446,-1105784362,-1089957133)+W(4,-1087267578,-1097639380,-1087388173,-1095656786)+W(5,-1108370107,-1101488315,-1111228387,-1108747496)+W(6,1041384601,1034807969,1037740431,1044538321)+W(7,-1113942663,1043415765,1011031587,1034104676);sum2=W(0,-1129327146,-1149557934,1027469999,-1116270499)+W(1,-1107094547,-1114668504,-1136313139,-1115408970)+W(2,-1112916736,-1120018795,-1105442406,1056936993)+W(3,1036431709,1029410453,-1126491682,-1112281372)+W(4,-1109246006,1012425107,1044505132,1054092693)+W(5,1015080154,-1102188513,-1123974759,-1115235380)+W(6,-1168639863,-1122303521,-1114911422,-1109477794)+W(7,-1122292075,1038663029,-1124857486,1004657207);WS(1042212664,-1102203684); +sum1=W(0,-1140902818,1019874102,-1138465404,1041713132)+W(1,1031911135,1032244040,-1122713961,1032066151)+W(2,1040147851,-1104962202,-1102798136,-1085739950)+W(3,-1090423514,-1096835716,1015091005,-1100137137)+W(4,1035472140,1045102086,1044852023,1052255697)+W(5,1050093153,-1114874577,-1125530488,1025859399)+W(6,-1111794429,1033944684,-1122108180,1042129278)+W(7,1026181805,1045351411,1045226448,1037723887);sum2=W(0,1025219442,-1119436548,1041363772,1026037858)+W(1,-1106963956,-1148187164,-1115265228,1027834104)+W(2,-1109152196,-1122141349,1032935700,-1095545125)+W(3,1029288712,1048235476,1017807431,-1124373883)+W(4,1026944460,1040314652,-1124096755,-1132954458)+W(5,1063106013,1044093468,-1119277141,-1115291573)+W(6,-1136900198,-1112897189,-1144192892,1046665648)+W(7,-1112667488,-1091150222,-1098670428,-1099776205);WS(-1106435384,1038338229); +sum1=W(0,1040095954,1019822615,1037825128,1041126536)+W(1,1042659628,1046281616,1025627498,1052688116)+W(2,1057302312,1048464174,1048602738,1046177110)+W(3,-1113571175,1010729037,-1116720143,-1090676327)+W(4,-1085504617,-1109673285,-1088007186,-1089584127)+W(5,-1112427435,-1099904421,985851280,-1109333660)+W(6,1038469973,1008999077,1047759857,1042217259)+W(7,-1122205838,1042535855,1020820192,1034203799);sum2=W(0,1016257202,1025056091,-1123344133,-1117490597)+W(1,-1139226916,-1121712633,1032149092,1018740994)+W(2,1059204215,1059357388,-1096239491,-1080318626)+W(3,-1097775023,-1121076469,-1108589001,1042934709)+W(4,1078138204,1057901024,-1075026282,-1073900782)+W(5,1041808545,1040778731,1040543247,1013253724)+W(6,1045786159,-1115583727,1040463834,1043123901)+W(7,1021989454,-1105966927,1015040126,-1147555881);WS(-1079558823,-1098708322); +sum1=W(0,-1107155318,1025234303,1015859078,1036194249)+W(1,-1109510417,-1106597869,-1106784003,-1107821257)+W(2,-1102044491,-1098872409,-1087610848,-1086405173)+W(3,1049149960,-1113006787,1034815041,-1109243348)+W(4,-1157836704,1050456336,1055919296,1051086989)+W(5,1049231261,1047976577,1037659280,1045770027)+W(6,1018716763,1032647774,1043448582,1041211303)+W(7,1032229161,-1113988824,-1114873522,-1115826050);sum2=W(0,-1115121954,1012713185,-1120959275,979525395)+W(1,1031308048,1023425822,1008898041,1015643115)+W(2,1038073794,-1114116718,1048906430,-1089285214)+W(3,1044939824,960279117,-1114246838,-1116674868)+W(4,-1128914993,1041575276,1074552079,-1076455267)+W(5,-1081125046,-1109266711,1028966618,-1116558128)+W(6,-1116577465,-1124395325,1055266270,1060162115)+W(7,-1098098687,1021768571,-1124862202,1013382601);WS(1045132600,-1120782135); +sum1=W(0,-1105751784,-1105178898,-1104184899,-1114219853)+W(1,-1110381909,1038688878,-1129240105,1028338913)+W(2,1057393815,1048859946,1059464001,1046945589)+W(3,-1115358437,-1101266388,1006928425,1001553277)+W(4,-1105555137,-1097544977,-1093321826,-1096850414)+W(5,1045680426,1054674458,1040711722,1051440502)+W(6,-1117651397,1030868229,-1113548192,-1114482291)+W(7,-1100710867,-1101910270,-1109195062,-1106616547);sum2=W(0,1017265392,-1109811903,1023756444,-1113627340)+W(1,1014378799,-1145950526,-1129429444,1013677319)+W(2,1041015042,1031690548,1041543835,1061785433)+W(3,-1112539854,1033767962,-1111764061,-1098545742)+W(4,-1100279165,-1110095441,-1121800962,1052269299)+W(5,1027655784,-1103181542,-1110834939,-1106577514)+W(6,1015388608,-1118750728,1018680528,-1143924414)+W(7,-1099334823,1020584168,-1108053853,1036964648);WS(1052573852,-1122511817); +sum1=W(0,-1122539822,1036520122,-1150669710,-1131456914)+W(1,1027717464,1032118773,1021054902,1030809195)+W(2,-1107197216,-1104137920,-1095755763,-1089160552)+W(3,-1090293588,-1090056564,-1092174087,-1086001910)+W(4,-1123108403,1038549849,1032946604,1050538028)+W(5,1052989852,1057974832,1053464075,1057808582)+W(6,1051517474,1023654291,1039184399,1041388597)+W(7,-1168884669,1033029075,1028526105,1041880934);sum2=W(0,-1085894681,1038192816,-1098445483,-1102898046)+W(1,1008806191,1050638036,-1102617523,1057325981)+W(2,-1108201039,-1090848333,1052221636,1071505414)+W(3,-1098981857,-1086351349,-1096799400,-1088620184)+W(4,1070882268,-1093216289,1067999858,1073865984)+W(5,1058878464,-1083525828,-1107159037,-1083206959)+W(6,-1081052443,-1102549623,-1087793608,-1090403840)+W(7,-1095780376,1055133376,-1096503933,1053790412);WS(-1073219892,-1080326418); +sum1=W(0,-1114077580,-1142635506,-1142955026,-1123237842)+W(1,1038107057,-1103324917,1026598572,-1095875035)+W(2,-1101602915,-1103425331,-1090278522,-1092662145)+W(3,-1091646784,-1114692451,-1101848592,1038718196)+W(4,1057495924,1053716920,1055741332,1051447237)+W(5,1052494629,1049044089,1043005848,1047828379)+W(6,-1151047116,-1114784094,-1111276924,-1121668701)+W(7,1000704387,-1109204280,1010568075,-1156952092);sum2=W(0,-1121663397,-1116542136,1042431779,1037730633)+W(1,1010053773,-1137348615,1028087910,-1119025600)+W(2,-1095443331,1050195534,-1123573301,-1100504352)+W(3,1043186658,-1102861372,-1110454800,1040229501)+W(4,-1067370736,-1071776975,1068672794,1077012119)+W(5,1070664889,1045361006,-1123945395,1027642294)+W(6,1005231721,974104521,-1111985184,1047585075)+W(7,1016528922,-1109020232,1037668055,-1117277443);WS(-1130027456,1047744266); +sum1=W(0,1030328637,-1100312969,1036569044,1044449278)+W(1,-1106699970,1046212150,-1104762293,-1124975021)+W(2,-1103440100,1043447132,-1096543805,-1093151398)+W(3,1024264999,-1115860524,1041344218,1032410566)+W(4,1050534604,1038395889,1037345619,-1106526388)+W(5,-1115006287,1035372917,980910400,1044066628)+W(6,-1130350917,-1105733872,1043114871,1022399622)+W(7,1020228332,1024836117,-1123108872,-1112803412);sum2=W(0,1029880722,-1098453144,1029103498,1067660000)+W(1,-1094604015,1046293202,-1104816365,-1117927817)+W(2,1033391383,1041649400,-1095624145,-1082091368)+W(3,1056223691,1027973488,1034193475,1034286113)+W(4,-1137819024,-1137377888,1040796761,-1080643124)+W(5,-1102259819,-1121978412,-1148596400,1041009105)+W(6,-1114516031,1025620716,1035240799,1066795978)+W(7,-1098376459,1036814117,-1107858514,-1114981924);WS(1049012636,1037011386); +sum1=W(0,-1108102978,1042768739,1036457352,-1105146600)+W(1,-1100621772,-1100160944,-1149100234,-1116535239)+W(2,-1097922903,-1089977373,-1083790961,1050515995)+W(3,1053649082,1044221701,1020595485,-1110188826)+W(4,1049818257,1052134241,1059747641,1062551839)+W(5,-1088576433,-1093385002,-1108848982,-1147628986)+W(6,1041216474,-1106782690,-1120768141,975424142)+W(7,1042971413,1047421135,-1142399358,1034144007);sum2=W(0,-1130376652,-1109307779,998991648,-1105231849)+W(1,-1124853008,-1110904873,1033926100,1012787248)+W(2,-1109271051,1040605589,-1117670218,1068278024)+W(3,-1099193318,1035466738,-1111928806,1025845624)+W(4,-1098570547,-1097221185,-1087670872,1068017963)+W(5,-1103240593,1049832589,1018913792,1035573068)+W(6,1029552052,-1097745138,-1101762859,-1100990121)+W(7,-1094879980,-1119653306,-1099498770,1046656503);WS(-1099128120,1074104605); +sum1=W(0,1001695642,-1114738061,-1137881464,1035838167)+W(1,1036976671,1043227732,1024532056,1041576607)+W(2,1031876531,1036082771,1049670772,1045634202)+W(3,1039176783,1044499416,-1115296143,1036111714)+W(4,-1106225286,-1127447088,-1114090766,-1084335000)+W(5,-1092101927,-1106295064,-1108352670,-1103209586)+W(6,1039516460,1037331996,1048871226,1024672505)+W(7,-1111706306,1040216275,1018355325,-1129216251);sum2=W(0,-1125983803,1026289226,1003361806,1036989304)+W(1,-1121376018,-1127516251,999276462,1020382491)+W(2,1057121124,1048908439,1042597022,-1101738899)+W(3,-1101518001,-1114490175,1032222895,-1111061815)+W(4,-1097673861,-1081617292,-1083990029,1066557847)+W(5,1050089807,1021212715,-1107462587,1048167829)+W(6,-1097055530,-1105528539,-1094090339,1060807350)+W(7,1045798092,1007168711,1021142275,1024157832);WS(1043392312,-1114334171); +sum1=W(0,1041086874,1027676176,1029494548,1038182418)+W(1,1033375641,1014428948,1016176348,1036956537)+W(2,1046571639,1051603231,-1114765098,1063881062)+W(3,1036439434,1039261900,1049353410,1039119196)+W(4,-1101297859,-1100311555,-1090719068,-1092551191)+W(5,-1093343060,-1095549099,-1102133676,-1097401399)+W(6,-1108043111,1031499310,-1123479337,1047470620)+W(7,1029157954,-1113522785,1032866554,-1108903402);sum2=W(0,1032922039,1034144522,1035186417,-1106146153)+W(1,995983013,1014708981,-1118508182,-1122673776)+W(2,-1110774431,1041464609,-1089347840,1063858171)+W(3,-1103182741,-1105498679,1046443094,-1107403517)+W(4,1024080221,1024001520,-1102975683,1062496232)+W(5,-1104694448,1034761930,-1113235807,-1126790312)+W(6,-1111786600,1038622987,-1098326560,-1094555153)+W(7,-1110476474,-1107944280,1045574278,-1119406695);WS(1055141020,1060902337); +sum1=W(0,1034435725,-1133288704,1026181508,1033934442)+W(1,1030709219,-1118188821,1027652318,1035419593)+W(2,1057965143,1052483105,1052696320,-1122504460)+W(3,1052884304,1049027177,1046782257,1045790650)+W(4,-1123568702,-1121795134,-1094115828,-1084201687)+W(5,-1093347107,-1096042081,-1098441692,-1101051195)+W(6,-1104499136,1006999415,-1153162900,1029709087)+W(7,1036285529,-1155692311,1013713298,-1111952258);sum2=W(0,1043194323,1017945729,992756489,-1117717167)+W(1,1023440269,-1108161809,1034607052,-1115924363)+W(2,-1070666261,-1075189642,1068575013,1076566585)+W(3,1056539999,-1098049115,1036076910,-1112346970)+W(4,-1098866335,-1106608294,1051129947,1049134123)+W(5,1047751107,-1097073139,1011007330,1016205049)+W(6,-1101126135,1010301074,-1107911121,1046700061)+W(7,1020103457,1026363561,1035420194,-1137869730);WS(-1090579868,1070279725); +sum1=W(0,1032329895,-1102328821,-1113203900,-1098061089)+W(1,-1105344998,1034205973,-1106552005,1041435478)+W(2,1048430680,1050349544,1052980239,1057014372)+W(3,1057962188,1038273502,1046276062,1049777060)+W(4,-1101560157,-1091335294,1039656780,-1084573078)+W(5,-1103450436,1043587871,-1098888483,1002064136)+W(6,-1129281319,1012204235,1033674783,-1115372202)+W(7,-1108117804,-1111454739,-1115265901,-1109943484);sum2=W(0,987673807,1036995374,-1095509641,-1094252408)+W(1,-1119095571,-1103179232,1040985329,-1114181285)+W(2,1027892228,-1102736131,1034852634,1059241808)+W(3,-1103859919,1043446486,-1109795439,1004807604)+W(4,-1103141235,1049007178,-1090760003,1060311666)+W(5,-1129798465,-1100012675,1051746582,-1113144024)+W(6,1005138532,1028221332,-1123669832,-1128511149)+W(7,1032914452,1006285508,-1122773902,987177167);WS(1058381774,-1086956646); +sum1=W(0,1005434106,-1149835360,1034370117,1036055789)+W(1,1007595428,-1173712576,-1122685332,-1119060568)+W(2,-1096145742,-1100460324,-1096424577,1033532617)+W(3,1049990129,1042033667,-1147483724,1021597150)+W(4,1046241393,1039571170,1054608457,-1110152984)+W(5,-1100950084,-1103984787,-1122634471,1016207588)+W(6,1026532260,-1120107684,-1107524072,-1123297125)+W(7,1032832748,1041584782,-1111048693,1023439817);sum2=W(0,1073050559,1069067455,-1096535796,-1073893027)+W(1,-1077684470,1038335059,994568047,-1109196141)+W(2,1049113865,1035642194,-1105600932,-1114871718)+W(3,-1104998692,1034875990,1004288083,1019116562)+W(4,1048373410,-1101089925,1050248373,-1113393188)+W(5,1015693919,1032989733,1024635942,1041247426)+W(6,-1123382260,1035361564,-1105239942,1000972215)+W(7,-1112223483,987872957,1016564448,1019016937);WS(1051792028,1027146209); +sum1=W(0,-1173418992,1031492470,1030866682,-1111745573)+W(1,1037975597,1032231158,1021051177,1029296729)+W(2,-1096555104,-1099279313,-1102472206,-1086728512)+W(3,-1098029143,-1099704976,-1107704157,-1088435526)+W(4,1048715847,1043543405,1045948678,1048944276)+W(5,1053562136,1041023999,1031959404,1046674105)+W(6,1037767898,1032372106,1031937048,1030986133)+W(7,1035090980,1038793940,1031982829,1043937550);sum2=W(0,1076285256,1067013205,1054912747,-1103468782)+W(1,-1082179927,-1086354611,-1086555076,-1077304359)+W(2,-1071495861,-1080654015,-1092768710,1053690657)+W(3,1062196550,1059230433,1065208788,1069826015)+W(4,-1089164092,1044446905,-1089831336,1049463752)+W(5,-1116071286,1055604285,-1102169042,1049830695)+W(6,1024798548,-1130255717,-1111620633,-1129289568)+W(7,1022374674,-1147177200,1008723412,990531682);WS(-1116843232,1041538044); +sum1=W(0,1038718416,1041393778,1023355030,1040958951)+W(1,1040537034,-1112360254,1043346413,1047211822)+W(2,1050813118,1048646402,1043671731,1037057641)+W(3,1050123337,1052799074,1037436293,1042212684)+W(4,-1091780513,-1107072481,-1097953353,-1088265503)+W(5,-1105750724,-1091053114,-1121572392,-1091261766)+W(6,-1107356403,1032833522,-1126022145,-1185162751)+W(7,1038008293,-1123581176,1033129910,-1116284746);sum2=W(0,-1127892588,1025248710,-1127740272,-1114879615)+W(1,-1125515678,-1135605467,1015277154,-1118452308)+W(2,-1090048491,-1124324076,-1092974499,1047668544)+W(3,1042122418,1052455522,-1102075660,1052515578)+W(4,-1076486023,-1080184847,-1080442855,1048567939)+W(5,1066323214,1068938556,1066205534,1058048535)+W(6,1071993665,1067215194,1068762214,1014309155)+W(7,-1079656754,-1077318729,-1083078137,-1086246531);WS(1045082936,1047750074); +sum1=W(0,1017867382,-1105827232,-1139557912,-1098507795)+W(1,-1112138258,-1113781499,-1117154624,1024003356)+W(2,1038967959,1036533543,1048524561,1057427781)+W(3,1057555836,1044700722,1037485187,1046059755)+W(4,-1107005280,-1101431328,1044741561,-1099209723)+W(5,-1103886606,-1117912777,-1108908881,1024367918)+W(6,-1117189504,1000061951,1034808454,-1102176472)+W(7,-1102736460,-1102956733,-1113728179,-1108156515);sum2=W(0,1003184961,971431442,-1131894760,-1133283297)+W(1,984723076,1031831407,-1125590160,1031681833)+W(2,1024857236,-1109323954,1026446282,-1105665514)+W(3,-1116186208,1024492508,-1121629964,-1148808497)+W(4,-1114215978,1030818718,1031262679,1056963612)+W(5,1055283667,975724297,-1116339968,1026784592)+W(6,1037587704,-1121823736,1045339410,-1107079097)+W(7,-1090072253,-1102678968,-1103014356,-1123463096);WS(1059869006,1015916977); +sum1=W(0,-1111801867,1039164638,1023424768,-1118862224)+W(1,-1114194639,-1099094340,-1118811114,-1096321008)+W(2,-1103727218,-1102716146,-1089648586,-1092420393)+W(3,1049092536,1052180160,1032231232,1046058153)+W(4,1051877295,1051739903,1057614174,1055627629)+W(5,-1096079006,1008315659,-1121275805,1039975892)+W(6,-1115491581,-1106752078,-1104830517,-1112797325)+W(7,1038662167,1030088557,-1131680577,-1175801754);sum2=W(0,-1113427160,-1104433368,-1104169884,-1117600576)+W(1,-1102319880,1039627671,-1097619580,1047721667)+W(2,-1090644207,-1091764889,-1109333336,1065407690)+W(3,-1098732665,-1109931470,1043714297,1041133481)+W(4,1034414883,-1120815960,995253792,1059846520)+W(5,1048874179,1008884504,1021072320,-1103318888)+W(6,1038986783,-1135559136,1033390214,-1120264784)+W(7,-1104270640,1019376128,-1111461786,-1142244432);WS(1054131356,-1077482588); +sum1=W(0,-1100136045,989703980,-1114161471,-1117800461)+W(1,1013262449,-1112319975,1027862775,-1103330903)+W(2,-1101215881,-1100083265,-1091699940,-1088812180)+W(3,-1095974704,1033042241,-1095224480,-1102789769)+W(4,1045307006,1039854844,1051542530,1056393300)+W(5,1053327664,1059113280,1049428707,1055440053)+W(6,1047064142,-1120855287,1042850313,-1122501592)+W(7,-1118254671,-1111473941,-1119385054,-1109190398);sum2=W(0,-1098032416,1055692800,-1101668743,-1100435053)+W(1,-1089098280,-1094416925,-1099202751,-1104551065)+W(2,1063396296,1024719031,1065491656,1073645059)+W(3,1060161647,-1074198531,-1081296593,-1083400329)+W(4,1043414797,1032661901,1058961916,1063424749)+W(5,-1096580753,-1098776178,-1115458644,-1092624053)+W(6,-1093635160,1049215120,-1090478816,1050905898)+W(7,-1135528507,1042380471,1032695397,1054277265);WS(-1082679118,-1072338335); +sum1=W(0,-1126832308,998650886,1029713605,1045660229)+W(1,-1125245511,1001090478,-1126242526,-1128346278)+W(2,-1092407662,-1099976035,-1098757312,1049242330)+W(3,1052609817,1049104969,958956607,-1170516592)+W(4,1041636256,1035459839,1053507448,-1097348797)+W(5,-1097111418,-1099322690,-1116731426,1009511091)+W(6,1032452512,-1118647007,-1113994637,1019901759)+W(7,1026546307,1041545965,-1113342195,1027607012);sum2=W(0,-1069228184,-1073602631,1021776922,1076866983)+W(1,1069809281,-1101499289,1013617559,1036050969)+W(2,-1099529380,1043301860,1054858487,1044685536)+W(3,1062109344,-1097491140,-1149319294,-1113127688)+W(4,-1112044089,1041147606,-1119872164,-1106846135)+W(5,1042271976,1035368326,1025827813,-1115137330)+W(6,-1144476451,-1112019052,1036271953,1018899191)+W(7,-1114284680,-1126672913,-1112053703,-1146921887);WS(-1125906880,1029353026); +sum1=W(0,1052620124,1040928385,1053619569,1034478636)+W(1,-1149501032,1027228408,1033816441,-1143379631)+W(2,-1082830235,-1087911853,-1088553290,-1115166792)+W(3,-1104403058,1046902211,-1140598044,-1115398454)+W(4,1044570800,1048894344,1054767249,1052323270)+W(5,-1096342700,-1092690897,-1112660402,-1089842615)+W(6,1033131793,1031982257,-1118254573,1037418321)+W(7,1045103465,1053685367,1032758420,1056771243);sum2=W(0,1052242091,-1105901664,1041713460,-1098081544)+W(1,-1101414896,-1140318759,-1123485994,-1108472633)+W(2,-1123374674,1032004261,1057464262,1055897675)+W(3,-1108453649,-1099401944,1039811869,-1092934450)+W(4,-1088438592,-1109896025,-1106721416,1057898227)+W(5,1044097375,1041656473,1042751001,1033994653)+W(6,-1109756837,-1117902306,-1106560728,-1101499608)+W(7,-1114554169,1042131382,-1104786072,1048148308);WS(-1080878567,1068324028); +sum1=W(0,-1115471279,1019310859,-1121098697,-1115193805)+W(1,-1153442440,-1104713039,1023975060,-1094675607)+W(2,-1095139206,-1103458412,-1090917913,-1094785898)+W(3,-1100131090,-1118370765,-1102569730,1044057356)+W(4,1057833304,1049561152,1058273109,1054221326)+W(5,1050583410,1048985266,1041261354,1045920684)+W(6,1032811018,-1118469827,-1107876783,-1109399058)+W(7,-1121957752,-1109945243,-1125987028,-1144681671);sum2=W(0,-1122597644,1032420914,-1109997244,1029919127)+W(1,-1129031901,1025876905,-1121404056,1025649559)+W(2,1052263517,-1132353885,-1113437764,-1086124512)+W(3,-1134522929,-1137529969,1041285329,-1111439550)+W(4,1084267296,1077171750,-1076080701,-1066836895)+W(5,-1073829589,-1128728545,-1128683125,-1109934248)+W(6,1037076324,1017945885,1045994672,-1105598049)+W(7,-1115453382,1027437378,-1112127416,1032857588);WS(-1106960696,-1099012034); +sum1=W(0,-1114528403,-1119077260,-1143558020,-1119877760)+W(1,-1109244232,-1096650748,-1112604445,-1100402892)+W(2,-1099071342,-1099370430,-1089278443,-1086538844)+W(3,1010994112,1041376829,1042854492,1049345155)+W(4,1055554285,1049964157,1061104081,1056629915)+W(5,1049997315,1042073805,1031563405,-1123516568)+W(6,-1109121109,-1115766890,-1114965299,-1120868875)+W(7,1034547527,-1114495407,-1139584324,-1118254096);sum2=W(0,-1116593925,1028908115,999050165,1037914955)+W(1,-1106109711,-1105957739,-1123834115,-1113783754)+W(2,1027806287,-1136470458,1039840949,-1122048333)+W(3,1057135276,-1105275062,-1096566133,-1105721601)+W(4,1032648371,1006654490,1052059722,1057985079)+W(5,-1090440242,-1131926605,1018741845,-1124260101)+W(6,1024756439,-1116529299,-1107372324,-1128153177)+W(7,-1142966917,-1123338691,1013415162,1018182189);WS(-1103089976,1059868827); +sum1=W(0,1026631887,1033737723,1034000797,-1130496915)+W(1,-1106694966,-1105866475,-1106727101,-1098705919)+W(2,-1091300264,-1096562704,-1087537316,-1094386976)+W(3,1044429902,1045093007,1040636078,1044615672)+W(4,1056895190,1050565142,1059766350,1053939124)+W(5,-1108577640,-1109922270,-1122075862,-1100982776)+W(6,1031003956,-1140469197,-1108911023,1032926090)+W(7,-1120892680,1034482579,-1136817768,1045052014);sum2=W(0,-1114832682,1038307608,-1109268272,1031259614)+W(1,-1136199018,-1118450441,1025376385,-1125957173)+W(2,1044376552,-1101986459,1025272345,-1112738770)+W(3,1014008179,1042085570,-1110075404,1027010884)+W(4,1052671036,-1094811671,-1106762472,1052706603)+W(5,1040752903,-1100877636,1051973899,1036345951)+W(6,-1084839384,-1076225566,-1074779618,-1088390497)+W(7,1066038403,1071357616,1068318141,1050587817);WS(-1089897038,998399462); +sum1=W(0,-1100326508,-1099771006,-1103969415,1030998252)+W(1,-1111096702,-1129527451,-1115021151,-1124899748)+W(2,-1114312802,-1109889234,-1092992143,-1098209637)+W(3,-1116385180,-1096464604,-1111889198,-1109224641)+W(4,1049930251,1047140918,1060325312,1062808044)+W(5,-1128865717,1048691588,-1137813989,1043572929)+W(6,-1141222070,-1114407115,-1106384368,1017922927)+W(7,1023432554,-1125954964,-1121716413,1020452535);sum2=W(0,-1094975511,-1089233591,-1089977002,1033778332)+W(1,1006981461,-1137053176,-1125132764,979684320)+W(2,-1113696880,1032844980,1066397244,1037917830)+W(3,1039504138,1032622380,1021506052,-1119563165)+W(4,1023473326,1036803698,-1129026618,-1104280508)+W(5,1024702770,-1121975322,974010432,-1138205260)+W(6,1029862812,-1117299445,1025970568,1031377784)+W(7,-1122944997,1022461928,-1130740686,1024270227);WS(-1096120220,-1099720911); +sum1=W(0,1052677544,1027883172,1046184634,1036941212)+W(1,1037786724,1039372749,992842790,1040590154)+W(2,-1105594052,1050583742,1030711656,1050761182)+W(3,1044997418,1051859318,1041579690,1052858474)+W(4,-1101878153,-1120505890,-1094174707,-1087347673)+W(5,-1091299260,-1092171165,-1105854769,-1087724293)+W(6,990296621,1026529890,1039246623,1031039363)+W(7,1038193547,1036921611,-1115076484,1007468831);sum2=W(0,1040381409,-1131846701,1030695069,1015259161)+W(1,1026868853,-1164136976,-1121164685,-1109936403)+W(2,1023777345,-1095435966,-1111411494,-1085163747)+W(3,-1100600319,1052695808,1041440525,1051545155)+W(4,-1110031849,-1146822820,-1089001391,-1074171332)+W(5,-1078760233,1048168469,1074132102,1072577306)+W(6,1022623295,-1096899181,1049343346,-1107180310)+W(7,1043071461,1020495459,1017314953,1050115198);WS(-1080112807,-1111145054); +sum1=W(0,-1103297132,-1106341774,-1098278655,1024154699)+W(1,1037514093,1034961350,-1125780682,-1109009483)+W(2,1049824404,1049617192,1059552348,1031972225)+W(3,-1085661228,-1097823136,-1114326813,-1119831648)+W(4,-1133975251,-1122989109,-1086286580,-1137351813)+W(5,1056970252,992708574,1021582000,1040424089)+W(6,1026400021,1042898005,1041608840,-1145221295)+W(7,-1102084285,1041904442,1038246926,1042525799);sum2=W(0,1041258750,-1109734283,-1123542769,-1113561957)+W(1,-1110564237,1026811493,-1130694514,1024057869)+W(2,989910477,-1100922013,-1096844113,1051742866)+W(3,-1100235579,-1105813951,-1151284621,-1136706867)+W(4,-1134607603,1016064722,1041392492,1057819912)+W(5,1047439582,-1113868277,-1118083589,-1114600003)+W(6,-1109794979,1041809078,-1126381362,982123162)+W(7,-1119465765,1026735929,1019553626,-1114678252);WS(1043409720,-1105036943); +sum1=W(0,1040191749,1033970558,1042494496,1046767380)+W(1,972615552,1032778168,1032217109,1032356247)+W(2,-1096303173,-1095924673,-1093807736,-1092831585)+W(3,-1096756208,-1126846855,-1115229280,-1098580285)+W(4,-1115184605,1041748910,1044442592,1042876074)+W(5,-1140612185,1018241414,1027878365,1034858676)+W(6,1041655059,1041917006,-1160531625,1039311757)+W(7,1020654492,1043700571,1034107952,1036396440);sum2=W(0,1027808259,1010119787,-1111510504,-1113418759)+W(1,1032132185,-1121052855,1014515195,1010692603)+W(2,-1139047739,1043340308,-1106790738,-1096910874)+W(3,1040059331,-1115460243,1017581734,-1120741339)+W(4,986751832,1026247831,1065364148,1040723354)+W(5,1038861011,-1113647147,1041604470,-1135975307)+W(6,-1095774205,-1093511024,-1089533357,1053173071)+W(7,-1106558855,1027584935,-1121443175,1014681515);WS(1035857520,1029952289); +sum1=W(0,-1143077795,-1105351783,-1113811952,-1106526780)+W(1,1035289215,999420801,-1129002434,-1113970285)+W(2,1037051011,1029971495,1049064844,1035603988)+W(3,-1083894414,-1098557596,-1111645039,-1130790920)+W(4,-1110400621,-1106469910,-1094483622,1058276716)+W(5,1056346487,1050633420,1042325343,1026109447)+W(6,-1121149466,1043652126,1027875988,1035104701)+W(7,-1114346217,-1123554317,-1130799743,1025377311);sum2=W(0,-1118517607,-1101077931,1029148161,-1087996420)+W(1,1047526016,-1108756119,1038718292,1024464693)+W(2,1026484093,1046485772,-1098019518,1071267691)+W(3,-1082674625,1032470282,-1106613565,-1113199029)+W(4,1039465846,1030900361,1048118782,1064954318)+W(5,-1084489705,-1118487613,-1112021711,-1120012731)+W(6,1008581907,-1114630284,-1106945018,-1097625455)+W(7,-1156379726,1024110641,1020048570,1036291722);WS(1058189134,1034857672); +sum1=W(0,-1171748679,-1105475825,-1097172873,-1108837708)+W(1,1038034707,-1131134898,-1113151849,-1119273967)+W(2,1031241360,1044072484,1057114388,1051374554)+W(3,-1083662360,-1099379283,-1121036423,1018101850)+W(4,-1100969760,-1094075536,-1082247827,1060030327)+W(5,1058651386,1046921459,1041721673,1036514264)+W(6,987174985,1045893176,1042860595,1031954257)+W(7,-1120638978,-1137288661,1037681908,1029972391);sum2=W(0,1003810984,1036204547,-1101998989,1041029203)+W(1,-1098215637,1044393168,-1110527635,1027560485)+W(2,1020569783,-1114489126,-1121260135,1052640914)+W(3,1059150102,-1098121773,1037147118,-1110248773)+W(4,-1128982694,-1099380876,-1101918458,1059611184)+W(5,1040381797,-1094102036,1028175839,-1113935142)+W(6,1043745048,-1104004872,-1104165612,-1121067579)+W(7,-1100369008,1032515174,-1114899975,1000033398);WS(-1107450480,1040804833); +sum1=W(0,1040192716,1022226221,1002013395,-1117682794)+W(1,1001040843,1000424795,-1120982404,1025306833)+W(2,1040473489,1047969017,1044185574,1060667554)+W(3,1057909434,1049088596,1038016429,1042416864)+W(4,-1095196747,-1098407451,-1087290490,-1089168888)+W(5,-1111951852,-1119291421,1031577591,-1112956481)+W(6,-1124855402,1020416041,-1160070647,1045737613)+W(7,-1101676720,-1103624738,-1104451167,-1115902938);sum2=W(0,1014727333,-1117243126,1029406572,1027900147)+W(1,-1112527674,-1114664521,-1111634336,-1107116047)+W(2,-1124633329,-1107065949,1041729284,-1094200388)+W(3,-1104959017,1040214496,1005029260,1049039902)+W(4,1026257754,-1111801245,-1084100906,1052541581)+W(5,1070744988,-1111707080,-1127513012,-1107038609)+W(6,-1111611661,-1136702760,-1103677442,1050798725)+W(7,-1105828213,-1111536822,-1106506739,-1140667375);WS(-1113867888,1064515135); +sum1=W(0,-1113562537,-1107046062,-1103978495,-1098739202)+W(1,-1122423580,1019693149,-1116789880,1020558520)+W(2,1048061265,1043460993,1060048584,1062873548)+W(3,-1119786749,1023528257,-1106657727,-1137576074)+W(4,1011269086,-1098944190,-1107431310,1045822761)+W(5,1025265092,-1112998912,-1142662356,-1104660585)+W(6,-1105945126,-1148623547,-1111558073,-1114838028)+W(7,-1101841139,-1117915947,-1106868487,-1122252061);sum2=W(0,-1145158406,1012385731,1016118130,1024197601)+W(1,-1112179804,-1119519161,-1127326042,-1113792718)+W(2,1022878354,-1129472106,1044961455,1049544336)+W(3,1030346877,-1131221354,-1095482557,-1093377057)+W(4,-1111624996,1015658802,1040055751,1057430996)+W(5,-1114498280,1020564842,-1112131584,1019749938)+W(6,1010204019,-1123973089,-1157676569,1022031298)+W(7,-1124728962,1023003938,-1121117277,-1141925830);WS(1051333020,-1087054195); +sum1=W(0,-1112042433,1019002067,-1115058903,1046618143)+W(1,-1107874438,-1148774132,1036768028,-1154881470)+W(2,-1104387605,-1096771599,-1102529947,-1093976551)+W(3,-1089735051,-1129150690,-1101876091,-1098135714)+W(4,1052246829,1048899277,1054136106,1044227957)+W(5,1060328029,1046377228,1045160291,1045432325)+W(6,-1113527444,-1098301717,-1095193948,1044013586)+W(7,-1107288943,1038700845,1024370318,1019966234);sum2=W(0,-1114066012,1029900262,-1114806697,-1110038644)+W(1,1036646832,-1110070018,1020625547,987867800)+W(2,1041392892,-1112610934,1041587346,1025557898)+W(3,1055783298,-1102485451,988088600,1039502616)+W(4,1044719218,1046575198,1050162797,1055420600)+W(5,-1099287148,-1100701871,1033323822,-1119304428)+W(6,-1097547793,-1095644935,-1102972970,-1095936036)+W(7,1028020818,-1113902766,-1135974783,1018696751);WS(-1120103648,-1090070191); +sum1=W(0,-1117418940,1024592611,1040968250,1049918615)+W(1,1034410595,1035134604,-1119948353,-1144523437)+W(2,1049030490,1050801054,-1111205267,-1116228463)+W(3,1050512309,-1102511675,1034763283,1039656998)+W(4,-1112262737,-1094705236,1042055990,-1085341341)+W(5,-1106227665,1036298997,-1138448657,-1110564136)+W(6,-1114427969,1032013281,-1110419822,1047944497)+W(7,-1132367051,1025392341,-1111046724,-1120201127);sum2=W(0,-1122606938,-1141997982,1027805544,-1120462650)+W(1,-1100560083,-1105726471,1025575588,-1113668318)+W(2,1046354401,1040228902,-1143835982,1061896257)+W(3,-1080731069,-1098049024,1026943708,1032253740)+W(4,-1124762815,-1102583710,1052785838,1059397472)+W(5,-1120768779,-1126645315,1011421951,-1122685018)+W(6,-1118515993,1036845124,-1106443071,1043676745)+W(7,995709275,-1128858827,-1112152255,-1127110207);WS(1060158670,1068766623); +sum1=W(0,-1116432453,-1131098839,-1099753724,1034945056)+W(1,-1122123599,1040823512,1040184285,1050332416)+W(2,1056712636,1049784895,1057908127,1044163070)+W(3,1028198895,-1122504371,-1123329903,-1096645803)+W(4,-1087151539,-1102593034,-1089291740,-1094800699)+W(5,1036808107,-1120242995,-1127465369,-1132187055)+W(6,1040295867,1033948341,1031077093,1027113355)+W(7,-1132674679,-1117547229,1040274980,-1137741501);sum2=W(0,1036379663,-1108907739,1070189048,1073213180)+W(1,1065321765,-1076673488,-1079893128,-1072585926)+W(2,-1098232449,1058983203,1016986873,1047923452)+W(3,1033582270,1031365639,1038048757,-1107019906)+W(4,-1128107780,1035811659,1040144345,-1105399966)+W(5,-1110681209,1039880527,-1116001167,1018297481)+W(6,-1120677803,-1120240179,1029686139,-1109097268)+W(7,1041308319,-1109042515,1034493417,-1131123922);WS(-1112459888,1031046963); +sum1=W(0,-1112719265,-1129483154,-1103727283,-1091575740)+W(1,-1104335643,-1155155940,-1114094348,-1105426861)+W(2,-1128634346,-1120462421,-1112785958,1056781779)+W(3,-1153409228,-1108013960,-1118230989,1027667442)+W(4,1043326546,-1103778738,1050524372,1067939282)+W(5,1048587330,-1132710977,-1109505653,1036777787)+W(6,-1115081924,-1114915140,-1104237825,-1096588493)+W(7,-1108534894,-1114726045,991235804,-1111746006);sum2=W(0,-1119086167,1013020612,-1141008560,-1108719150)+W(1,1023891147,-1145112744,1018251990,-1116478859)+W(2,1037241732,-1129818230,1029187991,-1074141953)+W(3,1019083994,-1124211508,-1122886966,1027168441)+W(4,-1114652243,1028260797,-1112264831,1072760747)+W(5,1042535682,-1131878972,1037493286,-1129254230)+W(6,-1131518324,-1115730540,1036245214,1034705438)+W(7,-1119172530,-1133917220,-1114007324,1018465006);WS(-1086783566,-1086791567); +sum1=W(0,-1115195632,-1153026662,-1134496297,-1108787789)+W(1,-1119803561,-1145121243,-1131708777,-1110064394)+W(2,-1095708330,-1093442522,-1098161001,1044632085)+W(3,-1091375169,-1107384199,-1100078210,-1104664012)+W(4,-1123676804,1018199561,1037878573,1064261167)+W(5,1057417647,1052226946,1046948682,1047330733)+W(6,1041725033,-1121101892,1034570216,-1103584185)+W(7,-1108866704,-1122033784,-1117964907,1022321300);sum2=W(0,1031515378,-1121810184,1010081392,-1119765868)+W(1,1035546479,-1106495935,1028378344,1003402623)+W(2,-1077397139,-1079753374,1044674665,1073378801)+W(3,1056367001,-1109376902,1035615024,-1118889676)+W(4,-1134939312,-1097085111,1052841311,1007836336)+W(5,1044809025,-1118570548,992033726,1010750288)+W(6,-1112896962,1035985281,-1105060263,1031953140)+W(7,1022446080,1031289566,1032016077,-1150317246);WS(-1096711324,-1080143969); +sum1=W(0,-1135181951,1025399430,1033906501,1041786535)+W(1,-1133559462,1003671004,-1123695637,-1105366874)+W(2,-1095339398,-1094144146,-1093853897,-1089314149)+W(3,-1089126233,-1110956839,-1129083412,-1113909272)+W(4,1050582337,1049483953,1045129706,1046728732)+W(5,1045641984,1051092970,1049638101,1057307443)+W(6,1026786373,-1123204644,1006467326,1031608549)+W(7,-1135165794,1017185520,996324016,1009923752);sum2=W(0,1023911567,1004932796,-1119124867,1022775023)+W(1,1011639102,1036397588,999444348,-1106309084)+W(2,-1108118447,-1134375038,1035251904,1037995724)+W(3,1050162042,1037707684,-1111062570,-1101285996)+W(4,1044892126,-1138359022,1063133445,1074655410)+W(5,1070062472,-1083132698,-1073510095,-1073687480)+W(6,-1112738860,1020475455,-1102926770,1047698054)+W(7,-1113839430,-1117927031,1017195567,1041743674);WS(-1089880270,1068594400); +sum1=W(0,-1114467040,1023170830,1036273894,-1107800974)+W(1,1029867434,-1106779367,1024593089,-1110449433)+W(2,-1104513741,-1091458130,1034367029,-1100997781)+W(3,-1095286649,1047811540,-1096228817,-1109179032)+W(4,1050219169,1042545281,1048674674,1042739212)+W(5,1053624831,1034908007,1034674708,1049808694)+W(6,-1118490053,-1120682309,1031296832,-1110241363)+W(7,1034289100,-1107012174,1021221591,-1126204757);sum2=W(0,1030004067,-1117028113,-1105887481,-1066126465)+W(1,-1104777348,-1122550707,-1130918117,1023720579)+W(2,-1133064657,-1134091777,1045929484,1081917443)+W(3,1043726141,1028310407,1016764395,-1116064873)+W(4,1024174065,-1113615539,1032698350,-1097201480)+W(5,1033613382,-1107697461,1029778305,1018371831)+W(6,-1119836251,1025775761,-1118489229,1041573100)+W(7,-1124268877,1030764051,-1116797441,1018350967);WS(1067475431,-1126058166); +sum1=W(0,-1108052732,1043040440,1048922396,-1097574342)+W(1,-1119673025,-1101774749,1019400344,1007801026)+W(2,-1097851361,-1108210069,-1084429932,1055911149)+W(3,1041902328,1035827603,-1115594513,-1107003538)+W(4,1049362324,1048929252,1054104112,1047147106)+W(5,-1085779789,1049622021,1019477630,1037086373)+W(6,1040199303,-1109622414,1041203782,-1104274751)+W(7,1047880876,-1116198608,-1107876353,1036701569);sum2=W(0,1013753738,-1113150555,1015248850,1042650722)+W(1,1040818978,-1105652199,1033430289,-1120377801)+W(2,1020731454,1046742995,1045156685,-1104352239)+W(3,-1089864705,1045331461,-1109224259,1016214593)+W(4,-1120697178,1034035253,-1094710566,-1128318417)+W(5,1045040370,1025091411,-1106535436,1019751894)+W(6,1009873360,-1099358283,1039470065,1046693145)+W(7,1036008061,1030627793,1017876415,-1132110931);WS(1060496974,-1099362699); +sum1=W(0,1054706808,1036662868,1045895019,1033303646)+W(1,1044095763,-1130190200,1035564779,1040746168)+W(2,-1109706041,1041317773,1051554925,1049334366)+W(3,1051166813,1053590462,1049285205,1055551482)+W(4,-1098091909,-1123237413,-1091928498,-1083798889)+W(5,-1095315343,-1087007295,-1097088265,-1094550458)+W(6,-1129324363,1015757258,1021341985,-1112852963)+W(7,1041804248,-1127492145,1039262630,-1114905285);sum2=W(0,-1073385920,-1084887580,-1083140914,-1081800202)+W(1,-1085954594,1037413129,-1096433065,1054210787)+W(2,1077926840,1058818874,1060159151,1074845707)+W(3,1061906872,-1084431515,-1126824848,-1087315344)+W(4,1032559783,-1089669880,1045764296,1059775011)+W(5,-1103860568,-1094536545,-1133232881,-1099186518)+W(6,-1094451238,-1121878040,-1173171215,-1120435570)+W(7,-1115590029,1053315192,-1107838893,1052978812);WS(-1078369703,1041267413); +sum1=W(0,1024386586,-1098405416,1044040033,-1098286219)+W(1,-1130684104,1045750173,-1098338270,1041584973)+W(2,1041630887,-1112635974,-1132435208,1041292515)+W(3,-1091497929,1016159377,-1139597330,-1101611546)+W(4,-1102607056,1051293608,-1094040968,1052507157)+W(5,1056853585,-1105775474,1049412460,1026100205)+W(6,1016693023,1018393854,1046099151,-1095618428)+W(7,1018959206,-1117949682,-1118540325,1040982949);sum2=W(0,1035615459,1028814353,1062855981,1052250964)+W(1,1056109526,-1106019250,1048995011,-1115640692)+W(2,-1097925659,1038714809,-1077657685,-1101970047)+W(3,-1098468896,-1114182260,-1104046747,-1130122971)+W(4,1043665288,1033337220,1051048913,-1113114333)+W(5,-1085664062,1040975429,-1109605260,1034778788)+W(6,1020457849,-1103657321,-1109823715,1058024935)+W(7,1056999181,-1105846491,1042595027,-1112374505);WS(1049151900,-1114127847); +sum1=W(0,1050216581,1000015204,-1136218178,1023136961)+W(1,-1130455775,-1133465094,-1160090192,1035991733)+W(2,1044969414,1047621718,1057314961,1055877843)+W(3,1054358666,1052966059,1045850836,1052491071)+W(4,-1106856243,-1112471205,-1091938023,-1092033343)+W(5,-1099719178,-1089783713,-1099053307,-1087984664)+W(6,-1099359923,-1148711507,-1133921207,-1112054390)+W(7,1034273823,-1122838974,1019980258,-1112322824);sum2=W(0,-1105478410,1039552519,-1131405058,-1099466970)+W(1,1049027924,-1115050596,-1129231446,1049583286)+W(2,1011113448,1050864081,-1125310098,1043215106)+W(3,1034334973,-1095883745,1036178144,-1088635155)+W(4,1068049752,-1103020148,1066695202,1074596924)+W(5,1067601936,-1084539788,-1075514015,-1074115054)+W(6,-1082501551,1059003564,-1098156272,1039344435)+W(7,-1099880092,-1107282542,-1097076855,1042018058);WS(-1081332839,-1093454830); +sum1=W(0,-1109709318,-1104916884,-1108177419,-1117212646)+W(1,-1119705461,1032417267,-1118748528,987327371)+W(2,1035356975,1037116623,-1125155242,1030327966)+W(3,1050241163,-1103907222,1046095669,1033262333)+W(4,1039420520,-1122158672,1053028347,-1104761999)+W(5,1032136206,-1115200780,-1115609017,1029855614)+W(6,-1111308088,1014687039,-1112931654,1020526050)+W(7,-1119448076,-1112611266,-1136487898,-1104533373);sum2=W(0,1013207527,-1127355075,-1103159789,1040955478)+W(1,1008876024,-1116686760,1035764738,-1154118338)+W(2,-1118344664,1028266047,1043690369,1051132935)+W(3,-1108842627,1041402295,-1105537330,-1128237045)+W(4,-1124997045,-1117884424,-1116887196,1047094008)+W(5,1057384051,-1100609336,-1098518151,-1089828796)+W(6,1036829905,1016171285,1024917624,1041601336)+W(7,-1127506713,1033786361,-1114313206,-1102385561);WS(1063446990,1030048893); +sum1=W(0,-1131562670,-1099483503,-1106193120,-1102405700)+W(1,1021119810,-1113568905,1009340592,1030255032)+W(2,1043069042,1049571969,1061428532,1053095529)+W(3,-1115069793,-1119868742,1027160065,1043118346)+W(4,-1108681470,-1106599551,-1097709592,1046689338)+W(5,1029025472,1006738196,-1120287391,-1111789333)+W(6,-1108650254,-1106453175,1008661917,-1102088711)+W(7,-1123233168,-1104754348,-1136963210,-1114502129);sum2=W(0,1012371361,-1149491589,1023756477,-1165255819)+W(1,-1111467932,1019335917,-1140694601,1010513313)+W(2,1017109065,-1115161102,1012418345,-1111308586)+W(3,1015942947,-1106016138,1015823021,1026481588)+W(4,-1110016822,-1109821790,1060485172,1031379047)+W(5,1046805034,-1114576028,1024897044,-1114618076)+W(6,-1103671135,-1097972516,-1094449842,1049769129)+W(7,999148403,1022790203,1032463998,-1146831635);WS(1060385486,1040268319); +sum1=W(0,-1115333181,-1113839600,1026945989,1041834949)+W(1,-1100015113,1010458454,-1113704543,-1110169699)+W(2,-1105770459,-1104706211,-1085502934,-1112644646)+W(3,-1102865873,-1112283012,-1108020290,-1115522389)+W(4,1048230464,-1122113023,1051932092,1065603891)+W(5,-1105250533,1054415097,-1122402466,1046973419)+W(6,1022495614,-1115044751,997701279,1044329112)+W(7,1038196649,-1113673817,-1105082025,-1115640050);sum2=W(0,-1115664423,-1122287706,1044568139,-1099350461)+W(1,-1102715015,1042022920,1031291077,1032474264)+W(2,1041813775,1041645390,-1087138046,1067461852)+W(3,-1116572542,-1109622665,-1113357449,-1110133469)+W(4,-1142717933,-1094011677,-1124627987,1027339570)+W(5,1045144111,1054026149,-1122353792,1047364150)+W(6,-1120925434,-1119842210,-1120985148,-1113918825)+W(7,-1100833175,-1101147879,-1112018489,-1109170005);WS(1049043868,1050086952); +sum1=W(0,-1127858130,1025810768,1034666762,989092984)+W(1,-1115481017,-1119959429,1012364567,-1097661520)+W(2,-1091279607,-1101354119,-1089232423,-1092016019)+W(3,-1089729669,-1104525366,-1121438163,-1160888088)+W(4,1054362490,1044465651,1050465752,1058690160)+W(5,1053482909,1051092259,1019953121,1051219071)+W(6,1028884238,1022883995,1032068165,1005443958)+W(7,1007092039,-1149438996,-1137072337,1017307814);sum2=W(0,1030282550,1012065197,1049708534,-1101566471)+W(1,1043525707,1038111746,1040589253,-1106531005)+W(2,-1099759289,1050936278,1018991152,1050588571)+W(3,-1112383125,-1121285468,1039884984,-1113841779)+W(4,1070065566,1068820850,1068572253,1075164582)+W(5,1046261639,1053555382,1040055978,1058828770)+W(6,-1078832473,-1076346523,-1075628240,-1072955990)+W(7,-1093459475,-1088795804,-1099780818,-1090423367);WS(-1083655502,1074535575); +sum1=W(0,973651072,1028862937,1029517469,-1111330742)+W(1,1043404639,-1105397947,-1129726574,-1099887737)+W(2,-1100106921,-1096173461,-1088250868,-1101351113)+W(3,-1092528244,1034877328,-1113904430,-1118418050)+W(4,1049212555,1052529147,1057957824,1060855844)+W(5,1050267538,-1104065896,1041335934,1047916353)+W(6,-1122472503,996549482,-1111380529,-1125410415)+W(7,-1109626381,-1122247818,-1108333759,1037233742);sum2=W(0,1037582341,1032149251,-1135487115,-1107247151)+W(1,1053968825,-1096732175,1034930229,-1094249638)+W(2,-1116649305,-1112916551,1044443302,-1117703407)+W(3,1049963138,1042101117,1046616621,-1127010106)+W(4,-1107051108,1041643977,1030763641,1053360182)+W(5,-1087331905,-1089009482,-1110671517,1059951262)+W(6,1040538112,-1112067691,1036263743,-1115814520)+W(7,1035849297,-1104153316,-1104877620,-1116847106);WS(-1132786560,1056578758); +sum1=W(0,1031072232,1019453021,-1112153353,-1127115205)+W(1,-1153314582,-1105591705,986346381,1024604121)+W(2,1043718831,1050053971,1057505465,1049535379)+W(3,1052394474,1045418390,1044283028,1048806335)+W(4,-1098888378,-1104586611,-1090760605,-1081773448)+W(5,-1106021324,-1120283669,1036365944,-1103287167)+W(6,-1123786893,1030360908,-1123598824,1035671447)+W(7,1044649456,-1105554848,1033186457,-1108912601);sum2=W(0,1040658557,-1106354313,1027144364,-1103628435)+W(1,-1123462592,-1130705048,-1126068784,1016031184)+W(2,1011638864,1020064744,1049840877,1050147177)+W(3,-1117174472,-1105120318,-1113970774,-1135769248)+W(4,1041865287,-1103147627,1026998340,1053587315)+W(5,-1118058864,1036775410,-1104140895,1030416564)+W(6,-1109113498,1033931950,-1120927100,-1102211113)+W(7,1033328738,-1101351534,1028877580,-1112076066);WS(1062711758,-1109562142); +sum1=W(0,-1107075140,-1125545776,-1121788380,-1112684886)+W(1,-1128625782,-1102890883,-1129119788,-1102110160)+W(2,-1100622401,-1104747337,-1103229831,-1083301774)+W(3,1050510715,-1097610180,-1109077454,1030737729)+W(4,1053288051,1049612355,1059638178,1048337697)+W(5,1052952654,1051307580,1041285742,1049115768)+W(6,1017596397,1007433175,-1120034657,-1098025711)+W(7,-1112854653,-1108240645,1022176121,1020667959);sum2=W(0,1022257834,1033804876,1033963400,-1113268759)+W(1,-1123922685,1029999681,1015463858,-1125618402)+W(2,977550902,-1105772859,-1098748483,1063293804)+W(3,-1090033704,1051039483,-1104977553,1022914778)+W(4,-1113927342,1042844173,-1096777339,1059312088)+W(5,-1134320563,1037687330,1024487701,1004875175)+W(6,1036504102,-1107093105,1028160469,-1089861840)+W(7,-1101525036,1017532722,-1122996995,-1116068477);WS(1046002488,-1083997249); +sum1=W(0,-1116203964,1044431961,1041235242,1046371486)+W(1,-1106267745,-1117705943,-1122870401,-1109240562)+W(2,-1099156844,1028498222,-1096363997,-1079124621)+W(3,-1088685662,-1103556299,999993136,-1106798659)+W(4,1050076828,1049400252,1050263757,1020370202)+W(5,1048790666,1053355933,1034829570,1037276039)+W(6,1025075217,1035032656,1032516798,1050189128)+W(7,1042510329,1039724554,1027729159,1037249299);sum2=W(0,-1094982381,1024745423,-1097113645,1017043870)+W(1,1052555320,-1107563793,1049262968,-1118735987)+W(2,1041875660,-1091311273,1042706326,-1148119319)+W(3,-1098101314,1010824956,-1094774489,1030619863)+W(4,1017839086,1044409386,974632891,1061393923)+W(5,1043955676,-1098402228,1042935118,-1094515595)+W(6,1045890174,-1107764806,1048260200,-1118443235)+W(7,-1097368628,1041238578,-1116185663,1042214090);WS(-1083255246,-1075588436); +sum1=W(0,-1154522904,-1106371438,-1105464695,1036086422)+W(1,1023783355,-1127243930,1030176790,1031412139)+W(2,1026375684,1036249778,1056687627,-1097055709)+W(3,-1088556578,-1108055408,-1105944807,-1123388097)+W(4,-1099839750,-1113752075,-1092436626,1050924256)+W(5,1056650964,1045926824,1039385437,1041066449)+W(6,1037990411,-1119606102,1043935324,1036476796)+W(7,-1111337285,-1110940389,-1124332025,1021333175);sum2=W(0,-1117330831,1023708058,-1133288218,-1122435213)+W(1,-1139180683,1020252429,1025188082,-1109968059)+W(2,1032531181,-1114369361,1017487862,1047518334)+W(3,-1122916014,1027012545,-1103557501,1046855474)+W(4,1043756688,1031926890,-1104593512,1043258354)+W(5,-1096895795,1049767697,1019544307,-1112657711)+W(6,1060766869,1067300065,-1105945514,-1075696003)+W(7,-1102393264,-1106946489,1020047431,-1113285900);WS(1056055196,1023945849); +sum1=W(0,-1104545849,-1139517988,-1101013315,-1136100212)+W(1,-1148373856,1013350648,-1120654743,-1108930702)+W(2,1036175954,-1138851412,1048468083,-1097789539)+W(3,-1096999890,-1097071058,995622088,-1128233700)+W(4,1032040419,1009002268,1040659763,1059870683)+W(5,1039368714,1053644410,-1122818538,1033002810)+W(6,-1111539988,1026875367,-1104005681,-1112873620)+W(7,-1135793772,-1132670698,1028030253,-1133516850);sum2=W(0,1033182461,-1135790885,1036058972,-1145806187)+W(1,1026470367,-1125994579,-1123856921,-1152817846)+W(2,-1110992702,1041801313,-1115959119,-1083556559)+W(3,1047402951,1026458945,1021989349,1029289545)+W(4,1011638125,976542168,-1106760241,-1068720208)+W(5,1080067579,1043021822,-1118809257,1027196491)+W(6,-1116812221,-1135785781,1013579453,1034110873)+W(7,1048786168,-1124564059,-1115658442,-1110636256);WS(1047050040,1036867972); +sum1=W(0,1031952202,1040033213,1049413776,1052329098)+W(1,-1134253939,1023712847,-1129317744,1023414180)+W(2,1041031945,1050476745,1016870010,1054273441)+W(3,1041748879,1035493153,1041656495,1041394937)+W(4,-1098508279,-1097704487,-1091275871,-1087382286)+W(5,-1095309386,-1117526273,-1112254893,-1108492595)+W(6,-1117663192,1033331580,1012948685,1043041286)+W(7,-1131302504,-1125396951,-1153578470,-1112644847);sum2=W(0,-1120609508,-1098653081,-1074671298,-1081276780)+W(1,-1097107702,-1110118090,-1137118351,-1119823807)+W(2,-1138324119,1042859622,1072071026,1068070176)+W(3,1044485226,1040658983,-1118978815,1035453187)+W(4,-1110367912,1038385587,1026263792,-1107049493)+W(5,1024907208,-1122488627,1038809437,-1111098449)+W(6,1021280635,1026624912,1026288466,-1122098825)+W(7,1040255596,-1152233050,-1126727249,1006813455);WS(1047287096,1059538103); +sum1=W(0,1030804480,-1111595219,-1123153834,-1098057279)+W(1,1007980582,1018775223,1036089754,1030691489)+W(2,1034749929,1051408038,1049213285,1057344539)+W(3,1048793645,-1106759404,-1115115061,1033654600)+W(4,-1102474905,-1094490621,-1099609086,1048597242)+W(5,-1094890059,1046324795,1003815995,-1126686757)+W(6,1013951379,1039425378,-1112788128,-1098419769)+W(7,-1118093753,-1108341356,-1120388747,-1135294247);sum2=W(0,-1112864979,1034721747,-1108077379,1023366533)+W(1,1021246669,1032508120,-1113986367,-1153257254)+W(2,1024004698,-1109416755,988806988,1058238498)+W(3,-1115279539,1041332549,1033457886,1018109285)+W(4,1034996841,1041661735,1041642045,1008174217)+W(5,-1122858630,-1089151778,-1130797677,-1111548255)+W(6,1004307827,-1116757818,1037366938,-1107547239)+W(7,-1108868659,-1128614293,-1130732717,-1122125438);WS(1066216871,-1084582294); +sum1=W(0,1009745022,1023325836,1034246149,-1103455511)+W(1,1025953385,-1105242559,988118663,-1107601837)+W(2,-1095963722,-1096473834,-1087129751,-1142570129)+W(3,-1094684497,-1107829831,-1107520037,-1117719279)+W(4,1050775177,1046303345,1057767679,1064400323)+W(5,1038452388,992534739,1025316967,1044853309)+W(6,1027534757,-1126933960,-1118146623,-1103828265)+W(7,1018950609,1030437560,1020674901,1033139589);sum2=W(0,-1127013105,1018526115,-1123587641,1052346460)+W(1,-1098654594,1029804743,-1118240305,1030491706)+W(2,1031626404,-1117975133,1062148372,1074624908)+W(3,-1090512380,-1070854231,-1095518794,1041467716)+W(4,1029958550,-1113082476,1035325186,-1130733653)+W(5,1046581721,-1113725416,1031776819,-1115594754)+W(6,1017794797,1023300847,-1145491637,1041942663)+W(7,-1113152926,-1139181075,-1120299385,-1142763637);WS(1033725552,-1082653885); +sum1=W(0,1027658456,1033791775,1038169633,-1130834725)+W(1,-1105755912,-1107114253,-1106878767,-1102176852)+W(2,-1091894661,-1094613753,-1085886368,-1094605577)+W(3,1049096200,1038006563,1040399888,1038046228)+W(4,1054730080,1052727904,1060322284,1054915405)+W(5,-1115316932,-1113871235,-1114082704,-1098681477)+W(6,1024810077,1020875129,-1114253244,1021660859)+W(7,1010914050,1032412472,1016596422,1044096992);sum2=W(0,-1126607908,-1111819446,1032709615,-1119610542)+W(1,1027594385,1029384695,-1115269200,1032209203)+W(2,-1109006144,1050929158,1025316173,-1107176811)+W(3,-1123863107,-1122531221,1026796828,-1115616555)+W(4,-1093467963,1063076656,1048889614,-1090320472)+W(5,1046933317,1051206364,997945380,-1109796884)+W(6,1059727060,1073053378,1073749745,1058093447)+W(7,-1079533534,-1073154062,-1075936158,-1088004581);WS(-1087442510,1045166814); +sum1=W(0,-1106921670,1032907600,-1111070674,1047421629)+W(1,-1094092352,1031075349,-1136240762,-1129052086)+W(2,1032009478,-1127325529,-1106321881,-1085655355)+W(3,1057239638,-1098381173,-1128650952,-1107389381)+W(4,1041337656,-1100890040,1060092296,1044767811)+W(5,1040377247,1037296628,-1131454723,1037463686)+W(6,-1110338367,1042108264,-1105899594,1027442111)+W(7,-1105935775,1037469097,1027139781,991481919);sum2=W(0,-1119426781,-1109786529,1041819143,1018220925)+W(1,-1103055916,-1124599508,986571056,1024618671)+W(2,1040351141,1043540747,-1105926532,-1133247980)+W(3,-1096724541,1038612076,1019567362,-1143357456)+W(4,-1104019881,-1106797782,-1098594115,1066013053)+W(5,-1136157126,-1097021086,1025702119,1008181894)+W(6,1015410156,1043466418,1048709183,-1092013542)+W(7,-1109288787,1027934232,-1140871148,1027080058);WS(1059279054,1041683061); +sum1=W(0,1028823114,1033060856,-1136683218,1041097809)+W(1,-1108712682,-1099515041,-1114499693,-1105525449)+W(2,-1096417644,-1095251776,-1096755466,-1095420880)+W(3,-1087904547,-1117180600,-1113115866,-1121084634)+W(4,1041071884,1051348966,-1106154521,1062896338)+W(5,1057053635,1050313119,1041134484,1043053335)+W(6,1040139175,-1133443258,1027763154,1037083176)+W(7,-1109247178,-1169250436,1007514196,1031868218);sum2=W(0,-1104031080,-1113246189,-1124792744,-1107688308)+W(1,-1084040655,-1089958554,-1098618924,-1098033920)+W(2,1039900182,1044206765,1043086617,1057123143)+W(3,1066602722,1037219700,-1111210157,1036938090)+W(4,1028023758,-1122555834,1041018096,-1100462314)+W(5,-1123151815,1032289221,1028867168,-1143651414)+W(6,-1125301559,1027754708,-1129842792,1022410763)+W(7,1034604384,1029558442,-1139711519,-1122704124);WS(-1093886876,-1092780259); +sum1=W(0,1031521076,1040859655,-1123954783,-1115369432)+W(1,1027325374,-1130075936,1017430099,1005655277)+W(2,1034696971,1027092583,1057011018,1055452141)+W(3,1055461116,1043845385,1041326696,1045628689)+W(4,-1098366291,-1107551117,-1084481759,-1086775792)+W(5,1050583573,-1098824964,1032795870,-1110858724)+W(6,991412379,1023411481,1037665034,1037775165)+W(7,-1102735091,-1106471523,-1113156096,-1108701199);sum2=W(0,-1099549152,-1101982776,1039636960,1065032135)+W(1,1046191187,-1112740199,-1120755726,-1138571865)+W(2,-1115620025,-1110046443,1067650764,-1096892917)+W(3,-1084058149,-1089814493,1022618460,-1106519005)+W(4,1042476476,-1138118945,1056117723,-1084935200)+W(5,1043334912,-1116550886,1030169574,-1123579094)+W(6,-1128057356,-1104607948,-1129519972,1039009532)+W(7,1042222420,-1114781123,1023299940,1029490149);WS(-1103384376,1050555318); +sum1=W(0,990997212,-1104723373,-1102560870,-1110645588)+W(1,-1114771100,1006886950,1011892746,1041403778)+W(2,1056616014,1049493908,1060440249,1063537686)+W(3,1049398171,-1123261404,1042753094,1041297647)+W(4,-1113359817,-1101985253,-1095607555,-1091747296)+W(5,-1098384586,-1094355067,-1098733239,-1099641616)+W(6,-1104278389,-1112669305,-1117918862,-1124628967)+W(7,-1120789735,1020875660,1029891897,-1143354303);sum2=W(0,-1097904627,-1102268820,-1101696600,-1102083058)+W(1,-1100977750,1022682138,-1105396681,1035758392)+W(2,1056762738,998260703,1049156882,1055125136)+W(3,1040009482,-1099421122,-1114104451,-1112582051)+W(4,1033294591,-1102966386,1040206209,1048772561)+W(5,1004029807,1040485303,-1118051402,1040482786)+W(6,-1113205081,-1105114179,1028552759,1023069474)+W(7,-1108173489,1040370279,-1109779069,-1135668672);WS(1042369848,-1095650924); +sum1=W(0,1032801852,-1124780413,-1142443027,1031124370)+W(1,1024489633,1037041722,-1157391942,1048283534)+W(2,1060985291,1056066249,1059062488,1046815795)+W(3,1051554984,1026983110,1037131073,1028118439)+W(4,-1088222536,-1093287088,-1089766974,-1084610255)+W(5,-1096293908,1035048291,-1113190096,-1107690581)+W(6,-1154392525,1017158008,1041310978,-1111535759)+W(7,-1118760812,-1118618480,1032589425,-1101944856);sum2=W(0,1056251107,-1118435725,-1111043713,-1090037466)+W(1,-1129656805,-1093926860,1052716525,-1083761792)+W(2,-1084477192,1041984407,-1093515412,1073185178)+W(3,1051712939,1053076395,-1096065312,1066458198)+W(4,-1077785336,-1086371528,-1093010832,1074151927)+W(5,1054463958,-1094829660,-1090812268,1063500158)+W(6,1053829707,-1113013425,1046411943,-1090694669)+W(7,-1095714333,-1103046632,1035367276,-1087950464);WS(-1081634407,-1072784825); +sum1=W(0,-1102740818,-1115394775,-1101924733,-1100839185)+W(1,-1123768914,-1140848016,-1118249725,-1116477425)+W(2,1024862651,1046040367,-1109613465,-1115978107)+W(3,1049722038,-1098661743,-1138059466,1025943000)+W(4,1056867014,1027952685,1058509811,1050187219)+W(5,-1098437541,1033615035,-1143195264,-1132571500)+W(6,1016622683,-1112643478,-1096240139,-1101581667)+W(7,1008822020,1023463264,-1116668435,1036595961);sum2=W(0,-1139809909,-1126178115,1032546581,-1097752958)+W(1,1042272246,-1118367610,-1138081685,1017774855)+W(2,1046126277,-1111752353,1034216546,1042101074)+W(3,1043290796,-1112722386,1034532478,1030093406)+W(4,-1119940899,1055245806,-1088954301,1058677046)+W(5,-1087007443,1048637958,-1140548675,1029648824)+W(6,1040903120,-1104413152,1019748625,-1089277711)+W(7,1028591970,-1139620757,1017306737,1033828758);WS(1050645916,1033550915); +sum1=W(0,-1118556120,-1108262319,1043230361,-1094947334)+W(1,-1103841584,1018079143,1032598742,1008731683)+W(2,-1107219907,1043545243,-1086762442,-1104041435)+W(3,1058293794,-1097977901,1041130248,-1123331655)+W(4,1039060494,-1145250020,1059123936,1057758321)+W(5,-1096913490,1039599795,-1151122424,-1123961290)+W(6,1030703933,-1110184190,-1110311564,-1100512367)+W(7,1044416908,-1132472896,-1147952664,1022228292);sum2=W(0,1040267615,1048409433,-1107165984,-1086251247)+W(1,-1113957324,-1107976602,-1122078587,-1111525785)+W(2,-1112791644,-1110540665,-1088877638,1053330884)+W(3,1057377190,1057673067,1024512949,1042772014)+W(4,1010515766,1032365064,-1090038325,1049266570)+W(5,1028890653,-1103454662,1041725883,-1143554104)+W(6,1024308395,1041630361,1040244783,1037513285)+W(7,-1098504745,1039941233,-1103661415,1024552651);WS(1051978908,-1102077462); +sum1=W(0,-1132165009,-1117187439,-1108837850,1037183202)+W(1,1028473682,1045655273,1025240990,1033734537)+W(2,1045761591,1051430047,1060286099,1046972447)+W(3,-1128782822,1028047735,-1178179968,1035331372)+W(4,1013540534,-1096198150,-1130717861,-1085387922)+W(5,-1105434962,-1101497054,-1110960744,-1102517015)+W(6,-1106078467,1014010165,-1121999817,1030141582)+W(7,1008925446,1018887490,-1122721428,1026996307);sum2=W(0,1023072493,-1125531833,1030396885,-1118880502)+W(1,1027419877,-1161271853,1019485964,1028708277)+W(2,974611657,1047662948,1035351326,-1090109833)+W(3,-1110942359,1033315833,1010290822,-1156901930)+W(4,-1101792417,1051899312,1080526024,-1069022098)+W(5,-1087739606,1036440530,-1124554651,-1114394737)+W(6,-1112121991,1037288067,1042102238,-1113214479)+W(7,1032127295,-1143368203,-1132377096,-1141169667);WS(1058455886,-1096183470); +sum1=W(0,-1105360672,-1112035684,-1105059667,-1103063975)+W(1,-1112638549,-1104182327,-1106250503,-1103319623)+W(2,-1112611850,1032735242,1048808633,1042817013)+W(3,1058906409,1047248804,1047193699,1057710235)+W(4,1060616064,1033545283,1051085625,-1097442806)+W(5,-1102188695,-1103229812,-1106970890,-1109193562)+W(6,-1104075433,-1111940643,-1115570744,-1097216429)+W(7,-1107200030,-1108265532,-1119499692,-1106901731);sum2=W(0,-1135393651,-1131009665,1004138181,-1111055824)+W(1,-1134829555,-1127256265,-1113946573,1010148467)+W(2,-1114274101,1016197705,-1143366053,1051632163)+W(3,-1111579981,1038147066,1025185617,-1137859715)+W(4,-1117767149,-1130986601,1026922589,1048764370)+W(5,1036257166,-1112945554,-1143942149,-1123068365)+W(6,-1110403581,-1136444051,-1112183743,-1121253595)+W(7,1009689523,989872074,-1123668797,-1123716033);WS(-1103618872,1023577831); +sum1=W(0,1041702149,1032268701,1021026046,1032012647)+W(1,1023662430,-1111766616,-1112590149,1042231991)+W(2,1057806109,997904496,1057675340,-1129702414)+W(3,1056283152,1039716321,1049875952,1054291708)+W(4,-1091063799,-1106010126,-1090884608,-1094077941)+W(5,-1094732237,-1100869456,-1105996279,-1098425069)+W(6,1022049043,-1102660926,1046995709,-1100395542)+W(7,1050214494,-1096243374,1047647816,-1100607928);sum2=W(0,1073849383,1069429154,1070121938,1066905653)+W(1,-1087755842,-1080359597,-1073496568,-1070245916)+W(2,-1072987051,-1080077361,-1076996297,-1086754234)+W(3,1060194671,1067521081,1074652354,1075883836)+W(4,1040644897,-1098556311,-1124122091,-1095882058)+W(5,-1096747545,1048551041,-1092793409,1058695504)+W(6,1022236877,-1128073567,-1118780260,1027638421)+W(7,1012182550,-1129108935,-1130588931,1001812541);WS(1010873216,-1100304815); +sum1=W(0,-1154187044,1028741017,-1114247598,-1099084427)+W(1,-1104966895,994968800,-1113228468,1028263947)+W(2,1045945805,1051026373,1058185854,1059904750)+W(3,1052860588,1038231664,1040557287,1032103905)+W(4,-1102222630,-1103217414,-1097780567,-1091550752)+W(5,-1108718914,-1110664976,1017403508,1017865354)+W(6,-1113759340,1022415534,-1105383733,-1111624796)+W(7,-1114326870,-1110217221,-1108875519,-1109350878);sum2=W(0,-1114639192,1039210963,1047528380,-1099502544)+W(1,1041344628,-1108972702,1021595805,-1116883371)+W(2,-1100331344,1069298433,1080352854,-1067747068)+W(3,-1080996124,1032407437,-1121090437,1016604711)+W(4,1035901690,1043940791,1030733380,-1084572959)+W(5,1003800555,1045939813,-1121287047,-1122259179)+W(6,1012858414,-1126620651,1036529177,-1099630936)+W(7,1043527822,-1119860547,-1145664907,1034105585);WS(1044302648,-1104457270); +sum1=W(0,-1115179413,-1101763748,999269803,-1106420033)+W(1,1041707045,-1128885581,-1110751840,1029110244)+W(2,1029190781,1045938783,1034810490,1055724168)+W(3,1053359959,-1100033022,1037908026,1035419021)+W(4,-1108944696,-1102720380,1038235218,-1101615303)+W(5,-1094303566,1043259278,1011056201,-1123807773)+W(6,-1115207128,1013266237,1025157307,-1105407492)+W(7,1045691477,-1113033137,-1114066571,-1113282394);sum2=W(0,-1117238549,-1115295266,1033754662,-1095438097)+W(1,-1106855439,1011060498,-1117460606,1032653312)+W(2,-1109414288,-1128441429,-1104877135,1053172955)+W(3,1056926069,-1108715476,1036225840,-1114450934)+W(4,-1115125848,-1121954754,1018153798,1038786210)+W(5,-1104082080,1043675119,1008366234,1018894269)+W(6,1023475415,1024122972,1002646200,-1106263750)+W(7,1034246226,1025499367,-1107090094,1013321052);WS(1068015911,1043072951); +sum1=W(0,-1127841379,1035792844,-1155603908,1018341976)+W(1,-1111053022,1044403491,-1112313859,1005208661)+W(2,-1101991257,-1091973141,-1110119406,-1095315357)+W(3,-1107228151,-1111437840,-1097295811,-1103670736)+W(4,1041159238,1040826438,1052691071,1053842800)+W(5,1042506601,1050221764,1030249017,1046985745)+W(6,1035382295,-1098419575,1043898844,1030324599)+W(7,-1108241413,1043481954,-1098652336,1032196534);sum2=W(0,-1134315530,1033824390,-1112867968,1039862799)+W(1,1005143468,-1114969920,1030354102,-1131720457)+W(2,-1125722365,1019923991,1039464885,-1087456726)+W(3,-1119378177,1042059959,-1113780490,1009971850)+W(4,-1135384490,998580556,-1093291922,-1061395777)+W(5,-1106942114,-1121281813,1034179020,1032010553)+W(6,-1118933131,1027495017,1045077367,1087627027)+W(7,1034637079,-1148550692,-1118611519,-1117397469);WS(1060186318,-1131602669); +sum1=W(0,1022422466,-1102049002,1050775273,-1097141731)+W(1,1056872997,-1099566807,1025667942,1032894309)+W(2,1050205114,1052887138,1052456073,1049038746)+W(3,1040490435,1039690728,1043457059,1045856748)+W(4,-1099402401,-1102238785,-1100510367,-1088759247)+W(5,-1122526498,-1099089908,-1102859210,-1106963501)+W(6,-1112848707,-1106285089,1039607513,-1098786589)+W(7,1048305743,-1104192622,1032266998,-1118572779);sum2=W(0,989650422,-1108234271,-1120122674,1045260201)+W(1,-1114112879,1037831837,-1117501250,1024132690)+W(2,-1120410947,1050158699,-1092804082,1024838498)+W(3,-1125280065,-1119936776,-1114421818,1035095434)+W(4,1047633630,1066272871,1075424781,1061734347)+W(5,-1091697647,1003481288,1011848513,-1106020023)+W(6,-1081060940,-1074101109,-1079387458,1050344942)+W(7,1043540897,1039609275,-1131708367,1026462111);WS(1057810382,986287880); +sum1=W(0,-1105255365,1027767677,1037147968,1038550632)+W(1,-1136315263,1035749561,-1115075413,1028257967)+W(2,-1110142276,-1106138450,-1092238936,-1090210593)+W(3,-1089134184,-1093055129,-1097497096,-1089420006)+W(4,1041191503,1031406779,1027980992,1049547413)+W(5,1052451129,1057536820,1050343212,1058108487)+W(6,1050176972,-1130243957,1041310918,1041377527)+W(7,-1115128119,1033537239,-1127231554,1031965752);sum2=W(0,-1099824579,-1113793286,1053512844,-1112943238)+W(1,1041834894,-1099992002,-1120789532,1024916046)+W(2,1070708271,-1104040400,-1091831853,-1072548459)+W(3,-1093778092,1057576575,1064181862,1051972140)+W(4,1075074245,-1084124078,-1082668198,-1072503695)+W(5,1056090411,1053907302,1058602971,1054786345)+W(6,-1097074436,1023561426,1039380165,1009216489)+W(7,1043969626,-1107563771,1034348623,-1106961801);WS(-1075707047,1038147646); +sum1=W(0,1038492938,-1115961531,1036899040,1041066756)+W(1,1038870159,1045702796,1022987667,1044017707)+W(2,1050722763,1026800423,1055626176,1052178217)+W(3,1027667391,1053246416,-1100305296,1049962981)+W(4,-1095596015,-1103730686,-1091210886,-1090286882)+W(5,-1094135001,-1095582752,-1109653838,-1093296229)+W(6,1040870942,-1122935577,1047700685,1036539085)+W(7,-1102625947,1048523811,-1105859960,-1117734303);sum2=W(0,-1145353723,-1113260796,-1112198364,-1113367096)+W(1,1007958125,1047146251,-1122974002,1021064313)+W(2,1027969677,-1095928859,1052169305,1052353113)+W(3,-1129450520,1051473061,-1091037095,1050393555)+W(4,-1115030411,1031463199,-1108227013,1051016428)+W(5,1041462653,1045242344,1032341221,1020102815)+W(6,1052090154,-1110261785,1041877601,-1099630700)+W(7,-1087173862,-1102681887,-1095485390,-1111896409);WS(-1102302520,1068562064); +sum1=W(0,-1130894152,1029216267,1029150351,1029804895)+W(1,-1108054071,1046304488,-1107326720,1018120580)+W(2,-1101486038,-1094978851,-1104755260,-1093484995)+W(3,-1110271975,-1106599349,-1102131284,-1102274525)+W(4,1044130034,1029251017,1053252560,1050941559)+W(5,1036880709,1050863202,-1128083416,1047248574)+W(6,1031789673,-1102217970,1042516209,1040658618)+W(7,-1113036417,1041743615,-1102226940,1032422999);sum2=W(0,1019111797,-1123809812,1006739898,1041109085)+W(1,-1126211453,1028972357,-1118372569,1025713585)+W(2,1022527979,-1111065998,1031759809,-1095097056)+W(3,1034613952,-1107360163,1033659253,-1118642675)+W(4,-1131519898,1023737355,1045357020,1082939698)+W(5,1027342607,1033832936,-1112248823,-1118824157)+W(6,1029130971,-1117143513,-1106220344,-1064938697)+W(7,-1122955245,-1112280546,1032152906,1028082979);WS(1066566439,-1125753148); +sum1=W(0,1020091828,1041951168,-1130301450,1052053147)+W(1,-1131231944,1033588155,1009411772,-1116682291)+W(2,-1096367972,-1098758994,-1093467737,-1089881409)+W(3,-1092544881,-1098181717,-1110070786,-1096392077)+W(4,1038767583,1048997640,-1130818632,1064063659)+W(5,-1116991019,1042770882,1046860728,1027361773)+W(6,1030663671,1025331919,-1108818909,1044746920)+W(7,1022962726,1041997189,1018371147,1038578846);sum2=W(0,-1105507764,-1149004498,-1098298748,-1115729482)+W(1,-1094576030,-1111478010,-1129010369,1018600957)+W(2,1019815533,1047279899,-1106660204,1058550934)+W(3,1031191852,1032716298,-1117054989,1019851909)+W(4,-1136431769,-1121679526,-1096656341,1058580319)+W(5,-1098228632,1041490224,1047791827,-1106522387)+W(6,1024962860,1041000955,-1107413740,1027135608)+W(7,-1101441076,1035067556,-1123460834,1005788722);WS(1050996380,1066787661); +sum1=W(0,1042843177,-1120310187,1033453959,-1107450543)+W(1,1017862620,-1134072575,1025308393,1033769739)+W(2,-1109518091,1043911830,1059519229,1061971625)+W(3,1051823058,1046601317,1042112788,1046863997)+W(4,-1098674409,-1097687209,-1096304487,-1098011863)+W(5,-1095767039,-1095249970,-1098354285,-1098417599)+W(6,-1112832565,-1133582755,-1116528532,-1105396874)+W(7,1033796902,999923683,1030029487,-1109771063);sum2=W(0,-1103321099,1033376724,-1108916223,1033194077)+W(1,1038197771,1032881798,1017830932,-1138730935)+W(2,-1087654445,-1114493691,1049058628,1065240604)+W(3,-1128335788,-1094150295,1006224046,-1112103411)+W(4,-1098379129,-1096458683,1036368268,1054396447)+W(5,1049730119,-1108472207,1031462702,-1102017203)+W(6,1013739975,1015354012,-1121134774,-1115257551)+W(7,-1129699908,1021079748,-1117224382,1038189385);WS(1027314912,-1081149641); +sum1=W(0,-1109480125,-1114947760,-1101195017,-1132100201)+W(1,-1103759537,1044342469,-1111893319,1051194426)+W(2,1051429188,1053252314,1058130398,1061393767)+W(3,1057940398,-1104522586,1055491172,-1120202825)+W(4,-1118844062,-1094077252,-1113091794,-1085308129)+W(5,-1102037735,-1094497965,-1103334896,-1094870250)+W(6,-1097611416,1034118735,-1104617542,1035982720)+W(7,-1114189097,1036294793,-1128796810,1030785028);sum2=W(0,-1131039707,1024995350,-1104486127,1015537291)+W(1,1053996441,-1103676904,1047124046,-1111129691)+W(2,-1098833779,-1124760267,-1078713050,-1065942779)+W(3,1047686732,1084085461,1064521940,-1093915430)+W(4,-1147567565,1057070390,-1091843304,-1081156610)+W(5,-1094140189,1060423478,1046849692,1018309905)+W(6,1035790053,995065627,1037354874,-1154356731)+W(7,-1107145709,1026796886,-1108476011,1038591472);WS(-1081542375,1044780323); +sum1=W(0,1026864081,-1100303790,1048337215,-1098110473)+W(1,1054474587,-1099969099,1023999910,1028627178)+W(2,1046719985,1054288460,1054459103,1048901488)+W(3,1041639871,1034589376,1043694031,1046235480)+W(4,-1098857847,-1108679899,-1098101851,-1093175556)+W(5,-1104037973,-1107626335,-1101510966,-1106600025)+W(6,-1114219435,-1104586877,1041408644,-1098306531)+W(7,1046672715,-1104199322,1022681657,-1126646775);sum2=W(0,1017985090,1027847194,1036519222,-1113167123)+W(1,1037009826,-1113380621,1031131596,-1115360802)+W(2,1024212320,-1098721130,1050387030,-1094712479)+W(3,-1100822056,1028269032,1009055356,-1113841920)+W(4,-1099849981,-1081468176,-1070464929,-1096550174)+W(5,1057690620,1042714784,-1145638655,1046010973)+W(6,1067245211,1074345814,1070597407,-1088417301)+W(7,-1104880956,-1102737214,1000105719,-1112342255);WS(1059294542,1020616832); +sum1=W(0,-1157534552,1039080142,-1097783100,1031217968)+W(1,-1164216296,-1138897989,1026686634,-1105498094)+W(2,-1096856701,1044861738,-1089052876,-1085780263)+W(3,1044573672,-1097342660,1041475528,-1105558033)+W(4,1050532499,1041652423,1057029426,1047119538)+W(5,1039715347,1043073721,1040308239,1048391538)+W(6,-1112831597,1046540791,-1098369827,1040272239)+W(7,1024931118,-1103025619,1045404192,-1114523696);sum2=W(0,-1106291706,1001372950,-1099590495,-1093748925)+W(1,1015225205,-1105937891,-1112612361,995169980)+W(2,1040318024,-1105705183,1045484852,1061316313)+W(3,-1098311584,1041085521,1028378294,1035732349)+W(4,-1114208076,-1116263519,-1108179199,1049891427)+W(5,1040668388,-1111581107,-1115787941,-1113959318)+W(6,-1142193319,-1145917455,1036599633,-1108356360)+W(7,-1148092276,1032743264,1021281994,1024794158);WS(1059376718,-1137270291); +sum1=W(0,-1118257199,1037392427,-1097794403,1035766677)+W(1,1026067385,1032186693,-1108679762,-1139304576)+W(2,1043258576,-1106073464,1054680411,-1099046488)+W(3,-1088020070,1041392887,-1113652045,-1111666975)+W(4,-1114290826,-1124279079,-1115190716,1052189312)+W(5,1054691490,-1097245116,1025610423,-1123561026)+W(6,-1112002778,1022160871,1045843716,1011458515)+W(7,-1110958220,1046761570,-1117145658,1032305501);sum2=W(0,1025244035,-1122852568,-1092220395,1038019467)+W(1,1048072683,-1113553750,-1119930901,-1139793711)+W(2,1033595807,-1087687504,1066421651,1047700223)+W(3,-1084925862,1050883425,-1105555859,-1146566911)+W(4,1016573022,1048825911,1058107887,-1089540205)+W(5,1045215493,-1098430697,1041208433,-1124843514)+W(6,1002397687,-1104089806,-1130145014,-1111655831)+W(7,1032935415,1015641098,1001885951,-1131703250);WS(1058596686,1013962118); +sum1=W(0,1000024554,-1127551432,-1100000762,1035333436)+W(1,-1122612871,1044766998,1041477861,1051562743)+W(2,1052551424,1049056438,1057499982,1036076760)+W(3,-1127972943,-1116046252,-1118015335,-1099275107)+W(4,-1088298614,-1098656348,-1090756927,-1097067922)+W(5,1040213184,1015197910,-1123679237,-1122278672)+W(6,1039656505,1034731345,1019232187,1033429441)+W(7,-1125045580,-1113717771,1037833508,-1122272135);sum2=W(0,-1104434141,1029025211,-1078497608,-1079110377)+W(1,-1085502108,1066279808,1062913146,1068620036)+W(2,1048601996,-1091369704,1052827694,-1106615386)+W(3,-1115334546,1037382016,-1122817088,1048688798)+W(4,1033271157,-1119340081,1025214064,-1109539756)+W(5,1050957039,-1106594885,1036274829,-1118139306)+W(6,1004930429,1028438774,-1106316897,1034989376)+W(7,-1108631008,1023198169,-1134348613,-1139733884);WS(1044771128,1023341948); +sum1=W(0,-1156220044,1034545464,1033488922,-1111313058)+W(1,1038420969,1008511890,1013986230,1011084871)+W(2,-1092336191,-1098819215,-1096491302,-1086850728)+W(3,-1102939421,-1100928894,-1115524377,-1089482302)+W(4,1051560294,1044146859,1051910286,1045449190)+W(5,1053458817,1038883707,1012126018,1046748951)+W(6,1036528391,1029114797,1022761170,1029767950)+W(7,1041877300,1034675856,1037411178,1043196317);sum2=W(0,-1071004894,-1080574884,-1089987082,1049506323)+W(1,1065282653,1062249589,1060165079,1070844945)+W(2,1076503146,1066884159,1058011283,-1098882467)+W(3,-1084978169,-1088626314,-1082249713,-1077734377)+W(4,1057610169,-1107351326,1054000347,-1090234844)+W(5,1030898490,-1090230279,1044380003,-1096516163)+W(6,-1122913984,-1130255370,1038970611,1014162118)+W(7,-1114000490,1022492087,-1131621088,1013009282);WS(-1111817840,-1134998409); +sum1=W(0,1022731056,1045262352,1044888721,1029818259)+W(1,-1105915720,-1114660906,1027479949,991785104)+W(2,-1102901203,-1094315057,-1085070720,-1111793509)+W(3,1055206544,1046806370,-1123039746,-1136267423)+W(4,1029699069,1052915216,1058770140,1057078063)+W(5,-1095183540,-1097451385,-1112670352,-1114500629)+W(6,1021112442,-1107194439,-1097785743,-1117717150)+W(7,1040740592,1036425016,1005586201,1016465988);sum2=W(0,-1129690332,1030842707,-1123486113,1054087898)+W(1,-1105176966,-1097205966,-1098021434,-1106929221)+W(2,-1113356803,1026318374,1041923626,-1089332833)+W(3,1068558125,-1141184456,-1107728348,-1104288342)+W(4,997943457,-1119512995,1037525758,-1088292904)+W(5,1040210770,1050151959,1018682892,1006954668)+W(6,1015499837,-1180561029,-1144014736,1037328869)+W(7,-1107365912,-1114055561,1009592392,1013301204);WS(-1100650808,1043653943); +sum1=W(0,1038392637,1032036848,-1120772452,1043637149)+W(1,1040259489,1047398869,1038054351,1050576478)+W(2,1044290651,1040683515,-1106266873,-1090111931)+W(3,-1133467790,1044787930,1023591523,1037223428)+W(4,-1095199164,-1115398639,-1094097345,-1097393337)+W(5,-1104941765,-1101572298,1016760834,-1102689443)+W(6,1033771919,1038316223,1042896310,1045751664)+W(7,-1159203906,1015063331,1030908740,-1125005703);sum2=W(0,1018053796,1000548496,1049079603,1039189619)+W(1,-1128574308,-1118597354,-1106984497,-1104543855)+W(2,1046306039,1043541862,1010667960,1064529690)+W(3,1047996002,-1087406141,-1095617964,-1086946593)+W(4,-1101305605,1029064982,-1116813778,1038487223)+W(5,-1100258391,1048794746,-1114392997,1045938007)+W(6,1031448374,-1112893849,1021972628,-1105518867)+W(7,1037842238,1033382833,1021089548,-1140458600);WS(-1121537248,1047151836); +sum1=W(0,-1096325448,-1113135282,-1098188693,-1112146268)+W(1,-1108791588,-1117696601,-1123869651,-1114157115)+W(2,1052654400,1035132488,1046868890,-1134150082)+W(3,-1129891280,-1098847494,1032919412,-1107856679)+W(4,1000450324,-1110395025,-1139200797,1049727010)+W(5,1041189572,1056884317,1041128337,1058220805)+W(6,-1116556387,1023519458,-1111260975,-1110207458)+W(7,-1104838938,-1098805187,-1146298440,-1103148146);sum2=W(0,-1142864271,1021304865,1043366966,-1107584343)+W(1,1014758407,-1130465374,-1120740451,1000478551)+W(2,1043572739,1026011378,-1102859954,-1080136051)+W(3,-1103597159,-1115654645,1046511165,1053224660)+W(4,-1125571574,1028667063,1022196210,-1072538638)+W(5,-1076945816,1048815254,1072551214,1074776028)+W(6,-1107989855,-1140649559,1020722946,-1132367054)+W(7,1041979768,-1126224006,1027667511,1048839210);WS(-1086568910,969651201); +sum1=W(0,-1128189323,1044154939,1043534732,-1114366976)+W(1,-1098469330,-1101372520,-1123038043,-1132910587)+W(2,-1096064919,-1089612648,-1084798775,1053159863)+W(3,1053431542,1050787607,1036747448,-1116020373)+W(4,1047521403,1054908701,1056987371,1057685165)+W(5,-1089249613,-1090701774,-1105030179,1027268120)+W(6,1043461231,-1099266659,-1113308531,-1152040120)+W(7,1042761408,1049635020,1010635844,1018344000);sum2=W(0,1042932965,-1103428495,1039997403,-1093583228)+W(1,1044856824,-1121819542,-1177180368,1028413178)+W(2,-1103892922,1060495074,1052448567,-1075640666)+W(3,1057723154,1057002090,-1112150955,-1118134166)+W(4,-1104364155,1060109323,1064108701,-1073056297)+W(5,1055665788,1060503917,-1116550688,-1110515035)+W(6,-1139842168,-1118896922,991756114,-1097481656)+W(7,1040659602,-1099984054,1034919451,1041069777);WS(-1084093518,-1116656412); +sum1=W(0,1002008836,959481663,-1104590931,1050696243)+W(1,-1106608235,1047962207,1030562773,1015783795)+W(2,1058416208,1026388179,1059097973,1042079029)+W(3,1041679827,1049127990,1031439243,1042535660)+W(4,-1096672513,-1109778819,-1088144465,-1096264126)+W(5,-1101432288,-1100480244,-1113594772,-1093923750)+W(6,-1112390467,1023428581,-1112632704,1040470858)+W(7,-1102954054,1047012782,-1112144502,-1145396437);sum2=W(0,1007960967,-1110192070,1049899326,1056650247)+W(1,1078512141,1081472440,1058404171,999915485)+W(2,1027407916,1010716935,-1097456083,-1070859565)+W(3,-1068241064,-1079514242,-1094427160,1030657127)+W(4,-1129957403,1018303319,1037417999,-1094713389)+W(5,-1096379657,1043613542,1025537830,-1116925932)+W(6,-1132155403,-1121935910,-1137993343,-1142796285)+W(7,1039214170,-1111213656,1032528613,1024356221);WS(1052225948,1018668194); +sum1=W(0,-1120453498,-1123160289,-1108654867,-1104839613)+W(1,1041378113,1036965515,1044186084,1034438594)+W(2,1051775516,1048325451,1058214550,1064670427)+W(3,-1126638409,1049967085,-1096299613,-1128237844)+W(4,-1117579103,-1111291056,-1093397513,-1091445969)+W(5,-1092047898,-1099225050,-1112850625,-1112057991)+W(6,-1107074656,-1112742544,-1147977428,-1119335936)+W(7,-1109154218,1034167881,-1138567959,1019177609);sum2=W(0,-1121001958,-1148685985,1018483434,1021815720)+W(1,1049361594,-1108634723,-1132118692,-1105580672)+W(2,-1117606942,-1111847761,-1120566718,-1076982600)+W(3,1074852012,1048076514,-1102180777,-1116866514)+W(4,-1103097305,1021935234,1049895592,-1081972918)+W(5,1051964198,1040925857,1017568960,1040155911)+W(6,-1130038396,-1112487949,1038078839,-1125812992)+W(7,-1152546434,-1104919092,1026180028,-1123068468);WS(-1096382876,-1091051652); +sum1=W(0,-1116126267,-1113197617,-1112424211,-1124324715)+W(1,-1136579346,1040875430,-1113905512,1017323784)+W(2,1057278592,1048826126,1058810754,1056304110)+W(3,1041995897,1016295122,1024916389,1042534003)+W(4,-1096000788,-1097274020,-1088739494,-1091311905)+W(5,-1114916522,1038826452,-1128507781,1017648027)+W(6,-1116910752,-1140807037,1039925053,-1132679170)+W(7,-1107191661,-1119450067,1023437062,-1098370349);sum2=W(0,-1120311657,1036113080,-1109045199,1029662296)+W(1,-1122358251,-1114085873,1016737279,-1115835645)+W(2,1025682064,-1107470193,1035621932,-1118009189)+W(3,1045290388,1009830751,1035169596,1030264440)+W(4,1036682152,-1108061877,1051542033,-1101792442)+W(5,-1093646778,1056395710,-1091719234,1052430993)+W(6,-1108273289,1012612647,-1101063214,-1076098595)+W(7,-1080861029,1039398973,1065137390,1072502688);WS(1040082544,-1114755812); +sum1=W(0,1017784372,1037505264,1045745417,1019379817)+W(1,-1109308706,-1124056118,1025470519,1039469090)+W(2,-1110974758,-1108514902,-1095324708,1052579502)+W(3,1058051822,1046163210,1038459986,998280780)+W(4,1040296296,1041424680,1054913780,-1106396419)+W(5,-1087512533,-1093666877,-1106674096,-1109356390)+W(6,1024480479,-1104471944,-1106439461,-1115066496)+W(7,1040857799,1001482384,995688529,-1108404770);sum2=W(0,-1162396366,-1117720653,-1104226850,-1105580348)+W(1,-1105643813,1031813906,1011045214,1018164327)+W(2,1045315846,-1118054954,1057942904,1059476362)+W(3,-1090022037,1045409162,-1106412098,1023977529)+W(4,1034748092,1034773210,1043388435,1067689202)+W(5,-1083232471,-1101262587,-1124577575,-1102021751)+W(6,1035646876,-1100298043,-1097646834,-1093789486)+W(7,1040357620,-1113573448,1012935222,1024454049);WS(1036525168,-1082462584); +sum1=W(0,-1116308971,1037298441,1027885589,-1122874917)+W(1,-1154089797,-1108384819,1028179743,1003463273)+W(2,-1085123800,-1087372070,-1086414101,-1096064460)+W(3,-1099879381,-1104319094,-1127380522,-1096394215)+W(4,1057675329,1051660338,1059597873,1059581688)+W(5,1052784510,-1117339864,1039251609,-1110971807)+W(6,1019612704,1027541711,-1109257541,1041073820)+W(7,1028059367,1045372305,1031554934,1053758651);sum2=W(0,1060691160,-1103295177,1035985281,-1085964582)+W(1,-1105398566,-1107551093,1049030608,-1090293163)+W(2,-1081285622,-1090050073,-1102851017,1072728426)+W(3,1060511611,1033954581,-1086630634,1058069039)+W(4,-1080809247,1050684042,-1087522637,1060852217)+W(5,1058511518,1041242888,1028348456,1062481845)+W(6,1052276353,-1106187369,1048638013,-1090587145)+W(7,1029176048,-1094879840,1046256182,-1087039462);WS(-1074352935,1040600857); +sum1=W(0,1042034194,1028652336,1024054004,1030695172)+W(1,1029627411,-1117605317,-1114002447,1041624512)+W(2,1057627204,1025049468,1057567995,1022098295)+W(3,1052602222,1039437212,1049556590,1053416947)+W(4,-1090157751,-1105875707,-1088931067,-1095088235)+W(5,-1094832321,-1104356174,-1107260676,-1101255271)+W(6,1024364622,-1105990299,1048022018,-1100928004)+W(7,1049957878,-1095846092,1047165477,-1098759166);sum2=W(0,-1075440350,-1079714919,-1079134350,-1081735031)+W(1,1055569671,1066585571,1071644179,1075476470)+W(2,1073165865,1065983198,1068716226,1066499710)+W(3,-1095308006,-1080754250,-1074800849,-1073191304)+W(4,-1112383192,1048707236,-1135853868,-1098543278)+W(5,1021808504,-1108920844,1050977418,-1090378667)+W(6,-1148975848,-1115591486,1038054064,-1125971282)+W(7,1040311395,-1110109816,1035370814,-1120408347);WS(1041022776,1033480094); +sum1=W(0,-1132576057,-1123321429,1028959481,-1104176578)+W(1,1046472198,-1121060138,1027556403,-1115611836)+W(2,1026327841,1042302896,1052457903,1063677500)+W(3,-1097607903,-1123802109,-1118671609,1039698959)+W(4,-1110434490,-1109312954,-1089918670,1025377120)+W(5,-1090934974,1046523967,-1112257611,1000531209)+W(6,-1119031508,1021323174,1029242558,-1118638740)+W(7,1013298461,-1106699146,1030036314,-1116635705);sum2=W(0,-1106027239,-1122286155,-1102546078,1055155948)+W(1,-1096754888,1032068992,-1121774513,1036170969)+W(2,1049930690,-1127267122,1041115945,-1091935564)+W(3,1052250618,-1103388917,1038737216,-1108790214)+W(4,-1110218398,-1108798456,1058786995,1075372513)+W(5,-1071163371,-1123143101,-1121707895,1032355550)+W(6,1034564779,1018367610,-1095860458,1043590800)+W(7,-1112711414,-1119323979,1016553114,1017858173);WS(1055618972,-1117202987); +sum1=W(0,1030962480,-1101414710,-1098100923,-1111740150)+W(1,1036980413,1041005827,1021681163,-1112834597)+W(2,1039894129,1053882576,1057347458,1049814740)+W(3,-1090053902,-1088233382,-1105970903,-1117339136)+W(4,-1101932469,-1089999221,-1085784352,1051098296)+W(5,1056052448,1051763396,1044301630,1032801282)+W(6,1031993659,1048656807,1043352452,1031031542)+W(7,-1104607674,-1119077705,1022017143,1039235901);sum2=W(0,-1114659327,-1123577690,1042921002,-1105097716)+W(1,1042773509,-1093975266,1032061179,1000405669)+W(2,-1101541229,1043634319,1066882360,-1077668162)+W(3,1037629509,1058638399,-1108208741,-1131856909)+W(4,-1107338771,1057974128,1050113378,-1080704784)+W(5,1051155360,1052705661,1008396554,-1111189711)+W(6,1039378885,-1111523166,1040130625,-1104122760)+W(7,1012227066,-1110420726,-1125218199,1025207949);WS(-1091387548,-1116324289); +sum1=W(0,1026642697,1044682252,1041967213,1032214050)+W(1,-1131062694,1015214154,-1137069945,-1110158325)+W(2,-1112220622,-1093973688,1046046637,-1086442024)+W(3,-1099996941,1053177927,-1098783494,1037567917)+W(4,1049897926,1047211372,1050365286,-1112122925)+W(5,1046223135,-1132096750,1024489425,1042021623)+W(6,1027958127,-1098544270,-1112662293,-1106755108)+W(7,-1116559746,1034258897,-1111108842,1031638516);sum2=W(0,-1108095393,1016776222,977935538,-1122468710)+W(1,1019959206,1030099429,-1104930054,1002749526)+W(2,1011776651,1024100809,-1097248934,1057627889)+W(3,1042194141,-1117226417,1051928720,1041814459)+W(4,-1101257730,-1105403134,-1101986254,1060632600)+W(5,-1090719303,1037412790,-1109292621,-1115385474)+W(6,1019145070,1032882678,-1124027994,-1103033100)+W(7,1039533068,-1110127978,-1125661478,-1108291818);WS(1057965518,-1118811194); +sum1=W(0,-1104352985,1038892389,-1105058276,1042490232)+W(1,-1121521774,-1099594944,1033536020,-1095161930)+W(2,-1106566686,-1112643723,1026830542,-1091938531)+W(3,1058056073,-1101314965,-1098044778,1039936570)+W(4,1052732873,1003767366,1060358287,1019887594)+W(5,-1118338013,1042464324,1024562028,1046000094)+W(6,-1107147458,-1114250980,-1096574819,1048844541)+W(7,1024329053,-1107780158,1032778872,-1107207172);sum2=W(0,-1116205334,1042905425,-1109155755,1044205280)+W(1,1035597621,1008636092,1036458751,-1092853308)+W(2,993944814,-1113078065,1044406596,1040105843)+W(3,1043112037,-1123380436,-1105268129,1005260887)+W(4,1032713731,-1104977559,1048672381,-1104277422)+W(5,-1103087244,-1153474446,1015784078,1036094123)+W(6,-1106373772,1039619019,-1115343154,1048332350)+W(7,999501191,-1106439836,1021528398,-1106473413);WS(1053420700,1049909457); +sum1=W(0,-1115258034,1034071238,1027276239,-1115686559)+W(1,1041096236,-1102788144,1034068157,-1107460367)+W(2,-1106165874,-1089903413,1036166247,-1100423414)+W(3,-1093491554,1049835542,-1095323722,-1110396954)+W(4,1050401361,1041332866,1049384898,1037380859)+W(5,1052388787,1034784425,1031952854,1050882791)+W(6,-1113250117,1023742249,-1130552842,-1120158506)+W(7,1037333727,-1103514783,1037170040,-1114330639);sum2=W(0,-1112500393,1028289272,1049127312,1086771603)+W(1,1048088739,1020087240,1014851096,-1146529543)+W(2,1024557142,-1165623582,-1095250820,-1062269001)+W(3,-1095068995,999933935,-1135945992,1025716258)+W(4,-1136367764,1035333264,-1114028070,-1087155359)+W(5,1022077560,1034746908,-1120864651,-1127622484)+W(6,1020782048,-1122738507,1025362120,1034731082)+W(7,-1125007838,-1120796207,1026594640,-1128255426);WS(1063806286,1027083983); +sum1=W(0,-1114823180,1030313470,-1111791457,-1111977289)+W(1,-1108043857,1019729830,-1114640622,1033983240)+W(2,1045480194,1039206373,1061885616,1050451993)+W(3,1057912708,1036575619,1039765761,1034424532)+W(4,-1118427516,-1106496703,1010686340,-1083830979)+W(5,-1099420545,-1105267089,-1131920190,-1125840468)+W(6,-1109705966,1020453816,-1103432478,1039658735)+W(7,-1114670584,-1109909656,-1113587473,-1112770081);sum2=W(0,1033978022,-1100194899,1033701105,1050426550)+W(1,-1104028404,1034191613,-1141130302,1010895851)+W(2,-1122290634,-1091664523,-1071413373,1075108998)+W(3,1062092502,-1103668501,1034149895,-1140709165)+W(4,1016780797,-1103111994,1047766898,-1096749849)+W(5,1027350687,-1131589290,-1131724600,1027888251)+W(6,-1164938552,1002490582,-1105595809,1051489664)+W(7,-1108336227,1021076655,-1149103768,-1131210373);WS(1058288590,1045994186); +sum1=W(0,1018135640,-1123855059,1040223430,-1112801779)+W(1,1036317947,-1098800665,1034707665,-1096517871)+W(2,-1093342072,-1096797372,-1086390197,-1105293320)+W(3,-1091216419,-1117054299,-1096209979,1023470716)+W(4,1052167946,1041780692,1052872019,1059840396)+W(5,1051866430,1050341107,1048652350,1050625648)+W(6,1038262801,1015346466,-1132654257,-1134794696)+W(7,-1117665797,1012611090,-1139713758,1010858330);sum2=W(0,1041114210,-1099284356,1038292116,-1092208278)+W(1,1054381469,-1104534119,1025804573,1033400256)+W(2,-1099008397,1047276236,-1081084758,-1071665325)+W(3,1054365119,1081581342,1062322644,-1093538640)+W(4,-1123917868,-1111523652,1037708884,-1086778305)+W(5,-1101037019,1026238413,-1134916894,1052085127)+W(6,-1125418381,-1120564910,1020505319,-1100128811)+W(7,1024474915,-1125603475,1025011807,-1103707544);WS(-1088887374,1070119449); +sum1=W(0,1040460421,1041554590,1013850612,1038262022)+W(1,1042710919,-1106869091,1044864290,1046057615)+W(2,1052058645,1048371361,1048732808,1042754705)+W(3,1047384127,1054439312,1032508990,1042772520)+W(4,-1090595183,-1115426747,-1094790815,-1087902678)+W(5,-1106656361,-1090477876,-1122940954,-1091795237)+W(6,-1105506686,1029097335,-1129317061,1001782464)+W(7,1038072126,-1131475029,1028935005,-1119515740);sum2=W(0,1024604999,-1112923336,1027433809,1025504127)+W(1,1007245204,-1144581942,-1129047399,1021294865)+W(2,1056461606,1030035123,1050727550,-1090534096)+W(3,-1105339223,-1095507508,1043793174,-1095638178)+W(4,1071685965,1066713447,1068313262,1028028856)+W(5,-1081367671,-1078816510,-1081156501,-1090770344)+W(6,-1075212110,-1080779344,-1078194918,-1153515923)+W(7,1068056044,1069903211,1064173276,1060536751);WS(1040470840,1011790950); +sum1=W(0,1015095158,-1120734562,-1116691398,-1118217942)+W(1,1019898057,-1123629847,1034607368,1041822001)+W(2,1043725275,1051465082,1058372660,1055309890)+W(3,1046636817,1044874098,1043010193,1040878843)+W(4,-1105535856,-1108441440,-1095343471,-1081260869)+W(5,1047492563,-1093096561,-1105294873,-1106259483)+W(6,-1108386992,1030149375,-1112701741,1026499745)+W(7,1032201014,-1115283258,1028457510,-1112399171);sum2=W(0,1022830461,1021246145,1015115055,-1114703004)+W(1,-1120910531,1015720307,983370825,-1123770073)+W(2,-1117997331,-1110014342,-1111993293,1036613835)+W(3,1023720090,-1117604953,-1120463052,1036937497)+W(4,1037270083,-1125616185,1044158772,1073620398)+W(5,-1076883688,-1087890801,1025754476,-1113287589)+W(6,1023767946,-1130403951,1025796328,1050812248)+W(7,-1112499600,1028283916,-1104874229,1033737696);WS(1058309838,-1101980246); +sum1=W(0,-1118965337,-1098779704,1049071256,-1113399754)+W(1,1026571427,-1110569018,-1131332475,-1128371676)+W(2,-1110907254,1049643561,-1081904943,1042163763)+W(3,1052138696,-1106220306,1025191299,-1129449041)+W(4,1038642111,1038999679,1054751182,1056093093)+W(5,-1083956910,1050507993,-1146247429,1030864044)+W(6,1028903966,-1108240479,1040887994,-1118832415)+W(7,1046797612,-1104697276,-1123883748,1017502086);sum2=W(0,-1137655511,1043191716,-1121349336,-1097517035)+W(1,1046822141,-1129223371,-1116759551,-1124684976)+W(2,-1111106723,1033166752,1033268708,1052576386)+W(3,-1107318253,-1102887232,1040601750,993535634)+W(4,1035105104,-1112822728,-1104857525,1055574555)+W(5,-1114990789,-1121581721,-1152414880,-1107957817)+W(6,-1112318930,1027572041,1035699332,-1097542777)+W(7,-1110157019,1031007843,-1157281192,1025775603);WS(1063710542,-1111213649); +sum1=W(0,1039559517,-1110192145,-1107309859,-1118762901)+W(1,-1108199122,1037245627,-1139769966,1035326852)+W(2,1052251350,1049489370,1058328276,1061120005)+W(3,1049656673,1033876357,1041987905,1045428971)+W(4,-1101160384,-1097695264,-1093740712,-1096321197)+W(5,-1097289639,-1114972772,-1102516745,-1103522251)+W(6,-1113889808,1031901152,-1104513406,-1097003636)+W(7,-1112381384,-1176476024,1022802380,-1115185874);sum2=W(0,1026803387,1021750253,1040812059,-1107480079)+W(1,1041131835,-1115082464,1006187407,1001155939)+W(2,-1115186477,1031459540,-1116326399,1040651083)+W(3,1020594503,1033768858,-1132516997,1015478283)+W(4,999853755,1031446318,1058720440,1071698983)+W(5,1051128601,1034660038,1027131696,1041372466)+W(6,-1112425236,-1106593609,-1086524651,-1075753828)+W(7,-1096266051,-1108942599,-1123360193,-1104453127);WS(1039772272,-1082982873); +sum1=W(0,1039127452,-1106264016,-1104546353,-1145518233)+W(1,1041713673,1044410893,1039725795,1007790526)+W(2,1049032497,1053169593,1060522592,1056693961)+W(3,-1095982984,-1088607916,-1099512929,-1120546088)+W(4,-1098139952,-1088020664,-1087153807,1038834197)+W(5,1053429837,1048228018,1030077856,-1130616150)+W(6,-1155633625,1043520647,1040400554,-1139907193)+W(7,-1104883452,-1103034636,-1134131855,1012687882);sum2=W(0,1032987173,-1102803435,-1097110538,-1101871105)+W(1,-1101555589,-1123533577,-1098769512,1048796624)+W(2,-1092902636,1037122437,-1083842457,1067610414)+W(3,1033006847,1041814167,1045724867,999019252)+W(4,1027660911,1039508875,-1115097563,1067552095)+W(5,-1096151174,1026567371,-1107225085,-1105667947)+W(6,1032111389,-1101516234,1001644292,-1104358647)+W(7,-1145661076,-1104681426,1020958965,1028203943);WS(-1101412664,1073047832); +sum1=W(0,-1113880945,-1123950537,-1109995975,-1123565085)+W(1,-1123728428,1035385983,-1115318676,1010675502)+W(2,1059007377,1047579477,1060416389,1056063051)+W(3,1046383171,1040643140,1033389702,1041003725)+W(4,-1091904865,-1097814305,-1087199740,-1092124214)+W(5,-1099567891,1038341800,-1119557930,1042882861)+W(6,-1133362719,-1131741454,1032803377,-1113780884)+W(7,-1113889390,-1126485237,1012558775,-1096461162);sum2=W(0,1013686761,-1123503757,1035262859,-1115490710)+W(1,1025861040,980681483,-1125276038,-1129892230)+W(2,1030949359,1039110679,-1105775253,1027204409)+W(3,1019519396,-1111394964,1024413043,-1126757058)+W(4,-1109223248,1035635962,-1106751414,1057425426)+W(5,1043312829,-1098000154,1051287795,-1103421662)+W(6,-1132915573,996209923,1029135163,1070858778)+W(7,1067133266,-1098902818,-1083268694,-1073095921);WS(-1103532344,-1105840701); +sum1=W(0,-1106756472,-1106322913,1029810954,-1096389739)+W(1,-1116067305,1035916925,-1105566449,1034505108)+W(2,-1105825052,1053932942,-1086676361,-1098358914)+W(3,1054020609,-1096691570,1051257001,1026552303)+W(4,1050195304,1007328528,1057202097,1054492326)+W(5,-1093369370,1012599092,1027855335,-1101687900)+W(6,1044840709,-1104890465,-1144507642,-1098185309)+W(7,1032208700,1048715303,-1100267787,1050640157);sum2=W(0,-1111707317,-1119262447,1037989791,1056036881)+W(1,-1105645897,1006194414,-1146663095,-1129479912)+W(2,-1101137684,-1109186725,1049211868,-1099242284)+W(3,1038198606,-1118866635,-1109483964,-1114787638)+W(4,-1116414033,-1107841286,1056722210,-1094543747)+W(5,1053421235,-1104714858,-1120693058,-1115357885)+W(6,-1103752872,1034593530,-1110917586,1049861706)+W(7,1030171051,-1103907620,1032413269,1029169157);WS(1045178680,-1115117954); +sum1=W(0,-1102680211,-1123018420,-1116849368,1024407336)+W(1,-1107241006,1026392201,-1107918421,-1123314455)+W(2,1048681528,-1113607536,-1092105355,-1093530556)+W(3,-1096193779,-1102060551,-1102337510,-1095199752)+W(4,1019008549,1040296293,1035615004,1061339424)+W(5,1057711678,1055864515,1045891981,1052562824)+W(6,1008490315,1012835273,1027033246,-1128145511)+W(7,-1103222073,-1110547491,-1110097884,1020395952);sum2=W(0,-1108321996,-1115537892,-1106228104,998645667)+W(1,-1112292909,1035781218,-1111036660,1018530825)+W(2,-1096948503,-1104693583,1047339287,1055675007)+W(3,1049114511,-1100682049,1032758858,-1113969306)+W(4,-1112108000,-1112710060,-1126080161,1051246853)+W(5,1041989299,1025978716,1034053890,-1113712936)+W(6,1026091852,1022753169,-1120501740,-1105262859)+W(7,-1123292948,-1139782977,-1111667328,1033000622);WS(1044590904,1058699692); +sum1=W(0,985175380,1034192409,1020554347,1024014533)+W(1,-1115433194,-1128687821,1008304190,-1115445028)+W(2,-1092606720,-1090621088,-1093618783,-1113905855)+W(3,-1096920415,-1112503613,-1100279725,-1101027255)+W(4,1051210502,1050384326,1055009987,1062574818)+W(5,1054554325,1031218808,-1105751509,-1144235755)+W(6,1009220799,-1109361592,-1117059707,-1128567457)+W(7,1015981863,1039114097,-1127205548,1035507338);sum2=W(0,1036009101,-1117283755,1033667347,-1107239966)+W(1,1034685217,-1128406639,-1123321687,-1125402335)+W(2,-1108619644,1041337919,1012813669,1053310286)+W(3,-1103814148,1029066827,-1109499964,-1123197815)+W(4,1010492213,-1100684466,1015579759,1056064408)+W(5,1050883237,-1113069964,-1098878001,-1096911819)+W(6,-1131279719,1035041542,-1124020763,1025470531)+W(7,1032198922,-1104788458,1024066141,-1108347132);WS(1044030776,-1089132931); +sum1=W(0,1034269487,1032883970,1042439154,1044751430)+W(1,1019707982,1041434446,-1133288904,-1128708109)+W(2,-1093699058,-1097458090,-1086092656,-1078975458)+W(3,1035194756,1038040390,-1131544335,-1101499019)+W(4,1045160768,1050995424,1057188990,-1096290982)+W(5,1032938655,1043682915,1022768458,1043305900)+W(6,1040395197,-1135242887,1040422743,1048952172)+W(7,1042217766,1043586045,1029073256,1044718778);sum2=W(0,1043294282,-1127265324,1035036911,1051203976)+W(1,-1092441683,1037063919,-1095318743,-1096741875)+W(2,-1107262777,-1107127922,1048700262,-1114081637)+W(3,1027047222,-1087538045,1043898666,-1114635611)+W(4,-1132728616,-1133435576,-1115280193,1060204569)+W(5,-1096051714,1059699424,-1091030613,1057805441)+W(6,-1112978295,-1101649503,-1142433873,-1138065032)+W(7,1049542158,1027406094,1036599707,-1117298502);WS(-1083489614,-1078579141); +sum1=W(0,-1113694287,1048897616,-1104500498,1029397720)+W(1,1039983475,-1099529286,1047818144,-1100400745)+W(2,-1091060438,-1104759380,-1089217572,-1096433234)+W(3,-1090900481,-1103761763,-1126261903,-1098862766)+W(4,1048678744,1055607032,1025763911,1056656214)+W(5,1055730826,1039576037,1050842685,1044462332)+W(6,1022130309,1045345264,-1098656951,1045280313)+W(7,1003335600,-1104729181,1045845834,-1124798927);sum2=W(0,1034867092,1036831152,-1155378720,1050005016)+W(1,-1109019109,-1107857756,1025727369,-1105627363)+W(2,-1113896283,1008734783,-1107821706,1036439980)+W(3,-1105188391,-1103852014,-1113326142,1036502992)+W(4,-1089397746,-1143881728,-1090933436,1067046868)+W(5,1074023168,1073004488,1071596064,1068047188)+W(6,1053130734,1048547317,1050664536,-1081990202)+W(7,-1073616958,-1073650181,-1078582463,-1079035066);WS(-1123566816,-1118788492); +sum1=W(0,1034266605,-1136553988,1032767842,-1119057557)+W(1,1032596498,-1138237144,1034235800,1038972738)+W(2,-1131696345,1054570946,1043367745,1057910725)+W(3,1051309065,1050053561,1044754161,1047609962)+W(4,-1102436480,-1101485920,-1093672570,-1081257723)+W(5,-1104247863,-1097237249,-1100737384,-1118734125)+W(6,1029920799,1027694719,1029228634,1038070160)+W(7,1041012541,-1104490509,1036672371,-1101643609);sum2=W(0,1001205015,1006355343,1030505158,-1119701641)+W(1,1039794598,-1107202062,1026836118,-1115440174)+W(2,-1108935456,1048575251,-1114918170,-1088419213)+W(3,1032736312,1045905661,-1116946341,1003805295)+W(4,-1123729961,1037564428,-1096130861,-1068662368)+W(5,1076967646,1068403675,-1104305708,-1124006983)+W(6,-1151981614,-1123825361,1015236500,-1095410362)+W(7,1049774729,-1105335733,1050153445,-1103176791);WS(-1103567160,1051728620); +sum1=W(0,1022317012,-1105517764,-1109296554,1030946149)+W(1,1032988986,-1117957958,1025729823,1009731405)+W(2,1037463598,1027268637,1052072875,-1094107172)+W(3,-1087396213,-1098739651,-1104965205,1017302004)+W(4,-1094952698,-1107670055,-1103880757,1052944567)+W(5,1057943536,1052382091,1036164793,1041821631)+W(6,1033922872,1024776175,1038888053,1043766492)+W(7,-1110506946,-1108829569,-1132271979,1015545129);sum2=W(0,1031290011,-1114551402,-1137203270,1025723227)+W(1,1020823723,-1107112701,-1156747895,-1140368490)+W(2,-1127050317,1026829489,1032334734,-1098446681)+W(3,1041359246,1041376772,1034398482,-1104694439)+W(4,-1113481669,1042490649,1043198364,-1127701979)+W(5,1057793899,-1100591458,-1114292550,1037536680)+W(6,-1080536402,-1076466135,1038797044,1074254195)+W(7,1035340712,-1118262367,1013380262,1032104302);WS(-1106439480,1029090439); +sum1=W(0,1034559195,-1151887836,1020849475,1042053132)+W(1,1043127920,1043814293,1037260390,1043715864)+W(2,1042655458,1030625962,1059377738,-1084013087)+W(3,-1107145304,1032281331,1040913704,1033172451)+W(4,-1102396839,-1115609614,-1089162129,-1083731653)+W(5,1052971191,-1107154457,-1113717087,1017680531)+W(6,1026400220,1035325646,1042909598,1039293086)+W(7,1029716960,1024778063,1028666946,-1130742978);sum2=W(0,-1129107524,-1123636938,-1116921954,1035143287)+W(1,1036996009,1026655402,-1117010042,-1126794884)+W(2,1021999108,-1148550480,-1104180688,1058583951)+W(3,-1112895549,-1116180274,-1131502740,-1138164712)+W(4,1022835844,1016982596,1016773924,1054454385)+W(5,-1097314323,-1099699990,-1132536424,-1129763396)+W(6,-1129901940,-1140398984,1030858450,-1117386658)+W(7,-1108156993,-1118751234,1016259828,-1117013506);WS(1048151864,1059242544); +sum1=W(0,-1122367849,-1121466768,1042165293,-1116044868)+W(1,-1105437493,1037358179,-1125163356,-1111398955)+W(2,-1097114939,-1097911384,-1085899247,1042506911)+W(3,1056857214,-1105063934,-1123578292,-1106114902)+W(4,1043794348,1033810391,1063564267,1042284551)+W(5,-1089674786,1049648847,1021855394,1045389303)+W(6,1026875087,1014185912,-1106211614,-1111561384)+W(7,1040868541,1028107682,-1111395274,1010402126);sum2=W(0,-1139648101,-1108856547,1015236663,-1095822659)+W(1,-1137977893,1038373686,1015865663,1025690243)+W(2,-1110557326,1041627874,1032833232,1054902128)+W(3,-1098765424,-1121592121,-1106594443,-1117564251)+W(4,-1106733442,-1106727608,1048813377,1055403310)+W(5,-1097123375,1045561320,-1106386080,1017823319)+W(6,1039330638,987619817,1025349119,-1095503796)+W(7,1050144719,-1108448514,1041979856,-1105901385);WS(1058511566,1043187024); +sum1=W(0,1042620242,1027981614,1037513401,1050564856)+W(1,1040390932,1044188393,1032851398,1043046140)+W(2,1041476871,1044640335,1039039385,-1085132912)+W(3,-1095196494,-1116362934,-1107832665,-1105825814)+W(4,-1106861387,-1120607404,-1101062960,-1089194338)+W(5,1032203084,-1134658518,1026497359,-1105488567)+W(6,1043942651,1040914531,1040902562,1048598306)+W(7,1019897185,1032634704,1027555603,1032742569);sum2=W(0,-1094808435,-1132385524,-1110994277,1039748829)+W(1,1038866141,1012861192,1030487914,-1132742376)+W(2,-1083260450,-1089624726,-1098133391,1063143581)+W(3,1043371703,1040218148,1012758152,1052570990)+W(4,1041967320,-1102801635,1050258559,1037743779)+W(5,1048943341,-1112998265,1031702418,-1105604919)+W(6,1026111290,1034887813,-1123786474,1033106845)+W(7,-1110363077,-1121754906,1012203560,-1111765769);WS(-1087236686,1061665912); +sum1=W(0,-1115274057,-1116162424,-1104461343,-1093387666)+W(1,-1113556238,-1115159031,-1126942285,-1121543315)+W(2,1023071688,1030200068,1054050807,1067462106)+W(3,1050597447,1031104576,-1121547516,1042315272)+W(4,-1107980923,-1101866270,-1092884195,1056570668)+W(5,1044256537,-1106234576,-1128835891,-1114796114)+W(6,-1119301463,-1128116268,-1109238785,-1095571507)+W(7,-1103733247,-1111522325,-1111458030,-1109780718);sum2=W(0,-1127633710,1024854732,-1123781128,1040493279)+W(1,-1105896535,1033983514,-1122459292,-1120616672)+W(2,1024134807,1020748524,-1117094752,1065417820)+W(3,1047826025,-1102101577,1040101538,-1124130304)+W(4,-1114424195,-1098546148,-1079772750,1059484680)+W(5,-1107504040,1049649199,-1105983778,1041220419)+W(6,-1109129714,1025355297,-1102118069,-1114766469)+W(7,1033237727,-1154145757,1012710689,-1123999628);WS(-1092106140,-1084163121); +sum1=W(0,1036347305,1016904817,1034414494,1040590819)+W(1,1047670567,1030378702,-1114654031,1037868673)+W(2,1049849489,1040213041,1056746079,1048812489)+W(3,-1084779712,1040726752,1033236350,1034988241)+W(4,-1101083230,-1152694122,-1083169173,-1107117385)+W(5,1051667767,-1109066592,1024925978,-1107106473)+W(6,-1106738110,-1115216475,1039797369,1022569263)+W(7,-1112982247,-1125038036,1025136605,-1146668256);sum2=W(0,-1144361879,-1128843246,1005924247,-1104940693)+W(1,-1123234701,1030348431,1032437115,1024671661)+W(2,-1111008682,-1134810723,1041181160,1054697191)+W(3,1052731012,1042931729,-1112071203,-1111460488)+W(4,-1092072719,-1121102479,1045581242,1046555600)+W(5,-1103970223,-1104348933,-1113690885,-1129885552)+W(6,1021883158,-1116668390,-1109114373,-1113715104)+W(7,-1128555074,1032936433,-1136719027,-1114960949);WS(1058637774,-1109876822); +sum1=W(0,-1123254812,1041301297,-1108082435,-1113241451)+W(1,-1110973875,1027216056,1014894339,1019588394)+W(2,1042623060,-1105094644,1059472952,1043969956)+W(3,-1113269955,1026816394,-1130602892,1026167148)+W(4,-1126486401,-1111052512,-1094910408,-1094009726)+W(5,1058531737,-1100061186,1032486130,-1117291247)+W(6,-1112485473,1037949088,1016105496,1038892497)+W(7,-1093047519,1032398170,-1128303438,1021704844);sum2=W(0,1019183838,1031923668,1049015983,-1096362417)+W(1,1005830618,1036998273,-1119396253,-1125844722)+W(2,-1103677237,1026573624,-1101357077,1060010174)+W(3,-1122620605,-1106684685,1023743335,970656667)+W(4,1041385745,1025625867,-1095136476,-1096248497)+W(5,-1115221092,1049273019,-1112424814,1011280453)+W(6,-1115238116,1024201143,1024442030,-1122837727)+W(7,1034369966,1031554545,1004099770,1010302645);WS(1068382951,-1145853862); +sum1=W(0,-1109092968,-1120835030,1015957108,1033165317)+W(1,1015780402,-1098982451,-1106789039,-1105810191)+W(2,-1104283584,-1104742016,-1087137628,-1082841532)+W(3,1048723479,-1119342334,1037068029,998682871)+W(4,-1126224104,1048835390,1060142968,1050512116)+W(5,1050625794,1046183055,1033167819,1042826568)+W(6,-1142984099,1035504970,1044651720,1036256010)+W(7,1040271692,-1112268532,-1115364877,-1113754717);sum2=W(0,1042289605,-1123754179,1040865617,1025996190)+W(1,-1100913998,-1118459936,-1114401734,-1118182115)+W(2,-1105845074,1032442894,-1090127653,1055606718)+W(3,-1104101067,1026136504,1031986833,1045409779)+W(4,-1105090355,-1106552079,-1075116096,1073431719)+W(5,1067916428,1042119939,-1112990087,1031635830)+W(6,1041479887,1028813354,-1087510643,-1084272058)+W(7,1045036562,-1131666845,1021173748,-1131440550);WS(-1115823328,-1115141930); +sum1=W(0,994860217,1043355533,1046651158,1031967699)+W(1,-1112906011,-1139800861,1032268536,1021673189)+W(2,-1096937968,-1093401724,-1082957735,1057829358)+W(3,1054780763,1049387203,1029694230,1032667294)+W(4,1034643656,1045563268,1056739037,1053028032)+W(5,-1085595451,-1100812438,-1112691098,-1163065290)+W(6,1022968545,-1100277972,-1106135459,-1113373017)+W(7,1036473238,1042166401,-1109328859,1026417494);sum2=W(0,1041009418,-1106230161,-1113994011,-1100787264)+W(1,-1102450993,-1114680808,1031764893,-1145068408)+W(2,1006794492,1034312638,-1108126219,1060460225)+W(3,-1119222967,-1097084093,-1125377404,-1105852265)+W(4,1023178506,-1120362931,-1105213924,1054015707)+W(5,1053508358,-1133314452,-1141774536,-1120752408)+W(6,-1126244586,1021996758,-1131146954,997147503)+W(7,-1107185372,-1126416406,-1126617106,-1131039214);WS(1044911928,1063248560); +sum1=W(0,-1117210934,1045807559,-1116245664,-1122601008)+W(1,1041679280,-1102494868,1044187563,-1101059428)+W(2,-1089987573,1006551364,-1085623154,-1098705597)+W(3,-1089608778,-1098692501,1040126000,-1100421777)+W(4,1050931427,1049202419,1044690392,1056494849)+W(5,1054654497,1047881833,1043119951,1043071666)+W(6,-1154913199,1049427019,-1098224261,1043742399)+W(7,1009817082,-1102952115,1048685800,-1132265536);sum2=W(0,-1110897864,-1104703066,1039476246,-1102025112)+W(1,1041770976,1044782005,-1112640404,1045848501)+W(2,1031814971,-1126406622,-1112535334,-1088994686)+W(3,1050082866,1038057456,1029663347,-1098794387)+W(4,1060526454,1034850394,1060516426,-1088701567)+W(5,-1072347435,-1075073775,-1077197270,-1081012351)+W(6,-1090228093,-1097166620,-1091926928,1063814816)+W(7,1074296249,1073862535,1067261757,1067785227);WS(-1105546040,1026157880); +sum1=W(0,1040950836,1036866652,1045419231,1057171433)+W(1,1039696013,1040737235,1031337694,1043417390)+W(2,1040614249,1043435937,1048836647,-1092874056)+W(3,1049109967,1037560064,1039556030,1020658754)+W(4,-1102499357,1032157499,-1088963702,-1078642173)+W(5,-1094603626,999044599,-1107844556,-1101965321)+W(6,1036650571,1032871003,1035867609,1040635958)+W(7,1039966133,1035782037,1034875342,1029450491);sum2=W(0,999804672,965076992,1017997216,-1113573416)+W(1,1015814944,1013150208,1004325632,-1116017408)+W(2,1033414560,-1142972544,-1117537424,-1080122522)+W(3,-1116987776,1009041344,1030258512,-1123867424)+W(4,-1131242272,-1152459008,1043660652,1068973644)+W(5,-1113471168,1023678672,-1115573696,1025739248)+W(6,-1111239120,-1114613368,1024438240,1009242816)+W(7,1026341216,-1111376032,-1124670336,1011147520);WS(-1081027239,1060388068); +sum1=W(0,1040945153,1018532824,1048158700,1050078256)+W(1,1043330564,1045983912,1034126717,1042366848)+W(2,1049191505,1052335227,1053224518,-1089652372)+W(3,1050009062,1019623144,1043374892,1037373643)+W(4,-1103567931,-1106690587,-1098210230,-1079677805)+W(5,-1090769236,-1102526621,-1113976903,-1106920486)+W(6,-1142725077,-1126830164,1044049241,1037048166)+W(7,1037549983,-1124021470,1031972104,1000910717);sum2=W(0,1029289565,1023484285,1041097307,1044843621)+W(1,-1101664529,-1108647964,-1111945130,-1129898257)+W(2,-1119356133,1031916514,-1120749829,1057057740)+W(3,1055633817,-1098024997,1038083406,-1101101054)+W(4,-1126159585,-1111485988,-1121314077,1024531885)+W(5,-1102656055,1016983721,-1105960100,1022769465)+W(6,-1119814653,-1133461586,-1112201820,1001931237)+W(7,1035253182,1019582313,1011319026,-1110859200);WS(-1121436896,-1083449266); +sum1=W(0,-1131437006,-1126965659,-1106898372,1049661628)+W(1,-1110051320,1048826500,1018834023,1030351624)+W(2,1057845458,1026072602,1058188821,1047051462)+W(3,1036301673,1049513187,1026266705,1043516478)+W(4,-1096100393,-1106937331,-1089458543,-1093909527)+W(5,-1105302990,-1097831955,-1115312055,-1094725407)+W(6,-1112818966,1025271436,-1120770471,1039868950)+W(7,-1101852248,1048680544,-1111779257,-1137214404);sum2=W(0,1025140224,1016993788,-1106156741,-1085967118)+W(1,-1070014283,-1066270592,-1089828448,-1115300709)+W(2,-1118806788,1030590564,1042721449,1078987048)+W(3,1078555235,1069325982,1051485796,1026006822)+W(4,-1126785121,-1118559458,-1106137914,-1100137345)+W(5,1044823121,-1105174392,-1121082393,1011662011)+W(6,1031495588,991152164,1038491925,1040984057)+W(7,-1111978905,1030579932,-1113499951,-1120641633);WS(1060473294,-1125032523); +sum1=W(0,-1118381578,-1131528546,-1103035725,1044891665)+W(1,1017562024,1038728371,1013193724,1017619335)+W(2,1043924207,1048790648,1057928103,-1096003632)+W(3,-1104437021,-1127678449,-1138265298,1019650740)+W(4,1028842287,-1094915206,1048586166,-1089668066)+W(5,1048997587,-1106021950,1016196772,-1112334062)+W(6,-1103983036,1032416951,-1131359957,1041536420)+W(7,-1119623443,1026802338,-1112764523,1028850580);sum2=W(0,-1124013145,-1154979909,-1113455493,1042673063)+W(1,1009341589,-1131887235,-1126494367,-1120394460)+W(2,1023871771,-1104183315,1024353365,-1099433949)+W(3,1037029004,-1106752952,-1136822537,-1135604889)+W(4,1041717973,-1104961174,-1071159846,1075222357)+W(5,1061754151,-1106459992,1037905746,1020599743)+W(6,1027246941,-1105906795,-1114760758,1048045634)+W(7,-1101645527,1027783079,-1130069351,1023779471);WS(1063175758,1049951270); +sum1=W(0,1051934199,1041620825,1053157077,1019501037)+W(1,-1121035141,1024394007,1034798936,999909159)+W(2,-1084051495,-1091045702,-1089200998,-1103613676)+W(3,-1103906809,1042850683,-1117239270,-1106705027)+W(4,1040719576,1046456792,1054477181,1050464826)+W(5,-1098419444,-1097805325,1011564046,-1091232034)+W(6,1028219745,1028165760,-1110307566,1037889601)+W(7,1045652053,1054554722,1031152711,1056053333);sum2=W(0,-1091471926,1042259987,-1103057728,1049412228)+W(1,1044973062,-1116401558,1011000463,-1130123924)+W(2,1062079447,-1095572989,-1089203271,-1092861102)+W(3,1034556296,1047552828,-1110031497,1051271629)+W(4,1055700238,1041645665,1037140407,-1093629070)+W(5,-1095940003,-1106623325,-1107294450,1053844390)+W(6,1015596856,1033532620,1035045090,1042934527)+W(7,1032040702,-1106239816,1033073048,-1095799213);WS(-1085388366,-1090694979); +sum1=W(0,-1123787314,-1119481145,1032777214,-1112850502)+W(1,1041751591,-1125429276,-1140788444,-1113892940)+W(2,1044273497,-1130943626,1047368143,1059845268)+W(3,-1095680144,1039407200,990533574,1032644049)+W(4,-1108110651,1041576542,-1087220302,1027588771)+W(5,1036323946,-1111657568,1021334836,-1143449895)+W(6,-1115475932,-1117135031,1040347561,-1101064470)+W(7,1037523789,-1126225621,-1134357621,-1109271006);sum2=W(0,-1107190004,1013881877,-1118295314,-1121103222)+W(1,-1127822751,-1115317828,-1126179247,-1114801766)+W(2,1037736456,-1105376838,-1123416196,1042717593)+W(3,-1115549939,1043660085,-1126402007,1040920849)+W(4,-1125693587,1040619572,-1082924015,1068021664)+W(5,1016978358,-1108863865,-1136349779,-1107267301)+W(6,-1120404934,-1122228614,1051908042,-1087341114)+W(7,1042189807,-1125959243,1038966556,1023515477);WS(1065904679,-1122628785); +return clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0); +} // nnedi3 +vec4 hook() { +vec4 ret = vec4(0.0); +vec4 samples[8]; +samples[0][0] = HOOKED_texOff(vec2(-1.0, -3.0)).x; +samples[0][1] = HOOKED_texOff(vec2(-1.0, -2.0)).x; +samples[0][2] = HOOKED_texOff(vec2(-1.0, -1.0)).x; +samples[0][3] = HOOKED_texOff(vec2(-1.0, 0.0)).x; +samples[1][0] = HOOKED_texOff(vec2(-1.0, 1.0)).x; +samples[1][1] = HOOKED_texOff(vec2(-1.0, 2.0)).x; +samples[1][2] = HOOKED_texOff(vec2(-1.0, 3.0)).x; +samples[1][3] = HOOKED_texOff(vec2(-1.0, 4.0)).x; +samples[2][0] = HOOKED_texOff(vec2(0.0, -3.0)).x; +samples[2][1] = HOOKED_texOff(vec2(0.0, -2.0)).x; +samples[2][2] = HOOKED_texOff(vec2(0.0, -1.0)).x; +samples[2][3] = HOOKED_texOff(vec2(0.0, 0.0)).x; +samples[3][0] = HOOKED_texOff(vec2(0.0, 1.0)).x; +samples[3][1] = HOOKED_texOff(vec2(0.0, 2.0)).x; +samples[3][2] = HOOKED_texOff(vec2(0.0, 3.0)).x; +samples[3][3] = HOOKED_texOff(vec2(0.0, 4.0)).x; +samples[4][0] = HOOKED_texOff(vec2(1.0, -3.0)).x; +samples[4][1] = HOOKED_texOff(vec2(1.0, -2.0)).x; +samples[4][2] = HOOKED_texOff(vec2(1.0, -1.0)).x; +samples[4][3] = HOOKED_texOff(vec2(1.0, 0.0)).x; +samples[5][0] = HOOKED_texOff(vec2(1.0, 1.0)).x; +samples[5][1] = HOOKED_texOff(vec2(1.0, 2.0)).x; +samples[5][2] = HOOKED_texOff(vec2(1.0, 3.0)).x; +samples[5][3] = HOOKED_texOff(vec2(1.0, 4.0)).x; +samples[6][0] = HOOKED_texOff(vec2(2.0, -3.0)).x; +samples[6][1] = HOOKED_texOff(vec2(2.0, -2.0)).x; +samples[6][2] = HOOKED_texOff(vec2(2.0, -1.0)).x; +samples[6][3] = HOOKED_texOff(vec2(2.0, 0.0)).x; +samples[7][0] = HOOKED_texOff(vec2(2.0, 1.0)).x; +samples[7][1] = HOOKED_texOff(vec2(2.0, 2.0)).x; +samples[7][2] = HOOKED_texOff(vec2(2.0, 3.0)).x; +samples[7][3] = HOOKED_texOff(vec2(2.0, 4.0)).x; +ret[0] = nnedi3(samples); +return ret; +} // hook +//!DESC NNEDI3 (combine_x, nns128, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND nnedi3_int +//!WIDTH 2 HOOKED.w * +//!OFFSET -0.500000 0.000000 +//!WHEN HOOKED.w OUTPUT.w / 0.707106 < +vec4 hook() { + vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5; + if (dir.x < 0.0) { + return HOOKED_texOff(-dir); + } else { + return nnedi3_int_texOff(-dir); + } +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns256-win8x4.hook b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns256-win8x4.hook new file mode 100644 index 0000000..05d266f --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/mpv/shaders/nnedi3-nns256-win8x4.hook @@ -0,0 +1,674 @@ +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Lesser General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this program. If not, see . + +//!DESC NNEDI3 (double_y, nns256, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!SAVE nnedi3_int +//!WHEN HOOKED.h OUTPUT.h / 0.707106 < +float nnedi3(vec4 samples[8]) { +float sum = 0.0, sumsq = 0.0; +for (int i = 0; i < 8; i++) { + sum += dot(samples[i], vec4(1.0)); + sumsq += dot(samples[i], samples[i]); +} +float mstd0 = sum / 32.0; +float mstd1 = sumsq / 32.0 - mstd0 * mstd0; +float mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7); +mstd1 *= mstd2; +float vsum = 0.0, wsum = 0.0, sum1, sum2; +#define T(x) intBitsToFloat(x) +#define W(i,w0,w1,w2,w3) dot(samples[i],vec4(T(w0),T(w1),T(w2),T(w3))) +#define WS(w0,w1) sum1 = exp(sum1 * mstd2 + T(w0)); sum2 = sum2 * mstd2 + T(w1); wsum += sum1; vsum += sum1*(sum2/(1.0+abs(sum2))); +sum1=W(0,1024871952,-1091961907,1049937838,1023328805)+W(1,1026430476,-1103990249,1052012307,994719130)+W(2,1041094851,-1086639391,1057524239,-1110763811)+W(3,992987016,-1085365048,1063527595,-1102193240)+W(4,1034372511,-1087585419,1061081007,1046466539)+W(5,1007997243,-1093414958,1057188600,-1131716095)+W(6,1038248733,-1100793414,-1104832955,1042167685)+W(7,1009484684,-1099588502,-1114088341,1037858632);sum2=W(0,-1122170202,-1115075619,-1113824159,1016746290)+W(1,-1117362461,1050294809,1022334174,1016781702)+W(2,-1125932452,1041506545,-1098709995,1031697879)+W(3,-1100385246,-1100233118,-1104291570,1033455014)+W(4,1020071642,-1100362988,1072797337,1050444141)+W(5,1025043913,1047005177,1053652830,-1106922881)+W(6,1017078274,1012082941,-1100425628,-1081909907)+W(7,1018043750,-1112302377,-1155649364,-1086585813);WS(-1096195455,1061976972); +sum1=W(0,-1107583849,-1094469481,1057261454,1032308806)+W(1,1045016510,-1104061589,1051975353,1046697387)+W(2,-1102048399,-1082981042,1058403546,-1093320254)+W(3,1050507709,-1086991635,1061386858,1051876218)+W(4,-1138600128,-1087760032,1052980216,-1106246183)+W(5,1004076226,-1088999402,1052828202,-1112945129)+W(6,1049677870,-1111975782,1055128500,1045880594)+W(7,-1106918697,-1089081125,1048525839,-1116677906);sum2=W(0,976892690,-1095110912,-1080663089,1075827337)+W(1,1043646796,-1114450783,-1074060607,1075290035)+W(2,-1131052969,1052886335,-1068434194,1070007941)+W(3,1047930742,-1113296119,1048011859,1046007784)+W(4,-1099144563,-1088067101,1042920440,-1090506241)+W(5,1035354913,1040578653,1058047003,-1099371585)+W(6,-1115191227,-1102673565,1057110709,-1096675048)+W(7,-1111106463,1051335047,1038060178,-1096378099);WS(-1095930303,-1128843438); +sum1=W(0,-1113225514,1000563038,1038763268,-1104281110)+W(1,1030842449,-1103461662,1052682210,-1105449143)+W(2,-1120882464,-1098779087,1055587560,-1106219642)+W(3,-1111398934,-1156245815,1046999855,-1105879965)+W(4,-1098488134,1057689814,-1090605975,1039743648)+W(5,-1098728413,1058114717,-1106232348,1030902068)+W(6,-1111237296,1041725787,-1106563184,-1111582036)+W(7,-1104159890,1046074787,-1119168797,1033984854);sum2=W(0,-1109947141,-1078961084,1053833634,1049299145)+W(1,-1087141194,-1081851502,-1102894339,1040634467)+W(2,1007133897,1057831088,1046573470,1035108031)+W(3,-1099413759,1067440534,1058568743,-1114324751)+W(4,1026690396,-1095618356,1058025266,-1094447449)+W(5,1045509921,1022398658,-1115002147,1023241606)+W(6,-1117657274,1029712906,-1109832065,987652806)+W(7,1051942463,1049871690,-1099467737,-1104714655);WS(1018627052,-1077328537); +sum1=W(0,-1107592280,-1098360952,1054425801,-1121256842)+W(1,1011043872,-1103889731,1045838144,1016847523)+W(2,-1138466445,-1088654431,1063939041,-1114759963)+W(3,1041422472,-1079526160,1057394281,-1109966789)+W(4,-1112294435,-1109020730,1061143403,-1115564074)+W(5,1012707679,-1095389295,1057286118,-1117689671)+W(6,-1150731309,-1102056896,1040465365,-1133534770)+W(7,-1118891707,-1101414784,1042544156,1028492087);sum2=W(0,-1161717665,1033867626,1028201267,-1124228530)+W(1,-1138679732,-1115218580,-1096378423,1029766795)+W(2,-1121504639,1030621655,1071708903,-1128256742)+W(3,1050854432,-1096361601,1079482342,1035298280)+W(4,-1106511096,1044499063,-1064184100,1035336882)+W(5,1030373815,-1104067382,-1089118805,-1105361644)+W(6,980628162,1040061476,1048273255,-1119150405)+W(7,1031200951,-1122098343,-1109436715,1035049634);WS(1045693694,1057374369); +sum1=W(0,1048369598,1034312519,-1131023893,-1099588978)+W(1,-1104752283,1045853799,-1098373234,1019902402)+W(2,1031950009,1057046586,-1095062180,-1105510198)+W(3,-1123958928,1065585622,-1089164628,1033283356)+W(4,-1103831441,1061666460,-1092432965,-1115031649)+W(5,-1106189273,1060939321,-1087345809,-1122647270)+W(6,-1103850789,1050689810,-1092965100,-1126666680)+W(7,-1110300085,1060417841,-1091010256,-1103574093);sum2=W(0,-1087427905,-1098709872,1072153031,-1089481634)+W(1,1058683530,-1099141199,-1088885778,1056590706)+W(2,-1081734921,1032637312,1061509476,-1092495010)+W(3,1050776004,1072181481,1071890032,1048814690)+W(4,1042479954,1036599206,1052304550,-1095810808)+W(5,1025544982,-1080357543,-1080881103,-1097308566)+W(6,-1105492903,-1113642582,1050862866,-1094462248)+W(7,1058740427,-1086527647,-1078556244,1039671439);WS(-1081549664,1060153996); +sum1=W(0,992286043,1063391104,-1087586274,-1105647870)+W(1,-1115318586,1055271797,-1095899708,1025423024)+W(2,-1105782456,1062019397,-1085498120,1033921889)+W(3,1026471870,1061503832,-1089250259,-1113405924)+W(4,-1114468402,1058772501,-1090055577,-1113674825)+W(5,1037910210,1045594046,-1102496824,-1106446561)+W(6,-1130210466,1049908468,-1103786988,-1118412923)+W(7,1043803882,1040755007,-1104619012,-1096097592);sum2=W(0,1053790549,-1080860351,-1068185653,-1082483044)+W(1,-1110257416,-1097530578,-1077346152,-1088866791)+W(2,1033688102,1041061421,1052310674,1052658871)+W(3,-1102619530,1064966059,1072556372,-1104178634)+W(4,-1117483359,1050344847,1075004369,-1108410079)+W(5,-1098152061,1040479494,1064749402,1040931499)+W(6,-1105743952,1051151965,-1110156824,-1137891932)+W(7,-1083553679,1065962098,1045213317,1053124980);WS(-1079020096,-1097079011); +sum1=W(0,-1109501731,-1096742621,1057943754,1016000225)+W(1,1033910555,-1092191510,1055662529,1020967408)+W(2,1015347636,-1089091160,1059647341,-1102027816)+W(3,-1108027795,-1087072713,1068092504,-1109882648)+W(4,1042979875,-1087558450,1059824411,-1106889398)+W(5,1019929124,-1089417126,-1117499817,-1117366414)+W(6,1040369234,-1104831498,1043480574,-1104827345)+W(7,-1134559750,-1091818621,1050143023,1049289276);sum2=W(0,1037631964,-1097479797,1051023588,1045348435)+W(1,-1105851814,1051380185,-1097950410,1028003104)+W(2,1036652885,1028410699,1034374804,-1113269608)+W(3,-1110757790,1044594400,1053237761,1041832368)+W(4,1024508007,1041068006,-1132209182,1033918380)+W(5,-1139201564,1046036650,-1088293598,-1089693526)+W(6,-1113225064,1054960427,-1081781977,-1099925151)+W(7,-1104657620,-1105334641,1065714224,-1106359824);WS(-1087384991,1052875812); +sum1=W(0,1041733252,-1109905397,1041497057,-1113613058)+W(1,-1138647561,-1104994285,1032882549,-1117825756)+W(2,1034391503,-1107522048,1050093354,-1108789794)+W(3,-1106477875,1057597757,-1091247383,1028766931)+W(4,-1100509868,1062613266,-1087942224,1042722079)+W(5,-1098694249,1055828187,-1090201627,1013355333)+W(6,-1110959830,1052485297,-1098203032,1034047139)+W(7,-1120730421,1044647290,-1100016695,1038812681);sum2=W(0,1019350107,1041831066,1051650697,-1103332568)+W(1,-1111428867,-1130655130,-1112274143,-1077765094)+W(2,1017374087,-1138336400,-1092155273,-1073481211)+W(3,-1112005123,1035402260,-1114034096,-1087514353)+W(4,1028700445,-1116945124,1045953881,1069095754)+W(5,-1112772903,1041636268,1041190902,1074086485)+W(6,1027823157,-1107238338,1049171133,1057277153)+W(7,999439052,1033528252,1027833254,-1107727987);WS(1050457727,1041689780); +sum1=W(0,-1131312139,992358355,-1092744895,1048008788)+W(1,-1116681402,1014710691,1027381214,1036450832)+W(2,1030961105,1040368912,-1089348299,1053966377)+W(3,-1140959985,-1105027369,1050737138,933247243)+W(4,1046496193,-1089290871,1038810352,1043432004)+W(5,1048638526,-1090315138,1055368676,-1119062181)+W(6,1007270019,-1098770776,1040416748,1023583738)+W(7,1049181764,-1086147588,1051301702,1037141075);sum2=W(0,-1107193278,1057496780,1072935738,-1080570956)+W(1,1019433289,1031729137,-1080020989,1054527180)+W(2,1039188525,1037283932,-1078950448,-1096917141)+W(3,-1123892633,-1086728254,-1087453268,1050123895)+W(4,1039851328,-1087309268,1051352061,1053948249)+W(5,1032631611,-1092570464,1059438018,1042769096)+W(6,1044641782,1035754242,1051006721,1029707984)+W(7,-1097026795,1063903066,1056300653,-1106545458);WS(-1084263519,-1088250567); +sum1=W(0,-1107101246,1048954180,-1118116730,-1111017296)+W(1,1049480649,-1096698757,1027018719,1043604572)+W(2,-1097447514,1059331526,-1108150329,-1098833704)+W(3,1049647488,-1119095878,-1090501921,1050343697)+W(4,-1099235545,1040553109,1044929028,-1096264890)+W(5,1018612505,1041330418,-1094468036,1044030041)+W(6,-1103944776,1040723088,1047463532,-1121471547)+W(7,1032447885,1023387386,-1106285556,-1175819022);sum2=W(0,991719940,-1157381748,-1100952734,1029794653)+W(1,1034086314,-1121095386,1027786887,1016292894)+W(2,1055828179,-1103829652,-1085350121,1067178121)+W(3,1034571486,-1100672658,-1118546758,-1098007098)+W(4,1049088345,-1090417467,1049271738,1008607005)+W(5,-1098363481,1050795943,-1140682323,-1110134488)+W(6,-1111430799,-1113801830,1035813474,-1115483467)+W(7,-1111365517,1037803588,-1164121191,-1133015817);WS(1066054400,-1125664425); +sum1=W(0,1015260777,1054574294,-1095241461,-1127045294)+W(1,-1108545200,1053284635,-1094415406,-1111343263)+W(2,1023624464,1059735702,-1088764634,1041542629)+W(3,-1109354663,1058150961,-1078845388,-1130514988)+W(4,1023465234,1058102002,-1090401103,1035892576)+W(5,-1108921531,1063397581,-1105651068,-1136829776)+W(6,-1116445024,1046571067,-1116790272,1030749305)+W(7,-1128865616,1046728251,-1104354311,-1106930027);sum2=W(0,1041565398,-1104697837,-1115419200,-1158883614)+W(1,-1103469615,1029373537,1031260861,1035036640)+W(2,1029690269,1057447179,1026403525,1034486240)+W(3,1035794320,1080145714,1043319440,1041655252)+W(4,1035452008,-1103623095,1050811672,-1114789346)+W(5,-1107146771,-1066097425,-1103531154,-1114794272)+W(6,-1124704946,-1097535851,-1090176537,1036709484)+W(7,1040850628,-1103109309,1055196268,-1102936938);WS(-1087901375,1071177135); +sum1=W(0,-1121594272,-1110224028,1030219348,994425384)+W(1,-1122618691,-1109965218,1047787782,1027034090)+W(2,-1114434254,-1120206908,-1114914192,-1106192913)+W(3,1044010486,1010935165,-1113546820,1040356168)+W(4,-1113833999,-1108541318,1046030645,-1112701798)+W(5,-1108159437,1041417229,1035224125,-1130438655)+W(6,997526195,-1109330685,1017890711,-1151173965)+W(7,-1123472883,1039497451,1022061139,-1125745551);sum2=W(0,1042217679,-1116367239,1026421701,-1140328609)+W(1,-1108814485,1042859710,1027395369,-1114630403)+W(2,1058334461,-1078638996,1028343990,-1105295199)+W(3,-1080767453,1073929687,-1097310248,1028261520)+W(4,1050991857,-1092080339,1042808122,-1122297114)+W(5,1030602271,-1116721722,1051491707,-1105219597)+W(6,1034906705,-1106162437,1024141024,997359482)+W(7,-1127683613,1035114111,-1112071525,1017171678);WS(1066545696,-1154623394); +sum1=W(0,-1105442505,-1114054203,1057182265,-1123432545)+W(1,-1115505461,-1098488296,1049322687,1010507424)+W(2,-1102287846,-1092352928,1062190966,-1097309632)+W(3,1023914903,-1089108436,1059635472,1045294808)+W(4,1021900696,-1087887754,1057132007,-1098559779)+W(5,1016559928,-1096061654,1043675118,1042399967)+W(6,-1142506442,-1097827287,1048482034,-1110816589)+W(7,-1129232035,-1095543703,1055016957,1026256390);sum2=W(0,-1094410020,1040526244,1038890507,-1120085021)+W(1,-1073520568,-1119660436,-1105577163,1014274624)+W(2,-1076806727,1072065972,1038803075,-1119386280)+W(3,1007932024,1074284701,-1096715819,1032586275)+W(4,-1129053184,1045336233,1048625414,-1148623280)+W(5,-1126774165,-1114285571,-1106066396,1033069015)+W(6,1016297320,1027498382,1035667090,-1113847206)+W(7,1026440100,-1109537500,-1128514892,1028560484);WS(1055250687,-1106970626); +sum1=W(0,1033119688,1042190962,-1096546392,-1117586055)+W(1,-1105149829,1055784922,-1103230410,-1125652468)+W(2,1043588463,1039447718,-1093610964,1035816565)+W(3,-1098690473,1060328969,-1094495495,-1103963220)+W(4,1051357302,-1105877415,-1104321127,1047255951)+W(5,-1111820283,1050469874,-1102978667,-1108600424)+W(6,1036109552,-1123255849,1034127854,-1157028943)+W(7,-1119401059,1044861546,-1097968467,1018776031);sum2=W(0,1038757267,1030211853,1033894636,-1133782171)+W(1,-1111076574,-1147844455,1039985174,-1117005539)+W(2,1036628998,1002666567,-1092985165,-1150866734)+W(3,-1107631850,-1080902130,-1084645521,1049641986)+W(4,1045867530,-1089131777,1069738325,1051354211)+W(5,-1126199158,1067727291,-1096580382,-1100550183)+W(6,1034641438,1050167793,-1100096489,-1104598763)+W(7,1014361489,-1114432338,-1100261485,1033251244);WS(1063662431,1022143153); +sum1=W(0,-1101665898,1028101088,1045825111,-1107336877)+W(1,1044567949,-1100200043,-1112112432,1049135824)+W(2,-1113912242,-1110575390,1011332621,-1117269540)+W(3,1054985008,-1090770105,1036354680,1043762234)+W(4,-1089448239,1042239925,1053092900,-1090665684)+W(5,1031890901,1034205190,1020582213,1045380738)+W(6,-1106608329,1041117720,-1122250931,-1108114694)+W(7,1016341751,1032506575,1037368233,1027635960);sum2=W(0,-1109621945,995625223,1033690799,-1127273987)+W(1,1044140338,-1125871763,-1131300267,1031533647)+W(2,1011973298,1059194369,1019603073,-1100093028)+W(3,1054192939,-1085775903,-1105557074,1049649037)+W(4,-1083519810,-1085690186,1066625604,-1099380904)+W(5,1050669158,1055305067,-1093331249,1041330252)+W(6,1015542539,-1115586758,1025625789,-1109873113)+W(7,1007706050,1024423563,-1163078190,1021669909);WS(1065395904,1046290614); +sum1=W(0,996799560,-1125542553,1038203972,-1122586727)+W(1,1015596034,1043656950,-1105153011,1036793959)+W(2,-1100668872,1056396433,-1085640859,1049715632)+W(3,-1100927819,1054862894,-1101762943,1035554923)+W(4,1043886221,-1088911438,1057024083,-1115152096)+W(5,1025322396,-1099487682,1036429768,-1122121748)+W(6,1035443240,-1105531411,1021072448,1039652277)+W(7,-1114934548,-1117673547,1035195023,1024299964);sum2=W(0,1029237671,1017509749,-1104176053,1032328729)+W(1,-1133651707,-1140172751,1038596873,1037378915)+W(2,-1114304490,1030543605,1050264307,-1104642832)+W(3,-1114162505,-1092617066,-1093179067,1049979232)+W(4,-1125875827,1051105475,1071302855,-1110244360)+W(5,-1112015576,1033357967,-1090684841,-1085540383)+W(6,1015895733,1011455075,-1100815852,-1135016203)+W(7,1035088799,-1105982664,1003487558,1015899853);WS(1058730335,1038095077); +sum1=W(0,1050009523,-1090412329,-1116071407,-1120619710)+W(1,-1156396202,1022785342,-1112028282,1033123659)+W(2,1045232946,990514519,1027669243,-1138222105)+W(3,-1123440788,1051849503,1025171300,1042856679)+W(4,994853272,1050259497,-1091444451,1043400402)+W(5,1029074928,1048747736,-1091116387,1046148791)+W(6,-1116532263,1040337077,-1095024325,1031722640)+W(7,1016043038,1047238893,-1085293672,1050565349);sum2=W(0,1046272294,1056160584,-1069609928,-1086350256)+W(1,-1119023958,1047372879,-1100807597,1012350161)+W(2,-1106071503,1066704996,1063602974,-1093103672)+W(3,-1097641458,1062851774,1071319304,-1165704932)+W(4,-1099339001,-1127558738,-1123458905,-1099266547)+W(5,-1122591395,-1095719050,1049925865,1039176837)+W(6,-1120322169,1012197993,1037702687,-1104052164)+W(7,-1112624405,-1094334166,1046841945,1043315186);WS(-1102208382,1082454872); +sum1=W(0,-1121527792,-1097489215,1044710709,1024559218)+W(1,1019782131,-1109352802,1043005718,1025756170)+W(2,-1111677734,-1089475261,1059136208,-1098383546)+W(3,1042764822,-1094323164,-1113184692,1034230961)+W(4,-1098291428,1057233791,-1102862820,-1121795355)+W(5,-1109244559,1055571354,-1113821821,1034138424)+W(6,-1122839755,1036609181,1016630678,-1148370726)+W(7,1023050790,1023873367,-1122283881,1021065311);sum2=W(0,1012975921,-1113722375,-1109752074,1009270385)+W(1,1033684352,-1113902527,-1108511603,1034062718)+W(2,-1119837718,1034379158,1047596894,-1096952633)+W(3,1048900749,1065557700,1065261424,1042274647)+W(4,-1088385914,1033601684,-1110433219,-1110816087)+W(5,-1106132930,-1078602486,-1113936114,1038223706)+W(6,-1107812043,1048231286,-1106600777,1037668398)+W(7,1047279942,-1117907500,-1110420048,-1111923151);WS(1055139903,1066543323); +sum1=W(0,-1113216706,1025777755,1062476912,-1094834883)+W(1,1034160554,-1106690282,1047449287,-1115394087)+W(2,-1110997976,1025857819,1040533578,-1100641176)+W(3,-1104052311,-1108040417,-1088276389,-1109281747)+W(4,-1130057219,1042814916,1043316038,-1111790927)+W(5,-1100344024,1058801014,-1096553156,-1131081926)+W(6,-1109060119,1040801319,1003175286,-1127882001)+W(7,-1102181302,1061190298,-1109923206,-1116502963);sum2=W(0,1032900543,-1093611286,-1093105706,-1103368978)+W(1,1026043047,-1143136704,-1104881087,996537094)+W(2,1011969739,-1129502699,1056641171,-1097512177)+W(3,1005946567,1065137024,1062580590,1038772124)+W(4,-1104378201,1034934846,-1137732946,-1108835309)+W(5,-1106573410,1044311979,-1102271464,1035638256)+W(6,-1149079854,-1128312106,-1106196955,1028654910)+W(7,-1098913457,-1107526541,-1097055308,-1144299515);WS(1037662203,-1095462961); +sum1=W(0,1051208476,1054332722,-1088537607,1009988859)+W(1,1007151360,1048962332,-1096098779,-1120684294)+W(2,1047867778,1056131053,-1089718811,1043868050)+W(3,-1120692693,1060311124,-1086623130,1008468855)+W(4,-1102286423,1053179033,-1088149909,1024446024)+W(5,1029685138,1057524976,-1093380227,1041242535)+W(6,-1117174983,1045179237,-1094989189,-1121112609)+W(7,998066935,1053688986,-1094538289,1022948968);sum2=W(0,-1075642964,1064397427,1042055631,1049259770)+W(1,-1078284587,1070403917,1050515956,-1100572061)+W(2,-1077677369,1072178178,-1094922849,1038272909)+W(3,-1086975712,1071930150,-1096417404,-1110188613)+W(4,1050575143,-1093947328,-1094640520,1033007627)+W(5,-1109971278,-1119680819,1045435393,-1109186235)+W(6,1043550667,-1134729809,-1109099138,1040318497)+W(7,1046375822,-1094009133,-1106076462,1038207101);WS(-1091974591,1028524890); +sum1=W(0,-1119527298,1050666155,-1104886813,-1119869997)+W(1,1034997099,-1101120961,-1100807815,1044100139)+W(2,-1099802012,1057798952,-1099838668,-1103774309)+W(3,1033463662,-1146674958,1021707158,-1112176434)+W(4,-1090658116,1048486316,1057612011,-1094617942)+W(5,1044419888,1054164791,-1093871840,1036492177)+W(6,-1099353751,1033437822,1029138830,-1113521820)+W(7,-1110855131,1053708795,-1104286795,1028051362);sum2=W(0,1029285075,-1114745613,1024121756,-1127985632)+W(1,-1113245689,1037297246,1034295695,-1103172653)+W(2,1046869988,-1113507597,-1081105309,-1097344586)+W(3,-1099734421,1057852752,1063764387,-1092930743)+W(4,1045806866,1031538739,-1093953622,1039548141)+W(5,-1099048447,1019950674,1060684479,-1113791115)+W(6,1040440310,1039903515,-1099720743,1024790472)+W(7,-1129472848,-1115367833,1051222485,-1106398082);WS(1058893599,-1078409713); +sum1=W(0,-1115244150,-1102829117,1039336887,-1115623287)+W(1,1036724056,-1100240992,1053376406,-1114512019)+W(2,-1098555735,-1094663483,1053054383,1041993169)+W(3,1049246955,-1084866106,1065100884,1018575674)+W(4,1045222582,-1085064800,1054590883,-1114852275)+W(5,-1138283737,-1093243506,1056764679,-1108377677)+W(6,1044966206,-1093950047,1053059489,-1118180448)+W(7,-1115412967,-1095580366,1050610273,-1122449691);sum2=W(0,-1130929736,-1101060123,1045192083,-1105822172)+W(1,1009552185,-1090337753,1061442923,-1103557108)+W(2,-1084383778,1072779570,1050903982,-1106762492)+W(3,1050909748,1053567468,-1089269841,-1117595750)+W(4,1049209322,-1079161361,1029505799,-1111371347)+W(5,-1096700837,1057662166,-1094014597,1025228376)+W(6,1051369678,-1097661058,1046387683,-1138825972)+W(7,-1129474226,-1112521942,-1105984421,1030887459);WS(-1109369595,1048740969); +sum1=W(0,1040995480,1051718495,-1091711555,-1125552391)+W(1,1030414773,1050319297,-1095167863,1032958437)+W(2,-1118646413,1059003715,-1085356599,1042985722)+W(3,1043594790,1046504696,-1083562713,1045509569)+W(4,-1129436350,-1135436979,-1096690237,1023899916)+W(5,1037121811,1043825845,-1098326935,1019546753)+W(6,1030207412,1049475887,-1120665100,-1130219052)+W(7,1043560049,1058279379,-1098718953,-1105013544);sum2=W(0,-1113177829,-1117552581,-1100446453,1041583669)+W(1,1043809265,-1109343151,1039662186,1009024316)+W(2,-1095416462,1052574118,-1114145263,-1118793923)+W(3,1034071291,1063553374,1053677817,1018689733)+W(4,-1120341831,1070912061,-1101063801,1031195477)+W(5,1043900974,-1112203792,1042882834,-1105538343)+W(6,1020015593,-1091338378,-1094258913,-1114748986)+W(7,-1119209873,-1072794661,1055602011,-1109237633);WS(-1093437503,1065718162); +sum1=W(0,1037550096,1049488055,-1103061781,-1114711965)+W(1,-1101135841,1042594425,1046266118,-1097873069)+W(2,1044878747,1049041945,-1087470164,1046063170)+W(3,-1107014286,1066142676,-1106438298,-1091362312)+W(4,1042111087,-1100146203,-1111606545,1037494709)+W(5,1037051057,1045825417,-1091131027,1040258368)+W(6,-1099961615,1040663590,-1133427370,-1109172298)+W(7,1041500301,-1119554198,-1103590594,1033770775);sum2=W(0,-1106488910,-1123106758,1050172947,-1124712996)+W(1,1026201604,-1113590739,-1092748399,1043391307)+W(2,1035711566,-1084666863,-1097703384,-1098783459)+W(3,1060425407,1061776657,-1099741350,1048423650)+W(4,-1098764525,1055047321,-1120322586,1041036039)+W(5,-1096618367,-1119175762,1050324229,-1099280352)+W(6,-1182808622,-1103500958,1025620288,1048645442)+W(7,-1127820908,1041613778,-1105222946,-1118590758);WS(1056660607,-1113798601); +sum1=W(0,-1115305597,1041913228,1012656821,1026504084)+W(1,-1101671294,1008348404,998498191,-1151777337)+W(2,1016801995,1031963795,-1102006873,1032505286)+W(3,1039904137,-1093680051,1057450908,-1108358078)+W(4,1037148876,-1089471492,1049874551,1031920291)+W(5,1040453028,1034024758,-1111681498,1043455038)+W(6,-1110559226,-1111400057,-1109457443,-1129849213)+W(7,-1154296528,1031051312,1036430914,-1125050675);sum2=W(0,1042939003,1024638457,-1123927190,998901155)+W(1,-1114796094,-1101207597,1042777565,1022659417)+W(2,1044529628,1027593065,-1098782283,1017512357)+W(3,-1124781020,-1097759574,1059165645,-1104939928)+W(4,-1106748864,-1130307786,1062760553,-1098668376)+W(5,1016881133,1033669310,1017094385,-1089791762)+W(6,-1108227590,1022409637,-1160993898,-1106217568)+W(7,1027959261,1019735589,-1125388747,-1115680109);WS(1066155712,1004288134); +sum1=W(0,1047132567,1049267618,-1089062279,-1138510971)+W(1,1029697589,1048612844,-1092380195,1046969501)+W(2,1014062303,1055750611,-1088453014,1024451359)+W(3,1041631965,1059093756,-1084647474,1049129552)+W(4,991515041,1057479944,-1091963789,1040560290)+W(5,-1123217244,1056993158,-1088742789,1043007167)+W(6,-1154741365,1047138005,-1098495965,-1122630737)+W(7,1030265807,1055767146,-1086886676,-1122583780);sum2=W(0,1011892235,1040858440,-1127819845,1010964983)+W(1,-1111382628,-1103755803,-1109875610,-1106716388)+W(2,1037768402,-1125277089,-1096621612,1032593498)+W(3,1032283234,-1084511950,-1071556311,1040462902)+W(4,-1114728106,-1090323786,-1071973667,-1100404332)+W(5,1009460031,-1159433014,-1099343032,1040394500)+W(6,-1112526532,1053584755,1076043190,1007208771)+W(7,1030203700,1052886875,1079690007,1051792925);WS(-1086041375,1049976369); +sum1=W(0,-1125608345,-1096855193,1037693680,1048607039)+W(1,1025261033,-1097190986,1051176741,1030637974)+W(2,1032012444,-1086237883,1059434222,1026121224)+W(3,1046732297,-1083643033,1062665585,-1103554484)+W(4,-1114869141,-1093631755,1052924527,-1110078044)+W(5,1036081274,-1095059844,1052562329,-1109004102)+W(6,1036645660,-1132519191,1041010310,1035782593)+W(7,-1119140736,-1095180224,1048775023,-1118200972);sum2=W(0,1029601330,-1115199196,-1096390757,-1079547524)+W(1,-1144560396,1026958814,-1100298556,-1081990625)+W(2,1032763954,1032369083,1076866217,1041174181)+W(3,-1115106220,-1106065675,-1108884178,1041059708)+W(4,-1111454114,1042189754,-1116766618,1024602232)+W(5,-1121335223,1029124674,1025985538,-1127158528)+W(6,-1109520646,1022674491,-1115268590,1007020790)+W(7,1021645795,1026253022,1011072742,1003377428);WS(-1111980027,1060626277); +sum1=W(0,1023621139,-1102882983,1044706422,1028429765)+W(1,1032179266,-1092055397,1043529367,-1113080214)+W(2,1030954414,-1089823274,1057090380,-1101761443)+W(3,1037158526,-1095093232,1064981515,-1098683411)+W(4,1036765152,-1090725010,1047303429,1033439719)+W(5,1036680203,-1139402199,1042557255,1030304674)+W(6,-1146606447,-1116432156,1028925358,-1104492078)+W(7,-1119312598,-1108873773,1041638915,-1112219839);sum2=W(0,-1107703976,1045439570,1032849260,-1122224669)+W(1,1046455264,-1090239140,-1096329612,1035962913)+W(2,-1093472442,1028879562,1030082819,-1098806672)+W(3,1048924762,1064195571,1036056807,1041148911)+W(4,-1097201227,1016778259,1059898488,-1091828205)+W(5,1049435664,1027385222,-1091675747,1041687668)+W(6,-1106239872,1028121257,1053658286,-1098243254)+W(7,-1119402461,-1105208479,-1117889585,-1104565052);WS(1062681599,1040842201); +sum1=W(0,-1108789463,-1104300209,1042117608,-1118282400)+W(1,-1115361429,1050445194,-1097788769,-1114475276)+W(2,1048981817,-1089127203,1032428200,1049574381)+W(3,-1092926921,1063952639,1049970971,-1090427073)+W(4,1054602509,1043197406,-1088418847,1045778638)+W(5,1029602904,-1106041808,1049956321,-1112080775)+W(6,-1117967305,1039191171,-1112931212,-1097758566)+W(7,1025443329,-1114238594,-1123051255,1033393295);sum2=W(0,1038735267,-1126315713,-1111714958,-1111656758)+W(1,-1100048068,1043050536,-1115313021,-1115683900)+W(2,-1115453090,1053683464,1046662525,-1093358619)+W(3,-1110884051,1058830244,1061563017,-1105966973)+W(4,-1090743949,-1100540415,1052621807,1037413595)+W(5,-1153955669,1037942519,-1104363663,-1101879362)+W(6,-1112598570,-1098889179,-1118760183,1044482581)+W(7,-1103797208,1040830228,1007755797,-1098877089);WS(1062776447,1069975051); +sum1=W(0,-1130308944,1036893844,-1104137265,-1108240801)+W(1,-1112835078,-1114635034,-1098478453,1029922778)+W(2,-1113144126,1050058840,-1104852259,-1111877761)+W(3,-1094805377,1071110128,1041368142,-1088740684)+W(4,-1098008538,1061455014,-1095764665,-1112520550)+W(5,-1114270939,1044746969,-1109080309,-1119589855)+W(6,-1117364667,1018226642,-1103882015,-1121527653)+W(7,-1117827459,1049407081,-1120810969,-1103102129);sum2=W(0,1028834725,-1113117380,1037052904,-1113210551)+W(1,-1110297977,1026197871,996515330,1032917698)+W(2,1035091068,-1099362318,1043940575,-1106692355)+W(3,1034973002,1077416661,-1069860026,-1103487680)+W(4,-1110025415,1050456944,969317772,1034055293)+W(5,-1154986018,-1112814852,1021906202,1006658352)+W(6,-1120031976,1027999489,-1115577362,1018186436)+W(7,1030684381,1016280910,1013156184,-1124181989);WS(-1082599007,-1084302409); +sum1=W(0,-1127095446,1056665680,-1087212124,1035858193)+W(1,1011517278,1052281350,-1096260148,-1128228554)+W(2,-1110892475,1058821842,-1085877656,1043137767)+W(3,1024933540,1061132051,-1087957451,1023709101)+W(4,-1111586789,1054434479,-1089270826,1037286635)+W(5,1039136849,1052720805,-1102718609,-1111842501)+W(6,-1108207315,1043783817,-1106422582,-1130056576)+W(7,1049617952,-1159632952,-1106709957,-1115207149);sum2=W(0,1048459811,-1095160239,1026509768,-1123792544)+W(1,1071226724,1065850492,1043007163,-1127547903)+W(2,1075494724,-1121381976,1043168485,1027169380)+W(3,1074401127,-1099027008,-1093896652,-1107011198)+W(4,1044864951,1031151008,1012395574,1037067951)+W(5,-1077687291,1057399482,1019701051,1021690579)+W(6,-1072311776,1045213405,-1109946848,-1124089088)+W(7,-1066953112,-1095971461,1027278540,-1166810856);WS(-1118215158,-1130722305); +sum1=W(0,1039784439,1045520358,-1094865274,966095017)+W(1,-1119983743,1040649785,-1098235299,-1166742058)+W(2,1027132090,-1126797149,-1085881139,1023429181)+W(3,-1101267710,1070303194,-1106608186,-1127173569)+W(4,-1106141431,1059129261,-1088850304,-1112024885)+W(5,-1119840977,1056727436,-1093134907,1030946302)+W(6,-1131926580,1040938982,-1098615277,-1160489077)+W(7,-1158357571,1050582583,-1104503154,-1106263629);sum2=W(0,-1122933952,1043676402,-1122578476,1034421913)+W(1,1029904221,-1092335308,-1096734640,-1121365342)+W(2,-1104768174,1050667883,-1067932755,-1103315560)+W(3,1044174015,-1106663265,1078656606,1049347404)+W(4,-1122786276,1035773679,1056344301,1027752905)+W(5,1032455763,1033986578,-1106732625,-1114333025)+W(6,-1118952582,-1123822916,1033374173,1025409455)+W(7,-1120585334,1030027555,-1116084330,-1129253837);WS(-1112296443,-1083191171); +sum1=W(0,1030599873,1049894985,-1100141489,-1124642344)+W(1,-1102688301,1052276159,-1095734081,-1114229790)+W(2,1038739494,1055519004,1044438853,1039505712)+W(3,-1091052013,1061107959,-1078809864,-1108354137)+W(4,-1120252367,1059731464,-1100785926,1037196526)+W(5,-1118018759,1052059899,-1095185489,-1129006466)+W(6,-1105737735,1050382861,-1092887220,1034647259)+W(7,1036799090,1050879021,-1113977245,-1123394945);sum2=W(0,-1134366274,1032198029,-1102569648,-1113629492)+W(1,1040286055,-1093721101,1059013351,-1099320981)+W(2,-1103185345,1064064153,-1076328416,1062572765)+W(3,-1089934078,1038410574,1075980540,-1079072621)+W(4,-1104699884,1053501328,-1081344728,1057269325)+W(5,-1135474394,1053898256,-1093863519,1039501040)+W(6,1039368980,-1088730122,1061819985,-1089994189)+W(7,984214720,1045555557,-1089334779,1050815727);WS(1051639487,-1077445112); +sum1=W(0,1023584208,-1087680633,1058381481,1019116206)+W(1,1019039018,-1097242582,1049175941,-1110819225)+W(2,1046978951,-1087958558,1059595066,1041321753)+W(3,-1114024277,-1084584703,1058705186,-1110784681)+W(4,1042440780,-1089578188,1060807824,-1120949436)+W(5,1036430651,-1090497932,1057261083,-1111841304)+W(6,1019910405,-1100840226,1047705823,-1108976675)+W(7,1017051223,-1089989738,1052092149,1037750032);sum2=W(0,-1103483317,1043027417,1043672886,-1126025102)+W(1,-1103949071,1024633771,-1105891820,-1101612494)+W(2,1036613850,1050158855,-1113242263,1051748473)+W(3,-1096200772,-1096718424,1053817256,-1144187697)+W(4,-1094761445,1057240079,1043447632,-1129269697)+W(5,-1090478844,1037855330,1053166295,-1114569970)+W(6,-1091384835,1036780676,1043680942,-1102484885)+W(7,1024429003,-1103545669,1034776200,1044262941);WS(-1102141694,1066754929); +sum1=W(0,1024767465,-1097150806,-1121670572,1047316983)+W(1,1028037205,-1105574095,1021251426,-1123186307)+W(2,-1148374821,-1092607882,1053426631,1027553675)+W(3,996156698,-1086231302,1064662112,1037457517)+W(4,1034886379,-1085570014,1060264850,-1103359865)+W(5,1011245536,-1090150659,1058905527,1031219256)+W(6,1017269224,-1093685286,1047037217,-1108923303)+W(7,1023537404,-1100403588,1048736520,1039125668);sum2=W(0,-1127568330,1005444026,-1099850392,-1069105992)+W(1,1031019669,-1121000217,1052911126,-1075891845)+W(2,1013355589,-1135062981,1040255711,1052106082)+W(3,-1123247753,-1099801823,-1120914990,1078854269)+W(4,-1131101666,1044314830,1055431083,1061745892)+W(5,-1126559289,1052295626,-1112663055,-1097592921)+W(6,-1128009624,-1112001042,1029993103,1033712114)+W(7,-1122774763,1018744598,-1105142519,1037317546);WS(-1092827839,1049601702); +sum1=W(0,-1102748075,-1114726817,1043768535,1001409895)+W(1,1048973336,-1100496851,1037939345,1025584388)+W(2,-1101661842,1056141590,-1092531310,1043222609)+W(3,1035794226,-1092935501,1048278549,1028885900)+W(4,1035295380,-1090189951,1059458263,-1097823129)+W(5,951002293,-1127762491,-1107678146,1046084402)+W(6,1028700102,-1107070641,1040739973,1018269854)+W(7,1019995195,-1116434785,-1103464157,1033486885);sum2=W(0,1047648616,-1099866854,1040911688,-1104812914)+W(1,1049954711,-1087014785,-1127547935,1032774583)+W(2,-1086499077,1059941103,1006897087,-1118719608)+W(3,1036131868,1059724034,-1147690453,-1112213150)+W(4,1021844703,-1104253425,-1094365093,1020986307)+W(5,-1144052469,-1116739540,1046092804,1037506252)+W(6,1036766656,-1123734224,-1117733622,1020773629)+W(7,-1114852932,-1119117496,1045874226,-1120467144);WS(1062974879,-1132215613); +sum1=W(0,-1181157822,-1096960767,1047884458,1046591191)+W(1,1033235448,-1103300066,1024586364,1028472621)+W(2,-1120645311,-1098273063,1040665968,1027902609)+W(3,1032693326,-1084817024,1065496294,-1105457745)+W(4,1014937094,-1086871647,1061273423,-1099580452)+W(5,1012846527,-1093312183,1057013666,-1121668195)+W(6,1029466479,-1094276984,1048826162,-1123904424)+W(7,1027727527,-1099477807,1049029078,1033797162);sum2=W(0,-1120861164,-1114727130,1051943787,1073213517)+W(1,1023555157,-1127207629,1021361633,1067585393)+W(2,-1114715157,1049207316,-1100379929,-1095215585)+W(3,1039733942,-1100512081,1049204344,-1072102567)+W(4,-1111876903,1044392032,1029680046,-1085077901)+W(5,-1121732899,-1113639142,1040523175,1017790060)+W(6,1028106223,-1107243417,-1113800818,-1115100698)+W(7,-1136150442,1035475508,1017564481,-1111101803);WS(1038961915,-1122010239); +sum1=W(0,1004620105,1048595660,-1099376311,-1116246236)+W(1,-1113106351,1052250558,-1096833644,1027857155)+W(2,-1112775210,1058549636,-1088891129,1036452944)+W(3,-1125534724,1061573929,-1086812373,1040782707)+W(4,-1137271196,1057522353,-1093214133,1018281129)+W(5,-1126589322,1048822826,-1095914356,-1113857108)+W(6,1026657556,1040718305,-1105329661,1010557432)+W(7,-1119328748,1048641524,-1103878453,-1106455448);sum2=W(0,-1116580406,1027562258,1055923683,1077914250)+W(1,1024927837,-1162615720,-1098456431,1064911462)+W(2,-1129828931,1047581344,-1107918233,-1076359256)+W(3,-1115420496,-1109513493,-1093462217,-1072190840)+W(4,1011185933,1038795182,1043574176,1023726209)+W(5,-1123989928,-1118168090,1042713369,-1114062645)+W(6,-1146345634,1030671240,-1118222006,-1119388396)+W(7,-1132229127,1038841827,1029869485,-1111766417);WS(1058520191,-1103814144); +sum1=W(0,1017038583,-1136595532,-1118053743,1027978638)+W(1,1027734728,1016280509,-1128563239,-1097122909)+W(2,1045254802,-1109207324,1044218638,-1104843131)+W(3,-1107262661,1062837304,-1096672636,1033499055)+W(4,-1105442246,1058887264,-1085861660,1025985831)+W(5,1031430877,1040464732,-1103880229,1030848699)+W(6,-1126950445,1030731221,-1107144426,-1131329888)+W(7,1024536063,1029953906,-1145128486,-1109411553);sum2=W(0,1034702970,-1176551015,1007931783,-1110263367)+W(1,-1125598974,-1168898884,-1090251816,-1089294892)+W(2,-1114553387,1041527709,1067159008,-1085860022)+W(3,1027536136,-1101298022,1043575777,1061443693)+W(4,-1115924578,1036785061,1028484706,-1099982080)+W(5,1035052048,-1106074654,-1104273626,1042454777)+W(6,-1132148431,1030578400,-1148595850,1027614804)+W(7,1025333585,1024211757,-1114791455,-1123742626);WS(1061983711,-1098811342); +sum1=W(0,1012577103,1051270689,-1108510228,-1107438075)+W(1,-1126897281,1046420622,-1106195699,-1107699151)+W(2,-1105225996,1058683087,-1088411008,1036711743)+W(3,1024253613,1058369439,-1089548804,1026749110)+W(4,1053413654,-1097514912,-1118840551,-1116819519)+W(5,-1137207095,1052214131,-1096732498,1024709491)+W(6,1042674340,-1105013139,-1109015536,-1140694819)+W(7,-1109172700,1050302029,-1103000311,-1154413112);sum2=W(0,1018267361,1036503366,-1126101987,-1099489904)+W(1,-1110181012,1041828239,-1116783782,-1102883314)+W(2,-1146613180,1050199247,1071387060,1052019906)+W(3,1038715850,-1085432172,-1080125372,1047113133)+W(4,1024296823,1038941240,-1093021050,1035497971)+W(5,1036970119,-1123003584,-1114155200,-1112911441)+W(6,1022003098,1013422114,-1149124484,-1119585859)+W(7,-1124702635,1021003447,-1143100940,-1131838862);WS(1061194367,-1092415693); +sum1=W(0,1036390333,1051201914,-1104881972,-1115149537)+W(1,-1126263470,1053058480,-1172862130,1030237668)+W(2,1025725222,1054554894,-1093268199,1021350042)+W(3,1043857157,1047231542,-1076465248,1036659934)+W(4,1035642972,1057662314,-1087389459,1039247491)+W(5,1044002978,1050872286,-1093150623,1026362746)+W(6,998479342,1045022613,-1111846627,1017611295)+W(7,1045699251,1049392206,-1095910796,1018350484);sum2=W(0,-1129487679,1018376667,-1097777178,-1117386048)+W(1,1042193002,-1087595144,-1098446206,-1106566736)+W(2,-1108339354,1054016721,-1106280983,-1108034123)+W(3,-1095819059,1063707892,1068295659,-1104582586)+W(4,1041127864,1036978867,1052165187,-1102127104)+W(5,-1103499785,-1103064253,-1110264861,1036459063)+W(6,1034257999,-1103241982,-1135489703,-1104779766)+W(7,-1118637794,-1112191100,-1107248782,996655259);WS(-1094699455,1066131816); +sum1=W(0,1049793485,-1081848423,1059460685,1042128105)+W(1,1029004921,-1088299640,1048637514,-1139594888)+W(2,1050253240,-1084057276,1060796209,1026023615)+W(3,1043166228,-1084821317,1059873140,1020508084)+W(4,1029407446,-1084563631,1055943200,-1125172935)+W(5,1041612884,-1104203619,1047596309,1048504406)+W(6,1035949114,-1099802604,1050483936,-1115227886)+W(7,1012128942,-1096241030,-1105809528,1051471881);sum2=W(0,1060779432,1051802488,-1086062785,-1114203174)+W(1,-1118034101,-1097493973,998397725,-1112558489)+W(2,-1104519356,1057101737,-1092333837,-1099984065)+W(3,-1119327164,1060027297,1066349798,-1091352583)+W(4,-1101970936,1044004337,979464170,-1094257268)+W(5,-1106905521,1057962293,-1133317807,-1102635709)+W(6,1002331293,-1098665363,1046794021,-1094504499)+W(7,-1082144605,-1086721729,1070824403,-1114333706);WS(-1074268304,1079667699); +sum1=W(0,-1107189325,-1101508903,1054199089,1035260131)+W(1,1027760991,-1090199334,1054303683,-1107632246)+W(2,-1136873402,-1090363950,1062422475,1005391451)+W(3,-1113641470,-1087996124,1067750847,-1101800081)+W(4,1031162561,-1083961527,-1113534839,1034855959)+W(5,1033891144,-1096484091,1052689284,1046337921)+W(6,-1126712892,-1098094611,1031942551,-1150999418)+W(7,1035917755,-1093567651,1045977323,1042992013);sum2=W(0,-1109104193,-1100757902,1040683096,-1125509919)+W(1,-1121805095,1045040397,-1125556022,1026278254)+W(2,1045986101,1080470972,1049174250,-1112163985)+W(3,1048674700,-1080397282,-1095181876,1050380898)+W(4,-1091901802,-1070026310,-1122013099,-1131668233)+W(5,1048446997,1054845861,-1110936398,1033243862)+W(6,-1113936425,-1109557127,1038355211,-1144282357)+W(7,1027039508,-1113850952,-1103996340,1036778147);WS(-1085238047,-1082053459); +sum1=W(0,-1106787663,1039996894,1048926451,-1104330662)+W(1,-1138285833,1010512412,-1119213276,-1128637723)+W(2,-1108632776,1053399812,-1130975030,-1108017347)+W(3,-1094657608,1045540841,1010216242,-1096910157)+W(4,-1101713608,1051732998,1034301867,-1101323868)+W(5,1037328759,1044326914,1025236158,1015829447)+W(6,-1111697288,976543556,-1128978334,-1111437732)+W(7,-1109379868,1057105320,-1109745879,-1108664266);sum2=W(0,-1124623913,1025825838,1042257288,1021162350)+W(1,1032956443,-1119700813,-1135835500,-1114452863)+W(2,1027185909,1032253087,1053804277,-1109212782)+W(3,-1101336864,1046009611,1048892371,-1102267892)+W(4,-1094263361,1060071017,1036906607,-1105958464)+W(5,1029736763,-1108021530,-1101254223,1037505372)+W(6,-1112090109,-1111711122,-1115069322,996911332)+W(7,1039412150,-1092338318,-1114145526,-1125671849);WS(1060867039,-1136390908); +sum1=W(0,-1127355032,-1085412379,1049179798,1047055468)+W(1,1034805910,-1094311080,1049208039,-1108149971)+W(2,1035163860,-1093352008,1060583566,1036232649)+W(3,1029669941,-1084691216,1063283264,-1103012671)+W(4,1042066222,-1088428116,1058522472,1024178471)+W(5,1021674692,-1088125293,1055147879,1026233836)+W(6,1040577786,-1096644095,1050065089,-1126656770)+W(7,1021261983,-1091872390,1041474713,1049799631);sum2=W(0,1035672114,-1063752230,-1093487673,1013645866)+W(1,-1098827199,-1085747691,1041803367,1034418818)+W(2,1049155846,1077059336,1041184099,-1106855503)+W(3,1035178389,1075347264,-1096808218,1049524211)+W(4,-1107113032,1056308660,-1129382302,-1122362105)+W(5,-1144855824,1034654874,-1119639669,1030856901)+W(6,1035201737,-1121418857,-1122522987,1027103888)+W(7,-1127184278,1014935340,1011408026,-1115004359);WS(-1090674303,-1100343233); +sum1=W(0,-1120232797,-1091881416,1051419109,1036288004)+W(1,1040422273,-1094093465,1052500896,1023553551)+W(2,1026412864,-1085938046,1061270771,-1112170192)+W(3,-1138867958,-1089254334,1067891162,-1115349187)+W(4,1033879777,-1089797193,1060067146,-1112030904)+W(5,1033565615,-1085407367,1016645247,998486818)+W(6,1019476032,-1095206984,1041715172,1027103050)+W(7,988102399,-1105032111,1036835111,1040345019);sum2=W(0,1040618154,-1101425729,1012698939,-1121139419)+W(1,-1114130867,1043012943,-1135257643,1033653009)+W(2,-1122148687,1049717343,1047429512,1038119907)+W(3,1044229537,1078734719,1020747990,-1131387750)+W(4,-1110193301,1058416067,1045573328,-1162837210)+W(5,-1097134960,-1066172228,-1105653505,-1124290574)+W(6,1037070268,-1087270128,-1098650023,-1142454518)+W(7,1037459780,1051160418,1029335953,-1119987003);WS(-1083751903,-1076119444); +sum1=W(0,-1115245576,1056842307,-1093345814,-1108216057)+W(1,-1106029427,1054460828,-1096614035,-1118873130)+W(2,-1102084379,1062160243,-1087844584,1032187759)+W(3,-1113929101,1061549380,-1088621915,-1118044066)+W(4,-1115339007,1051628466,-1095344475,-1125935063)+W(5,1029734646,1034628298,1039622221,-1114025640)+W(6,-1110488366,1040780998,1023285463,-1103117229)+W(7,-1147960477,1027250487,1052549785,-1101242061);sum2=W(0,-1142266798,1041896729,-1109207785,-1116438034)+W(1,-1105635988,-1133541327,-1119640286,-1143926222)+W(2,-1108468488,1052249127,-1132044399,-1116983273)+W(3,-1104742183,1059101684,1057719514,-1107716245)+W(4,1004562934,-1116644500,1049160976,1036001553)+W(5,-1111519795,1022626513,1040987637,-1093640310)+W(6,1009402627,1036478091,-1103527129,-1115139384)+W(7,1007186587,-1114250343,-1094402391,-1102449905);WS(1032624635,1033521535); +sum1=W(0,-1131553039,-1098906814,1051615627,1045470610)+W(1,-1117491096,-1100587359,1047570260,1025984961)+W(2,-1112834618,-1081513385,1060987922,1036113314)+W(3,1049918570,-1078593782,1043587024,1040182861)+W(4,1045795365,-1105649745,1056209202,1012071435)+W(5,1016822387,-1092053629,1059398075,1032631435)+W(6,1035361729,-1096260814,1049440024,1023888652)+W(7,-1113168565,-1095243062,1051600524,1034850724);sum2=W(0,-1111826236,-1092384767,-1095745094,1034661269)+W(1,-1099208280,1027875109,-1100947515,1048636172)+W(2,1026789677,1064661507,-1112642295,-1098451609)+W(3,-1106561040,1062273543,1068550638,-1099981129)+W(4,-1093448876,-1087164405,-1104229197,-1118651857)+W(5,1046407154,-1108191451,-1106740917,1049739863)+W(6,-1102666308,1044380270,-1103404028,-1095995165)+W(7,1042570396,-1104593420,-1105841536,1048025970);WS(-1085606847,1061985400); +sum1=W(0,-1108997980,-1089905075,1057688104,1040581229)+W(1,-1117164584,-1114895517,1056544190,-1114811305)+W(2,1031768707,-1095264598,1062390314,-1107526493)+W(3,-1103105924,-1077801587,1055481056,-1110202349)+W(4,1041900981,-1097956992,1062127874,-1118208771)+W(5,-1110420181,-1088999487,1051900674,-1108027100)+W(6,1037113665,-1098379486,1048102065,1024450541)+W(7,1014163116,-1096151518,1057425872,1041210774);sum2=W(0,1025785873,1048760593,1035955606,-1126760968)+W(1,1048912334,-1090084783,-1119218892,1008603006)+W(2,-1096464036,-1114768213,1007739746,-1094704139)+W(3,1056133856,1066763200,1064934573,-1080670875)+W(4,-1104154812,-1086306359,-1089946445,1031309677)+W(5,-1121968309,1058187354,1050702067,-1125625514)+W(6,1033410161,-1113492694,1025685973,-1109240237)+W(7,1015120151,-1128581905,-1102128709,1039335694);WS(-1090966143,-1078936607); +sum1=W(0,-1116393227,-1086961670,1058706816,-1116819366)+W(1,-1108278025,-1108945587,1041859343,1035952359)+W(2,1051625062,-1086695325,1060094467,1041797992)+W(3,-1105522375,-1081986687,1059190367,-1104043025)+W(4,1058727904,-1089148367,1061098519,1053094890)+W(5,-1091195697,-1086453117,1055062080,-1093101306)+W(6,1052016408,-1092689140,1056115606,1015960496)+W(7,-1109728971,-1091172115,1058930855,1034498693);sum2=W(0,1023528661,-1118025227,1075422545,-1073269716)+W(1,-1119417071,1050920275,1065042273,-1077701631)+W(2,-1105978590,-1112399565,1069638520,-1078616397)+W(3,1009798795,-1098493686,1067662601,-1083676116)+W(4,1040834561,1036263434,-1093932676,1044144047)+W(5,-1111364082,-1124489419,-1079439326,1070390370)+W(6,1041397121,1048582480,-1078082886,1068400636)+W(7,1033368796,-1089345484,-1070108577,1077727906);WS(-1079921856,1049308945); +sum1=W(0,1030068962,-1165865787,-1187780005,1025440517)+W(1,-1133949626,-1118082277,-1108803021,-1111921110)+W(2,1050882798,1053008345,1038634079,-1120535059)+W(3,1018623990,-1094507016,-1106873963,-1104818073)+W(4,-1106924392,1052481994,-1087778738,1046575523)+W(5,-1146454049,1043504665,-1101591143,1041667424)+W(6,-1116987117,1047635255,-1101174683,1031519031)+W(7,1040905769,1026870489,-1110197734,1031554658);sum2=W(0,-1116556974,1059176005,-1096412953,-1114011261)+W(1,-1095066961,1038856572,1050790436,-1173649795)+W(2,-1100395256,-1076691076,1058179896,1024138419)+W(3,1050308919,1055715442,-1097771226,1040413046)+W(4,1040792410,1046498927,1039711359,-1106323994)+W(5,1032406727,-1123959066,-1106160519,1033840078)+W(6,1011901446,1028959950,1018212767,-1127468978)+W(7,-1141998384,1032868606,1038360912,-1107910389);WS(1060842367,-1123947436); +sum1=W(0,1024730985,1048950736,-1097448124,-1122548355)+W(1,1023159627,1047784339,-1098772880,1026072115)+W(2,-1105241169,1057388094,-1087773444,1037590622)+W(3,1017803651,1060112037,-1085451727,1037652837)+W(4,1037913699,1062491953,-1088044111,1034810634)+W(5,1035962309,1057656339,-1089872870,1033785172)+W(6,1028045772,-1114528913,-1102522557,1008900343)+W(7,1032728670,997860858,-1103124285,-1114288296);sum2=W(0,1026131421,1001103237,-1133854939,-1114822986)+W(1,-1112740722,-1121600279,1038637096,-1108393699)+W(2,1046858645,-1108221277,1037424280,1029862733)+W(3,1032928238,-1097923247,-1103185020,-1101308237)+W(4,1042166107,1069212508,-1120290433,1036213344)+W(5,1040344552,1057336110,1019342369,-1145606165)+W(6,-1082879617,-1095628134,1039461314,-1111520861)+W(7,-1091819295,-1107037379,-1122429445,1034167562);WS(1038606587,1058047160); +sum1=W(0,1026865207,-1095018974,1044423619,-1136300775)+W(1,1042118304,-1093024127,1048945010,-1117800769)+W(2,1051307036,-1082724754,1054092644,1005722288)+W(3,1033639368,-1100730470,-1097872036,1044405134)+W(4,1046742309,1036658562,-1091674216,1047528601)+W(5,-1109598961,1040951763,1033100505,1044812414)+W(6,1028927539,-1113143704,1030352835,1032954286)+W(7,1015037525,-1098528366,1047837568,1044220906);sum2=W(0,1050657429,1045860939,-1111592920,-1103122208)+W(1,-1103301852,1052242374,1013554208,-1106328874)+W(2,1060573163,-1100974944,-1111727364,1015168980)+W(3,-1091436731,1066745360,1055083328,-1113723980)+W(4,-1104427284,-1079344782,-1098647652,1051192034)+W(5,-1097267636,-1113016512,1034990326,1034643320)+W(6,1038196249,-1119497008,-1110499846,-1122594772)+W(7,-1107511544,-1113648424,1042188938,-1140986496);WS(-1095257599,1052962039); +sum1=W(0,-1106746181,-1097695335,1053309708,1036635571)+W(1,1031300369,-1111219488,1042046133,1032102291)+W(2,1046667354,-1083536631,1060606673,-1110849586)+W(3,1037361867,-1088861218,1053570633,-1103814096)+W(4,1040829967,-1107201338,-1101583222,-1130665360)+W(5,-1128966365,-1115618056,1033575580,1023220920)+W(6,1034540700,-1117058422,1029127944,1009452933)+W(7,-1115420664,-1138753100,1041019129,1041468947);sum2=W(0,-1137205193,-1089705070,-1116057142,-1106134583)+W(1,-1121249932,1025195792,1014073009,-1131583764)+W(2,-1137006201,1049206515,1040872535,1023734245)+W(3,-1101149788,1054529493,1044729510,1030258377)+W(4,1034796937,1039074115,1024555690,1045578999)+W(5,-1115985020,1050074620,-1108168105,1041497164)+W(6,-1140489533,-1104546681,-1105229574,-1131316168)+W(7,1026538132,-1103055048,-1093226929,1036128894);WS(1058062751,-1100017341); +sum1=W(0,-1129599006,1055064995,-1094744478,-1110864465)+W(1,1020928695,1054737968,-1108714620,1035506764)+W(2,-1098371705,1061839865,-1089137095,-1103907470)+W(3,-1111175932,1057524464,-1081607655,-1115102560)+W(4,-1108928286,1062722401,-1111400813,1038105413)+W(5,-1108487635,1039434185,-1089739654,-1103382940)+W(6,1028685770,1053936411,1037008853,1038153674)+W(7,-1134533769,1054765971,-1094983833,-1101904010);sum2=W(0,1046625968,1034733544,-1147999170,1026537136)+W(1,-1114205611,-1100522159,-1093312378,-1103988998)+W(2,-1097342682,1034693600,1057288295,1049229753)+W(3,-1079666171,1066071967,1059803421,-1114956972)+W(4,1041595755,-1087077400,-1088579916,-1104980683)+W(5,977545170,1062799024,1057064650,1050850828)+W(6,-1106070846,-1097179722,-1086854504,997711860)+W(7,-1145403458,1015933409,1055355590,-1115357129);WS(1033636603,-1075190676); +sum1=W(0,1030520392,1051253486,-1096251285,-1117233131)+W(1,-1125697208,1043969999,-1100430004,-1122877346)+W(2,-1114269946,1058583983,-1085953223,1036037681)+W(3,-1109653337,1064791929,-1093290764,-1109909101)+W(4,-1102211630,1057642082,-1088005167,-1123582788)+W(5,1032435172,1055881859,-1098086422,1029223000)+W(6,-1120127764,1033241689,-1102333361,-1125435099)+W(7,996293820,1053053914,-1119839106,-1103406294);sum2=W(0,-1120200303,-1113787644,-1109535466,1041916719)+W(1,1024626781,1041562727,-1106166077,1028143351)+W(2,1013431061,-1114475538,1029531851,-1097688999)+W(3,-1124733431,-1112371618,1051805575,1068535590)+W(4,1027814217,1032748777,1061661699,1074776935)+W(5,999438554,-1098117165,-1114245048,1029048009)+W(6,-1116912567,1042886038,1039886302,-1076933565)+W(7,1007930813,-1140542509,-1093997696,-1072079702);WS(1051996799,1040628126); +sum1=W(0,-1106876926,-1096999331,1064227732,1032518006)+W(1,1042171100,-1106536569,1056769919,-1132737450)+W(2,1014013938,-1087433914,1057736892,-1121739327)+W(3,1040804174,-1079279688,1052514885,1035728257)+W(4,1038633599,-1085040172,1059334684,-1115112214)+W(5,1024260165,-1090750082,1058371760,-1126170017)+W(6,1032103150,-1096245875,1051111478,-1129820331)+W(7,-1111941370,-1091794355,1050507101,1036168684);sum2=W(0,-1097197656,-1105938617,-1063141508,1047663602)+W(1,1040517176,-1119182790,-1072247475,-1106333570)+W(2,-1107105879,1048788314,1073986693,1017343300)+W(3,1050425804,1048225474,1082212097,1014706728)+W(4,-1108102513,1050055380,1063649950,1023560998)+W(5,1044838414,-1097162220,-1108483496,-1105252179)+W(6,1026907274,1028263310,1040597170,1016727612)+W(7,978890108,1043193320,-1096883524,1025416282);WS(-1079662656,1075711984); +sum1=W(0,-1136749190,1054381451,-1099895821,-1111920714)+W(1,-1108214827,1049467004,-1104318006,-1124862997)+W(2,-1112256994,1060357369,-1094055613,-1099490085)+W(3,-1102094902,1064079536,-1088977984,-1093653775)+W(4,1019461885,1058102849,-1094018397,1047054555)+W(5,-1113236619,1050217386,-1093377643,1026036560)+W(6,-1115387518,1046694646,-1102869707,-1122648846)+W(7,1015637672,1053154499,-1097489705,-1117787456);sum2=W(0,1021596406,-1120307380,1037868882,-1094559059)+W(1,1027700788,1049653321,1038499992,-1099826066)+W(2,1031902674,-1100871897,1074972319,-1070411479)+W(3,1035450862,1054975194,1073269037,-1076192259)+W(4,-1146279384,-1106853601,992333684,1024067187)+W(5,1036068426,1042197470,1032586692,-1107184127)+W(6,-1108044351,1034125536,-1129244749,1032061183)+W(7,1030087008,-1133477273,1010404410,-1104237818);WS(-1121360374,-1077155152); +sum1=W(0,-1105583845,-1092428892,1053987635,1036329976)+W(1,1042009047,-1091586093,1057449542,1039912928)+W(2,-1135496901,-1087526962,1037542524,-1114441548)+W(3,1057317824,-1088356100,1067018703,1035631092)+W(4,1037107234,-1084718223,1053143538,1024846769)+W(5,1028773828,-1086275726,1051794540,1020991498)+W(6,1042777544,-1096882940,1049337758,1032759069)+W(7,-1116736729,-1086839898,1050512766,1041911145);sum2=W(0,-1122349048,-1108922684,-1102817435,1024154790)+W(1,1027223630,1050237475,1047134367,-1105600910)+W(2,-1123059666,-1093984844,-1086242189,1041276041)+W(3,-1097496437,1061603028,1069845393,-1090292072)+W(4,-1101147358,1054912466,-1091188340,-1122818012)+W(5,1008041239,-1136134543,-1107987422,-1109079234)+W(6,-1113710228,1050990810,-1126348732,1047206075)+W(7,-1103013196,1037079763,-1097181289,-1109791787);WS(-1087087711,1067831143); +sum1=W(0,1034272753,-1110686621,1034360523,1006467012)+W(1,1043354114,-1094089577,1051348739,-1097882829)+W(2,1046815315,-1090322161,1056352764,-1098171061)+W(3,1041026663,1019000899,1049291409,-1099191041)+W(4,-1116058688,1048378971,-1098372646,1036956791)+W(5,-1131457456,1054466495,-1090870248,1036945505)+W(6,-1115558139,1045446607,-1103803571,-1124941614)+W(7,1032034947,1043401342,-1098529593,1026141794);sum2=W(0,1046033632,-1147554302,1021728539,1034466187)+W(1,-1114282503,1065651536,1061103542,-1117467216)+W(2,1044655964,1052996561,1047372498,1040544990)+W(3,-1106001859,-1076523823,-1081697027,-1105745303)+W(4,-1104436397,-1095873418,-1094800655,-1119054372)+W(5,-1101664028,1059971501,1058036758,-1110996319)+W(6,1015764662,1037179306,-1113369666,-1120190386)+W(7,1023732858,-1119149512,1033040332,1028498617);WS(1040537598,-1164677141); +sum1=W(0,1044447583,1058921623,-1079854668,1051360885)+W(1,987031402,1052904912,-1089009751,1009017491)+W(2,-1121775302,1059494147,-1082135643,1049103971)+W(3,1042738997,1059765434,-1085199868,1042102879)+W(4,1038434732,1053249925,-1087718171,1037325507)+W(5,1049696256,1045203303,-1094593271,1033340813)+W(6,1024826006,1049549231,-1098502833,1040792940)+W(7,1044766000,1032179929,-1111725730,-1103499809);sum2=W(0,-1105450770,-1076904032,1034745372,1064235564)+W(1,-1099930216,-1110661913,-1104228342,-1133206564)+W(2,-1087670985,1054929191,1055270313,-1159337186)+W(3,-1097641768,1067640588,1058849806,-1095527236)+W(4,-1093727900,1043325457,1055379319,-1097371942)+W(5,1034849198,1041628489,1047258529,-1123329564)+W(6,-1089823109,1024934811,-1091022953,1053074558)+W(7,1026936119,1071055811,-1093861556,-1079977593);WS(-1072228928,1076959210); +sum1=W(0,1049440860,-1102211417,1052420434,1046258910)+W(1,-1100954468,-1090494943,1049042513,-1094165323)+W(2,1040518102,-1089397123,1057628335,-1113742940)+W(3,1055014377,-1085929645,1059399711,-1115570152)+W(4,-1102413547,-1092416799,1055649007,-1095616949)+W(5,1056933930,-1103710088,1056457065,1054320058)+W(6,-1100924366,-1099959722,1043274798,-1096288332)+W(7,1025160513,-1097219837,1043339918,-1113497047);sum2=W(0,1037249746,-1091193116,1058952598,-1099278743)+W(1,-1106259401,1057292562,-1089499743,1035766214)+W(2,-1118512137,1045032769,990544085,-1120311473)+W(3,1033553146,-1101074553,1052938455,-1107284433)+W(4,-1118437421,1047290760,-1096914685,1032001159)+W(5,1049532353,-1085599381,1060306657,-1105441959)+W(6,-1112295163,1045403080,-1095081062,1037527897)+W(7,-1112769969,1036239865,1036770528,-1117837555);WS(-1095248895,-1088416713); +sum1=W(0,991086878,-1112623265,1049658160,1025280780)+W(1,1041397006,1023033498,-1129854724,1018002536)+W(2,-1100414321,-1095527100,1056723856,-1101036339)+W(3,-1106522737,-1085500137,1061179113,-1098081679)+W(4,1032194452,-1103431285,1050067968,-1121954805)+W(5,1040515607,-1093888960,1055178889,1040437430)+W(6,-1113785099,1025813699,1027165141,-1107604207)+W(7,-1119710941,-1112974208,1044420741,-1122583614);sum2=W(0,-1115281709,1049351198,-1101546004,-1132663474)+W(1,1038308115,-1105447726,1044927538,1036918381)+W(2,-1086190321,1061131477,-1105825160,-1104633062)+W(3,-1079410563,1070791012,-1124003323,1035199903)+W(4,1055352031,-1080774986,1054621998,-1119052371)+W(5,-1106071111,1050939464,-1100497740,1038597174)+W(6,1042421121,-1096576742,1042910101,-1126972585)+W(7,999244165,1021655353,-1123561791,-1141223925);WS(1057802399,-1081431823); +sum1=W(0,-1122831751,-1093480916,1050038833,1031929377)+W(1,-1131892376,-1097592621,1050095280,1003466633)+W(2,1041203877,-1087992005,1058335651,-1150646211)+W(3,1034931072,-1086955360,1062569267,-1108251076)+W(4,1020249162,-1094219074,1052617634,-1123920403)+W(5,1023514439,-1099624791,1053253320,-1110979235)+W(6,-1183605377,-1104094712,1037479577,1022403704)+W(7,-1102408215,-1103351679,1047799764,1031403703);sum2=W(0,-1104748298,1032567526,1030425414,1028805714)+W(1,1035677532,1015597088,-1106402955,1010146816)+W(2,-1097271446,1042180726,1036072793,-1122721452)+W(3,-1071563129,-1131466492,1026492053,-1139412188)+W(4,-1073203825,-1088097679,1021201077,-1121571686)+W(5,-1105574565,1049167232,1046304011,1013464552)+W(6,1074066983,-1104411749,-1108010622,-1115684312)+W(7,1076846054,1054919113,1040423027,-1159010626);WS(1057159391,-1098185256); +sum1=W(0,-1115997840,1062337777,-1099145229,-1108105457)+W(1,-1139848194,1059107990,-1096884471,1026934458)+W(2,-1110900998,1058844902,-1083284577,-1128707950)+W(3,1040272534,1060188982,-1081840204,1050661700)+W(4,-1124007614,1050305613,-1086268415,1025671020)+W(5,1022311680,1055455830,-1088086212,1018441343)+W(6,-1122049771,1052112283,-1093503993,1032949738)+W(7,1025640163,1058488623,-1095187909,-1115150240);sum2=W(0,1056249112,-1063663228,-1090194820,-1098679170)+W(1,-1087901783,-1065703489,1049313091,1049727089)+W(2,1050240307,1050922399,1059446328,-1118968312)+W(3,-1096100666,1074103439,-1091782161,1043947681)+W(4,1050011361,1078895155,1051412884,-1103451878)+W(5,1046757851,1075028289,999915799,1046896549)+W(6,-1111613200,1011769164,-1097222567,1036070334)+W(7,1031802636,1041242105,1040180956,-1120669738);WS(-1076050352,1072169512); +sum1=W(0,-1112010473,-1127017300,1032805651,-1127012698)+W(1,-1110549812,-1096217239,1055039585,1017026201)+W(2,1041474168,-1101316183,-1107675851,1027743346)+W(3,-1102358403,-1098236010,1058693100,-1103052317)+W(4,1035256808,-1097462672,1050718238,1025923518)+W(5,-1103941101,1015309803,1047069339,-1108585145)+W(6,-1126807163,-1109990262,1040782175,1029935559)+W(7,-1127729580,-1124828306,1033573870,1030091394);sum2=W(0,-1115222730,1013406324,1048651312,-1105744683)+W(1,-1103808603,1044516259,-1091636530,1036643390)+W(2,-1133607278,1056099238,-1082257366,1056116581)+W(3,1035011293,-1093760521,1065398243,-1087652578)+W(4,1045426354,-1097063741,1052543946,-1106429625)+W(5,1005150868,1046105407,-1105190986,1031045850)+W(6,1038138903,-1106358807,-1143243436,-1129675875)+W(7,1014354189,1034790704,-1124610775,1033997397);WS(1065781680,1039008007); +sum1=W(0,1041247860,1052873269,-1087848896,-1122380132)+W(1,-1132228043,1052030887,-1090939837,1043969975)+W(2,-1116017645,1057769989,-1086321043,-1167945460)+W(3,1029031978,1065817909,-1090130600,1043124941)+W(4,-1114552992,1059292430,-1093123180,1037414446)+W(5,1018467582,1052683781,-1089813139,1037105136)+W(6,-1119698444,1045381867,-1093950448,1016187596)+W(7,1039500994,1042767258,-1088918334,-1139723011);sum2=W(0,1038177586,-1105284792,-1114385091,1023745983)+W(1,1024852101,-1131141686,-1105200928,1044997454)+W(2,1031995320,-1123455081,1057384109,-1102654886)+W(3,1016571646,999573799,1073904332,1045931554)+W(4,1033741319,-1107419527,1075963065,-1113399825)+W(5,-1108656521,1052574782,-1130292726,1041285787)+W(6,1035134998,-1099142208,-1072886122,-1101763500)+W(7,-1120710323,-1103717942,-1070457563,1044467987);WS(-1090516543,-1087531312); +sum1=W(0,-1105337757,1040358473,1026287071,-1112133319)+W(1,-1135375282,1025750638,-1109155234,1043065477)+W(2,-1113059195,1034124454,-1111070925,1049735832)+W(3,-1111479074,-1082649657,-1113637434,1048811350)+W(4,1044282546,-1098312091,1056333811,-1104740686)+W(5,1036163039,-1114570479,1044131649,-1111303053)+W(6,-1123738614,-1112260786,1049914271,-1128712224)+W(7,-1110047807,1044483760,1039433994,-1136462731);sum2=W(0,-1122757257,1027164873,1002742314,-1111953049)+W(1,1009904581,-1112829049,-1115430893,-1116391321)+W(2,-1113467627,1020364514,-1098221748,1025748661)+W(3,-1099518373,1064179702,1059311413,-1098741962)+W(4,1032421699,-1092934445,-1139891301,1036551469)+W(5,-1095677862,1039050377,1041708988,-1119491053)+W(6,1020800146,-1106885375,-1124766450,1025848261)+W(7,-1112743661,1022655162,1032689603,-1122814953);WS(1059528063,1057564569); +sum1=W(0,993737087,-1096201122,1052073475,1036364765)+W(1,1023855952,-1112481934,1044928820,-1119101474)+W(2,1051519336,-1089271861,1057871347,1026047377)+W(3,-1100822612,-1101379550,-1090210244,-1095066725)+W(4,1027584566,-1129312776,1027452795,1043887545)+W(5,-1109486813,-1101173547,1051680014,1038809676)+W(6,-1127107174,1031993577,1038521522,-1152581582)+W(7,1035631854,-1097162722,1050823828,1037595092);sum2=W(0,-1106514375,-1115270098,1025588625,-1109616345)+W(1,1034094594,1029678117,-1103891997,1044342701)+W(2,-1112949179,-1095879627,1029083209,-1107320484)+W(3,1009317700,1052560633,1062070608,-1103446924)+W(4,-1126355148,-1128108776,-1100067512,-1131810302)+W(5,1021633582,1034084538,1035054672,-1098743078)+W(6,1010987268,1040297892,-1117785257,-1123491293)+W(7,-1106252693,1049223604,990783407,-1102218346);WS(1061977215,-1122204685); +sum1=W(0,-1124031333,1053794732,-1090279300,1017895407)+W(1,-1109554099,1053305789,-1096176108,1027213295)+W(2,-1105250724,1058003360,-1093816822,1024566052)+W(3,1036027519,1059361796,-1081723655,1033714163)+W(4,959521497,1055117810,-1090510080,-1125004641)+W(5,1055353398,1051669497,-1097892492,1006220452)+W(6,1038275624,1037705519,-1101480172,-1112881733)+W(7,-1136942561,1047158647,-1098784634,-1145512357);sum2=W(0,-1113155109,1028856727,993552399,1036996819)+W(1,1032430477,1021325630,-1128331832,-1139715524)+W(2,-1105712018,1050891972,1042508384,-1111526035)+W(3,1048044904,1070862297,1042132916,1040898786)+W(4,-1081128362,1074403261,1044319918,1025048067)+W(5,-1070110178,1035516985,-1115800491,1038841221)+W(6,-1092435520,-1108990845,1033559089,-1119663830)+W(7,-1092804751,-1122256510,-1109033129,1007165668);WS(-1096328959,1070879408); +sum1=W(0,1047483149,1056909741,-1084253114,1043610432)+W(1,-1131726569,1050717891,-1097194674,-1120381614)+W(2,1017405984,1049879450,-1084428714,1029856307)+W(3,1016192218,1064784543,-1088019878,1046790989)+W(4,-1134185032,1054175424,-1087922381,1044095416)+W(5,-1130210629,1055866677,-1096076442,-1106891777)+W(6,1039283496,1052923070,-1098682228,1045347898)+W(7,1022798351,1050331269,-1089646420,-1103492015);sum2=W(0,-1096731787,-1092572599,-1072213302,1074300082)+W(1,1041094096,-1083918511,-1081783724,1061218424)+W(2,1030029833,-1081752188,-1088492050,1062246408)+W(3,-1134738767,1050600846,-1098909280,1055931246)+W(4,-1112066554,1060518769,1054813136,1030722387)+W(5,1049526473,1056806956,1066457366,-1080408758)+W(6,-1103571503,1052566197,1061557517,-1082314750)+W(7,1038503381,1040255570,1074348460,-1074863778);WS(-1093955647,1022010191); +sum1=W(0,1027472455,1051129150,-1126583382,-1110971745)+W(1,-1118029508,1040858863,-1110637352,-1129027011)+W(2,1017520774,1058284788,-1083829535,1043546956)+W(3,-1100976252,1064764899,-1092969620,1032062845)+W(4,1048038797,-1094249656,-1093269900,1049944248)+W(5,1019653215,1054989120,-1098669306,-1114080636)+W(6,1015004427,-1137681219,-1101321193,1039113958)+W(7,1006149335,1047833420,-1092663640,-1120661351);sum2=W(0,-1125700855,-1109340305,1041739108,-1138307987)+W(1,1010923567,-1099241242,-1121076246,1010348245)+W(2,-1097524591,-1097784845,-1122648580,1043843262)+W(3,-1086770251,1061340682,1059475190,-1104554020)+W(4,-1119687254,-1091236020,-1097965354,1042867821)+W(5,-1136610695,1059369820,1048517727,-1105357691)+W(6,1034141799,-1103210716,1020884025,1021404807)+W(7,-1146172877,1042204527,-1117941982,1026766467);WS(1057685119,1067243116); +sum1=W(0,-1129459555,-1098308652,1053516928,1029422892)+W(1,1016923756,-1100618635,1049587364,-1111775882)+W(2,1004671913,-1090418529,1057639529,-1114348966)+W(3,-1095493364,-1088191051,1065512192,-1112549294)+W(4,-1098633785,-1089905135,1058720438,-1103551521)+W(5,-1112175056,-1101363479,1052631981,-1111153757)+W(6,1046138501,-1106099897,1043712557,995391206)+W(7,-1131471418,-1097291652,1052947846,1020473821);sum2=W(0,-1131225411,-1140292462,1018110051,1018006973)+W(1,-1130956898,1023877693,-1137158572,-1128428036)+W(2,-1103681442,1042914798,-1224504659,1020723155)+W(3,-1077027280,1069127322,1043315619,-1147115303)+W(4,-1076028808,1071847872,-1120948958,1020554514)+W(5,1031803188,-1103125793,1043270022,-1133954299)+W(6,-1101294062,1043076855,-1113817590,990350747)+W(7,949706042,-1132087796,1015417250,1025989218);WS(-1097928959,-1082976358); +sum1=W(0,1027664520,1057835343,-1089326063,-1108038941)+W(1,-1123678010,1050550727,-1096462854,1032858337)+W(2,-1106569905,1057764410,-1083721351,1021803093)+W(3,1052451146,1062299789,-1087127986,1042469806)+W(4,-1103556709,1049034640,-1097735566,-1104920125)+W(5,1038567635,1057826487,-1094118206,1031016631)+W(6,-1108799690,1041175724,-1100805265,-1129264698)+W(7,1040222651,1060823717,-1089053734,-1107162784);sum2=W(0,1059738223,-1087082495,-1092378156,1034470847)+W(1,1048150071,-1095900368,1046247330,1025055065)+W(2,1052511773,-1108343021,1033545850,1045395587)+W(3,-1080186607,1063110279,-1090059649,-1094453880)+W(4,-1078381471,1074904245,-1107095292,1053230483)+W(5,-1072132845,1071639576,1039712953,-1103894182)+W(6,-1071450961,1076364217,-1113577164,1032308634)+W(7,-1071397334,1077341373,1049211915,-1120241798);WS(-1093482751,1040242403); +sum1=W(0,-1101135214,1051279307,-1160860306,-1112732162)+W(1,-1123956286,1045008905,-1106067054,-1135242283)+W(2,-1107524598,1049489177,-1101021318,1029341500)+W(3,-1138012647,-1132973569,-1113266773,-1121978915)+W(4,1034129455,-1096848358,1049504725,-1098727290)+W(5,1042720691,-1098383795,1059206814,-1102892456)+W(6,-1130324184,-1104810279,1049756222,-1104163113)+W(7,998898338,-1118268600,1052043149,-1099073308);sum2=W(0,1050603120,1055811875,-1086548128,1034695967)+W(1,-1101078445,-1122671355,-1087609936,-1108269543)+W(2,1048531671,1038805789,-1088336312,-1089139562)+W(3,-1105220793,1066111209,1071017234,-1104320030)+W(4,-1091713187,1026095418,-1115602704,-1100901763)+W(5,1034851673,-1130092003,-1089969509,1049804877)+W(6,-1122031169,-1137910742,-1121274059,-1103744367)+W(7,1020293663,-1094690648,1053616941,1054827086);WS(-1112146683,-1077736475); +sum1=W(0,-1128590341,-1099064529,1049253908,1039097715)+W(1,-1130792414,-1090490649,1028859267,1017948777)+W(2,-1147973299,-1086623314,1040872136,1025770233)+W(3,-1117834531,-1101063739,1068918685,-1115616742)+W(4,1007065251,-1084449173,1059458719,-1104116690)+W(5,1033724609,-1094725676,1057886934,-1132647657)+W(6,1024083798,-1097837640,1044653558,998082042)+W(7,-1122914526,-1097461352,1048946351,1030833130);sum2=W(0,1038545045,1044965772,1038508364,1032278560)+W(1,-1104316542,-1073797636,-1092377302,-1115941315)+W(2,-1098913527,-1069601753,1050236814,-1109127211)+W(3,1054073276,1079919017,1044931722,1042591612)+W(4,990615436,1065620582,1034922622,997021068)+W(5,-1111960943,-1103381017,1033398315,1042220416)+W(6,-1127436605,1039512539,-1113162193,-1138197651)+W(7,-1131799749,-1105195767,1039327537,-1121388557);WS(-1090505151,-1074550453); +sum1=W(0,-1112838599,-1106878250,1057615003,-1131143051)+W(1,1028498739,-1103427629,1042960070,1023192930)+W(2,1023419227,-1088602192,1063645564,-1096958907)+W(3,-1117182312,-1088941275,1053033883,1048242260)+W(4,1018948122,-1087514842,1058641540,-1098164287)+W(5,-1126145258,-1096920942,1043052986,1045189988)+W(6,1024711581,-1096615233,1050742275,-1105551137)+W(7,-1125422420,-1095073209,1053972531,1026824959);sum2=W(0,1051549752,1021553919,-1106404197,1031994963)+W(1,1081443218,-1111116920,1044837835,-1113046369)+W(2,1072492444,-1073777225,-1113676512,1032624041)+W(3,1048388769,-1067599847,-1089379201,1025956540)+W(4,1035162847,-1096587672,-1109546151,1027498280)+W(5,-1139079606,1029232562,1030543674,-1132168419)+W(6,-1121149576,-1115288719,-1122606689,1034044071)+W(7,-1123800689,1042218632,-1125599605,-1115044631);WS(1051119487,1041244378); +sum1=W(0,-1124974044,-1137238551,-1116593698,-1121323393)+W(1,1028120435,-1113671305,-1103177170,1033078132)+W(2,1048876359,1036964902,-1099611151,-1156053771)+W(3,1037118035,1061504071,-1104164974,-1129960608)+W(4,-1131477080,1047204942,-1081804989,1048068278)+W(5,-1118427428,1050660570,-1114906180,1011539382)+W(6,-1120234265,1030267847,-1098831475,1035846233)+W(7,-1125985859,1049717597,-1103929310,-1115091743);sum2=W(0,1018090488,1027537220,1019973834,-1117503915)+W(1,-1104952272,1048078363,-1095697091,1045164128)+W(2,-1105226064,1055192952,-1101823824,-1106818318)+W(3,-1128161694,-1102612387,1074095781,-1087428157)+W(4,-1134153828,-1102761937,-1074759173,1061969021)+W(5,1024328280,-1101688104,1063478353,-1092430375)+W(6,-1118410723,1035228556,-1092594125,1050476000)+W(7,-1117225997,1016223417,1041310640,-1110796930);WS(1062303263,1031082743); +sum1=W(0,-1113216195,1050954912,-1095964628,-1121789260)+W(1,-1099215391,1012178225,-1095180416,1027015379)+W(2,1052151297,1065129152,-1088785601,1041954507)+W(3,1026092610,1047492794,-1089641431,-1107401421)+W(4,1051942565,1063700475,-1089295544,1049634587)+W(5,-1098039588,1049517720,-1091476104,-1112964196)+W(6,-1101893697,1028060738,-1102410709,1035520455)+W(7,1008063218,1054989200,-1096414030,-1114231491);sum2=W(0,1033145987,-1175661064,1021827842,-1165845202)+W(1,-1111827051,-1152013649,-1104895942,-1187919119)+W(2,-1103256184,1050523165,1034611383,-1125020091)+W(3,-1063595607,1084357731,-1094652398,1042933311)+W(4,-1101985731,1048919805,1029250458,-1108910008)+W(5,-1141099147,1025442742,-1102082303,1040766920)+W(6,-1136421288,-1145624409,1021034188,-1126731425)+W(7,1030655939,-1133270551,-1121842648,1017996705);WS(1057958943,-1104691893); +sum1=W(0,-1111014615,-1105424217,1044401084,-1118336456)+W(1,-1128240917,1046008396,-1100901945,1038452148)+W(2,-1146251723,-1090082375,1057785284,-1119525902)+W(3,-1095236657,1054329938,1040293502,-1093887914)+W(4,1047913107,1003615948,-1099597392,1045607070)+W(5,-1103203951,1013130820,1051440085,-1107674167)+W(6,1033356080,1044802714,-1102604718,-1113361665)+W(7,1023941889,-1101796865,1036253756,1037874639);sum2=W(0,1010987018,1041119120,-1110188142,-1127404253)+W(1,-1105807463,-1111572952,1045029856,1029477872)+W(2,-1102396693,-1117220749,1057260834,1019931869)+W(3,1054217500,-1087890507,-1087358521,1056265374)+W(4,-1123211893,1070205457,-1081682663,-1091128546)+W(5,1029628166,-1101117061,1051101181,-1124058781)+W(6,-1106898625,-1113015450,1042553654,1025549544)+W(7,1028744914,-1121743361,-1135525482,992401866);WS(1063883327,-1171419961); +sum1=W(0,-1131801844,1049833398,-1102183011,-1101850371)+W(1,1021098616,-1123871229,-1097479398,1031224740)+W(2,1022023532,1009731296,1056730033,-1123343997)+W(3,-1121742227,1044941350,1041013425,-1127214008)+W(4,-1090925859,1060653970,-1095529687,-1107029405)+W(5,1024490200,1043051923,-1097251239,1042080318)+W(6,-1102607801,1048967870,-1104750961,-1107657120)+W(7,-1123544461,1050859794,-1097963532,1009310536);sum2=W(0,-1106082604,1047581965,-1097195715,-1113941985)+W(1,1041248381,-1108094251,-1105642610,-1131232309)+W(2,-1132935321,-1111186257,1042983438,1050509566)+W(3,-1106587714,1050591326,1048334662,-1103031697)+W(4,-1104172881,1039028256,1046273630,-1127691207)+W(5,-1118244665,1025922877,-1128737701,-1115007353)+W(6,-1115368488,-1111866155,1044426238,-1112751356)+W(7,-1139264801,-1104769894,-1122157893,1031938310);WS(1064944927,1037595256); +sum1=W(0,-1116864018,-1089228760,1063040538,-1107296590)+W(1,1023806679,-1095304482,1057549004,-1106875789)+W(2,1017115436,-1087165700,1060715233,-1103245163)+W(3,1009660557,-1086682215,1064233001,-1106392275)+W(4,1028149000,-1088874517,1056983460,-1132085516)+W(5,-1109610248,-1099761351,1052917089,-1107160974)+W(6,-1148661421,-1116139780,1041500021,-1129006079)+W(7,-1102752831,-1131587330,1045020525,-1152394658);sum2=W(0,1045832950,-1084008560,-1084775302,1058474163)+W(1,-1110716731,1049995423,-1093173621,-1102301410)+W(2,1025147898,-1089165996,1054478967,-1128684365)+W(3,-1098226948,1066542501,1068786857,1031931484)+W(4,-1099749141,1049362032,1047038722,-1091779956)+W(5,-1098250414,1055260506,-1126019654,-1105326436)+W(6,1042544569,-1086997229,-1127724076,1053449115)+W(7,-1089530617,1067285885,-1088213452,-1090548395);WS(-1082101344,-1089856493); +sum1=W(0,1050831902,-1105691402,-1101015969,1029275441)+W(1,-1112019073,1030717682,-1098775681,-1120813832)+W(2,1030303546,1055521064,-1097748442,-1139280937)+W(3,-1129997454,1064695661,-1085520515,965412887)+W(4,-1110327174,1061962758,-1086646154,1041358014)+W(5,-1117704076,1058754169,-1089610799,-1122362798)+W(6,-1112251093,1047731210,-1093958751,1028938947)+W(7,-1131596868,1056158989,-1094349907,1016935004);sum2=W(0,-1065128139,-1101130808,1034565987,-1119435550)+W(1,-1076824095,1050826865,-1109355365,1023890205)+W(2,1067439244,1046966330,-1109830496,1012867020)+W(3,1079260085,1049869634,-1112614302,1015248786)+W(4,1056740148,1051236860,-1123646153,-1122661198)+W(5,-1103928218,-1114183173,1051726295,-1136992532)+W(6,-1135208116,1033256035,1035002893,-1119472799)+W(7,1039164015,-1104627926,-1109091637,-1136910724);WS(-1090711679,1035967541); +sum1=W(0,-1111795270,-1104454427,1050513973,1030482278)+W(1,1015715144,1029360119,1050454265,-1138269301)+W(2,-1118064815,-1084526809,1063535365,-1132452908)+W(3,-1124564760,-1083278737,1060834888,1007072853)+W(4,1033380937,-1083950349,1050327592,1028355007)+W(5,1041725555,-1091233609,1054941014,1029566323)+W(6,1039158191,-1102432923,1040417584,-1140656289)+W(7,1036708611,-1097260861,1042099839,1035976950);sum2=W(0,1030795338,-1099705557,-1100315818,-1124401732)+W(1,-1104698754,-1088930785,-1129318753,1047822852)+W(2,-1086482027,-1087114188,-1088371087,1041847465)+W(3,-1086674278,1063363970,1059258270,1007827043)+W(4,1048689193,1066258058,1052412907,-1114489829)+W(5,-1101252049,1055138353,1035784301,1039056173)+W(6,-1127107620,-1113111809,-1107499570,1036879119)+W(7,-1097010897,1050900036,1046424313,-1112035485);WS(-1098505599,-1075865372); +sum1=W(0,-1119631078,-1131715643,-1121509433,-1113178620)+W(1,1024188415,1032178901,-1128987132,1024883696)+W(2,-1125460739,1056750314,-1131145214,-1114020928)+W(3,-1113150415,1055366257,-1096447994,-1102601578)+W(4,-1098117352,1063530169,-1086227497,-1111953177)+W(5,1028789822,1038512989,-1117796833,-1101470933)+W(6,-1115205937,1036256496,1016180195,-1141768534)+W(7,-1134520549,1042179631,1032402616,-1114797153);sum2=W(0,-1098762498,1039073687,1035541163,1030962008)+W(1,-1112826554,1047439072,1032611741,981436096)+W(2,-1099883844,1024348972,1050751610,1048715774)+W(3,-1090598021,1068429254,1066295533,-1089341195)+W(4,1060690639,-1078855206,-1081223881,-1094541311)+W(5,-1101866176,1052294530,-1097770507,1041458546)+W(6,1051055486,-1095975199,-1126362074,1044471119)+W(7,-1111565268,1034134076,-1121819739,1024624177);WS(1057165023,-1106509195); +sum1=W(0,-1110663097,-1090373040,1057389257,1036322023)+W(1,1023353031,-1094296089,1051297995,-1110472134)+W(2,1009641338,-1087820187,1064196683,-1103525103)+W(3,-1116674588,-1090764772,1064337073,-1108191858)+W(4,-1121179137,-1101809276,1058239248,-1105116828)+W(5,-1127866586,-1095695571,1053143796,-1130262917)+W(6,1019708412,-1097119704,1049182394,-1117889432)+W(7,-1105922998,-1088811352,1042633923,1047174317);sum2=W(0,-1112942365,-1106822390,-1102090209,1043730009)+W(1,1048482322,-1115190843,1042851055,1035412483)+W(2,-1100072975,1034045428,-1103979279,-1105576965)+W(3,-1097118067,1068163863,1056641862,1028572696)+W(4,991349250,1063618710,-1105663689,-1113934073)+W(5,-1108096389,-1107942623,1049912171,-1105853831)+W(6,1053525633,-1090492700,-1130278628,1039916278)+W(7,1000921969,-1076676559,-1111476815,-1106999228);WS(-1086493375,-1079336981); +sum1=W(0,977772865,-1102983835,1026410857,1015269519)+W(1,-1123924042,-1108602044,-1098146918,1049374456)+W(2,-1109993624,1041059645,-1106936850,1036994068)+W(3,-1107908519,-1094902379,1061697492,1041174790)+W(4,1036636329,-1083260999,1061962303,-1103125248)+W(5,1038934102,-1084987377,1057432285,-1125738921)+W(6,1034769240,-1102484540,1051050960,-1130650164)+W(7,-1099048778,-1108629750,1050989872,1040252563);sum2=W(0,-1104970914,1042634099,1052960430,-1112577728)+W(1,1018133697,-1097448347,-1108255972,-1096543501)+W(2,1040842491,1055662701,1062139198,-1090800341)+W(3,-1093587851,1074010545,1064732329,-1093194079)+W(4,-1093237537,-1089724369,-1083390778,1015865539)+W(5,-1102375178,-1099392752,1025575413,991452982)+W(6,-1099804326,1049771835,-1104347883,-1126119433)+W(7,1054809337,-1092159031,-1096888027,1028159711);WS(-1088469887,1068090411); +sum1=W(0,-1113244581,1001301201,-1115331947,-1124374314)+W(1,-1123900274,1023861926,1035790701,-1105829923)+W(2,1049496346,-1082959002,1057295251,-1096521435)+W(3,-1110903326,1050701400,1048296635,-1119292644)+W(4,-1119953152,1060902689,-1081663133,1048590454)+W(5,1031904934,1043052181,-1113327662,1027826066)+W(6,1034227191,1043817559,-1110964279,-1106468266)+W(7,1025939062,1038313117,1034951606,-1117293966);sum2=W(0,1046922708,-1106472578,1033443280,-1111979165)+W(1,1033420508,-1114867820,-1109208012,1050643686)+W(2,-1112865289,-1087802072,1020845388,-1101832932)+W(3,-1096930035,1058113813,1048730658,-1129026525)+W(4,-1101802092,1050476308,1059721445,-1104558996)+W(5,1017341032,-1103417477,-1107242470,-1135034393)+W(6,1036773342,-1105807138,-1136542442,1037376476)+W(7,-1107450994,1033379085,-1104249476,1023773731);WS(1052578175,-1092643724); +sum1=W(0,-1106584961,-1102735475,1053304083,993436516)+W(1,1030893452,-1100779014,1049737317,1037510015)+W(2,1033955624,-1082492039,1060101900,-1101687426)+W(3,1037358070,-1086815439,1065824329,-1103135573)+W(4,1036710537,-1088009424,1041943502,1029815263)+W(5,-1128189432,-1095075429,1057719155,1040440469)+W(6,-1118327615,-1106908643,1051335460,-1106074638)+W(7,-1129060558,-1102841939,1036237087,1027836379);sum2=W(0,-1115440098,1015710974,1041402597,-1130229431)+W(1,1029771501,1033337736,-1114856806,1034787000)+W(2,1018065220,-1094728975,1037520917,-1082769104)+W(3,999202537,1039453548,1064530169,-1074584982)+W(4,1036811205,1050012979,-1094040689,-1090370130)+W(5,-1111720654,1032576025,1073761042,1032162938)+W(6,-1125064265,-1103861773,1063409170,-1105633547)+W(7,1019498859,1040788513,-1090935047,1034133532);WS(-1104397694,1058392920); +sum1=W(0,1012876448,1051523414,-1094911217,1023486907)+W(1,-1126111401,1050625047,-1106828476,1033392977)+W(2,-1142522206,1043902243,-1089440467,-1119682235)+W(3,-1115125816,1063861817,-1093833780,1019625524)+W(4,-1103048369,1056801600,-1087921625,-1096529922)+W(5,999529969,1053396405,-1107310585,1015514383)+W(6,1016404519,1042081404,-1104958721,1039287934)+W(7,-1117545451,1054067798,-1097217844,-1113687714);sum2=W(0,-1130009672,1013515790,1013756514,-1153587550)+W(1,1027809153,-1106180134,1023886448,1024050371)+W(2,-1106384796,1042067106,1052609397,-1094102229)+W(3,1051460883,-1094561503,1078005003,-1070026280)+W(4,-1104521112,1032257325,1072194837,-1075632186)+W(5,1033821004,-1124940473,-1094906083,1053282219)+W(6,-1112259960,-1168427353,1046140857,-1098407638)+W(7,1028508475,-1120291522,-1140922271,1033718481);WS(1063327007,-1121248448); +sum1=W(0,1017612078,-1113236667,1042967269,1035231217)+W(1,1043030576,-1096763312,1049218219,-1115130868)+W(2,1039059525,-1091103118,1058517677,-1107367965)+W(3,-1115811128,1053297652,1033504868,1009543939)+W(4,-1095615210,1063340055,-1082785422,1047061435)+W(5,-1099887459,1054079124,-1088587000,1042859328)+W(6,-1140707177,1041492110,-1101731443,-1120288724)+W(7,-1120397682,-1126620524,1029718569,-1104957341);sum2=W(0,1037909727,-1119813454,-1099212072,1032936033)+W(1,-1098298527,1048025725,1045330821,-1097673782)+W(2,-1126569464,1041835288,-1106229244,-1109675885)+W(3,-1106955476,1067026849,1067954224,-1092590328)+W(4,-1096969233,-1085288934,-1095495837,1004812688)+W(5,-1118592354,1042571631,-1108169766,-1096486003)+W(6,1042882430,-1117602980,-1164085849,1034064234)+W(7,1037216424,-1116313332,-1100305071,1045459772);WS(-1114652667,1051933605); +sum1=W(0,1026700110,-1102428549,1043087092,-1109604752)+W(1,1037508767,-1105027032,1048715843,-1113263092)+W(2,-1128033780,-1106431647,1062796090,-1098797270)+W(3,1034155035,1043250735,-1089603768,1023780992)+W(4,-1102462575,1059213449,-1090890112,-1112475685)+W(5,1024543544,1038435705,-1106007014,-1121524254)+W(6,-1147042251,1038748492,-1119096106,986589794)+W(7,1032374633,1016229610,-1104514210,1007891224);sum2=W(0,-1129141996,1043866561,1029019378,1050935854)+W(1,-1106880495,-1096921120,-1092013580,-1111274547)+W(2,1031191254,-1123077406,-1086673510,-1096956427)+W(3,-1102244397,1064276171,1064706574,-1115781076)+W(4,-1101040753,1061828176,-1113110329,-1106057540)+W(5,1046080919,-1095750750,-1091369762,1029696990)+W(6,-1112883155,1042185570,1042119352,-1113619581)+W(7,1031234782,-1128566730,-1105256367,1012473722);WS(1059465279,-1101420399); +sum1=W(0,1033088680,1043444330,-1101682761,-1124073107)+W(1,-1124176798,1000916382,-1126261266,-1118729178)+W(2,1014063089,1057398923,-1089602004,1032573720)+W(3,1035053989,1034190184,1039770557,-1114558729)+W(4,1045820204,-1087528660,1057859064,-1096323421)+W(5,1038292302,1036787650,-1106381771,1041172764)+W(6,-1115007182,1027988010,-1104773247,1024683157)+W(7,-1131477704,1042732770,-1102530758,1029511616);sum2=W(0,-1093261173,-1081648717,-1107343332,1020947921)+W(1,-1100338012,-1096055698,1016623505,-1121572837)+W(2,1016590929,1049309077,1058913944,1035038069)+W(3,-1160318928,1060463741,1061699617,-1121635630)+W(4,-1111261089,-1123677731,-1095509190,-1116667427)+W(5,1032510827,1042247124,988275856,-1130213341)+W(6,1037987285,1035681279,-1111758125,1033159595)+W(7,-1106728517,1035240533,979544481,-1112486763);WS(1060076127,1072958059); +sum1=W(0,-1103118654,-1090537599,1060753617,-1129584897)+W(1,1043365506,-1097065432,1046496158,1025963976)+W(2,-1115420333,-1086314390,1060760746,-1106610556)+W(3,1031523031,-1088162978,1055888777,1040410096)+W(4,1033412302,-1089193875,1052645932,-1138875303)+W(5,1032254402,-1091959462,1054239287,1032279415)+W(6,1031863013,-1111327644,1044639698,1032182482)+W(7,-1127560355,-1086013855,1056703661,1044337291);sum2=W(0,1034238418,-1122429687,1038471498,-1105287037)+W(1,1026722605,-1113650971,1047703041,-1106809975)+W(2,-1123083006,-1101416602,1050567163,-1099784158)+W(3,1044566349,-1095747837,1073798913,-1077245954)+W(4,-1114043742,1044375513,1074668356,-1072322090)+W(5,1029836970,1032414162,1076147895,-1070521946)+W(6,-1124457715,-1132025334,1076524889,-1071353549)+W(7,-1112207598,-1112893824,1071535287,-1076180558);WS(-1114470395,-1114976351); +sum1=W(0,1017446070,991904560,1034584479,-1110976571)+W(1,1040990896,1041627584,-1107221597,-1099251857)+W(2,-1129681934,1047992216,-1115356259,-1111571481)+W(3,-1120446036,1061349282,-1083497834,1039733326)+W(4,-1097641691,1061559014,-1089507216,1036247843)+W(5,-1110115727,1055187519,-1098995485,-1114440077)+W(6,-1110184487,1045114861,-1109668803,-1115117640)+W(7,1033457695,1047040436,-1107186297,-1120899067);sum2=W(0,-1093678598,-1084434022,1064533419,1042743345)+W(1,1002676269,1057422860,1067683118,-1108978134)+W(2,1055748356,1066493380,-1078621547,-1117769694)+W(3,1044340647,-1079318791,-1079939901,1015093293)+W(4,-1118111722,-1116089022,1054002901,1049699290)+W(5,-1120084888,1044705221,1039926847,986467602)+W(6,1001595675,-1112694927,-1112070298,-1107171922)+W(7,-1123642691,1031220790,1023903081,1037662763);WS(1048785023,1039045299); +sum1=W(0,-1104130562,-1090140327,1061197562,-1133671882)+W(1,1043168659,-1100442863,1040570004,1032880081)+W(2,-1117502116,-1085428843,1062309944,-1102819715)+W(3,1029857553,-1093347651,1050495728,1038995485)+W(4,1034838603,-1089406196,1050259320,-1127149063)+W(5,1027207566,-1093521697,1054560318,1026681976)+W(6,1024393315,-1120775857,1039464338,1035433414)+W(7,-1130533431,-1086838999,1056208688,1041402190);sum2=W(0,-1118465298,-1142302474,-1114395216,1037219807)+W(1,1011712973,1025023956,-1104707163,1039062755)+W(2,-1128433260,1041730218,-1095905892,1046574176)+W(3,1029767219,-1097771962,-1080533844,1069124140)+W(4,1021354231,-1094677866,-1075595300,1073795377)+W(5,982009542,-1122047812,-1072373863,1075522683)+W(6,1014788797,1028525757,-1072719492,1074436097)+W(7,1033540398,1020814500,-1078361330,1068741752);WS(1040594174,1002085105); +sum1=W(0,1041861603,-1113198522,-1137236930,1041085614)+W(1,-1097746587,1055071640,-1100468781,-1121524679)+W(2,1032164980,-1088672026,1047493466,-1109849488)+W(3,1031577622,1050744420,-1105375081,1048884604)+W(4,-1102982955,1057599999,-1087672398,-1113508732)+W(5,1044101411,-1103363988,1050064611,-1098107838)+W(6,1034678964,1036351259,-1102178050,1043931332)+W(7,1026039088,1034848362,1033863059,-1106488144);sum2=W(0,-1099743490,1011906269,1037961444,-1108436276)+W(1,1035577370,1026663055,-1152297667,991169347)+W(2,-1115293072,1057096352,-1095995741,1045881501)+W(3,-1102421679,979639118,1050233559,-1097952901)+W(4,1038726510,1044440375,1022991474,-1122343653)+W(5,1032210717,1032214892,-1139108605,1026937641)+W(6,-1107407193,1028754425,-1115369483,-1105994898)+W(7,-1120037205,-1123040177,-1104470915,1022469878);WS(1066613200,-1123971367); +sum1=W(0,1021072883,-1096708150,1051074184,1026036124)+W(1,-1125712504,-1090955664,1051398158,-1108624754)+W(2,1041158633,-1159875842,1058934814,1040756057)+W(3,-1106077125,-1079911082,1061682240,-1090753503)+W(4,1036847484,-1093258685,1055629981,-1114271443)+W(5,1032267227,-1103560179,1054180539,1025501945)+W(6,1016782186,-1089925031,1052861897,-1105228376)+W(7,1031886911,-1106725252,1047227273,1043536294);sum2=W(0,-1120579723,-1102098813,-1103583809,1039910130)+W(1,-1104595791,1059079365,1035649855,-1110832147)+W(2,1060943463,-1078775742,1055196914,-1115424415)+W(3,-1081375340,1070420847,1036446407,-1092581761)+W(4,1048074442,-1106373275,1050043459,-1101688097)+W(5,1049316438,-1084015554,1050724789,-1115969635)+W(6,-1088959333,1065759760,-1088425301,1051846236)+W(7,1054216959,-1087995034,1052608338,-1103333947);WS(1015488492,-1082266482); +sum1=W(0,-1115294884,-1096364772,1054950795,-1109722877)+W(1,1041881447,1036768790,1051075280,1018280484)+W(2,-1116482020,-1083421327,1062057653,-1105734603)+W(3,1028536641,-1079950554,1057564011,-1124656723)+W(4,1044897017,-1088856963,1054170231,-1129161159)+W(5,-1108243791,-1096513911,1056273768,-1113027740)+W(6,1033207234,-1104622888,1056919206,-1132093050)+W(7,1015505847,-1096156044,1054606378,1025701004);sum2=W(0,-1103335141,-1123809016,1056172663,-1093357581)+W(1,-1087173612,-1080484881,1047550056,-1112078382)+W(2,1045744538,1068142929,1051886373,-1102262951)+W(3,-1106751239,1065979347,1064817240,-1097769156)+W(4,-1089877767,1048007586,1065470183,-1095892093)+W(5,1054342226,-1086806497,-1098340366,1033891425)+W(6,1047940388,-1098712592,-1102735881,-1105000175)+W(7,-1120076732,-1082944418,-1088981287,1059622670);WS(-1089551423,-1072840444); +sum1=W(0,1041019406,1055991358,-1086576149,1027645528)+W(1,1022173115,1057526040,-1100702364,-1141651861)+W(2,-1113297010,1036785718,-1093552675,1016689751)+W(3,1015463395,1059475300,-1089572736,1031793146)+W(4,-1103473726,1056836657,-1091007140,-1125097480)+W(5,1040814976,1050051043,-1090411145,1041821422)+W(6,1007312016,1050846086,-1098618125,1015074267)+W(7,1029778436,1053584058,-1097362556,-1104623366);sum2=W(0,1069423067,-1076703167,1041694716,1032293264)+W(1,1072187327,-1073855626,-1115348910,1008297781)+W(2,1072064387,-1079134619,-1107764634,-1120515458)+W(3,1072314518,-1077864031,-1089838794,1037018177)+W(4,1066704589,-1081021850,1036250076,-1121141704)+W(5,1063804587,-1081933355,1028352388,1025803257)+W(6,1053139391,-1094622730,-1114321992,-1123317222)+W(7,1042659879,-1099654949,1035224325,1027779018);WS(1053893247,-1106302313); +sum1=W(0,1031892188,1044357278,-1093335703,-1124627014)+W(1,-1110506435,1051962248,-1098499127,-1121076939)+W(2,-1127073177,1061666784,-1085429924,1038775118)+W(3,1047997302,1064449402,-1082436051,1042378233)+W(4,1033243951,1041901099,-1118050391,-1100759903)+W(5,-1107646187,1053582704,-1104422127,-1107823800)+W(6,-1112186286,1037482077,-1118004236,-1134911574)+W(7,-1112631434,1050110011,-1103845867,-1111029158);sum2=W(0,1045534781,-1106914963,-1093884354,1048929407)+W(1,-1136883904,-1105365809,1058094665,-1099297773)+W(2,1027794169,-1087950271,-1076257974,1057853479)+W(3,-1091599460,1049402813,1070891205,-1101014716)+W(4,-1105954111,1059435817,1057695328,-1088483015)+W(5,-1110353364,1056244223,-1096007662,-1116753268)+W(6,1026306116,-1106437513,1042940020,-1107558514)+W(7,-1105327762,1049633694,1019026622,-1111740866);WS(1043803134,1031905225); +sum1=W(0,-1113675573,1045344728,-1093561052,-1125193272)+W(1,-1137620096,1015450714,1039772705,-1142985628)+W(2,1045527725,1036603287,-1087612823,1043570724)+W(3,1047471777,1057861093,-1131204708,1032608022)+W(4,1025442024,1007995990,-1109713128,-1125123818)+W(5,-1101766076,1048683192,-1098589181,1017746514)+W(6,1041363873,-1103914745,-1142310312,-1137687994)+W(7,-1104559247,1053784172,-1096789826,-1120823545);sum2=W(0,-1102611800,1052608919,-1092971881,1033368250)+W(1,1042572795,-1112317124,1050084573,-1099740129)+W(2,-1143715563,1036000712,-1099050864,1046340985)+W(3,1047906835,1058925768,1062269077,-1106615878)+W(4,1034463821,-1089628524,-1100033854,-1143169701)+W(5,-1097650393,-1097284017,-1155008883,1034459058)+W(6,1044772028,-1090965565,1043620595,-1102441858)+W(7,-1105069125,1053414419,-1099181286,-1145018737);WS(1065606800,1041895077); +sum1=W(0,1041785011,1041397665,-1108226929,-1113822832)+W(1,-1113293285,1050236482,-1089967688,-1105474774)+W(2,1031552121,1063682744,-1092426598,1045393909)+W(3,-1114204019,1055253222,-1085544687,-1106251932)+W(4,1014586031,1057927896,-1092878524,1018782386)+W(5,1032452466,1054837340,-1094102329,-1135035573)+W(6,-1103346054,1043307490,-1097746379,-1114747425)+W(7,1025447425,1058487624,-1098262983,-1119448485);sum2=W(0,1038489223,-1094743304,-1079775068,1069957645)+W(1,1032193624,-1106563024,-1075431018,1074314813)+W(2,-1137158564,1029053577,-1075905408,1067854461)+W(3,1048862753,-1103121169,1061439417,-1090496129)+W(4,-1107218869,1018988618,1061842524,-1083145579)+W(5,-1112577633,1015522148,1055667456,-1093776696)+W(6,1034028859,-1107822714,1032002642,1038458963)+W(7,-1110240510,1017646246,1047594841,-1100108785);WS(1050857279,1035401177); +sum1=W(0,1029370009,1049972466,-1100844155,-1114359850)+W(1,-1121232094,1045749679,-1097541146,-1119608387)+W(2,-1118971861,1054737744,-1089471141,1032044074)+W(3,-1116554354,1064433520,-1088203652,1039513726)+W(4,-1102118870,1057059356,-1089223685,1028806533)+W(5,1035949272,1055161550,-1095333099,1039358524)+W(6,-1118591397,1035470985,-1098430605,-1114373271)+W(7,-1155732684,1050840570,-1105548665,-1113669781);sum2=W(0,1034282103,1040723224,1028955705,-1104697256)+W(1,-1111920318,-1118965841,1031483971,-1123254751)+W(2,1023538768,-1128437695,1043259383,1034554870)+W(3,-1133376386,1038672881,-1148076972,-1078609243)+W(4,-1119100907,993338648,-1084940093,-1075024478)+W(5,1014776166,1050613235,1050550535,-1100774866)+W(6,-1117007635,-1108740075,-1098463376,1069274341)+W(7,-1121555310,1040276790,1054296012,1072481706);WS(1059068159,-1095269543); +sum1=W(0,1022243158,1058751902,-1083015108,1040310153)+W(1,-1126585055,1052633434,-1095802212,1009201364)+W(2,-1113503115,1061437964,-1083734386,1040208083)+W(3,1034732162,1062365313,-1087136899,-1116554445)+W(4,1029695369,1054753811,-1089074173,1044292534)+W(5,1045709362,1047783152,-1093733821,-1141695574)+W(6,1005846771,1043895001,-1096742887,1042140272)+W(7,1049870212,-1119990530,-1106170901,-1106848091);sum2=W(0,-1110453349,1048158098,1064329884,-1096499673)+W(1,-1118716929,-1117235638,-1122504669,1023790996)+W(2,-1111084235,1037169053,1037379653,1035642078)+W(3,1027079271,1044450691,-1106426334,-1103100998)+W(4,1058163522,-1086959067,-1081956377,1059064502)+W(5,1060433363,-1096141012,-1081432626,-1109003581)+W(6,1058751114,-1102281652,-1086790317,1048822766)+W(7,-1077532089,1061563184,1073667932,-1089552462);WS(-1079238176,-1098575359); +sum1=W(0,-1122061272,1040856756,-1106993315,-1113276757)+W(1,1012614613,-1098659523,1049053518,-1110111537)+W(2,1049213476,1050219649,-1088887964,1048270483)+W(3,-1091368434,1046432350,1061247706,-1098550683)+W(4,1050034455,-1092787824,-1113029435,1053252708)+W(5,-1115399887,1045840143,-1096901418,-1120030007)+W(6,-1105000541,-1102913028,1045569657,-1144293604)+W(7,1040609063,-1104981396,-1106428832,1037272948);sum2=W(0,1035271628,-1096995906,-1097624644,1051183735)+W(1,1033447544,1032410306,1048740225,-1095652467)+W(2,-1113618952,1053850685,-1109777102,1037584786)+W(3,-1104023060,1054515359,1058355960,-1116173683)+W(4,1022009109,-1114408860,-1139294461,-1096371453)+W(5,-1104458884,1030897990,-1116975083,1030595307)+W(6,1044684178,-1115683354,-1099524388,-1117706649)+W(7,-1104406640,-1106540716,1036671037,-1108415342);WS(1064155455,1041078114); +sum1=W(0,-1114884791,-1133388468,1031759625,-1116707016)+W(1,1038026665,-1103926126,1051074474,-1135572861)+W(2,1040569148,-1088265213,1049866386,-1145284192)+W(3,-1123095214,-1088521037,1060913876,-1110455500)+W(4,-1113346810,-1094483240,1044072016,-1116167073)+W(5,-1098688777,1052099081,1034732568,1029730485)+W(6,-1106297864,1038941559,-1138713347,1017022612)+W(7,1033022404,1027852876,1019301565,1028095637);sum2=W(0,1027468398,-1120484835,1033713911,1037828351)+W(1,-1111732215,-1115316427,-1113615213,-1102210431)+W(2,-1149402831,1042551085,1015721118,1027887653)+W(3,-1136133524,-1101059653,1005178376,-1105049969)+W(4,1058132410,1067179636,-1112798365,1033627060)+W(5,-1084703700,-1093846517,1036573120,-1112780439)+W(6,-1103172541,1015696434,1035924289,1025169534)+W(7,1011948492,-1119207903,-1106241198,1034168377);WS(1056869759,-1097268032); +sum1=W(0,1018133293,1036411431,1039633317,-1111689725)+W(1,-1105532941,1007771751,1034605623,-1107937040)+W(2,1027243330,-1116024394,1050783724,-1105991139)+W(3,-1097428310,1032024955,1010531964,-1109581452)+W(4,-1099204213,-1130187397,1045069064,-1103861656)+W(5,-1133851766,1034973653,1044277428,1044990678)+W(6,-1138393927,-1114469768,1046520720,-1106353867)+W(7,-1118550618,-1118964077,1036629184,-1155661924);sum2=W(0,1031819015,1040620760,-1130428603,-1130628701)+W(1,-1113612713,1045122152,-1113774176,-1118722775)+W(2,1040659447,-1122637452,-1093905874,1015363301)+W(3,-1113225510,-1080510307,-1073670430,-1129641903)+W(4,1023788280,-1103769905,1040925011,1045479736)+W(5,-1115035325,1050277803,1074164392,997650792)+W(6,1009487418,1041168723,1056579340,1043373785)+W(7,1023947578,-1112728330,1044922942,-1122436477);WS(1064095487,1025785067); +sum1=W(0,1026371284,-1106851535,-1128892272,1040514533)+W(1,-1097495743,1042476562,1049973404,-1103190740)+W(2,1050378694,-1104849584,-1115675316,1040022019)+W(3,1008396404,-1085976658,1058008769,1040395090)+W(4,1042871873,-1097042470,-1098054097,1050097558)+W(5,-1103138663,-1109264236,1052615848,-1102548473)+W(6,-1136206974,1035073279,1037088776,-1157051795)+W(7,1034556564,-1094929447,1045135411,1023679636);sum2=W(0,-1124722923,1033420628,-1105442746,1029168594)+W(1,-1114618025,-1100145939,1047309531,1048079041)+W(2,1043439029,-1115804833,-1084852425,-1101613108)+W(3,1036363299,1057589449,-1089136554,1042227257)+W(4,-1096133271,1053618149,1028964970,1045151454)+W(5,1049502378,-1091358477,1056312267,1041752672)+W(6,-1106999272,1030436134,-1100909906,1036382707)+W(7,1013819494,-1119548384,1043379377,-1113267324);WS(1060109055,1023402244); +sum1=W(0,1039025762,1051909299,-1098089231,-1107880995)+W(1,-1109278395,1054481389,-1093104548,1018380380)+W(2,-1125210976,1061074499,-1087624466,-1167447218)+W(3,-1107337262,1069080830,-1092709234,-1119879878)+W(4,-1119314274,991275263,-1085745760,1030906608)+W(5,1038278743,1049054227,-1093068092,1028271716)+W(6,-1120902815,1043342663,-1102438460,-1122586985)+W(7,1024999351,1051802331,-1098889074,-1107737008);sum2=W(0,995982518,1035578813,-1118279893,-1115504751)+W(1,1033194341,-1121421677,-1114972659,-1108849613)+W(2,1038373562,1046888388,1069469835,1041670894)+W(3,1040171687,-1103362299,1078927590,1050450381)+W(4,-1108098969,1050255581,-1065023683,-1097423961)+W(5,1027047733,-1096418856,-1082214759,-1114805949)+W(6,-1147696971,1042040695,1045909115,964966831)+W(7,1033796110,-1116244525,-1112457727,1025540676);WS(-1092049407,-1078216845); +sum1=W(0,1019093687,1057591089,-1089127853,-1109784091)+W(1,1030002432,1050969332,-1096074010,1043174565)+W(2,-1100550858,1056027116,-1082843219,-1126191805)+W(3,1055647027,1063070242,-1088645600,1049441628)+W(4,-1103872766,1039049940,-1097545633,-1097650089)+W(5,1041444210,1057957242,-1095349663,1024042875)+W(6,-1115845919,1034942714,-1103665506,-1123963793)+W(7,1042339236,1059965491,-1089209262,-1105758607);sum2=W(0,-1086426610,1062347208,1053593730,-1108806990)+W(1,-1096143108,1055082976,-1101252044,-1138780047)+W(2,-1089951657,1045157118,-1111940928,-1099705126)+W(3,1062855195,1048769854,1037201995,1058343455)+W(4,1068897447,-1073459143,-1091098547,-1094950430)+W(5,1074016711,-1078468086,-1119407664,1046274438)+W(6,1075026151,-1071781830,1031118734,-1128975824)+W(7,1074160921,-1072043968,-1095931446,1035271906);WS(-1092377983,1032564911); +sum1=W(0,1026968586,1051240140,-1140824311,-1108814006)+W(1,1001025293,-1135919542,-1114206145,1031981930)+W(2,-1101464865,1047585891,1035412731,-1105914151)+W(3,-1099757657,1046337282,-1093593858,-1111723206)+W(4,-1099131534,1042168181,1042300945,-1114245051)+W(5,1021990836,1042765483,-1105010841,1047084274)+W(6,-1124857771,1039475666,-1129901419,-1110153104)+W(7,1016095931,1031087233,-1150842169,1021006644);sum2=W(0,-1152594313,-1103837493,-1119502913,1035550709)+W(1,-1114711758,-1102219265,1049238470,-1111809635)+W(2,-1122222477,1021928584,1051353268,1038283603)+W(3,-1119994373,1043085394,1069806319,-1113383091)+W(4,-1117872135,-1098150014,1040245198,1038911980)+W(5,-1136114154,-1114380427,-1084770114,-1106271331)+W(6,-1118889611,-1103586212,-1097500544,-1109409577)+W(7,-1120239593,999997765,1032457879,-1130668925);WS(1066805616,-1146277627); +sum1=W(0,-1135230785,-1097679853,1046488473,1036204713)+W(1,-1149155717,-1106566573,1047676826,-1098488427)+W(2,1034010150,-1092037473,1047117051,-1103697017)+W(3,1042337650,-1085421897,1062693860,1057957971)+W(4,-1127867356,-1091217395,1049537116,-1114566390)+W(5,1036367663,-1094061036,1056189429,1034870184)+W(6,1011804270,-1108406741,1017502967,-1103604141)+W(7,998521116,-1096997053,1049188263,1029261884);sum2=W(0,-1122819855,1035645255,-1107161682,1042480496)+W(1,1029215207,-1111163705,1019166485,-1107159841)+W(2,-1109976389,1026839491,-1129473215,-1115971786)+W(3,1044451524,-1095838714,1082201538,-1067229991)+W(4,-1130065951,-1147512571,1052773623,-1091650896)+W(5,1027965847,-1156411358,1033233466,-1142132409)+W(6,-1119702735,-1110332882,1034307583,-1107215185)+W(7,1036873692,-1114357123,1001850219,1025815163);WS(1040205182,1040987841); +sum1=W(0,1032709552,1050828331,-1098789018,-1130845956)+W(1,1028035406,1054299632,-1102534446,-1131566290)+W(2,-1152624047,1000765841,-1087146945,1024089890)+W(3,1047238622,1064828620,-1084918512,1044521480)+W(4,-1110798127,1059217829,-1080798168,1041701723)+W(5,-1160283945,1057730984,-1094152707,-1105870556)+W(6,-1129145589,1050797759,-1154982570,-1121779940)+W(7,1035307633,1040620053,-1104995442,-1110323595);sum2=W(0,-1104834685,1039834326,1040649104,-1113573633)+W(1,-1098615503,1050496819,1034170750,-1119108596)+W(2,-1090508283,1045914856,-1118657109,-1128160390)+W(3,-1080862372,1070974917,-1102559609,-1095002000)+W(4,1048874616,-1085801376,1041220807,1053594264)+W(5,1063492499,-1081343708,1047362948,1022825140)+W(6,1035824034,1033985362,-1099586035,1041895669)+W(7,1062512173,-1089072248,-1130222490,-1115149866);WS(-1087487423,1060332710); +sum1=W(0,-1105878689,-1095746139,1053913286,1037671952)+W(1,1042437466,-1089004262,1055197099,-1117440135)+W(2,1040585322,-1081828961,1059867107,-1114610404)+W(3,-1121111477,-1099866351,1061690846,1028605502)+W(4,-1112195269,-1115422148,-1104536871,1040822242)+W(5,-1112892785,1039314504,-1102951638,1041433743)+W(6,-1122925576,-1117471766,-1107184778,1048192776)+W(7,1012646976,-1108492170,-1130420108,1029799624);sum2=W(0,1017331955,-1097747777,-1097037835,-1162485367)+W(1,-1104677463,1040900608,1016355419,-1104406873)+W(2,-1117673238,-1081336501,-1089023490,-1117660642)+W(3,-1094338757,1073518733,1068423959,-1096388411)+W(4,-1119646366,-1103573743,1048344480,-1093216188)+W(5,-1104710153,-1106204508,1057220074,1028492960)+W(6,-1107625181,1041186571,1033091565,-1092192530)+W(7,1022869095,-1097636016,1053959289,1049060345);WS(-1096756863,1051174382); +sum1=W(0,1025372546,-1115668125,1000611497,1034391118)+W(1,-1106905723,1039995714,-1105014230,1041916975)+W(2,-1114360751,1043101563,-1117013085,1027806076)+W(3,1025624474,-1089490746,1058174613,-1111998130)+W(4,1037998160,-1092891318,1045000731,1008039732)+W(5,1032794399,-1107085565,1035643438,1030397185)+W(6,1034992970,-1114405501,-1121180749,1018926829)+W(7,-1114244794,-1168885266,-1120880459,1029203969);sum2=W(0,-1089960886,-1095856011,1007316785,1036775569)+W(1,-1092452707,-1106157919,1041476280,-1107942220)+W(2,1049541326,1074170001,1050706137,1021239050)+W(3,1032119458,-1085150802,-1083810164,-1132331444)+W(4,1032929374,1046048366,1043182557,1036225521)+W(5,-1110883627,-1112079347,-1129593193,-1113579728)+W(6,-1123073435,1027735021,-1214669080,1009639193)+W(7,1026522309,-1111935169,1009058861,1022066674);WS(1063524863,1010978751); +sum1=W(0,1033376264,-1090913225,1054337940,1034437913)+W(1,1035248130,-1094935586,1045510498,1040021853)+W(2,1029138555,-1084407830,1057961148,-1141033844)+W(3,1040606570,-1085174115,1062831778,1032741433)+W(4,-1146340206,-1080254739,1060252175,-1127614262)+W(5,-1122169062,-1094320024,1058700983,-1136275261)+W(6,-1113033206,1033710501,1045946247,1007782611)+W(7,-1115451138,955403507,1033261261,1030604567);sum2=W(0,-1096400044,1053621644,1017015195,1037111777)+W(1,1043917783,1009306318,1005897821,-1106811629)+W(2,-1123678571,1051339656,-1141989437,1047789047)+W(3,-1090244436,1062093709,1065539532,-1093438727)+W(4,1046901313,-1080576226,-1083332175,1049955112)+W(5,1048870815,-1106342004,-1097183812,1043219374)+W(6,1033884063,-1098524562,-1097464341,1050393105)+W(7,1053211427,-1124418811,-1092155120,1044056917);WS(-1085369887,-1080302329); +sum1=W(0,1021216124,-1112260523,1035888345,-1110274640)+W(1,-1121762938,-1119192737,1049037307,-1111476420)+W(2,-1103047566,1050211017,1061443675,-1097892613)+W(3,-1094342263,1058411732,1044828010,-1097171068)+W(4,-1105630871,-1139271463,-1119204121,-1112160677)+W(5,-1107174593,1042276856,-1100915542,1026261917)+W(6,1025950537,-1113852108,-1174284878,-1110403297)+W(7,-1146340105,-1119668597,-1119790119,-1132483222);sum2=W(0,-1115512925,1035074177,-1191992884,-1115656893)+W(1,-1146353705,1040461813,1043381354,-1137020948)+W(2,1036066439,1042528734,1059049535,1021899784)+W(3,-1134998124,1058355837,1058956516,-1112812041)+W(4,-1093678923,-1081621864,-1095612272,1012903452)+W(5,-1122018103,-1089980594,1050844919,-1123282157)+W(6,-1110317749,1049357806,-1100731037,-1122890057)+W(7,1002801625,-1101025299,1036998024,1023124620);WS(-1106521214,-1077666555); +sum1=W(0,1003321829,1052142545,-1102912320,-1108686032)+W(1,-1120901013,1052094618,-1105733097,-1118608535)+W(2,-1105222370,1060439250,-1085669204,1045702647)+W(3,-1107011833,1059969903,-1113880763,-1106161276)+W(4,1029823211,-1095361591,1052882623,-1103122454)+W(5,1000924822,1039904896,-1107186882,-1106172071)+W(6,-1127794128,1000548911,-1118745688,-1113781993)+W(7,1027793952,1046166153,-1096551831,-1132637458);sum2=W(0,1034079401,1025264110,-1123371956,-1116991392)+W(1,-1123608512,-1119278092,-1104246380,-1156408861)+W(2,999851902,1031056700,1051208451,-1098806852)+W(3,-1128074608,1059405503,1063218900,1038716729)+W(4,-1102099502,-1123208440,-1110007228,-1136590423)+W(5,-1109589984,-1081290516,-1131612640,1034885175)+W(6,-1127758712,1015173988,-1124651080,1009682031)+W(7,1032460032,-1121242732,1025045004,-1115963068);WS(1061862175,-1081928168); +sum1=W(0,-1105584175,-1105871745,1043886056,1027658214)+W(1,1024897880,-1093982770,1052657028,992865878)+W(2,1038516044,-1092069365,1055074797,-1121064957)+W(3,1040792761,-1083616743,1065026281,-1106374835)+W(4,1041867802,-1089303929,1056987882,1015027694)+W(5,-1146323132,-1089274268,1054263413,-1132520748)+W(6,1033649803,-1106858177,1043742846,-1137844354)+W(7,-1113939311,-1096909360,1049053899,1017619030);sum2=W(0,1078367032,1027322757,1023449836,-1115583846)+W(1,1056220347,1044756153,-1148770222,993742973)+W(2,-1078889751,-1096547764,1043960988,-1130380138)+W(3,-1073546091,-1101560565,-1126862726,-1147412718)+W(4,-1104234997,1042443775,1029550531,-1115461788)+W(5,-1129365336,1048890957,-1133306383,1019814478)+W(6,-1132392998,-1104280017,-1130422948,-1143007558)+W(7,-1105729449,1028418751,1042854212,-1123464959);WS(1052938943,-1103606318); +sum1=W(0,-1114719934,-1087051802,1058073278,-1114447856)+W(1,-1110318513,-1108424920,1044445625,1040769086)+W(2,1051495307,-1085940948,1060893495,1037779432)+W(3,-1100729633,-1082198177,1058839039,-1103818980)+W(4,1058926789,-1090825863,1060585177,1053070735)+W(5,-1090569589,-1088355266,1053564817,-1091337376)+W(6,1050591187,-1096343413,1054456219,-1131842819)+W(7,-1120060704,-1090847836,1059253187,1026807692);sum2=W(0,1015621136,1033006755,-1072583370,1074691924)+W(1,1032703681,-1098289077,-1084108607,1067219112)+W(2,1048700747,-1098808895,-1081224226,1064576163)+W(3,-1098355550,1046984196,-1081041246,1066863963)+W(4,1047054427,-1083721832,1069053051,-1084686190)+W(5,-1097901072,1061110777,1046858869,-1086075738)+W(6,-1126056922,-1109410901,1068664236,-1079374171)+W(7,-1165737020,1047097145,1076043754,-1071293986);WS(-1083248351,1041375270); +sum1=W(0,998616699,-1087439008,1054645196,1045294540)+W(1,-1142901727,-1092067298,1052452449,-1128264947)+W(2,1043282847,-1097778587,1050602866,1042620067)+W(3,-1128981712,-1084179155,1058025241,-1146688137)+W(4,1049050406,-1090979219,1061357806,-1127282486)+W(5,-1110272759,-1086455104,1053431193,-1125997182)+W(6,1045114289,-1095775369,1052134295,981342481)+W(7,-1170526381,-1087021556,1053157267,1046767364);sum2=W(0,-1076239116,1068235144,1054062613,-1114529265)+W(1,-1079299620,1068687973,1019509447,-1116897962)+W(2,-1079042334,1068481951,1057377046,1041823371)+W(3,-1083365485,1066921525,-1100834259,1032806429)+W(4,1049726715,-1106704213,-1095788298,-1104989857)+W(5,1066758659,-1080829299,-1107253929,-1107915189)+W(6,1069675355,-1077473679,-1112126912,1021289065)+W(7,1075688460,-1073149491,-1090199615,1034867372);WS(-1089965567,1041739713); +sum1=W(0,1014059625,1050606464,-1097348868,1016608410)+W(1,-1109541748,1046384755,-1098095776,-1110057610)+W(2,-1120181702,1052952467,-1098227712,-1165355548)+W(3,-1113826001,1062759283,-1097909490,-1103909923)+W(4,-1099389050,1061539071,-1089710746,1018410859)+W(5,-1107441048,1056969105,-1097990985,-1097884829)+W(6,-1110918155,1043585729,-1112431723,-1109883584)+W(7,-1129336123,1054439728,-1101291373,-1118732474);sum2=W(0,1035083591,-1113211599,1032203968,-1112771443)+W(1,-1112359157,1037267536,-1129901649,999833884)+W(2,1037205500,-1110383577,1050641640,-1113848439)+W(3,-1119560270,1053336900,1062183610,1048127168)+W(4,-1130432545,1036846600,1052549520,-1087091182)+W(5,1033928454,1029308948,1037218786,-1080175934)+W(6,-1111608107,1035214305,-1098666781,-1106600446)+W(7,1027763767,-1137000642,1041216407,-1105808372);WS(1040803966,-1079223548); +sum1=W(0,-1103550802,-1108233168,-1115946235,1021078213)+W(1,-1113401739,-1097729981,1016715200,-1123835458)+W(2,-1105545077,-1112466052,1051122342,-1103483180)+W(3,-1095164520,1056711305,1072346450,-1092700173)+W(4,-1102562113,1033129898,1046866637,-1104392485)+W(5,-1106149592,-1100704991,1041579689,1033532004)+W(6,-1123094707,-1106323272,1017795558,-1128003929)+W(7,-1105989383,-1109921151,1019070562,-1109398092);sum2=W(0,-1132003761,-1097131135,1033952970,-1114013558)+W(1,-1126076753,-1098724323,-1102131199,1027012993)+W(2,1028715469,-1094337061,1043946979,-1109613274)+W(3,-1094940877,1075670208,1037045260,1026138301)+W(4,-1096054213,-1092647285,1052392413,-1107006741)+W(5,1050064171,-1119763725,-1101691459,1032910718)+W(6,-1095828963,-1104609741,-1104710657,-1127911473)+W(7,1024912709,-1103386045,1042676905,-1109320626);WS(-1077711088,-1080462700); +sum1=W(0,1016976667,-1095463505,1048382760,1033669226)+W(1,-1143635214,-1094028818,1043759401,1023995271)+W(2,1050435883,-1084473735,1060944248,1038367764)+W(3,1025648038,-1081613943,1061061657,-1104130812)+W(4,1033190198,-1092817267,1059085444,1035230572)+W(5,-1119077035,-1089963906,1058923652,-1115548134)+W(6,-1127874241,-1112556483,1024757337,998948881)+W(7,-1124293633,-1096263708,1052630131,1035279350);sum2=W(0,-1118714905,1038737245,1045939428,-1084863446)+W(1,-1128906105,1033599435,-1124872105,-1120736313)+W(2,-1104617441,1047074065,1073600723,1072627800)+W(3,-1102497202,-1081197801,-1069501955,1076529178)+W(4,1052988680,1051590837,-1078764847,1066278053)+W(5,1025452854,1036478618,-1078626366,-1115729701)+W(6,-1147569173,1034730428,-1094352359,-1119746081)+W(7,1045309195,-1096538670,-1097394746,1001372341);WS(-1085605823,1039908372); +sum1=W(0,-1110519177,-1101464226,1050281295,-1136474287)+W(1,998302542,-1097280531,1040574050,1017687606)+W(2,-1105109851,1050325520,-1112501642,1027599892)+W(3,1051114493,-1093718398,-1095999987,1038451002)+W(4,1047758692,-1109283231,1052111506,-1112873934)+W(5,1047411644,-1103804777,1013903280,1026946257)+W(6,1008966514,-1107759461,-1131548857,1007362713)+W(7,1027414133,-1099881946,1037344125,1030395745);sum2=W(0,-1115357326,-1098998597,1033193484,-1119934044)+W(1,-1129481498,-1104582263,1041990652,-1109942748)+W(2,1037423788,-1098625511,1052524895,1028176618)+W(3,-1149109833,1036322812,1029624616,1032249206)+W(4,-1107237807,1050926614,-1102468922,-1117055607)+W(5,-1098320683,1045914812,1016354632,1026298641)+W(6,-1118016391,1029306918,1029333966,-1116685452)+W(7,-1111060805,1035368549,1036818044,-1113790705);WS(1066221936,-1112686252); +sum1=W(0,-1111426931,1042737360,1039181581,-1110677245)+W(1,1049363148,-1108750629,-1105687720,1035534704)+W(2,-1090113310,1053136109,1051677110,-1101864162)+W(3,1038796336,-1095853365,1031102479,1019901392)+W(4,-1102958241,-1108890233,1058267293,-1107302241)+W(5,1041899238,1023718298,-1089545128,1048841797)+W(6,-1104001476,1033191264,1047293124,-1106653499)+W(7,-1112879133,-1165972390,1010166848,989728967);sum2=W(0,1019579309,-1121628281,-1104132268,-1133616314)+W(1,-1115216952,1041466962,-1110659898,1046938970)+W(2,-1101014764,1044350744,-1092586315,-1089581193)+W(3,1035949455,-1096356807,1067161402,-1097777539)+W(4,-1125343389,1019949697,1044980625,1025080038)+W(5,1020295703,1011899626,1028945397,1042942659)+W(6,-1107189524,1020414781,1024223321,1000298789)+W(7,1032252124,-1108620092,-1106879950,1034429670);WS(1065647552,1042223795); +sum1=W(0,-1118213891,-1090185691,1054600851,1042956769)+W(1,1047859212,-1099254654,1056675965,1045938459)+W(2,-1102035956,-1085546115,1052764224,-1095542592)+W(3,1049817209,-1090115457,1060918524,1048397149)+W(4,-1136727619,-1086839140,1050058698,-1107166488)+W(5,1018314812,-1089622500,1053194074,-1115710386)+W(6,1048950515,-1103143659,1055030644,1046421002)+W(7,-1111834851,-1088857895,1046059111,1019098869);sum2=W(0,1038047795,1045715537,1062099960,-1074982428)+W(1,-1100534663,-1109612723,1074456323,-1071944747)+W(2,1043709757,-1109559353,1074047524,-1086420775)+W(3,-1098906327,-1088589586,1061406543,-1087600981)+W(4,1054998296,1046750383,-1109444720,1058024333)+W(5,-1097979318,1030039799,-1095255331,1040647828)+W(6,1042447686,-1112135838,-1106577876,1042372587)+W(7,-1135615252,-1108474833,-1098188594,1051479186);WS(-1099261566,-1102058551); +sum1=W(0,1037460750,-1099740733,1035868896,1046250530)+W(1,-1118752449,1038344912,1028635221,1040547388)+W(2,1048855473,-1097823268,-1135561696,1049218244)+W(3,1046116085,-1077722267,-1089090112,1053686776)+W(4,1041532007,-1086845489,1054063629,1041462458)+W(5,1043443965,-1109540512,1036245196,1041323791)+W(6,1035797482,-1112472539,1039520068,-1116084210)+W(7,1048656673,1006300060,-1115462467,1050214602);sum2=W(0,-1107023704,-1099880087,1047853298,-1106650230)+W(1,-1103130345,1049640504,-1100868353,1035820630)+W(2,1025081245,-1099241173,1050410790,-1111373979)+W(3,1007138702,1060797185,-1096656068,1048085306)+W(4,1020633935,-1096100738,1053061345,-1098540289)+W(5,1042694232,1034621436,-1092716332,1045275377)+W(6,-1116958023,-1100840753,1057695342,-1095110662)+W(7,-1117764771,1051814059,-1092707384,1026583068);WS(-1081437504,-1086037448); +sum1=W(0,1002898847,1048903167,-1098037791,-1124004134)+W(1,1034161364,1048827465,-1110924302,1038960439)+W(2,-1097339820,1058952469,-1089826679,-1109622563)+W(3,-1102052735,1062493730,-1082951605,1046141833)+W(4,-1122224578,1056452878,-1095802941,1037494008)+W(5,-1116847174,1052097743,-1093057352,-1142221339)+W(6,-1124219870,1046287775,-1115921615,1018754897)+W(7,-1114337484,1051622635,-1097214606,-1115514650);sum2=W(0,1026296217,-1098267531,1056065541,-1107249906)+W(1,1046658552,1054123387,-1080723543,1049528827)+W(2,-1092482457,1031912087,1068312252,-1094476247)+W(3,1048926974,-1103258874,-1095327126,-1114829012)+W(4,-1093986590,1064081451,-1101319294,-1110151549)+W(5,1051240634,-1081783631,1054428583,-1109929036)+W(6,1031417427,1052301313,-1095108256,1023898518)+W(7,-1116201775,-1136084293,1032992382,-1131461985);WS(1059931039,1045326059); +sum1=W(0,-1105339195,1027626820,1035394960,1020852317)+W(1,-1116497429,-1102542884,1045819641,-1110241387)+W(2,-1104905094,1042432944,1050447189,-1120454715)+W(3,1048600749,-1087368655,1050459387,1028063406)+W(4,1017781140,-1090841955,1058872902,-1135766366)+W(5,1028510504,-1098837680,1038310627,1046575867)+W(6,-1104151378,-1135818261,1009721182,-1121800177)+W(7,1006123003,-1102238241,1039487803,-1138241103);sum2=W(0,-1108715925,1033521028,-1130002309,1043372642)+W(1,-1125695753,-1107049318,1043711791,-1096562690)+W(2,-1106861101,-1126359337,1069432650,1055907536)+W(3,1037467647,1024736242,1069236178,-1077602923)+W(4,1049447879,-1096919459,-1089672176,-1079492159)+W(5,-1108013135,1030099711,-1104043463,1048192702)+W(6,1016159100,1038861546,-1102967963,1041544949)+W(7,1025122350,1027296385,-1115278753,1038199238);WS(1065273279,-1155200022); +sum1=W(0,1032043190,-1110724474,1048813356,-1107914275)+W(1,1042748400,-1113644224,-1113329098,1017813644)+W(2,1044363154,-1103694886,-1138873982,-1119126921)+W(3,-1101712885,1049530899,1013956115,1030506334)+W(4,1020290996,1032343156,-1088512539,1047677002)+W(5,1042545917,-1119655327,-1118975351,1035449518)+W(6,1023679047,-1113927803,-1112426340,1040385292)+W(7,969146311,1014066252,-1102619473,1037002750);sum2=W(0,-1105379539,1040024171,1054804566,1020126178)+W(1,-1114326988,1033596237,-1100858724,1058095820)+W(2,-1128505094,1027874005,-1108932212,-1095228668)+W(3,-1127815582,-1090164335,1015111122,-1114002666)+W(4,-1144273240,1026082941,1057491035,-1109234902)+W(5,1011114412,-1098155637,-1123558275,-1117423595)+W(6,1010998384,1010514392,1041639386,-1148517800)+W(7,1008109660,-1110656550,1025837089,1028462436);WS(1064822335,-1095840736); +sum1=W(0,1049019197,1056391992,-1082098174,1047279757)+W(1,-1114924672,1052717533,-1097259572,-1158101509)+W(2,1006539024,1053226600,-1083318869,1028150783)+W(3,1027273471,1063307800,-1085358981,1048033194)+W(4,1024001604,1051465786,-1093212548,1040827508)+W(5,1023329786,1056189595,-1096912972,-1122795750)+W(6,1034076369,1051405604,-1097995110,1040247311)+W(7,1032078653,1049885284,-1090164049,-1102713147);sum2=W(0,1044291516,1057945825,1075245425,-1075047571)+W(1,-1105536143,1059138923,1063262829,-1084742426)+W(2,-1123279074,1064153610,1058517731,-1087050661)+W(3,-1102729189,-1117658388,1055818216,-1094508761)+W(4,1019015608,-1082824416,-1095331241,-1107921801)+W(5,-1098099014,-1088923796,-1082492094,1066223948)+W(6,1041233257,-1114762777,-1084810008,1065694420)+W(7,-1116414073,-1093119165,-1076437009,1070896480);WS(-1090760447,1052695066); +sum1=W(0,1032827391,-1086160295,1058956361,-1122589400)+W(1,1004836815,-1100507696,1050270371,1011775197)+W(2,1040820154,-1085279840,1061054293,-1126907788)+W(3,1033221771,-1085951050,1060000376,-1109718672)+W(4,-1142824410,-1090476887,1053225609,1031459881)+W(5,1019263487,-1096291378,1052048107,1014310644)+W(6,1033909728,-1104244158,1044967298,1002236306)+W(7,1030288497,-1096098979,-1123372967,1050105184);sum2=W(0,-1115548553,-1119133376,1034230379,-1106450540)+W(1,1010795990,1054475337,1049648601,-1130742967)+W(2,1025233265,-1126101085,1031862009,1074765700)+W(3,-1108773712,-1096206384,1056453743,1076253468)+W(4,1028577219,1025243447,-1092511031,1067142167)+W(5,-1123367926,-1123699076,1040231624,-1082850789)+W(6,1027045545,-1116348436,1052333940,-1074864896)+W(7,1016487959,1026289255,-1098871930,-1066441953);WS(-1098442559,1026469881); +sum1=W(0,-1149983818,1050517915,-1114000872,-1106643136)+W(1,-1119522441,1049663660,-1102209381,-1107005098)+W(2,-1111872220,1057681670,-1097110004,-1107624656)+W(3,-1148708523,1054270423,-1080449641,1044397088)+W(4,1033974589,1065584902,-1089390067,1040137492)+W(5,1034687077,1060962908,-1088971425,1011262833)+W(6,-1121497336,1043551013,-1096207069,-1152197144)+W(7,1040191316,1037520938,-1098201593,-1111636393);sum2=W(0,-1093666199,1067471948,1044138823,-1087858714)+W(1,1049995354,-1083836095,-1089657247,1040673003)+W(2,-1104373549,1067519925,1068116530,-1086283540)+W(3,-1108191449,1075025493,1070698122,-1107890740)+W(4,-1086862321,-1079149522,-1077256496,1052510667)+W(5,-1109961150,-1092122258,-1092830464,1044801958)+W(6,-1105617480,-1118106953,-1104600439,-1113062539)+W(7,1057348983,-1090446878,-1095892285,1040940184);WS(-1089367999,-1080592817); +sum1=W(0,1050901372,1020565079,-1098563453,-1123752726)+W(1,-1142600967,1046045566,-1094642094,1032349343)+W(2,1043029392,1051791856,-1092783656,1017360893)+W(3,1042662963,1059303201,-1082254536,1040706037)+W(4,-1131715556,1060541458,-1088235102,1038984656)+W(5,1028335344,1057651322,-1083519131,1042767141)+W(6,1009439676,1050310918,-1088554180,1039511244)+W(7,1040529906,1061742083,-1084895582,1037250730);sum2=W(0,-1086948904,1072921984,-1102597600,-1081008410)+W(1,1044777691,-1096214776,-1086612116,1053678014)+W(2,-1085906527,1069427540,1055370552,-1094318103)+W(3,-1107333159,1069014322,1068187895,1040782350)+W(4,-1094251850,1068759557,1049876941,-1097053445)+W(5,-1101622483,-1095651744,-1098339283,1052418274)+W(6,1054103540,-1080635176,-1098368915,-1116179967)+W(7,-1095334551,-1071443034,-1119710681,1057760894);WS(-1072329816,1074376722); +sum1=W(0,-1119826815,-1097135645,1051061560,1001332238)+W(1,1034466519,-1100415357,1050212013,1009264740)+W(2,-1121811611,-1123247055,1057003368,-1119531350)+W(3,1040071236,-1078161261,1050094223,1047608180)+W(4,1034412551,-1086793716,1060987117,-1139666027)+W(5,-1125783811,-1092987820,1053182609,1053959834)+W(6,1025497578,-1117997032,1030369595,-1130537576)+W(7,989295697,-1097292445,1040352158,1003451511);sum2=W(0,1010850411,1033963983,1041326744,-1110591524)+W(1,-1119692159,1024673399,-1126975570,1039643589)+W(2,-1110113403,-1107122545,1049177676,-1098235771)+W(3,1041465994,1041917938,1075051781,1061676083)+W(4,1019542894,1031918417,1057547658,-1072022345)+W(5,1041361680,1016152214,-1100210466,-1080793678)+W(6,-1128076954,-1119110501,-1101468559,1038326573)+W(7,1035827461,-1108745692,-1111890885,-1115279667);WS(-1089734463,1065567745); +sum1=W(0,-1115310942,-1089748010,1053493076,1041536229)+W(1,1048676446,1033541431,1047890913,-1111760907)+W(2,1051913151,-1091844976,1060749357,1031051700)+W(3,1041943745,-1078026925,1057682191,1033727319)+W(4,1032260949,-1083863979,1060855949,-1117552023)+W(5,-1123414147,-1088695462,1057895644,-1123512523)+W(6,1025799735,-1097284573,1049355215,-1134918146)+W(7,-1118314271,-1090712276,1052101531,1037093278);sum2=W(0,-1087048499,1067110585,1062551012,-1088705293)+W(1,-1089227831,-1073947481,-1107011493,1063056164)+W(2,-1081828818,-1100054441,1044700801,-1091908804)+W(3,-1106022394,1057992187,1053279159,1049660447)+W(4,1057638724,-1096117153,1047077354,1041467137)+W(5,1053589051,1049824990,-1098858111,-1112699600)+W(6,1030725267,1008667589,1055551992,991046018)+W(7,1050363813,1047082764,-1093863007,-1118599281);WS(-1079109040,-1085312521); +sum1=W(0,1023769582,1037365911,-1113299189,-1127522065)+W(1,-1140282322,-1117579705,1042794748,-1098682508)+W(2,-1105105824,1052645482,-1086336671,1041518392)+W(3,1041551140,1061549365,-1087637436,1049784787)+W(4,1030694836,-1092653220,1051894263,-1104535548)+W(5,-1111084358,1050958145,-1111723928,-1112540051)+W(6,955351653,-1113919416,1039072513,997865134)+W(7,-1133450021,1047664699,-1111528112,-1121426302);sum2=W(0,-1112127727,-1182735741,1027967369,-1099828018)+W(1,1037755147,-1116775242,-1108084106,-1106208929)+W(2,-1117076760,-1110833901,1047419656,-1106621688)+W(3,-1096944427,1050960349,1057406540,-1093670465)+W(4,920706880,1057824022,-1106635563,1046907280)+W(5,-1126463908,1025802869,1030718323,-1104727129)+W(6,1025583781,-1117624689,-1129307942,1024731263)+W(7,1016301114,-1106817101,-1146210056,-1133403952);WS(1066445424,-1114782683); +sum1=W(0,-1105169880,-1110498524,1042140161,1033176686)+W(1,1037849343,-1092096849,1045982494,1027992139)+W(2,-1111719878,-1089773556,1059787797,-1104315937)+W(3,1053025475,-1093199580,1058443885,1034263873)+W(4,-1106443352,-1085224723,1058982105,-1099213011)+W(5,-1118185334,1017432168,1051015495,1015617473)+W(6,-1115180998,-1097477655,1049335790,-1134277975)+W(7,-1104379365,-1120659192,1047806371,-1124174113);sum2=W(0,1035156885,-1104443938,1020765936,1034215267)+W(1,1010861092,-1111353322,-1131256669,-1119467871)+W(2,1053142713,-1092519845,1043066295,1043572605)+W(3,1050643378,1033492110,-1093594884,-1120345789)+W(4,-1093995815,1061622434,-1090891830,1035132204)+W(5,-1100307988,1045835461,1051701313,-1120193257)+W(6,-1094190457,1054276307,-1115303200,-1107758441)+W(7,-1095534688,-1118030035,1044764145,1010759898);WS(1053797695,1034928741); +sum1=W(0,-1113709609,1027306577,-1089618673,1039738506)+W(1,-1101985872,1036410350,-1094568298,1041675949)+W(2,-1098832221,1048222316,-1089721378,1049870789)+W(3,-1106547453,1049396519,1057932790,1032602030)+W(4,1032341932,-1093507345,1051551069,1041034929)+W(5,1038712045,-1098128846,1042310981,1020376402)+W(6,1020651977,-1102358117,1032076306,1038606871)+W(7,1037110646,-1095739626,1049811664,1036847389);sum2=W(0,-1107569978,-1096371488,-1091206842,-1113379832)+W(1,1048834253,-1100415470,-1140716449,-1098639187)+W(2,1032955728,-1097656368,-1099982688,-1102236471)+W(3,1047116738,1057366407,1067804624,-1112454303)+W(4,-1095875849,1049724515,-1107732848,1037256860)+W(5,1024141754,1047568587,-1101898886,1039735469)+W(6,-1117854930,1025784853,-1104360749,1034482735)+W(7,1031286951,1040928209,-1099991629,-1122662653);WS(-1100599294,-1113486107); +sum1=W(0,1041832895,1058015130,-1095482492,-1123207408)+W(1,-1113994869,1043005476,-1095369841,-1120610968)+W(2,-1101582062,1065539217,-1088297536,1040056719)+W(3,-1100675730,1054749782,-1085935041,-1111595960)+W(4,1015862616,1046936430,1054414015,-1110844045)+W(5,1033573462,1043027144,-1096194081,1041950395)+W(6,-1123901241,-1122192647,-1118572185,1007333963)+W(7,-1147102474,1047923809,-1106262926,-1097939280);sum2=W(0,1033496750,-1105017139,-1118941046,1012703263)+W(1,-1118187780,1043450683,-1142467441,1009095593)+W(2,1041080086,-1106458832,-1096734279,1025973118)+W(3,-1102935461,1057933296,1063076098,-1089439993)+W(4,1023898015,-1098239652,-1119844388,-1124882200)+W(5,-1122438380,-1111698692,1048742138,1004297609)+W(6,1007185073,1023645924,-1096898561,1046154393)+W(7,999989929,1034431733,-1090457759,1048791679);WS(1058454143,-1086058342); +sum1=W(0,-1115074879,1051341170,-1123276713,1040408770)+W(1,-1099743710,1054019099,-1112675511,1042487060)+W(2,-1103933280,1057240637,-1095853513,1044345774)+W(3,-1113530407,-1085932301,1048593300,1034191179)+W(4,-1124606630,-1090466976,1059272419,-1105205160)+W(5,-1115568198,-1097279225,1052135974,-1111240730)+W(6,-1123572016,-1108988935,1039376368,-1135917288)+W(7,-1118699368,-1095706385,1041536544,1043157563);sum2=W(0,1047642666,-1106684338,-1097565895,1038757740)+W(1,-1094360366,-1104496052,-1137000462,-1120606628)+W(2,-1111839157,-1101578828,1017360469,1043520604)+W(3,-1101124559,1062389037,1056361687,-1110716481)+W(4,-1119401007,-1099504899,1057357121,-1121032787)+W(5,-1114275291,-1102577927,-1111580608,-1174578992)+W(6,1010413358,-1121638606,1047557438,1020758339)+W(7,1018914035,-1100286365,-1108198790,1031842399);WS(-1116191222,-1087222261); +sum1=W(0,1051378220,-1092140039,-1098282527,-1115126509)+W(1,1026061480,1041212802,-1108686318,1018050395)+W(2,1051132746,1028855632,-1114615088,1028919646)+W(3,-1131139769,1054776996,-1096808426,1031880915)+W(4,1029438530,1052461054,-1090181940,1047407636)+W(5,1010253799,1056191968,-1089672580,1041055121)+W(6,-1140691900,1041996679,-1095415146,1025713945)+W(7,1032111196,1051463563,-1084069643,1049760258);sum2=W(0,-1120688670,1075791226,1072772368,1033088733)+W(1,988781159,-1079951996,-1096143661,-1126178338)+W(2,1023531678,-1080919050,-1087274515,1039982901)+W(3,1034244658,-1078043585,-1074830486,-1153355920)+W(4,1038669521,1061514147,-1138433181,1047086021)+W(5,-1125227753,1050383220,-1091737459,-1117938706)+W(6,-1122152897,1043495776,1043710967,1036258954)+W(7,-1123518214,1056154705,1064633897,-1090859740);WS(-1086114623,-1084816591); +sum1=W(0,-1119067590,1036163639,-1106221778,1015833809)+W(1,1041053515,-1112478813,-1114565991,1041839788)+W(2,-1123050946,1045609440,-1102274148,1038604869)+W(3,1050414506,-1091176571,1041957568,1049671879)+W(4,1017204584,-1096458464,-1140250052,1016035267)+W(5,1033253648,-1092456237,1042499428,1004159150)+W(6,-1109025761,1039781304,1024592194,1019624502)+W(7,-1142909644,1019336538,-1110741472,1038938427);sum2=W(0,1006657945,-1115603798,1043167348,1032033598)+W(1,-1145756082,-1129023472,1029036192,-1122908214)+W(2,-1102183527,1024575987,-1134024937,1013148193)+W(3,1043063832,-1070476153,-1079118960,-1117007948)+W(4,1048257970,1078068971,1058188063,1026806223)+W(5,1030027167,1034687231,1026633068,-1106350665)+W(6,-1129422896,1014471457,-1138449465,1037397710)+W(7,-1120006792,998969122,1035752331,-1119066852);WS(1058895967,-1115291633); +sum1=W(0,-1125313920,-1118075736,-1101537045,-1102743433)+W(1,-1110715998,1028840739,-1106860038,-1113756805)+W(2,-1110540830,1050429809,-1109809347,-1112821659)+W(3,-1093243535,1056177832,1062536899,-1094426092)+W(4,-1098773368,1050921353,1050429425,-1112140166)+W(5,-1114664694,1021103494,1042267175,-1105504016)+W(6,-1108229374,1039051533,-1104944731,-1123143221)+W(7,-1128878150,1048765371,1019165331,-1113092552);sum2=W(0,-1118991740,1049660250,-1072802862,-1093107290)+W(1,1035161218,-1092533458,-1084844108,-1131472334)+W(2,1031409558,1052404039,1059153934,-1099814906)+W(3,1025873763,1059098325,1066715964,1050189246)+W(4,-1130385854,1035329255,1054800035,1033113369)+W(5,-1109675818,1033133876,-1121630224,1032032260)+W(6,1035221069,-1100849576,1017402854,999987753)+W(7,-1106515599,1041079456,1051036492,-1109656332);WS(-1088275071,-1079832501); +sum1=W(0,-1121609972,-1140631216,1031902612,-1114449795)+W(1,1054795207,1001216956,1053928586,1049117898)+W(2,-1091175970,-1109051587,-1100362195,-1089874193)+W(3,1036185063,-1108520810,-1118566269,1024185910)+W(4,1036253081,-1112588624,1050418310,1033419200)+W(5,-1095852779,-1111932116,-1106845532,-1098704820)+W(6,1056993046,1018114011,1057036918,1052334541)+W(7,-1099614386,-1114447781,-1106898567,-1103629998);sum2=W(0,1034198694,-1099753021,1052074243,-1101897553)+W(1,981839325,1036479145,1033443852,-1125560160)+W(2,1050051875,-1087878645,1061175239,-1090657055)+W(3,1043520387,-1099082069,1044393022,-1126528836)+W(4,-1099547613,1049181233,1036533430,-1113239720)+W(5,1020237946,-1106552091,-1125692060,-1111189720)+W(6,-1112528204,1051666481,-1100952955,1038783930)+W(7,1032634213,-1105193718,1038429221,-1110455840);WS(1055684799,1057467177); +sum1=W(0,-1115635180,-1084593518,1057349085,1044528285)+W(1,1040983065,-1097583958,1048845932,-1108137881)+W(2,1033664034,-1088354001,1059080519,1042415046)+W(3,1047016048,-1083875169,1057461395,-1130549589)+W(4,1040303666,-1089538899,1055847004,1025308788)+W(5,1031194256,-1090088564,1052697432,1040121956)+W(6,1036112338,-1096939300,1050363555,-1124884732)+W(7,1031542812,-1092334596,1025617138,1051059157);sum2=W(0,1039076253,1084724252,1055999642,-1111202323)+W(1,1043377438,1057352437,-1108204793,982595482)+W(2,-1111770710,-1070809771,-1115649819,1026864091)+W(3,-1129064764,-1070013447,-1084654208,1008953953)+W(4,1041506513,1024963427,1027889169,1041107952)+W(5,-1117340191,-1115045950,1023558847,-1112891517)+W(6,-1113661124,1037860995,-1108774739,-1161342746)+W(7,1006037802,-1120758055,1034794526,1036271073);WS(-1089965247,1033154456); +sum1=W(0,-1118330000,1037068672,1043453383,-1112803845)+W(1,1043361746,-1091726905,1027410848,1030795409)+W(2,1028536899,-1106295439,1047994631,-1111747193)+W(3,-1106541856,-1087991002,1053447482,-1109712917)+W(4,-1103233833,-1094017778,1058853977,-1110327970)+W(5,1037178020,1026207675,1049286760,-1111739348)+W(6,-1122355891,-1102222128,1044913013,1037236782)+W(7,-1148310999,-1106998176,1056026770,-1104668925);sum2=W(0,-1104081637,-1104712414,1038273275,-1102746442)+W(1,-1115350296,1065017407,1027805677,1038124336)+W(2,-1102551062,-1101193417,-1097697554,1025981021)+W(3,1033477476,1054909386,1069044481,-1090398660)+W(4,1048930937,-1096226206,1051154993,1049254524)+W(5,-1092653578,-1094950793,-1097937335,-1111378843)+W(6,1049862570,1042131871,-1115393002,-1100983150)+W(7,-1095610208,-1100838677,-1090656582,1038627466);WS(1053522367,-1088249107); +sum1=W(0,1041083642,1049354980,-1104528935,-1116245577)+W(1,-1109062519,1050121221,-1089361286,-1108913352)+W(2,1041255149,1062047573,-1094323010,1044478835)+W(3,-1129341567,1050256849,-1085946707,-1106612546)+W(4,-1122816004,1058306025,-1092704114,1010650184)+W(5,1034422596,1054029415,-1096738148,-1127765836)+W(6,-1105678140,1043380368,-1095183726,1004046811)+W(7,1002201935,1057986114,-1098664466,-1116617606);sum2=W(0,-1115691041,1047105417,1066880006,-1078420733)+W(1,-1122196578,1040512713,1072356775,-1074089832)+W(2,-1133382325,-1115639944,1070833917,-1079250237)+W(3,-1119943136,-1093984910,-1106032356,1053171659)+W(4,1035619338,-1128164365,-1084317659,1063302165)+W(5,1026693101,-1112542694,-1103058628,1050228647)+W(6,-1121646682,1040561229,-1106694088,-1111273903)+W(7,1035287249,-1122951759,-1109474775,1041535222);WS(1054980735,-1118400611); +sum1=W(0,1023857233,1056052581,-1108899938,-1098911041)+W(1,-1136534172,1054619866,-1084632317,1014993130)+W(2,-1109579886,1062631892,-1087670245,1019079234)+W(3,1024279465,1063340895,-1087714282,984908360)+W(4,1031638446,1054891904,-1089981519,1040973935)+W(5,1042081899,1032051762,-1091518889,1034243544)+W(6,1025101580,1036582853,-1100292439,1038263499)+W(7,1037741818,1040187076,-1096282711,1035333164);sum2=W(0,1048663857,-1103126769,-1090522781,-1135969141)+W(1,-1115607290,-1089284711,-1135630263,-1096474341)+W(2,1050959246,-1106476140,-1116194786,-1110761886)+W(3,-1094885185,1065597134,1068281966,-1097679100)+W(4,1032263390,-1114774312,-1114594327,1030603925)+W(5,-1094433235,1044112203,1034641663,1025157613)+W(6,1034671855,-1110680696,-1120338125,-1121778209)+W(7,-1100445080,1044150663,1039802827,-1101519530);WS(-1099426814,1028666567); +sum1=W(0,1017347599,1050515008,-1097546199,-1122852442)+W(1,-1114817850,1054909169,-1091252816,1034424401)+W(2,-1102332157,1058789976,-1088740593,1040697053)+W(3,1038414608,1049870885,1026332624,-1119196265)+W(4,1040863441,-1096181150,1050979384,-1096850298)+W(5,1043586729,-1094822147,1046083753,-1101867410)+W(6,1033560385,-1110297504,1043042893,-1112505198)+W(7,1024225691,1035801215,-1106319780,1022200238);sum2=W(0,1032296335,-1113854030,-1123218166,1034439881)+W(1,-1113414658,1056314261,1057288090,-1106401889)+W(2,1032045591,1056282685,1048444709,1027355020)+W(3,-1096252543,-1076472908,-1076465599,-1099548772)+W(4,1039836782,1041975936,1054239999,1041344971)+W(5,-1130462124,1060789196,1064414385,-1137373456)+W(6,1032505935,-1113045826,-1101415652,1031341874)+W(7,1017080436,-1114544525,1017354944,-1131418272);WS(1048405758,1021439377); +sum1=W(0,-1095783591,1056714988,-1095028931,-1099026446)+W(1,1004365570,1053912029,-1097931508,1040281084)+W(2,-1111296393,1060368018,-1093355890,1042667324)+W(3,-1090472608,1058906144,-1084869763,-1099317986)+W(4,1053249340,1059710205,-1111710658,1058667863)+W(5,-1096289768,1050004859,-1089344390,-1094050929)+W(6,-1116930177,1050104788,-1098648430,1032145973)+W(7,1031327257,1057263364,-1095692170,-1127343131);sum2=W(0,-1137650289,-1102128439,1065729447,-1085103011)+W(1,-1108324664,1038586891,1042582877,-1096095433)+W(2,-1107068637,-1102631398,1055966210,-1096657292)+W(3,1053004242,-1096144010,1066736444,-1084794119)+W(4,-1096186406,1065778432,-1077760412,1061684194)+W(5,1044011702,-1087564484,-1109340585,1053274132)+W(6,1031462490,1041037240,-1088233524,1060428365)+W(7,1016473473,-1095964556,-1079487884,1070082531);WS(-1120621558,-1109747932); +sum1=W(0,1041405257,1056552380,-1086075216,1021959803)+W(1,1034046808,1057052863,-1102283433,1009707220)+W(2,-1118447615,1034826244,-1089852749,1002695151)+W(3,1031113092,1061462741,-1087896594,1030648525)+W(4,-1118172841,1057041023,-1089300195,1017359341)+W(5,1039149197,1051800560,-1089266110,1034838445)+W(6,1025628006,1051243933,-1098077639,1033512688)+W(7,1023987646,1054503948,-1098034299,-1099231069);sum2=W(0,-1072120352,1076686179,-1096491690,-1109988374)+W(1,-1071453180,1075980741,1055107632,-1125676035)+W(2,-1069998225,1075876198,-1100816518,1033428305)+W(3,-1071241469,1076219984,1048961210,1018908197)+W(4,-1073669228,1072219376,-1123192163,1040773271)+W(5,-1079882002,1071235859,-1097056656,-1129279043)+W(6,-1086087106,1056170781,1049622318,1030403985)+W(7,-1096258120,1057784547,-1098632303,-1116156171);WS(1014286296,1057122707); +sum1=W(0,-1100574608,1045128364,1045637171,-1113867461)+W(1,-1134927261,-1112841149,1041785732,1021982785)+W(2,-1096946922,1023155519,1051848326,-1106336253)+W(3,-1115033128,-1094208427,1066937726,-1099783438)+W(4,-1104533485,-1099169249,1058599142,-1105189673)+W(5,-1121259095,-1097752701,1049921902,-1131816685)+W(6,-1131995140,-1111007544,-1118760834,-1114789302)+W(7,-1118839498,-1093400894,1043420320,-1116552190);sum2=W(0,1049653051,-1095117458,1052542945,1018695699)+W(1,-1094509070,1054995367,1021265631,-1101605993)+W(2,1050525055,1042728281,1046926465,1044635344)+W(3,-1103662151,1058124872,1063131010,-1104882803)+W(4,1043452805,1049859565,1029162962,1042944443)+W(5,-1102028885,-1097129382,-1116537562,-1110047725)+W(6,-1109754017,-1098619851,-1092457406,-1107003327)+W(7,-1111709279,1051259496,-1078653130,-1114867517);WS(-1089617919,-1078924764); +sum1=W(0,1038586191,1054651431,-1087542485,1032587193)+W(1,-1112517470,1043170193,-1101086846,-1121720345)+W(2,1021690773,1058605998,-1088163691,1034793549)+W(3,-1148410045,1062049174,-1087004528,-1139319682)+W(4,-1123773533,1056236357,-1089020247,1040971627)+W(5,1037589846,1058401044,-1089711896,1052009144)+W(6,-1114886949,1034515388,-1095006441,1017461287)+W(7,1015916580,1056139353,-1089662071,-1138694970);sum2=W(0,1041183203,-1104791361,-1113641717,1040266660)+W(1,-1109901203,-1103309504,1018299463,-1124518657)+W(2,1047303939,-1109225788,993644855,1039912380)+W(3,-1146453442,1050748307,1050538753,-1107008276)+W(4,-1103370030,1032462009,1024125183,-1094411631)+W(5,1035308463,1055570013,1058013570,-1087158984)+W(6,-1107592095,-1104507532,1044744090,-1091454514)+W(7,-1129723226,1050955773,-1110543421,-1122733934);WS(-1102088830,1068463311); +sum1=W(0,1007817678,1054791531,-1088166471,1034628887)+W(1,-1114291787,1051084317,-1097682087,-1130503387)+W(2,-1106493040,1059023407,-1087032011,1042839161)+W(3,-1121377148,1060487316,-1087032009,1025313797)+W(4,-1120569345,1053262386,-1090195409,1040112167)+W(5,1037434082,1049438849,-1104445288,-1112558866)+W(6,-1121570543,1043319351,-1110294871,-1130274577)+W(7,1048479966,1037267389,-1112047510,-1107488086);sum2=W(0,-1092702026,1046572938,-1113806693,1023924734)+W(1,-1078842502,-1092761370,1010298098,-1134107544)+W(2,-1073165872,1048469719,-1106037347,-1114438827)+W(3,-1075365553,1050413401,1041503306,1017902665)+W(4,-1101579557,-1110447061,1037192623,1011674154)+W(5,1066341075,-1104166524,1033398310,-1109271682)+W(6,1071992070,-1123716833,1031702363,1028552632)+W(7,1076187261,1056626852,-1110743783,-1123830383);WS(1050299903,-1120086405); +sum1=W(0,1001761330,1015037916,1045981578,1032160884)+W(1,1051426245,1042953374,-1094503950,-1131440192)+W(2,-1097473350,-1103780307,1055197076,-1100940622)+W(3,1050955122,-1082933123,-1099126616,1056645367)+W(4,-1098718343,1055455844,-1118831961,-1095742542)+W(5,-1119699408,-1145769035,1049761702,1031622998)+W(6,1038117517,-1132909758,-1105955296,1041481643)+W(7,-1107622229,1039587926,1047033256,-1103124921);sum2=W(0,1033493706,-1100025935,-1117747708,-1131691420)+W(1,1004282338,1036668146,-1097774825,1042472719)+W(2,1032395114,1043333590,-1106149887,-1122758767)+W(3,1035721710,1058018229,-1110236537,-1106477628)+W(4,-1138557465,1035348312,-1105971349,1046834331)+W(5,-1094630455,1040910383,1017216296,-1101697584)+W(6,1050323990,1034465026,-1110352462,1040100106)+W(7,-1102984389,1044530527,-1108832665,-1099114129);WS(1059761855,-1093333930); +sum1=W(0,-1114738580,1026403632,-1105736123,-1114933837)+W(1,-1114617627,1045397583,-1109519752,1044731740)+W(2,-1102727321,1028768699,-1092041414,-1111636685)+W(3,1053910378,1067649611,-1090720496,1058839312)+W(4,-1094270689,-1104323849,-1112030179,-1095377736)+W(5,-1107452471,1042776267,-1103704317,1034877772)+W(6,-1130455238,1036450873,-1131764742,1031929286)+W(7,-1108958070,1044075076,-1106063752,-1113359528);sum2=W(0,1033753751,-1111931472,1037689465,1023732592)+W(1,-1102724392,1032416705,-1105246922,-1126463180)+W(2,-1104466296,1029992729,1052475163,-1118149766)+W(3,-1083668043,1069568682,-1090236396,-1106129378)+W(4,1048180527,-1114422988,-1122305941,1038071226)+W(5,-1130490520,-1133345747,-1123788932,-1124715334)+W(6,-1103926430,1038116955,-1127253836,-1117123194)+W(7,1029490699,-1129834714,-1122171294,1029091180);WS(1058247519,1058950523); +sum1=W(0,-1149972914,-1088063023,1055543086,1037155715)+W(1,1038957612,-1093535488,1052729022,1026693813)+W(2,1039970419,-1086741707,1058924163,1030719286)+W(3,1008158544,-1077128706,1057693884,1032127358)+W(4,1041515382,-1087332234,1060656868,1000958261)+W(5,1036144305,1032313207,1056531259,-1112386573)+W(6,1048236362,-1113848378,1049522521,-1144612480)+W(7,-1101573740,-1089306475,1052006205,1039554949);sum2=W(0,1037957789,1050553491,-1089722328,1050994656)+W(1,-1128637884,1004874497,1058234547,-1095571828)+W(2,-1110859440,-1106433025,-1098594890,1041665953)+W(3,1052981065,1058989771,1052545864,-1129708900)+W(4,1040710261,1058251934,-1106724054,-1111634443)+W(5,-1090346288,-1076253449,1032950959,1015279680)+W(6,-1107045102,-1079150504,1055215751,1053553553)+W(7,-1092015484,1073146781,993278274,-1088813426);WS(-1079689312,1054955487); +sum1=W(0,-1112827293,-1094091800,1053343716,1046408387)+W(1,1038847520,-1099397203,1057879171,-1099233409)+W(2,-1106748654,-1102151838,1023820222,-1154890390)+W(3,1038138418,-1086663035,1057249493,1012875058)+W(4,1035397268,-1087965823,1057985827,-1109124523)+W(5,1020226162,-1095805620,1053821069,-1126965269)+W(6,1030022886,-1098762192,1051466543,1036334304)+W(7,-1108673687,-1096846716,1049463311,1027304762);sum2=W(0,1029906557,-1118908362,-1075330978,1069116571)+W(1,-1110945783,-1110004947,-1081100797,1067844910)+W(2,1046588193,-1089040350,-1089891752,1066162938)+W(3,-1121400966,-1106443118,-1103643831,1048795077)+W(4,-1106274145,1054044230,-1095873523,1049522444)+W(5,1040948990,-1115139995,-1120742988,1042365723)+W(6,-1114149785,-1112260837,-1107023588,1011222152)+W(7,1030737726,1025987216,1017833328,1031208089);WS(1045323518,-1099573370); +sum1=W(0,1043494028,1054678847,-1087400961,1041221965)+W(1,-1110296205,1050638833,-1098183847,1038272854)+W(2,-1129034139,1058657792,-1085969705,1035507984)+W(3,1040205415,1062545342,-1082320511,1038672050)+W(4,1019451328,1053087270,-1092792902,1018934299)+W(5,1037480760,1054717567,-1090230188,1028598065)+W(6,-1144942569,1044080591,-1094581114,1032398451)+W(7,1019441962,1056118375,-1090342307,-1135273190);sum2=W(0,-1115726367,-1100272494,1026681555,-1095030133)+W(1,1028786141,-1113941052,-1107020345,1043410282)+W(2,1044450180,-1104186275,1044693748,-1120312046)+W(3,-1097529180,1042859033,1067055887,-1093369648)+W(4,1047479398,-1097402721,1064288021,-1083945294)+W(5,-1105649332,1051025911,1073649944,-1073003592)+W(6,-1127420023,1025042835,1067916626,-1079526678)+W(7,1035799966,-1139194229,1054550763,-1086831079);WS(-1086660959,-1095040438); +sum1=W(0,-1137772688,-1101831491,1047762270,1026497863)+W(1,-1103872010,-1108733164,1048734598,-1112526127)+W(2,1033664792,-1099393082,1053294440,1036444877)+W(3,-1114303830,-1091611870,1032897582,-1105948909)+W(4,1043631948,-1111668992,1054700448,1045765800)+W(5,-1110960013,-1092153253,1051790266,-1102627253)+W(6,-1112201312,-1104258339,1038982672,1030853145)+W(7,1004207675,-1111896549,1042342295,1024477884);sum2=W(0,1047134358,-1100773581,1038575217,-1121016162)+W(1,1032860761,1019143260,-1097448906,1027754828)+W(2,1058187056,-1086969962,1050436365,-1118814167)+W(3,-1089859690,1060822499,-1092585260,1047705700)+W(4,-1073724300,1074524802,-1097001013,992280012)+W(5,-1113017653,-1127402252,1052022456,-1115523910)+W(6,-1123513506,986153015,-1101541136,1026625966)+W(7,1005834992,1026902445,1040058169,-1115254226);WS(1065625968,1033455989); +sum1=W(0,1037701789,-1151616802,-1102944307,1035789757)+W(1,-1137040283,-1099349487,1053320242,-1106274637)+W(2,1000406064,1047711372,-1098462560,1048627484)+W(3,-1094784938,-1115632781,1053161728,-1098374228)+W(4,1050863995,-1088133648,1049613697,-1120581030)+W(5,-1103592251,1049293870,-1128175786,-1114622845)+W(6,1032127959,-1118922740,1017489163,1038993832)+W(7,1038622703,-1120882929,-1119810116,-1165953346);sum2=W(0,1035866397,-1099238508,1052038184,-1107491561)+W(1,-1103116216,1047962584,-1105248240,1027069673)+W(2,1059558286,-1082734190,1057669233,-1098068789)+W(3,1058384307,-1088122523,-1091086098,1053762892)+W(4,-1096953271,1056069525,-1083280561,1064349048)+W(5,1042132369,-1106560803,1032403631,-1107462772)+W(6,-1111426470,1038442279,-1104452063,1040922744)+W(7,-1128202268,1028886015,-1150402298,1012204557);WS(1066439152,-1108830929); +sum1=W(0,-1102916748,1055608939,-1103898045,1013732302)+W(1,-1108788820,1051866141,-1097938907,1035488645)+W(2,-1097607254,1058768962,-1093577324,1043113957)+W(3,-1099017414,1030462560,-1125603603,1027216291)+W(4,-1168846782,-1113005110,1040477611,-1143171172)+W(5,-1109193920,-1109987210,1050862423,-1118580993)+W(6,-1128476473,-1109670205,1039038758,-1107320747)+W(7,-1106724277,-1105116142,1053895221,-1107171108);sum2=W(0,1050905005,1051409035,-1123874142,-1099079861)+W(1,1051922636,-1107944278,-1131839644,1035659117)+W(2,1052154527,1040207956,-1100926997,-1109355656)+W(3,1005525738,1060123319,1046139234,1029590720)+W(4,1024591478,1032045878,-1113252250,1032543174)+W(5,-1094205878,-1096175996,1039675350,1044310065)+W(6,-1094330307,-1086096303,-1128729660,-1129395200)+W(7,-1105421569,-1081193369,1062516858,1042520685);WS(-1094347903,1040885342); +sum1=W(0,1027015666,-1119901274,-1109404651,-1145327523)+W(1,-1097151811,1047615033,1051228067,-1096635113)+W(2,1050782150,-1115052947,-1096976391,1048638245)+W(3,-1106442815,1051587896,-1096200649,-1105180361)+W(4,1051184308,-1105704339,-1126487153,1051518582)+W(5,-1091810963,1046407197,1040585575,-1092825760)+W(6,1034433919,1009768300,-1132445914,1038762547)+W(7,1042242605,-1122889273,-1108464678,1040013733);sum2=W(0,-1121205117,-1124056141,-1106581817,1026565438)+W(1,1031829824,-1109805410,1007706034,1029970286)+W(2,-1105324964,1045427632,1046732003,1047283254)+W(3,-1090390675,1059020251,1057752640,-1089850616)+W(4,-1110420773,-1107061510,-1101115525,1031976810)+W(5,1018005966,-1118368537,-1103994134,1036394258)+W(6,-1113281242,-1115675784,1036673543,-1112565336)+W(7,1032068637,-1113920834,1042522746,-1145818031);WS(1066366016,-1121083386); +sum1=W(0,-1127500850,1026624689,1013565235,-1127181143)+W(1,-1122305754,-1114017662,1052467062,1035730049)+W(2,1025706181,-1088657475,-1121688536,1045310349)+W(3,-1104671484,-1098749979,1066224034,1026340635)+W(4,1043832110,-1085705014,-1112016562,-1121566277)+W(5,-1111488580,1037547214,1041900405,-1127673329)+W(6,-1123271764,-1112264441,1043675185,998683632)+W(7,1015742169,-1105147876,1022047173,-1132045794);sum2=W(0,-1102951634,1043023116,-1104735391,1035018995)+W(1,1044058166,-1093545812,1058451408,-1112978123)+W(2,1037657608,-1093647750,-1104370519,1043811519)+W(3,-1091261805,1070997171,-1105620254,1052846459)+W(4,1057746121,-1082044166,-1091103100,-1097428497)+W(5,-1106029228,1051593249,-1096225251,-1127092852)+W(6,1006392595,-1100798567,1052307063,-1107453736)+W(7,-1119100020,1013819138,-1121077487,1041369362);WS(1059191103,1030618557); +sum1=W(0,1034200101,1032351793,-1100440271,-1148363237)+W(1,1053678608,1049973094,-1098031908,1026486548)+W(2,-1114145283,1058794603,-1087452589,-1194991971)+W(3,1047695489,1053292689,-1078695803,1043453347)+W(4,-1114663316,1055818163,-1125225546,1033675947)+W(5,-1137634576,1053263444,-1094543429,966472909)+W(6,-1125278731,1041016873,-1116533557,-1115520783)+W(7,-1138534517,1043320696,-1104858229,-1119664758);sum2=W(0,1021496216,-1095812325,-1116672596,1031503244)+W(1,-1072453458,-1094113031,-1112299630,1023122856)+W(2,-1079530578,1068683999,-1135088113,1036078566)+W(3,1063841069,1074699170,-1126165044,1036242384)+W(4,-1095958945,1043477830,-1107446259,-1100441243)+W(5,1042172731,1031880682,-1119142347,1009915385)+W(6,1015153576,-1121439437,1037216194,-1114450875)+W(7,-1132334880,-1115200049,1034903618,1017712520);WS(-1096433855,1052342409); +sum1=W(0,-1117693364,1042163431,1006023611,-1113444755)+W(1,1041070378,-1095385709,1034697390,1049542464)+W(2,-1105417036,1060080198,-1109633387,-1112382959)+W(3,1052133240,-1090036408,-1085473397,1048891757)+W(4,1042648272,-1090327769,1057448056,-1111238376)+W(5,-1123398616,1043184694,-1105658040,-1106505885)+W(6,1044512510,-1111854479,-1104977148,1049508979)+W(7,-1105041790,1043408999,1041051171,-1110665802);sum2=W(0,1039259027,1043188759,-1165551167,-1113326246)+W(1,-1119373866,-1082984200,-1105050294,1045229872)+W(2,-1086821333,-1077733706,-1103802686,-1109909290)+W(3,1052826002,1067327309,1068967257,1052700624)+W(4,-1117342490,-1149070344,1054626023,-1098764713)+W(5,1036052293,1052358305,-1101813629,-1099183932)+W(6,1037381955,-1102382047,-1103461210,1052205497)+W(7,-1101694007,1050777563,-1106555317,-1096821402);WS(1046655614,1069864308); +sum1=W(0,1035633391,-1106200785,-1105260712,1050507575)+W(1,1040943483,1031319761,1026979270,1034433460)+W(2,1045417382,-1120751363,-1106053451,1045765948)+W(3,1043913370,-1093886310,-1121044950,1041581532)+W(4,1050212129,-1098821847,1042106970,1029812249)+W(5,1047844019,-1088130094,1049054225,1017929306)+W(6,1039058852,-1092291401,1041620790,1028938706)+W(7,1043891960,-1082722808,1042598038,1034869942);sum2=W(0,-1098805029,-1082465618,1017798412,1045866690)+W(1,-1101136548,-1084472150,-1108050411,1039888035)+W(2,-1094351375,-1085764460,1031330790,1027046574)+W(3,-1097728468,-1140347496,1053843229,1038111290)+W(4,1040878916,-1100091144,1043199898,-1100094208)+W(5,1049713965,1049328541,986797508,-1104239104)+W(6,1037060075,1062808960,-1119994130,-1098800085)+W(7,1058810464,1071144827,-1097822096,1017716576);WS(-1077527440,1065234224); +sum1=W(0,1031059492,-1088676934,1055802445,-1159469258)+W(1,1014606833,-1098001853,1051162632,1001612013)+W(2,1041495444,-1087241405,1059501583,-1109463457)+W(3,1031584061,-1083911392,1061276187,-1105280809)+W(4,-1143158030,-1095088526,1050088278,1038556792)+W(5,-1140389945,-1096536807,1049527800,986827883)+W(6,1035424519,-1104484775,1042937212,1030875577)+W(7,1013235228,-1100223239,1037087943,1047418837);sum2=W(0,1026928347,1019217071,1027288437,-1112677997)+W(1,1006719462,-1098369589,-1099640354,-1146387796)+W(2,-1103317527,1041304779,1050941648,-1072403340)+W(3,1043604137,-1134457784,-1112266437,-1071428003)+W(4,-1106627965,1048134757,1027462477,-1082446250)+W(5,1034526167,-1118427047,1040843010,1059493547)+W(6,-1117999031,1029994729,-1104465031,1072461191)+W(7,-1134258967,-1113504087,1054764710,1077848621);WS(1034219259,-1130863201); +sum1=W(0,-1122470601,1036468120,1033355302,-1104067775)+W(1,-1125729883,1031973022,-1125640547,-1112351746)+W(2,-1119868741,1045421587,-1122038588,-1106594245)+W(3,-1092963050,1062931954,1044707408,-1094830635)+W(4,-1102984950,1062738826,-1104269382,-1127079049)+W(5,1017182198,1050208654,-1106320445,-1109997276)+W(6,-1107264969,990945063,-1110744610,-1112571199)+W(7,-1116589116,1023027040,-1098846428,-1117279521);sum2=W(0,-1120041672,1041156572,-1103868400,1036471018)+W(1,999703935,1029144962,1036670980,-1107170022)+W(2,-1109032994,1037796455,1043292537,-1115113192)+W(3,1041627711,1046556501,1059414852,1029249656)+W(4,-1111815622,1060385029,1048639871,-1126242312)+W(5,1029813110,1040466231,-1105513272,1043143286)+W(6,-1110751572,-1103822492,-1100107078,-1101226736)+W(7,-1114401610,-1076222058,1043280503,1034327293);WS(-1097041087,-1081891922); +sum1=W(0,1045201037,-1097075376,-1126257330,-1115394372)+W(1,1042240134,-1091271089,1049467348,-1097795722)+W(2,1049780286,-1094847921,1057610047,-1097045891)+W(3,1039927583,1059654550,-1141428591,-1103383438)+W(4,-1122695635,1056430510,-1089703504,1036098616)+W(5,-1110484942,1057233913,-1087958744,1033721138)+W(6,-1117417409,1041827328,-1096746586,1035539581)+W(7,1039840796,1050554535,-1096159486,-1131932502);sum2=W(0,1012982255,1052214657,-1136022111,1032353073)+W(1,-1101224821,1042508745,-1093748656,1020863779)+W(2,-1109376974,1042044290,1045672838,-1113516472)+W(3,-1116588919,1071547407,1065241977,1040242686)+W(4,-1096183361,-1089469015,1049249478,-1120964187)+W(5,-1092858264,-1090264503,1047260540,-1103746594)+W(6,-1090462581,1039700797,1046964814,-1100885683)+W(7,-1119652925,-1083767147,-1107087862,1028764718);WS(-1088621983,1079497913); +sum1=W(0,1027161409,1052712773,-1102058289,-1100368317)+W(1,-1102075462,1051824794,-1098602113,1021667349)+W(2,-1120075900,1057942154,-1096292664,-1106147487)+W(3,-1109063205,1060662493,-1082645434,1039175801)+W(4,-1104005172,1062931830,-1090788424,-1129475640)+W(5,-1136555883,1057800198,-1090185155,1036809656)+W(6,-1112015962,1047971474,-1098101583,1009161622)+W(7,1033292370,1059753504,-1088742454,-1143403778);sum2=W(0,-1150684740,-1095235693,1044985054,1035589955)+W(1,-1114056841,-1115238312,-1127339724,-1108218072)+W(2,-1164208415,-1080604054,-1106549807,1022130402)+W(3,1034698244,-1071093346,-1080554397,-1106288272)+W(4,-1134574697,-1083926997,-1104923511,1024268734)+W(5,1043895716,1068501149,1052487431,1036117000)+W(6,-1101980686,1079699126,1054997905,-1130803558)+W(7,1050191679,1056576712,1029700329,1031345667);WS(-1087955103,1023517655); +sum1=W(0,-1106663590,-1090071677,1062902614,1013889298)+W(1,1037773274,-1103425461,1055773525,-1100022495)+W(2,-1116651838,-1089596734,1059014377,-1101161913)+W(3,1022742037,-1082614473,1060267482,1030094516)+W(4,1040438284,-1088542372,1057943128,-1120043085)+W(5,-1117813952,-1092404165,1054561254,-1116951793)+W(6,1032561623,-1100716355,1051603940,1035114019)+W(7,-1102318801,-1098396937,1049819671,1026546470);sum2=W(0,-1107653444,-1094858135,1084595456,-1065438414)+W(1,1032757863,1061839668,1074196920,-1069856939)+W(2,-1150202006,1049735190,1067688119,-1073375528)+W(3,1037010009,-1123088190,1070729644,-1082206819)+W(4,1026258576,-1089824138,1050587980,-1086758222)+W(5,1041748319,-1098358767,1057889952,-1097734258)+W(6,-1131622502,1049699018,-1127981435,-1106404220)+W(7,-1112646994,-1103776938,1048602984,-1098587943);WS(-1089607615,1063931357); +sum1=W(0,-1156148665,-1089422721,1059281720,1041177357)+W(1,1033042784,-1099513696,1053472432,-1107985659)+W(2,1027235975,-1086976804,1060428066,-1122980350)+W(3,-1117005684,-1083936660,1061258678,-1103260375)+W(4,1045226606,-1089259880,1055780369,-1111710595)+W(5,-1112863441,-1092850238,1057981025,-1109580750)+W(6,1040283212,-1096473171,1051704489,-1125267169)+W(7,-1102751384,-1096124078,1054893029,1035448166);sum2=W(0,1024298597,1074606150,1080820206,1030125639)+W(1,1037699935,1048614297,1047271097,-1121834510)+W(2,1030404477,-1085515118,-1079656120,-1166463196)+W(3,-1094400051,-1071672142,-1066721483,-1101580999)+W(4,1052543759,-1091215560,-1078287609,1028051862)+W(5,1024136176,-1095087497,-1096732136,1009399200)+W(6,-1159281410,1050441058,1057126689,-1117118368)+W(7,-1102232478,1071366890,1074685383,-1113696211);WS(-1083901183,1060981851); +sum1=W(0,-1106299749,1048978486,1016862419,-1121286832)+W(1,1039492049,-1107896957,-1115539879,1049662006)+W(2,-1113140273,-1119192025,-1098481927,-1106196840)+W(3,1055856482,-1090009641,1058119768,-1149152444)+W(4,-1103186821,-1088174932,1052019064,-1101797848)+W(5,-1108369378,1034759564,1048477348,-1146708651)+W(6,-1115937041,1008970428,1034559233,1024756171)+W(7,-1127954738,1027686380,1044214632,-1111878699);sum2=W(0,1030335348,-1130369060,-1106797797,1006653296)+W(1,-1110488253,1056034410,1040331307,-1094310491)+W(2,-1096373435,-1097486091,1063611375,-1113782011)+W(3,1042224202,-1094958491,-1106971469,1042512890)+W(4,1038378538,1057631708,-1093142933,-1140559356)+W(5,-1117770266,-1114209587,1037075531,-1114686161)+W(6,1036930446,-1105273765,-1115233817,-1115373149)+W(7,-1168276161,-1115537765,1025218793,1026640233);WS(1063762143,-1098158381); +sum1=W(0,1027555010,-1106988831,1031921883,1033567284)+W(1,-1113176415,1049655577,1032851437,-1099137927)+W(2,1044835884,-1089572014,-1106152127,1052671923)+W(3,-1094480963,1041189880,1057311541,-1101762329)+W(4,1042205032,1035602487,-1100163979,-1106014811)+W(5,1038186408,-1095655321,1046700975,1044902280)+W(6,-1112247611,995617211,1050763922,-1094051821)+W(7,1041241393,-1102946366,-1119959180,1044480349);sum2=W(0,1010916279,1040615985,-1103581164,-1126424725)+W(1,-1108274646,1037755544,1053142923,-1119616718)+W(2,-1108043460,-1107213139,-1091384808,1062997316)+W(3,1049469526,-1085933104,-1093682556,1050086980)+W(4,1061284555,-1098201753,-1095835641,1044548392)+W(5,-1097521196,1027381238,1044225612,-1099920539)+W(6,1047936551,1007266289,-1101597200,1043928239)+W(7,-1106103943,1039340208,1011948943,-1120667237);WS(1060336095,-1119657045); +sum1=W(0,1023788715,1048279897,-1106238784,-1110161279)+W(1,-1117126579,1044311660,-1096869700,-1136931731)+W(2,-1108875843,1062204714,1019770348,-1115905233)+W(3,1022815367,1060724749,-1081389759,1034904806)+W(4,-1100562722,1063043033,-1084472996,-1124661292)+W(5,1043213137,1050929706,-1097593661,1017832853)+W(6,-1111482971,1037241746,-1106654286,-1109716592)+W(7,-1142747249,1051192212,-1102133781,-1109353889);sum2=W(0,1036664563,1009247708,1013790140,1035577258)+W(1,-1103288529,-1126560341,-1102369678,1008412166)+W(2,-1102134383,-1067246446,1047852878,1016094574)+W(3,1057556566,1067728497,-1093152080,1045655865)+W(4,-1099512639,1078180911,-1110504691,-1123477495)+W(5,1031668335,-1085231458,1042704555,1023608957)+W(6,-1103860103,1047956293,-1132621098,-1112760821)+W(7,1028018661,-1114058193,1030531898,-1120624893);WS(1035518203,1045613832); +sum1=W(0,1044215468,1057279232,-1097478568,1042423606)+W(1,-1096085823,1043513429,-1096451901,-1098498663)+W(2,-1102751483,1057361220,-1091716958,1012832112)+W(3,1007706274,1061539183,-1085528932,1054368634)+W(4,-1098118842,1057962612,-1093017477,-1103819295)+W(5,1051305356,1058710773,-1091718961,1057808613)+W(6,-1096250919,1037420261,-1100741095,-1100568821)+W(7,-1106455273,1053125757,-1097230063,-1111733504);sum2=W(0,-1105709018,1058997495,-1086433444,1022365788)+W(1,1050542737,-1084246791,1065459234,-1101303092)+W(2,-1106108137,-1103685622,1055198365,1040995532)+W(3,1027983028,-1106510960,-1102412567,1044759128)+W(4,1053295819,-1089515541,1057925132,-1104466949)+W(5,-1091042532,1066680974,-1080963495,1043286350)+W(6,1049054259,-1088412186,1056230430,-1096360229)+W(7,-1108416827,1037143386,1049505110,-1106131860);WS(-1103921662,1072713673); +sum1=W(0,1042712209,-1111681022,1029885560,-1123292759)+W(1,-1130675027,-1104528338,1032835743,-1124533373)+W(2,1041149044,-1103688784,1053127408,-1101763282)+W(3,-1108819823,1055222237,-1089836355,-1143773237)+W(4,-1099465033,1063848575,-1089832742,1044926036)+W(5,-1102885798,1053207587,-1090841456,1032528402)+W(6,-1108891552,1051374172,-1098121506,1040294582)+W(7,-1122152216,1044600823,-1101098252,1018003689);sum2=W(0,-1116466906,1017580326,-1100144980,1018640494)+W(1,1032691193,1031996320,1045143645,1067424527)+W(2,-1110682367,1040673767,1055366708,1071822180)+W(3,-1134651946,-1121084452,-1112456349,1057195246)+W(4,1019799157,1012141662,1037079065,-1078565795)+W(5,1020309206,-1123645954,1036705771,-1073530916)+W(6,1028255175,-1125118807,-1112096331,-1087156462)+W(7,-1118897648,1005021204,1021253254,1033125682);WS(1054959295,1011151216); +sum1=W(0,-1124554365,1043778462,-1140499785,-1103855992)+W(1,1028540695,-1104732576,-1111020475,-1113072532)+W(2,-1107828893,1063706911,-1098481604,-1121738665)+W(3,-1135601758,1052343180,-1081762405,1048654720)+W(4,-1135515507,1050410381,1053053447,-1096321673)+W(5,1032466990,-1128754020,-1112972157,1012954617)+W(6,-1110097877,1034222620,1023071124,-1110289546)+W(7,950109203,1043960229,-1120112616,-1114439871);sum2=W(0,-1104841432,1047456971,1024424907,991739097)+W(1,1047690020,-1094867354,1033457856,-1129013032)+W(2,-1084375561,1068880529,1046341732,-1103560341)+W(3,-1086552004,1065412328,-1087761187,1059009805)+W(4,1046416693,-1080289298,1062384539,-1098849357)+W(5,1025710892,-1110380578,-1103331799,1045332030)+W(6,-1130856953,-1105039836,1024509174,-1104241974)+W(7,-1113936449,1016290713,-1126452938,1019994493);WS(1061669311,1066543312); +sum1=W(0,-1120030840,-1097490380,1038501126,1026361650)+W(1,-1111872182,1051889621,-1110528784,-1112085217)+W(2,1046388965,-1085299564,1050043436,1019064063)+W(3,-1109640224,1043197314,1054292822,-1116217609)+W(4,1051640445,-1099578605,-1095700775,1045441021)+W(5,-1104742312,-1114905437,1056051928,-1097066005)+W(6,1040612129,1033952272,-1108619674,-1146667493)+W(7,1018742870,-1095793020,1044337364,1039394788);sum2=W(0,1041249103,-1098300344,1041141085,-1123648820)+W(1,1040922446,-1147221163,1014590689,-1115292810)+W(2,1047169006,-1097103704,-1094689158,1021735499)+W(3,-1133026152,1055827658,1056443342,1023898168)+W(4,1045305983,-1082349433,1051958562,-1153021086)+W(5,-1121038685,-1105225178,1035590360,1038130213)+W(6,1032067159,1036618956,-1098250629,1035045284)+W(7,986169209,-1102095468,-1145857885,1030074795);WS(1066007616,1040865170); +sum1=W(0,1016703369,-1154003525,-1104662792,-1111826720)+W(1,-1106398093,1038441464,1031083397,-1146451379)+W(2,-1114560988,-1112021256,1052887594,-1102003526)+W(3,-1096325697,1050813825,1061249791,-1102172436)+W(4,-1094335779,1059033474,-1126656183,-1104413998)+W(5,1023023221,-1108543232,-1106571274,-1109007926)+W(6,-1113231876,1040892233,-1121820472,-1112600993)+W(7,1022983872,1034570898,-1115038347,-1123919488);sum2=W(0,-1117895883,-1109314178,1043196819,1029963629)+W(1,1036640719,-1103775527,1047073701,-1117061975)+W(2,-1092695525,-1079308608,1032498235,1053147047)+W(3,-1109277526,-1088245301,1071134194,-1113344034)+W(4,1054484712,1032194306,-1098274857,1027577620)+W(5,-1102073467,1058556412,-1102222667,-1104158962)+W(6,1047716642,-1097777200,1028797614,1019489703)+W(7,-1115714917,1049638324,-1109885254,-1106961770);WS(-1112959995,-1090797387); +sum1=W(0,998546749,-1107113888,1042251615,1034524319)+W(1,-1102515009,-1157171375,1043372984,-1109045169)+W(2,1018649191,-1095395659,1057847906,1025715818)+W(3,1024148768,-1088418302,1049085946,-1107024218)+W(4,1036601843,-1108499994,1054314562,1036766314)+W(5,991750171,-1092700079,1052242560,-1102346050)+W(6,-1134314668,-1100812608,1010001228,1041369791)+W(7,1024106779,-1106951576,1043704436,-1136260253);sum2=W(0,-1097076796,1045091130,1028367411,1016501386)+W(1,1000463738,1024736081,1040206702,-1122385083)+W(2,-1083533587,1064625577,-1112850496,-1104146558)+W(3,1064100942,-1096201033,-1086258418,1050125885)+W(4,1074997490,-1071550159,1052069491,-1105686824)+W(5,1043707697,-1106033160,-1098690685,1041978517)+W(6,1028507309,-1118548401,1050202273,-1109567340)+W(7,-1152835380,-1111712908,-1113053149,1032203802);WS(1065286463,-1155116140); +sum1=W(0,-1127743664,-1099417962,1047837241,1035108393)+W(1,1036265535,-1091060822,1038987540,-1121911642)+W(2,-1118137852,-1088882712,1061626690,-1119901843)+W(3,-1121018025,-1089265061,1069311516,-1100290432)+W(4,1024160014,-1088513194,1053957977,-1101311755)+W(5,1028265374,-1090887512,1051214117,980641778)+W(6,1031461691,-1097685517,1050330231,1030945477)+W(7,-1116217572,-1096201501,1045642342,1036102670);sum2=W(0,1023964675,-1104287950,-1095527688,-1107378538)+W(1,1054178647,-1098771138,-1106164282,-1107123343)+W(2,-1104607531,1030951671,1049293814,-1102317974)+W(3,-1088748842,1062304002,1069791349,-1093097006)+W(4,1034720649,1056993385,-1106129898,-1107155572)+W(5,1027793575,-1095484784,-1093744890,-1104614583)+W(6,1026748348,-1103591056,1040804508,-1111048704)+W(7,1048440611,-1115722179,-1102843948,1036145149);WS(-1107864827,-1106183398); +sum1=W(0,-1106667222,1028246417,1062610107,-1094330385)+W(1,1032383543,-1105288567,1048732230,-1113355593)+W(2,-1104095901,1024277645,1033194034,-1100412503)+W(3,-1105126732,1031807228,-1097352540,-1110531197)+W(4,-1119082647,1024663749,1042072353,-1106817153)+W(5,-1099092218,1059042594,-1097841594,-1119219065)+W(6,-1106477481,1038514313,-1132497297,-1116226478)+W(7,-1100466619,1061247795,-1116357250,-1112377140);sum2=W(0,-1124057659,1049202878,1055877653,1043135164)+W(1,-1107748661,1029365940,1040631102,-1120955446)+W(2,-1106641450,-1100669682,-1121942624,1048773070)+W(3,-1106278570,-1090514146,-1097531540,-1096084011)+W(4,-1115427744,1050790854,-1095195500,1040842880)+W(5,1045306633,-1101749265,1044511371,-1101432694)+W(6,-1107251222,1044664667,-1123742683,-1108344435)+W(7,1044220643,1051259000,1035140356,-1156279482);WS(-1107710971,-1103335008); +sum1=W(0,1020774038,1057965326,-1096736580,-1108312647)+W(1,-1097452822,1052789750,-1097416740,1007270548)+W(2,-1103681302,1061528673,-1090723228,1008435167)+W(3,-1142400543,1059882105,-1082070814,1032878150)+W(4,-1130541650,1058381533,-1096313647,1024150455)+W(5,1035627390,1052101646,-1092903493,1029066731)+W(6,1026485526,1047827121,-1095953623,1024752368)+W(7,1026933710,1048909172,-1094072619,-1129872006);sum2=W(0,-1091198687,1051358993,1026242284,1036983987)+W(1,-1096592719,1056674994,-1102658445,-1112372364)+W(2,-1088722291,1050253089,1039492851,-1109827680)+W(3,1017819408,1057806550,1048044980,1033031265)+W(4,-1104841225,-1098514434,1047848116,-1106004699)+W(5,1047280108,-1095745001,-1114927114,-1128936304)+W(6,-1133964792,-1121773836,1009730080,1044703642)+W(7,1046210234,-1101840089,-1115459009,-1121859563);WS(1046617982,-1079283690); +sum1=W(0,-1112235521,-1103103206,1050398983,1031782004)+W(1,-1112371935,1005568807,1053710959,-1112406582)+W(2,1046025067,-1082068590,1059470764,-1109731202)+W(3,-1114138877,1053438832,1056782757,-1120370051)+W(4,-1100106092,1050481934,-1084354719,1047048563)+W(5,-1106636112,-1113851306,1044662919,-1114617505)+W(6,1006684852,-1101804759,1028720557,-1122334215)+W(7,-1134743124,-1101795702,1040488963,1035089325);sum2=W(0,-1123583696,-1114190125,-1123424510,1035265901)+W(1,1041752924,-1107057915,-1108427412,1011193218)+W(2,-1096033091,1054169171,-1101097272,-1097576107)+W(3,1045050816,1066165326,1060681517,1037309084)+W(4,-1111810372,-1090934807,-1093738003,-1094306097)+W(5,1044170848,-1094482563,-1094742214,1047478278)+W(6,1035342189,1030376713,-1122528198,999245333)+W(7,-1107148363,-1140242036,1046835784,-1118953940);WS(1057107647,-1115492411); +sum1=W(0,1043432615,1037909322,-1092726398,1042270260)+W(1,1017716083,1044219192,-1094557923,1036944691)+W(2,-1115224236,1059480955,-1089724826,1049175094)+W(3,1034158091,1055275264,-1079486955,1036017407)+W(4,1031606075,1062186253,-1094016652,-1112299996)+W(5,1040917102,1051479740,-1090199321,1012181234)+W(6,-1119339928,1036604907,-1111430132,1026270626)+W(7,1006053250,1049031914,-1124163213,-1106538704);sum2=W(0,1018646782,1037675363,1056993548,-1095820604)+W(1,-1107779390,1041358579,-1114299594,-1106961783)+W(2,1048577488,-1103110037,-1108103869,-1113810892)+W(3,-1094766117,1063077105,1069120744,-1094104293)+W(4,1029078775,-1094239344,1019393926,-1100654825)+W(5,-1115207772,-1097294293,-1090842684,1030620215)+W(6,1041354677,-1106609062,-1103795001,1015746998)+W(7,-1134027235,1005749079,-1111892981,1031888221);WS(1038408187,-1104646224); +sum1=W(0,-1100666444,1031841147,1045835257,-1121385297)+W(1,1032659338,-1095811512,1046356758,-1115316924)+W(2,-1096791479,1046629869,1055310447,-1109718991)+W(3,1050254507,-1086582314,1049546009,1043876936)+W(4,-1125163769,-1092033141,1059064223,-1115882186)+W(5,1034716030,-1095590162,1032941357,1051195252)+W(6,-1104041563,1012740704,1016606100,-1110386378)+W(7,1024265746,-1097384267,1043234370,-1121465454);sum2=W(0,1033146053,1033178697,-1110558215,-1107600367)+W(1,1034495435,1013274853,-1103797816,1046600596)+W(2,1033891153,1044565157,-1074394842,-1096372667)+W(3,1015618236,-1083473003,-1075035519,1071496075)+W(4,-1102272365,1047899954,1070896015,1070598351)+W(5,1026402836,1033829854,-1107786181,-1103057086)+W(6,-1126192412,1026659107,1039466503,-1099451771)+W(7,-1130670616,-1129244632,1033633210,-1106841766);WS(1060540543,-1145107984); +sum1=W(0,1016949312,-1111708420,999025948,-1110878953)+W(1,1033700674,-1115158282,1037057540,1034636061)+W(2,1008485935,-1112773425,-1111113150,1006219749)+W(3,1050394829,-1105627788,-1105528438,1047777444)+W(4,1025975118,-1166436080,-1092533512,1034379342)+W(5,1027755062,1049090616,-1097657169,1023310559)+W(6,-1166944971,-1131929874,-1125616567,1042471825)+W(7,1036625882,1027903943,-1104970374,1029991232);sum2=W(0,-1112727972,1028528033,1050127712,1039139414)+W(1,1041061913,1047913039,-1120606988,-1090975722)+W(2,1030171918,1058299937,-1075312291,-1096898908)+W(3,1049192765,-1088725965,1051042420,1056682084)+W(4,-1097932217,1006741474,1061621025,1043329296)+W(5,-1108991614,1028842331,-1120436768,-1136718330)+W(6,-1128255593,-1119404040,1041035795,1019658885)+W(7,-1128975721,1019613109,1038145345,1017746289);WS(1058512095,1047466767); +sum1=W(0,1025672397,-1102753041,1037445664,1037433000)+W(1,1032743763,1015664161,1032570339,1033220516)+W(2,1046625694,-1102686879,-1091026739,1035056566)+W(3,1040236986,-1099087483,-1089271035,1024398415)+W(4,1041791363,-1097904327,-1100626131,1043847942)+W(5,1042422310,-1097334084,1051389809,1042353123)+W(6,1024317081,-1123206279,1041773046,1037697617)+W(7,1034505416,-1096407969,1050962859,1047698739);sum2=W(0,-1111694157,-1097429792,1052756319,-1115035673)+W(1,-1113457231,1040318944,-1131566802,-1108486657)+W(2,1007020677,-1109123041,1066240251,1057627634)+W(3,-1110494513,-1087577139,1071158756,1052796029)+W(4,1036239980,-1115766281,1055974927,1037312144)+W(5,1042151096,1033854974,-1085216854,1031946717)+W(6,1014804229,1056323633,-1076147337,-1107413695)+W(7,1038268008,1058473731,-1078122726,-1088208012);WS(-1087119871,1051442968); +sum1=W(0,-1106951233,-1101188351,1055191809,-1118371512)+W(1,1026199466,-1102133666,1046522759,1024298399)+W(2,-1111827529,-1096477343,1061746551,-1102462991)+W(3,1034911407,-1081083296,1062137809,-1118895495)+W(4,-1110066258,-1093686286,1056808794,-1105243164)+W(5,1036906330,-1089794286,1061657374,1028468933)+W(6,-1121489041,-1102503648,1025414769,1001909715)+W(7,-1123695161,-1096524016,1043754020,1039027467);sum2=W(0,1036012528,-1111568121,-1125130883,1019317279)+W(1,-1136414534,1023613585,1037328619,-1141870971)+W(2,1028357901,1046290638,-1077265349,-1105362146)+W(3,1018170307,-1086518431,-1068062671,1041918725)+W(4,996800246,1032866656,1083861052,1040576139)+W(5,-1115554829,1040198779,1057186482,-1110577355)+W(6,1018408279,-1115393969,-1101393956,1032099345)+W(7,-1128152611,1031067220,1024816461,-1109411807);WS(1041081598,-1101063046); +sum1=W(0,1038662072,-1123374599,1035193857,-1104056554)+W(1,-1105628103,1048894326,-1098151405,1009505700)+W(2,1046838359,1044003395,-1109376817,-1107771451)+W(3,-1112508084,1062900743,-1082115704,1039692648)+W(4,-1112561351,1058339600,-1087104856,1049374543)+W(5,1047812813,1041428913,-1097118497,-1126547869)+W(6,-1106996345,1044355834,-1098603955,1037690530)+W(7,1045311157,1013224727,-1110120844,-1121969199);sum2=W(0,1034938637,-1102665080,-1083931487,-1096043986)+W(1,-1110454828,1066739686,1057500561,1050111041)+W(2,1044300205,1063593500,1069787057,1057117236)+W(3,-1094841314,-1072571644,-1073076170,-1094917255)+W(4,1049263704,1050585763,1057940110,992791419)+W(5,-1123904781,1033188794,1049962317,-1119131193)+W(6,1032882093,1040935597,-1103057884,-1129197337)+W(7,1018550156,992411043,1032437745,-1139242755);WS(1047493374,1019974383); +sum1=W(0,1039818779,1024992878,-1099980259,-1119405261)+W(1,1022499782,1056719767,-1093967742,1017537921)+W(2,-1111466513,1056992349,-1089692488,-1134657044)+W(3,-1128872350,1066523241,-1081677329,1032226588)+W(4,-1102282821,1057279594,-1104336096,-1110606353)+W(5,1027318580,1050310409,-1095763174,1029746358)+W(6,-1112367361,1043633508,-1147598863,-1105211995)+W(7,-1121442618,1050332018,-1103201160,-1109613299);sum2=W(0,-1109381660,-1099927212,1032613200,1013674604)+W(1,1024006001,1048105027,1031703418,-1113331152)+W(2,1048332575,1083214625,1051352300,1010546556)+W(3,1030946168,-1068785948,-1082836395,-1137462284)+W(4,-1111460550,-1080184440,1047472657,1033485356)+W(5,-1115660792,-1125303858,1027323348,1034637753)+W(6,1027780517,-1129923962,1006215943,-1112671380)+W(7,-1125113546,972536438,-1123338357,1033990282);WS(1049191295,1026054180); +sum1=W(0,1015431080,-1104530451,-1120791464,1041795830)+W(1,-1114491642,1045418990,-1105318659,-1107859847)+W(2,-1106844240,-1091806904,1059085476,1035107546)+W(3,1052544606,-1092275830,-1096734436,1050727987)+W(4,-1101337172,1032037152,1055073816,-1098252244)+W(5,1006821496,-1091613549,1054997266,1024892180)+W(6,1048579163,-1136631349,-1117752159,-1114835508)+W(7,-1107367092,-1104046587,1054027444,-1107321874);sum2=W(0,1026733028,1045033945,1006278578,1045459634)+W(1,-1099170713,1052123052,-1100795787,1045732660)+W(2,-1116840904,1011374557,-1137517037,1036547859)+W(3,-1119731112,1034116255,-1093051584,1049735621)+W(4,-1105853851,1042679995,1032967726,-1115758581)+W(5,1023766170,-1103542762,1030006514,1012804929)+W(6,-1109160117,1002727514,1010971477,-1107202197)+W(7,-1110446049,-1116987471,1032206215,-1108882618);WS(1061349183,1052960956); +sum1=W(0,-1129777715,-1091852750,1051531432,1028688348)+W(1,-1138324169,-1098630008,1050117038,1001458973)+W(2,1040354025,-1086948121,1058780391,1026112190)+W(3,-1113069161,-1087783598,1063142264,-1101543047)+W(4,1026875928,-1090578505,1054898923,1001807913)+W(5,-1148679486,-1098392878,1055753851,-1107707133)+W(6,1026350741,-1105317245,1035239971,1009551482)+W(7,-1099366619,-1113156712,1049214940,1035358529);sum2=W(0,1030464194,1016786912,-1124271380,-1112870762)+W(1,-1114101658,-1111442214,1036708968,1035127660)+W(2,1031167290,1040962599,-1145350210,-1119263136)+W(3,1076423743,1052649879,-1106763968,1030450749)+W(4,1075592137,1059016603,1036666460,-1114823676)+W(5,-1122765276,-1109148248,-1102467968,1030453841)+W(6,-1073082101,1031660172,1040647493,-1120712732)+W(7,-1067763317,-1093716078,-1123536642,1004437586);WS(1049240575,1032641532); +sum1=W(0,1013730783,1058635434,-1096215015,-1112522509)+W(1,-1105480706,1033988870,-1101342144,-1114702617)+W(2,-1114036922,1060052265,-1095577996,1026538642)+W(3,-1113879072,1060507082,-1090178495,-1118644393)+W(4,-1104229785,1060417175,-1088104859,1026113715)+W(5,-1108053747,1056801557,-1096180920,-1115402364)+W(6,-1114764169,1045744608,-1096622362,-1165415829)+W(7,-1146082265,1050162924,1035143657,-1096614130);sum2=W(0,-1122276311,-1070701037,-1102500792,-1123484857)+W(1,1035291415,-1088124412,-1135890037,-1122878839)+W(2,-1120194245,1066415245,1041496354,1004310705)+W(3,1040446858,1074084237,-1104713726,1043449641)+W(4,-1120530587,1049852139,-1121031703,1033156545)+W(5,-1138075205,-1122804719,-1103825640,1027648711)+W(6,1025217366,1023048268,-1123990667,1022832518)+W(7,-1118638617,-1139513797,1028358694,-1136916673);WS(1058199967,1050173679); +sum1=W(0,1035142580,1049466778,-1090097411,-1180331449)+W(1,1027370573,1058691576,-1101732588,1040649373)+W(2,-1130262537,1039593430,-1086371009,-1120260556)+W(3,1035504777,1068404719,-1088745136,1040680775)+W(4,-1114438555,1055172389,-1085029652,1044382793)+W(5,-1117883815,1049428736,-1087836907,-1124005336)+W(6,1019391016,1057860609,-1099893249,1042216563)+W(7,1002653538,1038434456,-1090680108,-1112700144);sum2=W(0,-1116884059,-1098591960,1049382153,-1103314039)+W(1,1053572077,1057696884,1027480579,-1088718218)+W(2,-1098664530,-1094622297,-1090176467,-1083506692)+W(3,1052736946,1068603564,1060239128,-1093271444)+W(4,-1109898534,-1110319390,1035982822,-1100206230)+W(5,-1100793752,-1092295148,-1110105636,1032439700)+W(6,1049155169,1060435963,1048950002,1034453968)+W(7,-1110972354,-1093610507,1038370396,1006875670);WS(-1089372991,1071972514); +sum1=W(0,-1138920887,1036533027,-1102318256,994211079)+W(1,-1111770809,-1104793556,1048489074,-1105180974)+W(2,-1102811010,1055175791,-1087761408,1048668925)+W(3,-1115715559,-1099167419,1059252133,1002658941)+W(4,1039086134,-1087507272,1053162297,-1118760057)+W(5,-1097310634,1049070430,-1114433380,1015366427)+W(6,1031148825,-1119324807,-1118494745,1042346841)+W(7,1025838913,1003453989,1042268638,1035401151);sum2=W(0,1030112837,1042265630,1026971571,-1110663804)+W(1,-1120976510,1036120703,-1114486026,1036038820)+W(2,990074782,1034066763,1060265655,-1093575269)+W(3,-1093456890,1054439327,1048349987,-1097582212)+W(4,1037465699,-1093016348,-1099844302,1034062294)+W(5,1026987255,1018637880,1021593632,1015927322)+W(6,-1141406991,-1135344000,-1122669452,-1131991172)+W(7,-1139369648,1039303764,-1105461723,-1112258092);WS(1064707295,-1106068023); +sum1=W(0,-1099232505,-1122722466,1050522762,-1163785122)+W(1,1035233224,-1096714286,1050648196,1029641572)+W(2,1008917721,-1092366070,1057836626,-1106158547)+W(3,-1113461090,-1085444145,1065526616,-1112344246)+W(4,1030936392,-1087864449,1058128499,-1120989814)+W(5,1004172005,-1089654074,1053303385,1023496586)+W(6,1027313190,-1109977746,1046037453,-1132212895)+W(7,-1115756158,-1096643772,1045431365,1026679026);sum2=W(0,-1064765544,-1093639717,1043466147,-1118670633)+W(1,-1081497441,1052279998,-1106897145,1026058867)+W(2,1073825520,1049786220,-1111313590,-1120615525)+W(3,1076205171,1062543003,1028519541,1005098917)+W(4,-1119211273,-1112239696,-1110796836,1002459349)+W(5,1027623494,-1095053933,1038884306,1024155429)+W(6,1025169073,1041086677,-1138045203,-1139354443)+W(7,1044157267,-1111173396,-1103601885,1031190784);WS(-1111449083,-1157616163); +sum1=W(0,-1140902742,1050785866,-1096435822,-1106580347)+W(1,-1108906886,1041550344,-1095149714,-1111739842)+W(2,-1107746707,1063519767,-1097214657,-1112949561)+W(3,-1091492130,1070223306,1059314470,-1090511327)+W(4,-1106259270,1056548545,-1091358630,-1115482851)+W(5,-1123578095,1033679887,-1102873285,-1102694659)+W(6,-1112828291,1033485706,-1098893397,-1119291392)+W(7,-1129218172,1037279241,-1105253969,-1105806553);sum2=W(0,1036877913,-1106537131,1030920508,-1107276407)+W(1,-1107073590,1029358898,-1148982309,-1158332371)+W(2,-1107699229,1059152956,-1101290720,-1104066278)+W(3,1043855187,1059494373,1057939604,1057817844)+W(4,-1112562117,-1100478450,1054005616,-1089434898)+W(5,1015957137,1042289801,-1078154452,1041374005)+W(6,-1137092650,-1117856531,1052159854,-1109759735)+W(7,-1113777301,1034651775,-1095096566,-1112996199);WS(-1078462192,-1081042006); +sum1=W(0,1031777492,-1099264287,1046006998,987183826)+W(1,1032754472,1043123090,-1098614104,1036343655)+W(2,1041664052,-1089905073,-1129274543,1009990171)+W(3,-1097597536,1061087074,-1106235787,-1097811109)+W(4,-1104816664,1058804947,-1084543524,1031138063)+W(5,-1113883983,1049386855,1054195792,-1097275448)+W(6,1034668408,1033759807,-1107840264,1026038601)+W(7,-1123431127,1048603595,1024992909,-1120606380);sum2=W(0,1045113399,1042319052,-1096815184,-1116743882)+W(1,-1114091637,-1104675582,-1111655631,-1101972302)+W(2,-1107885511,-1091877193,-1112520325,1050965596)+W(3,-1138476145,1051152873,1061790396,1049921296)+W(4,-1105540689,-1091823953,1058061302,-1092103725)+W(5,1035866831,1034466874,-1097657024,1042351236)+W(6,-1106333432,1039480371,1040922298,-1102843808)+W(7,1027850472,1012452041,-1158709515,-1125733657);WS(1056694143,-1116016311); +sum1=W(0,-1113789237,1051083644,-1097139864,-1123205479)+W(1,-1100431022,-1126988186,-1094809972,1034447326)+W(2,1050877939,1064972735,-1089357240,1036660918)+W(3,1018856325,1040063173,-1094444318,-1108178982)+W(4,1050520537,1063261729,-1089641983,1047968461)+W(5,-1097203011,1049408537,-1094346349,-1113292277)+W(6,-1103919120,1026641091,-1100978845,1038849023)+W(7,-1146363818,1053332672,-1097363714,-1114302469);sum2=W(0,-1117908102,1019359999,-1120905960,1017197102)+W(1,1013765983,-1145413682,1028148573,1027705717)+W(2,1045942570,-1095749402,1032861566,-1127537989)+W(3,1086231745,-1062836828,-1087097136,1031521084)+W(4,1048993826,-1094656357,-1145044098,1027867224)+W(5,-1110131683,1037693606,1040390747,-1114691836)+W(6,1005670802,-1125761673,-1112982831,1031905995)+W(7,-1126497913,1018172516,1016402027,-1122299754);WS(1058898623,-1129627348); +sum1=W(0,-1115961291,1024824451,1015893437,-1111982511)+W(1,-1114910804,1028416398,-1107386562,1040362701)+W(2,-1099814536,1053775806,-1081677098,1049488325)+W(3,1014875535,1049045373,1054905786,1016424474)+W(4,1042946610,-1081844071,1057687981,-1105282974)+W(5,1008636276,1031972351,1045923489,-1118478155)+W(6,-1106406626,1007262993,1043411542,1018226304)+W(7,-1120594878,1044145240,1016529769,1008933435);sum2=W(0,-1133545882,1024635319,-1123675276,1049399700)+W(1,1048887568,-1104650552,1009836758,-1109494815)+W(2,-1092588040,-1106613727,-1090053582,-1105276085)+W(3,1040041167,1061771033,1063348295,-1099749985)+W(4,-1098849827,1059347143,-1095509129,-1094328117)+W(5,1009986974,1020453405,-1091467004,1040581639)+W(6,1044263399,-1100016935,1034750124,1041257354)+W(7,-1120224962,1003801667,1013849670,-1116729410);WS(1051954047,1053754534); +sum1=W(0,-1115617616,1038078984,1012663597,-1106689047)+W(1,1024010640,1036755054,-1111840872,1027644834)+W(2,-1105864485,1063482792,-1094956956,1000291764)+W(3,-1104806436,1054877383,-1088048944,-1099610254)+W(4,-1109064955,1061183100,-1092794954,1030290339)+W(5,-1116880702,1032370277,-1106496725,-1110075188)+W(6,-1125878182,1043596932,-1106933961,-1134690355)+W(7,1017392662,1041423460,1027390113,-1125796047);sum2=W(0,1032585330,1041153226,-1098242715,1045110917)+W(1,-1120362784,1038083675,-1097998955,1041971655)+W(2,1053495069,-1085822417,-1097864806,-1094674500)+W(3,-1103911013,1062089523,1056336567,-1090235355)+W(4,-1152525762,-1088542584,1061326318,-1100885631)+W(5,-1128147020,1044421032,1046053205,-1141849761)+W(6,1012657824,-1113855086,1042938789,-1114518568)+W(7,-1104983105,1041652917,-1160964996,1032164357);WS(1061027871,-1104546242); +sum1=W(0,-1105616597,999947493,1020340785,1044086916)+W(1,1044372474,-1093243621,1054887248,-1111771647)+W(2,1021564129,-1093936864,1050165368,1042456335)+W(3,1044930783,-1082760108,1059757863,-1109427891)+W(4,1046184033,-1089254915,1059995997,-1109416824)+W(5,1039863327,-1087020314,1055330116,-1114227250)+W(6,1037242932,-1095491356,1049586618,-1119355674)+W(7,1036593932,-1089177610,1053764638,1025046581);sum2=W(0,-1071093827,1060306884,1049935328,-1107356858)+W(1,1026041138,-1087262504,-1137957530,1030953599)+W(2,1068370917,-1080863241,1024099582,1026067688)+W(3,1068180608,-1104665609,-1097098353,-1149593287)+W(4,-1099034443,1065726420,-1115701817,1031805059)+W(5,-1126398467,1036496204,1043337171,-1111590832)+W(6,-1114641099,1052019191,-1155572887,-1110320626)+W(7,1032038973,-1112342652,1039831002,-1165279566);WS(-1085156031,1045210454); +sum1=W(0,1032928297,1062377574,-1090582815,-1097791665)+W(1,-1111119484,1050029461,-1097825399,1025846477)+W(2,1023710638,1062121112,-1087364538,1032229097)+W(3,1012189550,1061895670,-1084850381,1038427330)+W(4,-1119437633,1058328143,-1086721078,1040335420)+W(5,1039427612,1050106073,-1087870448,1036234257)+W(6,-1114651991,1051812528,-1095972450,1026163704)+W(7,1039591187,1050020631,-1089842983,-1146480404);sum2=W(0,-1123647935,1061817512,1083879676,1056516802)+W(1,1039341132,1048143772,1075567701,1037735150)+W(2,1035983028,-1106274437,-1081957201,1028242764)+W(3,-1100132407,-1080635557,-1069811820,-1096421593)+W(4,-1107056231,-1101127944,-1080342730,1035329144)+W(5,1035406254,-1113472410,-1083251742,1030744652)+W(6,-1116224056,1025367216,-1113852980,-1094803270)+W(7,1039408558,-1101636583,-1087422720,1049804166);WS(-1079692512,1054562755); +sum1=W(0,-1109749038,1042438683,-1092016161,1050333996)+W(1,-1107273417,1049923207,-1091034933,1042543591)+W(2,-1102577952,1044388569,-1089719139,1055304278)+W(3,1030213964,-1113189609,1050309800,1034159515)+W(4,1036563817,-1089184118,1048990040,1040366472)+W(5,1046944740,-1087748930,1053009554,-1122229091)+W(6,1031914983,-1096053014,1048709856,1006842402)+W(7,1050658577,-1091524869,1049517424,1034826102);sum2=W(0,1041125733,-1094982607,1055140379,1061130686)+W(1,-1097603156,1045744428,1049918932,990353951)+W(2,-1103003109,-1102781952,-1106862916,1058588396)+W(3,-1107000988,1063877853,1066829095,-1096233798)+W(4,1032085636,-1096755169,-1090474230,-1095838692)+W(5,1048646468,1041101455,-1081598978,-1089860215)+W(6,-1094740103,1038162032,1049572267,-1096717844)+W(7,1056003520,-1106723297,-1085369603,1044183141);WS(-1080283264,1053171958); +sum1=W(0,1045885175,1054395509,-1083475508,1028512496)+W(1,-1113658461,1050045174,-1095192933,1035446876)+W(2,1034538909,1055879386,-1085810962,1026195253)+W(3,974135701,1060600957,-1084797135,1044250612)+W(4,-1122513036,1061640838,-1086057732,1037521197)+W(5,-1118011958,1060753746,-1087204563,-1117222317)+W(6,998696774,1054788217,-1092652351,1038575473)+W(7,-1108239136,1061053402,-1108529436,-1101819472);sum2=W(0,1049760823,1082611215,-1114287788,-1130959534)+W(1,-1132622893,1077078383,1055018182,1035090608)+W(2,1033001558,1066257283,-1101461080,-1112584386)+W(3,-1136534149,986681348,-1078537691,-1090394759)+W(4,1043696998,-1084657320,1054805894,1058031741)+W(5,-1092886300,-1069070549,1065047159,1038822180)+W(6,-1098156850,-1072372844,1049854091,1041633511)+W(7,1058228696,-1074505611,-1082348593,-1115499033);WS(-1073398920,1057727890); +sum1=W(0,1041979362,1052994159,-1092671491,-1110295050)+W(1,-1106188342,1056847849,-1087976920,1033778006)+W(2,-1108985859,1060197326,-1085676269,1040328063)+W(3,1040300287,1059196498,-1108460501,-1114468666)+W(4,1044683952,-1094535618,1051731585,-1102804911)+W(5,1046284093,-1094105983,1046385743,-1098429184)+W(6,1044621499,-1102914751,1031818215,-1104640754)+W(7,990388050,1043962286,-1104493131,1033981777);sum2=W(0,1021160276,-1089430647,-1102895535,1031984432)+W(1,-1093219342,-1135654176,1044152573,-1096279754)+W(2,-1089562294,-1079796815,-1095163331,1011763192)+W(3,-1106388958,1074674993,1074136497,-1101895278)+W(4,-1099093932,-1098010580,-1095203310,-1117345690)+W(5,-1180890998,1052929457,-1099885509,-1095468231)+W(6,-1090965228,1040584224,1041387674,-1107912603)+W(7,1057228486,1047748991,-1131585606,1045144673);WS(-1087643711,1073414034); +sum1=W(0,1043421796,1043019738,-1091862260,1028452722)+W(1,-1116796288,1056957030,-1093379129,-1112484637)+W(2,1042590607,1048028053,-1089120888,1043084437)+W(3,-1098636497,1065994910,-1081315117,-1120978641)+W(4,1008405302,1061262410,-1088787029,1046109207)+W(5,1005024220,1059267719,-1093593189,-1105879924)+W(6,-1106384411,1045820026,-1108751805,1024805700)+W(7,1029633907,1054563645,-1106230054,-1095994501);sum2=W(0,1015257573,-1101361376,-1151605286,-1114431290)+W(1,-1117575950,1051853927,-1126719224,-1122150057)+W(2,1040590395,1007636882,-1099060090,-1123376079)+W(3,1040031817,-1085239439,-1069257368,-1122292554)+W(4,-1104875608,1029484438,1078894141,1045790053)+W(5,-1111928738,1055085469,1065488662,-1105709439)+W(6,-1124331304,-1104410806,-1097362053,1046590167)+W(7,-1104400845,1055334030,-1099504604,-1096100911);WS(-1089052703,1050218486); +sum1=W(0,1024924308,1032977094,-1127622480,1016061078)+W(1,-1124263665,1048865735,-1103037451,1027347950)+W(2,-1114112032,1032370348,-1093324152,1047024376)+W(3,-1101857739,1057017435,-1130658874,-1114101947)+W(4,1004177297,-1096925880,1049797356,-1136753151)+W(5,-1132101549,-1106597310,-1147023991,-1136950735)+W(6,1037546120,-1101706323,-1148374781,1016234194)+W(7,-1127618735,-1138126252,1041185327,-1135392976);sum2=W(0,-1103127935,1033687244,1044282132,-1115309191)+W(1,1034551493,-1111330163,-1132159854,-1101537844)+W(2,-1131095837,-1111327049,1043675418,989659429)+W(3,1056852609,-1097897810,1038437355,-1126658673)+W(4,1041291951,-1092598078,-1085166716,-1101159602)+W(5,1031312786,1027703970,-1122838335,1065573620)+W(6,-1119687326,-1119650108,1030316614,1035948285)+W(7,-1125922018,1037109557,-1115941571,1021015548);WS(1065854560,-1114586365); +sum1=W(0,1025132845,-1093129789,1039292161,1052478106)+W(1,-1132208108,-1097600366,1047014713,-1114318540)+W(2,1043375962,-1094779500,1054220253,1045472794)+W(3,1036127555,-1085251325,1059484531,1040640636)+W(4,1042813603,-1085614646,1058902029,1026772633)+W(5,1042302785,-1083792532,1058554289,1030110605)+W(6,1041475414,-1088034874,1049492791,-1123458066)+W(7,1044294516,-1081301837,1057966909,1048041627);sum2=W(0,-1082315074,-1085719643,1072912386,-1097858732)+W(1,1044643809,1026206592,-1098026838,-1097387905)+W(2,-1098370418,1060376399,1068488422,-1097681385)+W(3,1032322202,1066420950,1072201946,-1095903963)+W(4,-1088636595,1042910065,1055106268,-1092707091)+W(5,1057109638,1025783712,-1087763572,-1104219349)+W(6,-1093539506,-1117795056,-1084317601,-1087895305)+W(7,1061431798,-1120476284,-1077472196,-1105350768);WS(-1071370880,1080498273); +sum1=W(0,-1117491793,-1117320376,1025681812,-1112958490)+W(1,1039364315,-1100646881,1049740511,-1103504723)+W(2,1035846886,-1094786920,1058631773,-1105396320)+W(3,1023528601,1045848824,-1094741601,1032469201)+W(4,-1131889533,1057069771,-1088346742,1034336534)+W(5,-1106314247,1055228236,-1102894479,-1144513794)+W(6,1028375004,1020389492,-1138962992,-1116565942)+W(7,1013100112,-1127017775,995411618,1002008579);sum2=W(0,-1097850747,-1108946242,-1129761151,1024320851)+W(1,-1107398437,-1114277717,-1118690429,1012636527)+W(2,-1085613590,1063125687,1040789135,1029278628)+W(3,1042292809,-1084555354,-1101999238,1026191463)+W(4,1054106205,1059764079,1051725304,-1119736004)+W(5,-1106648125,1041901467,-1128317719,-1127460399)+W(6,1035361236,-1103098774,1022272136,-1115360404)+W(7,-1122554235,-1148617751,1025957669,997652141);WS(1058528159,1053906024); +sum1=W(0,-1112917396,-1104256080,1023681564,1039659283)+W(1,1035675727,-1092229473,1058833811,1021887717)+W(2,-1104938189,-1097223269,1051100098,1033492802)+W(3,1040468760,-1082484606,1061928249,-1119337706)+W(4,-1105254898,-1103704557,1057519273,-1099217437)+W(5,1020887917,-1100912091,1047691241,-1127325712)+W(6,-1113141838,-1118771074,1047329733,-1114402703)+W(7,-1149793215,-1099449368,1044776397,1024214504);sum2=W(0,-1129442596,1040644144,-1106302200,-1105488042)+W(1,1023778714,1033307012,1056981996,1014815489)+W(2,-1113953277,1056896617,1082625405,1048992482)+W(3,1026809294,-1080168883,-1064674592,1043950232)+W(4,1035644478,1030172798,-1098216535,-1120732434)+W(5,1034718426,1046899220,-1107268878,-1121557578)+W(6,1016827280,-1114672577,-1138831353,1026207834)+W(7,1038084720,-1138817753,-1118740750,-1122753582);WS(1050028863,1057904824); +sum1=W(0,1016998719,-1115527732,1049960370,1033316845)+W(1,1031484924,-1114471481,-1097014217,1045307870)+W(2,-1113918453,-1092713340,1059124695,-1113659631)+W(3,1035763396,-1086973069,1055821255,-1113580281)+W(4,-1100192683,1048884339,1045748179,-1104759887)+W(5,1046082071,-1093669960,1046233018,1024760783)+W(6,1023767163,-1109475380,972758359,1028768132)+W(7,-1109585801,-1102684193,1047341446,-1118597711);sum2=W(0,1042577042,1058174637,-1093234196,1036828005)+W(1,1035985609,1022451597,1028288917,1036599280)+W(2,-1132583692,-1083350192,-1089654696,1043707159)+W(3,-1108557005,-1102051996,1066585170,-1099096459)+W(4,1045882832,-1096734805,-1112976831,-1117191962)+W(5,1049978360,1040525485,-1101233023,1038823523)+W(6,-1123148614,-1111555351,1016281700,1010883764)+W(7,1037998467,1012738322,1035922998,-1106116243);WS(1064158815,1035299335); +sum1=W(0,-1112803360,1016610641,1043480489,1023721675)+W(1,987363362,-1111853690,-1116662313,-1114846141)+W(2,1040202935,-1090418272,1043761841,1040437218)+W(3,-1148543050,-1086418793,1062267936,1044974085)+W(4,-1119103150,-1096774480,1026731899,-1112576238)+W(5,1016866897,-1106302329,1046949595,1035797256)+W(6,-1120253212,-1125874772,1044534239,-1118929285)+W(7,-1136961231,-1111706212,1038415821,1017229376);sum2=W(0,982347958,-1130481715,1039697927,1029826582)+W(1,1032509555,-1105443060,-1102232537,-1106323503)+W(2,-1111294086,1041532435,1059036310,-1087181565)+W(3,1034453505,-1090026061,1065332554,-1095157490)+W(4,-1107492941,-1115327745,1049776291,1032022369)+W(5,1047671755,-1099067440,1035057967,-1113855935)+W(6,-1114281099,1007189687,-1116755236,-1137758215)+W(7,1041657921,-1106888056,1039394631,-1116441678);WS(1064590463,1056702913); +sum1=W(0,1029043770,-1118119137,1044521535,-1108622774)+W(1,1053372231,1049750478,1040212560,1055292354)+W(2,-1096751755,-1090400466,1048069253,-1086796959)+W(3,1042753121,-1089893441,-1098259842,1028130891)+W(4,-1132040847,1035942347,1046519145,1043794349)+W(5,-1098166823,-1098407696,-1126503113,-1097599727)+W(6,1054745035,1057009004,1029470901,1057963224)+W(7,-1101919647,-1105867448,-1137574860,-1099480944);sum2=W(0,-1112469736,1047380321,-1107309008,-1130012001)+W(1,-1109993908,1048112351,-1096267194,1044766357)+W(2,-1113626244,1039961237,-1149218892,1024449363)+W(3,-1101975228,1053720344,1041967405,-1105185961)+W(4,-1113395603,1033059361,-1105421186,1034928166)+W(5,-1115391866,-1117206471,1041082150,-1103730760)+W(6,-1111764318,1050486894,-1097114178,1041700935)+W(7,-1114050909,1029031616,-1116211284,-1133808950);WS(1049282175,-1081654589); +sum1=W(0,1026879882,1056840376,-1089715922,1023576205)+W(1,-1106636470,1051340514,-1103588481,1019713064)+W(2,1025593670,1059046350,-1087728227,1018583793)+W(3,-1120434947,1060994015,-1081081863,-1116831948)+W(4,-1109057316,1062254571,-1089160278,1040563949)+W(5,-1103814142,1054415372,-1110084674,-1148705741)+W(6,-1108405355,1044610849,-1097611347,-1130543166)+W(7,1025046173,1057281100,-1102762237,-1108038889);sum2=W(0,1021240677,-1112389783,1025718250,-1104779102)+W(1,-1117500355,-1154883848,-1096682611,1051908652)+W(2,-1104166105,-1102583420,1048911763,-1093040032)+W(3,-1110155670,1061056453,1065471868,1051220588)+W(4,-1101525323,-1123615532,-1149445264,-1113750073)+W(5,-1099065181,1038434309,-1090281103,-1098156535)+W(6,-1135933351,1041908272,1042017461,1046751376)+W(7,-1100288377,-1120914319,-1131934595,-1100861861);WS(1044733566,-1111466942); +sum1=W(0,1033634167,1060020808,-1092913556,-1112663104)+W(1,-1105078967,1041929508,-1103349137,-1134753630)+W(2,-1104340430,1062221635,-1092289734,-1126194825)+W(3,-1106426842,1060048443,-1090785767,-1110397240)+W(4,-1101553619,1059584252,-1094348262,-1114529117)+W(5,-1110993602,1054717575,-1097827057,-1113238887)+W(6,-1113465444,1044713794,-1098824243,-1140846474)+W(7,1020428386,1047352089,1041060918,-1094820883);sum2=W(0,1040248415,1084299283,1054267917,1002599056)+W(1,-1113076108,1066146464,1032173778,1029289900)+W(2,1043824330,-1073408210,-1102778436,1027082476)+W(3,-1105221470,-1067326117,-1084477148,-1116688572)+W(4,1036602392,-1097425816,-1149511007,1024010398)+W(5,-1134849104,1016852200,1040914456,-1121212984)+W(6,-1163695359,-1119512248,1026379762,1007530464)+W(7,1011808464,-1118870508,1011171408,1020903456);WS(1041204862,1020998748); +sum1=W(0,1041320410,1040787048,-1129649268,-1136864165)+W(1,-1111643799,1044400490,-1096018340,-1123167632)+W(2,1033147201,-1112000574,1041936758,1014392453)+W(3,1033305824,1057857240,-1090212595,1043382402)+W(4,-1110534482,1058317173,-1083609992,1046901861)+W(5,1048653459,1013490791,-1108280561,1040774794)+W(6,-1106102028,1040475768,-1098465902,-1121200123)+W(7,-1129433652,1032979455,-1104103124,-1123801518);sum2=W(0,1033367466,-1105739926,1035166617,-1121294834)+W(1,1036408153,1041467605,-1116824529,1020242785)+W(2,1049195658,-1097896497,-1127250349,1024987646)+W(3,-1116950481,1069287141,-1103787577,-1113169844)+W(4,-1081345874,1045676499,-1104285546,-1109755223)+W(5,1035726191,-1097322898,-1110450029,-1162599282)+W(6,-1109751565,1034595972,1041775082,-1128984227)+W(7,1034565507,1022861151,-1111377560,1015705141);WS(1061587071,-1140717261); +sum1=W(0,-1112565188,-1082585266,1063001355,1029148274)+W(1,1035683412,-1091946062,1057075562,-1133150565)+W(2,1034588141,-1086181493,1061257307,-1121255338)+W(3,-1105710858,-1084260507,1062016535,1031972073)+W(4,1024277837,-1087521200,1059484653,-1140527211)+W(5,-1104681461,-1094344584,1051726365,1015752222)+W(6,1033519565,-1109665588,1053582679,-1140031633)+W(7,-1097426768,-1092361421,1050023351,1054184694);sum2=W(0,1052095029,-1068831962,-1076286348,1061242602)+W(1,1040595366,-1076957703,-1081349117,1046002483)+W(2,-1098987175,-1081538085,-1088771362,1040290526)+W(3,-1084153168,1037971476,1057908839,-1093902656)+W(4,-1091290481,1070110671,-1114213425,-1094367529)+W(5,-1096720628,1069986978,1063483875,-1094489561)+W(6,-1101102486,1074264190,1068552571,-1099236623)+W(7,1044734380,1070997731,1075267150,-1081182731);WS(-1071242520,-1095264341); +sum1=W(0,-1097248122,1057257956,-1095464807,-1098637431)+W(1,1017326143,1050464317,-1098731544,1039614697)+W(2,-1105336241,1059871125,-1096805078,1034135507)+W(3,-1091856432,1058219580,-1088025845,-1098503641)+W(4,1051920949,1056167546,1032394345,1057766069)+W(5,-1097210280,1051126389,-1089070234,-1095933097)+W(6,-1122345698,1047883744,-1102431837,1030493340)+W(7,999615444,1055359408,-1098523426,-1112287963);sum2=W(0,-1132961311,1038597560,-1089057302,1055074030)+W(1,1034954689,-1114842936,-1113751042,1048893008)+W(2,-1131131128,1039456110,-1095192990,1046429121)+W(3,-1105685093,-1104727669,-1097910004,1057064004)+W(4,1044104138,-1085849936,1064526735,-1091871118)+W(5,-1118659572,1053272959,1045257331,-1096323208)+W(6,-1117347443,-1117746499,1054461586,-1090448877)+W(7,-1140373421,1049759548,1062278408,-1081803378);WS(1055746431,1040288248); +sum1=W(0,-1154016945,1057716289,-1093759650,-1122750430)+W(1,-1117613130,1055590360,-1094487986,-1117149477)+W(2,-1108247483,1059644857,-1089867895,1031955359)+W(3,-1114072538,1067207252,-1085229664,1016534394)+W(4,-1103530014,1062212336,-1089860607,1044969554)+W(5,-1134724696,-1104299500,-1088563377,-1137442922)+W(6,-1102903742,1049302591,-1097577389,1035178328)+W(7,1046496384,1054319858,-1094962569,-1108831509);sum2=W(0,1041968914,1051752153,-1123800846,-1117011966)+W(1,1026703145,-1115260470,1035127537,1031245794)+W(2,1033601916,1038625472,1035458769,-1109678904)+W(3,1035338047,1052354182,1035609386,1050054059)+W(4,-1106207855,-1118891350,1057116581,-1098815779)+W(5,-1094112140,-1081023345,-1104080857,1038926653)+W(6,-1100978937,-1084581041,1055976243,-1108176195)+W(7,-1106593629,1066756564,-1101750238,-1107244818);WS(-1089881759,1037957184); +sum1=W(0,1000251530,-1098029886,-1105974859,1041712355)+W(1,-1117869170,-1095515176,1060224425,1040628361)+W(2,1029072469,-1089055515,1060210489,1042449912)+W(3,1031851625,-1079829205,1061092856,-1119516507)+W(4,1024508279,-1094362449,1060581840,-1102207965)+W(5,-1105582638,-1105281331,1056017638,-1107063314)+W(6,-1121710869,-1112643769,1040568609,-1112932479)+W(7,-1105403363,-1102959900,1050032516,-1124065669);sum2=W(0,1051114274,-1102532150,-1093533301,1042271071)+W(1,-1105565679,-1114476854,1038543175,-1112348507)+W(2,1055378846,-1082969540,-1075201485,-1087360189)+W(3,-1098769061,1064670328,1077554590,-1100903801)+W(4,-1106275827,-1102001010,1048871628,-1115312306)+W(5,-1101598109,1044770567,1040464379,1031777408)+W(6,-1109849433,-1114021751,-1111404687,-1125205988)+W(7,-1104426610,1049459491,1049461049,-1104546886);WS(-1089609215,-1090633405); +sum1=W(0,-1095985139,1060468726,1029992257,-1106189340)+W(1,-1131730646,-1114989785,1035463235,-1121474072)+W(2,-1106836118,-1111340153,1053834481,-1109753904)+W(3,-1120898567,-1083229835,1057093887,-1170836447)+W(4,-1122196780,-1097505195,1060127651,-1099640750)+W(5,-1108220230,-1091862496,1056095953,-1106303115)+W(6,-1113602180,-1118278055,1053644551,-1102165833)+W(7,-1111282801,-1094974325,1060964715,-1114233933);sum2=W(0,-1102755055,1028184991,1014375557,1018724927)+W(1,-1123071369,1018963304,1034540123,-1154538439)+W(2,-1101642458,1042446539,-1110958917,1030328833)+W(3,-1121616776,1048904011,1055634924,-1104340897)+W(4,-1123659230,1022095962,-1122273513,-1123674010)+W(5,1034971308,-1102092583,1047229966,-1103087688)+W(6,-1114444448,-1115812270,1006913192,-1118183380)+W(7,992820811,-1115600403,1032293939,-1116477720);WS(-1089497119,-1083970920); +sum1=W(0,1049400081,1017038202,-1096866095,-1129668560)+W(1,-1112985379,1054102421,-1092440080,1023489999)+W(2,1032734776,1052273107,-1090492445,1039999326)+W(3,1046931016,1050677101,-1077775563,1047866250)+W(4,1032966898,1056472798,-1095500286,1031139121)+W(5,1026703569,1054012759,-1141821439,-1128248842)+W(6,1023567673,1046736000,-1103091876,1037611037)+W(7,1020804657,1054561791,-1096856494,-1102316761);sum2=W(0,-1119432539,-1113150368,1049552369,-1123950204)+W(1,-1114702364,-1107904829,-1109676099,1034167140)+W(2,-1131454616,1051795717,1049548364,1018171432)+W(3,1045807900,1065572002,1052256292,1024318084)+W(4,-1107556037,-1104213250,1058452060,-1104886632)+W(5,-1138592655,-1096394963,-1077576443,-1103410805)+W(6,-1120197723,991774812,-1102019177,-1103678409)+W(7,-1116354551,991245404,1049782966,-1123412946);WS(-1092399743,1070790531); +sum1=W(0,1031557241,-1110110152,-1086332927,1040307665)+W(1,1024013147,-1123928476,-1104003948,1029330819)+W(2,1045977841,-1100428029,-1091187884,1054647477)+W(3,1049827334,-1093314535,-1110202001,1048337215)+W(4,1044712430,-1098211617,1031718940,1045074033)+W(5,1042539942,-1120318828,1031171411,1042256462)+W(6,1022243624,-1110797385,-1118825252,1034920639)+W(7,1042631871,-1103475236,1047659449,1041342974);sum2=W(0,1035080118,1049091174,1068767241,1056655092)+W(1,-1111978522,1049791001,1068692590,-1120502660)+W(2,1043189101,1038894820,1041587068,1054889999)+W(3,-1107203795,-1088677682,-1079138335,-1094007639)+W(4,1020874649,-1074681252,-1088844169,-1106617291)+W(5,1040978901,1032440616,1033618204,1037089622)+W(6,-1103963851,-1139760881,1036797334,-1115116202)+W(7,1014904337,-1132242473,1040720920,1029103732);WS(-1076899872,-1090262268); +sum1=W(0,-1111775583,-1105212520,1053805936,-1130865048)+W(1,-1105515965,-1109220950,1044900104,-1124779047)+W(2,1031134981,-1105276619,1061229259,-1108606366)+W(3,-1152866339,-1081197371,1056451270,1012899053)+W(4,1022185487,-1085735312,1061180827,-1111684786)+W(5,1031461535,-1090100176,1061600458,1038272628)+W(6,991487050,-1106571081,1040836429,-1123743158)+W(7,1013082739,-1094472404,-1114201801,1043636133);sum2=W(0,-1092758077,1054372816,1025999909,1025560437)+W(1,-1099940688,1036990346,1044094629,1015649794)+W(2,-1096959860,-1102824961,-1093700170,-1134776466)+W(3,-1093749782,1072234824,1074465248,-1118772240)+W(4,1047974360,-1091574668,-1086059593,-1097328702)+W(5,-1120633714,-1098403340,-1083936129,1035273338)+W(6,1036248767,-1097220109,1045585843,-1098634116)+W(7,-1113388587,1024848209,-1093741871,1051989609);WS(-1097318719,-1106686758); +sum1=W(0,-1138034233,1031803579,-1107190316,-1118470609)+W(1,1022220430,-1105675680,-1110575515,1013564641)+W(2,-1115259277,1060345356,-1091489993,1028754310)+W(3,1037878284,1040095311,-1082557626,1043380040)+W(4,-1109043646,1057210483,1054616755,-1126688788)+W(5,-1118564628,1018511203,-1113047197,-1103180903)+W(6,-1132126739,1038086620,1037558661,-1105313401)+W(7,-1123355602,1040876381,1040895458,-1110366427);sum2=W(0,-1116780480,1011610145,-1126532250,1031867194)+W(1,1034654933,-1109786563,1049246354,-1117436106)+W(2,1033980194,1034290987,-1098441369,1050453777)+W(3,-1106740681,1058839838,1055488745,-1098876833)+W(4,1037910476,-1112504437,-1081564854,-1101879397)+W(5,-1110588743,1048688059,-1109313096,-1105182695)+W(6,1033369701,-1100404580,1046210019,1033744368)+W(7,1006481529,1024874106,-1122526519,1042001428);WS(1061957727,1058150789); +sum1=W(0,1009728708,-1099288198,1046412713,1036440691)+W(1,1031914819,-1097230757,1055587995,-1109853493)+W(2,1043097483,-1087266183,1056802398,-1106212891)+W(3,-1106863550,1043273168,1049133325,1023154886)+W(4,-1097372952,1055416522,-1086687979,1047286155)+W(5,-1108191069,1050026271,-1105368103,1036106272)+W(6,1032793786,-1110590381,-1107437206,1024106902)+W(7,-1129266281,-1108247452,1042988739,-1120124353);sum2=W(0,1021676194,1026925373,-1130821928,1011207236)+W(1,-1104415808,1041631623,1047340087,-1118374396)+W(2,1041444786,1049347642,1055108729,1032289888)+W(3,-1104915444,-1075706495,-1078646873,-1097824639)+W(4,1042839409,1068941883,1058328878,1041964936)+W(5,1025561656,1049874161,1054741696,-1122940124)+W(6,-1111488206,-1096918949,-1108156193,1033049167)+W(7,-1119893126,1030080935,-1107876167,-1131526532);WS(1058678303,1013994144); +sum1=W(0,-1118673511,1050426208,-1111022430,-1110204509)+W(1,-1145988558,1032382213,1019043839,-1116037137)+W(2,-1107600786,1059103555,-1086017695,1043824660)+W(3,-1097799452,1061451838,-1090188381,-1111434373)+W(4,1050901309,-1098106458,1050664020,-1123560275)+W(5,1025019066,1032049821,-1093177128,1043538778)+W(6,1034380585,1038038624,-1133222475,-1104489131)+W(7,-1117490811,1043957152,-1113568728,-1110765932);sum2=W(0,-1105859137,1052524883,-1116369180,1025172812)+W(1,1047608842,-1096529292,1033298597,1035180205)+W(2,-1101390223,-1103682938,-1095014501,-1138831970)+W(3,1011548907,1018027622,1063707518,-1096368530)+W(4,-1098146078,1039330573,1056731707,-1094263126)+W(5,1047719826,-1101134187,-1086128756,1061932077)+W(6,-1099968186,1054816538,1037701277,-1095466983)+W(7,1028887915,-1105962981,-1150004284,1016476277);WS(1063038079,1033861047); +sum1=W(0,-1111914898,1016779545,-1107257338,-1114919788)+W(1,1040884807,1014390112,1045397811,-1162045399)+W(2,-1102681756,-1109833994,-1096677860,-1101855164)+W(3,1061986003,-1095449911,1065846455,1049909751)+W(4,-1095429920,-1097838100,1029008656,-1097193708)+W(5,-1109559865,1019923216,1039008680,-1113534130)+W(6,1034752240,-1148961393,1033037520,1007645095)+W(7,-1104233906,1009274926,1029851870,-1103320918);sum2=W(0,-1112457849,-1117177515,1031942991,-1106095669)+W(1,-1106002020,1017665294,1033022206,1041685053)+W(2,-1103752624,-1098231154,-1133545004,-1095196752)+W(3,-1114732591,1062239338,1061426536,1046863079)+W(4,-1102536580,-1097906884,-1109528685,-1105989872)+W(5,1029961226,-1101585142,1032626487,-1120505375)+W(6,-1114728817,1037597321,-1114069131,1028074076)+W(7,1038070251,-1112453861,1032988844,-1124888510);WS(1060691839,-1121680521); +sum1=W(0,-1112633460,-1105323108,1045243383,-1113361469)+W(1,1034282296,-1097943963,-1117038833,-1109479713)+W(2,1016470792,-1091137362,1060606770,-1110311799)+W(3,-1124091490,-1083253895,1065759511,-1102522287)+W(4,1036530779,-1090987401,1062311590,-1114082482)+W(5,-1110508885,-1090137469,1056765570,-1104777690)+W(6,1036991882,-1098291034,1054157412,1016563642)+W(7,-1133939630,-1093525810,1057599172,-1167556095);sum2=W(0,-1097189010,1057901747,-1086723052,-1086497310)+W(1,1041454563,1039698409,-1087530727,-1090377488)+W(2,-1110771302,-1122301550,-1094374456,-1110538585)+W(3,1043926258,-1125642190,1064818137,1061014784)+W(4,-1109373654,-1108285138,1036021291,1034378960)+W(5,-1109768355,1020817735,-1109979249,1044647130)+W(6,-1114304258,1040279727,1055924705,1013465199)+W(7,1043669875,-1101494695,1040712355,1050381101);WS(-1087684831,-1094525449); +sum1=W(0,1038107891,-1093934649,1052573184,1038198313)+W(1,-1121734275,-1096975274,1049163549,-1113930844)+W(2,1035814365,-1093954738,1040479417,1035537105)+W(3,-1107604308,-1090018791,1066601083,-1102439448)+W(4,1038052214,-1088075930,1058232216,-1113118893)+W(5,-1101928869,-1090123804,1057618495,-1148589172)+W(6,-1104767443,-1106254226,1040796439,-1146582942)+W(7,-1127021124,-1100235009,1051666987,1033628463);sum2=W(0,-1102391770,1038892506,-1109920182,1034045130)+W(1,1032495868,1032348345,1035913564,-1111661823)+W(2,-1140349122,1055934176,1043439866,-1148365864)+W(3,1051494072,1066287204,1049172795,1035742233)+W(4,-1080481573,1070533091,1048700512,1024670194)+W(5,-1072283498,1056179234,-1122911277,1043482108)+W(6,-1085993190,-1098172645,1042548330,-1117726050)+W(7,-1091499210,1038613315,-1103404378,1024343165);WS(-1095407551,-1073547033); +sum1=W(0,-1103915126,1043640456,-1106314263,-1099126911)+W(1,-1101976843,1041775803,-1098551608,1023142916)+W(2,1024335748,1061599658,-1096990689,-1110220795)+W(3,-1108044768,1057524528,-1095708126,-1106562202)+W(4,1050893513,1060862745,-1102020840,1056016670)+W(5,-1095324014,1028413803,-1092797676,-1099653918)+W(6,-1107189281,1044362232,-1110398586,1031215069)+W(7,-1114975198,1051352312,-1097969466,-1138223071);sum2=W(0,-1112168075,1034632723,1034960798,-1112860057)+W(1,-1111493200,-1122920764,1040740621,-1108202591)+W(2,-1123529566,1009053647,-1105159128,-1115675116)+W(3,1022286331,1049936313,1057592446,-1112708946)+W(4,-1103466952,1051909492,-1126339526,-1146770753)+W(5,1035493883,-1099948229,1041517424,-1116950762)+W(6,-1113566520,1029419308,1016655048,-1115594520)+W(7,-1106265315,-1107051081,1024151142,-1103163741);WS(1063407871,1051042354); +sum1=W(0,1005154604,1049807310,-1113122997,-1107282310)+W(1,-1120529264,1052429035,-1100831547,1042685852)+W(2,-1106161584,1057743574,-1088929544,-1113923042)+W(3,-1130858780,1063894449,-1086654500,-1129272494)+W(4,-1114354154,1058090310,-1089886688,-1164896285)+W(5,-1127255711,1052514789,-1092092086,-1131567786)+W(6,1023693521,1044231916,-1106897472,-1131959253)+W(7,-1115504868,1049931918,-1097639884,-1115987013);sum2=W(0,-1113031572,1043434467,-1088941888,-1067187434)+W(1,1030565628,-1108784254,1056568736,-1079041185)+W(2,-1127702936,-1111949688,1036016830,1074040966)+W(3,992883874,1036810375,1060861120,1075709893)+W(4,1014952720,-1111107284,1023742716,-1099161149)+W(5,990495554,1042918247,-1098281783,992814626)+W(6,1018238740,-1120169364,1022041004,1039733673)+W(7,1023316920,-1112993936,-1112517088,1028892682);WS(1053166591,-1107822593); +sum1=W(0,1033874440,-1120335240,-1105709561,1042509273)+W(1,1022746982,1031831786,-1108379508,1008295657)+W(2,1035703758,1052124034,-1093762507,1044631286)+W(3,1019810386,1048792350,1046826502,-1124953572)+W(4,1044260196,-1095582904,1053612659,-1112928126)+W(5,1042374543,-1088629918,1045805451,-1113071488)+W(6,1040749291,-1097950065,1037463342,-1120529605)+W(7,1041374685,-1085974448,1042845918,-1132054272);sum2=W(0,1010990056,-1096561981,1040308359,-1119485380)+W(1,1039106059,-1097601992,1052717590,-1115258493)+W(2,-1102786881,1031463124,1058176412,-1101721469)+W(3,-1114641521,1058004743,1045709336,-1138490792)+W(4,-1133768253,1042505523,1034355291,-1101570252)+W(5,-1101476912,1041182740,-1096768246,1029590734)+W(6,-1103607882,-1105959219,1033275384,1037679123)+W(7,-1113060394,-1099775079,-1105804625,1036565969);WS(1028916214,1067075549); +sum1=W(0,1039584518,-1148995491,-1098323934,1026160863)+W(1,-1119264713,-1109885152,-1096386895,1022848653)+W(2,1016298993,1055889168,-1096985498,-1150434165)+W(3,-1105861885,1067421167,-1085982162,1034469007)+W(4,-1113980813,1059632007,-1087532161,1044152506)+W(5,1020015061,1055091716,-1088331431,1024761132)+W(6,-1134777055,1045130509,-1095878225,1032543553)+W(7,1032661512,1052375930,-1104015130,-1104676378);sum2=W(0,-1120016029,-1101422768,-1104653664,-1122344899)+W(1,-1096222017,-1103630239,-1105545071,1042131820)+W(2,-1119382227,1040689805,-1120927281,-1120071349)+W(3,-1092715875,1064582511,1058022283,-1101606830)+W(4,-1110818689,1043406218,1060808344,-1096987934)+W(5,1049876716,-1089499537,-1107109410,1051590178)+W(6,-1103484103,1029271710,-1107008053,-1099435532)+W(7,1032841990,-1117522613,-1105419897,1050342947);WS(1047020030,1040511430); +sum1=W(0,-1108637223,-1092384755,1057603229,1031927268)+W(1,1033110649,-1090443530,1053549631,-1122999800)+W(2,1044090139,-1085982557,1061618217,1026366340)+W(3,1043424750,-1080046633,1047924234,1032840448)+W(4,1036624046,-1083957593,1053999549,1015929108)+W(5,-1120308481,-1096279270,1057048888,1020572028)+W(6,1033721201,-1149642107,1057845673,994286645)+W(7,-1106849700,-1100324533,1052833857,1039624063);sum2=W(0,1035208568,-1124082321,-1093736918,1048736861)+W(1,1043030610,1008382386,1050323039,-1118377912)+W(2,-1107699159,-1107061123,-1114950423,-1106119918)+W(3,1044796248,1049576136,1074526989,-1111443567)+W(4,1034655700,1051573865,1073198167,-1132389881)+W(5,-1103668262,1048541752,-1080621030,1034733436)+W(6,1045164876,-1093669891,-1074078238,1034120076)+W(7,-1095424772,-1134934914,-1079139349,1029501600);WS(-1080108544,1072234904); +sum1=W(0,-1115070415,1027588151,1031137458,1018404227)+W(1,-1130610603,1029085890,-1104252646,1044293186)+W(2,-1098588213,1032775046,1056995037,1028038521)+W(3,1057466749,-1089931562,-1083673968,1050777268)+W(4,-1104374087,-1123371019,1052314097,-1093125043)+W(5,1029557602,-1094030554,1050628415,1046325824)+W(6,1018553236,1034779836,1033643941,-1108340394)+W(7,1001112594,999211181,1036988180,1020739741);sum2=W(0,-1115557063,1043108929,-1138826120,-1108049897)+W(1,-1118678156,1033401680,-1093193803,-1109597407)+W(2,1045099863,1036186051,-1079584214,1013268663)+W(3,-1102856438,-1124450766,1068262877,1049634970)+W(4,1035209289,-1112637977,-1121148137,1046161245)+W(5,1035167397,-1114646959,1041792105,-1111895568)+W(6,-1117208818,1012643139,-1138286224,-1127251156)+W(7,-1120387027,-1132473655,1032348301,-1116707942);WS(1061770399,1033097145); +sum1=W(0,-1127803310,-1100493560,1049484359,-1117956049)+W(1,-1108446526,-1122290538,1040952192,-1101349332)+W(2,1046619869,-1090144134,1049567736,1015706547)+W(3,-1102069216,-1124504076,1060283011,1051006353)+W(4,-1115166002,-1096124978,1036170309,1027971186)+W(5,-1107462472,-1113245389,1049188012,-1105896346)+W(6,-1113123881,-1115437168,1004781969,1011773295)+W(7,-1109525661,-1114380655,1043620172,-1118021614);sum2=W(0,-1115090363,1035607607,1036976780,-1102631851)+W(1,-1146121477,1032878473,1008730983,-1105868946)+W(2,1029869322,1020296178,1050702114,-1106613659)+W(3,1039239074,-1094567498,1060438996,1056742871)+W(4,-1123366919,-1133024223,-1092544833,1056526109)+W(5,-1123569769,-1111505684,-1088372125,-1103439045)+W(6,-1115297931,1036037468,-1119747923,-1114092237)+W(7,1022224092,1025152664,1015952550,-1109382916);WS(1063262431,1041246684); +sum1=W(0,-1095604910,-1094141452,1054301899,1050361575)+W(1,1035931377,-1103734011,1050116188,1015464930)+W(2,-1116408259,-1088213584,1059695011,-1130477940)+W(3,-1113418944,-1084116356,1063045487,1005018697)+W(4,1035543059,-1088057339,1060587189,-1114430457)+W(5,-1109446615,-1084926720,1062081288,-1112900435)+W(6,1041501409,-1095142868,1055163174,968128030)+W(7,-1111045021,-1085134126,1061043357,1012274924);sum2=W(0,-1088652568,1079171932,1068650823,-1089634291)+W(1,-1101936220,1073764649,1062997529,-1106083041)+W(2,-1091191468,1074855165,1053027607,-1102140198)+W(3,-1102444501,-1113430470,1039600983,-1123235056)+W(4,-1123800532,-1095064501,-1105207914,1028735871)+W(5,-1111069004,-1078839186,-1082346847,1056073450)+W(6,-1088813372,-1078450334,-1088354544,-1114344542)+W(7,1050243792,-1071519758,-1081653443,1060600412);WS(-1071343712,-1080188504); +sum1=W(0,1048814204,1024112567,-1101821021,-1155239198)+W(1,-1112944093,992179242,-1105846854,-1115614373)+W(2,1038698214,1035991718,-1110088095,-1117961066)+W(3,-1110388460,1065540811,-1086620536,1022833410)+W(4,-1102353903,1062800155,-1085891530,1037955557)+W(5,-1113346827,1057270438,-1092189183,-1130491710)+W(6,-1115354285,1047814390,-1094362793,1026576596)+W(7,-1172877482,1055244391,-1096652125,1021561214);sum2=W(0,1077488778,1057844910,-1110901413,-1157420388)+W(1,1067869852,1017329883,-1123912240,1016773013)+W(2,-1080283979,-1112258962,1048616910,-1127671945)+W(3,-1070445594,1038200220,-1103189448,1027002057)+W(4,-1085461181,1045877800,1033584054,-1139116556)+W(5,-1113067149,1016515143,-1113680120,-1108492850)+W(6,-1135625536,1029029881,1006246833,1033508697)+W(7,-1105631704,1026840239,1028070058,-1122607860);WS(-1114300667,-1123436789); +sum1=W(0,1048745214,1024457460,-1084727981,-1124831645)+W(1,-1106612992,1049280824,-1099711469,-1120312678)+W(2,1040619730,1061265254,-1091611130,991636461)+W(3,-1101020989,1066754197,-1090437274,-1115033343)+W(4,-1120049178,1060475010,-1087975654,1037659252)+W(5,-1129452308,1056957204,-1087165059,1036876438)+W(6,-1112058252,1052291799,-1095257281,1024723233)+W(7,1040777596,1051532558,-1091858685,-1128167880);sum2=W(0,-1102675226,-1096018291,-1064870457,1050758265)+W(1,1045758589,1033992894,-1078407710,-1091427154)+W(2,-1106608364,1053924217,1074354229,1044800412)+W(3,1037856863,1023354017,1077566439,-1122690967)+W(4,-1121700495,1045521037,1055978728,1037435194)+W(5,1038509645,-1112080608,-1100523264,-1101170582)+W(6,1041300787,1019757091,1032114149,1048475585)+W(7,1013024414,-1111416466,-1096094745,1031501486);WS(-1081349952,-1073531246); +sum1=W(0,-1130396178,-1092471918,1052933181,-1120779255)+W(1,-1123247001,-1094799967,1040552427,1032899791)+W(2,1049234666,-1087091570,1062313536,1048808240)+W(3,-1123595694,-1083589055,1056428784,1047688662)+W(4,1044575749,-1090515766,1060166366,1025076592)+W(5,-1118849787,-1088301188,1052569014,-1104574961)+W(6,1027091408,-1100895532,956727337,-1114767697)+W(7,1015989072,-1095518837,1057005798,1028829344);sum2=W(0,1036727690,-1101780564,1047063866,-1095151348)+W(1,1038605852,1036224480,1003722492,-1101329253)+W(2,1000461252,1043313873,1071364196,-1071443435)+W(3,-1108807283,1058417373,1075919102,-1072909475)+W(4,-1118764382,-1110550387,1031984760,-1137970650)+W(5,1040753555,1041024731,1052825370,-1094681513)+W(6,1025474323,1032765623,-1104266299,-1130737363)+W(7,1026410269,-1114514162,1049040777,-1100563228);WS(-1087415039,1075227720); +sum1=W(0,1014202565,1030200505,1042588557,1032642210)+W(1,-1121306305,-1093044977,1045750086,1039690838)+W(2,-1115466670,1052765481,-1099185023,-1099716881)+W(3,1055732347,-1086016434,-1102841730,1054066516)+W(4,-1088701572,-1108244135,1060432915,-1089156724)+W(5,1045428619,1044242725,1001272287,1045967960)+W(6,-1106855619,-1102530383,1047811955,994787170)+W(7,-1113272762,1042147022,1043051755,-1114980876);sum2=W(0,1034817173,1033088277,-1105460751,-1119967238)+W(1,-1106843150,-1115275500,1042281307,-1122100142)+W(2,1035283571,-1108330169,-1117933953,-1118763227)+W(3,-1117324330,1059951304,1055263105,1033190213)+W(4,-1106783723,-1114610359,1036736577,-1099584511)+W(5,1033652183,-1130129964,1034893511,-1097591398)+W(6,-1105003316,-1100855920,1040893249,1043864443)+W(7,-1109219720,1017452836,1026860110,-1097701018);WS(1061885343,-1093433134); +sum1=W(0,-1119074171,-1116612499,1043937396,1026065358)+W(1,1040591342,-1106037336,1035985530,1035233146)+W(2,1024365415,-1090085717,1054530437,1023445318)+W(3,-1112185530,-1110885309,-1105284753,1041032751)+W(4,-1102861510,1058148680,-1085809524,1043298226)+W(5,1047951017,-1098920364,1042740717,1028431483)+W(6,1033079635,-1104145445,-1143903027,1030877520)+W(7,1030794670,-1102965524,1048819605,-1110782149);sum2=W(0,-1120425303,-1115506247,-1089905659,-1106986872)+W(1,1041777983,-1109249837,-1082926483,-1093100415)+W(2,1008642595,1051302633,976609774,-1100742938)+W(3,1038578170,1062460419,1062992305,-1121360027)+W(4,-1103931105,1046700430,1016533657,1026171953)+W(5,-1144970974,-1110379832,1046952726,-1123505732)+W(6,-1139607395,-1121481149,-1128426413,1047068010)+W(7,-1105571910,-1125592805,1044012895,-1108759193);WS(1057387711,1071476886); +sum1=W(0,1029774760,-1088145158,1058722665,1026644842)+W(1,1046876472,-1090879061,1046940920,-1124024690)+W(2,1049447728,-1087750555,1062289140,1034805113)+W(3,-1104814472,-1081209882,1060559271,-1101227374)+W(4,1047761369,-1102041597,1057163193,1041428045)+W(5,-1107998911,-1088704948,1046238393,-1112057972)+W(6,1035672969,-1101378696,1049034574,-1123650077)+W(7,1025453339,-1090772220,1051154538,1045125730);sum2=W(0,-1079574021,1066168402,-1106633910,1033041398)+W(1,-1076424748,1072246945,1039775524,1025560740)+W(2,-1084651933,1055648588,-1122282375,1042767844)+W(3,-1079383446,1069722149,1050613020,-1122422479)+W(4,-1094010079,-1105729737,-1112550614,1029478726)+W(5,-1105513599,1052366950,1046757765,1029747528)+W(6,-1094989946,1046266897,1041413657,-1132333344)+W(7,-1083946107,1064021500,-1117589808,-1110924549);WS(-1088291167,-1076464582); +sum1=W(0,1038365083,1048475643,-1115380053,-1113517956)+W(1,1013092187,1039614653,-1115741870,-1118168192)+W(2,1049005176,-1105893787,-1115211424,1038779144)+W(3,-1096083994,-1090164821,-1106465144,-1103584918)+W(4,1046666973,1048630844,-1092124773,1051487172)+W(5,1029385568,1052597003,-1097273638,1036949051)+W(6,-1130846211,1030762351,-1104199584,1029432699)+W(7,1035921309,1049653618,-1098780292,1041505439);sum2=W(0,-1102442432,-1119046775,1038119755,-1116688635)+W(1,1042447103,-1103497340,-1117033259,-1109692823)+W(2,1009200726,-1108371687,-1111757198,-1136365839)+W(3,-1140140535,1063726871,1053430514,-1103585210)+W(4,1018235219,1023996549,-1097582390,1035998106)+W(5,1038566242,-1100556235,-1130738637,-1122627505)+W(6,-1105836948,-1134905751,1027482933,-1113769016)+W(7,-1119461411,-1115426548,1038939472,-1131103707);WS(1063535295,-1106643391); +sum1=W(0,998897947,1049160779,-1095715331,1022592892)+W(1,-1114069468,1050551697,-1114097198,1035333911)+W(2,1030590255,1037435628,-1091439068,-1105875754)+W(3,-1120649212,1059662980,-1098500149,1036951763)+W(4,-1112623985,1051258674,-1093374928,-1097348874)+W(5,-1135800742,1051146291,-1112852607,1021555078)+W(6,-1126057998,1042046535,-1104302276,1032877804)+W(7,-1118923687,1051522915,-1098602138,-1118947123);sum2=W(0,1020791040,1023004440,-1131522740,-1130592194)+W(1,-1119848331,1035188360,1010552055,-1114014595)+W(2,1028098574,1036866165,-1087402238,1057774258)+W(3,1024075228,-1081188844,-1063807577,1085749988)+W(4,1036335573,1036267331,-1074297638,1072260443)+W(5,-1114214294,1020492762,1044255896,-1101071935)+W(6,1028067710,1026996488,-1109527927,1041502854)+W(7,-1123998545,1028180222,-1125487816,-1121770211);WS(1065370528,-1140007425); +sum1=W(0,-1119191691,-1089109360,1051697742,1048704645)+W(1,-1123119348,-1093467562,1051845168,-1120571445)+W(2,1043193134,-1104035088,1049231373,1047054964)+W(3,-1144777506,-1082641845,1058881533,-1128753754)+W(4,1048874737,-1090665335,1060727795,-1122636375)+W(5,-1114692372,-1085597050,1053776045,-1135014444)+W(6,1047204584,-1097312497,1050811579,962936920)+W(7,1028382351,-1084438004,1054559607,1047044271);sum2=W(0,1072219394,-1078126224,-1093298188,1011861728)+W(1,1068804680,-1079031251,-1110022070,1040923692)+W(2,1068134846,-1078951161,-1084926454,-1105857084)+W(3,1066171639,-1087436811,-1107767815,-1121892273)+W(4,-1095987744,1039512383,1055586357,1026590003)+W(5,-1080918851,1067164113,1031793821,1040751494)+W(6,-1077110574,1069504242,1041030661,-1123439499)+W(7,-1071545857,1075315134,1055897321,-1109554506);WS(-1089696543,-1143233957); +sum1=W(0,-1115482013,-1129127938,1041381507,-1122467892)+W(1,1045323653,-1098483714,-1110243009,1049605572)+W(2,-1096516931,1045383939,1059582003,-1090424421)+W(3,1035013745,-1091150045,-1106321908,1043667267)+W(4,-1162367211,1043411549,1034020454,-1109629626)+W(5,1054106403,-1086835476,1026676964,1048548650)+W(6,-1107204469,1048447553,1034191370,-1105600748)+W(7,1036179510,-1103773800,-1159158363,1035568493);sum2=W(0,-1134008573,1032064725,-1117795542,-1113496357)+W(1,-1125596513,-1121806942,1035355315,998755498)+W(2,1011008945,1045441656,1024667789,-1119910472)+W(3,1051842604,1065460002,-1089961367,1041632626)+W(4,-1125276577,-1114964420,-1081892598,1035390555)+W(5,-1118729604,-1130705389,1026896379,1032979221)+W(6,-1111959837,-1121883022,1020053498,-1129745921)+W(7,-1117720498,1034360078,1023648883,-1115672512);WS(1065278079,-1120402802); +sum1=W(0,1031924074,1052390115,-1097070063,-1116671142)+W(1,-1115548942,1049303261,-1099757447,-1118597165)+W(2,-1106896516,1045251552,1040981136,1041336272)+W(3,-1112658654,1060948388,-1081623390,1043338841)+W(4,-1103991244,1062622505,-1085365853,-1145407604)+W(5,-1121670257,1054395391,-1096062708,1032773481)+W(6,-1115583119,1045812503,-1101077740,-1123616408)+W(7,1031270934,1048618059,-1099232531,-1127437558);sum2=W(0,-1114021356,-1110767736,-1100377718,1034493514)+W(1,1032565152,-1122384971,1041858293,1019779384)+W(2,1056835748,-1085457975,-1085697040,1016590225)+W(3,-1085160508,1068814369,1060746614,-1097525969)+W(4,1058685385,-1085213012,1057245366,1043875459)+W(5,-1086618535,1063574785,-1094120608,-1097974912)+W(6,1047242231,-1144776155,-1093482365,1054776673)+W(7,1032715041,-1097434793,1056356490,-1096653037);WS(1055688959,-1109584743); +return clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0); +} // nnedi3 +vec4 hook() { +vec4 ret = vec4(0.0); +vec4 samples[8]; +samples[0][0] = HOOKED_texOff(vec2(-3.0, -1.0)).x; +samples[0][1] = HOOKED_texOff(vec2(-3.0, 0.0)).x; +samples[0][2] = HOOKED_texOff(vec2(-3.0, 1.0)).x; +samples[0][3] = HOOKED_texOff(vec2(-3.0, 2.0)).x; +samples[1][0] = HOOKED_texOff(vec2(-2.0, -1.0)).x; +samples[1][1] = HOOKED_texOff(vec2(-2.0, 0.0)).x; +samples[1][2] = HOOKED_texOff(vec2(-2.0, 1.0)).x; +samples[1][3] = HOOKED_texOff(vec2(-2.0, 2.0)).x; +samples[2][0] = HOOKED_texOff(vec2(-1.0, -1.0)).x; +samples[2][1] = HOOKED_texOff(vec2(-1.0, 0.0)).x; +samples[2][2] = HOOKED_texOff(vec2(-1.0, 1.0)).x; +samples[2][3] = HOOKED_texOff(vec2(-1.0, 2.0)).x; +samples[3][0] = HOOKED_texOff(vec2(0.0, -1.0)).x; +samples[3][1] = HOOKED_texOff(vec2(0.0, 0.0)).x; +samples[3][2] = HOOKED_texOff(vec2(0.0, 1.0)).x; +samples[3][3] = HOOKED_texOff(vec2(0.0, 2.0)).x; +samples[4][0] = HOOKED_texOff(vec2(1.0, -1.0)).x; +samples[4][1] = HOOKED_texOff(vec2(1.0, 0.0)).x; +samples[4][2] = HOOKED_texOff(vec2(1.0, 1.0)).x; +samples[4][3] = HOOKED_texOff(vec2(1.0, 2.0)).x; +samples[5][0] = HOOKED_texOff(vec2(2.0, -1.0)).x; +samples[5][1] = HOOKED_texOff(vec2(2.0, 0.0)).x; +samples[5][2] = HOOKED_texOff(vec2(2.0, 1.0)).x; +samples[5][3] = HOOKED_texOff(vec2(2.0, 2.0)).x; +samples[6][0] = HOOKED_texOff(vec2(3.0, -1.0)).x; +samples[6][1] = HOOKED_texOff(vec2(3.0, 0.0)).x; +samples[6][2] = HOOKED_texOff(vec2(3.0, 1.0)).x; +samples[6][3] = HOOKED_texOff(vec2(3.0, 2.0)).x; +samples[7][0] = HOOKED_texOff(vec2(4.0, -1.0)).x; +samples[7][1] = HOOKED_texOff(vec2(4.0, 0.0)).x; +samples[7][2] = HOOKED_texOff(vec2(4.0, 1.0)).x; +samples[7][3] = HOOKED_texOff(vec2(4.0, 2.0)).x; +ret[0] = nnedi3(samples); +return ret; +} // hook +//!DESC NNEDI3 (combine_y, nns256, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND nnedi3_int +//!HEIGHT 2 HOOKED.h * +//!OFFSET 0.000000 -0.500000 +//!WHEN HOOKED.h OUTPUT.h / 0.707106 < +vec4 hook() { + vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5; + if (dir.y < 0.0) { + return HOOKED_texOff(-dir); + } else { + return nnedi3_int_texOff(-dir); + } +} +//!DESC NNEDI3 (double_x, nns256, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!SAVE nnedi3_int +//!WHEN HOOKED.w OUTPUT.w / 0.707106 < +float nnedi3(vec4 samples[8]) { +float sum = 0.0, sumsq = 0.0; +for (int i = 0; i < 8; i++) { + sum += dot(samples[i], vec4(1.0)); + sumsq += dot(samples[i], samples[i]); +} +float mstd0 = sum / 32.0; +float mstd1 = sumsq / 32.0 - mstd0 * mstd0; +float mstd2 = mix(0.0, inversesqrt(mstd1), mstd1 >= 1.192092896e-7); +mstd1 *= mstd2; +float vsum = 0.0, wsum = 0.0, sum1, sum2; +#define T(x) intBitsToFloat(x) +#define W(i,w0,w1,w2,w3) dot(samples[i],vec4(T(w0),T(w1),T(w2),T(w3))) +#define WS(w0,w1) sum1 = exp(sum1 * mstd2 + T(w0)); sum2 = sum2 * mstd2 + T(w1); wsum += sum1; vsum += sum1*(sum2/(1.0+abs(sum2))); +sum1=W(0,1024871952,1026430476,1041094851,992987016)+W(1,1034372511,1007997243,1038248733,1009484684)+W(2,-1091961907,-1103990249,-1086639391,-1085365048)+W(3,-1087585419,-1093414958,-1100793414,-1099588502)+W(4,1049937838,1052012307,1057524239,1063527595)+W(5,1061081007,1057188600,-1104832955,-1114088341)+W(6,1023328805,994719130,-1110763811,-1102193240)+W(7,1046466539,-1131716095,1042167685,1037858632);sum2=W(0,-1122170202,-1117362461,-1125932452,-1100385246)+W(1,1020071642,1025043913,1017078274,1018043750)+W(2,-1115075619,1050294809,1041506545,-1100233118)+W(3,-1100362988,1047005177,1012082941,-1112302377)+W(4,-1113824159,1022334174,-1098709995,-1104291570)+W(5,1072797337,1053652830,-1100425628,-1155649364)+W(6,1016746290,1016781702,1031697879,1033455014)+W(7,1050444141,-1106922881,-1081909907,-1086585813);WS(-1096195455,1061976972); +sum1=W(0,-1107583849,1045016510,-1102048399,1050507709)+W(1,-1138600128,1004076226,1049677870,-1106918697)+W(2,-1094469481,-1104061589,-1082981042,-1086991635)+W(3,-1087760032,-1088999402,-1111975782,-1089081125)+W(4,1057261454,1051975353,1058403546,1061386858)+W(5,1052980216,1052828202,1055128500,1048525839)+W(6,1032308806,1046697387,-1093320254,1051876218)+W(7,-1106246183,-1112945129,1045880594,-1116677906);sum2=W(0,976892690,1043646796,-1131052969,1047930742)+W(1,-1099144563,1035354913,-1115191227,-1111106463)+W(2,-1095110912,-1114450783,1052886335,-1113296119)+W(3,-1088067101,1040578653,-1102673565,1051335047)+W(4,-1080663089,-1074060607,-1068434194,1048011859)+W(5,1042920440,1058047003,1057110709,1038060178)+W(6,1075827337,1075290035,1070007941,1046007784)+W(7,-1090506241,-1099371585,-1096675048,-1096378099);WS(-1095930303,-1128843438); +sum1=W(0,-1113225514,1030842449,-1120882464,-1111398934)+W(1,-1098488134,-1098728413,-1111237296,-1104159890)+W(2,1000563038,-1103461662,-1098779087,-1156245815)+W(3,1057689814,1058114717,1041725787,1046074787)+W(4,1038763268,1052682210,1055587560,1046999855)+W(5,-1090605975,-1106232348,-1106563184,-1119168797)+W(6,-1104281110,-1105449143,-1106219642,-1105879965)+W(7,1039743648,1030902068,-1111582036,1033984854);sum2=W(0,-1109947141,-1087141194,1007133897,-1099413759)+W(1,1026690396,1045509921,-1117657274,1051942463)+W(2,-1078961084,-1081851502,1057831088,1067440534)+W(3,-1095618356,1022398658,1029712906,1049871690)+W(4,1053833634,-1102894339,1046573470,1058568743)+W(5,1058025266,-1115002147,-1109832065,-1099467737)+W(6,1049299145,1040634467,1035108031,-1114324751)+W(7,-1094447449,1023241606,987652806,-1104714655);WS(1018627052,-1077328537); +sum1=W(0,-1107592280,1011043872,-1138466445,1041422472)+W(1,-1112294435,1012707679,-1150731309,-1118891707)+W(2,-1098360952,-1103889731,-1088654431,-1079526160)+W(3,-1109020730,-1095389295,-1102056896,-1101414784)+W(4,1054425801,1045838144,1063939041,1057394281)+W(5,1061143403,1057286118,1040465365,1042544156)+W(6,-1121256842,1016847523,-1114759963,-1109966789)+W(7,-1115564074,-1117689671,-1133534770,1028492087);sum2=W(0,-1161717665,-1138679732,-1121504639,1050854432)+W(1,-1106511096,1030373815,980628162,1031200951)+W(2,1033867626,-1115218580,1030621655,-1096361601)+W(3,1044499063,-1104067382,1040061476,-1122098343)+W(4,1028201267,-1096378423,1071708903,1079482342)+W(5,-1064184100,-1089118805,1048273255,-1109436715)+W(6,-1124228530,1029766795,-1128256742,1035298280)+W(7,1035336882,-1105361644,-1119150405,1035049634);WS(1045693694,1057374369); +sum1=W(0,1048369598,-1104752283,1031950009,-1123958928)+W(1,-1103831441,-1106189273,-1103850789,-1110300085)+W(2,1034312519,1045853799,1057046586,1065585622)+W(3,1061666460,1060939321,1050689810,1060417841)+W(4,-1131023893,-1098373234,-1095062180,-1089164628)+W(5,-1092432965,-1087345809,-1092965100,-1091010256)+W(6,-1099588978,1019902402,-1105510198,1033283356)+W(7,-1115031649,-1122647270,-1126666680,-1103574093);sum2=W(0,-1087427905,1058683530,-1081734921,1050776004)+W(1,1042479954,1025544982,-1105492903,1058740427)+W(2,-1098709872,-1099141199,1032637312,1072181481)+W(3,1036599206,-1080357543,-1113642582,-1086527647)+W(4,1072153031,-1088885778,1061509476,1071890032)+W(5,1052304550,-1080881103,1050862866,-1078556244)+W(6,-1089481634,1056590706,-1092495010,1048814690)+W(7,-1095810808,-1097308566,-1094462248,1039671439);WS(-1081549664,1060153996); +sum1=W(0,992286043,-1115318586,-1105782456,1026471870)+W(1,-1114468402,1037910210,-1130210466,1043803882)+W(2,1063391104,1055271797,1062019397,1061503832)+W(3,1058772501,1045594046,1049908468,1040755007)+W(4,-1087586274,-1095899708,-1085498120,-1089250259)+W(5,-1090055577,-1102496824,-1103786988,-1104619012)+W(6,-1105647870,1025423024,1033921889,-1113405924)+W(7,-1113674825,-1106446561,-1118412923,-1096097592);sum2=W(0,1053790549,-1110257416,1033688102,-1102619530)+W(1,-1117483359,-1098152061,-1105743952,-1083553679)+W(2,-1080860351,-1097530578,1041061421,1064966059)+W(3,1050344847,1040479494,1051151965,1065962098)+W(4,-1068185653,-1077346152,1052310674,1072556372)+W(5,1075004369,1064749402,-1110156824,1045213317)+W(6,-1082483044,-1088866791,1052658871,-1104178634)+W(7,-1108410079,1040931499,-1137891932,1053124980);WS(-1079020096,-1097079011); +sum1=W(0,-1109501731,1033910555,1015347636,-1108027795)+W(1,1042979875,1019929124,1040369234,-1134559750)+W(2,-1096742621,-1092191510,-1089091160,-1087072713)+W(3,-1087558450,-1089417126,-1104831498,-1091818621)+W(4,1057943754,1055662529,1059647341,1068092504)+W(5,1059824411,-1117499817,1043480574,1050143023)+W(6,1016000225,1020967408,-1102027816,-1109882648)+W(7,-1106889398,-1117366414,-1104827345,1049289276);sum2=W(0,1037631964,-1105851814,1036652885,-1110757790)+W(1,1024508007,-1139201564,-1113225064,-1104657620)+W(2,-1097479797,1051380185,1028410699,1044594400)+W(3,1041068006,1046036650,1054960427,-1105334641)+W(4,1051023588,-1097950410,1034374804,1053237761)+W(5,-1132209182,-1088293598,-1081781977,1065714224)+W(6,1045348435,1028003104,-1113269608,1041832368)+W(7,1033918380,-1089693526,-1099925151,-1106359824);WS(-1087384991,1052875812); +sum1=W(0,1041733252,-1138647561,1034391503,-1106477875)+W(1,-1100509868,-1098694249,-1110959830,-1120730421)+W(2,-1109905397,-1104994285,-1107522048,1057597757)+W(3,1062613266,1055828187,1052485297,1044647290)+W(4,1041497057,1032882549,1050093354,-1091247383)+W(5,-1087942224,-1090201627,-1098203032,-1100016695)+W(6,-1113613058,-1117825756,-1108789794,1028766931)+W(7,1042722079,1013355333,1034047139,1038812681);sum2=W(0,1019350107,-1111428867,1017374087,-1112005123)+W(1,1028700445,-1112772903,1027823157,999439052)+W(2,1041831066,-1130655130,-1138336400,1035402260)+W(3,-1116945124,1041636268,-1107238338,1033528252)+W(4,1051650697,-1112274143,-1092155273,-1114034096)+W(5,1045953881,1041190902,1049171133,1027833254)+W(6,-1103332568,-1077765094,-1073481211,-1087514353)+W(7,1069095754,1074086485,1057277153,-1107727987);WS(1050457727,1041689780); +sum1=W(0,-1131312139,-1116681402,1030961105,-1140959985)+W(1,1046496193,1048638526,1007270019,1049181764)+W(2,992358355,1014710691,1040368912,-1105027369)+W(3,-1089290871,-1090315138,-1098770776,-1086147588)+W(4,-1092744895,1027381214,-1089348299,1050737138)+W(5,1038810352,1055368676,1040416748,1051301702)+W(6,1048008788,1036450832,1053966377,933247243)+W(7,1043432004,-1119062181,1023583738,1037141075);sum2=W(0,-1107193278,1019433289,1039188525,-1123892633)+W(1,1039851328,1032631611,1044641782,-1097026795)+W(2,1057496780,1031729137,1037283932,-1086728254)+W(3,-1087309268,-1092570464,1035754242,1063903066)+W(4,1072935738,-1080020989,-1078950448,-1087453268)+W(5,1051352061,1059438018,1051006721,1056300653)+W(6,-1080570956,1054527180,-1096917141,1050123895)+W(7,1053948249,1042769096,1029707984,-1106545458);WS(-1084263519,-1088250567); +sum1=W(0,-1107101246,1049480649,-1097447514,1049647488)+W(1,-1099235545,1018612505,-1103944776,1032447885)+W(2,1048954180,-1096698757,1059331526,-1119095878)+W(3,1040553109,1041330418,1040723088,1023387386)+W(4,-1118116730,1027018719,-1108150329,-1090501921)+W(5,1044929028,-1094468036,1047463532,-1106285556)+W(6,-1111017296,1043604572,-1098833704,1050343697)+W(7,-1096264890,1044030041,-1121471547,-1175819022);sum2=W(0,991719940,1034086314,1055828179,1034571486)+W(1,1049088345,-1098363481,-1111430799,-1111365517)+W(2,-1157381748,-1121095386,-1103829652,-1100672658)+W(3,-1090417467,1050795943,-1113801830,1037803588)+W(4,-1100952734,1027786887,-1085350121,-1118546758)+W(5,1049271738,-1140682323,1035813474,-1164121191)+W(6,1029794653,1016292894,1067178121,-1098007098)+W(7,1008607005,-1110134488,-1115483467,-1133015817);WS(1066054400,-1125664425); +sum1=W(0,1015260777,-1108545200,1023624464,-1109354663)+W(1,1023465234,-1108921531,-1116445024,-1128865616)+W(2,1054574294,1053284635,1059735702,1058150961)+W(3,1058102002,1063397581,1046571067,1046728251)+W(4,-1095241461,-1094415406,-1088764634,-1078845388)+W(5,-1090401103,-1105651068,-1116790272,-1104354311)+W(6,-1127045294,-1111343263,1041542629,-1130514988)+W(7,1035892576,-1136829776,1030749305,-1106930027);sum2=W(0,1041565398,-1103469615,1029690269,1035794320)+W(1,1035452008,-1107146771,-1124704946,1040850628)+W(2,-1104697837,1029373537,1057447179,1080145714)+W(3,-1103623095,-1066097425,-1097535851,-1103109309)+W(4,-1115419200,1031260861,1026403525,1043319440)+W(5,1050811672,-1103531154,-1090176537,1055196268)+W(6,-1158883614,1035036640,1034486240,1041655252)+W(7,-1114789346,-1114794272,1036709484,-1102936938);WS(-1087901375,1071177135); +sum1=W(0,-1121594272,-1122618691,-1114434254,1044010486)+W(1,-1113833999,-1108159437,997526195,-1123472883)+W(2,-1110224028,-1109965218,-1120206908,1010935165)+W(3,-1108541318,1041417229,-1109330685,1039497451)+W(4,1030219348,1047787782,-1114914192,-1113546820)+W(5,1046030645,1035224125,1017890711,1022061139)+W(6,994425384,1027034090,-1106192913,1040356168)+W(7,-1112701798,-1130438655,-1151173965,-1125745551);sum2=W(0,1042217679,-1108814485,1058334461,-1080767453)+W(1,1050991857,1030602271,1034906705,-1127683613)+W(2,-1116367239,1042859710,-1078638996,1073929687)+W(3,-1092080339,-1116721722,-1106162437,1035114111)+W(4,1026421701,1027395369,1028343990,-1097310248)+W(5,1042808122,1051491707,1024141024,-1112071525)+W(6,-1140328609,-1114630403,-1105295199,1028261520)+W(7,-1122297114,-1105219597,997359482,1017171678);WS(1066545696,-1154623394); +sum1=W(0,-1105442505,-1115505461,-1102287846,1023914903)+W(1,1021900696,1016559928,-1142506442,-1129232035)+W(2,-1114054203,-1098488296,-1092352928,-1089108436)+W(3,-1087887754,-1096061654,-1097827287,-1095543703)+W(4,1057182265,1049322687,1062190966,1059635472)+W(5,1057132007,1043675118,1048482034,1055016957)+W(6,-1123432545,1010507424,-1097309632,1045294808)+W(7,-1098559779,1042399967,-1110816589,1026256390);sum2=W(0,-1094410020,-1073520568,-1076806727,1007932024)+W(1,-1129053184,-1126774165,1016297320,1026440100)+W(2,1040526244,-1119660436,1072065972,1074284701)+W(3,1045336233,-1114285571,1027498382,-1109537500)+W(4,1038890507,-1105577163,1038803075,-1096715819)+W(5,1048625414,-1106066396,1035667090,-1128514892)+W(6,-1120085021,1014274624,-1119386280,1032586275)+W(7,-1148623280,1033069015,-1113847206,1028560484);WS(1055250687,-1106970626); +sum1=W(0,1033119688,-1105149829,1043588463,-1098690473)+W(1,1051357302,-1111820283,1036109552,-1119401059)+W(2,1042190962,1055784922,1039447718,1060328969)+W(3,-1105877415,1050469874,-1123255849,1044861546)+W(4,-1096546392,-1103230410,-1093610964,-1094495495)+W(5,-1104321127,-1102978667,1034127854,-1097968467)+W(6,-1117586055,-1125652468,1035816565,-1103963220)+W(7,1047255951,-1108600424,-1157028943,1018776031);sum2=W(0,1038757267,-1111076574,1036628998,-1107631850)+W(1,1045867530,-1126199158,1034641438,1014361489)+W(2,1030211853,-1147844455,1002666567,-1080902130)+W(3,-1089131777,1067727291,1050167793,-1114432338)+W(4,1033894636,1039985174,-1092985165,-1084645521)+W(5,1069738325,-1096580382,-1100096489,-1100261485)+W(6,-1133782171,-1117005539,-1150866734,1049641986)+W(7,1051354211,-1100550183,-1104598763,1033251244);WS(1063662431,1022143153); +sum1=W(0,-1101665898,1044567949,-1113912242,1054985008)+W(1,-1089448239,1031890901,-1106608329,1016341751)+W(2,1028101088,-1100200043,-1110575390,-1090770105)+W(3,1042239925,1034205190,1041117720,1032506575)+W(4,1045825111,-1112112432,1011332621,1036354680)+W(5,1053092900,1020582213,-1122250931,1037368233)+W(6,-1107336877,1049135824,-1117269540,1043762234)+W(7,-1090665684,1045380738,-1108114694,1027635960);sum2=W(0,-1109621945,1044140338,1011973298,1054192939)+W(1,-1083519810,1050669158,1015542539,1007706050)+W(2,995625223,-1125871763,1059194369,-1085775903)+W(3,-1085690186,1055305067,-1115586758,1024423563)+W(4,1033690799,-1131300267,1019603073,-1105557074)+W(5,1066625604,-1093331249,1025625789,-1163078190)+W(6,-1127273987,1031533647,-1100093028,1049649037)+W(7,-1099380904,1041330252,-1109873113,1021669909);WS(1065395904,1046290614); +sum1=W(0,996799560,1015596034,-1100668872,-1100927819)+W(1,1043886221,1025322396,1035443240,-1114934548)+W(2,-1125542553,1043656950,1056396433,1054862894)+W(3,-1088911438,-1099487682,-1105531411,-1117673547)+W(4,1038203972,-1105153011,-1085640859,-1101762943)+W(5,1057024083,1036429768,1021072448,1035195023)+W(6,-1122586727,1036793959,1049715632,1035554923)+W(7,-1115152096,-1122121748,1039652277,1024299964);sum2=W(0,1029237671,-1133651707,-1114304490,-1114162505)+W(1,-1125875827,-1112015576,1015895733,1035088799)+W(2,1017509749,-1140172751,1030543605,-1092617066)+W(3,1051105475,1033357967,1011455075,-1105982664)+W(4,-1104176053,1038596873,1050264307,-1093179067)+W(5,1071302855,-1090684841,-1100815852,1003487558)+W(6,1032328729,1037378915,-1104642832,1049979232)+W(7,-1110244360,-1085540383,-1135016203,1015899853);WS(1058730335,1038095077); +sum1=W(0,1050009523,-1156396202,1045232946,-1123440788)+W(1,994853272,1029074928,-1116532263,1016043038)+W(2,-1090412329,1022785342,990514519,1051849503)+W(3,1050259497,1048747736,1040337077,1047238893)+W(4,-1116071407,-1112028282,1027669243,1025171300)+W(5,-1091444451,-1091116387,-1095024325,-1085293672)+W(6,-1120619710,1033123659,-1138222105,1042856679)+W(7,1043400402,1046148791,1031722640,1050565349);sum2=W(0,1046272294,-1119023958,-1106071503,-1097641458)+W(1,-1099339001,-1122591395,-1120322169,-1112624405)+W(2,1056160584,1047372879,1066704996,1062851774)+W(3,-1127558738,-1095719050,1012197993,-1094334166)+W(4,-1069609928,-1100807597,1063602974,1071319304)+W(5,-1123458905,1049925865,1037702687,1046841945)+W(6,-1086350256,1012350161,-1093103672,-1165704932)+W(7,-1099266547,1039176837,-1104052164,1043315186);WS(-1102208382,1082454872); +sum1=W(0,-1121527792,1019782131,-1111677734,1042764822)+W(1,-1098291428,-1109244559,-1122839755,1023050790)+W(2,-1097489215,-1109352802,-1089475261,-1094323164)+W(3,1057233791,1055571354,1036609181,1023873367)+W(4,1044710709,1043005718,1059136208,-1113184692)+W(5,-1102862820,-1113821821,1016630678,-1122283881)+W(6,1024559218,1025756170,-1098383546,1034230961)+W(7,-1121795355,1034138424,-1148370726,1021065311);sum2=W(0,1012975921,1033684352,-1119837718,1048900749)+W(1,-1088385914,-1106132930,-1107812043,1047279942)+W(2,-1113722375,-1113902527,1034379158,1065557700)+W(3,1033601684,-1078602486,1048231286,-1117907500)+W(4,-1109752074,-1108511603,1047596894,1065261424)+W(5,-1110433219,-1113936114,-1106600777,-1110420048)+W(6,1009270385,1034062718,-1096952633,1042274647)+W(7,-1110816087,1038223706,1037668398,-1111923151);WS(1055139903,1066543323); +sum1=W(0,-1113216706,1034160554,-1110997976,-1104052311)+W(1,-1130057219,-1100344024,-1109060119,-1102181302)+W(2,1025777755,-1106690282,1025857819,-1108040417)+W(3,1042814916,1058801014,1040801319,1061190298)+W(4,1062476912,1047449287,1040533578,-1088276389)+W(5,1043316038,-1096553156,1003175286,-1109923206)+W(6,-1094834883,-1115394087,-1100641176,-1109281747)+W(7,-1111790927,-1131081926,-1127882001,-1116502963);sum2=W(0,1032900543,1026043047,1011969739,1005946567)+W(1,-1104378201,-1106573410,-1149079854,-1098913457)+W(2,-1093611286,-1143136704,-1129502699,1065137024)+W(3,1034934846,1044311979,-1128312106,-1107526541)+W(4,-1093105706,-1104881087,1056641171,1062580590)+W(5,-1137732946,-1102271464,-1106196955,-1097055308)+W(6,-1103368978,996537094,-1097512177,1038772124)+W(7,-1108835309,1035638256,1028654910,-1144299515);WS(1037662203,-1095462961); +sum1=W(0,1051208476,1007151360,1047867778,-1120692693)+W(1,-1102286423,1029685138,-1117174983,998066935)+W(2,1054332722,1048962332,1056131053,1060311124)+W(3,1053179033,1057524976,1045179237,1053688986)+W(4,-1088537607,-1096098779,-1089718811,-1086623130)+W(5,-1088149909,-1093380227,-1094989189,-1094538289)+W(6,1009988859,-1120684294,1043868050,1008468855)+W(7,1024446024,1041242535,-1121112609,1022948968);sum2=W(0,-1075642964,-1078284587,-1077677369,-1086975712)+W(1,1050575143,-1109971278,1043550667,1046375822)+W(2,1064397427,1070403917,1072178178,1071930150)+W(3,-1093947328,-1119680819,-1134729809,-1094009133)+W(4,1042055631,1050515956,-1094922849,-1096417404)+W(5,-1094640520,1045435393,-1109099138,-1106076462)+W(6,1049259770,-1100572061,1038272909,-1110188613)+W(7,1033007627,-1109186235,1040318497,1038207101);WS(-1091974591,1028524890); +sum1=W(0,-1119527298,1034997099,-1099802012,1033463662)+W(1,-1090658116,1044419888,-1099353751,-1110855131)+W(2,1050666155,-1101120961,1057798952,-1146674958)+W(3,1048486316,1054164791,1033437822,1053708795)+W(4,-1104886813,-1100807815,-1099838668,1021707158)+W(5,1057612011,-1093871840,1029138830,-1104286795)+W(6,-1119869997,1044100139,-1103774309,-1112176434)+W(7,-1094617942,1036492177,-1113521820,1028051362);sum2=W(0,1029285075,-1113245689,1046869988,-1099734421)+W(1,1045806866,-1099048447,1040440310,-1129472848)+W(2,-1114745613,1037297246,-1113507597,1057852752)+W(3,1031538739,1019950674,1039903515,-1115367833)+W(4,1024121756,1034295695,-1081105309,1063764387)+W(5,-1093953622,1060684479,-1099720743,1051222485)+W(6,-1127985632,-1103172653,-1097344586,-1092930743)+W(7,1039548141,-1113791115,1024790472,-1106398082);WS(1058893599,-1078409713); +sum1=W(0,-1115244150,1036724056,-1098555735,1049246955)+W(1,1045222582,-1138283737,1044966206,-1115412967)+W(2,-1102829117,-1100240992,-1094663483,-1084866106)+W(3,-1085064800,-1093243506,-1093950047,-1095580366)+W(4,1039336887,1053376406,1053054383,1065100884)+W(5,1054590883,1056764679,1053059489,1050610273)+W(6,-1115623287,-1114512019,1041993169,1018575674)+W(7,-1114852275,-1108377677,-1118180448,-1122449691);sum2=W(0,-1130929736,1009552185,-1084383778,1050909748)+W(1,1049209322,-1096700837,1051369678,-1129474226)+W(2,-1101060123,-1090337753,1072779570,1053567468)+W(3,-1079161361,1057662166,-1097661058,-1112521942)+W(4,1045192083,1061442923,1050903982,-1089269841)+W(5,1029505799,-1094014597,1046387683,-1105984421)+W(6,-1105822172,-1103557108,-1106762492,-1117595750)+W(7,-1111371347,1025228376,-1138825972,1030887459);WS(-1109369595,1048740969); +sum1=W(0,1040995480,1030414773,-1118646413,1043594790)+W(1,-1129436350,1037121811,1030207412,1043560049)+W(2,1051718495,1050319297,1059003715,1046504696)+W(3,-1135436979,1043825845,1049475887,1058279379)+W(4,-1091711555,-1095167863,-1085356599,-1083562713)+W(5,-1096690237,-1098326935,-1120665100,-1098718953)+W(6,-1125552391,1032958437,1042985722,1045509569)+W(7,1023899916,1019546753,-1130219052,-1105013544);sum2=W(0,-1113177829,1043809265,-1095416462,1034071291)+W(1,-1120341831,1043900974,1020015593,-1119209873)+W(2,-1117552581,-1109343151,1052574118,1063553374)+W(3,1070912061,-1112203792,-1091338378,-1072794661)+W(4,-1100446453,1039662186,-1114145263,1053677817)+W(5,-1101063801,1042882834,-1094258913,1055602011)+W(6,1041583669,1009024316,-1118793923,1018689733)+W(7,1031195477,-1105538343,-1114748986,-1109237633);WS(-1093437503,1065718162); +sum1=W(0,1037550096,-1101135841,1044878747,-1107014286)+W(1,1042111087,1037051057,-1099961615,1041500301)+W(2,1049488055,1042594425,1049041945,1066142676)+W(3,-1100146203,1045825417,1040663590,-1119554198)+W(4,-1103061781,1046266118,-1087470164,-1106438298)+W(5,-1111606545,-1091131027,-1133427370,-1103590594)+W(6,-1114711965,-1097873069,1046063170,-1091362312)+W(7,1037494709,1040258368,-1109172298,1033770775);sum2=W(0,-1106488910,1026201604,1035711566,1060425407)+W(1,-1098764525,-1096618367,-1182808622,-1127820908)+W(2,-1123106758,-1113590739,-1084666863,1061776657)+W(3,1055047321,-1119175762,-1103500958,1041613778)+W(4,1050172947,-1092748399,-1097703384,-1099741350)+W(5,-1120322586,1050324229,1025620288,-1105222946)+W(6,-1124712996,1043391307,-1098783459,1048423650)+W(7,1041036039,-1099280352,1048645442,-1118590758);WS(1056660607,-1113798601); +sum1=W(0,-1115305597,-1101671294,1016801995,1039904137)+W(1,1037148876,1040453028,-1110559226,-1154296528)+W(2,1041913228,1008348404,1031963795,-1093680051)+W(3,-1089471492,1034024758,-1111400057,1031051312)+W(4,1012656821,998498191,-1102006873,1057450908)+W(5,1049874551,-1111681498,-1109457443,1036430914)+W(6,1026504084,-1151777337,1032505286,-1108358078)+W(7,1031920291,1043455038,-1129849213,-1125050675);sum2=W(0,1042939003,-1114796094,1044529628,-1124781020)+W(1,-1106748864,1016881133,-1108227590,1027959261)+W(2,1024638457,-1101207597,1027593065,-1097759574)+W(3,-1130307786,1033669310,1022409637,1019735589)+W(4,-1123927190,1042777565,-1098782283,1059165645)+W(5,1062760553,1017094385,-1160993898,-1125388747)+W(6,998901155,1022659417,1017512357,-1104939928)+W(7,-1098668376,-1089791762,-1106217568,-1115680109);WS(1066155712,1004288134); +sum1=W(0,1047132567,1029697589,1014062303,1041631965)+W(1,991515041,-1123217244,-1154741365,1030265807)+W(2,1049267618,1048612844,1055750611,1059093756)+W(3,1057479944,1056993158,1047138005,1055767146)+W(4,-1089062279,-1092380195,-1088453014,-1084647474)+W(5,-1091963789,-1088742789,-1098495965,-1086886676)+W(6,-1138510971,1046969501,1024451359,1049129552)+W(7,1040560290,1043007167,-1122630737,-1122583780);sum2=W(0,1011892235,-1111382628,1037768402,1032283234)+W(1,-1114728106,1009460031,-1112526532,1030203700)+W(2,1040858440,-1103755803,-1125277089,-1084511950)+W(3,-1090323786,-1159433014,1053584755,1052886875)+W(4,-1127819845,-1109875610,-1096621612,-1071556311)+W(5,-1071973667,-1099343032,1076043190,1079690007)+W(6,1010964983,-1106716388,1032593498,1040462902)+W(7,-1100404332,1040394500,1007208771,1051792925);WS(-1086041375,1049976369); +sum1=W(0,-1125608345,1025261033,1032012444,1046732297)+W(1,-1114869141,1036081274,1036645660,-1119140736)+W(2,-1096855193,-1097190986,-1086237883,-1083643033)+W(3,-1093631755,-1095059844,-1132519191,-1095180224)+W(4,1037693680,1051176741,1059434222,1062665585)+W(5,1052924527,1052562329,1041010310,1048775023)+W(6,1048607039,1030637974,1026121224,-1103554484)+W(7,-1110078044,-1109004102,1035782593,-1118200972);sum2=W(0,1029601330,-1144560396,1032763954,-1115106220)+W(1,-1111454114,-1121335223,-1109520646,1021645795)+W(2,-1115199196,1026958814,1032369083,-1106065675)+W(3,1042189754,1029124674,1022674491,1026253022)+W(4,-1096390757,-1100298556,1076866217,-1108884178)+W(5,-1116766618,1025985538,-1115268590,1011072742)+W(6,-1079547524,-1081990625,1041174181,1041059708)+W(7,1024602232,-1127158528,1007020790,1003377428);WS(-1111980027,1060626277); +sum1=W(0,1023621139,1032179266,1030954414,1037158526)+W(1,1036765152,1036680203,-1146606447,-1119312598)+W(2,-1102882983,-1092055397,-1089823274,-1095093232)+W(3,-1090725010,-1139402199,-1116432156,-1108873773)+W(4,1044706422,1043529367,1057090380,1064981515)+W(5,1047303429,1042557255,1028925358,1041638915)+W(6,1028429765,-1113080214,-1101761443,-1098683411)+W(7,1033439719,1030304674,-1104492078,-1112219839);sum2=W(0,-1107703976,1046455264,-1093472442,1048924762)+W(1,-1097201227,1049435664,-1106239872,-1119402461)+W(2,1045439570,-1090239140,1028879562,1064195571)+W(3,1016778259,1027385222,1028121257,-1105208479)+W(4,1032849260,-1096329612,1030082819,1036056807)+W(5,1059898488,-1091675747,1053658286,-1117889585)+W(6,-1122224669,1035962913,-1098806672,1041148911)+W(7,-1091828205,1041687668,-1098243254,-1104565052);WS(1062681599,1040842201); +sum1=W(0,-1108789463,-1115361429,1048981817,-1092926921)+W(1,1054602509,1029602904,-1117967305,1025443329)+W(2,-1104300209,1050445194,-1089127203,1063952639)+W(3,1043197406,-1106041808,1039191171,-1114238594)+W(4,1042117608,-1097788769,1032428200,1049970971)+W(5,-1088418847,1049956321,-1112931212,-1123051255)+W(6,-1118282400,-1114475276,1049574381,-1090427073)+W(7,1045778638,-1112080775,-1097758566,1033393295);sum2=W(0,1038735267,-1100048068,-1115453090,-1110884051)+W(1,-1090743949,-1153955669,-1112598570,-1103797208)+W(2,-1126315713,1043050536,1053683464,1058830244)+W(3,-1100540415,1037942519,-1098889179,1040830228)+W(4,-1111714958,-1115313021,1046662525,1061563017)+W(5,1052621807,-1104363663,-1118760183,1007755797)+W(6,-1111656758,-1115683900,-1093358619,-1105966973)+W(7,1037413595,-1101879362,1044482581,-1098877089);WS(1062776447,1069975051); +sum1=W(0,-1130308944,-1112835078,-1113144126,-1094805377)+W(1,-1098008538,-1114270939,-1117364667,-1117827459)+W(2,1036893844,-1114635034,1050058840,1071110128)+W(3,1061455014,1044746969,1018226642,1049407081)+W(4,-1104137265,-1098478453,-1104852259,1041368142)+W(5,-1095764665,-1109080309,-1103882015,-1120810969)+W(6,-1108240801,1029922778,-1111877761,-1088740684)+W(7,-1112520550,-1119589855,-1121527653,-1103102129);sum2=W(0,1028834725,-1110297977,1035091068,1034973002)+W(1,-1110025415,-1154986018,-1120031976,1030684381)+W(2,-1113117380,1026197871,-1099362318,1077416661)+W(3,1050456944,-1112814852,1027999489,1016280910)+W(4,1037052904,996515330,1043940575,-1069860026)+W(5,969317772,1021906202,-1115577362,1013156184)+W(6,-1113210551,1032917698,-1106692355,-1103487680)+W(7,1034055293,1006658352,1018186436,-1124181989);WS(-1082599007,-1084302409); +sum1=W(0,-1127095446,1011517278,-1110892475,1024933540)+W(1,-1111586789,1039136849,-1108207315,1049617952)+W(2,1056665680,1052281350,1058821842,1061132051)+W(3,1054434479,1052720805,1043783817,-1159632952)+W(4,-1087212124,-1096260148,-1085877656,-1087957451)+W(5,-1089270826,-1102718609,-1106422582,-1106709957)+W(6,1035858193,-1128228554,1043137767,1023709101)+W(7,1037286635,-1111842501,-1130056576,-1115207149);sum2=W(0,1048459811,1071226724,1075494724,1074401127)+W(1,1044864951,-1077687291,-1072311776,-1066953112)+W(2,-1095160239,1065850492,-1121381976,-1099027008)+W(3,1031151008,1057399482,1045213405,-1095971461)+W(4,1026509768,1043007163,1043168485,-1093896652)+W(5,1012395574,1019701051,-1109946848,1027278540)+W(6,-1123792544,-1127547903,1027169380,-1107011198)+W(7,1037067951,1021690579,-1124089088,-1166810856);WS(-1118215158,-1130722305); +sum1=W(0,1039784439,-1119983743,1027132090,-1101267710)+W(1,-1106141431,-1119840977,-1131926580,-1158357571)+W(2,1045520358,1040649785,-1126797149,1070303194)+W(3,1059129261,1056727436,1040938982,1050582583)+W(4,-1094865274,-1098235299,-1085881139,-1106608186)+W(5,-1088850304,-1093134907,-1098615277,-1104503154)+W(6,966095017,-1166742058,1023429181,-1127173569)+W(7,-1112024885,1030946302,-1160489077,-1106263629);sum2=W(0,-1122933952,1029904221,-1104768174,1044174015)+W(1,-1122786276,1032455763,-1118952582,-1120585334)+W(2,1043676402,-1092335308,1050667883,-1106663265)+W(3,1035773679,1033986578,-1123822916,1030027555)+W(4,-1122578476,-1096734640,-1067932755,1078656606)+W(5,1056344301,-1106732625,1033374173,-1116084330)+W(6,1034421913,-1121365342,-1103315560,1049347404)+W(7,1027752905,-1114333025,1025409455,-1129253837);WS(-1112296443,-1083191171); +sum1=W(0,1030599873,-1102688301,1038739494,-1091052013)+W(1,-1120252367,-1118018759,-1105737735,1036799090)+W(2,1049894985,1052276159,1055519004,1061107959)+W(3,1059731464,1052059899,1050382861,1050879021)+W(4,-1100141489,-1095734081,1044438853,-1078809864)+W(5,-1100785926,-1095185489,-1092887220,-1113977245)+W(6,-1124642344,-1114229790,1039505712,-1108354137)+W(7,1037196526,-1129006466,1034647259,-1123394945);sum2=W(0,-1134366274,1040286055,-1103185345,-1089934078)+W(1,-1104699884,-1135474394,1039368980,984214720)+W(2,1032198029,-1093721101,1064064153,1038410574)+W(3,1053501328,1053898256,-1088730122,1045555557)+W(4,-1102569648,1059013351,-1076328416,1075980540)+W(5,-1081344728,-1093863519,1061819985,-1089334779)+W(6,-1113629492,-1099320981,1062572765,-1079072621)+W(7,1057269325,1039501040,-1089994189,1050815727);WS(1051639487,-1077445112); +sum1=W(0,1023584208,1019039018,1046978951,-1114024277)+W(1,1042440780,1036430651,1019910405,1017051223)+W(2,-1087680633,-1097242582,-1087958558,-1084584703)+W(3,-1089578188,-1090497932,-1100840226,-1089989738)+W(4,1058381481,1049175941,1059595066,1058705186)+W(5,1060807824,1057261083,1047705823,1052092149)+W(6,1019116206,-1110819225,1041321753,-1110784681)+W(7,-1120949436,-1111841304,-1108976675,1037750032);sum2=W(0,-1103483317,-1103949071,1036613850,-1096200772)+W(1,-1094761445,-1090478844,-1091384835,1024429003)+W(2,1043027417,1024633771,1050158855,-1096718424)+W(3,1057240079,1037855330,1036780676,-1103545669)+W(4,1043672886,-1105891820,-1113242263,1053817256)+W(5,1043447632,1053166295,1043680942,1034776200)+W(6,-1126025102,-1101612494,1051748473,-1144187697)+W(7,-1129269697,-1114569970,-1102484885,1044262941);WS(-1102141694,1066754929); +sum1=W(0,1024767465,1028037205,-1148374821,996156698)+W(1,1034886379,1011245536,1017269224,1023537404)+W(2,-1097150806,-1105574095,-1092607882,-1086231302)+W(3,-1085570014,-1090150659,-1093685286,-1100403588)+W(4,-1121670572,1021251426,1053426631,1064662112)+W(5,1060264850,1058905527,1047037217,1048736520)+W(6,1047316983,-1123186307,1027553675,1037457517)+W(7,-1103359865,1031219256,-1108923303,1039125668);sum2=W(0,-1127568330,1031019669,1013355589,-1123247753)+W(1,-1131101666,-1126559289,-1128009624,-1122774763)+W(2,1005444026,-1121000217,-1135062981,-1099801823)+W(3,1044314830,1052295626,-1112001042,1018744598)+W(4,-1099850392,1052911126,1040255711,-1120914990)+W(5,1055431083,-1112663055,1029993103,-1105142519)+W(6,-1069105992,-1075891845,1052106082,1078854269)+W(7,1061745892,-1097592921,1033712114,1037317546);WS(-1092827839,1049601702); +sum1=W(0,-1102748075,1048973336,-1101661842,1035794226)+W(1,1035295380,951002293,1028700102,1019995195)+W(2,-1114726817,-1100496851,1056141590,-1092935501)+W(3,-1090189951,-1127762491,-1107070641,-1116434785)+W(4,1043768535,1037939345,-1092531310,1048278549)+W(5,1059458263,-1107678146,1040739973,-1103464157)+W(6,1001409895,1025584388,1043222609,1028885900)+W(7,-1097823129,1046084402,1018269854,1033486885);sum2=W(0,1047648616,1049954711,-1086499077,1036131868)+W(1,1021844703,-1144052469,1036766656,-1114852932)+W(2,-1099866854,-1087014785,1059941103,1059724034)+W(3,-1104253425,-1116739540,-1123734224,-1119117496)+W(4,1040911688,-1127547935,1006897087,-1147690453)+W(5,-1094365093,1046092804,-1117733622,1045874226)+W(6,-1104812914,1032774583,-1118719608,-1112213150)+W(7,1020986307,1037506252,1020773629,-1120467144);WS(1062974879,-1132215613); +sum1=W(0,-1181157822,1033235448,-1120645311,1032693326)+W(1,1014937094,1012846527,1029466479,1027727527)+W(2,-1096960767,-1103300066,-1098273063,-1084817024)+W(3,-1086871647,-1093312183,-1094276984,-1099477807)+W(4,1047884458,1024586364,1040665968,1065496294)+W(5,1061273423,1057013666,1048826162,1049029078)+W(6,1046591191,1028472621,1027902609,-1105457745)+W(7,-1099580452,-1121668195,-1123904424,1033797162);sum2=W(0,-1120861164,1023555157,-1114715157,1039733942)+W(1,-1111876903,-1121732899,1028106223,-1136150442)+W(2,-1114727130,-1127207629,1049207316,-1100512081)+W(3,1044392032,-1113639142,-1107243417,1035475508)+W(4,1051943787,1021361633,-1100379929,1049204344)+W(5,1029680046,1040523175,-1113800818,1017564481)+W(6,1073213517,1067585393,-1095215585,-1072102567)+W(7,-1085077901,1017790060,-1115100698,-1111101803);WS(1038961915,-1122010239); +sum1=W(0,1004620105,-1113106351,-1112775210,-1125534724)+W(1,-1137271196,-1126589322,1026657556,-1119328748)+W(2,1048595660,1052250558,1058549636,1061573929)+W(3,1057522353,1048822826,1040718305,1048641524)+W(4,-1099376311,-1096833644,-1088891129,-1086812373)+W(5,-1093214133,-1095914356,-1105329661,-1103878453)+W(6,-1116246236,1027857155,1036452944,1040782707)+W(7,1018281129,-1113857108,1010557432,-1106455448);sum2=W(0,-1116580406,1024927837,-1129828931,-1115420496)+W(1,1011185933,-1123989928,-1146345634,-1132229127)+W(2,1027562258,-1162615720,1047581344,-1109513493)+W(3,1038795182,-1118168090,1030671240,1038841827)+W(4,1055923683,-1098456431,-1107918233,-1093462217)+W(5,1043574176,1042713369,-1118222006,1029869485)+W(6,1077914250,1064911462,-1076359256,-1072190840)+W(7,1023726209,-1114062645,-1119388396,-1111766417);WS(1058520191,-1103814144); +sum1=W(0,1017038583,1027734728,1045254802,-1107262661)+W(1,-1105442246,1031430877,-1126950445,1024536063)+W(2,-1136595532,1016280509,-1109207324,1062837304)+W(3,1058887264,1040464732,1030731221,1029953906)+W(4,-1118053743,-1128563239,1044218638,-1096672636)+W(5,-1085861660,-1103880229,-1107144426,-1145128486)+W(6,1027978638,-1097122909,-1104843131,1033499055)+W(7,1025985831,1030848699,-1131329888,-1109411553);sum2=W(0,1034702970,-1125598974,-1114553387,1027536136)+W(1,-1115924578,1035052048,-1132148431,1025333585)+W(2,-1176551015,-1168898884,1041527709,-1101298022)+W(3,1036785061,-1106074654,1030578400,1024211757)+W(4,1007931783,-1090251816,1067159008,1043575777)+W(5,1028484706,-1104273626,-1148595850,-1114791455)+W(6,-1110263367,-1089294892,-1085860022,1061443693)+W(7,-1099982080,1042454777,1027614804,-1123742626);WS(1061983711,-1098811342); +sum1=W(0,1012577103,-1126897281,-1105225996,1024253613)+W(1,1053413654,-1137207095,1042674340,-1109172700)+W(2,1051270689,1046420622,1058683087,1058369439)+W(3,-1097514912,1052214131,-1105013139,1050302029)+W(4,-1108510228,-1106195699,-1088411008,-1089548804)+W(5,-1118840551,-1096732498,-1109015536,-1103000311)+W(6,-1107438075,-1107699151,1036711743,1026749110)+W(7,-1116819519,1024709491,-1140694819,-1154413112);sum2=W(0,1018267361,-1110181012,-1146613180,1038715850)+W(1,1024296823,1036970119,1022003098,-1124702635)+W(2,1036503366,1041828239,1050199247,-1085432172)+W(3,1038941240,-1123003584,1013422114,1021003447)+W(4,-1126101987,-1116783782,1071387060,-1080125372)+W(5,-1093021050,-1114155200,-1149124484,-1143100940)+W(6,-1099489904,-1102883314,1052019906,1047113133)+W(7,1035497971,-1112911441,-1119585859,-1131838862);WS(1061194367,-1092415693); +sum1=W(0,1036390333,-1126263470,1025725222,1043857157)+W(1,1035642972,1044002978,998479342,1045699251)+W(2,1051201914,1053058480,1054554894,1047231542)+W(3,1057662314,1050872286,1045022613,1049392206)+W(4,-1104881972,-1172862130,-1093268199,-1076465248)+W(5,-1087389459,-1093150623,-1111846627,-1095910796)+W(6,-1115149537,1030237668,1021350042,1036659934)+W(7,1039247491,1026362746,1017611295,1018350484);sum2=W(0,-1129487679,1042193002,-1108339354,-1095819059)+W(1,1041127864,-1103499785,1034257999,-1118637794)+W(2,1018376667,-1087595144,1054016721,1063707892)+W(3,1036978867,-1103064253,-1103241982,-1112191100)+W(4,-1097777178,-1098446206,-1106280983,1068295659)+W(5,1052165187,-1110264861,-1135489703,-1107248782)+W(6,-1117386048,-1106566736,-1108034123,-1104582586)+W(7,-1102127104,1036459063,-1104779766,996655259);WS(-1094699455,1066131816); +sum1=W(0,1049793485,1029004921,1050253240,1043166228)+W(1,1029407446,1041612884,1035949114,1012128942)+W(2,-1081848423,-1088299640,-1084057276,-1084821317)+W(3,-1084563631,-1104203619,-1099802604,-1096241030)+W(4,1059460685,1048637514,1060796209,1059873140)+W(5,1055943200,1047596309,1050483936,-1105809528)+W(6,1042128105,-1139594888,1026023615,1020508084)+W(7,-1125172935,1048504406,-1115227886,1051471881);sum2=W(0,1060779432,-1118034101,-1104519356,-1119327164)+W(1,-1101970936,-1106905521,1002331293,-1082144605)+W(2,1051802488,-1097493973,1057101737,1060027297)+W(3,1044004337,1057962293,-1098665363,-1086721729)+W(4,-1086062785,998397725,-1092333837,1066349798)+W(5,979464170,-1133317807,1046794021,1070824403)+W(6,-1114203174,-1112558489,-1099984065,-1091352583)+W(7,-1094257268,-1102635709,-1094504499,-1114333706);WS(-1074268304,1079667699); +sum1=W(0,-1107189325,1027760991,-1136873402,-1113641470)+W(1,1031162561,1033891144,-1126712892,1035917755)+W(2,-1101508903,-1090199334,-1090363950,-1087996124)+W(3,-1083961527,-1096484091,-1098094611,-1093567651)+W(4,1054199089,1054303683,1062422475,1067750847)+W(5,-1113534839,1052689284,1031942551,1045977323)+W(6,1035260131,-1107632246,1005391451,-1101800081)+W(7,1034855959,1046337921,-1150999418,1042992013);sum2=W(0,-1109104193,-1121805095,1045986101,1048674700)+W(1,-1091901802,1048446997,-1113936425,1027039508)+W(2,-1100757902,1045040397,1080470972,-1080397282)+W(3,-1070026310,1054845861,-1109557127,-1113850952)+W(4,1040683096,-1125556022,1049174250,-1095181876)+W(5,-1122013099,-1110936398,1038355211,-1103996340)+W(6,-1125509919,1026278254,-1112163985,1050380898)+W(7,-1131668233,1033243862,-1144282357,1036778147);WS(-1085238047,-1082053459); +sum1=W(0,-1106787663,-1138285833,-1108632776,-1094657608)+W(1,-1101713608,1037328759,-1111697288,-1109379868)+W(2,1039996894,1010512412,1053399812,1045540841)+W(3,1051732998,1044326914,976543556,1057105320)+W(4,1048926451,-1119213276,-1130975030,1010216242)+W(5,1034301867,1025236158,-1128978334,-1109745879)+W(6,-1104330662,-1128637723,-1108017347,-1096910157)+W(7,-1101323868,1015829447,-1111437732,-1108664266);sum2=W(0,-1124623913,1032956443,1027185909,-1101336864)+W(1,-1094263361,1029736763,-1112090109,1039412150)+W(2,1025825838,-1119700813,1032253087,1046009611)+W(3,1060071017,-1108021530,-1111711122,-1092338318)+W(4,1042257288,-1135835500,1053804277,1048892371)+W(5,1036906607,-1101254223,-1115069322,-1114145526)+W(6,1021162350,-1114452863,-1109212782,-1102267892)+W(7,-1105958464,1037505372,996911332,-1125671849);WS(1060867039,-1136390908); +sum1=W(0,-1127355032,1034805910,1035163860,1029669941)+W(1,1042066222,1021674692,1040577786,1021261983)+W(2,-1085412379,-1094311080,-1093352008,-1084691216)+W(3,-1088428116,-1088125293,-1096644095,-1091872390)+W(4,1049179798,1049208039,1060583566,1063283264)+W(5,1058522472,1055147879,1050065089,1041474713)+W(6,1047055468,-1108149971,1036232649,-1103012671)+W(7,1024178471,1026233836,-1126656770,1049799631);sum2=W(0,1035672114,-1098827199,1049155846,1035178389)+W(1,-1107113032,-1144855824,1035201737,-1127184278)+W(2,-1063752230,-1085747691,1077059336,1075347264)+W(3,1056308660,1034654874,-1121418857,1014935340)+W(4,-1093487673,1041803367,1041184099,-1096808218)+W(5,-1129382302,-1119639669,-1122522987,1011408026)+W(6,1013645866,1034418818,-1106855503,1049524211)+W(7,-1122362105,1030856901,1027103888,-1115004359);WS(-1090674303,-1100343233); +sum1=W(0,-1120232797,1040422273,1026412864,-1138867958)+W(1,1033879777,1033565615,1019476032,988102399)+W(2,-1091881416,-1094093465,-1085938046,-1089254334)+W(3,-1089797193,-1085407367,-1095206984,-1105032111)+W(4,1051419109,1052500896,1061270771,1067891162)+W(5,1060067146,1016645247,1041715172,1036835111)+W(6,1036288004,1023553551,-1112170192,-1115349187)+W(7,-1112030904,998486818,1027103050,1040345019);sum2=W(0,1040618154,-1114130867,-1122148687,1044229537)+W(1,-1110193301,-1097134960,1037070268,1037459780)+W(2,-1101425729,1043012943,1049717343,1078734719)+W(3,1058416067,-1066172228,-1087270128,1051160418)+W(4,1012698939,-1135257643,1047429512,1020747990)+W(5,1045573328,-1105653505,-1098650023,1029335953)+W(6,-1121139419,1033653009,1038119907,-1131387750)+W(7,-1162837210,-1124290574,-1142454518,-1119987003);WS(-1083751903,-1076119444); +sum1=W(0,-1115245576,-1106029427,-1102084379,-1113929101)+W(1,-1115339007,1029734646,-1110488366,-1147960477)+W(2,1056842307,1054460828,1062160243,1061549380)+W(3,1051628466,1034628298,1040780998,1027250487)+W(4,-1093345814,-1096614035,-1087844584,-1088621915)+W(5,-1095344475,1039622221,1023285463,1052549785)+W(6,-1108216057,-1118873130,1032187759,-1118044066)+W(7,-1125935063,-1114025640,-1103117229,-1101242061);sum2=W(0,-1142266798,-1105635988,-1108468488,-1104742183)+W(1,1004562934,-1111519795,1009402627,1007186587)+W(2,1041896729,-1133541327,1052249127,1059101684)+W(3,-1116644500,1022626513,1036478091,-1114250343)+W(4,-1109207785,-1119640286,-1132044399,1057719514)+W(5,1049160976,1040987637,-1103527129,-1094402391)+W(6,-1116438034,-1143926222,-1116983273,-1107716245)+W(7,1036001553,-1093640310,-1115139384,-1102449905);WS(1032624635,1033521535); +sum1=W(0,-1131553039,-1117491096,-1112834618,1049918570)+W(1,1045795365,1016822387,1035361729,-1113168565)+W(2,-1098906814,-1100587359,-1081513385,-1078593782)+W(3,-1105649745,-1092053629,-1096260814,-1095243062)+W(4,1051615627,1047570260,1060987922,1043587024)+W(5,1056209202,1059398075,1049440024,1051600524)+W(6,1045470610,1025984961,1036113314,1040182861)+W(7,1012071435,1032631435,1023888652,1034850724);sum2=W(0,-1111826236,-1099208280,1026789677,-1106561040)+W(1,-1093448876,1046407154,-1102666308,1042570396)+W(2,-1092384767,1027875109,1064661507,1062273543)+W(3,-1087164405,-1108191451,1044380270,-1104593420)+W(4,-1095745094,-1100947515,-1112642295,1068550638)+W(5,-1104229197,-1106740917,-1103404028,-1105841536)+W(6,1034661269,1048636172,-1098451609,-1099981129)+W(7,-1118651857,1049739863,-1095995165,1048025970);WS(-1085606847,1061985400); +sum1=W(0,-1108997980,-1117164584,1031768707,-1103105924)+W(1,1041900981,-1110420181,1037113665,1014163116)+W(2,-1089905075,-1114895517,-1095264598,-1077801587)+W(3,-1097956992,-1088999487,-1098379486,-1096151518)+W(4,1057688104,1056544190,1062390314,1055481056)+W(5,1062127874,1051900674,1048102065,1057425872)+W(6,1040581229,-1114811305,-1107526493,-1110202349)+W(7,-1118208771,-1108027100,1024450541,1041210774);sum2=W(0,1025785873,1048912334,-1096464036,1056133856)+W(1,-1104154812,-1121968309,1033410161,1015120151)+W(2,1048760593,-1090084783,-1114768213,1066763200)+W(3,-1086306359,1058187354,-1113492694,-1128581905)+W(4,1035955606,-1119218892,1007739746,1064934573)+W(5,-1089946445,1050702067,1025685973,-1102128709)+W(6,-1126760968,1008603006,-1094704139,-1080670875)+W(7,1031309677,-1125625514,-1109240237,1039335694);WS(-1090966143,-1078936607); +sum1=W(0,-1116393227,-1108278025,1051625062,-1105522375)+W(1,1058727904,-1091195697,1052016408,-1109728971)+W(2,-1086961670,-1108945587,-1086695325,-1081986687)+W(3,-1089148367,-1086453117,-1092689140,-1091172115)+W(4,1058706816,1041859343,1060094467,1059190367)+W(5,1061098519,1055062080,1056115606,1058930855)+W(6,-1116819366,1035952359,1041797992,-1104043025)+W(7,1053094890,-1093101306,1015960496,1034498693);sum2=W(0,1023528661,-1119417071,-1105978590,1009798795)+W(1,1040834561,-1111364082,1041397121,1033368796)+W(2,-1118025227,1050920275,-1112399565,-1098493686)+W(3,1036263434,-1124489419,1048582480,-1089345484)+W(4,1075422545,1065042273,1069638520,1067662601)+W(5,-1093932676,-1079439326,-1078082886,-1070108577)+W(6,-1073269716,-1077701631,-1078616397,-1083676116)+W(7,1044144047,1070390370,1068400636,1077727906);WS(-1079921856,1049308945); +sum1=W(0,1030068962,-1133949626,1050882798,1018623990)+W(1,-1106924392,-1146454049,-1116987117,1040905769)+W(2,-1165865787,-1118082277,1053008345,-1094507016)+W(3,1052481994,1043504665,1047635255,1026870489)+W(4,-1187780005,-1108803021,1038634079,-1106873963)+W(5,-1087778738,-1101591143,-1101174683,-1110197734)+W(6,1025440517,-1111921110,-1120535059,-1104818073)+W(7,1046575523,1041667424,1031519031,1031554658);sum2=W(0,-1116556974,-1095066961,-1100395256,1050308919)+W(1,1040792410,1032406727,1011901446,-1141998384)+W(2,1059176005,1038856572,-1076691076,1055715442)+W(3,1046498927,-1123959066,1028959950,1032868606)+W(4,-1096412953,1050790436,1058179896,-1097771226)+W(5,1039711359,-1106160519,1018212767,1038360912)+W(6,-1114011261,-1173649795,1024138419,1040413046)+W(7,-1106323994,1033840078,-1127468978,-1107910389);WS(1060842367,-1123947436); +sum1=W(0,1024730985,1023159627,-1105241169,1017803651)+W(1,1037913699,1035962309,1028045772,1032728670)+W(2,1048950736,1047784339,1057388094,1060112037)+W(3,1062491953,1057656339,-1114528913,997860858)+W(4,-1097448124,-1098772880,-1087773444,-1085451727)+W(5,-1088044111,-1089872870,-1102522557,-1103124285)+W(6,-1122548355,1026072115,1037590622,1037652837)+W(7,1034810634,1033785172,1008900343,-1114288296);sum2=W(0,1026131421,-1112740722,1046858645,1032928238)+W(1,1042166107,1040344552,-1082879617,-1091819295)+W(2,1001103237,-1121600279,-1108221277,-1097923247)+W(3,1069212508,1057336110,-1095628134,-1107037379)+W(4,-1133854939,1038637096,1037424280,-1103185020)+W(5,-1120290433,1019342369,1039461314,-1122429445)+W(6,-1114822986,-1108393699,1029862733,-1101308237)+W(7,1036213344,-1145606165,-1111520861,1034167562);WS(1038606587,1058047160); +sum1=W(0,1026865207,1042118304,1051307036,1033639368)+W(1,1046742309,-1109598961,1028927539,1015037525)+W(2,-1095018974,-1093024127,-1082724754,-1100730470)+W(3,1036658562,1040951763,-1113143704,-1098528366)+W(4,1044423619,1048945010,1054092644,-1097872036)+W(5,-1091674216,1033100505,1030352835,1047837568)+W(6,-1136300775,-1117800769,1005722288,1044405134)+W(7,1047528601,1044812414,1032954286,1044220906);sum2=W(0,1050657429,-1103301852,1060573163,-1091436731)+W(1,-1104427284,-1097267636,1038196249,-1107511544)+W(2,1045860939,1052242374,-1100974944,1066745360)+W(3,-1079344782,-1113016512,-1119497008,-1113648424)+W(4,-1111592920,1013554208,-1111727364,1055083328)+W(5,-1098647652,1034990326,-1110499846,1042188938)+W(6,-1103122208,-1106328874,1015168980,-1113723980)+W(7,1051192034,1034643320,-1122594772,-1140986496);WS(-1095257599,1052962039); +sum1=W(0,-1106746181,1031300369,1046667354,1037361867)+W(1,1040829967,-1128966365,1034540700,-1115420664)+W(2,-1097695335,-1111219488,-1083536631,-1088861218)+W(3,-1107201338,-1115618056,-1117058422,-1138753100)+W(4,1053309708,1042046133,1060606673,1053570633)+W(5,-1101583222,1033575580,1029127944,1041019129)+W(6,1036635571,1032102291,-1110849586,-1103814096)+W(7,-1130665360,1023220920,1009452933,1041468947);sum2=W(0,-1137205193,-1121249932,-1137006201,-1101149788)+W(1,1034796937,-1115985020,-1140489533,1026538132)+W(2,-1089705070,1025195792,1049206515,1054529493)+W(3,1039074115,1050074620,-1104546681,-1103055048)+W(4,-1116057142,1014073009,1040872535,1044729510)+W(5,1024555690,-1108168105,-1105229574,-1093226929)+W(6,-1106134583,-1131583764,1023734245,1030258377)+W(7,1045578999,1041497164,-1131316168,1036128894);WS(1058062751,-1100017341); +sum1=W(0,-1129599006,1020928695,-1098371705,-1111175932)+W(1,-1108928286,-1108487635,1028685770,-1134533769)+W(2,1055064995,1054737968,1061839865,1057524464)+W(3,1062722401,1039434185,1053936411,1054765971)+W(4,-1094744478,-1108714620,-1089137095,-1081607655)+W(5,-1111400813,-1089739654,1037008853,-1094983833)+W(6,-1110864465,1035506764,-1103907470,-1115102560)+W(7,1038105413,-1103382940,1038153674,-1101904010);sum2=W(0,1046625968,-1114205611,-1097342682,-1079666171)+W(1,1041595755,977545170,-1106070846,-1145403458)+W(2,1034733544,-1100522159,1034693600,1066071967)+W(3,-1087077400,1062799024,-1097179722,1015933409)+W(4,-1147999170,-1093312378,1057288295,1059803421)+W(5,-1088579916,1057064650,-1086854504,1055355590)+W(6,1026537136,-1103988998,1049229753,-1114956972)+W(7,-1104980683,1050850828,997711860,-1115357129);WS(1033636603,-1075190676); +sum1=W(0,1030520392,-1125697208,-1114269946,-1109653337)+W(1,-1102211630,1032435172,-1120127764,996293820)+W(2,1051253486,1043969999,1058583983,1064791929)+W(3,1057642082,1055881859,1033241689,1053053914)+W(4,-1096251285,-1100430004,-1085953223,-1093290764)+W(5,-1088005167,-1098086422,-1102333361,-1119839106)+W(6,-1117233131,-1122877346,1036037681,-1109909101)+W(7,-1123582788,1029223000,-1125435099,-1103406294);sum2=W(0,-1120200303,1024626781,1013431061,-1124733431)+W(1,1027814217,999438554,-1116912567,1007930813)+W(2,-1113787644,1041562727,-1114475538,-1112371618)+W(3,1032748777,-1098117165,1042886038,-1140542509)+W(4,-1109535466,-1106166077,1029531851,1051805575)+W(5,1061661699,-1114245048,1039886302,-1093997696)+W(6,1041916719,1028143351,-1097688999,1068535590)+W(7,1074776935,1029048009,-1076933565,-1072079702);WS(1051996799,1040628126); +sum1=W(0,-1106876926,1042171100,1014013938,1040804174)+W(1,1038633599,1024260165,1032103150,-1111941370)+W(2,-1096999331,-1106536569,-1087433914,-1079279688)+W(3,-1085040172,-1090750082,-1096245875,-1091794355)+W(4,1064227732,1056769919,1057736892,1052514885)+W(5,1059334684,1058371760,1051111478,1050507101)+W(6,1032518006,-1132737450,-1121739327,1035728257)+W(7,-1115112214,-1126170017,-1129820331,1036168684);sum2=W(0,-1097197656,1040517176,-1107105879,1050425804)+W(1,-1108102513,1044838414,1026907274,978890108)+W(2,-1105938617,-1119182790,1048788314,1048225474)+W(3,1050055380,-1097162220,1028263310,1043193320)+W(4,-1063141508,-1072247475,1073986693,1082212097)+W(5,1063649950,-1108483496,1040597170,-1096883524)+W(6,1047663602,-1106333570,1017343300,1014706728)+W(7,1023560998,-1105252179,1016727612,1025416282);WS(-1079662656,1075711984); +sum1=W(0,-1136749190,-1108214827,-1112256994,-1102094902)+W(1,1019461885,-1113236619,-1115387518,1015637672)+W(2,1054381451,1049467004,1060357369,1064079536)+W(3,1058102849,1050217386,1046694646,1053154499)+W(4,-1099895821,-1104318006,-1094055613,-1088977984)+W(5,-1094018397,-1093377643,-1102869707,-1097489705)+W(6,-1111920714,-1124862997,-1099490085,-1093653775)+W(7,1047054555,1026036560,-1122648846,-1117787456);sum2=W(0,1021596406,1027700788,1031902674,1035450862)+W(1,-1146279384,1036068426,-1108044351,1030087008)+W(2,-1120307380,1049653321,-1100871897,1054975194)+W(3,-1106853601,1042197470,1034125536,-1133477273)+W(4,1037868882,1038499992,1074972319,1073269037)+W(5,992333684,1032586692,-1129244749,1010404410)+W(6,-1094559059,-1099826066,-1070411479,-1076192259)+W(7,1024067187,-1107184127,1032061183,-1104237818);WS(-1121360374,-1077155152); +sum1=W(0,-1105583845,1042009047,-1135496901,1057317824)+W(1,1037107234,1028773828,1042777544,-1116736729)+W(2,-1092428892,-1091586093,-1087526962,-1088356100)+W(3,-1084718223,-1086275726,-1096882940,-1086839898)+W(4,1053987635,1057449542,1037542524,1067018703)+W(5,1053143538,1051794540,1049337758,1050512766)+W(6,1036329976,1039912928,-1114441548,1035631092)+W(7,1024846769,1020991498,1032759069,1041911145);sum2=W(0,-1122349048,1027223630,-1123059666,-1097496437)+W(1,-1101147358,1008041239,-1113710228,-1103013196)+W(2,-1108922684,1050237475,-1093984844,1061603028)+W(3,1054912466,-1136134543,1050990810,1037079763)+W(4,-1102817435,1047134367,-1086242189,1069845393)+W(5,-1091188340,-1107987422,-1126348732,-1097181289)+W(6,1024154790,-1105600910,1041276041,-1090292072)+W(7,-1122818012,-1109079234,1047206075,-1109791787);WS(-1087087711,1067831143); +sum1=W(0,1034272753,1043354114,1046815315,1041026663)+W(1,-1116058688,-1131457456,-1115558139,1032034947)+W(2,-1110686621,-1094089577,-1090322161,1019000899)+W(3,1048378971,1054466495,1045446607,1043401342)+W(4,1034360523,1051348739,1056352764,1049291409)+W(5,-1098372646,-1090870248,-1103803571,-1098529593)+W(6,1006467012,-1097882829,-1098171061,-1099191041)+W(7,1036956791,1036945505,-1124941614,1026141794);sum2=W(0,1046033632,-1114282503,1044655964,-1106001859)+W(1,-1104436397,-1101664028,1015764662,1023732858)+W(2,-1147554302,1065651536,1052996561,-1076523823)+W(3,-1095873418,1059971501,1037179306,-1119149512)+W(4,1021728539,1061103542,1047372498,-1081697027)+W(5,-1094800655,1058036758,-1113369666,1033040332)+W(6,1034466187,-1117467216,1040544990,-1105745303)+W(7,-1119054372,-1110996319,-1120190386,1028498617);WS(1040537598,-1164677141); +sum1=W(0,1044447583,987031402,-1121775302,1042738997)+W(1,1038434732,1049696256,1024826006,1044766000)+W(2,1058921623,1052904912,1059494147,1059765434)+W(3,1053249925,1045203303,1049549231,1032179929)+W(4,-1079854668,-1089009751,-1082135643,-1085199868)+W(5,-1087718171,-1094593271,-1098502833,-1111725730)+W(6,1051360885,1009017491,1049103971,1042102879)+W(7,1037325507,1033340813,1040792940,-1103499809);sum2=W(0,-1105450770,-1099930216,-1087670985,-1097641768)+W(1,-1093727900,1034849198,-1089823109,1026936119)+W(2,-1076904032,-1110661913,1054929191,1067640588)+W(3,1043325457,1041628489,1024934811,1071055811)+W(4,1034745372,-1104228342,1055270313,1058849806)+W(5,1055379319,1047258529,-1091022953,-1093861556)+W(6,1064235564,-1133206564,-1159337186,-1095527236)+W(7,-1097371942,-1123329564,1053074558,-1079977593);WS(-1072228928,1076959210); +sum1=W(0,1049440860,-1100954468,1040518102,1055014377)+W(1,-1102413547,1056933930,-1100924366,1025160513)+W(2,-1102211417,-1090494943,-1089397123,-1085929645)+W(3,-1092416799,-1103710088,-1099959722,-1097219837)+W(4,1052420434,1049042513,1057628335,1059399711)+W(5,1055649007,1056457065,1043274798,1043339918)+W(6,1046258910,-1094165323,-1113742940,-1115570152)+W(7,-1095616949,1054320058,-1096288332,-1113497047);sum2=W(0,1037249746,-1106259401,-1118512137,1033553146)+W(1,-1118437421,1049532353,-1112295163,-1112769969)+W(2,-1091193116,1057292562,1045032769,-1101074553)+W(3,1047290760,-1085599381,1045403080,1036239865)+W(4,1058952598,-1089499743,990544085,1052938455)+W(5,-1096914685,1060306657,-1095081062,1036770528)+W(6,-1099278743,1035766214,-1120311473,-1107284433)+W(7,1032001159,-1105441959,1037527897,-1117837555);WS(-1095248895,-1088416713); +sum1=W(0,991086878,1041397006,-1100414321,-1106522737)+W(1,1032194452,1040515607,-1113785099,-1119710941)+W(2,-1112623265,1023033498,-1095527100,-1085500137)+W(3,-1103431285,-1093888960,1025813699,-1112974208)+W(4,1049658160,-1129854724,1056723856,1061179113)+W(5,1050067968,1055178889,1027165141,1044420741)+W(6,1025280780,1018002536,-1101036339,-1098081679)+W(7,-1121954805,1040437430,-1107604207,-1122583614);sum2=W(0,-1115281709,1038308115,-1086190321,-1079410563)+W(1,1055352031,-1106071111,1042421121,999244165)+W(2,1049351198,-1105447726,1061131477,1070791012)+W(3,-1080774986,1050939464,-1096576742,1021655353)+W(4,-1101546004,1044927538,-1105825160,-1124003323)+W(5,1054621998,-1100497740,1042910101,-1123561791)+W(6,-1132663474,1036918381,-1104633062,1035199903)+W(7,-1119052371,1038597174,-1126972585,-1141223925);WS(1057802399,-1081431823); +sum1=W(0,-1122831751,-1131892376,1041203877,1034931072)+W(1,1020249162,1023514439,-1183605377,-1102408215)+W(2,-1093480916,-1097592621,-1087992005,-1086955360)+W(3,-1094219074,-1099624791,-1104094712,-1103351679)+W(4,1050038833,1050095280,1058335651,1062569267)+W(5,1052617634,1053253320,1037479577,1047799764)+W(6,1031929377,1003466633,-1150646211,-1108251076)+W(7,-1123920403,-1110979235,1022403704,1031403703);sum2=W(0,-1104748298,1035677532,-1097271446,-1071563129)+W(1,-1073203825,-1105574565,1074066983,1076846054)+W(2,1032567526,1015597088,1042180726,-1131466492)+W(3,-1088097679,1049167232,-1104411749,1054919113)+W(4,1030425414,-1106402955,1036072793,1026492053)+W(5,1021201077,1046304011,-1108010622,1040423027)+W(6,1028805714,1010146816,-1122721452,-1139412188)+W(7,-1121571686,1013464552,-1115684312,-1159010626);WS(1057159391,-1098185256); +sum1=W(0,-1115997840,-1139848194,-1110900998,1040272534)+W(1,-1124007614,1022311680,-1122049771,1025640163)+W(2,1062337777,1059107990,1058844902,1060188982)+W(3,1050305613,1055455830,1052112283,1058488623)+W(4,-1099145229,-1096884471,-1083284577,-1081840204)+W(5,-1086268415,-1088086212,-1093503993,-1095187909)+W(6,-1108105457,1026934458,-1128707950,1050661700)+W(7,1025671020,1018441343,1032949738,-1115150240);sum2=W(0,1056249112,-1087901783,1050240307,-1096100666)+W(1,1050011361,1046757851,-1111613200,1031802636)+W(2,-1063663228,-1065703489,1050922399,1074103439)+W(3,1078895155,1075028289,1011769164,1041242105)+W(4,-1090194820,1049313091,1059446328,-1091782161)+W(5,1051412884,999915799,-1097222567,1040180956)+W(6,-1098679170,1049727089,-1118968312,1043947681)+W(7,-1103451878,1046896549,1036070334,-1120669738);WS(-1076050352,1072169512); +sum1=W(0,-1112010473,-1110549812,1041474168,-1102358403)+W(1,1035256808,-1103941101,-1126807163,-1127729580)+W(2,-1127017300,-1096217239,-1101316183,-1098236010)+W(3,-1097462672,1015309803,-1109990262,-1124828306)+W(4,1032805651,1055039585,-1107675851,1058693100)+W(5,1050718238,1047069339,1040782175,1033573870)+W(6,-1127012698,1017026201,1027743346,-1103052317)+W(7,1025923518,-1108585145,1029935559,1030091394);sum2=W(0,-1115222730,-1103808603,-1133607278,1035011293)+W(1,1045426354,1005150868,1038138903,1014354189)+W(2,1013406324,1044516259,1056099238,-1093760521)+W(3,-1097063741,1046105407,-1106358807,1034790704)+W(4,1048651312,-1091636530,-1082257366,1065398243)+W(5,1052543946,-1105190986,-1143243436,-1124610775)+W(6,-1105744683,1036643390,1056116581,-1087652578)+W(7,-1106429625,1031045850,-1129675875,1033997397);WS(1065781680,1039008007); +sum1=W(0,1041247860,-1132228043,-1116017645,1029031978)+W(1,-1114552992,1018467582,-1119698444,1039500994)+W(2,1052873269,1052030887,1057769989,1065817909)+W(3,1059292430,1052683781,1045381867,1042767258)+W(4,-1087848896,-1090939837,-1086321043,-1090130600)+W(5,-1093123180,-1089813139,-1093950448,-1088918334)+W(6,-1122380132,1043969975,-1167945460,1043124941)+W(7,1037414446,1037105136,1016187596,-1139723011);sum2=W(0,1038177586,1024852101,1031995320,1016571646)+W(1,1033741319,-1108656521,1035134998,-1120710323)+W(2,-1105284792,-1131141686,-1123455081,999573799)+W(3,-1107419527,1052574782,-1099142208,-1103717942)+W(4,-1114385091,-1105200928,1057384109,1073904332)+W(5,1075963065,-1130292726,-1072886122,-1070457563)+W(6,1023745983,1044997454,-1102654886,1045931554)+W(7,-1113399825,1041285787,-1101763500,1044467987);WS(-1090516543,-1087531312); +sum1=W(0,-1105337757,-1135375282,-1113059195,-1111479074)+W(1,1044282546,1036163039,-1123738614,-1110047807)+W(2,1040358473,1025750638,1034124454,-1082649657)+W(3,-1098312091,-1114570479,-1112260786,1044483760)+W(4,1026287071,-1109155234,-1111070925,-1113637434)+W(5,1056333811,1044131649,1049914271,1039433994)+W(6,-1112133319,1043065477,1049735832,1048811350)+W(7,-1104740686,-1111303053,-1128712224,-1136462731);sum2=W(0,-1122757257,1009904581,-1113467627,-1099518373)+W(1,1032421699,-1095677862,1020800146,-1112743661)+W(2,1027164873,-1112829049,1020364514,1064179702)+W(3,-1092934445,1039050377,-1106885375,1022655162)+W(4,1002742314,-1115430893,-1098221748,1059311413)+W(5,-1139891301,1041708988,-1124766450,1032689603)+W(6,-1111953049,-1116391321,1025748661,-1098741962)+W(7,1036551469,-1119491053,1025848261,-1122814953);WS(1059528063,1057564569); +sum1=W(0,993737087,1023855952,1051519336,-1100822612)+W(1,1027584566,-1109486813,-1127107174,1035631854)+W(2,-1096201122,-1112481934,-1089271861,-1101379550)+W(3,-1129312776,-1101173547,1031993577,-1097162722)+W(4,1052073475,1044928820,1057871347,-1090210244)+W(5,1027452795,1051680014,1038521522,1050823828)+W(6,1036364765,-1119101474,1026047377,-1095066725)+W(7,1043887545,1038809676,-1152581582,1037595092);sum2=W(0,-1106514375,1034094594,-1112949179,1009317700)+W(1,-1126355148,1021633582,1010987268,-1106252693)+W(2,-1115270098,1029678117,-1095879627,1052560633)+W(3,-1128108776,1034084538,1040297892,1049223604)+W(4,1025588625,-1103891997,1029083209,1062070608)+W(5,-1100067512,1035054672,-1117785257,990783407)+W(6,-1109616345,1044342701,-1107320484,-1103446924)+W(7,-1131810302,-1098743078,-1123491293,-1102218346);WS(1061977215,-1122204685); +sum1=W(0,-1124031333,-1109554099,-1105250724,1036027519)+W(1,959521497,1055353398,1038275624,-1136942561)+W(2,1053794732,1053305789,1058003360,1059361796)+W(3,1055117810,1051669497,1037705519,1047158647)+W(4,-1090279300,-1096176108,-1093816822,-1081723655)+W(5,-1090510080,-1097892492,-1101480172,-1098784634)+W(6,1017895407,1027213295,1024566052,1033714163)+W(7,-1125004641,1006220452,-1112881733,-1145512357);sum2=W(0,-1113155109,1032430477,-1105712018,1048044904)+W(1,-1081128362,-1070110178,-1092435520,-1092804751)+W(2,1028856727,1021325630,1050891972,1070862297)+W(3,1074403261,1035516985,-1108990845,-1122256510)+W(4,993552399,-1128331832,1042508384,1042132916)+W(5,1044319918,-1115800491,1033559089,-1109033129)+W(6,1036996819,-1139715524,-1111526035,1040898786)+W(7,1025048067,1038841221,-1119663830,1007165668);WS(-1096328959,1070879408); +sum1=W(0,1047483149,-1131726569,1017405984,1016192218)+W(1,-1134185032,-1130210629,1039283496,1022798351)+W(2,1056909741,1050717891,1049879450,1064784543)+W(3,1054175424,1055866677,1052923070,1050331269)+W(4,-1084253114,-1097194674,-1084428714,-1088019878)+W(5,-1087922381,-1096076442,-1098682228,-1089646420)+W(6,1043610432,-1120381614,1029856307,1046790989)+W(7,1044095416,-1106891777,1045347898,-1103492015);sum2=W(0,-1096731787,1041094096,1030029833,-1134738767)+W(1,-1112066554,1049526473,-1103571503,1038503381)+W(2,-1092572599,-1083918511,-1081752188,1050600846)+W(3,1060518769,1056806956,1052566197,1040255570)+W(4,-1072213302,-1081783724,-1088492050,-1098909280)+W(5,1054813136,1066457366,1061557517,1074348460)+W(6,1074300082,1061218424,1062246408,1055931246)+W(7,1030722387,-1080408758,-1082314750,-1074863778);WS(-1093955647,1022010191); +sum1=W(0,1027472455,-1118029508,1017520774,-1100976252)+W(1,1048038797,1019653215,1015004427,1006149335)+W(2,1051129150,1040858863,1058284788,1064764899)+W(3,-1094249656,1054989120,-1137681219,1047833420)+W(4,-1126583382,-1110637352,-1083829535,-1092969620)+W(5,-1093269900,-1098669306,-1101321193,-1092663640)+W(6,-1110971745,-1129027011,1043546956,1032062845)+W(7,1049944248,-1114080636,1039113958,-1120661351);sum2=W(0,-1125700855,1010923567,-1097524591,-1086770251)+W(1,-1119687254,-1136610695,1034141799,-1146172877)+W(2,-1109340305,-1099241242,-1097784845,1061340682)+W(3,-1091236020,1059369820,-1103210716,1042204527)+W(4,1041739108,-1121076246,-1122648580,1059475190)+W(5,-1097965354,1048517727,1020884025,-1117941982)+W(6,-1138307987,1010348245,1043843262,-1104554020)+W(7,1042867821,-1105357691,1021404807,1026766467);WS(1057685119,1067243116); +sum1=W(0,-1129459555,1016923756,1004671913,-1095493364)+W(1,-1098633785,-1112175056,1046138501,-1131471418)+W(2,-1098308652,-1100618635,-1090418529,-1088191051)+W(3,-1089905135,-1101363479,-1106099897,-1097291652)+W(4,1053516928,1049587364,1057639529,1065512192)+W(5,1058720438,1052631981,1043712557,1052947846)+W(6,1029422892,-1111775882,-1114348966,-1112549294)+W(7,-1103551521,-1111153757,995391206,1020473821);sum2=W(0,-1131225411,-1130956898,-1103681442,-1077027280)+W(1,-1076028808,1031803188,-1101294062,949706042)+W(2,-1140292462,1023877693,1042914798,1069127322)+W(3,1071847872,-1103125793,1043076855,-1132087796)+W(4,1018110051,-1137158572,-1224504659,1043315619)+W(5,-1120948958,1043270022,-1113817590,1015417250)+W(6,1018006973,-1128428036,1020723155,-1147115303)+W(7,1020554514,-1133954299,990350747,1025989218);WS(-1097928959,-1082976358); +sum1=W(0,1027664520,-1123678010,-1106569905,1052451146)+W(1,-1103556709,1038567635,-1108799690,1040222651)+W(2,1057835343,1050550727,1057764410,1062299789)+W(3,1049034640,1057826487,1041175724,1060823717)+W(4,-1089326063,-1096462854,-1083721351,-1087127986)+W(5,-1097735566,-1094118206,-1100805265,-1089053734)+W(6,-1108038941,1032858337,1021803093,1042469806)+W(7,-1104920125,1031016631,-1129264698,-1107162784);sum2=W(0,1059738223,1048150071,1052511773,-1080186607)+W(1,-1078381471,-1072132845,-1071450961,-1071397334)+W(2,-1087082495,-1095900368,-1108343021,1063110279)+W(3,1074904245,1071639576,1076364217,1077341373)+W(4,-1092378156,1046247330,1033545850,-1090059649)+W(5,-1107095292,1039712953,-1113577164,1049211915)+W(6,1034470847,1025055065,1045395587,-1094453880)+W(7,1053230483,-1103894182,1032308634,-1120241798);WS(-1093482751,1040242403); +sum1=W(0,-1101135214,-1123956286,-1107524598,-1138012647)+W(1,1034129455,1042720691,-1130324184,998898338)+W(2,1051279307,1045008905,1049489177,-1132973569)+W(3,-1096848358,-1098383795,-1104810279,-1118268600)+W(4,-1160860306,-1106067054,-1101021318,-1113266773)+W(5,1049504725,1059206814,1049756222,1052043149)+W(6,-1112732162,-1135242283,1029341500,-1121978915)+W(7,-1098727290,-1102892456,-1104163113,-1099073308);sum2=W(0,1050603120,-1101078445,1048531671,-1105220793)+W(1,-1091713187,1034851673,-1122031169,1020293663)+W(2,1055811875,-1122671355,1038805789,1066111209)+W(3,1026095418,-1130092003,-1137910742,-1094690648)+W(4,-1086548128,-1087609936,-1088336312,1071017234)+W(5,-1115602704,-1089969509,-1121274059,1053616941)+W(6,1034695967,-1108269543,-1089139562,-1104320030)+W(7,-1100901763,1049804877,-1103744367,1054827086);WS(-1112146683,-1077736475); +sum1=W(0,-1128590341,-1130792414,-1147973299,-1117834531)+W(1,1007065251,1033724609,1024083798,-1122914526)+W(2,-1099064529,-1090490649,-1086623314,-1101063739)+W(3,-1084449173,-1094725676,-1097837640,-1097461352)+W(4,1049253908,1028859267,1040872136,1068918685)+W(5,1059458719,1057886934,1044653558,1048946351)+W(6,1039097715,1017948777,1025770233,-1115616742)+W(7,-1104116690,-1132647657,998082042,1030833130);sum2=W(0,1038545045,-1104316542,-1098913527,1054073276)+W(1,990615436,-1111960943,-1127436605,-1131799749)+W(2,1044965772,-1073797636,-1069601753,1079919017)+W(3,1065620582,-1103381017,1039512539,-1105195767)+W(4,1038508364,-1092377302,1050236814,1044931722)+W(5,1034922622,1033398315,-1113162193,1039327537)+W(6,1032278560,-1115941315,-1109127211,1042591612)+W(7,997021068,1042220416,-1138197651,-1121388557);WS(-1090505151,-1074550453); +sum1=W(0,-1112838599,1028498739,1023419227,-1117182312)+W(1,1018948122,-1126145258,1024711581,-1125422420)+W(2,-1106878250,-1103427629,-1088602192,-1088941275)+W(3,-1087514842,-1096920942,-1096615233,-1095073209)+W(4,1057615003,1042960070,1063645564,1053033883)+W(5,1058641540,1043052986,1050742275,1053972531)+W(6,-1131143051,1023192930,-1096958907,1048242260)+W(7,-1098164287,1045189988,-1105551137,1026824959);sum2=W(0,1051549752,1081443218,1072492444,1048388769)+W(1,1035162847,-1139079606,-1121149576,-1123800689)+W(2,1021553919,-1111116920,-1073777225,-1067599847)+W(3,-1096587672,1029232562,-1115288719,1042218632)+W(4,-1106404197,1044837835,-1113676512,-1089379201)+W(5,-1109546151,1030543674,-1122606689,-1125599605)+W(6,1031994963,-1113046369,1032624041,1025956540)+W(7,1027498280,-1132168419,1034044071,-1115044631);WS(1051119487,1041244378); +sum1=W(0,-1124974044,1028120435,1048876359,1037118035)+W(1,-1131477080,-1118427428,-1120234265,-1125985859)+W(2,-1137238551,-1113671305,1036964902,1061504071)+W(3,1047204942,1050660570,1030267847,1049717597)+W(4,-1116593698,-1103177170,-1099611151,-1104164974)+W(5,-1081804989,-1114906180,-1098831475,-1103929310)+W(6,-1121323393,1033078132,-1156053771,-1129960608)+W(7,1048068278,1011539382,1035846233,-1115091743);sum2=W(0,1018090488,-1104952272,-1105226064,-1128161694)+W(1,-1134153828,1024328280,-1118410723,-1117225997)+W(2,1027537220,1048078363,1055192952,-1102612387)+W(3,-1102761937,-1101688104,1035228556,1016223417)+W(4,1019973834,-1095697091,-1101823824,1074095781)+W(5,-1074759173,1063478353,-1092594125,1041310640)+W(6,-1117503915,1045164128,-1106818318,-1087428157)+W(7,1061969021,-1092430375,1050476000,-1110796930);WS(1062303263,1031082743); +sum1=W(0,-1113216195,-1099215391,1052151297,1026092610)+W(1,1051942565,-1098039588,-1101893697,1008063218)+W(2,1050954912,1012178225,1065129152,1047492794)+W(3,1063700475,1049517720,1028060738,1054989200)+W(4,-1095964628,-1095180416,-1088785601,-1089641431)+W(5,-1089295544,-1091476104,-1102410709,-1096414030)+W(6,-1121789260,1027015379,1041954507,-1107401421)+W(7,1049634587,-1112964196,1035520455,-1114231491);sum2=W(0,1033145987,-1111827051,-1103256184,-1063595607)+W(1,-1101985731,-1141099147,-1136421288,1030655939)+W(2,-1175661064,-1152013649,1050523165,1084357731)+W(3,1048919805,1025442742,-1145624409,-1133270551)+W(4,1021827842,-1104895942,1034611383,-1094652398)+W(5,1029250458,-1102082303,1021034188,-1121842648)+W(6,-1165845202,-1187919119,-1125020091,1042933311)+W(7,-1108910008,1040766920,-1126731425,1017996705);WS(1057958943,-1104691893); +sum1=W(0,-1111014615,-1128240917,-1146251723,-1095236657)+W(1,1047913107,-1103203951,1033356080,1023941889)+W(2,-1105424217,1046008396,-1090082375,1054329938)+W(3,1003615948,1013130820,1044802714,-1101796865)+W(4,1044401084,-1100901945,1057785284,1040293502)+W(5,-1099597392,1051440085,-1102604718,1036253756)+W(6,-1118336456,1038452148,-1119525902,-1093887914)+W(7,1045607070,-1107674167,-1113361665,1037874639);sum2=W(0,1010987018,-1105807463,-1102396693,1054217500)+W(1,-1123211893,1029628166,-1106898625,1028744914)+W(2,1041119120,-1111572952,-1117220749,-1087890507)+W(3,1070205457,-1101117061,-1113015450,-1121743361)+W(4,-1110188142,1045029856,1057260834,-1087358521)+W(5,-1081682663,1051101181,1042553654,-1135525482)+W(6,-1127404253,1029477872,1019931869,1056265374)+W(7,-1091128546,-1124058781,1025549544,992401866);WS(1063883327,-1171419961); +sum1=W(0,-1131801844,1021098616,1022023532,-1121742227)+W(1,-1090925859,1024490200,-1102607801,-1123544461)+W(2,1049833398,-1123871229,1009731296,1044941350)+W(3,1060653970,1043051923,1048967870,1050859794)+W(4,-1102183011,-1097479398,1056730033,1041013425)+W(5,-1095529687,-1097251239,-1104750961,-1097963532)+W(6,-1101850371,1031224740,-1123343997,-1127214008)+W(7,-1107029405,1042080318,-1107657120,1009310536);sum2=W(0,-1106082604,1041248381,-1132935321,-1106587714)+W(1,-1104172881,-1118244665,-1115368488,-1139264801)+W(2,1047581965,-1108094251,-1111186257,1050591326)+W(3,1039028256,1025922877,-1111866155,-1104769894)+W(4,-1097195715,-1105642610,1042983438,1048334662)+W(5,1046273630,-1128737701,1044426238,-1122157893)+W(6,-1113941985,-1131232309,1050509566,-1103031697)+W(7,-1127691207,-1115007353,-1112751356,1031938310);WS(1064944927,1037595256); +sum1=W(0,-1116864018,1023806679,1017115436,1009660557)+W(1,1028149000,-1109610248,-1148661421,-1102752831)+W(2,-1089228760,-1095304482,-1087165700,-1086682215)+W(3,-1088874517,-1099761351,-1116139780,-1131587330)+W(4,1063040538,1057549004,1060715233,1064233001)+W(5,1056983460,1052917089,1041500021,1045020525)+W(6,-1107296590,-1106875789,-1103245163,-1106392275)+W(7,-1132085516,-1107160974,-1129006079,-1152394658);sum2=W(0,1045832950,-1110716731,1025147898,-1098226948)+W(1,-1099749141,-1098250414,1042544569,-1089530617)+W(2,-1084008560,1049995423,-1089165996,1066542501)+W(3,1049362032,1055260506,-1086997229,1067285885)+W(4,-1084775302,-1093173621,1054478967,1068786857)+W(5,1047038722,-1126019654,-1127724076,-1088213452)+W(6,1058474163,-1102301410,-1128684365,1031931484)+W(7,-1091779956,-1105326436,1053449115,-1090548395);WS(-1082101344,-1089856493); +sum1=W(0,1050831902,-1112019073,1030303546,-1129997454)+W(1,-1110327174,-1117704076,-1112251093,-1131596868)+W(2,-1105691402,1030717682,1055521064,1064695661)+W(3,1061962758,1058754169,1047731210,1056158989)+W(4,-1101015969,-1098775681,-1097748442,-1085520515)+W(5,-1086646154,-1089610799,-1093958751,-1094349907)+W(6,1029275441,-1120813832,-1139280937,965412887)+W(7,1041358014,-1122362798,1028938947,1016935004);sum2=W(0,-1065128139,-1076824095,1067439244,1079260085)+W(1,1056740148,-1103928218,-1135208116,1039164015)+W(2,-1101130808,1050826865,1046966330,1049869634)+W(3,1051236860,-1114183173,1033256035,-1104627926)+W(4,1034565987,-1109355365,-1109830496,-1112614302)+W(5,-1123646153,1051726295,1035002893,-1109091637)+W(6,-1119435550,1023890205,1012867020,1015248786)+W(7,-1122661198,-1136992532,-1119472799,-1136910724);WS(-1090711679,1035967541); +sum1=W(0,-1111795270,1015715144,-1118064815,-1124564760)+W(1,1033380937,1041725555,1039158191,1036708611)+W(2,-1104454427,1029360119,-1084526809,-1083278737)+W(3,-1083950349,-1091233609,-1102432923,-1097260861)+W(4,1050513973,1050454265,1063535365,1060834888)+W(5,1050327592,1054941014,1040417584,1042099839)+W(6,1030482278,-1138269301,-1132452908,1007072853)+W(7,1028355007,1029566323,-1140656289,1035976950);sum2=W(0,1030795338,-1104698754,-1086482027,-1086674278)+W(1,1048689193,-1101252049,-1127107620,-1097010897)+W(2,-1099705557,-1088930785,-1087114188,1063363970)+W(3,1066258058,1055138353,-1113111809,1050900036)+W(4,-1100315818,-1129318753,-1088371087,1059258270)+W(5,1052412907,1035784301,-1107499570,1046424313)+W(6,-1124401732,1047822852,1041847465,1007827043)+W(7,-1114489829,1039056173,1036879119,-1112035485);WS(-1098505599,-1075865372); +sum1=W(0,-1119631078,1024188415,-1125460739,-1113150415)+W(1,-1098117352,1028789822,-1115205937,-1134520549)+W(2,-1131715643,1032178901,1056750314,1055366257)+W(3,1063530169,1038512989,1036256496,1042179631)+W(4,-1121509433,-1128987132,-1131145214,-1096447994)+W(5,-1086227497,-1117796833,1016180195,1032402616)+W(6,-1113178620,1024883696,-1114020928,-1102601578)+W(7,-1111953177,-1101470933,-1141768534,-1114797153);sum2=W(0,-1098762498,-1112826554,-1099883844,-1090598021)+W(1,1060690639,-1101866176,1051055486,-1111565268)+W(2,1039073687,1047439072,1024348972,1068429254)+W(3,-1078855206,1052294530,-1095975199,1034134076)+W(4,1035541163,1032611741,1050751610,1066295533)+W(5,-1081223881,-1097770507,-1126362074,-1121819739)+W(6,1030962008,981436096,1048715774,-1089341195)+W(7,-1094541311,1041458546,1044471119,1024624177);WS(1057165023,-1106509195); +sum1=W(0,-1110663097,1023353031,1009641338,-1116674588)+W(1,-1121179137,-1127866586,1019708412,-1105922998)+W(2,-1090373040,-1094296089,-1087820187,-1090764772)+W(3,-1101809276,-1095695571,-1097119704,-1088811352)+W(4,1057389257,1051297995,1064196683,1064337073)+W(5,1058239248,1053143796,1049182394,1042633923)+W(6,1036322023,-1110472134,-1103525103,-1108191858)+W(7,-1105116828,-1130262917,-1117889432,1047174317);sum2=W(0,-1112942365,1048482322,-1100072975,-1097118067)+W(1,991349250,-1108096389,1053525633,1000921969)+W(2,-1106822390,-1115190843,1034045428,1068163863)+W(3,1063618710,-1107942623,-1090492700,-1076676559)+W(4,-1102090209,1042851055,-1103979279,1056641862)+W(5,-1105663689,1049912171,-1130278628,-1111476815)+W(6,1043730009,1035412483,-1105576965,1028572696)+W(7,-1113934073,-1105853831,1039916278,-1106999228);WS(-1086493375,-1079336981); +sum1=W(0,977772865,-1123924042,-1109993624,-1107908519)+W(1,1036636329,1038934102,1034769240,-1099048778)+W(2,-1102983835,-1108602044,1041059645,-1094902379)+W(3,-1083260999,-1084987377,-1102484540,-1108629750)+W(4,1026410857,-1098146918,-1106936850,1061697492)+W(5,1061962303,1057432285,1051050960,1050989872)+W(6,1015269519,1049374456,1036994068,1041174790)+W(7,-1103125248,-1125738921,-1130650164,1040252563);sum2=W(0,-1104970914,1018133697,1040842491,-1093587851)+W(1,-1093237537,-1102375178,-1099804326,1054809337)+W(2,1042634099,-1097448347,1055662701,1074010545)+W(3,-1089724369,-1099392752,1049771835,-1092159031)+W(4,1052960430,-1108255972,1062139198,1064732329)+W(5,-1083390778,1025575413,-1104347883,-1096888027)+W(6,-1112577728,-1096543501,-1090800341,-1093194079)+W(7,1015865539,991452982,-1126119433,1028159711);WS(-1088469887,1068090411); +sum1=W(0,-1113244581,-1123900274,1049496346,-1110903326)+W(1,-1119953152,1031904934,1034227191,1025939062)+W(2,1001301201,1023861926,-1082959002,1050701400)+W(3,1060902689,1043052181,1043817559,1038313117)+W(4,-1115331947,1035790701,1057295251,1048296635)+W(5,-1081663133,-1113327662,-1110964279,1034951606)+W(6,-1124374314,-1105829923,-1096521435,-1119292644)+W(7,1048590454,1027826066,-1106468266,-1117293966);sum2=W(0,1046922708,1033420508,-1112865289,-1096930035)+W(1,-1101802092,1017341032,1036773342,-1107450994)+W(2,-1106472578,-1114867820,-1087802072,1058113813)+W(3,1050476308,-1103417477,-1105807138,1033379085)+W(4,1033443280,-1109208012,1020845388,1048730658)+W(5,1059721445,-1107242470,-1136542442,-1104249476)+W(6,-1111979165,1050643686,-1101832932,-1129026525)+W(7,-1104558996,-1135034393,1037376476,1023773731);WS(1052578175,-1092643724); +sum1=W(0,-1106584961,1030893452,1033955624,1037358070)+W(1,1036710537,-1128189432,-1118327615,-1129060558)+W(2,-1102735475,-1100779014,-1082492039,-1086815439)+W(3,-1088009424,-1095075429,-1106908643,-1102841939)+W(4,1053304083,1049737317,1060101900,1065824329)+W(5,1041943502,1057719155,1051335460,1036237087)+W(6,993436516,1037510015,-1101687426,-1103135573)+W(7,1029815263,1040440469,-1106074638,1027836379);sum2=W(0,-1115440098,1029771501,1018065220,999202537)+W(1,1036811205,-1111720654,-1125064265,1019498859)+W(2,1015710974,1033337736,-1094728975,1039453548)+W(3,1050012979,1032576025,-1103861773,1040788513)+W(4,1041402597,-1114856806,1037520917,1064530169)+W(5,-1094040689,1073761042,1063409170,-1090935047)+W(6,-1130229431,1034787000,-1082769104,-1074584982)+W(7,-1090370130,1032162938,-1105633547,1034133532);WS(-1104397694,1058392920); +sum1=W(0,1012876448,-1126111401,-1142522206,-1115125816)+W(1,-1103048369,999529969,1016404519,-1117545451)+W(2,1051523414,1050625047,1043902243,1063861817)+W(3,1056801600,1053396405,1042081404,1054067798)+W(4,-1094911217,-1106828476,-1089440467,-1093833780)+W(5,-1087921625,-1107310585,-1104958721,-1097217844)+W(6,1023486907,1033392977,-1119682235,1019625524)+W(7,-1096529922,1015514383,1039287934,-1113687714);sum2=W(0,-1130009672,1027809153,-1106384796,1051460883)+W(1,-1104521112,1033821004,-1112259960,1028508475)+W(2,1013515790,-1106180134,1042067106,-1094561503)+W(3,1032257325,-1124940473,-1168427353,-1120291522)+W(4,1013756514,1023886448,1052609397,1078005003)+W(5,1072194837,-1094906083,1046140857,-1140922271)+W(6,-1153587550,1024050371,-1094102229,-1070026280)+W(7,-1075632186,1053282219,-1098407638,1033718481);WS(1063327007,-1121248448); +sum1=W(0,1017612078,1043030576,1039059525,-1115811128)+W(1,-1095615210,-1099887459,-1140707177,-1120397682)+W(2,-1113236667,-1096763312,-1091103118,1053297652)+W(3,1063340055,1054079124,1041492110,-1126620524)+W(4,1042967269,1049218219,1058517677,1033504868)+W(5,-1082785422,-1088587000,-1101731443,1029718569)+W(6,1035231217,-1115130868,-1107367965,1009543939)+W(7,1047061435,1042859328,-1120288724,-1104957341);sum2=W(0,1037909727,-1098298527,-1126569464,-1106955476)+W(1,-1096969233,-1118592354,1042882430,1037216424)+W(2,-1119813454,1048025725,1041835288,1067026849)+W(3,-1085288934,1042571631,-1117602980,-1116313332)+W(4,-1099212072,1045330821,-1106229244,1067954224)+W(5,-1095495837,-1108169766,-1164085849,-1100305071)+W(6,1032936033,-1097673782,-1109675885,-1092590328)+W(7,1004812688,-1096486003,1034064234,1045459772);WS(-1114652667,1051933605); +sum1=W(0,1026700110,1037508767,-1128033780,1034155035)+W(1,-1102462575,1024543544,-1147042251,1032374633)+W(2,-1102428549,-1105027032,-1106431647,1043250735)+W(3,1059213449,1038435705,1038748492,1016229610)+W(4,1043087092,1048715843,1062796090,-1089603768)+W(5,-1090890112,-1106007014,-1119096106,-1104514210)+W(6,-1109604752,-1113263092,-1098797270,1023780992)+W(7,-1112475685,-1121524254,986589794,1007891224);sum2=W(0,-1129141996,-1106880495,1031191254,-1102244397)+W(1,-1101040753,1046080919,-1112883155,1031234782)+W(2,1043866561,-1096921120,-1123077406,1064276171)+W(3,1061828176,-1095750750,1042185570,-1128566730)+W(4,1029019378,-1092013580,-1086673510,1064706574)+W(5,-1113110329,-1091369762,1042119352,-1105256367)+W(6,1050935854,-1111274547,-1096956427,-1115781076)+W(7,-1106057540,1029696990,-1113619581,1012473722);WS(1059465279,-1101420399); +sum1=W(0,1033088680,-1124176798,1014063089,1035053989)+W(1,1045820204,1038292302,-1115007182,-1131477704)+W(2,1043444330,1000916382,1057398923,1034190184)+W(3,-1087528660,1036787650,1027988010,1042732770)+W(4,-1101682761,-1126261266,-1089602004,1039770557)+W(5,1057859064,-1106381771,-1104773247,-1102530758)+W(6,-1124073107,-1118729178,1032573720,-1114558729)+W(7,-1096323421,1041172764,1024683157,1029511616);sum2=W(0,-1093261173,-1100338012,1016590929,-1160318928)+W(1,-1111261089,1032510827,1037987285,-1106728517)+W(2,-1081648717,-1096055698,1049309077,1060463741)+W(3,-1123677731,1042247124,1035681279,1035240533)+W(4,-1107343332,1016623505,1058913944,1061699617)+W(5,-1095509190,988275856,-1111758125,979544481)+W(6,1020947921,-1121572837,1035038069,-1121635630)+W(7,-1116667427,-1130213341,1033159595,-1112486763);WS(1060076127,1072958059); +sum1=W(0,-1103118654,1043365506,-1115420333,1031523031)+W(1,1033412302,1032254402,1031863013,-1127560355)+W(2,-1090537599,-1097065432,-1086314390,-1088162978)+W(3,-1089193875,-1091959462,-1111327644,-1086013855)+W(4,1060753617,1046496158,1060760746,1055888777)+W(5,1052645932,1054239287,1044639698,1056703661)+W(6,-1129584897,1025963976,-1106610556,1040410096)+W(7,-1138875303,1032279415,1032182482,1044337291);sum2=W(0,1034238418,1026722605,-1123083006,1044566349)+W(1,-1114043742,1029836970,-1124457715,-1112207598)+W(2,-1122429687,-1113650971,-1101416602,-1095747837)+W(3,1044375513,1032414162,-1132025334,-1112893824)+W(4,1038471498,1047703041,1050567163,1073798913)+W(5,1074668356,1076147895,1076524889,1071535287)+W(6,-1105287037,-1106809975,-1099784158,-1077245954)+W(7,-1072322090,-1070521946,-1071353549,-1076180558);WS(-1114470395,-1114976351); +sum1=W(0,1017446070,1040990896,-1129681934,-1120446036)+W(1,-1097641691,-1110115727,-1110184487,1033457695)+W(2,991904560,1041627584,1047992216,1061349282)+W(3,1061559014,1055187519,1045114861,1047040436)+W(4,1034584479,-1107221597,-1115356259,-1083497834)+W(5,-1089507216,-1098995485,-1109668803,-1107186297)+W(6,-1110976571,-1099251857,-1111571481,1039733326)+W(7,1036247843,-1114440077,-1115117640,-1120899067);sum2=W(0,-1093678598,1002676269,1055748356,1044340647)+W(1,-1118111722,-1120084888,1001595675,-1123642691)+W(2,-1084434022,1057422860,1066493380,-1079318791)+W(3,-1116089022,1044705221,-1112694927,1031220790)+W(4,1064533419,1067683118,-1078621547,-1079939901)+W(5,1054002901,1039926847,-1112070298,1023903081)+W(6,1042743345,-1108978134,-1117769694,1015093293)+W(7,1049699290,986467602,-1107171922,1037662763);WS(1048785023,1039045299); +sum1=W(0,-1104130562,1043168659,-1117502116,1029857553)+W(1,1034838603,1027207566,1024393315,-1130533431)+W(2,-1090140327,-1100442863,-1085428843,-1093347651)+W(3,-1089406196,-1093521697,-1120775857,-1086838999)+W(4,1061197562,1040570004,1062309944,1050495728)+W(5,1050259320,1054560318,1039464338,1056208688)+W(6,-1133671882,1032880081,-1102819715,1038995485)+W(7,-1127149063,1026681976,1035433414,1041402190);sum2=W(0,-1118465298,1011712973,-1128433260,1029767219)+W(1,1021354231,982009542,1014788797,1033540398)+W(2,-1142302474,1025023956,1041730218,-1097771962)+W(3,-1094677866,-1122047812,1028525757,1020814500)+W(4,-1114395216,-1104707163,-1095905892,-1080533844)+W(5,-1075595300,-1072373863,-1072719492,-1078361330)+W(6,1037219807,1039062755,1046574176,1069124140)+W(7,1073795377,1075522683,1074436097,1068741752);WS(1040594174,1002085105); +sum1=W(0,1041861603,-1097746587,1032164980,1031577622)+W(1,-1102982955,1044101411,1034678964,1026039088)+W(2,-1113198522,1055071640,-1088672026,1050744420)+W(3,1057599999,-1103363988,1036351259,1034848362)+W(4,-1137236930,-1100468781,1047493466,-1105375081)+W(5,-1087672398,1050064611,-1102178050,1033863059)+W(6,1041085614,-1121524679,-1109849488,1048884604)+W(7,-1113508732,-1098107838,1043931332,-1106488144);sum2=W(0,-1099743490,1035577370,-1115293072,-1102421679)+W(1,1038726510,1032210717,-1107407193,-1120037205)+W(2,1011906269,1026663055,1057096352,979639118)+W(3,1044440375,1032214892,1028754425,-1123040177)+W(4,1037961444,-1152297667,-1095995741,1050233559)+W(5,1022991474,-1139108605,-1115369483,-1104470915)+W(6,-1108436276,991169347,1045881501,-1097952901)+W(7,-1122343653,1026937641,-1105994898,1022469878);WS(1066613200,-1123971367); +sum1=W(0,1021072883,-1125712504,1041158633,-1106077125)+W(1,1036847484,1032267227,1016782186,1031886911)+W(2,-1096708150,-1090955664,-1159875842,-1079911082)+W(3,-1093258685,-1103560179,-1089925031,-1106725252)+W(4,1051074184,1051398158,1058934814,1061682240)+W(5,1055629981,1054180539,1052861897,1047227273)+W(6,1026036124,-1108624754,1040756057,-1090753503)+W(7,-1114271443,1025501945,-1105228376,1043536294);sum2=W(0,-1120579723,-1104595791,1060943463,-1081375340)+W(1,1048074442,1049316438,-1088959333,1054216959)+W(2,-1102098813,1059079365,-1078775742,1070420847)+W(3,-1106373275,-1084015554,1065759760,-1087995034)+W(4,-1103583809,1035649855,1055196914,1036446407)+W(5,1050043459,1050724789,-1088425301,1052608338)+W(6,1039910130,-1110832147,-1115424415,-1092581761)+W(7,-1101688097,-1115969635,1051846236,-1103333947);WS(1015488492,-1082266482); +sum1=W(0,-1115294884,1041881447,-1116482020,1028536641)+W(1,1044897017,-1108243791,1033207234,1015505847)+W(2,-1096364772,1036768790,-1083421327,-1079950554)+W(3,-1088856963,-1096513911,-1104622888,-1096156044)+W(4,1054950795,1051075280,1062057653,1057564011)+W(5,1054170231,1056273768,1056919206,1054606378)+W(6,-1109722877,1018280484,-1105734603,-1124656723)+W(7,-1129161159,-1113027740,-1132093050,1025701004);sum2=W(0,-1103335141,-1087173612,1045744538,-1106751239)+W(1,-1089877767,1054342226,1047940388,-1120076732)+W(2,-1123809016,-1080484881,1068142929,1065979347)+W(3,1048007586,-1086806497,-1098712592,-1082944418)+W(4,1056172663,1047550056,1051886373,1064817240)+W(5,1065470183,-1098340366,-1102735881,-1088981287)+W(6,-1093357581,-1112078382,-1102262951,-1097769156)+W(7,-1095892093,1033891425,-1105000175,1059622670);WS(-1089551423,-1072840444); +sum1=W(0,1041019406,1022173115,-1113297010,1015463395)+W(1,-1103473726,1040814976,1007312016,1029778436)+W(2,1055991358,1057526040,1036785718,1059475300)+W(3,1056836657,1050051043,1050846086,1053584058)+W(4,-1086576149,-1100702364,-1093552675,-1089572736)+W(5,-1091007140,-1090411145,-1098618125,-1097362556)+W(6,1027645528,-1141651861,1016689751,1031793146)+W(7,-1125097480,1041821422,1015074267,-1104623366);sum2=W(0,1069423067,1072187327,1072064387,1072314518)+W(1,1066704589,1063804587,1053139391,1042659879)+W(2,-1076703167,-1073855626,-1079134619,-1077864031)+W(3,-1081021850,-1081933355,-1094622730,-1099654949)+W(4,1041694716,-1115348910,-1107764634,-1089838794)+W(5,1036250076,1028352388,-1114321992,1035224325)+W(6,1032293264,1008297781,-1120515458,1037018177)+W(7,-1121141704,1025803257,-1123317222,1027779018);WS(1053893247,-1106302313); +sum1=W(0,1031892188,-1110506435,-1127073177,1047997302)+W(1,1033243951,-1107646187,-1112186286,-1112631434)+W(2,1044357278,1051962248,1061666784,1064449402)+W(3,1041901099,1053582704,1037482077,1050110011)+W(4,-1093335703,-1098499127,-1085429924,-1082436051)+W(5,-1118050391,-1104422127,-1118004236,-1103845867)+W(6,-1124627014,-1121076939,1038775118,1042378233)+W(7,-1100759903,-1107823800,-1134911574,-1111029158);sum2=W(0,1045534781,-1136883904,1027794169,-1091599460)+W(1,-1105954111,-1110353364,1026306116,-1105327762)+W(2,-1106914963,-1105365809,-1087950271,1049402813)+W(3,1059435817,1056244223,-1106437513,1049633694)+W(4,-1093884354,1058094665,-1076257974,1070891205)+W(5,1057695328,-1096007662,1042940020,1019026622)+W(6,1048929407,-1099297773,1057853479,-1101014716)+W(7,-1088483015,-1116753268,-1107558514,-1111740866);WS(1043803134,1031905225); +sum1=W(0,-1113675573,-1137620096,1045527725,1047471777)+W(1,1025442024,-1101766076,1041363873,-1104559247)+W(2,1045344728,1015450714,1036603287,1057861093)+W(3,1007995990,1048683192,-1103914745,1053784172)+W(4,-1093561052,1039772705,-1087612823,-1131204708)+W(5,-1109713128,-1098589181,-1142310312,-1096789826)+W(6,-1125193272,-1142985628,1043570724,1032608022)+W(7,-1125123818,1017746514,-1137687994,-1120823545);sum2=W(0,-1102611800,1042572795,-1143715563,1047906835)+W(1,1034463821,-1097650393,1044772028,-1105069125)+W(2,1052608919,-1112317124,1036000712,1058925768)+W(3,-1089628524,-1097284017,-1090965565,1053414419)+W(4,-1092971881,1050084573,-1099050864,1062269077)+W(5,-1100033854,-1155008883,1043620595,-1099181286)+W(6,1033368250,-1099740129,1046340985,-1106615878)+W(7,-1143169701,1034459058,-1102441858,-1145018737);WS(1065606800,1041895077); +sum1=W(0,1041785011,-1113293285,1031552121,-1114204019)+W(1,1014586031,1032452466,-1103346054,1025447425)+W(2,1041397665,1050236482,1063682744,1055253222)+W(3,1057927896,1054837340,1043307490,1058487624)+W(4,-1108226929,-1089967688,-1092426598,-1085544687)+W(5,-1092878524,-1094102329,-1097746379,-1098262983)+W(6,-1113822832,-1105474774,1045393909,-1106251932)+W(7,1018782386,-1135035573,-1114747425,-1119448485);sum2=W(0,1038489223,1032193624,-1137158564,1048862753)+W(1,-1107218869,-1112577633,1034028859,-1110240510)+W(2,-1094743304,-1106563024,1029053577,-1103121169)+W(3,1018988618,1015522148,-1107822714,1017646246)+W(4,-1079775068,-1075431018,-1075905408,1061439417)+W(5,1061842524,1055667456,1032002642,1047594841)+W(6,1069957645,1074314813,1067854461,-1090496129)+W(7,-1083145579,-1093776696,1038458963,-1100108785);WS(1050857279,1035401177); +sum1=W(0,1029370009,-1121232094,-1118971861,-1116554354)+W(1,-1102118870,1035949272,-1118591397,-1155732684)+W(2,1049972466,1045749679,1054737744,1064433520)+W(3,1057059356,1055161550,1035470985,1050840570)+W(4,-1100844155,-1097541146,-1089471141,-1088203652)+W(5,-1089223685,-1095333099,-1098430605,-1105548665)+W(6,-1114359850,-1119608387,1032044074,1039513726)+W(7,1028806533,1039358524,-1114373271,-1113669781);sum2=W(0,1034282103,-1111920318,1023538768,-1133376386)+W(1,-1119100907,1014776166,-1117007635,-1121555310)+W(2,1040723224,-1118965841,-1128437695,1038672881)+W(3,993338648,1050613235,-1108740075,1040276790)+W(4,1028955705,1031483971,1043259383,-1148076972)+W(5,-1084940093,1050550535,-1098463376,1054296012)+W(6,-1104697256,-1123254751,1034554870,-1078609243)+W(7,-1075024478,-1100774866,1069274341,1072481706);WS(1059068159,-1095269543); +sum1=W(0,1022243158,-1126585055,-1113503115,1034732162)+W(1,1029695369,1045709362,1005846771,1049870212)+W(2,1058751902,1052633434,1061437964,1062365313)+W(3,1054753811,1047783152,1043895001,-1119990530)+W(4,-1083015108,-1095802212,-1083734386,-1087136899)+W(5,-1089074173,-1093733821,-1096742887,-1106170901)+W(6,1040310153,1009201364,1040208083,-1116554445)+W(7,1044292534,-1141695574,1042140272,-1106848091);sum2=W(0,-1110453349,-1118716929,-1111084235,1027079271)+W(1,1058163522,1060433363,1058751114,-1077532089)+W(2,1048158098,-1117235638,1037169053,1044450691)+W(3,-1086959067,-1096141012,-1102281652,1061563184)+W(4,1064329884,-1122504669,1037379653,-1106426334)+W(5,-1081956377,-1081432626,-1086790317,1073667932)+W(6,-1096499673,1023790996,1035642078,-1103100998)+W(7,1059064502,-1109003581,1048822766,-1089552462);WS(-1079238176,-1098575359); +sum1=W(0,-1122061272,1012614613,1049213476,-1091368434)+W(1,1050034455,-1115399887,-1105000541,1040609063)+W(2,1040856756,-1098659523,1050219649,1046432350)+W(3,-1092787824,1045840143,-1102913028,-1104981396)+W(4,-1106993315,1049053518,-1088887964,1061247706)+W(5,-1113029435,-1096901418,1045569657,-1106428832)+W(6,-1113276757,-1110111537,1048270483,-1098550683)+W(7,1053252708,-1120030007,-1144293604,1037272948);sum2=W(0,1035271628,1033447544,-1113618952,-1104023060)+W(1,1022009109,-1104458884,1044684178,-1104406640)+W(2,-1096995906,1032410306,1053850685,1054515359)+W(3,-1114408860,1030897990,-1115683354,-1106540716)+W(4,-1097624644,1048740225,-1109777102,1058355960)+W(5,-1139294461,-1116975083,-1099524388,1036671037)+W(6,1051183735,-1095652467,1037584786,-1116173683)+W(7,-1096371453,1030595307,-1117706649,-1108415342);WS(1064155455,1041078114); +sum1=W(0,-1114884791,1038026665,1040569148,-1123095214)+W(1,-1113346810,-1098688777,-1106297864,1033022404)+W(2,-1133388468,-1103926126,-1088265213,-1088521037)+W(3,-1094483240,1052099081,1038941559,1027852876)+W(4,1031759625,1051074474,1049866386,1060913876)+W(5,1044072016,1034732568,-1138713347,1019301565)+W(6,-1116707016,-1135572861,-1145284192,-1110455500)+W(7,-1116167073,1029730485,1017022612,1028095637);sum2=W(0,1027468398,-1111732215,-1149402831,-1136133524)+W(1,1058132410,-1084703700,-1103172541,1011948492)+W(2,-1120484835,-1115316427,1042551085,-1101059653)+W(3,1067179636,-1093846517,1015696434,-1119207903)+W(4,1033713911,-1113615213,1015721118,1005178376)+W(5,-1112798365,1036573120,1035924289,-1106241198)+W(6,1037828351,-1102210431,1027887653,-1105049969)+W(7,1033627060,-1112780439,1025169534,1034168377);WS(1056869759,-1097268032); +sum1=W(0,1018133293,-1105532941,1027243330,-1097428310)+W(1,-1099204213,-1133851766,-1138393927,-1118550618)+W(2,1036411431,1007771751,-1116024394,1032024955)+W(3,-1130187397,1034973653,-1114469768,-1118964077)+W(4,1039633317,1034605623,1050783724,1010531964)+W(5,1045069064,1044277428,1046520720,1036629184)+W(6,-1111689725,-1107937040,-1105991139,-1109581452)+W(7,-1103861656,1044990678,-1106353867,-1155661924);sum2=W(0,1031819015,-1113612713,1040659447,-1113225510)+W(1,1023788280,-1115035325,1009487418,1023947578)+W(2,1040620760,1045122152,-1122637452,-1080510307)+W(3,-1103769905,1050277803,1041168723,-1112728330)+W(4,-1130428603,-1113774176,-1093905874,-1073670430)+W(5,1040925011,1074164392,1056579340,1044922942)+W(6,-1130628701,-1118722775,1015363301,-1129641903)+W(7,1045479736,997650792,1043373785,-1122436477);WS(1064095487,1025785067); +sum1=W(0,1026371284,-1097495743,1050378694,1008396404)+W(1,1042871873,-1103138663,-1136206974,1034556564)+W(2,-1106851535,1042476562,-1104849584,-1085976658)+W(3,-1097042470,-1109264236,1035073279,-1094929447)+W(4,-1128892272,1049973404,-1115675316,1058008769)+W(5,-1098054097,1052615848,1037088776,1045135411)+W(6,1040514533,-1103190740,1040022019,1040395090)+W(7,1050097558,-1102548473,-1157051795,1023679636);sum2=W(0,-1124722923,-1114618025,1043439029,1036363299)+W(1,-1096133271,1049502378,-1106999272,1013819494)+W(2,1033420628,-1100145939,-1115804833,1057589449)+W(3,1053618149,-1091358477,1030436134,-1119548384)+W(4,-1105442746,1047309531,-1084852425,-1089136554)+W(5,1028964970,1056312267,-1100909906,1043379377)+W(6,1029168594,1048079041,-1101613108,1042227257)+W(7,1045151454,1041752672,1036382707,-1113267324);WS(1060109055,1023402244); +sum1=W(0,1039025762,-1109278395,-1125210976,-1107337262)+W(1,-1119314274,1038278743,-1120902815,1024999351)+W(2,1051909299,1054481389,1061074499,1069080830)+W(3,991275263,1049054227,1043342663,1051802331)+W(4,-1098089231,-1093104548,-1087624466,-1092709234)+W(5,-1085745760,-1093068092,-1102438460,-1098889074)+W(6,-1107880995,1018380380,-1167447218,-1119879878)+W(7,1030906608,1028271716,-1122586985,-1107737008);sum2=W(0,995982518,1033194341,1038373562,1040171687)+W(1,-1108098969,1027047733,-1147696971,1033796110)+W(2,1035578813,-1121421677,1046888388,-1103362299)+W(3,1050255581,-1096418856,1042040695,-1116244525)+W(4,-1118279893,-1114972659,1069469835,1078927590)+W(5,-1065023683,-1082214759,1045909115,-1112457727)+W(6,-1115504751,-1108849613,1041670894,1050450381)+W(7,-1097423961,-1114805949,964966831,1025540676);WS(-1092049407,-1078216845); +sum1=W(0,1019093687,1030002432,-1100550858,1055647027)+W(1,-1103872766,1041444210,-1115845919,1042339236)+W(2,1057591089,1050969332,1056027116,1063070242)+W(3,1039049940,1057957242,1034942714,1059965491)+W(4,-1089127853,-1096074010,-1082843219,-1088645600)+W(5,-1097545633,-1095349663,-1103665506,-1089209262)+W(6,-1109784091,1043174565,-1126191805,1049441628)+W(7,-1097650089,1024042875,-1123963793,-1105758607);sum2=W(0,-1086426610,-1096143108,-1089951657,1062855195)+W(1,1068897447,1074016711,1075026151,1074160921)+W(2,1062347208,1055082976,1045157118,1048769854)+W(3,-1073459143,-1078468086,-1071781830,-1072043968)+W(4,1053593730,-1101252044,-1111940928,1037201995)+W(5,-1091098547,-1119407664,1031118734,-1095931446)+W(6,-1108806990,-1138780047,-1099705126,1058343455)+W(7,-1094950430,1046274438,-1128975824,1035271906);WS(-1092377983,1032564911); +sum1=W(0,1026968586,1001025293,-1101464865,-1099757657)+W(1,-1099131534,1021990836,-1124857771,1016095931)+W(2,1051240140,-1135919542,1047585891,1046337282)+W(3,1042168181,1042765483,1039475666,1031087233)+W(4,-1140824311,-1114206145,1035412731,-1093593858)+W(5,1042300945,-1105010841,-1129901419,-1150842169)+W(6,-1108814006,1031981930,-1105914151,-1111723206)+W(7,-1114245051,1047084274,-1110153104,1021006644);sum2=W(0,-1152594313,-1114711758,-1122222477,-1119994373)+W(1,-1117872135,-1136114154,-1118889611,-1120239593)+W(2,-1103837493,-1102219265,1021928584,1043085394)+W(3,-1098150014,-1114380427,-1103586212,999997765)+W(4,-1119502913,1049238470,1051353268,1069806319)+W(5,1040245198,-1084770114,-1097500544,1032457879)+W(6,1035550709,-1111809635,1038283603,-1113383091)+W(7,1038911980,-1106271331,-1109409577,-1130668925);WS(1066805616,-1146277627); +sum1=W(0,-1135230785,-1149155717,1034010150,1042337650)+W(1,-1127867356,1036367663,1011804270,998521116)+W(2,-1097679853,-1106566573,-1092037473,-1085421897)+W(3,-1091217395,-1094061036,-1108406741,-1096997053)+W(4,1046488473,1047676826,1047117051,1062693860)+W(5,1049537116,1056189429,1017502967,1049188263)+W(6,1036204713,-1098488427,-1103697017,1057957971)+W(7,-1114566390,1034870184,-1103604141,1029261884);sum2=W(0,-1122819855,1029215207,-1109976389,1044451524)+W(1,-1130065951,1027965847,-1119702735,1036873692)+W(2,1035645255,-1111163705,1026839491,-1095838714)+W(3,-1147512571,-1156411358,-1110332882,-1114357123)+W(4,-1107161682,1019166485,-1129473215,1082201538)+W(5,1052773623,1033233466,1034307583,1001850219)+W(6,1042480496,-1107159841,-1115971786,-1067229991)+W(7,-1091650896,-1142132409,-1107215185,1025815163);WS(1040205182,1040987841); +sum1=W(0,1032709552,1028035406,-1152624047,1047238622)+W(1,-1110798127,-1160283945,-1129145589,1035307633)+W(2,1050828331,1054299632,1000765841,1064828620)+W(3,1059217829,1057730984,1050797759,1040620053)+W(4,-1098789018,-1102534446,-1087146945,-1084918512)+W(5,-1080798168,-1094152707,-1154982570,-1104995442)+W(6,-1130845956,-1131566290,1024089890,1044521480)+W(7,1041701723,-1105870556,-1121779940,-1110323595);sum2=W(0,-1104834685,-1098615503,-1090508283,-1080862372)+W(1,1048874616,1063492499,1035824034,1062512173)+W(2,1039834326,1050496819,1045914856,1070974917)+W(3,-1085801376,-1081343708,1033985362,-1089072248)+W(4,1040649104,1034170750,-1118657109,-1102559609)+W(5,1041220807,1047362948,-1099586035,-1130222490)+W(6,-1113573633,-1119108596,-1128160390,-1095002000)+W(7,1053594264,1022825140,1041895669,-1115149866);WS(-1087487423,1060332710); +sum1=W(0,-1105878689,1042437466,1040585322,-1121111477)+W(1,-1112195269,-1112892785,-1122925576,1012646976)+W(2,-1095746139,-1089004262,-1081828961,-1099866351)+W(3,-1115422148,1039314504,-1117471766,-1108492170)+W(4,1053913286,1055197099,1059867107,1061690846)+W(5,-1104536871,-1102951638,-1107184778,-1130420108)+W(6,1037671952,-1117440135,-1114610404,1028605502)+W(7,1040822242,1041433743,1048192776,1029799624);sum2=W(0,1017331955,-1104677463,-1117673238,-1094338757)+W(1,-1119646366,-1104710153,-1107625181,1022869095)+W(2,-1097747777,1040900608,-1081336501,1073518733)+W(3,-1103573743,-1106204508,1041186571,-1097636016)+W(4,-1097037835,1016355419,-1089023490,1068423959)+W(5,1048344480,1057220074,1033091565,1053959289)+W(6,-1162485367,-1104406873,-1117660642,-1096388411)+W(7,-1093216188,1028492960,-1092192530,1049060345);WS(-1096756863,1051174382); +sum1=W(0,1025372546,-1106905723,-1114360751,1025624474)+W(1,1037998160,1032794399,1034992970,-1114244794)+W(2,-1115668125,1039995714,1043101563,-1089490746)+W(3,-1092891318,-1107085565,-1114405501,-1168885266)+W(4,1000611497,-1105014230,-1117013085,1058174613)+W(5,1045000731,1035643438,-1121180749,-1120880459)+W(6,1034391118,1041916975,1027806076,-1111998130)+W(7,1008039732,1030397185,1018926829,1029203969);sum2=W(0,-1089960886,-1092452707,1049541326,1032119458)+W(1,1032929374,-1110883627,-1123073435,1026522309)+W(2,-1095856011,-1106157919,1074170001,-1085150802)+W(3,1046048366,-1112079347,1027735021,-1111935169)+W(4,1007316785,1041476280,1050706137,-1083810164)+W(5,1043182557,-1129593193,-1214669080,1009058861)+W(6,1036775569,-1107942220,1021239050,-1132331444)+W(7,1036225521,-1113579728,1009639193,1022066674);WS(1063524863,1010978751); +sum1=W(0,1033376264,1035248130,1029138555,1040606570)+W(1,-1146340206,-1122169062,-1113033206,-1115451138)+W(2,-1090913225,-1094935586,-1084407830,-1085174115)+W(3,-1080254739,-1094320024,1033710501,955403507)+W(4,1054337940,1045510498,1057961148,1062831778)+W(5,1060252175,1058700983,1045946247,1033261261)+W(6,1034437913,1040021853,-1141033844,1032741433)+W(7,-1127614262,-1136275261,1007782611,1030604567);sum2=W(0,-1096400044,1043917783,-1123678571,-1090244436)+W(1,1046901313,1048870815,1033884063,1053211427)+W(2,1053621644,1009306318,1051339656,1062093709)+W(3,-1080576226,-1106342004,-1098524562,-1124418811)+W(4,1017015195,1005897821,-1141989437,1065539532)+W(5,-1083332175,-1097183812,-1097464341,-1092155120)+W(6,1037111777,-1106811629,1047789047,-1093438727)+W(7,1049955112,1043219374,1050393105,1044056917);WS(-1085369887,-1080302329); +sum1=W(0,1021216124,-1121762938,-1103047566,-1094342263)+W(1,-1105630871,-1107174593,1025950537,-1146340105)+W(2,-1112260523,-1119192737,1050211017,1058411732)+W(3,-1139271463,1042276856,-1113852108,-1119668597)+W(4,1035888345,1049037307,1061443675,1044828010)+W(5,-1119204121,-1100915542,-1174284878,-1119790119)+W(6,-1110274640,-1111476420,-1097892613,-1097171068)+W(7,-1112160677,1026261917,-1110403297,-1132483222);sum2=W(0,-1115512925,-1146353705,1036066439,-1134998124)+W(1,-1093678923,-1122018103,-1110317749,1002801625)+W(2,1035074177,1040461813,1042528734,1058355837)+W(3,-1081621864,-1089980594,1049357806,-1101025299)+W(4,-1191992884,1043381354,1059049535,1058956516)+W(5,-1095612272,1050844919,-1100731037,1036998024)+W(6,-1115656893,-1137020948,1021899784,-1112812041)+W(7,1012903452,-1123282157,-1122890057,1023124620);WS(-1106521214,-1077666555); +sum1=W(0,1003321829,-1120901013,-1105222370,-1107011833)+W(1,1029823211,1000924822,-1127794128,1027793952)+W(2,1052142545,1052094618,1060439250,1059969903)+W(3,-1095361591,1039904896,1000548911,1046166153)+W(4,-1102912320,-1105733097,-1085669204,-1113880763)+W(5,1052882623,-1107186882,-1118745688,-1096551831)+W(6,-1108686032,-1118608535,1045702647,-1106161276)+W(7,-1103122454,-1106172071,-1113781993,-1132637458);sum2=W(0,1034079401,-1123608512,999851902,-1128074608)+W(1,-1102099502,-1109589984,-1127758712,1032460032)+W(2,1025264110,-1119278092,1031056700,1059405503)+W(3,-1123208440,-1081290516,1015173988,-1121242732)+W(4,-1123371956,-1104246380,1051208451,1063218900)+W(5,-1110007228,-1131612640,-1124651080,1025045004)+W(6,-1116991392,-1156408861,-1098806852,1038716729)+W(7,-1136590423,1034885175,1009682031,-1115963068);WS(1061862175,-1081928168); +sum1=W(0,-1105584175,1024897880,1038516044,1040792761)+W(1,1041867802,-1146323132,1033649803,-1113939311)+W(2,-1105871745,-1093982770,-1092069365,-1083616743)+W(3,-1089303929,-1089274268,-1106858177,-1096909360)+W(4,1043886056,1052657028,1055074797,1065026281)+W(5,1056987882,1054263413,1043742846,1049053899)+W(6,1027658214,992865878,-1121064957,-1106374835)+W(7,1015027694,-1132520748,-1137844354,1017619030);sum2=W(0,1078367032,1056220347,-1078889751,-1073546091)+W(1,-1104234997,-1129365336,-1132392998,-1105729449)+W(2,1027322757,1044756153,-1096547764,-1101560565)+W(3,1042443775,1048890957,-1104280017,1028418751)+W(4,1023449836,-1148770222,1043960988,-1126862726)+W(5,1029550531,-1133306383,-1130422948,1042854212)+W(6,-1115583846,993742973,-1130380138,-1147412718)+W(7,-1115461788,1019814478,-1143007558,-1123464959);WS(1052938943,-1103606318); +sum1=W(0,-1114719934,-1110318513,1051495307,-1100729633)+W(1,1058926789,-1090569589,1050591187,-1120060704)+W(2,-1087051802,-1108424920,-1085940948,-1082198177)+W(3,-1090825863,-1088355266,-1096343413,-1090847836)+W(4,1058073278,1044445625,1060893495,1058839039)+W(5,1060585177,1053564817,1054456219,1059253187)+W(6,-1114447856,1040769086,1037779432,-1103818980)+W(7,1053070735,-1091337376,-1131842819,1026807692);sum2=W(0,1015621136,1032703681,1048700747,-1098355550)+W(1,1047054427,-1097901072,-1126056922,-1165737020)+W(2,1033006755,-1098289077,-1098808895,1046984196)+W(3,-1083721832,1061110777,-1109410901,1047097145)+W(4,-1072583370,-1084108607,-1081224226,-1081041246)+W(5,1069053051,1046858869,1068664236,1076043754)+W(6,1074691924,1067219112,1064576163,1066863963)+W(7,-1084686190,-1086075738,-1079374171,-1071293986);WS(-1083248351,1041375270); +sum1=W(0,998616699,-1142901727,1043282847,-1128981712)+W(1,1049050406,-1110272759,1045114289,-1170526381)+W(2,-1087439008,-1092067298,-1097778587,-1084179155)+W(3,-1090979219,-1086455104,-1095775369,-1087021556)+W(4,1054645196,1052452449,1050602866,1058025241)+W(5,1061357806,1053431193,1052134295,1053157267)+W(6,1045294540,-1128264947,1042620067,-1146688137)+W(7,-1127282486,-1125997182,981342481,1046767364);sum2=W(0,-1076239116,-1079299620,-1079042334,-1083365485)+W(1,1049726715,1066758659,1069675355,1075688460)+W(2,1068235144,1068687973,1068481951,1066921525)+W(3,-1106704213,-1080829299,-1077473679,-1073149491)+W(4,1054062613,1019509447,1057377046,-1100834259)+W(5,-1095788298,-1107253929,-1112126912,-1090199615)+W(6,-1114529265,-1116897962,1041823371,1032806429)+W(7,-1104989857,-1107915189,1021289065,1034867372);WS(-1089965567,1041739713); +sum1=W(0,1014059625,-1109541748,-1120181702,-1113826001)+W(1,-1099389050,-1107441048,-1110918155,-1129336123)+W(2,1050606464,1046384755,1052952467,1062759283)+W(3,1061539071,1056969105,1043585729,1054439728)+W(4,-1097348868,-1098095776,-1098227712,-1097909490)+W(5,-1089710746,-1097990985,-1112431723,-1101291373)+W(6,1016608410,-1110057610,-1165355548,-1103909923)+W(7,1018410859,-1097884829,-1109883584,-1118732474);sum2=W(0,1035083591,-1112359157,1037205500,-1119560270)+W(1,-1130432545,1033928454,-1111608107,1027763767)+W(2,-1113211599,1037267536,-1110383577,1053336900)+W(3,1036846600,1029308948,1035214305,-1137000642)+W(4,1032203968,-1129901649,1050641640,1062183610)+W(5,1052549520,1037218786,-1098666781,1041216407)+W(6,-1112771443,999833884,-1113848439,1048127168)+W(7,-1087091182,-1080175934,-1106600446,-1105808372);WS(1040803966,-1079223548); +sum1=W(0,-1103550802,-1113401739,-1105545077,-1095164520)+W(1,-1102562113,-1106149592,-1123094707,-1105989383)+W(2,-1108233168,-1097729981,-1112466052,1056711305)+W(3,1033129898,-1100704991,-1106323272,-1109921151)+W(4,-1115946235,1016715200,1051122342,1072346450)+W(5,1046866637,1041579689,1017795558,1019070562)+W(6,1021078213,-1123835458,-1103483180,-1092700173)+W(7,-1104392485,1033532004,-1128003929,-1109398092);sum2=W(0,-1132003761,-1126076753,1028715469,-1094940877)+W(1,-1096054213,1050064171,-1095828963,1024912709)+W(2,-1097131135,-1098724323,-1094337061,1075670208)+W(3,-1092647285,-1119763725,-1104609741,-1103386045)+W(4,1033952970,-1102131199,1043946979,1037045260)+W(5,1052392413,-1101691459,-1104710657,1042676905)+W(6,-1114013558,1027012993,-1109613274,1026138301)+W(7,-1107006741,1032910718,-1127911473,-1109320626);WS(-1077711088,-1080462700); +sum1=W(0,1016976667,-1143635214,1050435883,1025648038)+W(1,1033190198,-1119077035,-1127874241,-1124293633)+W(2,-1095463505,-1094028818,-1084473735,-1081613943)+W(3,-1092817267,-1089963906,-1112556483,-1096263708)+W(4,1048382760,1043759401,1060944248,1061061657)+W(5,1059085444,1058923652,1024757337,1052630131)+W(6,1033669226,1023995271,1038367764,-1104130812)+W(7,1035230572,-1115548134,998948881,1035279350);sum2=W(0,-1118714905,-1128906105,-1104617441,-1102497202)+W(1,1052988680,1025452854,-1147569173,1045309195)+W(2,1038737245,1033599435,1047074065,-1081197801)+W(3,1051590837,1036478618,1034730428,-1096538670)+W(4,1045939428,-1124872105,1073600723,-1069501955)+W(5,-1078764847,-1078626366,-1094352359,-1097394746)+W(6,-1084863446,-1120736313,1072627800,1076529178)+W(7,1066278053,-1115729701,-1119746081,1001372341);WS(-1085605823,1039908372); +sum1=W(0,-1110519177,998302542,-1105109851,1051114493)+W(1,1047758692,1047411644,1008966514,1027414133)+W(2,-1101464226,-1097280531,1050325520,-1093718398)+W(3,-1109283231,-1103804777,-1107759461,-1099881946)+W(4,1050281295,1040574050,-1112501642,-1095999987)+W(5,1052111506,1013903280,-1131548857,1037344125)+W(6,-1136474287,1017687606,1027599892,1038451002)+W(7,-1112873934,1026946257,1007362713,1030395745);sum2=W(0,-1115357326,-1129481498,1037423788,-1149109833)+W(1,-1107237807,-1098320683,-1118016391,-1111060805)+W(2,-1098998597,-1104582263,-1098625511,1036322812)+W(3,1050926614,1045914812,1029306918,1035368549)+W(4,1033193484,1041990652,1052524895,1029624616)+W(5,-1102468922,1016354632,1029333966,1036818044)+W(6,-1119934044,-1109942748,1028176618,1032249206)+W(7,-1117055607,1026298641,-1116685452,-1113790705);WS(1066221936,-1112686252); +sum1=W(0,-1111426931,1049363148,-1090113310,1038796336)+W(1,-1102958241,1041899238,-1104001476,-1112879133)+W(2,1042737360,-1108750629,1053136109,-1095853365)+W(3,-1108890233,1023718298,1033191264,-1165972390)+W(4,1039181581,-1105687720,1051677110,1031102479)+W(5,1058267293,-1089545128,1047293124,1010166848)+W(6,-1110677245,1035534704,-1101864162,1019901392)+W(7,-1107302241,1048841797,-1106653499,989728967);sum2=W(0,1019579309,-1115216952,-1101014764,1035949455)+W(1,-1125343389,1020295703,-1107189524,1032252124)+W(2,-1121628281,1041466962,1044350744,-1096356807)+W(3,1019949697,1011899626,1020414781,-1108620092)+W(4,-1104132268,-1110659898,-1092586315,1067161402)+W(5,1044980625,1028945397,1024223321,-1106879950)+W(6,-1133616314,1046938970,-1089581193,-1097777539)+W(7,1025080038,1042942659,1000298789,1034429670);WS(1065647552,1042223795); +sum1=W(0,-1118213891,1047859212,-1102035956,1049817209)+W(1,-1136727619,1018314812,1048950515,-1111834851)+W(2,-1090185691,-1099254654,-1085546115,-1090115457)+W(3,-1086839140,-1089622500,-1103143659,-1088857895)+W(4,1054600851,1056675965,1052764224,1060918524)+W(5,1050058698,1053194074,1055030644,1046059111)+W(6,1042956769,1045938459,-1095542592,1048397149)+W(7,-1107166488,-1115710386,1046421002,1019098869);sum2=W(0,1038047795,-1100534663,1043709757,-1098906327)+W(1,1054998296,-1097979318,1042447686,-1135615252)+W(2,1045715537,-1109612723,-1109559353,-1088589586)+W(3,1046750383,1030039799,-1112135838,-1108474833)+W(4,1062099960,1074456323,1074047524,1061406543)+W(5,-1109444720,-1095255331,-1106577876,-1098188594)+W(6,-1074982428,-1071944747,-1086420775,-1087600981)+W(7,1058024333,1040647828,1042372587,1051479186);WS(-1099261566,-1102058551); +sum1=W(0,1037460750,-1118752449,1048855473,1046116085)+W(1,1041532007,1043443965,1035797482,1048656673)+W(2,-1099740733,1038344912,-1097823268,-1077722267)+W(3,-1086845489,-1109540512,-1112472539,1006300060)+W(4,1035868896,1028635221,-1135561696,-1089090112)+W(5,1054063629,1036245196,1039520068,-1115462467)+W(6,1046250530,1040547388,1049218244,1053686776)+W(7,1041462458,1041323791,-1116084210,1050214602);sum2=W(0,-1107023704,-1103130345,1025081245,1007138702)+W(1,1020633935,1042694232,-1116958023,-1117764771)+W(2,-1099880087,1049640504,-1099241173,1060797185)+W(3,-1096100738,1034621436,-1100840753,1051814059)+W(4,1047853298,-1100868353,1050410790,-1096656068)+W(5,1053061345,-1092716332,1057695342,-1092707384)+W(6,-1106650230,1035820630,-1111373979,1048085306)+W(7,-1098540289,1045275377,-1095110662,1026583068);WS(-1081437504,-1086037448); +sum1=W(0,1002898847,1034161364,-1097339820,-1102052735)+W(1,-1122224578,-1116847174,-1124219870,-1114337484)+W(2,1048903167,1048827465,1058952469,1062493730)+W(3,1056452878,1052097743,1046287775,1051622635)+W(4,-1098037791,-1110924302,-1089826679,-1082951605)+W(5,-1095802941,-1093057352,-1115921615,-1097214606)+W(6,-1124004134,1038960439,-1109622563,1046141833)+W(7,1037494008,-1142221339,1018754897,-1115514650);sum2=W(0,1026296217,1046658552,-1092482457,1048926974)+W(1,-1093986590,1051240634,1031417427,-1116201775)+W(2,-1098267531,1054123387,1031912087,-1103258874)+W(3,1064081451,-1081783631,1052301313,-1136084293)+W(4,1056065541,-1080723543,1068312252,-1095327126)+W(5,-1101319294,1054428583,-1095108256,1032992382)+W(6,-1107249906,1049528827,-1094476247,-1114829012)+W(7,-1110151549,-1109929036,1023898518,-1131461985);WS(1059931039,1045326059); +sum1=W(0,-1105339195,-1116497429,-1104905094,1048600749)+W(1,1017781140,1028510504,-1104151378,1006123003)+W(2,1027626820,-1102542884,1042432944,-1087368655)+W(3,-1090841955,-1098837680,-1135818261,-1102238241)+W(4,1035394960,1045819641,1050447189,1050459387)+W(5,1058872902,1038310627,1009721182,1039487803)+W(6,1020852317,-1110241387,-1120454715,1028063406)+W(7,-1135766366,1046575867,-1121800177,-1138241103);sum2=W(0,-1108715925,-1125695753,-1106861101,1037467647)+W(1,1049447879,-1108013135,1016159100,1025122350)+W(2,1033521028,-1107049318,-1126359337,1024736242)+W(3,-1096919459,1030099711,1038861546,1027296385)+W(4,-1130002309,1043711791,1069432650,1069236178)+W(5,-1089672176,-1104043463,-1102967963,-1115278753)+W(6,1043372642,-1096562690,1055907536,-1077602923)+W(7,-1079492159,1048192702,1041544949,1038199238);WS(1065273279,-1155200022); +sum1=W(0,1032043190,1042748400,1044363154,-1101712885)+W(1,1020290996,1042545917,1023679047,969146311)+W(2,-1110724474,-1113644224,-1103694886,1049530899)+W(3,1032343156,-1119655327,-1113927803,1014066252)+W(4,1048813356,-1113329098,-1138873982,1013956115)+W(5,-1088512539,-1118975351,-1112426340,-1102619473)+W(6,-1107914275,1017813644,-1119126921,1030506334)+W(7,1047677002,1035449518,1040385292,1037002750);sum2=W(0,-1105379539,-1114326988,-1128505094,-1127815582)+W(1,-1144273240,1011114412,1010998384,1008109660)+W(2,1040024171,1033596237,1027874005,-1090164335)+W(3,1026082941,-1098155637,1010514392,-1110656550)+W(4,1054804566,-1100858724,-1108932212,1015111122)+W(5,1057491035,-1123558275,1041639386,1025837089)+W(6,1020126178,1058095820,-1095228668,-1114002666)+W(7,-1109234902,-1117423595,-1148517800,1028462436);WS(1064822335,-1095840736); +sum1=W(0,1049019197,-1114924672,1006539024,1027273471)+W(1,1024001604,1023329786,1034076369,1032078653)+W(2,1056391992,1052717533,1053226600,1063307800)+W(3,1051465786,1056189595,1051405604,1049885284)+W(4,-1082098174,-1097259572,-1083318869,-1085358981)+W(5,-1093212548,-1096912972,-1097995110,-1090164049)+W(6,1047279757,-1158101509,1028150783,1048033194)+W(7,1040827508,-1122795750,1040247311,-1102713147);sum2=W(0,1044291516,-1105536143,-1123279074,-1102729189)+W(1,1019015608,-1098099014,1041233257,-1116414073)+W(2,1057945825,1059138923,1064153610,-1117658388)+W(3,-1082824416,-1088923796,-1114762777,-1093119165)+W(4,1075245425,1063262829,1058517731,1055818216)+W(5,-1095331241,-1082492094,-1084810008,-1076437009)+W(6,-1075047571,-1084742426,-1087050661,-1094508761)+W(7,-1107921801,1066223948,1065694420,1070896480);WS(-1090760447,1052695066); +sum1=W(0,1032827391,1004836815,1040820154,1033221771)+W(1,-1142824410,1019263487,1033909728,1030288497)+W(2,-1086160295,-1100507696,-1085279840,-1085951050)+W(3,-1090476887,-1096291378,-1104244158,-1096098979)+W(4,1058956361,1050270371,1061054293,1060000376)+W(5,1053225609,1052048107,1044967298,-1123372967)+W(6,-1122589400,1011775197,-1126907788,-1109718672)+W(7,1031459881,1014310644,1002236306,1050105184);sum2=W(0,-1115548553,1010795990,1025233265,-1108773712)+W(1,1028577219,-1123367926,1027045545,1016487959)+W(2,-1119133376,1054475337,-1126101085,-1096206384)+W(3,1025243447,-1123699076,-1116348436,1026289255)+W(4,1034230379,1049648601,1031862009,1056453743)+W(5,-1092511031,1040231624,1052333940,-1098871930)+W(6,-1106450540,-1130742967,1074765700,1076253468)+W(7,1067142167,-1082850789,-1074864896,-1066441953);WS(-1098442559,1026469881); +sum1=W(0,-1149983818,-1119522441,-1111872220,-1148708523)+W(1,1033974589,1034687077,-1121497336,1040191316)+W(2,1050517915,1049663660,1057681670,1054270423)+W(3,1065584902,1060962908,1043551013,1037520938)+W(4,-1114000872,-1102209381,-1097110004,-1080449641)+W(5,-1089390067,-1088971425,-1096207069,-1098201593)+W(6,-1106643136,-1107005098,-1107624656,1044397088)+W(7,1040137492,1011262833,-1152197144,-1111636393);sum2=W(0,-1093666199,1049995354,-1104373549,-1108191449)+W(1,-1086862321,-1109961150,-1105617480,1057348983)+W(2,1067471948,-1083836095,1067519925,1075025493)+W(3,-1079149522,-1092122258,-1118106953,-1090446878)+W(4,1044138823,-1089657247,1068116530,1070698122)+W(5,-1077256496,-1092830464,-1104600439,-1095892285)+W(6,-1087858714,1040673003,-1086283540,-1107890740)+W(7,1052510667,1044801958,-1113062539,1040940184);WS(-1089367999,-1080592817); +sum1=W(0,1050901372,-1142600967,1043029392,1042662963)+W(1,-1131715556,1028335344,1009439676,1040529906)+W(2,1020565079,1046045566,1051791856,1059303201)+W(3,1060541458,1057651322,1050310918,1061742083)+W(4,-1098563453,-1094642094,-1092783656,-1082254536)+W(5,-1088235102,-1083519131,-1088554180,-1084895582)+W(6,-1123752726,1032349343,1017360893,1040706037)+W(7,1038984656,1042767141,1039511244,1037250730);sum2=W(0,-1086948904,1044777691,-1085906527,-1107333159)+W(1,-1094251850,-1101622483,1054103540,-1095334551)+W(2,1072921984,-1096214776,1069427540,1069014322)+W(3,1068759557,-1095651744,-1080635176,-1071443034)+W(4,-1102597600,-1086612116,1055370552,1068187895)+W(5,1049876941,-1098339283,-1098368915,-1119710681)+W(6,-1081008410,1053678014,-1094318103,1040782350)+W(7,-1097053445,1052418274,-1116179967,1057760894);WS(-1072329816,1074376722); +sum1=W(0,-1119826815,1034466519,-1121811611,1040071236)+W(1,1034412551,-1125783811,1025497578,989295697)+W(2,-1097135645,-1100415357,-1123247055,-1078161261)+W(3,-1086793716,-1092987820,-1117997032,-1097292445)+W(4,1051061560,1050212013,1057003368,1050094223)+W(5,1060987117,1053182609,1030369595,1040352158)+W(6,1001332238,1009264740,-1119531350,1047608180)+W(7,-1139666027,1053959834,-1130537576,1003451511);sum2=W(0,1010850411,-1119692159,-1110113403,1041465994)+W(1,1019542894,1041361680,-1128076954,1035827461)+W(2,1033963983,1024673399,-1107122545,1041917938)+W(3,1031918417,1016152214,-1119110501,-1108745692)+W(4,1041326744,-1126975570,1049177676,1075051781)+W(5,1057547658,-1100210466,-1101468559,-1111890885)+W(6,-1110591524,1039643589,-1098235771,1061676083)+W(7,-1072022345,-1080793678,1038326573,-1115279667);WS(-1089734463,1065567745); +sum1=W(0,-1115310942,1048676446,1051913151,1041943745)+W(1,1032260949,-1123414147,1025799735,-1118314271)+W(2,-1089748010,1033541431,-1091844976,-1078026925)+W(3,-1083863979,-1088695462,-1097284573,-1090712276)+W(4,1053493076,1047890913,1060749357,1057682191)+W(5,1060855949,1057895644,1049355215,1052101531)+W(6,1041536229,-1111760907,1031051700,1033727319)+W(7,-1117552023,-1123512523,-1134918146,1037093278);sum2=W(0,-1087048499,-1089227831,-1081828818,-1106022394)+W(1,1057638724,1053589051,1030725267,1050363813)+W(2,1067110585,-1073947481,-1100054441,1057992187)+W(3,-1096117153,1049824990,1008667589,1047082764)+W(4,1062551012,-1107011493,1044700801,1053279159)+W(5,1047077354,-1098858111,1055551992,-1093863007)+W(6,-1088705293,1063056164,-1091908804,1049660447)+W(7,1041467137,-1112699600,991046018,-1118599281);WS(-1079109040,-1085312521); +sum1=W(0,1023769582,-1140282322,-1105105824,1041551140)+W(1,1030694836,-1111084358,955351653,-1133450021)+W(2,1037365911,-1117579705,1052645482,1061549365)+W(3,-1092653220,1050958145,-1113919416,1047664699)+W(4,-1113299189,1042794748,-1086336671,-1087637436)+W(5,1051894263,-1111723928,1039072513,-1111528112)+W(6,-1127522065,-1098682508,1041518392,1049784787)+W(7,-1104535548,-1112540051,997865134,-1121426302);sum2=W(0,-1112127727,1037755147,-1117076760,-1096944427)+W(1,920706880,-1126463908,1025583781,1016301114)+W(2,-1182735741,-1116775242,-1110833901,1050960349)+W(3,1057824022,1025802869,-1117624689,-1106817101)+W(4,1027967369,-1108084106,1047419656,1057406540)+W(5,-1106635563,1030718323,-1129307942,-1146210056)+W(6,-1099828018,-1106208929,-1106621688,-1093670465)+W(7,1046907280,-1104727129,1024731263,-1133403952);WS(1066445424,-1114782683); +sum1=W(0,-1105169880,1037849343,-1111719878,1053025475)+W(1,-1106443352,-1118185334,-1115180998,-1104379365)+W(2,-1110498524,-1092096849,-1089773556,-1093199580)+W(3,-1085224723,1017432168,-1097477655,-1120659192)+W(4,1042140161,1045982494,1059787797,1058443885)+W(5,1058982105,1051015495,1049335790,1047806371)+W(6,1033176686,1027992139,-1104315937,1034263873)+W(7,-1099213011,1015617473,-1134277975,-1124174113);sum2=W(0,1035156885,1010861092,1053142713,1050643378)+W(1,-1093995815,-1100307988,-1094190457,-1095534688)+W(2,-1104443938,-1111353322,-1092519845,1033492110)+W(3,1061622434,1045835461,1054276307,-1118030035)+W(4,1020765936,-1131256669,1043066295,-1093594884)+W(5,-1090891830,1051701313,-1115303200,1044764145)+W(6,1034215267,-1119467871,1043572605,-1120345789)+W(7,1035132204,-1120193257,-1107758441,1010759898);WS(1053797695,1034928741); +sum1=W(0,-1113709609,-1101985872,-1098832221,-1106547453)+W(1,1032341932,1038712045,1020651977,1037110646)+W(2,1027306577,1036410350,1048222316,1049396519)+W(3,-1093507345,-1098128846,-1102358117,-1095739626)+W(4,-1089618673,-1094568298,-1089721378,1057932790)+W(5,1051551069,1042310981,1032076306,1049811664)+W(6,1039738506,1041675949,1049870789,1032602030)+W(7,1041034929,1020376402,1038606871,1036847389);sum2=W(0,-1107569978,1048834253,1032955728,1047116738)+W(1,-1095875849,1024141754,-1117854930,1031286951)+W(2,-1096371488,-1100415470,-1097656368,1057366407)+W(3,1049724515,1047568587,1025784853,1040928209)+W(4,-1091206842,-1140716449,-1099982688,1067804624)+W(5,-1107732848,-1101898886,-1104360749,-1099991629)+W(6,-1113379832,-1098639187,-1102236471,-1112454303)+W(7,1037256860,1039735469,1034482735,-1122662653);WS(-1100599294,-1113486107); +sum1=W(0,1041832895,-1113994869,-1101582062,-1100675730)+W(1,1015862616,1033573462,-1123901241,-1147102474)+W(2,1058015130,1043005476,1065539217,1054749782)+W(3,1046936430,1043027144,-1122192647,1047923809)+W(4,-1095482492,-1095369841,-1088297536,-1085935041)+W(5,1054414015,-1096194081,-1118572185,-1106262926)+W(6,-1123207408,-1120610968,1040056719,-1111595960)+W(7,-1110844045,1041950395,1007333963,-1097939280);sum2=W(0,1033496750,-1118187780,1041080086,-1102935461)+W(1,1023898015,-1122438380,1007185073,999989929)+W(2,-1105017139,1043450683,-1106458832,1057933296)+W(3,-1098239652,-1111698692,1023645924,1034431733)+W(4,-1118941046,-1142467441,-1096734279,1063076098)+W(5,-1119844388,1048742138,-1096898561,-1090457759)+W(6,1012703263,1009095593,1025973118,-1089439993)+W(7,-1124882200,1004297609,1046154393,1048791679);WS(1058454143,-1086058342); +sum1=W(0,-1115074879,-1099743710,-1103933280,-1113530407)+W(1,-1124606630,-1115568198,-1123572016,-1118699368)+W(2,1051341170,1054019099,1057240637,-1085932301)+W(3,-1090466976,-1097279225,-1108988935,-1095706385)+W(4,-1123276713,-1112675511,-1095853513,1048593300)+W(5,1059272419,1052135974,1039376368,1041536544)+W(6,1040408770,1042487060,1044345774,1034191179)+W(7,-1105205160,-1111240730,-1135917288,1043157563);sum2=W(0,1047642666,-1094360366,-1111839157,-1101124559)+W(1,-1119401007,-1114275291,1010413358,1018914035)+W(2,-1106684338,-1104496052,-1101578828,1062389037)+W(3,-1099504899,-1102577927,-1121638606,-1100286365)+W(4,-1097565895,-1137000462,1017360469,1056361687)+W(5,1057357121,-1111580608,1047557438,-1108198790)+W(6,1038757740,-1120606628,1043520604,-1110716481)+W(7,-1121032787,-1174578992,1020758339,1031842399);WS(-1116191222,-1087222261); +sum1=W(0,1051378220,1026061480,1051132746,-1131139769)+W(1,1029438530,1010253799,-1140691900,1032111196)+W(2,-1092140039,1041212802,1028855632,1054776996)+W(3,1052461054,1056191968,1041996679,1051463563)+W(4,-1098282527,-1108686318,-1114615088,-1096808426)+W(5,-1090181940,-1089672580,-1095415146,-1084069643)+W(6,-1115126509,1018050395,1028919646,1031880915)+W(7,1047407636,1041055121,1025713945,1049760258);sum2=W(0,-1120688670,988781159,1023531678,1034244658)+W(1,1038669521,-1125227753,-1122152897,-1123518214)+W(2,1075791226,-1079951996,-1080919050,-1078043585)+W(3,1061514147,1050383220,1043495776,1056154705)+W(4,1072772368,-1096143661,-1087274515,-1074830486)+W(5,-1138433181,-1091737459,1043710967,1064633897)+W(6,1033088733,-1126178338,1039982901,-1153355920)+W(7,1047086021,-1117938706,1036258954,-1090859740);WS(-1086114623,-1084816591); +sum1=W(0,-1119067590,1041053515,-1123050946,1050414506)+W(1,1017204584,1033253648,-1109025761,-1142909644)+W(2,1036163639,-1112478813,1045609440,-1091176571)+W(3,-1096458464,-1092456237,1039781304,1019336538)+W(4,-1106221778,-1114565991,-1102274148,1041957568)+W(5,-1140250052,1042499428,1024592194,-1110741472)+W(6,1015833809,1041839788,1038604869,1049671879)+W(7,1016035267,1004159150,1019624502,1038938427);sum2=W(0,1006657945,-1145756082,-1102183527,1043063832)+W(1,1048257970,1030027167,-1129422896,-1120006792)+W(2,-1115603798,-1129023472,1024575987,-1070476153)+W(3,1078068971,1034687231,1014471457,998969122)+W(4,1043167348,1029036192,-1134024937,-1079118960)+W(5,1058188063,1026633068,-1138449465,1035752331)+W(6,1032033598,-1122908214,1013148193,-1117007948)+W(7,1026806223,-1106350665,1037397710,-1119066852);WS(1058895967,-1115291633); +sum1=W(0,-1125313920,-1110715998,-1110540830,-1093243535)+W(1,-1098773368,-1114664694,-1108229374,-1128878150)+W(2,-1118075736,1028840739,1050429809,1056177832)+W(3,1050921353,1021103494,1039051533,1048765371)+W(4,-1101537045,-1106860038,-1109809347,1062536899)+W(5,1050429425,1042267175,-1104944731,1019165331)+W(6,-1102743433,-1113756805,-1112821659,-1094426092)+W(7,-1112140166,-1105504016,-1123143221,-1113092552);sum2=W(0,-1118991740,1035161218,1031409558,1025873763)+W(1,-1130385854,-1109675818,1035221069,-1106515599)+W(2,1049660250,-1092533458,1052404039,1059098325)+W(3,1035329255,1033133876,-1100849576,1041079456)+W(4,-1072802862,-1084844108,1059153934,1066715964)+W(5,1054800035,-1121630224,1017402854,1051036492)+W(6,-1093107290,-1131472334,-1099814906,1050189246)+W(7,1033113369,1032032260,999987753,-1109656332);WS(-1088275071,-1079832501); +sum1=W(0,-1121609972,1054795207,-1091175970,1036185063)+W(1,1036253081,-1095852779,1056993046,-1099614386)+W(2,-1140631216,1001216956,-1109051587,-1108520810)+W(3,-1112588624,-1111932116,1018114011,-1114447781)+W(4,1031902612,1053928586,-1100362195,-1118566269)+W(5,1050418310,-1106845532,1057036918,-1106898567)+W(6,-1114449795,1049117898,-1089874193,1024185910)+W(7,1033419200,-1098704820,1052334541,-1103629998);sum2=W(0,1034198694,981839325,1050051875,1043520387)+W(1,-1099547613,1020237946,-1112528204,1032634213)+W(2,-1099753021,1036479145,-1087878645,-1099082069)+W(3,1049181233,-1106552091,1051666481,-1105193718)+W(4,1052074243,1033443852,1061175239,1044393022)+W(5,1036533430,-1125692060,-1100952955,1038429221)+W(6,-1101897553,-1125560160,-1090657055,-1126528836)+W(7,-1113239720,-1111189720,1038783930,-1110455840);WS(1055684799,1057467177); +sum1=W(0,-1115635180,1040983065,1033664034,1047016048)+W(1,1040303666,1031194256,1036112338,1031542812)+W(2,-1084593518,-1097583958,-1088354001,-1083875169)+W(3,-1089538899,-1090088564,-1096939300,-1092334596)+W(4,1057349085,1048845932,1059080519,1057461395)+W(5,1055847004,1052697432,1050363555,1025617138)+W(6,1044528285,-1108137881,1042415046,-1130549589)+W(7,1025308788,1040121956,-1124884732,1051059157);sum2=W(0,1039076253,1043377438,-1111770710,-1129064764)+W(1,1041506513,-1117340191,-1113661124,1006037802)+W(2,1084724252,1057352437,-1070809771,-1070013447)+W(3,1024963427,-1115045950,1037860995,-1120758055)+W(4,1055999642,-1108204793,-1115649819,-1084654208)+W(5,1027889169,1023558847,-1108774739,1034794526)+W(6,-1111202323,982595482,1026864091,1008953953)+W(7,1041107952,-1112891517,-1161342746,1036271073);WS(-1089965247,1033154456); +sum1=W(0,-1118330000,1043361746,1028536899,-1106541856)+W(1,-1103233833,1037178020,-1122355891,-1148310999)+W(2,1037068672,-1091726905,-1106295439,-1087991002)+W(3,-1094017778,1026207675,-1102222128,-1106998176)+W(4,1043453383,1027410848,1047994631,1053447482)+W(5,1058853977,1049286760,1044913013,1056026770)+W(6,-1112803845,1030795409,-1111747193,-1109712917)+W(7,-1110327970,-1111739348,1037236782,-1104668925);sum2=W(0,-1104081637,-1115350296,-1102551062,1033477476)+W(1,1048930937,-1092653578,1049862570,-1095610208)+W(2,-1104712414,1065017407,-1101193417,1054909386)+W(3,-1096226206,-1094950793,1042131871,-1100838677)+W(4,1038273275,1027805677,-1097697554,1069044481)+W(5,1051154993,-1097937335,-1115393002,-1090656582)+W(6,-1102746442,1038124336,1025981021,-1090398660)+W(7,1049254524,-1111378843,-1100983150,1038627466);WS(1053522367,-1088249107); +sum1=W(0,1041083642,-1109062519,1041255149,-1129341567)+W(1,-1122816004,1034422596,-1105678140,1002201935)+W(2,1049354980,1050121221,1062047573,1050256849)+W(3,1058306025,1054029415,1043380368,1057986114)+W(4,-1104528935,-1089361286,-1094323010,-1085946707)+W(5,-1092704114,-1096738148,-1095183726,-1098664466)+W(6,-1116245577,-1108913352,1044478835,-1106612546)+W(7,1010650184,-1127765836,1004046811,-1116617606);sum2=W(0,-1115691041,-1122196578,-1133382325,-1119943136)+W(1,1035619338,1026693101,-1121646682,1035287249)+W(2,1047105417,1040512713,-1115639944,-1093984910)+W(3,-1128164365,-1112542694,1040561229,-1122951759)+W(4,1066880006,1072356775,1070833917,-1106032356)+W(5,-1084317659,-1103058628,-1106694088,-1109474775)+W(6,-1078420733,-1074089832,-1079250237,1053171659)+W(7,1063302165,1050228647,-1111273903,1041535222);WS(1054980735,-1118400611); +sum1=W(0,1023857233,-1136534172,-1109579886,1024279465)+W(1,1031638446,1042081899,1025101580,1037741818)+W(2,1056052581,1054619866,1062631892,1063340895)+W(3,1054891904,1032051762,1036582853,1040187076)+W(4,-1108899938,-1084632317,-1087670245,-1087714282)+W(5,-1089981519,-1091518889,-1100292439,-1096282711)+W(6,-1098911041,1014993130,1019079234,984908360)+W(7,1040973935,1034243544,1038263499,1035333164);sum2=W(0,1048663857,-1115607290,1050959246,-1094885185)+W(1,1032263390,-1094433235,1034671855,-1100445080)+W(2,-1103126769,-1089284711,-1106476140,1065597134)+W(3,-1114774312,1044112203,-1110680696,1044150663)+W(4,-1090522781,-1135630263,-1116194786,1068281966)+W(5,-1114594327,1034641663,-1120338125,1039802827)+W(6,-1135969141,-1096474341,-1110761886,-1097679100)+W(7,1030603925,1025157613,-1121778209,-1101519530);WS(-1099426814,1028666567); +sum1=W(0,1017347599,-1114817850,-1102332157,1038414608)+W(1,1040863441,1043586729,1033560385,1024225691)+W(2,1050515008,1054909169,1058789976,1049870885)+W(3,-1096181150,-1094822147,-1110297504,1035801215)+W(4,-1097546199,-1091252816,-1088740593,1026332624)+W(5,1050979384,1046083753,1043042893,-1106319780)+W(6,-1122852442,1034424401,1040697053,-1119196265)+W(7,-1096850298,-1101867410,-1112505198,1022200238);sum2=W(0,1032296335,-1113414658,1032045591,-1096252543)+W(1,1039836782,-1130462124,1032505935,1017080436)+W(2,-1113854030,1056314261,1056282685,-1076472908)+W(3,1041975936,1060789196,-1113045826,-1114544525)+W(4,-1123218166,1057288090,1048444709,-1076465599)+W(5,1054239999,1064414385,-1101415652,1017354944)+W(6,1034439881,-1106401889,1027355020,-1099548772)+W(7,1041344971,-1137373456,1031341874,-1131418272);WS(1048405758,1021439377); +sum1=W(0,-1095783591,1004365570,-1111296393,-1090472608)+W(1,1053249340,-1096289768,-1116930177,1031327257)+W(2,1056714988,1053912029,1060368018,1058906144)+W(3,1059710205,1050004859,1050104788,1057263364)+W(4,-1095028931,-1097931508,-1093355890,-1084869763)+W(5,-1111710658,-1089344390,-1098648430,-1095692170)+W(6,-1099026446,1040281084,1042667324,-1099317986)+W(7,1058667863,-1094050929,1032145973,-1127343131);sum2=W(0,-1137650289,-1108324664,-1107068637,1053004242)+W(1,-1096186406,1044011702,1031462490,1016473473)+W(2,-1102128439,1038586891,-1102631398,-1096144010)+W(3,1065778432,-1087564484,1041037240,-1095964556)+W(4,1065729447,1042582877,1055966210,1066736444)+W(5,-1077760412,-1109340585,-1088233524,-1079487884)+W(6,-1085103011,-1096095433,-1096657292,-1084794119)+W(7,1061684194,1053274132,1060428365,1070082531);WS(-1120621558,-1109747932); +sum1=W(0,1041405257,1034046808,-1118447615,1031113092)+W(1,-1118172841,1039149197,1025628006,1023987646)+W(2,1056552380,1057052863,1034826244,1061462741)+W(3,1057041023,1051800560,1051243933,1054503948)+W(4,-1086075216,-1102283433,-1089852749,-1087896594)+W(5,-1089300195,-1089266110,-1098077639,-1098034299)+W(6,1021959803,1009707220,1002695151,1030648525)+W(7,1017359341,1034838445,1033512688,-1099231069);sum2=W(0,-1072120352,-1071453180,-1069998225,-1071241469)+W(1,-1073669228,-1079882002,-1086087106,-1096258120)+W(2,1076686179,1075980741,1075876198,1076219984)+W(3,1072219376,1071235859,1056170781,1057784547)+W(4,-1096491690,1055107632,-1100816518,1048961210)+W(5,-1123192163,-1097056656,1049622318,-1098632303)+W(6,-1109988374,-1125676035,1033428305,1018908197)+W(7,1040773271,-1129279043,1030403985,-1116156171);WS(1014286296,1057122707); +sum1=W(0,-1100574608,-1134927261,-1096946922,-1115033128)+W(1,-1104533485,-1121259095,-1131995140,-1118839498)+W(2,1045128364,-1112841149,1023155519,-1094208427)+W(3,-1099169249,-1097752701,-1111007544,-1093400894)+W(4,1045637171,1041785732,1051848326,1066937726)+W(5,1058599142,1049921902,-1118760834,1043420320)+W(6,-1113867461,1021982785,-1106336253,-1099783438)+W(7,-1105189673,-1131816685,-1114789302,-1116552190);sum2=W(0,1049653051,-1094509070,1050525055,-1103662151)+W(1,1043452805,-1102028885,-1109754017,-1111709279)+W(2,-1095117458,1054995367,1042728281,1058124872)+W(3,1049859565,-1097129382,-1098619851,1051259496)+W(4,1052542945,1021265631,1046926465,1063131010)+W(5,1029162962,-1116537562,-1092457406,-1078653130)+W(6,1018695699,-1101605993,1044635344,-1104882803)+W(7,1042944443,-1110047725,-1107003327,-1114867517);WS(-1089617919,-1078924764); +sum1=W(0,1038586191,-1112517470,1021690773,-1148410045)+W(1,-1123773533,1037589846,-1114886949,1015916580)+W(2,1054651431,1043170193,1058605998,1062049174)+W(3,1056236357,1058401044,1034515388,1056139353)+W(4,-1087542485,-1101086846,-1088163691,-1087004528)+W(5,-1089020247,-1089711896,-1095006441,-1089662071)+W(6,1032587193,-1121720345,1034793549,-1139319682)+W(7,1040971627,1052009144,1017461287,-1138694970);sum2=W(0,1041183203,-1109901203,1047303939,-1146453442)+W(1,-1103370030,1035308463,-1107592095,-1129723226)+W(2,-1104791361,-1103309504,-1109225788,1050748307)+W(3,1032462009,1055570013,-1104507532,1050955773)+W(4,-1113641717,1018299463,993644855,1050538753)+W(5,1024125183,1058013570,1044744090,-1110543421)+W(6,1040266660,-1124518657,1039912380,-1107008276)+W(7,-1094411631,-1087158984,-1091454514,-1122733934);WS(-1102088830,1068463311); +sum1=W(0,1007817678,-1114291787,-1106493040,-1121377148)+W(1,-1120569345,1037434082,-1121570543,1048479966)+W(2,1054791531,1051084317,1059023407,1060487316)+W(3,1053262386,1049438849,1043319351,1037267389)+W(4,-1088166471,-1097682087,-1087032011,-1087032009)+W(5,-1090195409,-1104445288,-1110294871,-1112047510)+W(6,1034628887,-1130503387,1042839161,1025313797)+W(7,1040112167,-1112558866,-1130274577,-1107488086);sum2=W(0,-1092702026,-1078842502,-1073165872,-1075365553)+W(1,-1101579557,1066341075,1071992070,1076187261)+W(2,1046572938,-1092761370,1048469719,1050413401)+W(3,-1110447061,-1104166524,-1123716833,1056626852)+W(4,-1113806693,1010298098,-1106037347,1041503306)+W(5,1037192623,1033398310,1031702363,-1110743783)+W(6,1023924734,-1134107544,-1114438827,1017902665)+W(7,1011674154,-1109271682,1028552632,-1123830383);WS(1050299903,-1120086405); +sum1=W(0,1001761330,1051426245,-1097473350,1050955122)+W(1,-1098718343,-1119699408,1038117517,-1107622229)+W(2,1015037916,1042953374,-1103780307,-1082933123)+W(3,1055455844,-1145769035,-1132909758,1039587926)+W(4,1045981578,-1094503950,1055197076,-1099126616)+W(5,-1118831961,1049761702,-1105955296,1047033256)+W(6,1032160884,-1131440192,-1100940622,1056645367)+W(7,-1095742542,1031622998,1041481643,-1103124921);sum2=W(0,1033493706,1004282338,1032395114,1035721710)+W(1,-1138557465,-1094630455,1050323990,-1102984389)+W(2,-1100025935,1036668146,1043333590,1058018229)+W(3,1035348312,1040910383,1034465026,1044530527)+W(4,-1117747708,-1097774825,-1106149887,-1110236537)+W(5,-1105971349,1017216296,-1110352462,-1108832665)+W(6,-1131691420,1042472719,-1122758767,-1106477628)+W(7,1046834331,-1101697584,1040100106,-1099114129);WS(1059761855,-1093333930); +sum1=W(0,-1114738580,-1114617627,-1102727321,1053910378)+W(1,-1094270689,-1107452471,-1130455238,-1108958070)+W(2,1026403632,1045397583,1028768699,1067649611)+W(3,-1104323849,1042776267,1036450873,1044075076)+W(4,-1105736123,-1109519752,-1092041414,-1090720496)+W(5,-1112030179,-1103704317,-1131764742,-1106063752)+W(6,-1114933837,1044731740,-1111636685,1058839312)+W(7,-1095377736,1034877772,1031929286,-1113359528);sum2=W(0,1033753751,-1102724392,-1104466296,-1083668043)+W(1,1048180527,-1130490520,-1103926430,1029490699)+W(2,-1111931472,1032416705,1029992729,1069568682)+W(3,-1114422988,-1133345747,1038116955,-1129834714)+W(4,1037689465,-1105246922,1052475163,-1090236396)+W(5,-1122305941,-1123788932,-1127253836,-1122171294)+W(6,1023732592,-1126463180,-1118149766,-1106129378)+W(7,1038071226,-1124715334,-1117123194,1029091180);WS(1058247519,1058950523); +sum1=W(0,-1149972914,1038957612,1039970419,1008158544)+W(1,1041515382,1036144305,1048236362,-1101573740)+W(2,-1088063023,-1093535488,-1086741707,-1077128706)+W(3,-1087332234,1032313207,-1113848378,-1089306475)+W(4,1055543086,1052729022,1058924163,1057693884)+W(5,1060656868,1056531259,1049522521,1052006205)+W(6,1037155715,1026693813,1030719286,1032127358)+W(7,1000958261,-1112386573,-1144612480,1039554949);sum2=W(0,1037957789,-1128637884,-1110859440,1052981065)+W(1,1040710261,-1090346288,-1107045102,-1092015484)+W(2,1050553491,1004874497,-1106433025,1058989771)+W(3,1058251934,-1076253449,-1079150504,1073146781)+W(4,-1089722328,1058234547,-1098594890,1052545864)+W(5,-1106724054,1032950959,1055215751,993278274)+W(6,1050994656,-1095571828,1041665953,-1129708900)+W(7,-1111634443,1015279680,1053553553,-1088813426);WS(-1079689312,1054955487); +sum1=W(0,-1112827293,1038847520,-1106748654,1038138418)+W(1,1035397268,1020226162,1030022886,-1108673687)+W(2,-1094091800,-1099397203,-1102151838,-1086663035)+W(3,-1087965823,-1095805620,-1098762192,-1096846716)+W(4,1053343716,1057879171,1023820222,1057249493)+W(5,1057985827,1053821069,1051466543,1049463311)+W(6,1046408387,-1099233409,-1154890390,1012875058)+W(7,-1109124523,-1126965269,1036334304,1027304762);sum2=W(0,1029906557,-1110945783,1046588193,-1121400966)+W(1,-1106274145,1040948990,-1114149785,1030737726)+W(2,-1118908362,-1110004947,-1089040350,-1106443118)+W(3,1054044230,-1115139995,-1112260837,1025987216)+W(4,-1075330978,-1081100797,-1089891752,-1103643831)+W(5,-1095873523,-1120742988,-1107023588,1017833328)+W(6,1069116571,1067844910,1066162938,1048795077)+W(7,1049522444,1042365723,1011222152,1031208089);WS(1045323518,-1099573370); +sum1=W(0,1043494028,-1110296205,-1129034139,1040205415)+W(1,1019451328,1037480760,-1144942569,1019441962)+W(2,1054678847,1050638833,1058657792,1062545342)+W(3,1053087270,1054717567,1044080591,1056118375)+W(4,-1087400961,-1098183847,-1085969705,-1082320511)+W(5,-1092792902,-1090230188,-1094581114,-1090342307)+W(6,1041221965,1038272854,1035507984,1038672050)+W(7,1018934299,1028598065,1032398451,-1135273190);sum2=W(0,-1115726367,1028786141,1044450180,-1097529180)+W(1,1047479398,-1105649332,-1127420023,1035799966)+W(2,-1100272494,-1113941052,-1104186275,1042859033)+W(3,-1097402721,1051025911,1025042835,-1139194229)+W(4,1026681555,-1107020345,1044693748,1067055887)+W(5,1064288021,1073649944,1067916626,1054550763)+W(6,-1095030133,1043410282,-1120312046,-1093369648)+W(7,-1083945294,-1073003592,-1079526678,-1086831079);WS(-1086660959,-1095040438); +sum1=W(0,-1137772688,-1103872010,1033664792,-1114303830)+W(1,1043631948,-1110960013,-1112201312,1004207675)+W(2,-1101831491,-1108733164,-1099393082,-1091611870)+W(3,-1111668992,-1092153253,-1104258339,-1111896549)+W(4,1047762270,1048734598,1053294440,1032897582)+W(5,1054700448,1051790266,1038982672,1042342295)+W(6,1026497863,-1112526127,1036444877,-1105948909)+W(7,1045765800,-1102627253,1030853145,1024477884);sum2=W(0,1047134358,1032860761,1058187056,-1089859690)+W(1,-1073724300,-1113017653,-1123513506,1005834992)+W(2,-1100773581,1019143260,-1086969962,1060822499)+W(3,1074524802,-1127402252,986153015,1026902445)+W(4,1038575217,-1097448906,1050436365,-1092585260)+W(5,-1097001013,1052022456,-1101541136,1040058169)+W(6,-1121016162,1027754828,-1118814167,1047705700)+W(7,992280012,-1115523910,1026625966,-1115254226);WS(1065625968,1033455989); +sum1=W(0,1037701789,-1137040283,1000406064,-1094784938)+W(1,1050863995,-1103592251,1032127959,1038622703)+W(2,-1151616802,-1099349487,1047711372,-1115632781)+W(3,-1088133648,1049293870,-1118922740,-1120882929)+W(4,-1102944307,1053320242,-1098462560,1053161728)+W(5,1049613697,-1128175786,1017489163,-1119810116)+W(6,1035789757,-1106274637,1048627484,-1098374228)+W(7,-1120581030,-1114622845,1038993832,-1165953346);sum2=W(0,1035866397,-1103116216,1059558286,1058384307)+W(1,-1096953271,1042132369,-1111426470,-1128202268)+W(2,-1099238508,1047962584,-1082734190,-1088122523)+W(3,1056069525,-1106560803,1038442279,1028886015)+W(4,1052038184,-1105248240,1057669233,-1091086098)+W(5,-1083280561,1032403631,-1104452063,-1150402298)+W(6,-1107491561,1027069673,-1098068789,1053762892)+W(7,1064349048,-1107462772,1040922744,1012204557);WS(1066439152,-1108830929); +sum1=W(0,-1102916748,-1108788820,-1097607254,-1099017414)+W(1,-1168846782,-1109193920,-1128476473,-1106724277)+W(2,1055608939,1051866141,1058768962,1030462560)+W(3,-1113005110,-1109987210,-1109670205,-1105116142)+W(4,-1103898045,-1097938907,-1093577324,-1125603603)+W(5,1040477611,1050862423,1039038758,1053895221)+W(6,1013732302,1035488645,1043113957,1027216291)+W(7,-1143171172,-1118580993,-1107320747,-1107171108);sum2=W(0,1050905005,1051922636,1052154527,1005525738)+W(1,1024591478,-1094205878,-1094330307,-1105421569)+W(2,1051409035,-1107944278,1040207956,1060123319)+W(3,1032045878,-1096175996,-1086096303,-1081193369)+W(4,-1123874142,-1131839644,-1100926997,1046139234)+W(5,-1113252250,1039675350,-1128729660,1062516858)+W(6,-1099079861,1035659117,-1109355656,1029590720)+W(7,1032543174,1044310065,-1129395200,1042520685);WS(-1094347903,1040885342); +sum1=W(0,1027015666,-1097151811,1050782150,-1106442815)+W(1,1051184308,-1091810963,1034433919,1042242605)+W(2,-1119901274,1047615033,-1115052947,1051587896)+W(3,-1105704339,1046407197,1009768300,-1122889273)+W(4,-1109404651,1051228067,-1096976391,-1096200649)+W(5,-1126487153,1040585575,-1132445914,-1108464678)+W(6,-1145327523,-1096635113,1048638245,-1105180361)+W(7,1051518582,-1092825760,1038762547,1040013733);sum2=W(0,-1121205117,1031829824,-1105324964,-1090390675)+W(1,-1110420773,1018005966,-1113281242,1032068637)+W(2,-1124056141,-1109805410,1045427632,1059020251)+W(3,-1107061510,-1118368537,-1115675784,-1113920834)+W(4,-1106581817,1007706034,1046732003,1057752640)+W(5,-1101115525,-1103994134,1036673543,1042522746)+W(6,1026565438,1029970286,1047283254,-1089850616)+W(7,1031976810,1036394258,-1112565336,-1145818031);WS(1066366016,-1121083386); +sum1=W(0,-1127500850,-1122305754,1025706181,-1104671484)+W(1,1043832110,-1111488580,-1123271764,1015742169)+W(2,1026624689,-1114017662,-1088657475,-1098749979)+W(3,-1085705014,1037547214,-1112264441,-1105147876)+W(4,1013565235,1052467062,-1121688536,1066224034)+W(5,-1112016562,1041900405,1043675185,1022047173)+W(6,-1127181143,1035730049,1045310349,1026340635)+W(7,-1121566277,-1127673329,998683632,-1132045794);sum2=W(0,-1102951634,1044058166,1037657608,-1091261805)+W(1,1057746121,-1106029228,1006392595,-1119100020)+W(2,1043023116,-1093545812,-1093647750,1070997171)+W(3,-1082044166,1051593249,-1100798567,1013819138)+W(4,-1104735391,1058451408,-1104370519,-1105620254)+W(5,-1091103100,-1096225251,1052307063,-1121077487)+W(6,1035018995,-1112978123,1043811519,1052846459)+W(7,-1097428497,-1127092852,-1107453736,1041369362);WS(1059191103,1030618557); +sum1=W(0,1034200101,1053678608,-1114145283,1047695489)+W(1,-1114663316,-1137634576,-1125278731,-1138534517)+W(2,1032351793,1049973094,1058794603,1053292689)+W(3,1055818163,1053263444,1041016873,1043320696)+W(4,-1100440271,-1098031908,-1087452589,-1078695803)+W(5,-1125225546,-1094543429,-1116533557,-1104858229)+W(6,-1148363237,1026486548,-1194991971,1043453347)+W(7,1033675947,966472909,-1115520783,-1119664758);sum2=W(0,1021496216,-1072453458,-1079530578,1063841069)+W(1,-1095958945,1042172731,1015153576,-1132334880)+W(2,-1095812325,-1094113031,1068683999,1074699170)+W(3,1043477830,1031880682,-1121439437,-1115200049)+W(4,-1116672596,-1112299630,-1135088113,-1126165044)+W(5,-1107446259,-1119142347,1037216194,1034903618)+W(6,1031503244,1023122856,1036078566,1036242384)+W(7,-1100441243,1009915385,-1114450875,1017712520);WS(-1096433855,1052342409); +sum1=W(0,-1117693364,1041070378,-1105417036,1052133240)+W(1,1042648272,-1123398616,1044512510,-1105041790)+W(2,1042163431,-1095385709,1060080198,-1090036408)+W(3,-1090327769,1043184694,-1111854479,1043408999)+W(4,1006023611,1034697390,-1109633387,-1085473397)+W(5,1057448056,-1105658040,-1104977148,1041051171)+W(6,-1113444755,1049542464,-1112382959,1048891757)+W(7,-1111238376,-1106505885,1049508979,-1110665802);sum2=W(0,1039259027,-1119373866,-1086821333,1052826002)+W(1,-1117342490,1036052293,1037381955,-1101694007)+W(2,1043188759,-1082984200,-1077733706,1067327309)+W(3,-1149070344,1052358305,-1102382047,1050777563)+W(4,-1165551167,-1105050294,-1103802686,1068967257)+W(5,1054626023,-1101813629,-1103461210,-1106555317)+W(6,-1113326246,1045229872,-1109909290,1052700624)+W(7,-1098764713,-1099183932,1052205497,-1096821402);WS(1046655614,1069864308); +sum1=W(0,1035633391,1040943483,1045417382,1043913370)+W(1,1050212129,1047844019,1039058852,1043891960)+W(2,-1106200785,1031319761,-1120751363,-1093886310)+W(3,-1098821847,-1088130094,-1092291401,-1082722808)+W(4,-1105260712,1026979270,-1106053451,-1121044950)+W(5,1042106970,1049054225,1041620790,1042598038)+W(6,1050507575,1034433460,1045765948,1041581532)+W(7,1029812249,1017929306,1028938706,1034869942);sum2=W(0,-1098805029,-1101136548,-1094351375,-1097728468)+W(1,1040878916,1049713965,1037060075,1058810464)+W(2,-1082465618,-1084472150,-1085764460,-1140347496)+W(3,-1100091144,1049328541,1062808960,1071144827)+W(4,1017798412,-1108050411,1031330790,1053843229)+W(5,1043199898,986797508,-1119994130,-1097822096)+W(6,1045866690,1039888035,1027046574,1038111290)+W(7,-1100094208,-1104239104,-1098800085,1017716576);WS(-1077527440,1065234224); +sum1=W(0,1031059492,1014606833,1041495444,1031584061)+W(1,-1143158030,-1140389945,1035424519,1013235228)+W(2,-1088676934,-1098001853,-1087241405,-1083911392)+W(3,-1095088526,-1096536807,-1104484775,-1100223239)+W(4,1055802445,1051162632,1059501583,1061276187)+W(5,1050088278,1049527800,1042937212,1037087943)+W(6,-1159469258,1001612013,-1109463457,-1105280809)+W(7,1038556792,986827883,1030875577,1047418837);sum2=W(0,1026928347,1006719462,-1103317527,1043604137)+W(1,-1106627965,1034526167,-1117999031,-1134258967)+W(2,1019217071,-1098369589,1041304779,-1134457784)+W(3,1048134757,-1118427047,1029994729,-1113504087)+W(4,1027288437,-1099640354,1050941648,-1112266437)+W(5,1027462477,1040843010,-1104465031,1054764710)+W(6,-1112677997,-1146387796,-1072403340,-1071428003)+W(7,-1082446250,1059493547,1072461191,1077848621);WS(1034219259,-1130863201); +sum1=W(0,-1122470601,-1125729883,-1119868741,-1092963050)+W(1,-1102984950,1017182198,-1107264969,-1116589116)+W(2,1036468120,1031973022,1045421587,1062931954)+W(3,1062738826,1050208654,990945063,1023027040)+W(4,1033355302,-1125640547,-1122038588,1044707408)+W(5,-1104269382,-1106320445,-1110744610,-1098846428)+W(6,-1104067775,-1112351746,-1106594245,-1094830635)+W(7,-1127079049,-1109997276,-1112571199,-1117279521);sum2=W(0,-1120041672,999703935,-1109032994,1041627711)+W(1,-1111815622,1029813110,-1110751572,-1114401610)+W(2,1041156572,1029144962,1037796455,1046556501)+W(3,1060385029,1040466231,-1103822492,-1076222058)+W(4,-1103868400,1036670980,1043292537,1059414852)+W(5,1048639871,-1105513272,-1100107078,1043280503)+W(6,1036471018,-1107170022,-1115113192,1029249656)+W(7,-1126242312,1043143286,-1101226736,1034327293);WS(-1097041087,-1081891922); +sum1=W(0,1045201037,1042240134,1049780286,1039927583)+W(1,-1122695635,-1110484942,-1117417409,1039840796)+W(2,-1097075376,-1091271089,-1094847921,1059654550)+W(3,1056430510,1057233913,1041827328,1050554535)+W(4,-1126257330,1049467348,1057610047,-1141428591)+W(5,-1089703504,-1087958744,-1096746586,-1096159486)+W(6,-1115394372,-1097795722,-1097045891,-1103383438)+W(7,1036098616,1033721138,1035539581,-1131932502);sum2=W(0,1012982255,-1101224821,-1109376974,-1116588919)+W(1,-1096183361,-1092858264,-1090462581,-1119652925)+W(2,1052214657,1042508745,1042044290,1071547407)+W(3,-1089469015,-1090264503,1039700797,-1083767147)+W(4,-1136022111,-1093748656,1045672838,1065241977)+W(5,1049249478,1047260540,1046964814,-1107087862)+W(6,1032353073,1020863779,-1113516472,1040242686)+W(7,-1120964187,-1103746594,-1100885683,1028764718);WS(-1088621983,1079497913); +sum1=W(0,1027161409,-1102075462,-1120075900,-1109063205)+W(1,-1104005172,-1136555883,-1112015962,1033292370)+W(2,1052712773,1051824794,1057942154,1060662493)+W(3,1062931830,1057800198,1047971474,1059753504)+W(4,-1102058289,-1098602113,-1096292664,-1082645434)+W(5,-1090788424,-1090185155,-1098101583,-1088742454)+W(6,-1100368317,1021667349,-1106147487,1039175801)+W(7,-1129475640,1036809656,1009161622,-1143403778);sum2=W(0,-1150684740,-1114056841,-1164208415,1034698244)+W(1,-1134574697,1043895716,-1101980686,1050191679)+W(2,-1095235693,-1115238312,-1080604054,-1071093346)+W(3,-1083926997,1068501149,1079699126,1056576712)+W(4,1044985054,-1127339724,-1106549807,-1080554397)+W(5,-1104923511,1052487431,1054997905,1029700329)+W(6,1035589955,-1108218072,1022130402,-1106288272)+W(7,1024268734,1036117000,-1130803558,1031345667);WS(-1087955103,1023517655); +sum1=W(0,-1106663590,1037773274,-1116651838,1022742037)+W(1,1040438284,-1117813952,1032561623,-1102318801)+W(2,-1090071677,-1103425461,-1089596734,-1082614473)+W(3,-1088542372,-1092404165,-1100716355,-1098396937)+W(4,1062902614,1055773525,1059014377,1060267482)+W(5,1057943128,1054561254,1051603940,1049819671)+W(6,1013889298,-1100022495,-1101161913,1030094516)+W(7,-1120043085,-1116951793,1035114019,1026546470);sum2=W(0,-1107653444,1032757863,-1150202006,1037010009)+W(1,1026258576,1041748319,-1131622502,-1112646994)+W(2,-1094858135,1061839668,1049735190,-1123088190)+W(3,-1089824138,-1098358767,1049699018,-1103776938)+W(4,1084595456,1074196920,1067688119,1070729644)+W(5,1050587980,1057889952,-1127981435,1048602984)+W(6,-1065438414,-1069856939,-1073375528,-1082206819)+W(7,-1086758222,-1097734258,-1106404220,-1098587943);WS(-1089607615,1063931357); +sum1=W(0,-1156148665,1033042784,1027235975,-1117005684)+W(1,1045226606,-1112863441,1040283212,-1102751384)+W(2,-1089422721,-1099513696,-1086976804,-1083936660)+W(3,-1089259880,-1092850238,-1096473171,-1096124078)+W(4,1059281720,1053472432,1060428066,1061258678)+W(5,1055780369,1057981025,1051704489,1054893029)+W(6,1041177357,-1107985659,-1122980350,-1103260375)+W(7,-1111710595,-1109580750,-1125267169,1035448166);sum2=W(0,1024298597,1037699935,1030404477,-1094400051)+W(1,1052543759,1024136176,-1159281410,-1102232478)+W(2,1074606150,1048614297,-1085515118,-1071672142)+W(3,-1091215560,-1095087497,1050441058,1071366890)+W(4,1080820206,1047271097,-1079656120,-1066721483)+W(5,-1078287609,-1096732136,1057126689,1074685383)+W(6,1030125639,-1121834510,-1166463196,-1101580999)+W(7,1028051862,1009399200,-1117118368,-1113696211);WS(-1083901183,1060981851); +sum1=W(0,-1106299749,1039492049,-1113140273,1055856482)+W(1,-1103186821,-1108369378,-1115937041,-1127954738)+W(2,1048978486,-1107896957,-1119192025,-1090009641)+W(3,-1088174932,1034759564,1008970428,1027686380)+W(4,1016862419,-1115539879,-1098481927,1058119768)+W(5,1052019064,1048477348,1034559233,1044214632)+W(6,-1121286832,1049662006,-1106196840,-1149152444)+W(7,-1101797848,-1146708651,1024756171,-1111878699);sum2=W(0,1030335348,-1110488253,-1096373435,1042224202)+W(1,1038378538,-1117770266,1036930446,-1168276161)+W(2,-1130369060,1056034410,-1097486091,-1094958491)+W(3,1057631708,-1114209587,-1105273765,-1115537765)+W(4,-1106797797,1040331307,1063611375,-1106971469)+W(5,-1093142933,1037075531,-1115233817,1025218793)+W(6,1006653296,-1094310491,-1113782011,1042512890)+W(7,-1140559356,-1114686161,-1115373149,1026640233);WS(1063762143,-1098158381); +sum1=W(0,1027555010,-1113176415,1044835884,-1094480963)+W(1,1042205032,1038186408,-1112247611,1041241393)+W(2,-1106988831,1049655577,-1089572014,1041189880)+W(3,1035602487,-1095655321,995617211,-1102946366)+W(4,1031921883,1032851437,-1106152127,1057311541)+W(5,-1100163979,1046700975,1050763922,-1119959180)+W(6,1033567284,-1099137927,1052671923,-1101762329)+W(7,-1106014811,1044902280,-1094051821,1044480349);sum2=W(0,1010916279,-1108274646,-1108043460,1049469526)+W(1,1061284555,-1097521196,1047936551,-1106103943)+W(2,1040615985,1037755544,-1107213139,-1085933104)+W(3,-1098201753,1027381238,1007266289,1039340208)+W(4,-1103581164,1053142923,-1091384808,-1093682556)+W(5,-1095835641,1044225612,-1101597200,1011948943)+W(6,-1126424725,-1119616718,1062997316,1050086980)+W(7,1044548392,-1099920539,1043928239,-1120667237);WS(1060336095,-1119657045); +sum1=W(0,1023788715,-1117126579,-1108875843,1022815367)+W(1,-1100562722,1043213137,-1111482971,-1142747249)+W(2,1048279897,1044311660,1062204714,1060724749)+W(3,1063043033,1050929706,1037241746,1051192212)+W(4,-1106238784,-1096869700,1019770348,-1081389759)+W(5,-1084472996,-1097593661,-1106654286,-1102133781)+W(6,-1110161279,-1136931731,-1115905233,1034904806)+W(7,-1124661292,1017832853,-1109716592,-1109353889);sum2=W(0,1036664563,-1103288529,-1102134383,1057556566)+W(1,-1099512639,1031668335,-1103860103,1028018661)+W(2,1009247708,-1126560341,-1067246446,1067728497)+W(3,1078180911,-1085231458,1047956293,-1114058193)+W(4,1013790140,-1102369678,1047852878,-1093152080)+W(5,-1110504691,1042704555,-1132621098,1030531898)+W(6,1035577258,1008412166,1016094574,1045655865)+W(7,-1123477495,1023608957,-1112760821,-1120624893);WS(1035518203,1045613832); +sum1=W(0,1044215468,-1096085823,-1102751483,1007706274)+W(1,-1098118842,1051305356,-1096250919,-1106455273)+W(2,1057279232,1043513429,1057361220,1061539183)+W(3,1057962612,1058710773,1037420261,1053125757)+W(4,-1097478568,-1096451901,-1091716958,-1085528932)+W(5,-1093017477,-1091718961,-1100741095,-1097230063)+W(6,1042423606,-1098498663,1012832112,1054368634)+W(7,-1103819295,1057808613,-1100568821,-1111733504);sum2=W(0,-1105709018,1050542737,-1106108137,1027983028)+W(1,1053295819,-1091042532,1049054259,-1108416827)+W(2,1058997495,-1084246791,-1103685622,-1106510960)+W(3,-1089515541,1066680974,-1088412186,1037143386)+W(4,-1086433444,1065459234,1055198365,-1102412567)+W(5,1057925132,-1080963495,1056230430,1049505110)+W(6,1022365788,-1101303092,1040995532,1044759128)+W(7,-1104466949,1043286350,-1096360229,-1106131860);WS(-1103921662,1072713673); +sum1=W(0,1042712209,-1130675027,1041149044,-1108819823)+W(1,-1099465033,-1102885798,-1108891552,-1122152216)+W(2,-1111681022,-1104528338,-1103688784,1055222237)+W(3,1063848575,1053207587,1051374172,1044600823)+W(4,1029885560,1032835743,1053127408,-1089836355)+W(5,-1089832742,-1090841456,-1098121506,-1101098252)+W(6,-1123292759,-1124533373,-1101763282,-1143773237)+W(7,1044926036,1032528402,1040294582,1018003689);sum2=W(0,-1116466906,1032691193,-1110682367,-1134651946)+W(1,1019799157,1020309206,1028255175,-1118897648)+W(2,1017580326,1031996320,1040673767,-1121084452)+W(3,1012141662,-1123645954,-1125118807,1005021204)+W(4,-1100144980,1045143645,1055366708,-1112456349)+W(5,1037079065,1036705771,-1112096331,1021253254)+W(6,1018640494,1067424527,1071822180,1057195246)+W(7,-1078565795,-1073530916,-1087156462,1033125682);WS(1054959295,1011151216); +sum1=W(0,-1124554365,1028540695,-1107828893,-1135601758)+W(1,-1135515507,1032466990,-1110097877,950109203)+W(2,1043778462,-1104732576,1063706911,1052343180)+W(3,1050410381,-1128754020,1034222620,1043960229)+W(4,-1140499785,-1111020475,-1098481604,-1081762405)+W(5,1053053447,-1112972157,1023071124,-1120112616)+W(6,-1103855992,-1113072532,-1121738665,1048654720)+W(7,-1096321673,1012954617,-1110289546,-1114439871);sum2=W(0,-1104841432,1047690020,-1084375561,-1086552004)+W(1,1046416693,1025710892,-1130856953,-1113936449)+W(2,1047456971,-1094867354,1068880529,1065412328)+W(3,-1080289298,-1110380578,-1105039836,1016290713)+W(4,1024424907,1033457856,1046341732,-1087761187)+W(5,1062384539,-1103331799,1024509174,-1126452938)+W(6,991739097,-1129013032,-1103560341,1059009805)+W(7,-1098849357,1045332030,-1104241974,1019994493);WS(1061669311,1066543312); +sum1=W(0,-1120030840,-1111872182,1046388965,-1109640224)+W(1,1051640445,-1104742312,1040612129,1018742870)+W(2,-1097490380,1051889621,-1085299564,1043197314)+W(3,-1099578605,-1114905437,1033952272,-1095793020)+W(4,1038501126,-1110528784,1050043436,1054292822)+W(5,-1095700775,1056051928,-1108619674,1044337364)+W(6,1026361650,-1112085217,1019064063,-1116217609)+W(7,1045441021,-1097066005,-1146667493,1039394788);sum2=W(0,1041249103,1040922446,1047169006,-1133026152)+W(1,1045305983,-1121038685,1032067159,986169209)+W(2,-1098300344,-1147221163,-1097103704,1055827658)+W(3,-1082349433,-1105225178,1036618956,-1102095468)+W(4,1041141085,1014590689,-1094689158,1056443342)+W(5,1051958562,1035590360,-1098250629,-1145857885)+W(6,-1123648820,-1115292810,1021735499,1023898168)+W(7,-1153021086,1038130213,1035045284,1030074795);WS(1066007616,1040865170); +sum1=W(0,1016703369,-1106398093,-1114560988,-1096325697)+W(1,-1094335779,1023023221,-1113231876,1022983872)+W(2,-1154003525,1038441464,-1112021256,1050813825)+W(3,1059033474,-1108543232,1040892233,1034570898)+W(4,-1104662792,1031083397,1052887594,1061249791)+W(5,-1126656183,-1106571274,-1121820472,-1115038347)+W(6,-1111826720,-1146451379,-1102003526,-1102172436)+W(7,-1104413998,-1109007926,-1112600993,-1123919488);sum2=W(0,-1117895883,1036640719,-1092695525,-1109277526)+W(1,1054484712,-1102073467,1047716642,-1115714917)+W(2,-1109314178,-1103775527,-1079308608,-1088245301)+W(3,1032194306,1058556412,-1097777200,1049638324)+W(4,1043196819,1047073701,1032498235,1071134194)+W(5,-1098274857,-1102222667,1028797614,-1109885254)+W(6,1029963629,-1117061975,1053147047,-1113344034)+W(7,1027577620,-1104158962,1019489703,-1106961770);WS(-1112959995,-1090797387); +sum1=W(0,998546749,-1102515009,1018649191,1024148768)+W(1,1036601843,991750171,-1134314668,1024106779)+W(2,-1107113888,-1157171375,-1095395659,-1088418302)+W(3,-1108499994,-1092700079,-1100812608,-1106951576)+W(4,1042251615,1043372984,1057847906,1049085946)+W(5,1054314562,1052242560,1010001228,1043704436)+W(6,1034524319,-1109045169,1025715818,-1107024218)+W(7,1036766314,-1102346050,1041369791,-1136260253);sum2=W(0,-1097076796,1000463738,-1083533587,1064100942)+W(1,1074997490,1043707697,1028507309,-1152835380)+W(2,1045091130,1024736081,1064625577,-1096201033)+W(3,-1071550159,-1106033160,-1118548401,-1111712908)+W(4,1028367411,1040206702,-1112850496,-1086258418)+W(5,1052069491,-1098690685,1050202273,-1113053149)+W(6,1016501386,-1122385083,-1104146558,1050125885)+W(7,-1105686824,1041978517,-1109567340,1032203802);WS(1065286463,-1155116140); +sum1=W(0,-1127743664,1036265535,-1118137852,-1121018025)+W(1,1024160014,1028265374,1031461691,-1116217572)+W(2,-1099417962,-1091060822,-1088882712,-1089265061)+W(3,-1088513194,-1090887512,-1097685517,-1096201501)+W(4,1047837241,1038987540,1061626690,1069311516)+W(5,1053957977,1051214117,1050330231,1045642342)+W(6,1035108393,-1121911642,-1119901843,-1100290432)+W(7,-1101311755,980641778,1030945477,1036102670);sum2=W(0,1023964675,1054178647,-1104607531,-1088748842)+W(1,1034720649,1027793575,1026748348,1048440611)+W(2,-1104287950,-1098771138,1030951671,1062304002)+W(3,1056993385,-1095484784,-1103591056,-1115722179)+W(4,-1095527688,-1106164282,1049293814,1069791349)+W(5,-1106129898,-1093744890,1040804508,-1102843948)+W(6,-1107378538,-1107123343,-1102317974,-1093097006)+W(7,-1107155572,-1104614583,-1111048704,1036145149);WS(-1107864827,-1106183398); +sum1=W(0,-1106667222,1032383543,-1104095901,-1105126732)+W(1,-1119082647,-1099092218,-1106477481,-1100466619)+W(2,1028246417,-1105288567,1024277645,1031807228)+W(3,1024663749,1059042594,1038514313,1061247795)+W(4,1062610107,1048732230,1033194034,-1097352540)+W(5,1042072353,-1097841594,-1132497297,-1116357250)+W(6,-1094330385,-1113355593,-1100412503,-1110531197)+W(7,-1106817153,-1119219065,-1116226478,-1112377140);sum2=W(0,-1124057659,-1107748661,-1106641450,-1106278570)+W(1,-1115427744,1045306633,-1107251222,1044220643)+W(2,1049202878,1029365940,-1100669682,-1090514146)+W(3,1050790854,-1101749265,1044664667,1051259000)+W(4,1055877653,1040631102,-1121942624,-1097531540)+W(5,-1095195500,1044511371,-1123742683,1035140356)+W(6,1043135164,-1120955446,1048773070,-1096084011)+W(7,1040842880,-1101432694,-1108344435,-1156279482);WS(-1107710971,-1103335008); +sum1=W(0,1020774038,-1097452822,-1103681302,-1142400543)+W(1,-1130541650,1035627390,1026485526,1026933710)+W(2,1057965326,1052789750,1061528673,1059882105)+W(3,1058381533,1052101646,1047827121,1048909172)+W(4,-1096736580,-1097416740,-1090723228,-1082070814)+W(5,-1096313647,-1092903493,-1095953623,-1094072619)+W(6,-1108312647,1007270548,1008435167,1032878150)+W(7,1024150455,1029066731,1024752368,-1129872006);sum2=W(0,-1091198687,-1096592719,-1088722291,1017819408)+W(1,-1104841225,1047280108,-1133964792,1046210234)+W(2,1051358993,1056674994,1050253089,1057806550)+W(3,-1098514434,-1095745001,-1121773836,-1101840089)+W(4,1026242284,-1102658445,1039492851,1048044980)+W(5,1047848116,-1114927114,1009730080,-1115459009)+W(6,1036983987,-1112372364,-1109827680,1033031265)+W(7,-1106004699,-1128936304,1044703642,-1121859563);WS(1046617982,-1079283690); +sum1=W(0,-1112235521,-1112371935,1046025067,-1114138877)+W(1,-1100106092,-1106636112,1006684852,-1134743124)+W(2,-1103103206,1005568807,-1082068590,1053438832)+W(3,1050481934,-1113851306,-1101804759,-1101795702)+W(4,1050398983,1053710959,1059470764,1056782757)+W(5,-1084354719,1044662919,1028720557,1040488963)+W(6,1031782004,-1112406582,-1109731202,-1120370051)+W(7,1047048563,-1114617505,-1122334215,1035089325);sum2=W(0,-1123583696,1041752924,-1096033091,1045050816)+W(1,-1111810372,1044170848,1035342189,-1107148363)+W(2,-1114190125,-1107057915,1054169171,1066165326)+W(3,-1090934807,-1094482563,1030376713,-1140242036)+W(4,-1123424510,-1108427412,-1101097272,1060681517)+W(5,-1093738003,-1094742214,-1122528198,1046835784)+W(6,1035265901,1011193218,-1097576107,1037309084)+W(7,-1094306097,1047478278,999245333,-1118953940);WS(1057107647,-1115492411); +sum1=W(0,1043432615,1017716083,-1115224236,1034158091)+W(1,1031606075,1040917102,-1119339928,1006053250)+W(2,1037909322,1044219192,1059480955,1055275264)+W(3,1062186253,1051479740,1036604907,1049031914)+W(4,-1092726398,-1094557923,-1089724826,-1079486955)+W(5,-1094016652,-1090199321,-1111430132,-1124163213)+W(6,1042270260,1036944691,1049175094,1036017407)+W(7,-1112299996,1012181234,1026270626,-1106538704);sum2=W(0,1018646782,-1107779390,1048577488,-1094766117)+W(1,1029078775,-1115207772,1041354677,-1134027235)+W(2,1037675363,1041358579,-1103110037,1063077105)+W(3,-1094239344,-1097294293,-1106609062,1005749079)+W(4,1056993548,-1114299594,-1108103869,1069120744)+W(5,1019393926,-1090842684,-1103795001,-1111892981)+W(6,-1095820604,-1106961783,-1113810892,-1094104293)+W(7,-1100654825,1030620215,1015746998,1031888221);WS(1038408187,-1104646224); +sum1=W(0,-1100666444,1032659338,-1096791479,1050254507)+W(1,-1125163769,1034716030,-1104041563,1024265746)+W(2,1031841147,-1095811512,1046629869,-1086582314)+W(3,-1092033141,-1095590162,1012740704,-1097384267)+W(4,1045835257,1046356758,1055310447,1049546009)+W(5,1059064223,1032941357,1016606100,1043234370)+W(6,-1121385297,-1115316924,-1109718991,1043876936)+W(7,-1115882186,1051195252,-1110386378,-1121465454);sum2=W(0,1033146053,1034495435,1033891153,1015618236)+W(1,-1102272365,1026402836,-1126192412,-1130670616)+W(2,1033178697,1013274853,1044565157,-1083473003)+W(3,1047899954,1033829854,1026659107,-1129244632)+W(4,-1110558215,-1103797816,-1074394842,-1075035519)+W(5,1070896015,-1107786181,1039466503,1033633210)+W(6,-1107600367,1046600596,-1096372667,1071496075)+W(7,1070598351,-1103057086,-1099451771,-1106841766);WS(1060540543,-1145107984); +sum1=W(0,1016949312,1033700674,1008485935,1050394829)+W(1,1025975118,1027755062,-1166944971,1036625882)+W(2,-1111708420,-1115158282,-1112773425,-1105627788)+W(3,-1166436080,1049090616,-1131929874,1027903943)+W(4,999025948,1037057540,-1111113150,-1105528438)+W(5,-1092533512,-1097657169,-1125616567,-1104970374)+W(6,-1110878953,1034636061,1006219749,1047777444)+W(7,1034379342,1023310559,1042471825,1029991232);sum2=W(0,-1112727972,1041061913,1030171918,1049192765)+W(1,-1097932217,-1108991614,-1128255593,-1128975721)+W(2,1028528033,1047913039,1058299937,-1088725965)+W(3,1006741474,1028842331,-1119404040,1019613109)+W(4,1050127712,-1120606988,-1075312291,1051042420)+W(5,1061621025,-1120436768,1041035795,1038145345)+W(6,1039139414,-1090975722,-1096898908,1056682084)+W(7,1043329296,-1136718330,1019658885,1017746289);WS(1058512095,1047466767); +sum1=W(0,1025672397,1032743763,1046625694,1040236986)+W(1,1041791363,1042422310,1024317081,1034505416)+W(2,-1102753041,1015664161,-1102686879,-1099087483)+W(3,-1097904327,-1097334084,-1123206279,-1096407969)+W(4,1037445664,1032570339,-1091026739,-1089271035)+W(5,-1100626131,1051389809,1041773046,1050962859)+W(6,1037433000,1033220516,1035056566,1024398415)+W(7,1043847942,1042353123,1037697617,1047698739);sum2=W(0,-1111694157,-1113457231,1007020677,-1110494513)+W(1,1036239980,1042151096,1014804229,1038268008)+W(2,-1097429792,1040318944,-1109123041,-1087577139)+W(3,-1115766281,1033854974,1056323633,1058473731)+W(4,1052756319,-1131566802,1066240251,1071158756)+W(5,1055974927,-1085216854,-1076147337,-1078122726)+W(6,-1115035673,-1108486657,1057627634,1052796029)+W(7,1037312144,1031946717,-1107413695,-1088208012);WS(-1087119871,1051442968); +sum1=W(0,-1106951233,1026199466,-1111827529,1034911407)+W(1,-1110066258,1036906330,-1121489041,-1123695161)+W(2,-1101188351,-1102133666,-1096477343,-1081083296)+W(3,-1093686286,-1089794286,-1102503648,-1096524016)+W(4,1055191809,1046522759,1061746551,1062137809)+W(5,1056808794,1061657374,1025414769,1043754020)+W(6,-1118371512,1024298399,-1102462991,-1118895495)+W(7,-1105243164,1028468933,1001909715,1039027467);sum2=W(0,1036012528,-1136414534,1028357901,1018170307)+W(1,996800246,-1115554829,1018408279,-1128152611)+W(2,-1111568121,1023613585,1046290638,-1086518431)+W(3,1032866656,1040198779,-1115393969,1031067220)+W(4,-1125130883,1037328619,-1077265349,-1068062671)+W(5,1083861052,1057186482,-1101393956,1024816461)+W(6,1019317279,-1141870971,-1105362146,1041918725)+W(7,1040576139,-1110577355,1032099345,-1109411807);WS(1041081598,-1101063046); +sum1=W(0,1038662072,-1105628103,1046838359,-1112508084)+W(1,-1112561351,1047812813,-1106996345,1045311157)+W(2,-1123374599,1048894326,1044003395,1062900743)+W(3,1058339600,1041428913,1044355834,1013224727)+W(4,1035193857,-1098151405,-1109376817,-1082115704)+W(5,-1087104856,-1097118497,-1098603955,-1110120844)+W(6,-1104056554,1009505700,-1107771451,1039692648)+W(7,1049374543,-1126547869,1037690530,-1121969199);sum2=W(0,1034938637,-1110454828,1044300205,-1094841314)+W(1,1049263704,-1123904781,1032882093,1018550156)+W(2,-1102665080,1066739686,1063593500,-1072571644)+W(3,1050585763,1033188794,1040935597,992411043)+W(4,-1083931487,1057500561,1069787057,-1073076170)+W(5,1057940110,1049962317,-1103057884,1032437745)+W(6,-1096043986,1050111041,1057117236,-1094917255)+W(7,992791419,-1119131193,-1129197337,-1139242755);WS(1047493374,1019974383); +sum1=W(0,1039818779,1022499782,-1111466513,-1128872350)+W(1,-1102282821,1027318580,-1112367361,-1121442618)+W(2,1024992878,1056719767,1056992349,1066523241)+W(3,1057279594,1050310409,1043633508,1050332018)+W(4,-1099980259,-1093967742,-1089692488,-1081677329)+W(5,-1104336096,-1095763174,-1147598863,-1103201160)+W(6,-1119405261,1017537921,-1134657044,1032226588)+W(7,-1110606353,1029746358,-1105211995,-1109613299);sum2=W(0,-1109381660,1024006001,1048332575,1030946168)+W(1,-1111460550,-1115660792,1027780517,-1125113546)+W(2,-1099927212,1048105027,1083214625,-1068785948)+W(3,-1080184440,-1125303858,-1129923962,972536438)+W(4,1032613200,1031703418,1051352300,-1082836395)+W(5,1047472657,1027323348,1006215943,-1123338357)+W(6,1013674604,-1113331152,1010546556,-1137462284)+W(7,1033485356,1034637753,-1112671380,1033990282);WS(1049191295,1026054180); +sum1=W(0,1015431080,-1114491642,-1106844240,1052544606)+W(1,-1101337172,1006821496,1048579163,-1107367092)+W(2,-1104530451,1045418990,-1091806904,-1092275830)+W(3,1032037152,-1091613549,-1136631349,-1104046587)+W(4,-1120791464,-1105318659,1059085476,-1096734436)+W(5,1055073816,1054997266,-1117752159,1054027444)+W(6,1041795830,-1107859847,1035107546,1050727987)+W(7,-1098252244,1024892180,-1114835508,-1107321874);sum2=W(0,1026733028,-1099170713,-1116840904,-1119731112)+W(1,-1105853851,1023766170,-1109160117,-1110446049)+W(2,1045033945,1052123052,1011374557,1034116255)+W(3,1042679995,-1103542762,1002727514,-1116987471)+W(4,1006278578,-1100795787,-1137517037,-1093051584)+W(5,1032967726,1030006514,1010971477,1032206215)+W(6,1045459634,1045732660,1036547859,1049735621)+W(7,-1115758581,1012804929,-1107202197,-1108882618);WS(1061349183,1052960956); +sum1=W(0,-1129777715,-1138324169,1040354025,-1113069161)+W(1,1026875928,-1148679486,1026350741,-1099366619)+W(2,-1091852750,-1098630008,-1086948121,-1087783598)+W(3,-1090578505,-1098392878,-1105317245,-1113156712)+W(4,1051531432,1050117038,1058780391,1063142264)+W(5,1054898923,1055753851,1035239971,1049214940)+W(6,1028688348,1001458973,1026112190,-1101543047)+W(7,1001807913,-1107707133,1009551482,1035358529);sum2=W(0,1030464194,-1114101658,1031167290,1076423743)+W(1,1075592137,-1122765276,-1073082101,-1067763317)+W(2,1016786912,-1111442214,1040962599,1052649879)+W(3,1059016603,-1109148248,1031660172,-1093716078)+W(4,-1124271380,1036708968,-1145350210,-1106763968)+W(5,1036666460,-1102467968,1040647493,-1123536642)+W(6,-1112870762,1035127660,-1119263136,1030450749)+W(7,-1114823676,1030453841,-1120712732,1004437586);WS(1049240575,1032641532); +sum1=W(0,1013730783,-1105480706,-1114036922,-1113879072)+W(1,-1104229785,-1108053747,-1114764169,-1146082265)+W(2,1058635434,1033988870,1060052265,1060507082)+W(3,1060417175,1056801557,1045744608,1050162924)+W(4,-1096215015,-1101342144,-1095577996,-1090178495)+W(5,-1088104859,-1096180920,-1096622362,1035143657)+W(6,-1112522509,-1114702617,1026538642,-1118644393)+W(7,1026113715,-1115402364,-1165415829,-1096614130);sum2=W(0,-1122276311,1035291415,-1120194245,1040446858)+W(1,-1120530587,-1138075205,1025217366,-1118638617)+W(2,-1070701037,-1088124412,1066415245,1074084237)+W(3,1049852139,-1122804719,1023048268,-1139513797)+W(4,-1102500792,-1135890037,1041496354,-1104713726)+W(5,-1121031703,-1103825640,-1123990667,1028358694)+W(6,-1123484857,-1122878839,1004310705,1043449641)+W(7,1033156545,1027648711,1022832518,-1136916673);WS(1058199967,1050173679); +sum1=W(0,1035142580,1027370573,-1130262537,1035504777)+W(1,-1114438555,-1117883815,1019391016,1002653538)+W(2,1049466778,1058691576,1039593430,1068404719)+W(3,1055172389,1049428736,1057860609,1038434456)+W(4,-1090097411,-1101732588,-1086371009,-1088745136)+W(5,-1085029652,-1087836907,-1099893249,-1090680108)+W(6,-1180331449,1040649373,-1120260556,1040680775)+W(7,1044382793,-1124005336,1042216563,-1112700144);sum2=W(0,-1116884059,1053572077,-1098664530,1052736946)+W(1,-1109898534,-1100793752,1049155169,-1110972354)+W(2,-1098591960,1057696884,-1094622297,1068603564)+W(3,-1110319390,-1092295148,1060435963,-1093610507)+W(4,1049382153,1027480579,-1090176467,1060239128)+W(5,1035982822,-1110105636,1048950002,1038370396)+W(6,-1103314039,-1088718218,-1083506692,-1093271444)+W(7,-1100206230,1032439700,1034453968,1006875670);WS(-1089372991,1071972514); +sum1=W(0,-1138920887,-1111770809,-1102811010,-1115715559)+W(1,1039086134,-1097310634,1031148825,1025838913)+W(2,1036533027,-1104793556,1055175791,-1099167419)+W(3,-1087507272,1049070430,-1119324807,1003453989)+W(4,-1102318256,1048489074,-1087761408,1059252133)+W(5,1053162297,-1114433380,-1118494745,1042268638)+W(6,994211079,-1105180974,1048668925,1002658941)+W(7,-1118760057,1015366427,1042346841,1035401151);sum2=W(0,1030112837,-1120976510,990074782,-1093456890)+W(1,1037465699,1026987255,-1141406991,-1139369648)+W(2,1042265630,1036120703,1034066763,1054439327)+W(3,-1093016348,1018637880,-1135344000,1039303764)+W(4,1026971571,-1114486026,1060265655,1048349987)+W(5,-1099844302,1021593632,-1122669452,-1105461723)+W(6,-1110663804,1036038820,-1093575269,-1097582212)+W(7,1034062294,1015927322,-1131991172,-1112258092);WS(1064707295,-1106068023); +sum1=W(0,-1099232505,1035233224,1008917721,-1113461090)+W(1,1030936392,1004172005,1027313190,-1115756158)+W(2,-1122722466,-1096714286,-1092366070,-1085444145)+W(3,-1087864449,-1089654074,-1109977746,-1096643772)+W(4,1050522762,1050648196,1057836626,1065526616)+W(5,1058128499,1053303385,1046037453,1045431365)+W(6,-1163785122,1029641572,-1106158547,-1112344246)+W(7,-1120989814,1023496586,-1132212895,1026679026);sum2=W(0,-1064765544,-1081497441,1073825520,1076205171)+W(1,-1119211273,1027623494,1025169073,1044157267)+W(2,-1093639717,1052279998,1049786220,1062543003)+W(3,-1112239696,-1095053933,1041086677,-1111173396)+W(4,1043466147,-1106897145,-1111313590,1028519541)+W(5,-1110796836,1038884306,-1138045203,-1103601885)+W(6,-1118670633,1026058867,-1120615525,1005098917)+W(7,1002459349,1024155429,-1139354443,1031190784);WS(-1111449083,-1157616163); +sum1=W(0,-1140902742,-1108906886,-1107746707,-1091492130)+W(1,-1106259270,-1123578095,-1112828291,-1129218172)+W(2,1050785866,1041550344,1063519767,1070223306)+W(3,1056548545,1033679887,1033485706,1037279241)+W(4,-1096435822,-1095149714,-1097214657,1059314470)+W(5,-1091358630,-1102873285,-1098893397,-1105253969)+W(6,-1106580347,-1111739842,-1112949561,-1090511327)+W(7,-1115482851,-1102694659,-1119291392,-1105806553);sum2=W(0,1036877913,-1107073590,-1107699229,1043855187)+W(1,-1112562117,1015957137,-1137092650,-1113777301)+W(2,-1106537131,1029358898,1059152956,1059494373)+W(3,-1100478450,1042289801,-1117856531,1034651775)+W(4,1030920508,-1148982309,-1101290720,1057939604)+W(5,1054005616,-1078154452,1052159854,-1095096566)+W(6,-1107276407,-1158332371,-1104066278,1057817844)+W(7,-1089434898,1041374005,-1109759735,-1112996199);WS(-1078462192,-1081042006); +sum1=W(0,1031777492,1032754472,1041664052,-1097597536)+W(1,-1104816664,-1113883983,1034668408,-1123431127)+W(2,-1099264287,1043123090,-1089905073,1061087074)+W(3,1058804947,1049386855,1033759807,1048603595)+W(4,1046006998,-1098614104,-1129274543,-1106235787)+W(5,-1084543524,1054195792,-1107840264,1024992909)+W(6,987183826,1036343655,1009990171,-1097811109)+W(7,1031138063,-1097275448,1026038601,-1120606380);sum2=W(0,1045113399,-1114091637,-1107885511,-1138476145)+W(1,-1105540689,1035866831,-1106333432,1027850472)+W(2,1042319052,-1104675582,-1091877193,1051152873)+W(3,-1091823953,1034466874,1039480371,1012452041)+W(4,-1096815184,-1111655631,-1112520325,1061790396)+W(5,1058061302,-1097657024,1040922298,-1158709515)+W(6,-1116743882,-1101972302,1050965596,1049921296)+W(7,-1092103725,1042351236,-1102843808,-1125733657);WS(1056694143,-1116016311); +sum1=W(0,-1113789237,-1100431022,1050877939,1018856325)+W(1,1050520537,-1097203011,-1103919120,-1146363818)+W(2,1051083644,-1126988186,1064972735,1040063173)+W(3,1063261729,1049408537,1026641091,1053332672)+W(4,-1097139864,-1094809972,-1089357240,-1094444318)+W(5,-1089641983,-1094346349,-1100978845,-1097363714)+W(6,-1123205479,1034447326,1036660918,-1108178982)+W(7,1047968461,-1113292277,1038849023,-1114302469);sum2=W(0,-1117908102,1013765983,1045942570,1086231745)+W(1,1048993826,-1110131683,1005670802,-1126497913)+W(2,1019359999,-1145413682,-1095749402,-1062836828)+W(3,-1094656357,1037693606,-1125761673,1018172516)+W(4,-1120905960,1028148573,1032861566,-1087097136)+W(5,-1145044098,1040390747,-1112982831,1016402027)+W(6,1017197102,1027705717,-1127537989,1031521084)+W(7,1027867224,-1114691836,1031905995,-1122299754);WS(1058898623,-1129627348); +sum1=W(0,-1115961291,-1114910804,-1099814536,1014875535)+W(1,1042946610,1008636276,-1106406626,-1120594878)+W(2,1024824451,1028416398,1053775806,1049045373)+W(3,-1081844071,1031972351,1007262993,1044145240)+W(4,1015893437,-1107386562,-1081677098,1054905786)+W(5,1057687981,1045923489,1043411542,1016529769)+W(6,-1111982511,1040362701,1049488325,1016424474)+W(7,-1105282974,-1118478155,1018226304,1008933435);sum2=W(0,-1133545882,1048887568,-1092588040,1040041167)+W(1,-1098849827,1009986974,1044263399,-1120224962)+W(2,1024635319,-1104650552,-1106613727,1061771033)+W(3,1059347143,1020453405,-1100016935,1003801667)+W(4,-1123675276,1009836758,-1090053582,1063348295)+W(5,-1095509129,-1091467004,1034750124,1013849670)+W(6,1049399700,-1109494815,-1105276085,-1099749985)+W(7,-1094328117,1040581639,1041257354,-1116729410);WS(1051954047,1053754534); +sum1=W(0,-1115617616,1024010640,-1105864485,-1104806436)+W(1,-1109064955,-1116880702,-1125878182,1017392662)+W(2,1038078984,1036755054,1063482792,1054877383)+W(3,1061183100,1032370277,1043596932,1041423460)+W(4,1012663597,-1111840872,-1094956956,-1088048944)+W(5,-1092794954,-1106496725,-1106933961,1027390113)+W(6,-1106689047,1027644834,1000291764,-1099610254)+W(7,1030290339,-1110075188,-1134690355,-1125796047);sum2=W(0,1032585330,-1120362784,1053495069,-1103911013)+W(1,-1152525762,-1128147020,1012657824,-1104983105)+W(2,1041153226,1038083675,-1085822417,1062089523)+W(3,-1088542584,1044421032,-1113855086,1041652917)+W(4,-1098242715,-1097998955,-1097864806,1056336567)+W(5,1061326318,1046053205,1042938789,-1160964996)+W(6,1045110917,1041971655,-1094674500,-1090235355)+W(7,-1100885631,-1141849761,-1114518568,1032164357);WS(1061027871,-1104546242); +sum1=W(0,-1105616597,1044372474,1021564129,1044930783)+W(1,1046184033,1039863327,1037242932,1036593932)+W(2,999947493,-1093243621,-1093936864,-1082760108)+W(3,-1089254915,-1087020314,-1095491356,-1089177610)+W(4,1020340785,1054887248,1050165368,1059757863)+W(5,1059995997,1055330116,1049586618,1053764638)+W(6,1044086916,-1111771647,1042456335,-1109427891)+W(7,-1109416824,-1114227250,-1119355674,1025046581);sum2=W(0,-1071093827,1026041138,1068370917,1068180608)+W(1,-1099034443,-1126398467,-1114641099,1032038973)+W(2,1060306884,-1087262504,-1080863241,-1104665609)+W(3,1065726420,1036496204,1052019191,-1112342652)+W(4,1049935328,-1137957530,1024099582,-1097098353)+W(5,-1115701817,1043337171,-1155572887,1039831002)+W(6,-1107356858,1030953599,1026067688,-1149593287)+W(7,1031805059,-1111590832,-1110320626,-1165279566);WS(-1085156031,1045210454); +sum1=W(0,1032928297,-1111119484,1023710638,1012189550)+W(1,-1119437633,1039427612,-1114651991,1039591187)+W(2,1062377574,1050029461,1062121112,1061895670)+W(3,1058328143,1050106073,1051812528,1050020631)+W(4,-1090582815,-1097825399,-1087364538,-1084850381)+W(5,-1086721078,-1087870448,-1095972450,-1089842983)+W(6,-1097791665,1025846477,1032229097,1038427330)+W(7,1040335420,1036234257,1026163704,-1146480404);sum2=W(0,-1123647935,1039341132,1035983028,-1100132407)+W(1,-1107056231,1035406254,-1116224056,1039408558)+W(2,1061817512,1048143772,-1106274437,-1080635557)+W(3,-1101127944,-1113472410,1025367216,-1101636583)+W(4,1083879676,1075567701,-1081957201,-1069811820)+W(5,-1080342730,-1083251742,-1113852980,-1087422720)+W(6,1056516802,1037735150,1028242764,-1096421593)+W(7,1035329144,1030744652,-1094803270,1049804166);WS(-1079692512,1054562755); +sum1=W(0,-1109749038,-1107273417,-1102577952,1030213964)+W(1,1036563817,1046944740,1031914983,1050658577)+W(2,1042438683,1049923207,1044388569,-1113189609)+W(3,-1089184118,-1087748930,-1096053014,-1091524869)+W(4,-1092016161,-1091034933,-1089719139,1050309800)+W(5,1048990040,1053009554,1048709856,1049517424)+W(6,1050333996,1042543591,1055304278,1034159515)+W(7,1040366472,-1122229091,1006842402,1034826102);sum2=W(0,1041125733,-1097603156,-1103003109,-1107000988)+W(1,1032085636,1048646468,-1094740103,1056003520)+W(2,-1094982607,1045744428,-1102781952,1063877853)+W(3,-1096755169,1041101455,1038162032,-1106723297)+W(4,1055140379,1049918932,-1106862916,1066829095)+W(5,-1090474230,-1081598978,1049572267,-1085369603)+W(6,1061130686,990353951,1058588396,-1096233798)+W(7,-1095838692,-1089860215,-1096717844,1044183141);WS(-1080283264,1053171958); +sum1=W(0,1045885175,-1113658461,1034538909,974135701)+W(1,-1122513036,-1118011958,998696774,-1108239136)+W(2,1054395509,1050045174,1055879386,1060600957)+W(3,1061640838,1060753746,1054788217,1061053402)+W(4,-1083475508,-1095192933,-1085810962,-1084797135)+W(5,-1086057732,-1087204563,-1092652351,-1108529436)+W(6,1028512496,1035446876,1026195253,1044250612)+W(7,1037521197,-1117222317,1038575473,-1101819472);sum2=W(0,1049760823,-1132622893,1033001558,-1136534149)+W(1,1043696998,-1092886300,-1098156850,1058228696)+W(2,1082611215,1077078383,1066257283,986681348)+W(3,-1084657320,-1069070549,-1072372844,-1074505611)+W(4,-1114287788,1055018182,-1101461080,-1078537691)+W(5,1054805894,1065047159,1049854091,-1082348593)+W(6,-1130959534,1035090608,-1112584386,-1090394759)+W(7,1058031741,1038822180,1041633511,-1115499033);WS(-1073398920,1057727890); +sum1=W(0,1041979362,-1106188342,-1108985859,1040300287)+W(1,1044683952,1046284093,1044621499,990388050)+W(2,1052994159,1056847849,1060197326,1059196498)+W(3,-1094535618,-1094105983,-1102914751,1043962286)+W(4,-1092671491,-1087976920,-1085676269,-1108460501)+W(5,1051731585,1046385743,1031818215,-1104493131)+W(6,-1110295050,1033778006,1040328063,-1114468666)+W(7,-1102804911,-1098429184,-1104640754,1033981777);sum2=W(0,1021160276,-1093219342,-1089562294,-1106388958)+W(1,-1099093932,-1180890998,-1090965228,1057228486)+W(2,-1089430647,-1135654176,-1079796815,1074674993)+W(3,-1098010580,1052929457,1040584224,1047748991)+W(4,-1102895535,1044152573,-1095163331,1074136497)+W(5,-1095203310,-1099885509,1041387674,-1131585606)+W(6,1031984432,-1096279754,1011763192,-1101895278)+W(7,-1117345690,-1095468231,-1107912603,1045144673);WS(-1087643711,1073414034); +sum1=W(0,1043421796,-1116796288,1042590607,-1098636497)+W(1,1008405302,1005024220,-1106384411,1029633907)+W(2,1043019738,1056957030,1048028053,1065994910)+W(3,1061262410,1059267719,1045820026,1054563645)+W(4,-1091862260,-1093379129,-1089120888,-1081315117)+W(5,-1088787029,-1093593189,-1108751805,-1106230054)+W(6,1028452722,-1112484637,1043084437,-1120978641)+W(7,1046109207,-1105879924,1024805700,-1095994501);sum2=W(0,1015257573,-1117575950,1040590395,1040031817)+W(1,-1104875608,-1111928738,-1124331304,-1104400845)+W(2,-1101361376,1051853927,1007636882,-1085239439)+W(3,1029484438,1055085469,-1104410806,1055334030)+W(4,-1151605286,-1126719224,-1099060090,-1069257368)+W(5,1078894141,1065488662,-1097362053,-1099504604)+W(6,-1114431290,-1122150057,-1123376079,-1122292554)+W(7,1045790053,-1105709439,1046590167,-1096100911);WS(-1089052703,1050218486); +sum1=W(0,1024924308,-1124263665,-1114112032,-1101857739)+W(1,1004177297,-1132101549,1037546120,-1127618735)+W(2,1032977094,1048865735,1032370348,1057017435)+W(3,-1096925880,-1106597310,-1101706323,-1138126252)+W(4,-1127622480,-1103037451,-1093324152,-1130658874)+W(5,1049797356,-1147023991,-1148374781,1041185327)+W(6,1016061078,1027347950,1047024376,-1114101947)+W(7,-1136753151,-1136950735,1016234194,-1135392976);sum2=W(0,-1103127935,1034551493,-1131095837,1056852609)+W(1,1041291951,1031312786,-1119687326,-1125922018)+W(2,1033687244,-1111330163,-1111327049,-1097897810)+W(3,-1092598078,1027703970,-1119650108,1037109557)+W(4,1044282132,-1132159854,1043675418,1038437355)+W(5,-1085166716,-1122838335,1030316614,-1115941571)+W(6,-1115309191,-1101537844,989659429,-1126658673)+W(7,-1101159602,1065573620,1035948285,1021015548);WS(1065854560,-1114586365); +sum1=W(0,1025132845,-1132208108,1043375962,1036127555)+W(1,1042813603,1042302785,1041475414,1044294516)+W(2,-1093129789,-1097600366,-1094779500,-1085251325)+W(3,-1085614646,-1083792532,-1088034874,-1081301837)+W(4,1039292161,1047014713,1054220253,1059484531)+W(5,1058902029,1058554289,1049492791,1057966909)+W(6,1052478106,-1114318540,1045472794,1040640636)+W(7,1026772633,1030110605,-1123458066,1048041627);sum2=W(0,-1082315074,1044643809,-1098370418,1032322202)+W(1,-1088636595,1057109638,-1093539506,1061431798)+W(2,-1085719643,1026206592,1060376399,1066420950)+W(3,1042910065,1025783712,-1117795056,-1120476284)+W(4,1072912386,-1098026838,1068488422,1072201946)+W(5,1055106268,-1087763572,-1084317601,-1077472196)+W(6,-1097858732,-1097387905,-1097681385,-1095903963)+W(7,-1092707091,-1104219349,-1087895305,-1105350768);WS(-1071370880,1080498273); +sum1=W(0,-1117491793,1039364315,1035846886,1023528601)+W(1,-1131889533,-1106314247,1028375004,1013100112)+W(2,-1117320376,-1100646881,-1094786920,1045848824)+W(3,1057069771,1055228236,1020389492,-1127017775)+W(4,1025681812,1049740511,1058631773,-1094741601)+W(5,-1088346742,-1102894479,-1138962992,995411618)+W(6,-1112958490,-1103504723,-1105396320,1032469201)+W(7,1034336534,-1144513794,-1116565942,1002008579);sum2=W(0,-1097850747,-1107398437,-1085613590,1042292809)+W(1,1054106205,-1106648125,1035361236,-1122554235)+W(2,-1108946242,-1114277717,1063125687,-1084555354)+W(3,1059764079,1041901467,-1103098774,-1148617751)+W(4,-1129761151,-1118690429,1040789135,-1101999238)+W(5,1051725304,-1128317719,1022272136,1025957669)+W(6,1024320851,1012636527,1029278628,1026191463)+W(7,-1119736004,-1127460399,-1115360404,997652141);WS(1058528159,1053906024); +sum1=W(0,-1112917396,1035675727,-1104938189,1040468760)+W(1,-1105254898,1020887917,-1113141838,-1149793215)+W(2,-1104256080,-1092229473,-1097223269,-1082484606)+W(3,-1103704557,-1100912091,-1118771074,-1099449368)+W(4,1023681564,1058833811,1051100098,1061928249)+W(5,1057519273,1047691241,1047329733,1044776397)+W(6,1039659283,1021887717,1033492802,-1119337706)+W(7,-1099217437,-1127325712,-1114402703,1024214504);sum2=W(0,-1129442596,1023778714,-1113953277,1026809294)+W(1,1035644478,1034718426,1016827280,1038084720)+W(2,1040644144,1033307012,1056896617,-1080168883)+W(3,1030172798,1046899220,-1114672577,-1138817753)+W(4,-1106302200,1056981996,1082625405,-1064674592)+W(5,-1098216535,-1107268878,-1138831353,-1118740750)+W(6,-1105488042,1014815489,1048992482,1043950232)+W(7,-1120732434,-1121557578,1026207834,-1122753582);WS(1050028863,1057904824); +sum1=W(0,1016998719,1031484924,-1113918453,1035763396)+W(1,-1100192683,1046082071,1023767163,-1109585801)+W(2,-1115527732,-1114471481,-1092713340,-1086973069)+W(3,1048884339,-1093669960,-1109475380,-1102684193)+W(4,1049960370,-1097014217,1059124695,1055821255)+W(5,1045748179,1046233018,972758359,1047341446)+W(6,1033316845,1045307870,-1113659631,-1113580281)+W(7,-1104759887,1024760783,1028768132,-1118597711);sum2=W(0,1042577042,1035985609,-1132583692,-1108557005)+W(1,1045882832,1049978360,-1123148614,1037998467)+W(2,1058174637,1022451597,-1083350192,-1102051996)+W(3,-1096734805,1040525485,-1111555351,1012738322)+W(4,-1093234196,1028288917,-1089654696,1066585170)+W(5,-1112976831,-1101233023,1016281700,1035922998)+W(6,1036828005,1036599280,1043707159,-1099096459)+W(7,-1117191962,1038823523,1010883764,-1106116243);WS(1064158815,1035299335); +sum1=W(0,-1112803360,987363362,1040202935,-1148543050)+W(1,-1119103150,1016866897,-1120253212,-1136961231)+W(2,1016610641,-1111853690,-1090418272,-1086418793)+W(3,-1096774480,-1106302329,-1125874772,-1111706212)+W(4,1043480489,-1116662313,1043761841,1062267936)+W(5,1026731899,1046949595,1044534239,1038415821)+W(6,1023721675,-1114846141,1040437218,1044974085)+W(7,-1112576238,1035797256,-1118929285,1017229376);sum2=W(0,982347958,1032509555,-1111294086,1034453505)+W(1,-1107492941,1047671755,-1114281099,1041657921)+W(2,-1130481715,-1105443060,1041532435,-1090026061)+W(3,-1115327745,-1099067440,1007189687,-1106888056)+W(4,1039697927,-1102232537,1059036310,1065332554)+W(5,1049776291,1035057967,-1116755236,1039394631)+W(6,1029826582,-1106323503,-1087181565,-1095157490)+W(7,1032022369,-1113855935,-1137758215,-1116441678);WS(1064590463,1056702913); +sum1=W(0,1029043770,1053372231,-1096751755,1042753121)+W(1,-1132040847,-1098166823,1054745035,-1101919647)+W(2,-1118119137,1049750478,-1090400466,-1089893441)+W(3,1035942347,-1098407696,1057009004,-1105867448)+W(4,1044521535,1040212560,1048069253,-1098259842)+W(5,1046519145,-1126503113,1029470901,-1137574860)+W(6,-1108622774,1055292354,-1086796959,1028130891)+W(7,1043794349,-1097599727,1057963224,-1099480944);sum2=W(0,-1112469736,-1109993908,-1113626244,-1101975228)+W(1,-1113395603,-1115391866,-1111764318,-1114050909)+W(2,1047380321,1048112351,1039961237,1053720344)+W(3,1033059361,-1117206471,1050486894,1029031616)+W(4,-1107309008,-1096267194,-1149218892,1041967405)+W(5,-1105421186,1041082150,-1097114178,-1116211284)+W(6,-1130012001,1044766357,1024449363,-1105185961)+W(7,1034928166,-1103730760,1041700935,-1133808950);WS(1049282175,-1081654589); +sum1=W(0,1026879882,-1106636470,1025593670,-1120434947)+W(1,-1109057316,-1103814142,-1108405355,1025046173)+W(2,1056840376,1051340514,1059046350,1060994015)+W(3,1062254571,1054415372,1044610849,1057281100)+W(4,-1089715922,-1103588481,-1087728227,-1081081863)+W(5,-1089160278,-1110084674,-1097611347,-1102762237)+W(6,1023576205,1019713064,1018583793,-1116831948)+W(7,1040563949,-1148705741,-1130543166,-1108038889);sum2=W(0,1021240677,-1117500355,-1104166105,-1110155670)+W(1,-1101525323,-1099065181,-1135933351,-1100288377)+W(2,-1112389783,-1154883848,-1102583420,1061056453)+W(3,-1123615532,1038434309,1041908272,-1120914319)+W(4,1025718250,-1096682611,1048911763,1065471868)+W(5,-1149445264,-1090281103,1042017461,-1131934595)+W(6,-1104779102,1051908652,-1093040032,1051220588)+W(7,-1113750073,-1098156535,1046751376,-1100861861);WS(1044733566,-1111466942); +sum1=W(0,1033634167,-1105078967,-1104340430,-1106426842)+W(1,-1101553619,-1110993602,-1113465444,1020428386)+W(2,1060020808,1041929508,1062221635,1060048443)+W(3,1059584252,1054717575,1044713794,1047352089)+W(4,-1092913556,-1103349137,-1092289734,-1090785767)+W(5,-1094348262,-1097827057,-1098824243,1041060918)+W(6,-1112663104,-1134753630,-1126194825,-1110397240)+W(7,-1114529117,-1113238887,-1140846474,-1094820883);sum2=W(0,1040248415,-1113076108,1043824330,-1105221470)+W(1,1036602392,-1134849104,-1163695359,1011808464)+W(2,1084299283,1066146464,-1073408210,-1067326117)+W(3,-1097425816,1016852200,-1119512248,-1118870508)+W(4,1054267917,1032173778,-1102778436,-1084477148)+W(5,-1149511007,1040914456,1026379762,1011171408)+W(6,1002599056,1029289900,1027082476,-1116688572)+W(7,1024010398,-1121212984,1007530464,1020903456);WS(1041204862,1020998748); +sum1=W(0,1041320410,-1111643799,1033147201,1033305824)+W(1,-1110534482,1048653459,-1106102028,-1129433652)+W(2,1040787048,1044400490,-1112000574,1057857240)+W(3,1058317173,1013490791,1040475768,1032979455)+W(4,-1129649268,-1096018340,1041936758,-1090212595)+W(5,-1083609992,-1108280561,-1098465902,-1104103124)+W(6,-1136864165,-1123167632,1014392453,1043382402)+W(7,1046901861,1040774794,-1121200123,-1123801518);sum2=W(0,1033367466,1036408153,1049195658,-1116950481)+W(1,-1081345874,1035726191,-1109751565,1034565507)+W(2,-1105739926,1041467605,-1097896497,1069287141)+W(3,1045676499,-1097322898,1034595972,1022861151)+W(4,1035166617,-1116824529,-1127250349,-1103787577)+W(5,-1104285546,-1110450029,1041775082,-1111377560)+W(6,-1121294834,1020242785,1024987646,-1113169844)+W(7,-1109755223,-1162599282,-1128984227,1015705141);WS(1061587071,-1140717261); +sum1=W(0,-1112565188,1035683412,1034588141,-1105710858)+W(1,1024277837,-1104681461,1033519565,-1097426768)+W(2,-1082585266,-1091946062,-1086181493,-1084260507)+W(3,-1087521200,-1094344584,-1109665588,-1092361421)+W(4,1063001355,1057075562,1061257307,1062016535)+W(5,1059484653,1051726365,1053582679,1050023351)+W(6,1029148274,-1133150565,-1121255338,1031972073)+W(7,-1140527211,1015752222,-1140031633,1054184694);sum2=W(0,1052095029,1040595366,-1098987175,-1084153168)+W(1,-1091290481,-1096720628,-1101102486,1044734380)+W(2,-1068831962,-1076957703,-1081538085,1037971476)+W(3,1070110671,1069986978,1074264190,1070997731)+W(4,-1076286348,-1081349117,-1088771362,1057908839)+W(5,-1114213425,1063483875,1068552571,1075267150)+W(6,1061242602,1046002483,1040290526,-1093902656)+W(7,-1094367529,-1094489561,-1099236623,-1081182731);WS(-1071242520,-1095264341); +sum1=W(0,-1097248122,1017326143,-1105336241,-1091856432)+W(1,1051920949,-1097210280,-1122345698,999615444)+W(2,1057257956,1050464317,1059871125,1058219580)+W(3,1056167546,1051126389,1047883744,1055359408)+W(4,-1095464807,-1098731544,-1096805078,-1088025845)+W(5,1032394345,-1089070234,-1102431837,-1098523426)+W(6,-1098637431,1039614697,1034135507,-1098503641)+W(7,1057766069,-1095933097,1030493340,-1112287963);sum2=W(0,-1132961311,1034954689,-1131131128,-1105685093)+W(1,1044104138,-1118659572,-1117347443,-1140373421)+W(2,1038597560,-1114842936,1039456110,-1104727669)+W(3,-1085849936,1053272959,-1117746499,1049759548)+W(4,-1089057302,-1113751042,-1095192990,-1097910004)+W(5,1064526735,1045257331,1054461586,1062278408)+W(6,1055074030,1048893008,1046429121,1057064004)+W(7,-1091871118,-1096323208,-1090448877,-1081803378);WS(1055746431,1040288248); +sum1=W(0,-1154016945,-1117613130,-1108247483,-1114072538)+W(1,-1103530014,-1134724696,-1102903742,1046496384)+W(2,1057716289,1055590360,1059644857,1067207252)+W(3,1062212336,-1104299500,1049302591,1054319858)+W(4,-1093759650,-1094487986,-1089867895,-1085229664)+W(5,-1089860607,-1088563377,-1097577389,-1094962569)+W(6,-1122750430,-1117149477,1031955359,1016534394)+W(7,1044969554,-1137442922,1035178328,-1108831509);sum2=W(0,1041968914,1026703145,1033601916,1035338047)+W(1,-1106207855,-1094112140,-1100978937,-1106593629)+W(2,1051752153,-1115260470,1038625472,1052354182)+W(3,-1118891350,-1081023345,-1084581041,1066756564)+W(4,-1123800846,1035127537,1035458769,1035609386)+W(5,1057116581,-1104080857,1055976243,-1101750238)+W(6,-1117011966,1031245794,-1109678904,1050054059)+W(7,-1098815779,1038926653,-1108176195,-1107244818);WS(-1089881759,1037957184); +sum1=W(0,1000251530,-1117869170,1029072469,1031851625)+W(1,1024508279,-1105582638,-1121710869,-1105403363)+W(2,-1098029886,-1095515176,-1089055515,-1079829205)+W(3,-1094362449,-1105281331,-1112643769,-1102959900)+W(4,-1105974859,1060224425,1060210489,1061092856)+W(5,1060581840,1056017638,1040568609,1050032516)+W(6,1041712355,1040628361,1042449912,-1119516507)+W(7,-1102207965,-1107063314,-1112932479,-1124065669);sum2=W(0,1051114274,-1105565679,1055378846,-1098769061)+W(1,-1106275827,-1101598109,-1109849433,-1104426610)+W(2,-1102532150,-1114476854,-1082969540,1064670328)+W(3,-1102001010,1044770567,-1114021751,1049459491)+W(4,-1093533301,1038543175,-1075201485,1077554590)+W(5,1048871628,1040464379,-1111404687,1049461049)+W(6,1042271071,-1112348507,-1087360189,-1100903801)+W(7,-1115312306,1031777408,-1125205988,-1104546886);WS(-1089609215,-1090633405); +sum1=W(0,-1095985139,-1131730646,-1106836118,-1120898567)+W(1,-1122196780,-1108220230,-1113602180,-1111282801)+W(2,1060468726,-1114989785,-1111340153,-1083229835)+W(3,-1097505195,-1091862496,-1118278055,-1094974325)+W(4,1029992257,1035463235,1053834481,1057093887)+W(5,1060127651,1056095953,1053644551,1060964715)+W(6,-1106189340,-1121474072,-1109753904,-1170836447)+W(7,-1099640750,-1106303115,-1102165833,-1114233933);sum2=W(0,-1102755055,-1123071369,-1101642458,-1121616776)+W(1,-1123659230,1034971308,-1114444448,992820811)+W(2,1028184991,1018963304,1042446539,1048904011)+W(3,1022095962,-1102092583,-1115812270,-1115600403)+W(4,1014375557,1034540123,-1110958917,1055634924)+W(5,-1122273513,1047229966,1006913192,1032293939)+W(6,1018724927,-1154538439,1030328833,-1104340897)+W(7,-1123674010,-1103087688,-1118183380,-1116477720);WS(-1089497119,-1083970920); +sum1=W(0,1049400081,-1112985379,1032734776,1046931016)+W(1,1032966898,1026703569,1023567673,1020804657)+W(2,1017038202,1054102421,1052273107,1050677101)+W(3,1056472798,1054012759,1046736000,1054561791)+W(4,-1096866095,-1092440080,-1090492445,-1077775563)+W(5,-1095500286,-1141821439,-1103091876,-1096856494)+W(6,-1129668560,1023489999,1039999326,1047866250)+W(7,1031139121,-1128248842,1037611037,-1102316761);sum2=W(0,-1119432539,-1114702364,-1131454616,1045807900)+W(1,-1107556037,-1138592655,-1120197723,-1116354551)+W(2,-1113150368,-1107904829,1051795717,1065572002)+W(3,-1104213250,-1096394963,991774812,991245404)+W(4,1049552369,-1109676099,1049548364,1052256292)+W(5,1058452060,-1077576443,-1102019177,1049782966)+W(6,-1123950204,1034167140,1018171432,1024318084)+W(7,-1104886632,-1103410805,-1103678409,-1123412946);WS(-1092399743,1070790531); +sum1=W(0,1031557241,1024013147,1045977841,1049827334)+W(1,1044712430,1042539942,1022243624,1042631871)+W(2,-1110110152,-1123928476,-1100428029,-1093314535)+W(3,-1098211617,-1120318828,-1110797385,-1103475236)+W(4,-1086332927,-1104003948,-1091187884,-1110202001)+W(5,1031718940,1031171411,-1118825252,1047659449)+W(6,1040307665,1029330819,1054647477,1048337215)+W(7,1045074033,1042256462,1034920639,1041342974);sum2=W(0,1035080118,-1111978522,1043189101,-1107203795)+W(1,1020874649,1040978901,-1103963851,1014904337)+W(2,1049091174,1049791001,1038894820,-1088677682)+W(3,-1074681252,1032440616,-1139760881,-1132242473)+W(4,1068767241,1068692590,1041587068,-1079138335)+W(5,-1088844169,1033618204,1036797334,1040720920)+W(6,1056655092,-1120502660,1054889999,-1094007639)+W(7,-1106617291,1037089622,-1115116202,1029103732);WS(-1076899872,-1090262268); +sum1=W(0,-1111775583,-1105515965,1031134981,-1152866339)+W(1,1022185487,1031461535,991487050,1013082739)+W(2,-1105212520,-1109220950,-1105276619,-1081197371)+W(3,-1085735312,-1090100176,-1106571081,-1094472404)+W(4,1053805936,1044900104,1061229259,1056451270)+W(5,1061180827,1061600458,1040836429,-1114201801)+W(6,-1130865048,-1124779047,-1108606366,1012899053)+W(7,-1111684786,1038272628,-1123743158,1043636133);sum2=W(0,-1092758077,-1099940688,-1096959860,-1093749782)+W(1,1047974360,-1120633714,1036248767,-1113388587)+W(2,1054372816,1036990346,-1102824961,1072234824)+W(3,-1091574668,-1098403340,-1097220109,1024848209)+W(4,1025999909,1044094629,-1093700170,1074465248)+W(5,-1086059593,-1083936129,1045585843,-1093741871)+W(6,1025560437,1015649794,-1134776466,-1118772240)+W(7,-1097328702,1035273338,-1098634116,1051989609);WS(-1097318719,-1106686758); +sum1=W(0,-1138034233,1022220430,-1115259277,1037878284)+W(1,-1109043646,-1118564628,-1132126739,-1123355602)+W(2,1031803579,-1105675680,1060345356,1040095311)+W(3,1057210483,1018511203,1038086620,1040876381)+W(4,-1107190316,-1110575515,-1091489993,-1082557626)+W(5,1054616755,-1113047197,1037558661,1040895458)+W(6,-1118470609,1013564641,1028754310,1043380040)+W(7,-1126688788,-1103180903,-1105313401,-1110366427);sum2=W(0,-1116780480,1034654933,1033980194,-1106740681)+W(1,1037910476,-1110588743,1033369701,1006481529)+W(2,1011610145,-1109786563,1034290987,1058839838)+W(3,-1112504437,1048688059,-1100404580,1024874106)+W(4,-1126532250,1049246354,-1098441369,1055488745)+W(5,-1081564854,-1109313096,1046210019,-1122526519)+W(6,1031867194,-1117436106,1050453777,-1098876833)+W(7,-1101879397,-1105182695,1033744368,1042001428);WS(1061957727,1058150789); +sum1=W(0,1009728708,1031914819,1043097483,-1106863550)+W(1,-1097372952,-1108191069,1032793786,-1129266281)+W(2,-1099288198,-1097230757,-1087266183,1043273168)+W(3,1055416522,1050026271,-1110590381,-1108247452)+W(4,1046412713,1055587995,1056802398,1049133325)+W(5,-1086687979,-1105368103,-1107437206,1042988739)+W(6,1036440691,-1109853493,-1106212891,1023154886)+W(7,1047286155,1036106272,1024106902,-1120124353);sum2=W(0,1021676194,-1104415808,1041444786,-1104915444)+W(1,1042839409,1025561656,-1111488206,-1119893126)+W(2,1026925373,1041631623,1049347642,-1075706495)+W(3,1068941883,1049874161,-1096918949,1030080935)+W(4,-1130821928,1047340087,1055108729,-1078646873)+W(5,1058328878,1054741696,-1108156193,-1107876167)+W(6,1011207236,-1118374396,1032289888,-1097824639)+W(7,1041964936,-1122940124,1033049167,-1131526532);WS(1058678303,1013994144); +sum1=W(0,-1118673511,-1145988558,-1107600786,-1097799452)+W(1,1050901309,1025019066,1034380585,-1117490811)+W(2,1050426208,1032382213,1059103555,1061451838)+W(3,-1098106458,1032049821,1038038624,1043957152)+W(4,-1111022430,1019043839,-1086017695,-1090188381)+W(5,1050664020,-1093177128,-1133222475,-1113568728)+W(6,-1110204509,-1116037137,1043824660,-1111434373)+W(7,-1123560275,1043538778,-1104489131,-1110765932);sum2=W(0,-1105859137,1047608842,-1101390223,1011548907)+W(1,-1098146078,1047719826,-1099968186,1028887915)+W(2,1052524883,-1096529292,-1103682938,1018027622)+W(3,1039330573,-1101134187,1054816538,-1105962981)+W(4,-1116369180,1033298597,-1095014501,1063707518)+W(5,1056731707,-1086128756,1037701277,-1150004284)+W(6,1025172812,1035180205,-1138831970,-1096368530)+W(7,-1094263126,1061932077,-1095466983,1016476277);WS(1063038079,1033861047); +sum1=W(0,-1111914898,1040884807,-1102681756,1061986003)+W(1,-1095429920,-1109559865,1034752240,-1104233906)+W(2,1016779545,1014390112,-1109833994,-1095449911)+W(3,-1097838100,1019923216,-1148961393,1009274926)+W(4,-1107257338,1045397811,-1096677860,1065846455)+W(5,1029008656,1039008680,1033037520,1029851870)+W(6,-1114919788,-1162045399,-1101855164,1049909751)+W(7,-1097193708,-1113534130,1007645095,-1103320918);sum2=W(0,-1112457849,-1106002020,-1103752624,-1114732591)+W(1,-1102536580,1029961226,-1114728817,1038070251)+W(2,-1117177515,1017665294,-1098231154,1062239338)+W(3,-1097906884,-1101585142,1037597321,-1112453861)+W(4,1031942991,1033022206,-1133545004,1061426536)+W(5,-1109528685,1032626487,-1114069131,1032988844)+W(6,-1106095669,1041685053,-1095196752,1046863079)+W(7,-1105989872,-1120505375,1028074076,-1124888510);WS(1060691839,-1121680521); +sum1=W(0,-1112633460,1034282296,1016470792,-1124091490)+W(1,1036530779,-1110508885,1036991882,-1133939630)+W(2,-1105323108,-1097943963,-1091137362,-1083253895)+W(3,-1090987401,-1090137469,-1098291034,-1093525810)+W(4,1045243383,-1117038833,1060606770,1065759511)+W(5,1062311590,1056765570,1054157412,1057599172)+W(6,-1113361469,-1109479713,-1110311799,-1102522287)+W(7,-1114082482,-1104777690,1016563642,-1167556095);sum2=W(0,-1097189010,1041454563,-1110771302,1043926258)+W(1,-1109373654,-1109768355,-1114304258,1043669875)+W(2,1057901747,1039698409,-1122301550,-1125642190)+W(3,-1108285138,1020817735,1040279727,-1101494695)+W(4,-1086723052,-1087530727,-1094374456,1064818137)+W(5,1036021291,-1109979249,1055924705,1040712355)+W(6,-1086497310,-1090377488,-1110538585,1061014784)+W(7,1034378960,1044647130,1013465199,1050381101);WS(-1087684831,-1094525449); +sum1=W(0,1038107891,-1121734275,1035814365,-1107604308)+W(1,1038052214,-1101928869,-1104767443,-1127021124)+W(2,-1093934649,-1096975274,-1093954738,-1090018791)+W(3,-1088075930,-1090123804,-1106254226,-1100235009)+W(4,1052573184,1049163549,1040479417,1066601083)+W(5,1058232216,1057618495,1040796439,1051666987)+W(6,1038198313,-1113930844,1035537105,-1102439448)+W(7,-1113118893,-1148589172,-1146582942,1033628463);sum2=W(0,-1102391770,1032495868,-1140349122,1051494072)+W(1,-1080481573,-1072283498,-1085993190,-1091499210)+W(2,1038892506,1032348345,1055934176,1066287204)+W(3,1070533091,1056179234,-1098172645,1038613315)+W(4,-1109920182,1035913564,1043439866,1049172795)+W(5,1048700512,-1122911277,1042548330,-1103404378)+W(6,1034045130,-1111661823,-1148365864,1035742233)+W(7,1024670194,1043482108,-1117726050,1024343165);WS(-1095407551,-1073547033); +sum1=W(0,-1103915126,-1101976843,1024335748,-1108044768)+W(1,1050893513,-1095324014,-1107189281,-1114975198)+W(2,1043640456,1041775803,1061599658,1057524528)+W(3,1060862745,1028413803,1044362232,1051352312)+W(4,-1106314263,-1098551608,-1096990689,-1095708126)+W(5,-1102020840,-1092797676,-1110398586,-1097969466)+W(6,-1099126911,1023142916,-1110220795,-1106562202)+W(7,1056016670,-1099653918,1031215069,-1138223071);sum2=W(0,-1112168075,-1111493200,-1123529566,1022286331)+W(1,-1103466952,1035493883,-1113566520,-1106265315)+W(2,1034632723,-1122920764,1009053647,1049936313)+W(3,1051909492,-1099948229,1029419308,-1107051081)+W(4,1034960798,1040740621,-1105159128,1057592446)+W(5,-1126339526,1041517424,1016655048,1024151142)+W(6,-1112860057,-1108202591,-1115675116,-1112708946)+W(7,-1146770753,-1116950762,-1115594520,-1103163741);WS(1063407871,1051042354); +sum1=W(0,1005154604,-1120529264,-1106161584,-1130858780)+W(1,-1114354154,-1127255711,1023693521,-1115504868)+W(2,1049807310,1052429035,1057743574,1063894449)+W(3,1058090310,1052514789,1044231916,1049931918)+W(4,-1113122997,-1100831547,-1088929544,-1086654500)+W(5,-1089886688,-1092092086,-1106897472,-1097639884)+W(6,-1107282310,1042685852,-1113923042,-1129272494)+W(7,-1164896285,-1131567786,-1131959253,-1115987013);sum2=W(0,-1113031572,1030565628,-1127702936,992883874)+W(1,1014952720,990495554,1018238740,1023316920)+W(2,1043434467,-1108784254,-1111949688,1036810375)+W(3,-1111107284,1042918247,-1120169364,-1112993936)+W(4,-1088941888,1056568736,1036016830,1060861120)+W(5,1023742716,-1098281783,1022041004,-1112517088)+W(6,-1067187434,-1079041185,1074040966,1075709893)+W(7,-1099161149,992814626,1039733673,1028892682);WS(1053166591,-1107822593); +sum1=W(0,1033874440,1022746982,1035703758,1019810386)+W(1,1044260196,1042374543,1040749291,1041374685)+W(2,-1120335240,1031831786,1052124034,1048792350)+W(3,-1095582904,-1088629918,-1097950065,-1085974448)+W(4,-1105709561,-1108379508,-1093762507,1046826502)+W(5,1053612659,1045805451,1037463342,1042845918)+W(6,1042509273,1008295657,1044631286,-1124953572)+W(7,-1112928126,-1113071488,-1120529605,-1132054272);sum2=W(0,1010990056,1039106059,-1102786881,-1114641521)+W(1,-1133768253,-1101476912,-1103607882,-1113060394)+W(2,-1096561981,-1097601992,1031463124,1058004743)+W(3,1042505523,1041182740,-1105959219,-1099775079)+W(4,1040308359,1052717590,1058176412,1045709336)+W(5,1034355291,-1096768246,1033275384,-1105804625)+W(6,-1119485380,-1115258493,-1101721469,-1138490792)+W(7,-1101570252,1029590734,1037679123,1036565969);WS(1028916214,1067075549); +sum1=W(0,1039584518,-1119264713,1016298993,-1105861885)+W(1,-1113980813,1020015061,-1134777055,1032661512)+W(2,-1148995491,-1109885152,1055889168,1067421167)+W(3,1059632007,1055091716,1045130509,1052375930)+W(4,-1098323934,-1096386895,-1096985498,-1085982162)+W(5,-1087532161,-1088331431,-1095878225,-1104015130)+W(6,1026160863,1022848653,-1150434165,1034469007)+W(7,1044152506,1024761132,1032543553,-1104676378);sum2=W(0,-1120016029,-1096222017,-1119382227,-1092715875)+W(1,-1110818689,1049876716,-1103484103,1032841990)+W(2,-1101422768,-1103630239,1040689805,1064582511)+W(3,1043406218,-1089499537,1029271710,-1117522613)+W(4,-1104653664,-1105545071,-1120927281,1058022283)+W(5,1060808344,-1107109410,-1107008053,-1105419897)+W(6,-1122344899,1042131820,-1120071349,-1101606830)+W(7,-1096987934,1051590178,-1099435532,1050342947);WS(1047020030,1040511430); +sum1=W(0,-1108637223,1033110649,1044090139,1043424750)+W(1,1036624046,-1120308481,1033721201,-1106849700)+W(2,-1092384755,-1090443530,-1085982557,-1080046633)+W(3,-1083957593,-1096279270,-1149642107,-1100324533)+W(4,1057603229,1053549631,1061618217,1047924234)+W(5,1053999549,1057048888,1057845673,1052833857)+W(6,1031927268,-1122999800,1026366340,1032840448)+W(7,1015929108,1020572028,994286645,1039624063);sum2=W(0,1035208568,1043030610,-1107699159,1044796248)+W(1,1034655700,-1103668262,1045164876,-1095424772)+W(2,-1124082321,1008382386,-1107061123,1049576136)+W(3,1051573865,1048541752,-1093669891,-1134934914)+W(4,-1093736918,1050323039,-1114950423,1074526989)+W(5,1073198167,-1080621030,-1074078238,-1079139349)+W(6,1048736861,-1118377912,-1106119918,-1111443567)+W(7,-1132389881,1034733436,1034120076,1029501600);WS(-1080108544,1072234904); +sum1=W(0,-1115070415,-1130610603,-1098588213,1057466749)+W(1,-1104374087,1029557602,1018553236,1001112594)+W(2,1027588151,1029085890,1032775046,-1089931562)+W(3,-1123371019,-1094030554,1034779836,999211181)+W(4,1031137458,-1104252646,1056995037,-1083673968)+W(5,1052314097,1050628415,1033643941,1036988180)+W(6,1018404227,1044293186,1028038521,1050777268)+W(7,-1093125043,1046325824,-1108340394,1020739741);sum2=W(0,-1115557063,-1118678156,1045099863,-1102856438)+W(1,1035209289,1035167397,-1117208818,-1120387027)+W(2,1043108929,1033401680,1036186051,-1124450766)+W(3,-1112637977,-1114646959,1012643139,-1132473655)+W(4,-1138826120,-1093193803,-1079584214,1068262877)+W(5,-1121148137,1041792105,-1138286224,1032348301)+W(6,-1108049897,-1109597407,1013268663,1049634970)+W(7,1046161245,-1111895568,-1127251156,-1116707942);WS(1061770399,1033097145); +sum1=W(0,-1127803310,-1108446526,1046619869,-1102069216)+W(1,-1115166002,-1107462472,-1113123881,-1109525661)+W(2,-1100493560,-1122290538,-1090144134,-1124504076)+W(3,-1096124978,-1113245389,-1115437168,-1114380655)+W(4,1049484359,1040952192,1049567736,1060283011)+W(5,1036170309,1049188012,1004781969,1043620172)+W(6,-1117956049,-1101349332,1015706547,1051006353)+W(7,1027971186,-1105896346,1011773295,-1118021614);sum2=W(0,-1115090363,-1146121477,1029869322,1039239074)+W(1,-1123366919,-1123569769,-1115297931,1022224092)+W(2,1035607607,1032878473,1020296178,-1094567498)+W(3,-1133024223,-1111505684,1036037468,1025152664)+W(4,1036976780,1008730983,1050702114,1060438996)+W(5,-1092544833,-1088372125,-1119747923,1015952550)+W(6,-1102631851,-1105868946,-1106613659,1056742871)+W(7,1056526109,-1103439045,-1114092237,-1109382916);WS(1063262431,1041246684); +sum1=W(0,-1095604910,1035931377,-1116408259,-1113418944)+W(1,1035543059,-1109446615,1041501409,-1111045021)+W(2,-1094141452,-1103734011,-1088213584,-1084116356)+W(3,-1088057339,-1084926720,-1095142868,-1085134126)+W(4,1054301899,1050116188,1059695011,1063045487)+W(5,1060587189,1062081288,1055163174,1061043357)+W(6,1050361575,1015464930,-1130477940,1005018697)+W(7,-1114430457,-1112900435,968128030,1012274924);sum2=W(0,-1088652568,-1101936220,-1091191468,-1102444501)+W(1,-1123800532,-1111069004,-1088813372,1050243792)+W(2,1079171932,1073764649,1074855165,-1113430470)+W(3,-1095064501,-1078839186,-1078450334,-1071519758)+W(4,1068650823,1062997529,1053027607,1039600983)+W(5,-1105207914,-1082346847,-1088354544,-1081653443)+W(6,-1089634291,-1106083041,-1102140198,-1123235056)+W(7,1028735871,1056073450,-1114344542,1060600412);WS(-1071343712,-1080188504); +sum1=W(0,1048814204,-1112944093,1038698214,-1110388460)+W(1,-1102353903,-1113346827,-1115354285,-1172877482)+W(2,1024112567,992179242,1035991718,1065540811)+W(3,1062800155,1057270438,1047814390,1055244391)+W(4,-1101821021,-1105846854,-1110088095,-1086620536)+W(5,-1085891530,-1092189183,-1094362793,-1096652125)+W(6,-1155239198,-1115614373,-1117961066,1022833410)+W(7,1037955557,-1130491710,1026576596,1021561214);sum2=W(0,1077488778,1067869852,-1080283979,-1070445594)+W(1,-1085461181,-1113067149,-1135625536,-1105631704)+W(2,1057844910,1017329883,-1112258962,1038200220)+W(3,1045877800,1016515143,1029029881,1026840239)+W(4,-1110901413,-1123912240,1048616910,-1103189448)+W(5,1033584054,-1113680120,1006246833,1028070058)+W(6,-1157420388,1016773013,-1127671945,1027002057)+W(7,-1139116556,-1108492850,1033508697,-1122607860);WS(-1114300667,-1123436789); +sum1=W(0,1048745214,-1106612992,1040619730,-1101020989)+W(1,-1120049178,-1129452308,-1112058252,1040777596)+W(2,1024457460,1049280824,1061265254,1066754197)+W(3,1060475010,1056957204,1052291799,1051532558)+W(4,-1084727981,-1099711469,-1091611130,-1090437274)+W(5,-1087975654,-1087165059,-1095257281,-1091858685)+W(6,-1124831645,-1120312678,991636461,-1115033343)+W(7,1037659252,1036876438,1024723233,-1128167880);sum2=W(0,-1102675226,1045758589,-1106608364,1037856863)+W(1,-1121700495,1038509645,1041300787,1013024414)+W(2,-1096018291,1033992894,1053924217,1023354017)+W(3,1045521037,-1112080608,1019757091,-1111416466)+W(4,-1064870457,-1078407710,1074354229,1077566439)+W(5,1055978728,-1100523264,1032114149,-1096094745)+W(6,1050758265,-1091427154,1044800412,-1122690967)+W(7,1037435194,-1101170582,1048475585,1031501486);WS(-1081349952,-1073531246); +sum1=W(0,-1130396178,-1123247001,1049234666,-1123595694)+W(1,1044575749,-1118849787,1027091408,1015989072)+W(2,-1092471918,-1094799967,-1087091570,-1083589055)+W(3,-1090515766,-1088301188,-1100895532,-1095518837)+W(4,1052933181,1040552427,1062313536,1056428784)+W(5,1060166366,1052569014,956727337,1057005798)+W(6,-1120779255,1032899791,1048808240,1047688662)+W(7,1025076592,-1104574961,-1114767697,1028829344);sum2=W(0,1036727690,1038605852,1000461252,-1108807283)+W(1,-1118764382,1040753555,1025474323,1026410269)+W(2,-1101780564,1036224480,1043313873,1058417373)+W(3,-1110550387,1041024731,1032765623,-1114514162)+W(4,1047063866,1003722492,1071364196,1075919102)+W(5,1031984760,1052825370,-1104266299,1049040777)+W(6,-1095151348,-1101329253,-1071443435,-1072909475)+W(7,-1137970650,-1094681513,-1130737363,-1100563228);WS(-1087415039,1075227720); +sum1=W(0,1014202565,-1121306305,-1115466670,1055732347)+W(1,-1088701572,1045428619,-1106855619,-1113272762)+W(2,1030200505,-1093044977,1052765481,-1086016434)+W(3,-1108244135,1044242725,-1102530383,1042147022)+W(4,1042588557,1045750086,-1099185023,-1102841730)+W(5,1060432915,1001272287,1047811955,1043051755)+W(6,1032642210,1039690838,-1099716881,1054066516)+W(7,-1089156724,1045967960,994787170,-1114980876);sum2=W(0,1034817173,-1106843150,1035283571,-1117324330)+W(1,-1106783723,1033652183,-1105003316,-1109219720)+W(2,1033088277,-1115275500,-1108330169,1059951304)+W(3,-1114610359,-1130129964,-1100855920,1017452836)+W(4,-1105460751,1042281307,-1117933953,1055263105)+W(5,1036736577,1034893511,1040893249,1026860110)+W(6,-1119967238,-1122100142,-1118763227,1033190213)+W(7,-1099584511,-1097591398,1043864443,-1097701018);WS(1061885343,-1093433134); +sum1=W(0,-1119074171,1040591342,1024365415,-1112185530)+W(1,-1102861510,1047951017,1033079635,1030794670)+W(2,-1116612499,-1106037336,-1090085717,-1110885309)+W(3,1058148680,-1098920364,-1104145445,-1102965524)+W(4,1043937396,1035985530,1054530437,-1105284753)+W(5,-1085809524,1042740717,-1143903027,1048819605)+W(6,1026065358,1035233146,1023445318,1041032751)+W(7,1043298226,1028431483,1030877520,-1110782149);sum2=W(0,-1120425303,1041777983,1008642595,1038578170)+W(1,-1103931105,-1144970974,-1139607395,-1105571910)+W(2,-1115506247,-1109249837,1051302633,1062460419)+W(3,1046700430,-1110379832,-1121481149,-1125592805)+W(4,-1089905659,-1082926483,976609774,1062992305)+W(5,1016533657,1046952726,-1128426413,1044012895)+W(6,-1106986872,-1093100415,-1100742938,-1121360027)+W(7,1026171953,-1123505732,1047068010,-1108759193);WS(1057387711,1071476886); +sum1=W(0,1029774760,1046876472,1049447728,-1104814472)+W(1,1047761369,-1107998911,1035672969,1025453339)+W(2,-1088145158,-1090879061,-1087750555,-1081209882)+W(3,-1102041597,-1088704948,-1101378696,-1090772220)+W(4,1058722665,1046940920,1062289140,1060559271)+W(5,1057163193,1046238393,1049034574,1051154538)+W(6,1026644842,-1124024690,1034805113,-1101227374)+W(7,1041428045,-1112057972,-1123650077,1045125730);sum2=W(0,-1079574021,-1076424748,-1084651933,-1079383446)+W(1,-1094010079,-1105513599,-1094989946,-1083946107)+W(2,1066168402,1072246945,1055648588,1069722149)+W(3,-1105729737,1052366950,1046266897,1064021500)+W(4,-1106633910,1039775524,-1122282375,1050613020)+W(5,-1112550614,1046757765,1041413657,-1117589808)+W(6,1033041398,1025560740,1042767844,-1122422479)+W(7,1029478726,1029747528,-1132333344,-1110924549);WS(-1088291167,-1076464582); +sum1=W(0,1038365083,1013092187,1049005176,-1096083994)+W(1,1046666973,1029385568,-1130846211,1035921309)+W(2,1048475643,1039614653,-1105893787,-1090164821)+W(3,1048630844,1052597003,1030762351,1049653618)+W(4,-1115380053,-1115741870,-1115211424,-1106465144)+W(5,-1092124773,-1097273638,-1104199584,-1098780292)+W(6,-1113517956,-1118168192,1038779144,-1103584918)+W(7,1051487172,1036949051,1029432699,1041505439);sum2=W(0,-1102442432,1042447103,1009200726,-1140140535)+W(1,1018235219,1038566242,-1105836948,-1119461411)+W(2,-1119046775,-1103497340,-1108371687,1063726871)+W(3,1023996549,-1100556235,-1134905751,-1115426548)+W(4,1038119755,-1117033259,-1111757198,1053430514)+W(5,-1097582390,-1130738637,1027482933,1038939472)+W(6,-1116688635,-1109692823,-1136365839,-1103585210)+W(7,1035998106,-1122627505,-1113769016,-1131103707);WS(1063535295,-1106643391); +sum1=W(0,998897947,-1114069468,1030590255,-1120649212)+W(1,-1112623985,-1135800742,-1126057998,-1118923687)+W(2,1049160779,1050551697,1037435628,1059662980)+W(3,1051258674,1051146291,1042046535,1051522915)+W(4,-1095715331,-1114097198,-1091439068,-1098500149)+W(5,-1093374928,-1112852607,-1104302276,-1098602138)+W(6,1022592892,1035333911,-1105875754,1036951763)+W(7,-1097348874,1021555078,1032877804,-1118947123);sum2=W(0,1020791040,-1119848331,1028098574,1024075228)+W(1,1036335573,-1114214294,1028067710,-1123998545)+W(2,1023004440,1035188360,1036866165,-1081188844)+W(3,1036267331,1020492762,1026996488,1028180222)+W(4,-1131522740,1010552055,-1087402238,-1063807577)+W(5,-1074297638,1044255896,-1109527927,-1125487816)+W(6,-1130592194,-1114014595,1057774258,1085749988)+W(7,1072260443,-1101071935,1041502854,-1121770211);WS(1065370528,-1140007425); +sum1=W(0,-1119191691,-1123119348,1043193134,-1144777506)+W(1,1048874737,-1114692372,1047204584,1028382351)+W(2,-1089109360,-1093467562,-1104035088,-1082641845)+W(3,-1090665335,-1085597050,-1097312497,-1084438004)+W(4,1051697742,1051845168,1049231373,1058881533)+W(5,1060727795,1053776045,1050811579,1054559607)+W(6,1048704645,-1120571445,1047054964,-1128753754)+W(7,-1122636375,-1135014444,962936920,1047044271);sum2=W(0,1072219394,1068804680,1068134846,1066171639)+W(1,-1095987744,-1080918851,-1077110574,-1071545857)+W(2,-1078126224,-1079031251,-1078951161,-1087436811)+W(3,1039512383,1067164113,1069504242,1075315134)+W(4,-1093298188,-1110022070,-1084926454,-1107767815)+W(5,1055586357,1031793821,1041030661,1055897321)+W(6,1011861728,1040923692,-1105857084,-1121892273)+W(7,1026590003,1040751494,-1123439499,-1109554506);WS(-1089696543,-1143233957); +sum1=W(0,-1115482013,1045323653,-1096516931,1035013745)+W(1,-1162367211,1054106403,-1107204469,1036179510)+W(2,-1129127938,-1098483714,1045383939,-1091150045)+W(3,1043411549,-1086835476,1048447553,-1103773800)+W(4,1041381507,-1110243009,1059582003,-1106321908)+W(5,1034020454,1026676964,1034191370,-1159158363)+W(6,-1122467892,1049605572,-1090424421,1043667267)+W(7,-1109629626,1048548650,-1105600748,1035568493);sum2=W(0,-1134008573,-1125596513,1011008945,1051842604)+W(1,-1125276577,-1118729604,-1111959837,-1117720498)+W(2,1032064725,-1121806942,1045441656,1065460002)+W(3,-1114964420,-1130705389,-1121883022,1034360078)+W(4,-1117795542,1035355315,1024667789,-1089961367)+W(5,-1081892598,1026896379,1020053498,1023648883)+W(6,-1113496357,998755498,-1119910472,1041632626)+W(7,1035390555,1032979221,-1129745921,-1115672512);WS(1065278079,-1120402802); +sum1=W(0,1031924074,-1115548942,-1106896516,-1112658654)+W(1,-1103991244,-1121670257,-1115583119,1031270934)+W(2,1052390115,1049303261,1045251552,1060948388)+W(3,1062622505,1054395391,1045812503,1048618059)+W(4,-1097070063,-1099757447,1040981136,-1081623390)+W(5,-1085365853,-1096062708,-1101077740,-1099232531)+W(6,-1116671142,-1118597165,1041336272,1043338841)+W(7,-1145407604,1032773481,-1123616408,-1127437558);sum2=W(0,-1114021356,1032565152,1056835748,-1085160508)+W(1,1058685385,-1086618535,1047242231,1032715041)+W(2,-1110767736,-1122384971,-1085457975,1068814369)+W(3,-1085213012,1063574785,-1144776155,-1097434793)+W(4,-1100377718,1041858293,-1085697040,1060746614)+W(5,1057245366,-1094120608,-1093482365,1056356490)+W(6,1034493514,1019779384,1016590225,-1097525969)+W(7,1043875459,-1097974912,1054776673,-1096653037);WS(1055688959,-1109584743); +return clamp(mstd0 + 5.0 * vsum / wsum * mstd1, 0.0, 1.0); +} // nnedi3 +vec4 hook() { +vec4 ret = vec4(0.0); +vec4 samples[8]; +samples[0][0] = HOOKED_texOff(vec2(-1.0, -3.0)).x; +samples[0][1] = HOOKED_texOff(vec2(-1.0, -2.0)).x; +samples[0][2] = HOOKED_texOff(vec2(-1.0, -1.0)).x; +samples[0][3] = HOOKED_texOff(vec2(-1.0, 0.0)).x; +samples[1][0] = HOOKED_texOff(vec2(-1.0, 1.0)).x; +samples[1][1] = HOOKED_texOff(vec2(-1.0, 2.0)).x; +samples[1][2] = HOOKED_texOff(vec2(-1.0, 3.0)).x; +samples[1][3] = HOOKED_texOff(vec2(-1.0, 4.0)).x; +samples[2][0] = HOOKED_texOff(vec2(0.0, -3.0)).x; +samples[2][1] = HOOKED_texOff(vec2(0.0, -2.0)).x; +samples[2][2] = HOOKED_texOff(vec2(0.0, -1.0)).x; +samples[2][3] = HOOKED_texOff(vec2(0.0, 0.0)).x; +samples[3][0] = HOOKED_texOff(vec2(0.0, 1.0)).x; +samples[3][1] = HOOKED_texOff(vec2(0.0, 2.0)).x; +samples[3][2] = HOOKED_texOff(vec2(0.0, 3.0)).x; +samples[3][3] = HOOKED_texOff(vec2(0.0, 4.0)).x; +samples[4][0] = HOOKED_texOff(vec2(1.0, -3.0)).x; +samples[4][1] = HOOKED_texOff(vec2(1.0, -2.0)).x; +samples[4][2] = HOOKED_texOff(vec2(1.0, -1.0)).x; +samples[4][3] = HOOKED_texOff(vec2(1.0, 0.0)).x; +samples[5][0] = HOOKED_texOff(vec2(1.0, 1.0)).x; +samples[5][1] = HOOKED_texOff(vec2(1.0, 2.0)).x; +samples[5][2] = HOOKED_texOff(vec2(1.0, 3.0)).x; +samples[5][3] = HOOKED_texOff(vec2(1.0, 4.0)).x; +samples[6][0] = HOOKED_texOff(vec2(2.0, -3.0)).x; +samples[6][1] = HOOKED_texOff(vec2(2.0, -2.0)).x; +samples[6][2] = HOOKED_texOff(vec2(2.0, -1.0)).x; +samples[6][3] = HOOKED_texOff(vec2(2.0, 0.0)).x; +samples[7][0] = HOOKED_texOff(vec2(2.0, 1.0)).x; +samples[7][1] = HOOKED_texOff(vec2(2.0, 2.0)).x; +samples[7][2] = HOOKED_texOff(vec2(2.0, 3.0)).x; +samples[7][3] = HOOKED_texOff(vec2(2.0, 4.0)).x; +ret[0] = nnedi3(samples); +return ret; +} // hook +//!DESC NNEDI3 (combine_x, nns256, win8x4) +//!HOOK LUMA +//!BIND HOOKED +//!BIND nnedi3_int +//!WIDTH 2 HOOKED.w * +//!OFFSET -0.500000 0.000000 +//!WHEN HOOKED.w OUTPUT.w / 0.707106 < +vec4 hook() { + vec2 dir = fract(HOOKED_pos * HOOKED_size) - 0.5; + if (dir.x < 0.0) { + return HOOKED_texOff(-dir); + } else { + return nnedi3_int_texOff(-dir); + } +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/picom/picom.conf b/flakes/home-manager/guanranwang/common/dotfiles/config/picom/picom.conf new file mode 100644 index 0000000..84db1ef --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/picom/picom.conf @@ -0,0 +1,67 @@ +# Corner +corner-radius = 0; +round-borders = 0; + + +# Shadow +shadow = true; +shadow-radius = 15; +shadow-offset-x = -8; +shadow-offset-y = -8; +shadow-opacity = 0.2; +shadow-exclude = [ + "_GTK_FRAME_EXTENTS@:c", +]; + + +# Fade +fading = true; +fade-in-step = 0.04; +fade-out-step = 0.04; +fade-delta = 3; + + +# Dim inactive window +inactive-dim=0 +focus-exclude = [ + "class_g = 'Rofi'", +]; + +# Opacity +frame-opacity = 1; +active-opacity = 1; +inactive-opacity = 1; +dropdown_menu = { opacity = 1; } +popup_menu = { opacity = 1; } + +opacity-rule = [ + "100:_NET_WM_STATE@:32a = '_NET_WM_STATE_FULLSCREEN'", + "90:class_g = 'Polybar'", + "90:class_g = 'Rofi'", + "90:class_g = 'Alacritty'", +]; + + +# Blur +blur: { + method = "dual_kawase"; + strength = 9; +} +blur-background-exclude = [ + "_GTK_FRAME_EXTENTS@:c", + "class_g = 'Main'", +]; + +backend = "glx"; +vsync = true; +use-damage = false; +unredir-if-possible = true; + +wintypes: { + dropdown_menu = { opacity = 1; } + tooltip = { fade = true; shadow = true; opacity = 0.1; focus = true; } + popup_menu = { opacity = 1; } + + notification = { redir-ignore = true;} + notify = { redir-ignore = true;} +} diff --git a/flakes/home-manager/guanranwang/common/dotfiles/config/polybar/config.ini b/flakes/home-manager/guanranwang/common/dotfiles/config/polybar/config.ini new file mode 100644 index 0000000..e5fe6e2 --- /dev/null +++ b/flakes/home-manager/guanranwang/common/dotfiles/config/polybar/config.ini @@ -0,0 +1,161 @@ +[colors] +base = #1e1e2e +mantle = #181825 +crust = #cc11111b + +text = #cdd6f4 +subtext0 = #a6adc8 +subtext1 = #bac2de + +surface0 = #313244 +surface1 = #45475a +surface2 = #585b70 + +overlay0 = #6c7086 +overlay1 = #7f849c +overlay2 = #9399b2 + + +blue = #89b4fa +lavender = #b4befe +sapphire = #74c7ec +sky = #89dceb +teal = #94e2d5 +green = #a6e3a1 +yellow = #f9e2af +peach = #fab387 +maroon = #eba0ac +red = #f38ba8 +mauve = #cba6f7 +pink = #f5c2e7 +flamingo = #f2cdcd +rosewater = #f5e0dc + +transparent = #FF00000 + +[bar/main] +width = 100% +height = 30 +offset-y = 0 +top = true +fixed-center = true + +wm-restack = bspwm +override-redirect = false + +scroll-up = next +scroll-down = prev + +enable-ipc = true + +background = ${colors.crust} +foreground = ${colors.text} + +font-0 = "JetBrainsMono Nerd Font:style=Bold:size=10;2" +font-1 = "Source Han Sans CN:size=10;2" + +modules-left = bspwm +modules-center = title +modules-right = pulseaudio battery date + +tray-position = right + +cursor-click = pointer + +[settings] +screenchange-reload = true +format-padding = 1 + +[module/nowplaying] +type = custom/script +tail = true +interval = 1 +format = 󰕾