diff --git a/404.html b/404.html index 048130db..759cac6f 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -404: This page could not be found.Create Next App

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.Create Next App

404

This page could not be found.

\ No newline at end of file diff --git a/v2/out/_next/static/_88qPvTYfVTYhejRF2dQQ/_buildManifest.js b/_next/static/jw2nfhuNebHld9Zdcf9Rw/_buildManifest.js similarity index 100% rename from v2/out/_next/static/_88qPvTYfVTYhejRF2dQQ/_buildManifest.js rename to _next/static/jw2nfhuNebHld9Zdcf9Rw/_buildManifest.js diff --git a/v2/out/_next/static/_88qPvTYfVTYhejRF2dQQ/_ssgManifest.js b/_next/static/jw2nfhuNebHld9Zdcf9Rw/_ssgManifest.js similarity index 100% rename from v2/out/_next/static/_88qPvTYfVTYhejRF2dQQ/_ssgManifest.js rename to _next/static/jw2nfhuNebHld9Zdcf9Rw/_ssgManifest.js diff --git a/about.html b/about.html index 07093e19..ea0f7d59 100644 --- a/about.html +++ b/about.html @@ -1 +1 @@ -Sketches | Yi-Wen Lin

A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas.


Source code could be found here :


Built with my WebGL Tools :


\ No newline at end of file +Sketches | Yi-Wen Lin

A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas.


Source code could be found here :


Built with my WebGL Tools :


\ No newline at end of file diff --git a/about.txt b/about.txt index 64614e4f..869750e7 100644 --- a/about.txt +++ b/about.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/5c1e33a82820daa7.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","301:static/chunks/app/about/page-3e269e269dbe8b08.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","about","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"About_closeButton__2cb0K","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","div",null,{"className":"About_descContainer__Op5uD","children":[["$","p",null,{"className":"About-Desc","children":"A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas."}],["$","p",null,{"children":["$","br",null,{}]}],["$","p",null,{"className":"About_linkTitle__XgjCK","children":"Source code could be found here :"}],["$","a",null,{"href":"https://github.com/yiwenl/Sketches","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"https://github.com/yiwenl/Sketches"}]}],["$","p",null,{"children":["$","br",null,{}]}],["$","p",null,{"className":"About_linkTitle__XgjCK","children":"Built with my WebGL Tools : "}],["$","a",null,{"href":"https://github.com/yiwenl/Alfrid","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"https://github.com/yiwenl/Alfrid"}]}],["$","p",null,{"children":["$","br",null,{}]}],["$","a",null,{"href":"https://wensday.co/","target":"_blank","className":"About_link__oTWhj","children":["$","p",null,{"className":"About_link__oTWhj","children":"wensday.co"}]}],["$","a",null,{"href":"https://twitter.com/yiwen_lin","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"@yiwen_lin"}]}]]}]]}],null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/5c1e33a82820daa7.css","precedence":"next"}]]}],"segment":"about"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Yi-Wen Lin"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"http://yiwenl.github.io/Sketches/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/assets/img/coverSketchribbon.jpg b/assets/img/coverSketchribbon.jpg new file mode 100644 index 00000000..05fe88ed Binary files /dev/null and b/assets/img/coverSketchribbon.jpg differ diff --git a/experiments/flame/.eslintrc.json b/experiments/flame/.eslintrc.json new file mode 100644 index 00000000..d49abd79 --- /dev/null +++ b/experiments/flame/.eslintrc.json @@ -0,0 +1,58 @@ +{ + "extends": [ + "../../.eslintrc.json", + "react-app", + "next/core-web-vitals", + "plugin:@next/next/recommended", + "plugin:storybook/recommended", + "plugin:@tanstack/eslint-plugin-query/recommended" + ], + "plugins": ["jam3", "promise", "@tanstack/query"], + "settings": { + "react": { + "version": "detect" + }, + "import/resolver": { + "alias": { + "map": [["@", "./src"]] + } + } + }, + "rules": { + "jsx-a11y/anchor-has-content": "off", + "jsx-a11y/heading-has-content": "off", + "import/no-webpack-loader-syntax": "off", + "import/no-anonymous-default-export": "off", + "import/no-unresolved": ["error", { "ignore": ["svg-inline-loader", "@"] }], + "import/named": "error", + "import/default": "error", + "import/first": "error", + "simple-import-sort/exports": "warn", + "curly": [2, "multi-line", "consistent"], + "no-var": "error", + "prettier/prettier": "warn", + "promise/param-names": "error", + "promise/no-return-wrap": "error", + "jsx-a11y/href-no-hash": "off", + "jam3/no-sanitizer-with-danger": [ + 2, + { + "wrapperName": ["sanitizer"] + } + ], + "jam3/forbid-methods": 2, + "no-console": "off", + "jsx-a11y/anchor-is-valid": [ + "error", + { + "components": ["Link"], + "specialLink": ["hrefLeft", "hrefRight"], + "aspects": ["invalidHref", "preferButton"] + } + ], + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "error", + "@next/next/no-img-element": "off", + "@typescript-eslint/no-explicit-any": ["error"] + } +} diff --git a/experiments/flame/.gitignore b/experiments/flame/.gitignore new file mode 100644 index 00000000..ed456070 --- /dev/null +++ b/experiments/flame/.gitignore @@ -0,0 +1,3 @@ +node_modules/ +dist-zipped/ +yarn.lock \ No newline at end of file diff --git a/experiments/flame/README.md b/experiments/flame/README.md new file mode 100644 index 00000000..d0dd7523 --- /dev/null +++ b/experiments/flame/README.md @@ -0,0 +1,110 @@ +FXHASH Generative Token webpack boilerplate +================ + +A boilerplate to automate and ease the creation of Generative Tokens on fxhash. This project uses [webpack](https://webpack.js.org/) and [webpack-dev-server](https://github.com/webpack/webpack-dev-server) to improve the development and deployment experience. + +Before diving into the development of your token, we recommend reading the [Guide to mint a Generative Token](https://fxhash.xyz/articles/guide-mint-generative-token) to get some understanding of the process. + +If you are looking for a simpler boilerplate, you can use the [fxhash simple boilerplate](https://github.com/fxhash/fxhash-simple-boilerplate) instead. + + +# Scope of this project + +* provide a local environment in which you can iterate and use modern features from the javascript ecosystem +* automate the creation of a .zip file ready to be uploaded on fxhash + + +# How to use + +You will need to have [nodejs](https://nodejs.org/) installed. + +## Installation + +> First, make sure that your node version is >= 14 + +Clone the repository on your machine and move to the directory +```sh +$ git clone https://github.com/fxhash/fxhash-webpack-boilerplate.git your_folder && cd your_folder +``` + +Install the packages required for the local environment +```sh +$ npm i +``` + +## Start local environment + +```sh +$ npm start +``` + +This last command will start a local http server with [live reloading](https://webpack.js.org/configuration/dev-server/#devserverlivereload) enabled so that you can iterate faster on your projects. Open [http://localhost:8080](http://localhost:8080) to see your project in the browser. + +## Build + +```sh +$ npm run build +``` + +Will bundle your js dependencies into a single minified `bundle.js` file, move your files from the `public/` to the `dist/` folder, and link the `bundle.js` with the `index.html`. + +**Moreover, it will create a `dist-zipped/project.zip` file which can be directly imported on fxhash**. + +# Develop your token + +Once the environment is started, you can edit the `src/index.js` file to start building your artwork. The `index.html` file is located in the `public/` folder. + +You can import libraries using `npm` or by adding the library file in the `public/` folder and link those using relative paths in the `index.html`. + +Any file in the `public/` folder will be added to the final project. + +## fxhash snippet + +fxhash requires you to use a javascript code snippet so that the platform can inject some code when tokens will be generated from your Generative Token. The code snippet is already in the `index.html` file of this boilerplate, so you don't have to add it yourself. + +**During the development stages, the snippet will generate a random hash each time the page is refreshed**. This way, it helps you reproduce the conditions in which your token will be executed on fxhash. + +It creates 3 variables: +- `fxhash`: a random 64 characters hexadecimal string. This particular variable will be hardcoded with a static hash when someone mints a token from your GT +- `fxrand()`: a PRNG function that generates deterministic PRN between 0 and 1. **Simply use it instead of Math.random()**. + +*The index.js of this boilerplate quickly demonstrates how to use these*. + +## How do Generative Tokens work + +This is how Generative Tokens work on fxhash: +* you upload your project to the platform (see next section) +* you mint your project +* when a collector will mint its unique token from your Generative Token, a random hash will be hard-coded in the **fxhash code snippet** +* the token will now have its own `index.html` file, with a **static** hash, ensuring its immutability + +The [Guide to mint a Generative Token](https://fxhash.xyz/articles/guide-mint-generative-token) give in-depth details about this process. + + +# Publish your token + +Once you are happy with the results, you can run the following command: + +```sh +$ npm run build +``` + +This will create a `dist-zipped/project.zip` file. + +Go to [https://fxhash.xyz/sandbox/](https://fxhash.xyz/sandbox/) and upload the `project.zip` file in there to see if it works properly. + +If your token does not work properly, you can iterate easily by updating your files, running `$ npm run build` again, and upload the zip file again. + +Finally, you can mint your token using the same `project.zip`file. + + +# Rules to follow + +> Theses rules must be followed to ensure that your token will be future-proof, accepted by fxhash, and behave in the intended way + +* the zip file must be under 15 Mb +* any path to a resource must be relative (./path/to/file.ext) +* no external resources allowed, you must put all your resources in the `public/` folder (sub-folders are OK) +* no network calls allowed (but calls to get resources from within your `public/` folder) +* you must handle any viewport size (by implementing a response to the `resize` event of the `window`) +* you **cannot use random number generation without a seed** (the same input hash must always yield the same output). The `fxrand` function does a very good job in that regard. \ No newline at end of file diff --git a/experiments/flame/config/ZipperPlugin.js b/experiments/flame/config/ZipperPlugin.js new file mode 100644 index 00000000..aeaae09c --- /dev/null +++ b/experiments/flame/config/ZipperPlugin.js @@ -0,0 +1,39 @@ +const path = require("path") +const AdmZip = require("adm-zip") + + +const defaultOptions = { + outputPath: path.resolve(__dirname, "../dist-zipped/project.zip") +} + +/** + * The zipper plugin hooks to the end of compilation event, and it creates a ZIP file of + * all the files within the ./dist folder into the ./dist-zipped folder to create a file + * ready to be deployed on fxhash. + * https://webpack.js.org/contribute/writing-a-plugin/ + */ +class ZipperPlugin { + constructor(options = {}) { + this.options = { + ...defaultOptions, + ...options + } + } + + apply(compiler) { + // Specify the event hook to attach to + compiler.hooks.done.tapAsync( + "ZipperPlugin", + (stats, callback) => { + const outputPath = stats.compilation.outputOptions.path + const zip = new AdmZip() + zip.addLocalFolder(outputPath) + zip.toBuffer() + zip.writeZip(this.options.outputPath) + callback() + } + ) + } +} + +module.exports = ZipperPlugin \ No newline at end of file diff --git a/experiments/flame/config/webpack.config.dev.js b/experiments/flame/config/webpack.config.dev.js new file mode 100644 index 00000000..af52074b --- /dev/null +++ b/experiments/flame/config/webpack.config.dev.js @@ -0,0 +1,19 @@ +const config = require("./webpack.config"); + +module.exports = { + ...config, + mode: "development", + devServer: { + // disables the Hot Module Replacement feature because probably not ideal + // in the context of generative art + // https://webpack.js.org/concepts/hot-module-replacement/ + hot: false, + open: true, + client: { + overlay: { + errors: true, + warnings: false, + }, + }, + }, +}; diff --git a/experiments/flame/config/webpack.config.js b/experiments/flame/config/webpack.config.js new file mode 100644 index 00000000..3073564c --- /dev/null +++ b/experiments/flame/config/webpack.config.js @@ -0,0 +1,39 @@ +const path = require("path"); +const webpack = require("webpack"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); + +console.log("__dirname", __dirname); + +module.exports = { + entry: "./src/index.js", + output: { + path: path.resolve(__dirname, "../dist"), + filename: "bundle.js", + clean: true, + }, + module: { + rules: [ + { + test: /\.css$/i, + use: ["style-loader", "css-loader"], + }, + { + test: /\.(glsl|vert|frag)$/, + use: ["raw-loader", "glslify-loader"], + }, + ], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: "./public/index.html", + inject: "body", + publicPath: "./", + }), + ], + resolve: { + alias: { + alfrid: path.resolve(__dirname, "../src/alfrid"), + shaders: path.resolve(__dirname, "../src/shaders"), + }, + }, +}; diff --git a/experiments/flame/config/webpack.config.prod.js b/experiments/flame/config/webpack.config.prod.js new file mode 100644 index 00000000..3f98cc2a --- /dev/null +++ b/experiments/flame/config/webpack.config.prod.js @@ -0,0 +1,26 @@ +const CopyPlugin = require("copy-webpack-plugin") +const config = require("./webpack.config") +const ZipperPlugin = require("./ZipperPlugin") +const path = require("path") + +module.exports = { + ...config, + mode: "production", + // add the zipper plugin to the list of plugins + plugins: [ + ...config.plugins, + new CopyPlugin({ + patterns: [ + { + from: "public", + // prevents the index.html from being copied to the the public folder, as it's going to be + // generated by webpack + filter: async (filePath) => { + return path.basename(filePath) !== "index.html" + } + } + ] + }), + new ZipperPlugin() + ] +} \ No newline at end of file diff --git a/experiments/flame/dist/296.bundle.js b/experiments/flame/dist/296.bundle.js new file mode 100644 index 00000000..d734ed09 --- /dev/null +++ b/experiments/flame/dist/296.bundle.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[296],{376:(e,t,n)=>{function o(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}n.d(t,{XS:()=>ce});var i=Array.prototype.forEach,r=Array.prototype.slice,s={BREAK:{},extend:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))}),this),e},defaults:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))}),this),e},compose:function(){var e=r.call(arguments);return function(){for(var t=r.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(i&&e.forEach&&e.forEach===i)e.forEach(t,n);else if(e.length===e.length+0){var o,r=void 0;for(r=0,o=e.length;r1?s.toArray(arguments):arguments[0];return s.each(a,(function(t){if(t.litmus(e))return s.each(t.conversions,(function(t,n){if(l=t.read(e),!1===d&&!1!==l)return d=l,l.conversionName=n,l.conversion=t,s.BREAK})),s.BREAK})),d},u=void 0,h={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0;return 0===i?{h:NaN,s:0,v:0}:(s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:r/i,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(u=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}var L=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=o||{};return i.__min=r.min,i.__max=r.max,i.__step=r.step,s.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=T(i.__impliedStep),i}return g(t,e),f(t,[{key:"setValue",value:function(e){var n=e;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=T(e),this}}]),t}(x),N=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));i.__truncationSuspended=!1;var r=i,a=void 0;function l(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())}function d(e){var t=a-e.clientY;r.setValue(r.getValue()+t*r.__impliedStep),a=e.clientY}function c(){k.unbind(window,"mousemove",d),k.unbind(window,"mouseup",c),l()}return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),k.bind(i.__input,"change",(function(){var e=parseFloat(r.__input.value);s.isNaN(e)||r.setValue(e)})),k.bind(i.__input,"blur",(function(){l()})),k.bind(i.__input,"mousedown",(function(e){k.bind(window,"mousemove",d),k.bind(window,"mouseup",c),a=e.clientY})),k.bind(i.__input,"keydown",(function(e){13===e.keyCode&&(r.__truncationSuspended=!0,this.blur(),r.__truncationSuspended=!1,l())})),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e,n,o;return this.__input.value=this.__truncationSuspended?this.getValue():(e=this.getValue(),n=this.__precision,o=Math.pow(10,n),Math.round(e*o)/o),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L);function B(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}var H=function(e){function t(e,n,o,i,r){p(this,t);var s=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),a=s;function l(e){e.preventDefault();var t=a.__background.getBoundingClientRect();return a.setValue(B(e.clientX,t.left,t.right,a.__min,a.__max)),!1}function d(){k.unbind(window,"mousemove",l),k.unbind(window,"mouseup",d),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}function c(e){var t=e.touches[0].clientX,n=a.__background.getBoundingClientRect();a.setValue(B(t,n.left,n.right,a.__min,a.__max))}function u(){k.unbind(window,"touchmove",c),k.unbind(window,"touchend",u),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}return s.__background=document.createElement("div"),s.__foreground=document.createElement("div"),k.bind(s.__background,"mousedown",(function(e){document.activeElement.blur(),k.bind(window,"mousemove",l),k.bind(window,"mouseup",d),l(e)})),k.bind(s.__background,"touchstart",(function(e){1===e.touches.length&&(k.bind(window,"touchmove",c),k.bind(window,"touchend",u),c(e))})),k.addClass(s.__background,"slider"),k.addClass(s.__foreground,"slider-fg"),s.updateDisplay(),s.__background.appendChild(s.__foreground),s.domElement.appendChild(s.__background),s}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L),P=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,k.bind(i.__button,"click",(function(e){return e.preventDefault(),r.fire(),!1})),k.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return g(t,e),f(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(x),F=function(e){function t(e,n){p(this,t);var o=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));o.__color=new v(o.getValue()),o.__temp=new v(0);var i=o;o.domElement=document.createElement("div"),k.makeSelectable(o.domElement,!1),o.__selector=document.createElement("div"),o.__selector.className="selector",o.__saturation_field=document.createElement("div"),o.__saturation_field.className="saturation-field",o.__field_knob=document.createElement("div"),o.__field_knob.className="field-knob",o.__field_knob_border="2px solid ",o.__hue_knob=document.createElement("div"),o.__hue_knob.className="hue-knob",o.__hue_field=document.createElement("div"),o.__hue_field.className="hue-field",o.__input=document.createElement("input"),o.__input.type="text",o.__input_textShadow="0 1px 1px ",k.bind(o.__input,"keydown",(function(e){13===e.keyCode&&_.call(this)})),k.bind(o.__input,"blur",_),k.bind(o.__selector,"mousedown",(function(){k.addClass(this,"drag").bind(window,"mouseup",(function(){k.removeClass(i.__selector,"drag")}))})),k.bind(o.__selector,"touchstart",(function(){k.addClass(this,"drag").bind(window,"touchend",(function(){k.removeClass(i.__selector,"drag")}))}));var r,a=document.createElement("div");function l(e){m(e),k.bind(window,"mousemove",m),k.bind(window,"touchmove",m),k.bind(window,"mouseup",u),k.bind(window,"touchend",u)}function d(e){g(e),k.bind(window,"mousemove",g),k.bind(window,"touchmove",g),k.bind(window,"mouseup",h),k.bind(window,"touchend",h)}function u(){k.unbind(window,"mousemove",m),k.unbind(window,"touchmove",m),k.unbind(window,"mouseup",u),k.unbind(window,"touchend",u),f()}function h(){k.unbind(window,"mousemove",g),k.unbind(window,"touchmove",g),k.unbind(window,"mouseup",h),k.unbind(window,"touchend",h),f()}function _(){var e=c(this.value);!1!==e?(i.__color.__state=e,i.setValue(i.__color.toOriginal())):this.value=i.__color.toString()}function f(){i.__onFinishChange&&i.__onFinishChange.call(i,i.__color.toOriginal())}function m(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,r=n.clientY,s=(o-t.left)/(t.right-t.left),a=1-(r-t.top)/(t.bottom-t.top);return a>1?a=1:a<0&&(a=0),s>1?s=1:s<0&&(s=0),i.__color.v=a,i.__color.s=s,i.setValue(i.__color.toOriginal()),!1}function g(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),i.__color.h=360*n,i.setValue(i.__color.toOriginal()),!1}return s.extend(o.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),s.extend(o.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:o.__field_knob_border+(o.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),s.extend(o.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),s.extend(o.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),s.extend(a.style,{width:"100%",height:"100%",background:"none"}),j(a,"top","rgba(0,0,0,0)","#000"),s.extend(o.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),(r=o.__hue_field).style.background="",r.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",r.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",s.extend(o.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:o.__input_textShadow+"rgba(0,0,0,0.7)"}),k.bind(o.__saturation_field,"mousedown",l),k.bind(o.__saturation_field,"touchstart",l),k.bind(o.__field_knob,"mousedown",l),k.bind(o.__field_knob,"touchstart",l),k.bind(o.__hue_field,"mousedown",d),k.bind(o.__hue_field,"touchstart",d),o.__saturation_field.appendChild(a),o.__selector.appendChild(o.__field_knob),o.__selector.appendChild(o.__saturation_field),o.__selector.appendChild(o.__hue_field),o.__hue_field.appendChild(o.__hue_knob),o.domElement.appendChild(o.__input),o.domElement.appendChild(o.__selector),o.updateDisplay(),o}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=c(this.getValue());if(!1!==e){var t=!1;s.each(v.COMPONENTS,(function(n){if(!s.isUndefined(e[n])&&!s.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}}),this),t&&s.extend(this.__color.__state,e)}s.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;s.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,j(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),s.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(x),I=["-moz-","-o-","-webkit-","-ms-",""];function j(e,t,n,o){e.style.background="",s.each(I,(function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "}))}var D='
\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
',V=function(e,t){var n=e[t];return s.isArray(arguments[2])||s.isObject(arguments[2])?new O(e,t,arguments[2]):s.isNumber(n)?s.isNumber(arguments[2])&&s.isNumber(arguments[3])?s.isNumber(arguments[4])?new H(e,t,arguments[2],arguments[3],arguments[4]):new H(e,t,arguments[2],arguments[3]):s.isNumber(arguments[4])?new N(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new N(e,t,{min:arguments[2],max:arguments[3]}):s.isString(n)?new R(e,t):s.isFunction(n)?new P(e,t,""):s.isBoolean(n)?new S(e,t):null},z=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},U=function(){function e(){p(this,e),this.backgroundElement=document.createElement("div"),s.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),k.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;k.bind(this.backgroundElement,"click",(function(){t.hide()}))}return f(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",k.unbind(e.domElement,"webkitTransitionEnd",t),k.unbind(e.domElement,"transitionend",t),k.unbind(e.domElement,"oTransitionEnd",t)};k.bind(this.domElement,"webkitTransitionEnd",t),k.bind(this.domElement,"transitionend",t),k.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-k.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-k.getHeight(this.domElement)/2+"px"}}]),e}();!function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}(function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n"));var M="Default",G=function(){try{return!!window.localStorage}catch(e){return!1}}(),X=void 0,K=!0,Y=void 0,J=!1,W=[],Q=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),k.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=s.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=s.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),s.isUndefined(o.load)?o.load={preset:M}:o.preset&&(o.load.preset=o.preset),s.isUndefined(o.parent)&&o.hideable&&W.push(this),o.resizable=s.isUndefined(o.parent)&&o.resizable,o.autoPlace&&s.isUndefined(o.scrollable)&&(o.scrollable=!0);var i,r=G&&"true"===localStorage.getItem(ne(0,"isLocal")),a=void 0,l=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,function(e){for(var t=0;t1){var o=n.__li.nextElementSibling;return n.remove(),te(e,n.object,n.property,{before:o,factoryArgs:[s.toArray(arguments)]})}if(s.isArray(t)||s.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),te(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof H){var o=new N(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});s.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}})),k.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof N){var i=function(t){if(s.isNumber(n.__min)&&s.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=te(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=s.compose(i,n.min),n.max=s.compose(i,n.max)}else n instanceof S?(k.bind(t,"click",(function(){k.fakeEvent(n.__checkbox,"click")})),k.bind(n.__checkbox,"click",(function(e){e.stopPropagation()}))):n instanceof P?(k.bind(t,"click",(function(){k.fakeEvent(n.__button,"click")})),k.bind(t,"mouseover",(function(){k.addClass(n.__button,"hover")})),k.bind(t,"mouseout",(function(){k.removeClass(n.__button,"hover")}))):n instanceof F&&(k.addClass(t,"color"),n.updateDisplay=s.compose((function(e){return t.style.borderLeftColor=n.__color.toString(),e}),n.updateDisplay),n.updateDisplay());n.setValue=s.compose((function(t){return e.getRoot().__preset_select&&n.isModified()&&$(e.getRoot(),!0),t}),n.setValue)}(e,d,i),e.__controllers.push(i),i}function ne(e,t){return document.location.href+"."+t}function oe(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function ie(e,t){t.style.display=e.useLocalStorage?"block":"none"}function re(e){var t=e.__save_row=document.createElement("li");k.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),k.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",k.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",k.addClass(o,"button"),k.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",k.addClass(i,"button"),k.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",k.addClass(r,"button"),k.addClass(r,"revert");var a=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?s.each(e.load.remembered,(function(t,n){oe(e,n,n===e.preset)})):oe(e,M,!1),k.bind(a,"change",(function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=le(this)),e.folders={},s.each(this.__folders,(function(t,n){e.folders[n]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=le(this),$(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[M]=le(this,!0)),this.load.remembered[e]=le(this),this.preset=e,oe(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){s.each(this.__controllers,(function(t){this.getRoot().load.remembered?ee(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),s.each(this.__folders,(function(e){e.revert(e)})),e||$(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&de(this.__listening)},updateDisplay:function(){s.each(this.__controllers,(function(e){e.updateDisplay()})),s.each(this.__folders,(function(e){e.updateDisplay()}))}});var ce=Q},129:(e,t)=>{var n=Object.prototype.hasOwnProperty;function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var o,r,s=[];for(r in"string"!=typeof t&&(t="?"),e)if(n.call(e,r)){if((o=e[r])||null!=o&&!isNaN(o)||(o=""),r=i(r),o=i(o),null===r||null===o)continue;s.push(r+"="+o)}return s.length?t+s.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var r=o(t[1]),s=o(t[2]);null===r||null===s||r in i||(i[r]=s)}return i}},851:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,t,n)=>{var o=n(851),i=n(129),r=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,d=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function u(e){return(e||"").toString().replace(r,"")}var h=[["#","hash"],["?","query"],function(e,t){return f(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],_={hash:1,query:1};function p(e){var t,o=("undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{}).location||{},i={},r=typeof(e=e||o);if("blob:"===e.protocol)i=new g(unescape(e.pathname),{});else if("string"===r)for(t in i=new g(e,{}),_)delete i[t];else if("object"===r){for(t in e)t in _||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=a.test(e.href))}return i}function f(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,t){e=(e=u(e)).replace(s,""),t=t||{};var n,o=d.exec(e),i=o[1]?o[1].toLowerCase():"",r=!!o[2],a=!!o[3],l=0;return r?a?(n=o[2]+o[3]+o[4],l=o[2].length+o[3].length):(n=o[2]+o[4],l=o[2].length):a?(n=o[3]+o[4],l=o[3].length):n=o[4],"file:"===i?l>=2&&(n=n.slice(2)):f(i)?n=o[4]:i?r&&(n=n.slice(2)):l>=2&&f(t.protocol)&&(n=o[4]),{protocol:i,slashes:r||f(i),slashesCount:l,rest:n}}function g(e,t,n){if(e=(e=u(e)).replace(s,""),!(this instanceof g))return new g(e,t,n);var r,a,l,d,_,b,v=h.slice(),y=typeof t,w=this,x=0;for("object"!==y&&"string"!==y&&(n=t,t=null),n&&"function"!=typeof n&&(n=i.parse),r=!(a=m(e||"",t=p(t))).protocol&&!a.slashes,w.slashes=a.slashes||r&&t.slashes,w.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!f(w.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x{e.r(t),e.d(t,{default:()=>r});var o=e(247),a=e(564),i=e.n(a);let d=!0;const s=()=>{d&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(o.Z))};let c=-1;const r={enabled:d,reload:()=>{d&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(o.Z))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:s,delayReload:()=>{d&&(window.clearTimeout(c),c=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(o.Z)}),500))},init:(n=!0)=>{d=n;const t=i()(window.location.search,!0);let e={};t.query.config&&(e=JSON.parse(t.query.config)),Object.assign(o.Z,e),s()}}},608:(n,t,e)=>{e.r(t),e.d(t,{default:()=>g});var o=e(856),a=e(376),i=e(247),d=e(891),s=e(624);var c=e(552);e(943);let r,l,h;function w(){console.log("update"),h.drawImage(r,0,0)}function u(){const{width:n,height:t}=r,e=n/t,o=i.Z.thumbnailSize,a=Math.floor(o/e);document.body.appendChild(l),l.style.cssText=`\n position:absolute;\n bottom:0;\n right:0;\n width:${o}px;\n height:${a}px;\n z-index:9999;\n `}const g=n=>{const{refresh:t,reload:e}=d.default,g={save:()=>{((n,t="data",e=!0)=>{var o=(n=>{for(var t=[],e=0;e{t(),document.body.style.backgroundColor=(0,s.B8)(i.Z.background)};p.add(i.Z,"margin",0,500).step(1).onChange((function(){t(),(0,c.H)()})),p.addColor(i.Z,"background").onChange(m),p.add(i.Z,"showThumbnail").onFinishChange(e),i.Z.showThumbnail&&p.add(i.Z,"thumbnailSize",0,500).step(1).onFinishChange((()=>{t(),u()})),p.add(i.Z,"autoSave").onFinishChange(e),p.add(g,"save").name("Save Settings"),p.add(d.default,"reset").name("Reset Default"),p.open(),(0,c.H)(),m(),i.Z.showThumbnail&&function(n,t=2e3){r=n;const{width:e,height:o}=n;setInterval(w,t);const a=((n,t)=>{const e=document.createElement("canvas");e.width=n,e.height=t;const o=e.getContext("2d");return{canvas:e,ctx:o}})(e,o);l=a.canvas,h=a.ctx,u(),w()}(o.GL.canvas)}}}]); \ No newline at end of file diff --git a/experiments/flame/dist/756.bundle.js b/experiments/flame/dist/756.bundle.js new file mode 100644 index 00000000..3bf24728 --- /dev/null +++ b/experiments/flame/dist/756.bundle.js @@ -0,0 +1 @@ +(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[756],{466:function(e){var t;e.exports=((t=function(){function e(e){return a.appendChild(e.dom),e}function l(e){for(var t=0;to+1e3&&(f.update(1e3*r/(e-o),100),o=e,r=0,d)){var t=performance.memory;d.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){i=this.end()},domElement:a,setMode:l}}).Panel=function(e,t,l){var n=1/0,a=0,i=Math.round,o=i(window.devicePixelRatio||1),r=80*o,f=48*o,c=3*o,d=2*o,p=3*o,s=15*o,u=74*o,h=30*o,m=document.createElement("canvas");m.width=r,m.height=f,m.style.cssText="width:80px;height:48px";var w=m.getContext("2d");return w.font="bold "+9*o+"px Helvetica,Arial,sans-serif",w.textBaseline="top",w.fillStyle=l,w.fillRect(0,0,r,f),w.fillStyle=t,w.fillText(e,c,d),w.fillRect(p,s,u,h),w.fillStyle=l,w.globalAlpha=.9,w.fillRect(p,s,u,h),{dom:m,update:function(f,v){n=Math.min(n,f),a=Math.max(a,f),w.fillStyle=l,w.globalAlpha=1,w.fillRect(0,0,r,s),w.fillStyle=t,w.fillText(i(f)+" "+e+" ("+i(n)+"-"+i(a)+")",c,d),w.drawImage(m,p+o,s,u-o,h,p,s,u-o,h),w.fillRect(p+u-o,s,o,h),w.fillStyle=l,w.globalAlpha=.9,w.fillRect(p+u-o,s,o,i((1-f/v)*h))}}},t)},756:(e,t,l)=>{"use strict";l.r(t);var n=l(466),a=l.n(n),i=l(51);const o=new(a());document.body.appendChild(o.domElement),i.Z.addEF((()=>{o.update()}))}}]); \ No newline at end of file diff --git a/experiments/flame/dist/891.bundle.js b/experiments/flame/dist/891.bundle.js new file mode 100644 index 00000000..b164791f --- /dev/null +++ b/experiments/flame/dist/891.bundle.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[891],{129:(e,o)=>{var t=Object.prototype.hasOwnProperty;function n(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function r(e){try{return encodeURIComponent(e)}catch(e){return null}}o.stringify=function(e,o){o=o||"";var n,s,a=[];for(s in"string"!=typeof o&&(o="?"),e)if(t.call(e,s)){if((n=e[s])||null!=n&&!isNaN(n)||(n=""),s=r(s),n=r(n),null===s||null===n)continue;a.push(s+"="+n)}return a.length?o+a.join("&"):""},o.parse=function(e){for(var o,t=/([^=?#&]+)=?([^&]*)/g,r={};o=t.exec(e);){var s=n(o[1]),a=n(o[2]);null===s||null===a||s in r||(r[s]=a)}return r}},851:e=>{e.exports=function(e,o){if(o=o.split(":")[0],!(e=+e))return!1;switch(o){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,o,t)=>{var n=t(851),r=t(129),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,p=/^[a-zA-Z]:/;function h(e){return(e||"").toString().replace(s,"")}var u=[["#","hash"],["?","query"],function(e,o){return w(o.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(e){var o,n=("undefined"!=typeof window?window:void 0!==t.g?t.g:"undefined"!=typeof self?self:{}).location||{},r={},s=typeof(e=e||n);if("blob:"===e.protocol)r=new g(unescape(e.pathname),{});else if("string"===s)for(o in r=new g(e,{}),f)delete r[o];else if("object"===s){for(o in e)o in f||(r[o]=e[o]);void 0===r.slashes&&(r.slashes=i.test(e.href))}return r}function w(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,o){e=(e=h(e)).replace(a,""),o=o||{};var t,n=l.exec(e),r=n[1]?n[1].toLowerCase():"",s=!!n[2],i=!!n[3],c=0;return s?i?(t=n[2]+n[3]+n[4],c=n[2].length+n[3].length):(t=n[2]+n[4],c=n[2].length):i?(t=n[3]+n[4],c=n[3].length):t=n[4],"file:"===r?c>=2&&(t=t.slice(2)):w(r)?t=n[4]:r?s&&(t=t.slice(2)):c>=2&&w(o.protocol)&&(t=n[4]),{protocol:r,slashes:s||w(r),slashesCount:c,rest:t}}function g(e,o,t){if(e=(e=h(e)).replace(a,""),!(this instanceof g))return new g(e,o,t);var s,i,c,l,f,y,C=u.slice(),v=typeof o,b=this,x=0;for("object"!==v&&"string"!==v&&(t=o,o=null),t&&"function"!=typeof t&&(t=r.parse),s=!(i=m(e||"",o=d(o))).protocol&&!i.slashes,b.slashes=i.slashes||s&&o.slashes,b.protocol=i.protocol||o.protocol||"",e=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||p.test(e))||!i.slashes&&(i.protocol||i.slashesCount<2||!w(b.protocol)))&&(C[3]=[/(.*)/,"pathname"]);x{t.r(o),t.d(o,{default:()=>l});var n=t(247),r=t(564),s=t.n(r);let a=!0;const i=()=>{a&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z))};let c=-1;const l={enabled:a,reload:()=>{a&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:i,delayReload:()=>{a&&(window.clearTimeout(c),c=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z)}),500))},init:(e=!0)=>{a=e;const o=s()(window.location.search,!0);let t={};o.query.config&&(t=JSON.parse(o.query.config)),Object.assign(n.Z,t),i()}}}}]); \ No newline at end of file diff --git a/experiments/flame/dist/bundle.js b/experiments/flame/dist/bundle.js new file mode 100644 index 00000000..f710ad47 --- /dev/null +++ b/experiments/flame/dist/bundle.js @@ -0,0 +1,2 @@ +/*! For license information please see bundle.js.LICENSE.txt */ +(()=>{var t,e,r={427:t=>{"use strict";t.exports=function(){try{return!!new Blob}catch(t){return!1}}()},42:(t,e,r)=>{"use strict";var n=r(187).EventEmitter;function i(){n.call(this),this.setMaxListeners(20)}i.prototype=Object.create(n.prototype),i.prototype.constructor=i,i.prototype.off=function(t,e){return e?this.removeListener(t,e):t?this.removeAllListeners(t):this.removeAllListeners()},t.exports=i},622:(t,e,r)=>{"use strict";var n=r(42),i=r(388),a=0;t.exports=function t(e){var r,o={},s=[],u=[],h=0,c=0,E={},_=function(n){return Array.isArray(n)?(n.forEach(_),r):((a=n.assets&&Array.isArray(n.assets)?t(l(n,e)):i(l(n,e))).once("destroy",A),u.push(a),E[a.id]=a,r);var a},f=function(t){return arguments.length?o[t]?o[t]:E[t]:s},l=function(t,e){return"string"==typeof t&&(t={url:t}),void 0===t.isTouchLocked&&(t.isTouchLocked=e.isTouchLocked),void 0===t.blob&&(t.blob=e.blob),void 0===t.basePath&&(t.basePath=e.basePath),t.id=t.id||t.url||String(++a),t.type=t.type||(r=t.url)&&r.split("?")[0].split(".").pop().toLowerCase(),t.crossOrigin=t.crossOrigin||e.crossOrigin,t.webAudioContext=t.webAudioContext||e.webAudioContext,t.log=e.log,t;var r},T=function(t){var e=h+t;r.emit("progress",e/c)},d=function(t,e,n){Array.isArray(t)&&(t={id:e,file:t,type:n}),h++,r.emit("progress",h/c),o[t.id]=t.file,s.push(t),r.emit("childcomplete",t),M()},R=function(t){c--,r.listeners("error").length?r.emit("error",t):console.error(t),M()},A=function(t){E[t]=null,delete E[t],o[t]=null,delete o[t],s.some((function(e,r){if(e.id===t)return s.splice(r,1),!0}))},M=function(){h>=c&&r.emit("complete",s,o,e.id,"group")};return r=Object.create(n.prototype,{_events:{value:{}},id:{get:function(){return e.id}},add:{value:_},start:{value:function(){return c=u.length,u.forEach((function(t){t.on("progress",T).once("complete",d).once("error",R).start()})),u=[],r}},get:{value:f},find:{value:function(t){if(f(t))return f(t);var e=null;return Object.keys(E).some((function(r){return!!(e=E[r].find&&E[r].find(t))})),e}},getLoader:{value:function(t){return E[t]}},loaded:{get:function(){return h>=c}},file:{get:function(){return s}},destroy:{value:function(){for(;u.length;)u.pop().destroy();return r.off("error"),r.off("progress"),r.off("complete"),s=[],o={},e.webAudioContext=null,c=0,h=0,Object.keys(E).forEach((function(t){E[t].destroy()})),E={},r.emit("destroy",r.id),r}}}),e=l(e||{},{basePath:"",blob:!1,touchLocked:!1,crossOrigin:null,webAudioContext:null,log:!1}),Array.isArray(e.assets)&&_(e.assets),r}},719:(t,e,r)=>{"use strict";var n=r(622);n.stats=r(795),t.exports=n},388:(t,e,r)=>{"use strict";var n=r(42),i=r(427),a=r(795);t.exports=function(t){var e,r,o,s,u,h,c=t.id,E=t.basePath||"",_=t.url,f=t.type,l=t.crossOrigin,T=t.isTouchLocked,d=t.blob&&i,R=t.webAudioContext,A=t.log,M=function(t){t&&(h={id:c,file:t,type:f},e.emit("progress",1),e.emit("complete",h,c,f),C())},m=function(t,e){r=e||v,(o=new XMLHttpRequest).open("GET",E+_,!0),o.responseType=t,o.addEventListener("progress",p),o.addEventListener("load",r),o.addEventListener("error",P),o.send()},p=function(t){t.lengthComputable&&e.emit("progress",t.loaded/t.total)},v=function(){L()&&M(o.response)},L=function(){return o&&o.status<400?(a.update(o,s,_,A),!0):(P(o&&o.statusText),!1)},S=function(){o=new Image,l&&(o.crossOrigin="anonymous"),o.addEventListener("error",P,!1),o.addEventListener("load",N,!1),o.src=E+_},N=function(t){window.clearTimeout(u),t||!o.error&&o.readyState?M(o):P()},I=function(){m("blob",(function(){L()&&((o=new Image).addEventListener("error",P,!1),o.addEventListener("load",g,!1),o.src=window.URL.createObjectURL(o.response))}))},g=function(){window.URL.revokeObjectURL(o.src),M(o)},b=function(){m("arraybuffer",(function(){L()&&R.decodeAudioData(o.response,(function(t){o=null,M(t)}),(function(t){P(t)}))}))},O=function(t){o=document.createElement(t),T||(window.clearTimeout(u),u=window.setTimeout(N,2e3),o.addEventListener("canplaythrough",N,!1)),o.addEventListener("error",P,!1),o.preload="auto",o.src=E+_,o.load(),T&&M(o)},P=function(t){window.clearTimeout(u);var r=t;o&&o.tagName&&o.error?r="MediaError: "+["","ABORTED","NETWORK","DECODE","SRC_NOT_SUPPORTED"][o.error.code]+" "+o.src:o&&o.statusText?r=o.statusText:t&&t.message?r=t.message:t&&t.type&&(r=t.type),e.emit("error",'Error loading "'+E+_+'" '+r),x()},C=function(){e.off("error"),e.off("progress"),e.off("complete"),o&&(o.removeEventListener("progress",p),o.removeEventListener("load",r),o.removeEventListener("error",P),o.removeEventListener("load",N),o.removeEventListener("canplaythrough",N),o.removeEventListener("load",g))},x=function(){C(),o&&o.abort&&o.readyState<4&&o.abort(),o=null,R=null,h=null,window.clearTimeout(u),e.emit("destroy",c)};return e=Object.create(n.prototype,{_events:{value:{}},id:{value:t.id},start:{value:function(){switch(s=Date.now(),f){case"json":m("json",(function(){if(L()){var t=o.response;"string"==typeof t&&(t=JSON.parse(t)),M(t)}}));break;case"jpg":case"png":case"gif":case"webp":case"svg":d?I():S();break;case"mp3":case"ogg":case"opus":case"wav":case"m4a":R?b():O("audio");break;case"ogv":case"mp4":case"webm":case"hls":d?m("blob"):O("video");break;case"bin":case"binary":m("arraybuffer");break;case"txt":case"text":m("text");break;default:throw"AssetsLoader ERROR: Unknown type for file with URL: "+E+_+" ("+f+")"}}},loaded:{get:function(){return!!h}},file:{get:function(){return h}},destroy:{value:x}})}},795:t=>{"use strict";t.exports={mbs:0,secs:0,update:function(t,e,r,n){var i,a=t.getAllResponseHeaders();if(a){var o=a.match(/content-length: (\d+)/i);o&&o.length&&(i=o[1])}if(i){var s=(i=parseInt(i,10))/1024/1024,u=(Date.now()-e)/1e3;this.secs+=u,this.mbs+=s,n&&this.log(r,s,u)}else n&&console.warn.call(console,"Can't get Content-Length:",r)},log:function(t,e,r){if(t){var n="File loaded: "+t.substr(t.lastIndexOf("/")+1)+" size:"+e.toFixed(2)+"mb time:"+r.toFixed(2)+"s speed:"+(e/r).toFixed(2)+"mbps";console.log.call(console,n)}var i="Total loaded: "+this.mbs.toFixed(2)+"mb time:"+this.secs.toFixed(2)+"s speed:"+this.getMbps().toFixed(2)+"mbps";console.log.call(console,i)},getMbps:function(){return this.mbs/this.secs}}},187:t=>{"use strict";var e,r="object"==typeof Reflect?Reflect:null,n=r&&"function"==typeof r.apply?r.apply:function(t,e,r){return Function.prototype.apply.call(t,e,r)};e=r&&"function"==typeof r.ownKeys?r.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var i=Number.isNaN||function(t){return t!=t};function a(){a.init.call(this)}t.exports=a,t.exports.once=function(t,e){return new Promise((function(r,n){function i(r){t.removeListener(e,a),n(r)}function a(){"function"==typeof t.removeListener&&t.removeListener("error",i),r([].slice.call(arguments))}T(t,e,a,{once:!0}),"error"!==e&&function(t,e,r){"function"==typeof t.on&&T(t,"error",e,{once:!0})}(t,i)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var o=10;function s(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function u(t){return void 0===t._maxListeners?a.defaultMaxListeners:t._maxListeners}function h(t,e,r,n){var i,a,o,h;if(s(r),void 0===(a=t._events)?(a=t._events=Object.create(null),t._eventsCount=0):(void 0!==a.newListener&&(t.emit("newListener",e,r.listener?r.listener:r),a=t._events),o=a[e]),void 0===o)o=a[e]=r,++t._eventsCount;else if("function"==typeof o?o=a[e]=n?[r,o]:[o,r]:n?o.unshift(r):o.push(r),(i=u(t))>0&&o.length>i&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,h=c,console&&console.warn&&console.warn(h)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function E(t,e,r){var n={fired:!1,wrapFn:void 0,target:t,type:e,listener:r},i=c.bind(n);return i.listener=r,n.wrapFn=i,i}function _(t,e,r){var n=t._events;if(void 0===n)return[];var i=n[e];return void 0===i?[]:"function"==typeof i?r?[i.listener||i]:[i]:r?function(t){for(var e=new Array(t.length),r=0;r0&&(o=e[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var u=a[t];if(void 0===u)return!1;if("function"==typeof u)n(u,this,e);else{var h=u.length,c=l(u,h);for(r=0;r=0;a--)if(r[a]===e||r[a].listener===e){o=r[a].listener,i=a;break}if(i<0)return this;0===i?r.shift():function(t,e){for(;e+1=0;n--)this.removeListener(t,e[n]);return this},a.prototype.listeners=function(t){return _(this,t,!0)},a.prototype.rawListeners=function(t){return _(this,t,!1)},a.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):f.call(t,e)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},685:(t,e,r)=>{"use strict";r.r(e),r.d(e,{ARRAY_TYPE:()=>i,EPSILON:()=>n,RANDOM:()=>a,equals:()=>h,setMatrixArrayType:()=>o,toRadian:()=>u});var n=1e-6,i="undefined"!=typeof Float32Array?Float32Array:Array,a=Math.random;function o(t){i=t}var s=Math.PI/180;function u(t){return t*s}function h(t,e){return Math.abs(t-e)<=n*Math.max(1,Math.abs(t),Math.abs(e))}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)})},370:(t,e,r)=>{"use strict";r.r(e),r.d(e,{glMatrix:()=>h,mat2:()=>n,mat2d:()=>i,mat3:()=>st,mat4:()=>ut,quat:()=>o,quat2:()=>s,vec2:()=>u,vec3:()=>ht,vec4:()=>a});var n={};r.r(n),r.d(n,{LDU:()=>g,add:()=>b,adjoint:()=>A,clone:()=>E,copy:()=>_,create:()=>c,determinant:()=>M,equals:()=>C,exactEquals:()=>P,frob:()=>I,fromRotation:()=>L,fromScaling:()=>S,fromValues:()=>l,identity:()=>f,invert:()=>R,mul:()=>F,multiply:()=>m,multiplyScalar:()=>x,multiplyScalarAndAdd:()=>U,rotate:()=>p,scale:()=>v,set:()=>T,str:()=>N,sub:()=>y,subtract:()=>O,transpose:()=>d});var i={};r.r(i),r.d(i,{add:()=>J,clone:()=>w,copy:()=>B,create:()=>D,determinant:()=>Y,equals:()=>it,exactEquals:()=>nt,frob:()=>Q,fromRotation:()=>K,fromScaling:()=>Z,fromTranslation:()=>z,fromValues:()=>X,identity:()=>G,invert:()=>H,mul:()=>at,multiply:()=>W,multiplyScalar:()=>et,multiplyScalarAndAdd:()=>rt,rotate:()=>j,scale:()=>q,set:()=>V,str:()=>$,sub:()=>ot,subtract:()=>tt,translate:()=>k});var a={};r.r(a),r.d(a,{add:()=>Tt,ceil:()=>Mt,clone:()=>Et,copy:()=>ft,create:()=>ct,cross:()=>Ft,dist:()=>kt,distance:()=>It,div:()=>qt,divide:()=>At,dot:()=>Ut,equals:()=>Ht,exactEquals:()=>Vt,floor:()=>mt,forEach:()=>$t,fromValues:()=>_t,inverse:()=>Ct,len:()=>Zt,length:()=>bt,lerp:()=>yt,max:()=>vt,min:()=>pt,mul:()=>jt,multiply:()=>Rt,negate:()=>Pt,normalize:()=>xt,random:()=>Dt,round:()=>Lt,scale:()=>St,scaleAndAdd:()=>Nt,set:()=>lt,sqrDist:()=>Kt,sqrLen:()=>zt,squaredDistance:()=>gt,squaredLength:()=>Ot,str:()=>Xt,sub:()=>Wt,subtract:()=>dt,transformMat4:()=>wt,transformQuat:()=>Bt,zero:()=>Gt});var o={};r.r(o),r.d(o,{add:()=>be,calculateW:()=>se,clone:()=>Se,conjugate:()=>le,copy:()=>Ie,create:()=>Qt,dot:()=>Ce,equals:()=>Ge,exactEquals:()=>Be,exp:()=>ue,fromEuler:()=>de,fromMat3:()=>Te,fromValues:()=>Ne,getAngle:()=>re,getAxisAngle:()=>ee,identity:()=>Jt,invert:()=>fe,len:()=>Fe,length:()=>Ue,lerp:()=>xe,ln:()=>he,mul:()=>Oe,multiply:()=>ne,normalize:()=>we,pow:()=>ce,random:()=>_e,rotateX:()=>ie,rotateY:()=>ae,rotateZ:()=>oe,rotationTo:()=>Xe,scale:()=>Pe,set:()=>ge,setAxes:()=>He,setAxisAngle:()=>te,slerp:()=>Ee,sqlerp:()=>Ve,sqrLen:()=>De,squaredLength:()=>ye,str:()=>Re});var s={};r.r(s),r.d(s,{add:()=>_r,clone:()=>We,conjugate:()=>Mr,copy:()=>$e,create:()=>Ye,dot:()=>dr,equals:()=>gr,exactEquals:()=>Ir,fromMat4:()=>ze,fromRotation:()=>Ze,fromRotationTranslation:()=>ke,fromRotationTranslationValues:()=>qe,fromTranslation:()=>Ke,fromValues:()=>je,getDual:()=>er,getReal:()=>tr,getTranslation:()=>ir,identity:()=>Qe,invert:()=>Ar,len:()=>pr,length:()=>mr,lerp:()=>Rr,mul:()=>lr,multiply:()=>fr,normalize:()=>Sr,rotateAroundAxis:()=>Er,rotateByQuatAppend:()=>hr,rotateByQuatPrepend:()=>cr,rotateX:()=>or,rotateY:()=>sr,rotateZ:()=>ur,scale:()=>Tr,set:()=>Je,setDual:()=>nr,setReal:()=>rr,sqrLen:()=>Lr,squaredLength:()=>vr,str:()=>Nr,translate:()=>ar});var u={};r.r(u),r.d(u,{add:()=>Ur,angle:()=>sn,ceil:()=>wr,clone:()=>Or,copy:()=>Cr,create:()=>br,cross:()=>Qr,dist:()=>dn,distance:()=>Wr,div:()=>Tn,divide:()=>Dr,dot:()=>$r,equals:()=>En,exactEquals:()=>cn,floor:()=>Br,forEach:()=>Mn,fromValues:()=>Pr,inverse:()=>Zr,len:()=>_n,length:()=>qr,lerp:()=>Jr,max:()=>Xr,min:()=>Gr,mul:()=>ln,multiply:()=>yr,negate:()=>Kr,normalize:()=>zr,random:()=>tn,rotate:()=>on,round:()=>Vr,scale:()=>Hr,scaleAndAdd:()=>Yr,set:()=>xr,sqrDist:()=>Rn,sqrLen:()=>An,squaredDistance:()=>jr,squaredLength:()=>kr,str:()=>hn,sub:()=>fn,subtract:()=>Fr,transformMat2:()=>en,transformMat2d:()=>rn,transformMat3:()=>nn,transformMat4:()=>an,zero:()=>un});var h=r(685);function c(){var t=new h.ARRAY_TYPE(4);return h.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t}function E(t){var e=new h.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function _(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function f(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function l(t,e,r,n){var i=new h.ARRAY_TYPE(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i}function T(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function d(t,e){if(t===e){var r=e[1];t[1]=e[2],t[2]=r}else t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3];return t}function R(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*a-i*n;return o?(o=1/o,t[0]=a*o,t[1]=-n*o,t[2]=-i*o,t[3]=r*o,t):null}function A(t,e){var r=e[0];return t[0]=e[3],t[1]=-e[1],t[2]=-e[2],t[3]=r,t}function M(t){return t[0]*t[3]-t[2]*t[1]}function m(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],u=r[1],h=r[2],c=r[3];return t[0]=n*s+a*u,t[1]=i*s+o*u,t[2]=n*h+a*c,t[3]=i*h+o*c,t}function p(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u+a*s,t[1]=i*u+o*s,t[2]=n*-s+a*u,t[3]=i*-s+o*u,t}function v(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],u=r[1];return t[0]=n*s,t[1]=i*s,t[2]=a*u,t[3]=o*u,t}function L(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=-r,t[3]=n,t}function S(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t}function N(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}function I(t){return Math.hypot(t[0],t[1],t[2],t[3])}function g(t,e,r,n){return t[2]=n[2]/n[0],r[0]=n[0],r[1]=n[1],r[3]=n[3]-t[2]*r[1],[t,e,r]}function b(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function O(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function P(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function C(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],o=e[0],s=e[1],u=e[2],c=e[3];return Math.abs(r-o)<=h.EPSILON*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-s)<=h.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(i-u)<=h.EPSILON*Math.max(1,Math.abs(i),Math.abs(u))&&Math.abs(a-c)<=h.EPSILON*Math.max(1,Math.abs(a),Math.abs(c))}function x(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function U(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t}var F=m,y=O;function D(){var t=new h.ARRAY_TYPE(6);return h.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[4]=0,t[5]=0),t[0]=1,t[3]=1,t}function w(t){var e=new h.ARRAY_TYPE(6);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function B(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function G(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function X(t,e,r,n,i,a){var o=new h.ARRAY_TYPE(6);return o[0]=t,o[1]=e,o[2]=r,o[3]=n,o[4]=i,o[5]=a,o}function V(t,e,r,n,i,a,o){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=a,t[5]=o,t}function H(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=r*a-n*i;return u?(u=1/u,t[0]=a*u,t[1]=-n*u,t[2]=-i*u,t[3]=r*u,t[4]=(i*s-a*o)*u,t[5]=(n*o-r*s)*u,t):null}function Y(t){return t[0]*t[3]-t[1]*t[2]}function W(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=r[0],c=r[1],E=r[2],_=r[3],f=r[4],l=r[5];return t[0]=n*h+a*c,t[1]=i*h+o*c,t[2]=n*E+a*_,t[3]=i*E+o*_,t[4]=n*f+a*l+s,t[5]=i*f+o*l+u,t}function j(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=Math.sin(r),c=Math.cos(r);return t[0]=n*c+a*h,t[1]=i*c+o*h,t[2]=n*-h+a*c,t[3]=i*-h+o*c,t[4]=s,t[5]=u,t}function q(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=r[0],c=r[1];return t[0]=n*h,t[1]=i*h,t[2]=a*c,t[3]=o*c,t[4]=s,t[5]=u,t}function k(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=r[0],c=r[1];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=n*h+a*c+s,t[5]=i*h+o*c+u,t}function K(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=-r,t[3]=n,t[4]=0,t[5]=0,t}function Z(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t[4]=0,t[5]=0,t}function z(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=e[0],t[5]=e[1],t}function $(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"}function Q(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],1)}function J(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t}function tt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t}function et(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t}function rt(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t}function nt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function it(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],u=e[0],c=e[1],E=e[2],_=e[3],f=e[4],l=e[5];return Math.abs(r-u)<=h.EPSILON*Math.max(1,Math.abs(r),Math.abs(u))&&Math.abs(n-c)<=h.EPSILON*Math.max(1,Math.abs(n),Math.abs(c))&&Math.abs(i-E)<=h.EPSILON*Math.max(1,Math.abs(i),Math.abs(E))&&Math.abs(a-_)<=h.EPSILON*Math.max(1,Math.abs(a),Math.abs(_))&&Math.abs(o-f)<=h.EPSILON*Math.max(1,Math.abs(o),Math.abs(f))&&Math.abs(s-l)<=h.EPSILON*Math.max(1,Math.abs(s),Math.abs(l))}var at=W,ot=tt,st=r(600),ut=r(975),ht=r(160);function ct(){var t=new h.ARRAY_TYPE(4);return h.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function Et(t){var e=new h.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function _t(t,e,r,n){var i=new h.ARRAY_TYPE(4);return i[0]=t,i[1]=e,i[2]=r,i[3]=n,i}function ft(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function lt(t,e,r,n,i){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t}function Tt(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t}function dt(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t}function Rt(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t[3]=e[3]*r[3],t}function At(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t[3]=e[3]/r[3],t}function Mt(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function mt(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function pt(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t[3]=Math.min(e[3],r[3]),t}function vt(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t[3]=Math.max(e[3],r[3]),t}function Lt(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t[3]=Math.round(e[3]),t}function St(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t}function Nt(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t}function It(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return Math.hypot(r,n,i,a)}function gt(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2],a=e[3]-t[3];return r*r+n*n+i*i+a*a}function bt(t){var e=t[0],r=t[1],n=t[2],i=t[3];return Math.hypot(e,r,n,i)}function Ot(t){var e=t[0],r=t[1],n=t[2],i=t[3];return e*e+r*r+n*n+i*i}function Pt(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function Ct(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function xt(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a;return o>0&&(o=1/Math.sqrt(o)),t[0]=r*o,t[1]=n*o,t[2]=i*o,t[3]=a*o,t}function Ut(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function Ft(t,e,r,n){var i=r[0]*n[1]-r[1]*n[0],a=r[0]*n[2]-r[2]*n[0],o=r[0]*n[3]-r[3]*n[0],s=r[1]*n[2]-r[2]*n[1],u=r[1]*n[3]-r[3]*n[1],h=r[2]*n[3]-r[3]*n[2],c=e[0],E=e[1],_=e[2],f=e[3];return t[0]=E*h-_*u+f*s,t[1]=-c*h+_*o-f*a,t[2]=c*u-E*o+f*i,t[3]=-c*s+E*a-_*i,t}function yt(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t[3]=s+n*(r[3]-s),t}function Dt(t,e){var r,n,i,a,o,s;e=e||1;do{o=(r=2*h.RANDOM()-1)*r+(n=2*h.RANDOM()-1)*n}while(o>=1);do{s=(i=2*h.RANDOM()-1)*i+(a=2*h.RANDOM()-1)*a}while(s>=1);var u=Math.sqrt((1-o)/s);return t[0]=e*r,t[1]=e*n,t[2]=e*i*u,t[3]=e*a*u,t}function wt(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3];return t[0]=r[0]*n+r[4]*i+r[8]*a+r[12]*o,t[1]=r[1]*n+r[5]*i+r[9]*a+r[13]*o,t[2]=r[2]*n+r[6]*i+r[10]*a+r[14]*o,t[3]=r[3]*n+r[7]*i+r[11]*a+r[15]*o,t}function Bt(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],u=r[2],h=r[3],c=h*n+s*a-u*i,E=h*i+u*n-o*a,_=h*a+o*i-s*n,f=-o*n-s*i-u*a;return t[0]=c*h+f*-o+E*-u-_*-s,t[1]=E*h+f*-s+_*-o-c*-u,t[2]=_*h+f*-u+c*-s-E*-o,t[3]=e[3],t}function Gt(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function Xt(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}function Vt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function Ht(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],o=e[0],s=e[1],u=e[2],c=e[3];return Math.abs(r-o)<=h.EPSILON*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(n-s)<=h.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(i-u)<=h.EPSILON*Math.max(1,Math.abs(i),Math.abs(u))&&Math.abs(a-c)<=h.EPSILON*Math.max(1,Math.abs(a),Math.abs(c))}var Yt,Wt=dt,jt=Rt,qt=At,kt=It,Kt=gt,Zt=bt,zt=Ot,$t=(Yt=ct(),function(t,e,r,n,i,a){var o,s;for(e||(e=4),r||(r=0),s=n?Math.min(n*e+r,t.length):t.length,o=r;oh.EPSILON?(t[0]=e[0]/n,t[1]=e[1]/n,t[2]=e[2]/n):(t[0]=1,t[1]=0,t[2]=0),r}function re(t,e){var r=Ce(t,e);return Math.acos(2*r*r-1)}function ne(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],u=r[1],h=r[2],c=r[3];return t[0]=n*c+o*s+i*h-a*u,t[1]=i*c+o*u+a*s-n*h,t[2]=a*c+o*h+n*u-i*s,t[3]=o*c-n*s-i*u-a*h,t}function ie(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u+o*s,t[1]=i*u+a*s,t[2]=a*u-i*s,t[3]=o*u-n*s,t}function ae(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u-a*s,t[1]=i*u+o*s,t[2]=a*u+n*s,t[3]=o*u-i*s,t}function oe(t,e,r){r*=.5;var n=e[0],i=e[1],a=e[2],o=e[3],s=Math.sin(r),u=Math.cos(r);return t[0]=n*u+i*s,t[1]=i*u-n*s,t[2]=a*u+o*s,t[3]=o*u-a*s,t}function se(t,e){var r=e[0],n=e[1],i=e[2];return t[0]=r,t[1]=n,t[2]=i,t[3]=Math.sqrt(Math.abs(1-r*r-n*n-i*i)),t}function ue(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=Math.sqrt(r*r+n*n+i*i),s=Math.exp(a),u=o>0?s*Math.sin(o)/o:0;return t[0]=r*u,t[1]=n*u,t[2]=i*u,t[3]=s*Math.cos(o),t}function he(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=Math.sqrt(r*r+n*n+i*i),s=o>0?Math.atan2(o,a)/o:0;return t[0]=r*s,t[1]=n*s,t[2]=i*s,t[3]=.5*Math.log(r*r+n*n+i*i+a*a),t}function ce(t,e,r){return he(t,e),Pe(t,t,r),ue(t,t),t}function Ee(t,e,r,n){var i,a,o,s,u,c=e[0],E=e[1],_=e[2],f=e[3],l=r[0],T=r[1],d=r[2],R=r[3];return(a=c*l+E*T+_*d+f*R)<0&&(a=-a,l=-l,T=-T,d=-d,R=-R),1-a>h.EPSILON?(i=Math.acos(a),o=Math.sin(i),s=Math.sin((1-n)*i)/o,u=Math.sin(n*i)/o):(s=1-n,u=n),t[0]=s*c+u*l,t[1]=s*E+u*T,t[2]=s*_+u*d,t[3]=s*f+u*R,t}function _e(t){var e=h.RANDOM(),r=h.RANDOM(),n=h.RANDOM(),i=Math.sqrt(1-e),a=Math.sqrt(e);return t[0]=i*Math.sin(2*Math.PI*r),t[1]=i*Math.cos(2*Math.PI*r),t[2]=a*Math.sin(2*Math.PI*n),t[3]=a*Math.cos(2*Math.PI*n),t}function fe(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r*r+n*n+i*i+a*a,s=o?1/o:0;return t[0]=-r*s,t[1]=-n*s,t[2]=-i*s,t[3]=a*s,t}function le(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function Te(t,e){var r,n=e[0]+e[4]+e[8];if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(e[5]-e[7])*r,t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else{var i=0;e[4]>e[0]&&(i=1),e[8]>e[3*i+i]&&(i=2);var a=(i+1)%3,o=(i+2)%3;r=Math.sqrt(e[3*i+i]-e[3*a+a]-e[3*o+o]+1),t[i]=.5*r,r=.5/r,t[3]=(e[3*a+o]-e[3*o+a])*r,t[a]=(e[3*a+i]+e[3*i+a])*r,t[o]=(e[3*o+i]+e[3*i+o])*r}return t}function de(t,e,r,n){var i=.5*Math.PI/180;e*=i,r*=i,n*=i;var a=Math.sin(e),o=Math.cos(e),s=Math.sin(r),u=Math.cos(r),h=Math.sin(n),c=Math.cos(n);return t[0]=a*u*c-o*s*h,t[1]=o*s*c+a*u*h,t[2]=o*u*h-a*s*c,t[3]=o*u*c+a*s*h,t}function Re(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}var Ae,Me,me,pe,ve,Le,Se=Et,Ne=_t,Ie=ft,ge=lt,be=Tt,Oe=ne,Pe=St,Ce=Ut,xe=yt,Ue=bt,Fe=Ue,ye=Ot,De=ye,we=xt,Be=Vt,Ge=Ht,Xe=(Ae=ht.create(),Me=ht.fromValues(1,0,0),me=ht.fromValues(0,1,0),function(t,e,r){var n=ht.dot(e,r);return n<-.999999?(ht.cross(Ae,Me,e),ht.len(Ae)<1e-6&&ht.cross(Ae,me,e),ht.normalize(Ae,Ae),te(t,Ae,Math.PI),t):n>.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(ht.cross(Ae,e,r),t[0]=Ae[0],t[1]=Ae[1],t[2]=Ae[2],t[3]=1+n,we(t,t))}),Ve=(pe=Qt(),ve=Qt(),function(t,e,r,n,i,a){return Ee(pe,e,i,a),Ee(ve,r,n,a),Ee(t,pe,ve,2*a*(1-a)),t}),He=(Le=st.create(),function(t,e,r,n){return Le[0]=r[0],Le[3]=r[1],Le[6]=r[2],Le[1]=n[0],Le[4]=n[1],Le[7]=n[2],Le[2]=-e[0],Le[5]=-e[1],Le[8]=-e[2],we(t,Te(t,Le))});function Ye(){var t=new h.ARRAY_TYPE(8);return h.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t}function We(t){var e=new h.ARRAY_TYPE(8);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e}function je(t,e,r,n,i,a,o,s){var u=new h.ARRAY_TYPE(8);return u[0]=t,u[1]=e,u[2]=r,u[3]=n,u[4]=i,u[5]=a,u[6]=o,u[7]=s,u}function qe(t,e,r,n,i,a,o){var s=new h.ARRAY_TYPE(8);s[0]=t,s[1]=e,s[2]=r,s[3]=n;var u=.5*i,c=.5*a,E=.5*o;return s[4]=u*n+c*r-E*e,s[5]=c*n+E*t-u*r,s[6]=E*n+u*e-c*t,s[7]=-u*t-c*e-E*r,s}function ke(t,e,r){var n=.5*r[0],i=.5*r[1],a=.5*r[2],o=e[0],s=e[1],u=e[2],h=e[3];return t[0]=o,t[1]=s,t[2]=u,t[3]=h,t[4]=n*h+i*u-a*s,t[5]=i*h+a*o-n*u,t[6]=a*h+n*s-i*o,t[7]=-n*o-i*s-a*u,t}function Ke(t,e){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=.5*e[0],t[5]=.5*e[1],t[6]=.5*e[2],t[7]=0,t}function Ze(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function ze(t,e){var r=Qt();ut.getRotation(r,e);var n=new h.ARRAY_TYPE(3);return ut.getTranslation(n,e),ke(t,r,n),t}function $e(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function Qe(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function Je(t,e,r,n,i,a,o,s,u){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=u,t}var tr=Ie;function er(t,e){return t[0]=e[4],t[1]=e[5],t[2]=e[6],t[3]=e[7],t}var rr=Ie;function nr(t,e){return t[4]=e[0],t[5]=e[1],t[6]=e[2],t[7]=e[3],t}function ir(t,e){var r=e[4],n=e[5],i=e[6],a=e[7],o=-e[0],s=-e[1],u=-e[2],h=e[3];return t[0]=2*(r*h+a*o+n*u-i*s),t[1]=2*(n*h+a*s+i*o-r*u),t[2]=2*(i*h+a*u+r*s-n*o),t}function ar(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=.5*r[0],u=.5*r[1],h=.5*r[2],c=e[4],E=e[5],_=e[6],f=e[7];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=o*s+i*h-a*u+c,t[5]=o*u+a*s-n*h+E,t[6]=o*h+n*u-i*s+_,t[7]=-n*s-i*u-a*h+f,t}function or(t,e,r){var n=-e[0],i=-e[1],a=-e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=s*o+c*n+u*a-h*i,_=u*o+c*i+h*n-s*a,f=h*o+c*a+s*i-u*n,l=c*o-s*n-u*i-h*a;return ie(t,e,r),n=t[0],i=t[1],a=t[2],o=t[3],t[4]=E*o+l*n+_*a-f*i,t[5]=_*o+l*i+f*n-E*a,t[6]=f*o+l*a+E*i-_*n,t[7]=l*o-E*n-_*i-f*a,t}function sr(t,e,r){var n=-e[0],i=-e[1],a=-e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=s*o+c*n+u*a-h*i,_=u*o+c*i+h*n-s*a,f=h*o+c*a+s*i-u*n,l=c*o-s*n-u*i-h*a;return ae(t,e,r),n=t[0],i=t[1],a=t[2],o=t[3],t[4]=E*o+l*n+_*a-f*i,t[5]=_*o+l*i+f*n-E*a,t[6]=f*o+l*a+E*i-_*n,t[7]=l*o-E*n-_*i-f*a,t}function ur(t,e,r){var n=-e[0],i=-e[1],a=-e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=s*o+c*n+u*a-h*i,_=u*o+c*i+h*n-s*a,f=h*o+c*a+s*i-u*n,l=c*o-s*n-u*i-h*a;return oe(t,e,r),n=t[0],i=t[1],a=t[2],o=t[3],t[4]=E*o+l*n+_*a-f*i,t[5]=_*o+l*i+f*n-E*a,t[6]=f*o+l*a+E*i-_*n,t[7]=l*o-E*n-_*i-f*a,t}function hr(t,e,r){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],h=e[2],c=e[3];return t[0]=s*o+c*n+u*a-h*i,t[1]=u*o+c*i+h*n-s*a,t[2]=h*o+c*a+s*i-u*n,t[3]=c*o-s*n-u*i-h*a,s=e[4],u=e[5],h=e[6],c=e[7],t[4]=s*o+c*n+u*a-h*i,t[5]=u*o+c*i+h*n-s*a,t[6]=h*o+c*a+s*i-u*n,t[7]=c*o-s*n-u*i-h*a,t}function cr(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=r[0],u=r[1],h=r[2],c=r[3];return t[0]=n*c+o*s+i*h-a*u,t[1]=i*c+o*u+a*s-n*h,t[2]=a*c+o*h+n*u-i*s,t[3]=o*c-n*s-i*u-a*h,s=r[4],u=r[5],h=r[6],c=r[7],t[4]=n*c+o*s+i*h-a*u,t[5]=i*c+o*u+a*s-n*h,t[6]=a*c+o*h+n*u-i*s,t[7]=o*c-n*s-i*u-a*h,t}function Er(t,e,r,n){if(Math.abs(n)0){r=Math.sqrt(r);var n=e[0]/r,i=e[1]/r,a=e[2]/r,o=e[3]/r,s=e[4],u=e[5],h=e[6],c=e[7],E=n*s+i*u+a*h+o*c;t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=(s-n*E)/r,t[5]=(u-i*E)/r,t[6]=(h-a*E)/r,t[7]=(c-o*E)/r}return t}function Nr(t){return"quat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+")"}function Ir(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]}function gr(t,e){var r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],u=t[6],c=t[7],E=e[0],_=e[1],f=e[2],l=e[3],T=e[4],d=e[5],R=e[6],A=e[7];return Math.abs(r-E)<=h.EPSILON*Math.max(1,Math.abs(r),Math.abs(E))&&Math.abs(n-_)<=h.EPSILON*Math.max(1,Math.abs(n),Math.abs(_))&&Math.abs(i-f)<=h.EPSILON*Math.max(1,Math.abs(i),Math.abs(f))&&Math.abs(a-l)<=h.EPSILON*Math.max(1,Math.abs(a),Math.abs(l))&&Math.abs(o-T)<=h.EPSILON*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(s-d)<=h.EPSILON*Math.max(1,Math.abs(s),Math.abs(d))&&Math.abs(u-R)<=h.EPSILON*Math.max(1,Math.abs(u),Math.abs(R))&&Math.abs(c-A)<=h.EPSILON*Math.max(1,Math.abs(c),Math.abs(A))}function br(){var t=new h.ARRAY_TYPE(2);return h.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0),t}function Or(t){var e=new h.ARRAY_TYPE(2);return e[0]=t[0],e[1]=t[1],e}function Pr(t,e){var r=new h.ARRAY_TYPE(2);return r[0]=t,r[1]=e,r}function Cr(t,e){return t[0]=e[0],t[1]=e[1],t}function xr(t,e,r){return t[0]=e,t[1]=r,t}function Ur(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t}function Fr(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t}function yr(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t}function Dr(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t}function wr(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function Br(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function Gr(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t}function Xr(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t}function Vr(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t}function Hr(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t}function Yr(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t}function Wr(t,e){var r=e[0]-t[0],n=e[1]-t[1];return Math.hypot(r,n)}function jr(t,e){var r=e[0]-t[0],n=e[1]-t[1];return r*r+n*n}function qr(t){var e=t[0],r=t[1];return Math.hypot(e,r)}function kr(t){var e=t[0],r=t[1];return e*e+r*r}function Kr(t,e){return t[0]=-e[0],t[1]=-e[1],t}function Zr(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function zr(t,e){var r=e[0],n=e[1],i=r*r+n*n;return i>0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t}function $r(t,e){return t[0]*e[0]+t[1]*e[1]}function Qr(t,e,r){var n=e[0]*r[1]-e[1]*r[0];return t[0]=t[1]=0,t[2]=n,t}function Jr(t,e,r,n){var i=e[0],a=e[1];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t}function tn(t,e){e=e||1;var r=2*h.RANDOM()*Math.PI;return t[0]=Math.cos(r)*e,t[1]=Math.sin(r)*e,t}function en(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i,t[1]=r[1]*n+r[3]*i,t}function rn(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[2]*i+r[4],t[1]=r[1]*n+r[3]*i+r[5],t}function nn(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[3]*i+r[6],t[1]=r[1]*n+r[4]*i+r[7],t}function an(t,e,r){var n=e[0],i=e[1];return t[0]=r[0]*n+r[4]*i+r[12],t[1]=r[1]*n+r[5]*i+r[13],t}function on(t,e,r,n){var i=e[0]-r[0],a=e[1]-r[1],o=Math.sin(n),s=Math.cos(n);return t[0]=i*s-a*o+r[0],t[1]=i*o+a*s+r[1],t}function sn(t,e){var r=t[0],n=t[1],i=e[0],a=e[1],o=Math.sqrt(r*r+n*n)*Math.sqrt(i*i+a*a),s=o&&(r*i+n*a)/o;return Math.acos(Math.min(Math.max(s,-1),1))}function un(t){return t[0]=0,t[1]=0,t}function hn(t){return"vec2("+t[0]+", "+t[1]+")"}function cn(t,e){return t[0]===e[0]&&t[1]===e[1]}function En(t,e){var r=t[0],n=t[1],i=e[0],a=e[1];return Math.abs(r-i)<=h.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(n-a)<=h.EPSILON*Math.max(1,Math.abs(n),Math.abs(a))}var _n=qr,fn=Fr,ln=yr,Tn=Dr,dn=Wr,Rn=jr,An=kr,Mn=function(){var t=br();return function(e,r,n,i,a,o){var s,u;for(r||(r=2),n||(n=0),u=i?Math.min(i*r+n,e.length):e.length,s=n;s{"use strict";r.r(e),r.d(e,{add:()=>b,adjoint:()=>f,clone:()=>o,copy:()=>s,create:()=>i,determinant:()=>l,equals:()=>U,exactEquals:()=>x,frob:()=>g,fromMat2d:()=>v,fromMat4:()=>a,fromQuat:()=>L,fromRotation:()=>m,fromScaling:()=>p,fromTranslation:()=>M,fromValues:()=>u,identity:()=>c,invert:()=>_,mul:()=>F,multiply:()=>T,multiplyScalar:()=>P,multiplyScalarAndAdd:()=>C,normalFromMat4:()=>S,projection:()=>N,rotate:()=>R,scale:()=>A,set:()=>h,str:()=>I,sub:()=>y,subtract:()=>O,translate:()=>d,transpose:()=>E});var n=r(685);function i(){var t=new n.ARRAY_TYPE(9);return n.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function a(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function o(t){var e=new n.ARRAY_TYPE(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function s(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function u(t,e,r,i,a,o,s,u,h){var c=new n.ARRAY_TYPE(9);return c[0]=t,c[1]=e,c[2]=r,c[3]=i,c[4]=a,c[5]=o,c[6]=s,c[7]=u,c[8]=h,c}function h(t,e,r,n,i,a,o,s,u,h){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=u,t[8]=h,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function E(t,e){if(t===e){var r=e[1],n=e[2],i=e[5];t[1]=e[3],t[2]=e[6],t[3]=r,t[5]=e[7],t[6]=n,t[7]=i}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function _(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],h=e[7],c=e[8],E=c*o-s*h,_=-c*a+s*u,f=h*a-o*u,l=r*E+n*_+i*f;return l?(l=1/l,t[0]=E*l,t[1]=(-c*n+i*h)*l,t[2]=(s*n-i*o)*l,t[3]=_*l,t[4]=(c*r-i*u)*l,t[5]=(-s*r+i*a)*l,t[6]=f*l,t[7]=(-h*r+n*u)*l,t[8]=(o*r-n*a)*l,t):null}function f(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],h=e[7],c=e[8];return t[0]=o*c-s*h,t[1]=i*h-n*c,t[2]=n*s-i*o,t[3]=s*u-a*c,t[4]=r*c-i*u,t[5]=i*a-r*s,t[6]=a*h-o*u,t[7]=n*u-r*h,t[8]=r*o-n*a,t}function l(t){var e=t[0],r=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],h=t[8];return e*(h*a-o*u)+r*(-h*i+o*s)+n*(u*i-a*s)}function T(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=e[8],_=r[0],f=r[1],l=r[2],T=r[3],d=r[4],R=r[5],A=r[6],M=r[7],m=r[8];return t[0]=_*n+f*o+l*h,t[1]=_*i+f*s+l*c,t[2]=_*a+f*u+l*E,t[3]=T*n+d*o+R*h,t[4]=T*i+d*s+R*c,t[5]=T*a+d*u+R*E,t[6]=A*n+M*o+m*h,t[7]=A*i+M*s+m*c,t[8]=A*a+M*u+m*E,t}function d(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=e[8],_=r[0],f=r[1];return t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=_*n+f*o+h,t[7]=_*i+f*s+c,t[8]=_*a+f*u+E,t}function R(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=e[8],_=Math.sin(r),f=Math.cos(r);return t[0]=f*n+_*o,t[1]=f*i+_*s,t[2]=f*a+_*u,t[3]=f*o-_*n,t[4]=f*s-_*i,t[5]=f*u-_*a,t[6]=h,t[7]=c,t[8]=E,t}function A(t,e,r){var n=r[0],i=r[1];return t[0]=n*e[0],t[1]=n*e[1],t[2]=n*e[2],t[3]=i*e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function M(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t}function m(t,e){var r=Math.sin(e),n=Math.cos(e);return t[0]=n,t[1]=r,t[2]=0,t[3]=-r,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function p(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function v(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t}function L(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,u=i+i,h=r*o,c=n*o,E=n*s,_=i*o,f=i*s,l=i*u,T=a*o,d=a*s,R=a*u;return t[0]=1-E-l,t[3]=c-R,t[6]=_+d,t[1]=c+R,t[4]=1-h-l,t[7]=f-T,t[2]=_-d,t[5]=f+T,t[8]=1-h-E,t}function S(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],h=e[7],c=e[8],E=e[9],_=e[10],f=e[11],l=e[12],T=e[13],d=e[14],R=e[15],A=r*s-n*o,M=r*u-i*o,m=r*h-a*o,p=n*u-i*s,v=n*h-a*s,L=i*h-a*u,S=c*T-E*l,N=c*d-_*l,I=c*R-f*l,g=E*d-_*T,b=E*R-f*T,O=_*R-f*d,P=A*O-M*b+m*g+p*I-v*N+L*S;return P?(P=1/P,t[0]=(s*O-u*b+h*g)*P,t[1]=(u*I-o*O-h*N)*P,t[2]=(o*b-s*I+h*S)*P,t[3]=(i*b-n*O-a*g)*P,t[4]=(r*O-i*I+a*N)*P,t[5]=(n*I-r*b-a*S)*P,t[6]=(T*L-d*v+R*p)*P,t[7]=(d*m-l*L-R*M)*P,t[8]=(l*v-T*m+R*A)*P,t):null}function N(t,e,r){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/r,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}function I(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function g(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function b(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t}function O(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t}function P(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t}function C(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t}function x(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]}function U(t,e){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],u=t[5],h=t[6],c=t[7],E=t[8],_=e[0],f=e[1],l=e[2],T=e[3],d=e[4],R=e[5],A=e[6],M=e[7],m=e[8];return Math.abs(r-_)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(_))&&Math.abs(i-f)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(f))&&Math.abs(a-l)<=n.EPSILON*Math.max(1,Math.abs(a),Math.abs(l))&&Math.abs(o-T)<=n.EPSILON*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(s-d)<=n.EPSILON*Math.max(1,Math.abs(s),Math.abs(d))&&Math.abs(u-R)<=n.EPSILON*Math.max(1,Math.abs(u),Math.abs(R))&&Math.abs(h-A)<=n.EPSILON*Math.max(1,Math.abs(h),Math.abs(A))&&Math.abs(c-M)<=n.EPSILON*Math.max(1,Math.abs(c),Math.abs(M))&&Math.abs(E-m)<=n.EPSILON*Math.max(1,Math.abs(E),Math.abs(m))}var F=T,y=O},975:(t,e,r)=>{"use strict";r.r(e),r.d(e,{add:()=>k,adjoint:()=>_,clone:()=>a,copy:()=>o,create:()=>i,determinant:()=>f,equals:()=>Q,exactEquals:()=>$,frob:()=>q,fromQuat:()=>F,fromQuat2:()=>b,fromRotation:()=>L,fromRotationTranslation:()=>g,fromRotationTranslationScale:()=>x,fromRotationTranslationScaleOrigin:()=>U,fromScaling:()=>v,fromTranslation:()=>p,fromValues:()=>s,fromXRotation:()=>S,fromYRotation:()=>N,fromZRotation:()=>I,frustum:()=>y,getRotation:()=>C,getScaling:()=>P,getTranslation:()=>O,identity:()=>h,invert:()=>E,lookAt:()=>Y,mul:()=>J,multiply:()=>l,multiplyScalar:()=>Z,multiplyScalarAndAdd:()=>z,ortho:()=>V,orthoNO:()=>X,orthoZO:()=>H,perspective:()=>w,perspectiveFromFieldOfView:()=>G,perspectiveNO:()=>D,perspectiveZO:()=>B,rotate:()=>R,rotateX:()=>A,rotateY:()=>M,rotateZ:()=>m,scale:()=>d,set:()=>u,str:()=>j,sub:()=>tt,subtract:()=>K,targetTo:()=>W,translate:()=>T,transpose:()=>c});var n=r(685);function i(){var t=new n.ARRAY_TYPE(16);return n.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function a(t){var e=new n.ARRAY_TYPE(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function o(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function s(t,e,r,i,a,o,s,u,h,c,E,_,f,l,T,d){var R=new n.ARRAY_TYPE(16);return R[0]=t,R[1]=e,R[2]=r,R[3]=i,R[4]=a,R[5]=o,R[6]=s,R[7]=u,R[8]=h,R[9]=c,R[10]=E,R[11]=_,R[12]=f,R[13]=l,R[14]=T,R[15]=d,R}function u(t,e,r,n,i,a,o,s,u,h,c,E,_,f,l,T,d){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=u,t[8]=h,t[9]=c,t[10]=E,t[11]=_,t[12]=f,t[13]=l,t[14]=T,t[15]=d,t}function h(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function c(t,e){if(t===e){var r=e[1],n=e[2],i=e[3],a=e[6],o=e[7],s=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=r,t[6]=e[9],t[7]=e[13],t[8]=n,t[9]=a,t[11]=e[14],t[12]=i,t[13]=o,t[14]=s}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function E(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],h=e[7],c=e[8],E=e[9],_=e[10],f=e[11],l=e[12],T=e[13],d=e[14],R=e[15],A=r*s-n*o,M=r*u-i*o,m=r*h-a*o,p=n*u-i*s,v=n*h-a*s,L=i*h-a*u,S=c*T-E*l,N=c*d-_*l,I=c*R-f*l,g=E*d-_*T,b=E*R-f*T,O=_*R-f*d,P=A*O-M*b+m*g+p*I-v*N+L*S;return P?(P=1/P,t[0]=(s*O-u*b+h*g)*P,t[1]=(i*b-n*O-a*g)*P,t[2]=(T*L-d*v+R*p)*P,t[3]=(_*v-E*L-f*p)*P,t[4]=(u*I-o*O-h*N)*P,t[5]=(r*O-i*I+a*N)*P,t[6]=(d*m-l*L-R*M)*P,t[7]=(c*L-_*m+f*M)*P,t[8]=(o*b-s*I+h*S)*P,t[9]=(n*I-r*b-a*S)*P,t[10]=(l*v-T*m+R*A)*P,t[11]=(E*m-c*v-f*A)*P,t[12]=(s*N-o*g-u*S)*P,t[13]=(r*g-n*N+i*S)*P,t[14]=(T*M-l*p-d*A)*P,t[15]=(c*p-E*M+_*A)*P,t):null}function _(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=e[4],s=e[5],u=e[6],h=e[7],c=e[8],E=e[9],_=e[10],f=e[11],l=e[12],T=e[13],d=e[14],R=e[15];return t[0]=s*(_*R-f*d)-E*(u*R-h*d)+T*(u*f-h*_),t[1]=-(n*(_*R-f*d)-E*(i*R-a*d)+T*(i*f-a*_)),t[2]=n*(u*R-h*d)-s*(i*R-a*d)+T*(i*h-a*u),t[3]=-(n*(u*f-h*_)-s*(i*f-a*_)+E*(i*h-a*u)),t[4]=-(o*(_*R-f*d)-c*(u*R-h*d)+l*(u*f-h*_)),t[5]=r*(_*R-f*d)-c*(i*R-a*d)+l*(i*f-a*_),t[6]=-(r*(u*R-h*d)-o*(i*R-a*d)+l*(i*h-a*u)),t[7]=r*(u*f-h*_)-o*(i*f-a*_)+c*(i*h-a*u),t[8]=o*(E*R-f*T)-c*(s*R-h*T)+l*(s*f-h*E),t[9]=-(r*(E*R-f*T)-c*(n*R-a*T)+l*(n*f-a*E)),t[10]=r*(s*R-h*T)-o*(n*R-a*T)+l*(n*h-a*s),t[11]=-(r*(s*f-h*E)-o*(n*f-a*E)+c*(n*h-a*s)),t[12]=-(o*(E*d-_*T)-c*(s*d-u*T)+l*(s*_-u*E)),t[13]=r*(E*d-_*T)-c*(n*d-i*T)+l*(n*_-i*E),t[14]=-(r*(s*d-u*T)-o*(n*d-i*T)+l*(n*u-i*s)),t[15]=r*(s*_-u*E)-o*(n*_-i*E)+c*(n*u-i*s),t}function f(t){var e=t[0],r=t[1],n=t[2],i=t[3],a=t[4],o=t[5],s=t[6],u=t[7],h=t[8],c=t[9],E=t[10],_=t[11],f=t[12],l=t[13],T=t[14],d=t[15];return(e*o-r*a)*(E*d-_*T)-(e*s-n*a)*(c*d-_*l)+(e*u-i*a)*(c*T-E*l)+(r*s-n*o)*(h*d-_*f)-(r*u-i*o)*(h*T-E*f)+(n*u-i*s)*(h*l-c*f)}function l(t,e,r){var n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=e[8],_=e[9],f=e[10],l=e[11],T=e[12],d=e[13],R=e[14],A=e[15],M=r[0],m=r[1],p=r[2],v=r[3];return t[0]=M*n+m*s+p*E+v*T,t[1]=M*i+m*u+p*_+v*d,t[2]=M*a+m*h+p*f+v*R,t[3]=M*o+m*c+p*l+v*A,M=r[4],m=r[5],p=r[6],v=r[7],t[4]=M*n+m*s+p*E+v*T,t[5]=M*i+m*u+p*_+v*d,t[6]=M*a+m*h+p*f+v*R,t[7]=M*o+m*c+p*l+v*A,M=r[8],m=r[9],p=r[10],v=r[11],t[8]=M*n+m*s+p*E+v*T,t[9]=M*i+m*u+p*_+v*d,t[10]=M*a+m*h+p*f+v*R,t[11]=M*o+m*c+p*l+v*A,M=r[12],m=r[13],p=r[14],v=r[15],t[12]=M*n+m*s+p*E+v*T,t[13]=M*i+m*u+p*_+v*d,t[14]=M*a+m*h+p*f+v*R,t[15]=M*o+m*c+p*l+v*A,t}function T(t,e,r){var n,i,a,o,s,u,h,c,E,_,f,l,T=r[0],d=r[1],R=r[2];return e===t?(t[12]=e[0]*T+e[4]*d+e[8]*R+e[12],t[13]=e[1]*T+e[5]*d+e[9]*R+e[13],t[14]=e[2]*T+e[6]*d+e[10]*R+e[14],t[15]=e[3]*T+e[7]*d+e[11]*R+e[15]):(n=e[0],i=e[1],a=e[2],o=e[3],s=e[4],u=e[5],h=e[6],c=e[7],E=e[8],_=e[9],f=e[10],l=e[11],t[0]=n,t[1]=i,t[2]=a,t[3]=o,t[4]=s,t[5]=u,t[6]=h,t[7]=c,t[8]=E,t[9]=_,t[10]=f,t[11]=l,t[12]=n*T+s*d+E*R+e[12],t[13]=i*T+u*d+_*R+e[13],t[14]=a*T+h*d+f*R+e[14],t[15]=o*T+c*d+l*R+e[15]),t}function d(t,e,r){var n=r[0],i=r[1],a=r[2];return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*i,t[5]=e[5]*i,t[6]=e[6]*i,t[7]=e[7]*i,t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11]*a,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function R(t,e,r,i){var a,o,s,u,h,c,E,_,f,l,T,d,R,A,M,m,p,v,L,S,N,I,g,b,O=i[0],P=i[1],C=i[2],x=Math.hypot(O,P,C);return x0?(r[0]=2*(u*s+E*i+h*o-c*a)/_,r[1]=2*(h*s+E*a+c*i-u*o)/_,r[2]=2*(c*s+E*o+u*a-h*i)/_):(r[0]=2*(u*s+E*i+h*o-c*a),r[1]=2*(h*s+E*a+c*i-u*o),r[2]=2*(c*s+E*o+u*a-h*i)),g(t,e,r),t}function O(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function P(t,e){var r=e[0],n=e[1],i=e[2],a=e[4],o=e[5],s=e[6],u=e[8],h=e[9],c=e[10];return t[0]=Math.hypot(r,n,i),t[1]=Math.hypot(a,o,s),t[2]=Math.hypot(u,h,c),t}function C(t,e){var r=new n.ARRAY_TYPE(3);P(r,e);var i=1/r[0],a=1/r[1],o=1/r[2],s=e[0]*i,u=e[1]*a,h=e[2]*o,c=e[4]*i,E=e[5]*a,_=e[6]*o,f=e[8]*i,l=e[9]*a,T=e[10]*o,d=s+E+T,R=0;return d>0?(R=2*Math.sqrt(d+1),t[3]=.25*R,t[0]=(_-l)/R,t[1]=(f-h)/R,t[2]=(u-c)/R):s>E&&s>T?(R=2*Math.sqrt(1+s-E-T),t[3]=(_-l)/R,t[0]=.25*R,t[1]=(u+c)/R,t[2]=(f+h)/R):E>T?(R=2*Math.sqrt(1+E-s-T),t[3]=(f-h)/R,t[0]=(u+c)/R,t[1]=.25*R,t[2]=(_+l)/R):(R=2*Math.sqrt(1+T-s-E),t[3]=(u-c)/R,t[0]=(f+h)/R,t[1]=(_+l)/R,t[2]=.25*R),t}function x(t,e,r,n){var i=e[0],a=e[1],o=e[2],s=e[3],u=i+i,h=a+a,c=o+o,E=i*u,_=i*h,f=i*c,l=a*h,T=a*c,d=o*c,R=s*u,A=s*h,M=s*c,m=n[0],p=n[1],v=n[2];return t[0]=(1-(l+d))*m,t[1]=(_+M)*m,t[2]=(f-A)*m,t[3]=0,t[4]=(_-M)*p,t[5]=(1-(E+d))*p,t[6]=(T+R)*p,t[7]=0,t[8]=(f+A)*v,t[9]=(T-R)*v,t[10]=(1-(E+l))*v,t[11]=0,t[12]=r[0],t[13]=r[1],t[14]=r[2],t[15]=1,t}function U(t,e,r,n,i){var a=e[0],o=e[1],s=e[2],u=e[3],h=a+a,c=o+o,E=s+s,_=a*h,f=a*c,l=a*E,T=o*c,d=o*E,R=s*E,A=u*h,M=u*c,m=u*E,p=n[0],v=n[1],L=n[2],S=i[0],N=i[1],I=i[2],g=(1-(T+R))*p,b=(f+m)*p,O=(l-M)*p,P=(f-m)*v,C=(1-(_+R))*v,x=(d+A)*v,U=(l+M)*L,F=(d-A)*L,y=(1-(_+T))*L;return t[0]=g,t[1]=b,t[2]=O,t[3]=0,t[4]=P,t[5]=C,t[6]=x,t[7]=0,t[8]=U,t[9]=F,t[10]=y,t[11]=0,t[12]=r[0]+S-(g*S+P*N+U*I),t[13]=r[1]+N-(b*S+C*N+F*I),t[14]=r[2]+I-(O*S+x*N+y*I),t[15]=1,t}function F(t,e){var r=e[0],n=e[1],i=e[2],a=e[3],o=r+r,s=n+n,u=i+i,h=r*o,c=n*o,E=n*s,_=i*o,f=i*s,l=i*u,T=a*o,d=a*s,R=a*u;return t[0]=1-E-l,t[1]=c+R,t[2]=_-d,t[3]=0,t[4]=c-R,t[5]=1-h-l,t[6]=f+T,t[7]=0,t[8]=_+d,t[9]=f-T,t[10]=1-h-E,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function y(t,e,r,n,i,a,o){var s=1/(r-e),u=1/(i-n),h=1/(a-o);return t[0]=2*a*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*a*u,t[6]=0,t[7]=0,t[8]=(r+e)*s,t[9]=(i+n)*u,t[10]=(o+a)*h,t[11]=-1,t[12]=0,t[13]=0,t[14]=o*a*2*h,t[15]=0,t}function D(t,e,r,n,i){var a,o=1/Math.tan(e/2);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(a=1/(n-i),t[10]=(i+n)*a,t[14]=2*i*n*a):(t[10]=-1,t[14]=-2*n),t}var w=D;function B(t,e,r,n,i){var a,o=1/Math.tan(e/2);return t[0]=o/r,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=o,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=i&&i!==1/0?(a=1/(n-i),t[10]=i*a,t[14]=i*n*a):(t[10]=-1,t[14]=-n),t}function G(t,e,r,n){var i=Math.tan(e.upDegrees*Math.PI/180),a=Math.tan(e.downDegrees*Math.PI/180),o=Math.tan(e.leftDegrees*Math.PI/180),s=Math.tan(e.rightDegrees*Math.PI/180),u=2/(o+s),h=2/(i+a);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=h,t[6]=0,t[7]=0,t[8]=-(o-s)*u*.5,t[9]=(i-a)*h*.5,t[10]=n/(r-n),t[11]=-1,t[12]=0,t[13]=0,t[14]=n*r/(r-n),t[15]=0,t}function X(t,e,r,n,i,a,o){var s=1/(e-r),u=1/(n-i),h=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*h,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*u,t[14]=(o+a)*h,t[15]=1,t}var V=X;function H(t,e,r,n,i,a,o){var s=1/(e-r),u=1/(n-i),h=1/(a-o);return t[0]=-2*s,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=h,t[11]=0,t[12]=(e+r)*s,t[13]=(i+n)*u,t[14]=a*h,t[15]=1,t}function Y(t,e,r,i){var a,o,s,u,c,E,_,f,l,T,d=e[0],R=e[1],A=e[2],M=i[0],m=i[1],p=i[2],v=r[0],L=r[1],S=r[2];return Math.abs(d-v)0&&(c*=f=1/Math.sqrt(f),E*=f,_*=f);var l=u*_-h*E,T=h*c-s*_,d=s*E-u*c;return(f=l*l+T*T+d*d)>0&&(l*=f=1/Math.sqrt(f),T*=f,d*=f),t[0]=l,t[1]=T,t[2]=d,t[3]=0,t[4]=E*d-_*T,t[5]=_*l-c*d,t[6]=c*T-E*l,t[7]=0,t[8]=c,t[9]=E,t[10]=_,t[11]=0,t[12]=i,t[13]=a,t[14]=o,t[15]=1,t}function j(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function q(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function k(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t[3]=e[3]+r[3],t[4]=e[4]+r[4],t[5]=e[5]+r[5],t[6]=e[6]+r[6],t[7]=e[7]+r[7],t[8]=e[8]+r[8],t[9]=e[9]+r[9],t[10]=e[10]+r[10],t[11]=e[11]+r[11],t[12]=e[12]+r[12],t[13]=e[13]+r[13],t[14]=e[14]+r[14],t[15]=e[15]+r[15],t}function K(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t[3]=e[3]-r[3],t[4]=e[4]-r[4],t[5]=e[5]-r[5],t[6]=e[6]-r[6],t[7]=e[7]-r[7],t[8]=e[8]-r[8],t[9]=e[9]-r[9],t[10]=e[10]-r[10],t[11]=e[11]-r[11],t[12]=e[12]-r[12],t[13]=e[13]-r[13],t[14]=e[14]-r[14],t[15]=e[15]-r[15],t}function Z(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7]*r,t[8]=e[8]*r,t[9]=e[9]*r,t[10]=e[10]*r,t[11]=e[11]*r,t[12]=e[12]*r,t[13]=e[13]*r,t[14]=e[14]*r,t[15]=e[15]*r,t}function z(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t[3]=e[3]+r[3]*n,t[4]=e[4]+r[4]*n,t[5]=e[5]+r[5]*n,t[6]=e[6]+r[6]*n,t[7]=e[7]+r[7]*n,t[8]=e[8]+r[8]*n,t[9]=e[9]+r[9]*n,t[10]=e[10]+r[10]*n,t[11]=e[11]+r[11]*n,t[12]=e[12]+r[12]*n,t[13]=e[13]+r[13]*n,t[14]=e[14]+r[14]*n,t[15]=e[15]+r[15]*n,t}function $(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function Q(t,e){var r=t[0],i=t[1],a=t[2],o=t[3],s=t[4],u=t[5],h=t[6],c=t[7],E=t[8],_=t[9],f=t[10],l=t[11],T=t[12],d=t[13],R=t[14],A=t[15],M=e[0],m=e[1],p=e[2],v=e[3],L=e[4],S=e[5],N=e[6],I=e[7],g=e[8],b=e[9],O=e[10],P=e[11],C=e[12],x=e[13],U=e[14],F=e[15];return Math.abs(r-M)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(M))&&Math.abs(i-m)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(m))&&Math.abs(a-p)<=n.EPSILON*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(o-v)<=n.EPSILON*Math.max(1,Math.abs(o),Math.abs(v))&&Math.abs(s-L)<=n.EPSILON*Math.max(1,Math.abs(s),Math.abs(L))&&Math.abs(u-S)<=n.EPSILON*Math.max(1,Math.abs(u),Math.abs(S))&&Math.abs(h-N)<=n.EPSILON*Math.max(1,Math.abs(h),Math.abs(N))&&Math.abs(c-I)<=n.EPSILON*Math.max(1,Math.abs(c),Math.abs(I))&&Math.abs(E-g)<=n.EPSILON*Math.max(1,Math.abs(E),Math.abs(g))&&Math.abs(_-b)<=n.EPSILON*Math.max(1,Math.abs(_),Math.abs(b))&&Math.abs(f-O)<=n.EPSILON*Math.max(1,Math.abs(f),Math.abs(O))&&Math.abs(l-P)<=n.EPSILON*Math.max(1,Math.abs(l),Math.abs(P))&&Math.abs(T-C)<=n.EPSILON*Math.max(1,Math.abs(T),Math.abs(C))&&Math.abs(d-x)<=n.EPSILON*Math.max(1,Math.abs(d),Math.abs(x))&&Math.abs(R-U)<=n.EPSILON*Math.max(1,Math.abs(R),Math.abs(U))&&Math.abs(A-F)<=n.EPSILON*Math.max(1,Math.abs(A),Math.abs(F))}var J=l,tt=K},160:(t,e,r)=>{"use strict";r.r(e),r.d(e,{add:()=>c,angle:()=>G,bezier:()=>C,ceil:()=>l,clone:()=>a,copy:()=>u,create:()=>i,cross:()=>b,dist:()=>K,distance:()=>p,div:()=>k,divide:()=>f,dot:()=>g,equals:()=>Y,exactEquals:()=>H,floor:()=>T,forEach:()=>Q,fromValues:()=>s,hermite:()=>P,inverse:()=>N,len:()=>z,length:()=>o,lerp:()=>O,max:()=>R,min:()=>d,mul:()=>q,multiply:()=>_,negate:()=>S,normalize:()=>I,random:()=>x,rotateX:()=>D,rotateY:()=>w,rotateZ:()=>B,round:()=>A,scale:()=>M,scaleAndAdd:()=>m,set:()=>h,sqrDist:()=>Z,sqrLen:()=>$,squaredDistance:()=>v,squaredLength:()=>L,str:()=>V,sub:()=>j,subtract:()=>E,transformMat3:()=>F,transformMat4:()=>U,transformQuat:()=>y,zero:()=>X});var n=r(685);function i(){var t=new n.ARRAY_TYPE(3);return n.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function a(t){var e=new n.ARRAY_TYPE(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function o(t){var e=t[0],r=t[1],n=t[2];return Math.hypot(e,r,n)}function s(t,e,r){var i=new n.ARRAY_TYPE(3);return i[0]=t,i[1]=e,i[2]=r,i}function u(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function h(t,e,r,n){return t[0]=e,t[1]=r,t[2]=n,t}function c(t,e,r){return t[0]=e[0]+r[0],t[1]=e[1]+r[1],t[2]=e[2]+r[2],t}function E(t,e,r){return t[0]=e[0]-r[0],t[1]=e[1]-r[1],t[2]=e[2]-r[2],t}function _(t,e,r){return t[0]=e[0]*r[0],t[1]=e[1]*r[1],t[2]=e[2]*r[2],t}function f(t,e,r){return t[0]=e[0]/r[0],t[1]=e[1]/r[1],t[2]=e[2]/r[2],t}function l(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function T(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function d(t,e,r){return t[0]=Math.min(e[0],r[0]),t[1]=Math.min(e[1],r[1]),t[2]=Math.min(e[2],r[2]),t}function R(t,e,r){return t[0]=Math.max(e[0],r[0]),t[1]=Math.max(e[1],r[1]),t[2]=Math.max(e[2],r[2]),t}function A(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function M(t,e,r){return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t}function m(t,e,r,n){return t[0]=e[0]+r[0]*n,t[1]=e[1]+r[1]*n,t[2]=e[2]+r[2]*n,t}function p(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return Math.hypot(r,n,i)}function v(t,e){var r=e[0]-t[0],n=e[1]-t[1],i=e[2]-t[2];return r*r+n*n+i*i}function L(t){var e=t[0],r=t[1],n=t[2];return e*e+r*r+n*n}function S(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function N(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function I(t,e){var r=e[0],n=e[1],i=e[2],a=r*r+n*n+i*i;return a>0&&(a=1/Math.sqrt(a)),t[0]=e[0]*a,t[1]=e[1]*a,t[2]=e[2]*a,t}function g(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function b(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[0],s=r[1],u=r[2];return t[0]=i*u-a*s,t[1]=a*o-n*u,t[2]=n*s-i*o,t}function O(t,e,r,n){var i=e[0],a=e[1],o=e[2];return t[0]=i+n*(r[0]-i),t[1]=a+n*(r[1]-a),t[2]=o+n*(r[2]-o),t}function P(t,e,r,n,i,a){var o=a*a,s=o*(2*a-3)+1,u=o*(a-2)+a,h=o*(a-1),c=o*(3-2*a);return t[0]=e[0]*s+r[0]*u+n[0]*h+i[0]*c,t[1]=e[1]*s+r[1]*u+n[1]*h+i[1]*c,t[2]=e[2]*s+r[2]*u+n[2]*h+i[2]*c,t}function C(t,e,r,n,i,a){var o=1-a,s=o*o,u=a*a,h=s*o,c=3*a*s,E=3*u*o,_=u*a;return t[0]=e[0]*h+r[0]*c+n[0]*E+i[0]*_,t[1]=e[1]*h+r[1]*c+n[1]*E+i[1]*_,t[2]=e[2]*h+r[2]*c+n[2]*E+i[2]*_,t}function x(t,e){e=e||1;var r=2*n.RANDOM()*Math.PI,i=2*n.RANDOM()-1,a=Math.sqrt(1-i*i)*e;return t[0]=Math.cos(r)*a,t[1]=Math.sin(r)*a,t[2]=i*e,t}function U(t,e,r){var n=e[0],i=e[1],a=e[2],o=r[3]*n+r[7]*i+r[11]*a+r[15];return o=o||1,t[0]=(r[0]*n+r[4]*i+r[8]*a+r[12])/o,t[1]=(r[1]*n+r[5]*i+r[9]*a+r[13])/o,t[2]=(r[2]*n+r[6]*i+r[10]*a+r[14])/o,t}function F(t,e,r){var n=e[0],i=e[1],a=e[2];return t[0]=n*r[0]+i*r[3]+a*r[6],t[1]=n*r[1]+i*r[4]+a*r[7],t[2]=n*r[2]+i*r[5]+a*r[8],t}function y(t,e,r){var n=r[0],i=r[1],a=r[2],o=r[3],s=e[0],u=e[1],h=e[2],c=i*h-a*u,E=a*s-n*h,_=n*u-i*s,f=i*_-a*E,l=a*c-n*_,T=n*E-i*c,d=2*o;return c*=d,E*=d,_*=d,f*=2,l*=2,T*=2,t[0]=s+c+f,t[1]=u+E+l,t[2]=h+_+T,t}function D(t,e,r,n){var i=[],a=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],a[0]=i[0],a[1]=i[1]*Math.cos(n)-i[2]*Math.sin(n),a[2]=i[1]*Math.sin(n)+i[2]*Math.cos(n),t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function w(t,e,r,n){var i=[],a=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],a[0]=i[2]*Math.sin(n)+i[0]*Math.cos(n),a[1]=i[1],a[2]=i[2]*Math.cos(n)-i[0]*Math.sin(n),t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function B(t,e,r,n){var i=[],a=[];return i[0]=e[0]-r[0],i[1]=e[1]-r[1],i[2]=e[2]-r[2],a[0]=i[0]*Math.cos(n)-i[1]*Math.sin(n),a[1]=i[0]*Math.sin(n)+i[1]*Math.cos(n),a[2]=i[2],t[0]=a[0]+r[0],t[1]=a[1]+r[1],t[2]=a[2]+r[2],t}function G(t,e){var r=t[0],n=t[1],i=t[2],a=e[0],o=e[1],s=e[2],u=Math.sqrt(r*r+n*n+i*i)*Math.sqrt(a*a+o*o+s*s),h=u&&g(t,e)/u;return Math.acos(Math.min(Math.max(h,-1),1))}function X(t){return t[0]=0,t[1]=0,t[2]=0,t}function V(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"}function H(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function Y(t,e){var r=t[0],i=t[1],a=t[2],o=e[0],s=e[1],u=e[2];return Math.abs(r-o)<=n.EPSILON*Math.max(1,Math.abs(r),Math.abs(o))&&Math.abs(i-s)<=n.EPSILON*Math.max(1,Math.abs(i),Math.abs(s))&&Math.abs(a-u)<=n.EPSILON*Math.max(1,Math.abs(a),Math.abs(u))}var W,j=E,q=_,k=f,K=p,Z=v,z=o,$=L,Q=(W=i(),function(t,e,r,n,i,a){var o,s;for(e||(e=3),r||(r=0),s=n?Math.min(n*e+r,t.length):t.length,o=r;o{"use strict";var e=Object.getOwnPropertySymbols,r=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function i(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach((function(t){n[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,a){for(var o,s,u=i(t),h=1;h{"use strict";r.d(e,{Z:()=>M});let n=window,i=60,a=performance.now(),o=0,s=0,u=a;const h=[],c=[],E=[],_=[];let f=[],l=[],T=-1,d=0;function R(){!function(){let t,e=0,r=1e3/i,n=0;for(e=0;e0;)t=f.pop(),t.func(t.args);let T=performance.now();for(s=(T-a)/1e3,o=T-u,e=0;et.delay&&(t.func(t.args),c.splice(e,1));for(T=performance.now();E.length>0;){if(t=E.shift(),n=performance.now(),!(n-T0;)t=_.shift(),n=performance.now(),n-T-1&&window.cancelAnimationFrame(T),n=t,R()},setFrameRate:function(t){i=t},getElapsedTime:function(){return s},getDeltaTime:function(){return o}};const M=A},247:(t,e,r)=>{"use strict";r.d(e,{Z:()=>n});const n={autoSave:!1,showThumbnail:!1,margin:100,thumbnailSize:256,background:[22,22,22]}},856:(t,e,r)=>{"use strict";r.d(e,{nu:()=>C,QA:()=>x,Cg:()=>U,GL:()=>M,fy:()=>O,xs:()=>W,F7:()=>j});var n=r(187),i=r.n(n),a=r(418),o=r.n(a),s=r(685);function u(t,e){const r=t.getExtension(e);if(!r)return!1;const n=e.split("_")[0],i=new RegExp(`${n}$`);for(const e in r)if("function"==typeof r[e]){const n=e.replace(i,"");e.substring&&(t[n]=r[e].bind(r))}return!0}const h=["EXT_shader_texture_lod","EXT_sRGB","EXT_frag_depth","OES_texture_float","OES_texture_half_float","OES_texture_float_linear","OES_texture_half_float_linear","OES_standard_derivatives","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_color_buffer_half_float","OES_vertex_array_object","WEBGL_depth_texture","ANGLE_instanced_arrays","WEBGL_color_buffer_float","WEBGL_draw_buffers","EXT_color_buffer_float"],c=(()=>{let t=!1;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(t=!0),t})(),E=(t,e)=>{if("number"==typeof t)return s.equals(t,e);if(t.length!==e.length)return!1;let r=!0;return t.forEach(((t,n)=>{r=s.equals(t,e[n])&&r})),r},_={ACTIVE_ATTRIBUTES:35721,ACTIVE_ATTRIBUTE_MAX_LENGTH:35722,ACTIVE_TEXTURE:34016,ACTIVE_UNIFORMS:35718,ACTIVE_UNIFORM_MAX_LENGTH:35719,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,ALPHA:6406,ALPHA_BITS:3413,ALWAYS:519,ARRAY_BUFFER:34962,ARRAY_BUFFER_BINDING:34964,ATTACHED_SHADERS:35717,BACK:1029,BLEND:3042,BLEND_COLOR:32773,BLEND_DST_ALPHA:32970,BLEND_DST_RGB:32968,BLEND_EQUATION:32777,BLEND_EQUATION_ALPHA:34877,BLEND_EQUATION_RGB:32777,BLEND_SRC_ALPHA:32971,BLEND_SRC_RGB:32969,BLUE_BITS:3412,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,BROWSER_DEFAULT_WEBGL:37444,BUFFER_SIZE:34660,BUFFER_USAGE:34661,BYTE:5120,CCW:2305,CLAMP_TO_EDGE:33071,COLOR_ATTACHMENT0:36064,COLOR_BUFFER_BIT:16384,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,COMPILE_STATUS:35713,COMPRESSED_TEXTURE_FORMATS:34467,CONSTANT_ALPHA:32771,CONSTANT_COLOR:32769,CONTEXT_LOST_WEBGL:37442,CULL_FACE:2884,CULL_FACE_MODE:2885,CURRENT_PROGRAM:35725,CURRENT_VERTEX_ATTRIB:34342,CW:2304,DECR:7683,DECR_WRAP:34056,DELETE_STATUS:35712,DEPTH_ATTACHMENT:36096,DEPTH_BITS:3414,DEPTH_BUFFER_BIT:256,DEPTH_CLEAR_VALUE:2931,DEPTH_COMPONENT:6402,RED:6403,DEPTH_COMPONENT16:33189,DEPTH_FUNC:2932,DEPTH_RANGE:2928,DEPTH_STENCIL:34041,DEPTH_STENCIL_ATTACHMENT:33306,DEPTH_TEST:2929,DEPTH_WRITEMASK:2930,DITHER:3024,DONT_CARE:4352,DST_ALPHA:772,DST_COLOR:774,DYNAMIC_DRAW:35048,ELEMENT_ARRAY_BUFFER:34963,ELEMENT_ARRAY_BUFFER_BINDING:34965,EQUAL:514,FASTEST:4353,FLOAT:5126,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,FRAGMENT_SHADER:35632,FRAMEBUFFER:36160,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_BINDING:36006,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_UNSUPPORTED:36061,FRONT:1028,FRONT_AND_BACK:1032,FRONT_FACE:2886,FUNC_ADD:32774,FUNC_REVERSE_SUBTRACT:32779,FUNC_SUBTRACT:32778,GENERATE_MIPMAP_HINT:33170,GEQUAL:518,GREATER:516,GREEN_BITS:3411,HALF_FLOAT:36193,HIGH_FLOAT:36338,HIGH_INT:36341,INCR:7682,INCR_WRAP:34055,INFO_LOG_LENGTH:35716,INT:5124,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,INVALID_ENUM:1280,INVALID_FRAMEBUFFER_OPERATION:1286,INVALID_OPERATION:1282,INVALID_VALUE:1281,INVERT:5386,KEEP:7680,LEQUAL:515,LESS:513,LINEAR:9729,LINEAR_MIPMAP_LINEAR:9987,LINEAR_MIPMAP_NEAREST:9985,LINES:1,LINE_LOOP:2,LINE_STRIP:3,LINE_WIDTH:2849,LINK_STATUS:35714,LOW_FLOAT:36336,LOW_INT:36339,LUMINANCE:6409,LUMINANCE_ALPHA:6410,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_CUBE_MAP_TEXTURE_SIZE:34076,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_RENDERBUFFER_SIZE:34024,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_TEXTURE_SIZE:3379,MAX_VARYING_VECTORS:36348,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VIEWPORT_DIMS:3386,MEDIUM_FLOAT:36337,MEDIUM_INT:36340,MIRRORED_REPEAT:33648,NEAREST:9728,NEAREST_MIPMAP_LINEAR:9986,NEAREST_MIPMAP_NEAREST:9984,NEVER:512,NICEST:4354,NONE:0,NOTEQUAL:517,NO_ERROR:0,NUM_COMPRESSED_TEXTURE_FORMATS:34466,ONE:1,ONE_MINUS_CONSTANT_ALPHA:32772,ONE_MINUS_CONSTANT_COLOR:32770,ONE_MINUS_DST_ALPHA:773,ONE_MINUS_DST_COLOR:775,ONE_MINUS_SRC_ALPHA:771,ONE_MINUS_SRC_COLOR:769,OUT_OF_MEMORY:1285,PACK_ALIGNMENT:3333,POINTS:0,POLYGON_OFFSET_FACTOR:32824,POLYGON_OFFSET_FILL:32823,POLYGON_OFFSET_UNITS:10752,RED_BITS:3410,RENDERBUFFER:36161,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_BINDING:36007,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_STENCIL_SIZE:36181,RENDERBUFFER_WIDTH:36162,RENDERER:7937,REPEAT:10497,REPLACE:7681,RGB:6407,RGB5_A1:32855,RGB565:36194,RGBA:6408,RGBA4:32854,SAMPLER_2D:35678,SAMPLER_CUBE:35680,SAMPLES:32937,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_BUFFERS:32936,SAMPLE_COVERAGE:32928,SAMPLE_COVERAGE_INVERT:32939,SAMPLE_COVERAGE_VALUE:32938,SCISSOR_BOX:3088,SCISSOR_TEST:3089,SHADER_COMPILER:36346,SHADER_SOURCE_LENGTH:35720,SHADER_TYPE:35663,SHADING_LANGUAGE_VERSION:35724,SHORT:5122,SRC_ALPHA:770,SRC_ALPHA_SATURATE:776,SRC_COLOR:768,STATIC_DRAW:35044,STENCIL_ATTACHMENT:36128,STENCIL_BACK_FAIL:34817,STENCIL_BACK_FUNC:34816,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,STENCIL_BITS:3415,STENCIL_BUFFER_BIT:1024,STENCIL_CLEAR_VALUE:2961,STENCIL_FAIL:2964,STENCIL_FUNC:2962,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_TEST:2960,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STREAM_DRAW:35040,SUBPIXEL_BITS:3408,TEXTURE:5890,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,TEXTURE_2D:3553,TEXTURE_BINDING_2D:32873,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP:34067,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TRIANGLES:4,TRIANGLE_FAN:6,TRIANGLE_STRIP:5,UNPACK_ALIGNMENT:3317,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,UNSIGNED_BYTE:5121,UNSIGNED_INT:5125,UNSIGNED_SHORT:5123,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,VALIDATE_STATUS:35715,VENDOR:7936,VERSION:7938,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_SHADER:35633,VIEWPORT:2978,ZERO:0,R8:33321},f={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6403:"RED",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33321:"R8",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36193:"HALF_FLOAT",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"},l={alpha:!1,depth:!0,premultipliedAlpha:!1};var T=r(975),d=r(600);let R=0;function A(){let t,e,r=[0,0,0,0],n=0,i=0,a=0,s=(()=>{const t=document.createElement("canvas");return!(!t.getContext("experimental-webgl2")&&!t.getContext("webgl2"))})(),A=c;const m=T.create(),p=T.create(),v=T.create(),L=d.create(),S=T.create(),N=d.create();this.id="WebGLContext"+R++,this.canvas,this.gl,this.CONTEXT_LOST="contextLost",this.CONTEXT_RESTORED="contextRestored",this.shaderCount=0,this.bufferCount=0,this.textureCount=0,this.frameBufferCount=0,this.maxAnisotropy=0,this.multiRenderTargetSupport=!1,this.maxMultiRenderTargets=0,this.init=function(t,e={}){const r=o()({},l,e);if(void 0!==t){if(t instanceof HTMLCanvasElement){this.canvas=t;let n=s?"webgl2":"webgl";e.webgl1&&(n="webgl",s=!1),this.gl=t.getContext(n,r)}else window.WebGL2RenderingContext&&t instanceof WebGL2RenderingContext?(s=!0,this.gl=t,this.canvas=t.canvas):t instanceof WebGLRenderingContext?(s=!1,this.gl=t,this.canvas=t.canvas):console.error("The source has to be one of the following : Canvas, WebGLRenderingContext or WebGL2RenderingContext");this.canvas.addEventListener("webglcontextlost",g),this.canvas.addEventListener("webglcontextrestored",b),this.extensions=(t=>{const{gl:e}=t,r=window.WebGL2RenderingContext&&e instanceof WebGL2RenderingContext,n={};h.forEach((t=>{n[t]=e.getExtension(t)})),r||(n.OES_vertex_array_object||console.error("OES_vertex_array_object extension is not supported"),u(e,"OES_vertex_array_object"),u(e,"ANGLE_instanced_arrays"),u(e,"WEBGL_draw_buffers"));const i=n.EXT_texture_filter_anisotropic;if(i&&(t.maxAnisotropy=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),t.multiRenderTargetSupport=!!t.gl.drawBuffers,t.multiRenderTargetSupport){const r=t.gl.MAX_DRAW_BUFFERS||n.WEBGL_draw_buffers.MAX_DRAW_BUFFERS_WEBGL;t.maxMultiRenderTargets=e.getParameter(r)}return n})(this),(t=>{for(const e in _)t[e]?console.log("already exist : ",e):t[e]=_[e];if(t.webgl2){const e=/^[^a-z]*$/;for(const r in t.gl)e.test(r)&&-1===r.indexOf("FLOAT")&&(t[r]=t.gl[r],_[r]=t.gl[r],f[t[r]]=r)}})(this),this.setSize(this.canvas.width,this.canvas.height),this.enable(this.BLEND),this.enableAlphaBlending(),this.enable(this.DEPTH_TEST),this.enable(this.CULL_FACE),this.cullFace(M.BACK)}else{const t=document.createElement("canvas");this.init(t,r)}},this.clear=function(t=0,e=0,r=0,n=0){const{gl:i}=this;i.clearColor(t,e,r,n),i.clear(i.COLOR_BUFFER_BIT|i.DEPTH_BUFFER_BIT)},this.setSize=function(t,e){i=Math.floor(t),a=Math.floor(e),this.canvas.width=i,this.canvas.height=a,n=i/a,this.viewport(0,0,i,a)},this.viewport=function(t,e,n,i){E(r,[t,e,n,i])||(r=[t,e,n,i],this.gl.viewport(t,e,n,i))},this.getViewport=function(){return r},this.getAspectRatio=function(){return n},this.enable=function(t){this.gl.enable(t)},this.disable=function(t){this.gl.disable(t)},this.cullFace=function(t){this.gl.cullFace(t)},this.enableAlphaBlending=function(){const{gl:t}=this;t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA)},this.enableAdditiveBlending=function(){const{gl:t}=this;t.blendFunc(t.ONE,t.ONE)},this.setMatrices=function(t){e=t,this.setModelMatrix(p)},this.setModelMatrix=function(t){T.copy(v,t),void 0!==e&&(T.multiply(m,e.viewMatrix,v),d.fromMat4(L,m),d.invert(L,L),d.transpose(L,L),d.fromMat4(N,m),d.invert(N,N),T.invert(S,e.viewMatrix))},this.useShader=function(e){t=e,this.shaderProgram=e.shaderProgram,this.gl.useProgram(this.shaderProgram)},this.draw=function(e){if(e.length)return void e.forEach((t=>this.draw(t)));I(),t.updateUniforms(),e.bind(this);const{drawType:r}=e,{gl:n}=this;e.isInstanced?n.drawElementsInstanced(e.drawType,e.numItems,n.UNSIGNED_INT,0,e.numInstance):r===n.POINTS?n.drawArrays(r,0,e.vertexSize):n.drawElements(r,e.numItems,n.UNSIGNED_INT,0),e.unbind()},this.getCamera=function(){return e},this.destroy=function(t=!0){this.gl.getExtension("WEBGL_lose_context").loseContext(),t&&void 0!==this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)},this.__defineGetter__("width",(function(){return i})),this.__defineGetter__("height",(function(){return a})),this.__defineGetter__("webgl2",(function(){return s})),this.__defineGetter__("isMobile",(function(){return A})),this.__defineGetter__("aspectRatio",(function(){return n}));const I=()=>{void 0!==e&&(t.uniform("uProjectionMatrix","mat4",e.projectionMatrix),t.uniform("uViewMatrix","mat4",e.viewMatrix),t.uniform("uNormalMatrix","mat3",L),t.uniform("uModelViewMatrixInverse","mat3",N)),t.uniform("uModelMatrix","mat4",v)},g=()=>{this.emit(this.CONTEXT_LOST)},b=()=>{this.emit(this.CONTEXT_RESTORED)}}A.prototype=Object.assign(Object.create(i().prototype),{constructor:A});const M=new A,m={float:"uniform1f",vec2:"uniform2fv",vec3:"uniform3fv",vec4:"uniform4fv",int:"uniform1i",ivec2:"uniform2i",ivec3:"uniform3i",ivec4:"uniform4i",mat2:"uniformMatrix2fv",mat3:"uniformMatrix3fv",mat4:"uniformMatrix4fv"},p=t=>"number"==typeof t?t:t.slice?t.slice(0):new Float32Array(t),v=t=>"object"==typeof t?function(t){return 9===t.length?"mat3":16===t.length?"mat4":`vec${t.length}`}(t):"float";function L(t,e){let r;this.vertexShader=t||"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n}",this.fragmentShader=e||"precision highp float;\n#define GLSLIFY 1\n// varying vec2 vTextureCoord;\n\nvoid main(void) {\n gl_FragColor = vec4(1.0);\n}",this.shaderProgram;let n={};this.bind=function(t){if(void 0===t||void 0===r||t===r){if(r=t||M,!this.shaderProgram){const t=i(this.vertexShader,!0),e=i(this.fragmentShader,!1);a(t,e)}r.useShader(this)}else console.error("this shader has been bind to a different WebGL Rendering Context",r.id)},this.uniform=function(t,e,r){let i,a;void 0===r?(a=v(e),i=e):(a=e,i=r);const o=m[a];if(n[t]){const e=n[t];E(e.value,i)||(e.value=p(i),e.changed=!0)}else n[t]={type:a,uniformType:o,value:p(i),changed:!0};return this},this.updateUniforms=function(){if(!r)return void console.warn("No WebGL Context has been set yet, please call shader.bind() first");const{gl:t}=r;for(let e in n){const r=n[e];if(r.changed){const n=e;r.uniformLoc||(r.uniformLoc=t.getUniformLocation(this.shaderProgram,n));const{uniformLoc:i,uniformType:a,value:o}=r;null!==i&&(-1===a.indexOf("Matrix")?t[a](i,o):t[a](i,!1,o)),r.changed=!1}}},this.destroy=function(){const{gl:t}=r;t.deleteProgram(this.shaderProgram),r.shaderCount--};const i=(t,e)=>{const{gl:n}=r,i=e?r.VERTEX_SHADER:r.FRAGMENT_SHADER,a=n.createShader(i);return n.shaderSource(a,t),n.compileShader(a),n.getShaderParameter(a,n.COMPILE_STATUS)?a:(console.warn("Error in Shader : ",n.getShaderInfoLog(a)),console.log((t=>{const e=t.split("\n");for(let t=0;t{const{gl:n}=r;this.shaderProgram=n.createProgram(),n.attachShader(this.shaderProgram,t),n.attachShader(this.shaderProgram,e),n.deleteShader(t),n.deleteShader(e),n.linkProgram(this.shaderProgram),r.shaderCount++}}function S(t=_.TRIANGLES){this.drawType=t,this.numItems=0;let e,r,n,i,a,o=[],s=[],u=[],h=!0,c=!1,E=0;this.bufferData=function(t,e,r,n=_.STATIC_DRAW,i=!1){let a,o=[];if("number"==typeof t[0]){if(a=t,void 0===r)return console.error("Missing element size for flatten data :",e),this;for(let t=0;t{for(let r=0;re.name===t))},this.getAttributes=function(){return o},this.getSource=function(t){const e=this.getAttribute(t);return e?e.source:[]},this.generateFaces=function(){let t,e,r,i,a,o;u=[];const{vertices:s}=this;for(let h=0;h{t.deleteBuffer(e.buffer),e.source=[],e.dataArray=[],a.bufferCount--})),i&&(t.deleteBuffer(i),a.bufferCount--),t.deleteVertexArray(e),o=[],n=[],s=[]},this.__defineGetter__("vertices",(function(){return this.getSource("aVertexPosition")})),this.__defineGetter__("coords",(function(){return this.getSource("aTextureCoord")})),this.__defineGetter__("normal",(function(){return this.getSource("aNormal")})),this.__defineGetter__("indices",(function(){return n})),this.__defineGetter__("faces",(function(){return u})),this.__defineGetter__("isInstanced",(function(){return c})),this.__defineGetter__("numInstance",(function(){return E}));const f=(t,e,r,n,i=_.STATIC_DRAW,a=!1)=>{const u=i;c=a||c;const h=new Float32Array(t),E=this.getAttribute(r);return E?(E.itemSize=n,E.dataArray=h,E.source=e):o.push({name:r,source:e,itemSize:n,usage:u,dataArray:h,isInstanced:a}),s.push(r),this},l=()=>{const{shaderProgram:t,gl:r}=a;0!=s.length&&(e||(e=r.createVertexArray()),r.bindVertexArray(e),o.forEach((e=>{if(-1!==s.indexOf(e.name)){const n=function(t,e){let r;const{gl:n}=e;return void 0!==t.buffer?r=t.buffer:(r=n.createBuffer(),t.buffer=r,e.bufferCount++),r}(e,a);r.bindBuffer(r.ARRAY_BUFFER,n),r.bufferData(r.ARRAY_BUFFER,e.dataArray,e.usage);const i=((t,e,r)=>(void 0===e.cacheAttribLoc&&(e.cacheAttribLoc={}),void 0===e.cacheAttribLoc[r]&&(e.cacheAttribLoc[r]=t.getAttribLocation(e,r)),e.cacheAttribLoc[r]))(r,t,e.name);i>=0&&(r.enableVertexAttribArray(i),r.vertexAttribPointer(i,e.itemSize,r.FLOAT,!1,0,0)),e.attrPosition=i,e.isInstanced&&r.vertexAttribDivisor(i,1)}})),T(),r.bindVertexArray(null),h=!1,s=[])},T=()=>{const{gl:t}=a;h&&(i||(i=t.createBuffer(),a.bufferCount++),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,i),t.bufferData(t.ELEMENT_ARRAY_BUFFER,n,r))}}const N=t=>0!==t&&!(t&t-1);class I{constructor(t){this._value=t}set(t,e=1){this._value=this._value,this._value=0===e?this._value&0<>=t,1===e}reset(t){this._value=t}get value(){return this._value}}const g="This texture has been bind to a different WebGL Rendering Context",b=(t,e="")=>{console.error(t,e)};class O{constructor(t,e={},r=0,n=0){if(this._fromWebGLTexture=!1,t instanceof WebGLTexture)this._texture=t,this._fromWebGLTexture=!0;else{if(this._source=t,this._isHtmlElement=(t=>t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)(this._source),!this._isHtmlElement&&t&&!((t,e)=>{let r=!0;return"Array"===t.constructor.name&&(console.error("Please convert texture source to Unit8Array or Float32Array"),r=!1),void 0===e.type&&"Uint8Array"!==t.constructor.name&&console.error("Using none Unit8Array, pleaes specify type in the texture parameters"),r})(t,e))return;this._getDimension(t,r,n),this._params=function(t,e,r){if(!t.minFilter){let n=_.LINEAR;e&&e&&N(e)&&N(r)&&(n=_.NEAREST_MIPMAP_LINEAR),t.minFilter=n}return t.mipmap=void 0===t.mipmap||t.mipmap,t.magFilter=t.magFilter||_.LINEAR,t.wrapS=t.wrapS||_.CLAMP_TO_EDGE,t.wrapT=t.wrapT||_.CLAMP_TO_EDGE,t.internalFormat=t.internalFormat||_.RGBA,t.format=t.format||_.RGBA,t.premultiplyAlpha=void 0!==t.premultiplyAlpha&&t.premultiplyAlpha,t.level=t.level||0,t.type=t.type||_.UNSIGNED_BYTE,t}(e,this._width,this._height),this._checkMipmap()}this._parametersState=new I(0)}bind(t,e){if(void 0!==e&&void 0!==this.GL&&e!==this.GL)return void b(g,this.GL.id);this.GL=e||M;const{gl:r}=this.GL;this._fromWebGLTexture||this.createTexture(this.GL),r.activeTexture(r.TEXTURE0+t),r.bindTexture(r.TEXTURE_2D,this._texture),this._checkParameters()}createTexture(t){void 0===t||void 0===this.GL||t===this.GL?(this.GL=t||M,this._texture||(((t,e)=>{t.webgl2&&(e.type===_.HALF_FLOAT?(e.type=t.gl.HALF_FLOAT,e.internalFormat=_.RGBA16F):e.type===_.FLOAT&&(e.internalFormat=_.RGBA32F))})(this.GL,this._params),this._uploadTexture())):b(g,this.GL.id)}updateTexture(t){this._source=t,this._uploadTexture()}generateMipmap(){if(!this._generateMipmap)return;const{gl:t}=this.GL;t.bindTexture(t.TEXTURE_2D,this._texture),t.generateMipmap(t.TEXTURE_2D)}destroy(){const{gl:t}=this.GL;t.deleteTexture(this._texture),this.GL.textureCount--}showProperties(){console.log("Dimension :",this._width,this._height);for(const t in this._params)console.log(t,f[this._params[t]]||this._params[t])}_uploadTexture(){const{gl:t}=this.GL;this._texture||(this._texture=t.createTexture(),this.GL.textureCount++),t.bindTexture(t.TEXTURE_2D,this._texture),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!0),this._isHtmlElement&&!this.GL.webgl2?t.texImage2D(t.TEXTURE_2D,0,this._params.internalFormat,this._params.format,this._params.type,this._source):t.texImage2D(t.TEXTURE_2D,0,this._params.internalFormat,this._width,this._height,0,this._params.format,this._params.type,this._source),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,this._params.magFilter),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,this._params.minFilter),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,this._params.wrapS),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,this._params.wrapT),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha),this._generateMipmap&&t.generateMipmap(t.TEXTURE_2D)}_checkParameters(){const{gl:t}=this.GL;this._parametersState.value>0&&(this._parametersState.get(0)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,this._params.minFilter):this._parametersState.get(1)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,this._params.magFilter):this._parametersState.get(2)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,this._params.wrapS):t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,this._params.wrapT)),this._parametersState.reset(0)}_getDimension(t,e,r){t?(this._width=t.width||t.videoWidth,this._height=t.height||t.videoWidth,this._width=this._width||e,this._height=this._height||r,this._width&&this._height||(this._width=this._height=Math.sqrt(t.length/4))):(this._width=e,this._height=r)}_checkMipmap(){this._generateMipmap=this._params.mipmap,N(this._width)&&N(this._height)||(this._generateMipmap=!1),-1===f[this._params.minFilter].indexOf("MIPMAP")&&(this._generateMipmap=!1)}get texture(){return this._texture}set minFilter(t){this._params.minFilter=t,this._parametersState.set(0,1)}get minFilter(){return this._params.minFilter}set magFilter(t){this._params.magFilter=t,this._parametersState.set(1,1)}get magFilter(){return this._params.magFilter}set wrapS(t){this._params.wrapS=t,this._parametersState.set(2,1)}get wrapS(){return this._params.wrapS}set wrapT(t){this._params.wrapT=t,this._parametersState.set(3,1)}get wrapT(){return this._params.wrapT}get width(){return this._width}get height(){return this._height}get glTexture(){return this._texture}}class P{constructor(t){return this._GL=t||M,this._uniforms={},this._uniformTextures=[],this._fbo,this._clearColor={r:0,g:0,b:0,a:0},this}setClearColor(t=0,e=0,r=0,n=0){return this._clearColor.r=t,this._clearColor.g=e,this._clearColor.b=r,this._clearColor.a=n,this}useProgram(t,e){return this._shader=t instanceof L?t:new L(t,e),this}setMesh(t){return this._mesh=t,this}createMesh(t){return this._mesh=new S(t),this}bufferVertex(t){return this._mesh||(this._mesh=new S),this._mesh.bufferVertex(t),this}bufferTexCoord(t){return this._mesh||(this._mesh=new S),this._mesh.bufferTexCoord(t),this}bufferNormal(t){return this._mesh||(this._mesh=new S),this._mesh.bufferNormal(t),this}bufferIndex(t){return this._mesh||(this._mesh=new S),this._mesh.bufferIndex(t),this}bufferInstance(t,e){return this._mesh?(this._mesh.bufferInstance(t,e),this):(console.warn("Need to create mesh first"),this)}bufferData(t,e){return this._mesh||(this._mesh=new S),this._mesh.bufferData(t,e),this}uniform(t,e,r){const n=t;let i,a;return void 0===r?(a=v(e),i=e):(a=e,i=r),this._uniforms[n]={type:a,value:i},this}uniformTexture(t,e,r){return this.bindTexture(t,e,r)}bindTexture(t,e,r){return void 0!==r?this._uniformTextures[r]={name:t,texture:e}:this._uniformTextures.push({name:t,texture:e}),this}bindFrameBuffer(t){return this._fbo=t,this}draw(){if(this._shader){if(this._mesh){if(this._fbo){const{r:t,g:e,b:r,a:n}=this._clearColor;this._fbo.bind(this._GL),this._GL.clear(t,e,r,n)}this._shader.bind(this._GL);for(const t in this._uniforms){const e=this._uniforms[t];this._shader.uniform(t,e.type,e.value)}return this._uniformTextures.forEach(((t,e)=>{void 0!==t&&(this._shader.uniform(t.name,"int",e),t.texture.bind(e,this._GL))})),this._GL.draw(this._mesh),this._fbo&&this._fbo.unbind(),this}console.warn("No Mesh assigned for draw call")}else console.warn("No GLShader assigned for draw call")}get shader(){return this._shader}get framebuffer(){return this._fbo}}class C extends P{constructor(t){super(t);const e=this._GL,r=1e3,n=[[-r,0,0],[r,0,0],[0,-r,0],[0,r,0],[0,0,-r],[0,0,r]];this.createMesh(e.LINES).bufferVertex(n).bufferData([[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]],"aColor").bufferIndex([0,1,2,3,4,5]).useProgram("#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec3 aColor;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec3 vColor;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vColor = aColor;\n}","#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec3 vColor;\nuniform float uOpacity;\nout vec4 oColor;\n\nvoid main(void) {\n oColor = vec4(vColor, uOpacity);\n}"),this.opacity=.75}draw(){this.uniform("uOpacity",this.opacity),super.draw()}}class x extends P{constructor(t){super(t),this.setMesh(((t,e,r=!1)=>{const n=[],i=[],a=[],o=[],s=1/e;let u=0;function h(r,n,i=!1){const a=r/e*Math.PI-.5*Math.PI,o=n/e*Math.PI*2,s=i?1:t,u=[];u[1]=Math.sin(a)*s;const h=Math.cos(a)*s;u[0]=Math.cos(o)*h,u[2]=Math.sin(o)*h;const c=1e4;return u[0]=Math.floor(u[0]*c)/c,u[1]=Math.floor(u[1]*c)/c,u[2]=Math.floor(u[2]*c)/c,u}for(let t=0;tthis._update()))}_update(){this._checkLimit(),this._value+=(this._targetValue-this._value)*this.easing,Math.abs(this._targetValue-this._value)<1e-4&&(this._value=this._targetValue)}setTo(t){this._targetValue=this._value=t}add(t){this._targetValue+=t}limit(t,e){t>e?this.limit(e,t):(this._min=t,this._max=e,this._checkLimit())}_checkLimit(){void 0!==this._min&&this._targetValuethis._max&&(this._targetValue=this._max)}destroy(){D.Z.removeEF(this._efIndex)}set value(t){this._targetValue=t}get value(){return this._value}get targetValue(){return this._targetValue}}var B=r(160);const G=function(t,e){const r=e||{};return t.touches?(r.x=t.touches[0].pageX,r.y=t.touches[0].pageY):(r.x=t.clientX,r.y=t.clientY),r};class X{#t=!1;#e=!1;#r=!1;#n=!1;#i;#a={};#o={};#s=T.create();#u=T.create();#h=T.create();#c=T.create();#E=B.create();#_=B.create();#f=B.fromValues(0,1,0);radius=new w(0);rx=new w(0);ry=new w(0);#l=0;#T=0;constructor(t,e=5,r=window){this.#i=t,this.radius.setTo(e),this.#_=[0,0,this.radius],this.rx.limit(-Math.PI/2+.01,Math.PI/2-.01),r.addEventListener("mousewheel",this._onWheel),r.addEventListener("DOMMouseScroll",this._onWheel),r.addEventListener("mousedown",this._onDown),r.addEventListener("mousemove",this._onMove),window.addEventListener("mouseup",this._onUp),r.addEventListener("touchstart",this._onDown),r.addEventListener("touchmove",this._onMove),window.addEventListener("touchend",this._onUp),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.update(),D.Z.addEF(this._loop)}lock(t=!0){this.#t=t,this.#e=t,this.#n=!1}lockZoom(t=!0){this.#e=t}lockRotation(t=!0){this.#t=t}update(){B.set(this.#_,0,0,this.radius.value),B.rotateX(this.#_,this.#_,[0,0,0],this.rx.value),B.rotateY(this.#_,this.#_,[0,0,0],this.ry.value),T.lookAt(this.#s,this.#_,this.#E,this.#f),T.invert(this.#u,this.#s),T.mul(this.#s,this.#s,this.#c),T.mul(this.#s,this.#s,this.#h),this.#i?.setViewMatrix(this.#s)}_onDown=t=>{this.#t||(this.#n=!0,G(t,this.#a),G(t,this.#o),this.#l=this.rx.targetValue,this.#T=this.ry.targetValue,T.identity(this.#h))};_onMove=t=>{if(this.#t)return;if(!this.#n)return;if(G(t,this.#a),t.shiftKey){const t=[this.#a.x-this.#o.x,-(this.#a.y-this.#o.y),0];return B.transformMat4(t,t,this.#u),B.scale(t,t,.01),T.identity(this.#h,this.#h),void T.translate(this.#h,this.#h,t)}const e=this.#a.x-this.#o.x;this.ry.value=.01*-e+this.#T;const r=this.#a.y-this.#o.y;this.rx.value=.01*-r+this.#l};_onUp=()=>{this.#n=!1,this.#r&&(T.mul(this.#c,this.#c,this.#h),T.identity(this.#h))};_onWheel=t=>{if(this.#e)return;const e=t.wheelDelta,r=t.detail;let n=0;n=r?e?e/r/40*r>0?1:-1:-r/3:e/120,this.radius.add(2*-n),this.radius.targetValue<0&&(this.radius.value=1e-4)};_onKeyDown=t=>{t.code.indexOf("Shift")>-1&&(this.#r=!0)};_onKeyUp=t=>{"Shift"===t.key&&(T.mul(this.#c,this.#c,this.#h),T.identity(this.#h)),this.#r=!1};_loop=()=>{this.update()}}class V{constructor(){this._mtxView=T.create(),this._mtxProj=T.create(),this._near=0,this._far=0,this._lookDir=B.create()}lookAt(t,e,r=[0,1,0]){T.lookAt(this._mtxView,t,e,r)}setFromViewProjection(t,e){T.copy(this._mtxView,t),T.copy(this._mtxProj,e)}setViewMatrix(t){T.copy(this._mtxView,t)}setProjectionMatrix(t){T.copy(this._mtxProj,t)}_updateMatrices(){}get viewMatrix(){return this._mtxView}get view(){return this._mtxView}get projectionMatrix(){return this._mtxProj}get projection(){return this._mtxProj}get position(){const t=T.create();return T.invert(t,this._mtxView),[t[12],t[13],t[14]]}get direction(){const t=d.create();return d.fromMat4(t,this._mtxView),d.transpose(t,t),B.transformMat3(this._lookDir,[0,0,-1],t),B.normalize(this._lookDir,this._lookDir),this._lookDir}set near(t){this._near=t,this._updateMatrices()}get near(){return this._near}set far(t){this._far=t,this._updateMatrices()}get far(){return this._far}}function H(t,e){this.origin=t,this.direction=e;const r=B.create(),n=B.create(),i=B.create(),a=B.create(),o=B.create(),s=B.create(),u=B.create(),h=B.create();this.at=function(t){return B.copy(a,this.direction),B.scale(a,a,t),B.add(a,a,this.origin),a},this.lookAt=function(t){B.sub(this.direction,t,this.origin),B.normalize(this.origin,this.origin)},this.closestPointToPoint=function(t){const e=B.create();B.sub(t,this.origin);const r=B.dot(e,this.direction);return r<0?B.clone(this.origin):(B.copy(e,this.direction),B.scale(e,e,r),B.add(e,e,this.origin),e)},this.distanceToPoint=function(t){return Math.sqrt(this.distanceSqToPoint(t))},this.distanceSqToPoint=function(t){const e=B.create();B.sub(e,t,this.origin);const r=B.dot(e,this.direction);return r<0?B.squaredDistance(this.origin,t):(B.copy(e,this.direction),B.scale(e,e,r),B.add(e,e,this.origin),B.squaredDistance(e,t))},this.intersectsSphere=function(t,e){return this.distanceToPoint(t)<=e},this.intersectSphere=function(t,e){const r=B.create();B.sub(r,t,this.origin);const n=B.dot(r,this.direction),i=B.dot(r,r)-n*n,a=e*e;if(i>a)return null;const o=Math.sqrt(a-i),s=n-o,u=n+o;return s<0&&u<0?null:s<0?this.at(u):this.at(s)},this.intersectTriangle=function(t,e,a,c=!0){B.copy(r,t),B.copy(n,e),B.copy(i,a),B.sub(o,n,r),B.sub(s,i,r),B.cross(u,o,s);let E,_=B.dot(this.direction,u);if(_>0){if(c)return null;E=1}else{if(!(_<0))return null;E=-1,_=-_}B.sub(h,this.origin,r),B.cross(s,h,s);const f=E*B.dot(this.direction,s);if(f<0)return null;B.cross(o,o,h);const l=E*B.dot(this.direction,o);if(l<0)return null;if(f+l>_)return null;const T=-E*B.dot(h,u);return T<0?null:this.at(T/_)}}class Y extends V{constructor(t,e,r,n){super(),this._fov=0,this._ratio=0,this.setPerspective(t,e,r,n)}setPerspective(t,e,r,n){T.perspective(this._mtxProj,t,e,r,n),this._near=r,this._far=n,this._fov=t,this._ratio=e}setAspectRatio(t){this._ratio=t,this._updateMatrices()}generateRay(t,e){const r=T.create(),n=B.create(),i=this._mtxProj,a=this._mtxView;return T.multiply(r,i,a),T.invert(r,r),B.transformMat4(n,t,r),B.sub(n,n,this.position),B.normalize(n,n),e?(e.origin=this.position,e.direction=n):e=new H(this.position,n),e}_updateMatrices(){this.setPerspective(this._fov,this._ratio,this._near,this._far)}}class W{constructor(t){this._GL=t||M,this.camera=new Y,this.camera.setPerspective(45*Math.PI/180,M.aspectRatio,.1,100),this.orbitalControl=new X(this.camera,15,window),this.orbitalControl.radius.value=10,this._isRunning=!0,this._initTextures(),this._initViews(),window.addEventListener("resize",(()=>this.resize())),this._efIndex=D.Z.addEF((()=>this._loop()))}stop(){this._isRunning=!1}resume(){this._isRunning=!0}_initTextures(){}_initViews(){}update(){}render(){}_loop(){this._isRunning&&(this.update(),this._GL.viewport(0,0,this._GL.width,this._GL.height),this._GL.setMatrices(this.camera),this.render())}resize(){this._GL.setSize(window.innerWidth,window.innerHeight),this.camera.setAspectRatio(this._GL.aspectRatio)}}const j=t=>{const e=t.split("\n"),r=[],n=[],i=[],a=[],o=[],s=[],u=[];let h,c=0;const E=/v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,_=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,f=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,l=/f( +-?\d+)( +-?\d+)( +-?\d+)( +-?\d+)?/,T=/f( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))?/,d=/f( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))?/,R=/f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/;function A(t){const e=parseInt(t);return 3*(e>=0?e-1:e+a.length/3)}function M(t){const e=parseInt(t);return 3*(e>=0?e-1:e+o.length/3)}function m(t){const e=parseInt(t);return 2*(e>=0?e-1:e+s.length/2)}function p(t,e,n){r.push([a[t],a[t+1],a[t+2]]),r.push([a[e],a[e+1],a[e+2]]),r.push([a[n],a[n+1],a[n+2]]),u.push(3*c+0),u.push(3*c+1),u.push(3*c+2),c++}function v(t,e,r){n.push([s[t],s[t+1]]),n.push([s[e],s[e+1]]),n.push([s[r],s[r+1]])}function L(t,e,r){i.push([o[t],o[t+1],o[t+2]]),i.push([o[e],o[e+1],o[e+2]]),i.push([o[r],o[r+1],o[r+2]])}function S(t,e,r,n,i,a,o,s,u,h,c,E){let _,f=A(t),l=A(e),T=A(r);void 0===n?p(f,l,T):(_=A(n),p(f,l,_),p(l,T,_)),void 0!==i&&(f=m(i),l=m(a),T=m(o),void 0===n?v(f,l,T):(_=m(s),v(f,l,_),v(l,T,_))),void 0!==u&&(f=M(u),l=M(h),T=M(c),void 0===n?L(f,l,T):(_=M(E),L(f,l,_),L(l,T,_)))}for(let t=0;t{const e=t.normals.length>0,r=t.coords.length>0;let n;if(t.positions.length>65535){const i=[];let a=0;const o={};for(o.positions=t.positions.concat(),o.coords=t.coords.concat(),o.indices=t.indices.concat(),o.normals=t.normals.concat();t.indices.length>0;){const s=Math.min(65535,t.positions.length),u=t.indices.splice(0,s),h=[],c=[],E=[];let _,f=0;for(let t=0;tf&&(f=u[t]),_=u[t],h.push(o.positions[_]),r&&c.push(o.coords[_]),e&&E.push(o.normals[_]),u[t]-=a;a=f+1,n=new S,n.bufferVertex(h),r&&n.bufferTexCoord(c),n.bufferIndex(u),e&&n.bufferNormal(E),i.push(n)}return i}return n=new S,n.bufferVertex(t.positions),r&&n.bufferTexCoord(t.coords),n.bufferIndex(t.indices),e&&n.bufferNormal(t.normals),n};r(643)},643:()=>{Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function t(){var e=isNaN(arguments[0])?1:Number(arguments[0]);return e?Array.prototype.reduce.call(this,(function(r,n){return Array.isArray(n)?r.push.apply(r,t.call(n,e-1)):r.push(n),r}),[]):Array.prototype.slice.call(this)},writable:!0})},943:()=>{"use strict";String.prototype.replaceAll=function(t,e){return this.replace(new RegExp(t,"g"),e)},window.addEventListener("keydown",(t=>{if(83===t.keyCode&&(t.metaKey||t.ctrlKey)){t.preventDefault();const e=(()=>{const t=new Date;return`${t.getFullYear()}.${t.getMonth()+1}.${t.getDate()}-${t.getHours()}.${t.getMinutes()}.${t.getSeconds()}`})();((t,e)=>{var r=document.createElement("a"),n=(t=>{for(var e=t.split(","),r=e[0].match(/:(.*?);/)[1],n=atob(e[1]),i=n.length,a=new Uint8Array(i);i--;)a[i]=n.charCodeAt(i);return new Blob([a],{type:r})})(t.toDataURL({format:"png",multiplier:4})),i=URL.createObjectURL(n);r.download=`${e}.png`,r.href=i,r.click()})(document.querySelector("#main-canvas"),e)}}))},624:(t,e,r)=>{"use strict";r.d(e,{B8:()=>i,H:()=>n});const n=t=>{console.error(t)},i=(t,e,r)=>t.length?i(t[0],t[1],t[2]):void 0===e?`rgb(${t}, ${t}, ${t})`:`rgb(${t}, ${e}, ${r})`},552:(t,e,r)=>{"use strict";r.d(e,{H:()=>u,Z:()=>h});var n=r(247);let i,a,o;const s=(t,e,r)=>{const{margin:i}=n.Z,{innerWidth:a,innerHeight:o}=window;e=e||a,r=r||o;const s=a-i,u=o-i;let h=Math.min(e,s),c=Math.min(r,u);const E=s/e,_=u/r,f=Math.min(E,_);h=e*f,c=r*f;let l=Math.floor(a-h)/2,T=`\n position:absolute;\n width:${h}px;\n height:${c}px;\n top:${Math.floor(o-c)/2}px;\n left:${l}px;\n `;t.style.cssText=T},u=()=>{i&&s(i,a,o)},h=(t,e,r)=>{i=t,a=e,o=r,window.addEventListener("resize",(()=>{s(t,e,r)})),s(t,e,r)}}},n={};function i(t){var e=n[t];if(void 0!==e)return e.exports;var a=n[t]={exports:{}};return r[t].call(a.exports,a,a.exports,i),a.exports}i.m=r,i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,r)=>(i.f[r](t,e),e)),[])),i.u=t=>t+".bundle.js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t={},e="fxhash-boilerplate-webpack:",i.l=(r,n,a,o)=>{if(t[r])t[r].push(n);else{var s,u;if(void 0!==a)for(var h=document.getElementsByTagName("script"),c=0;c{s.onerror=s.onload=null,clearTimeout(f);var i=t[r];if(delete t[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((t=>t(n))),e)return e(n)},f=setTimeout(_.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=_.bind(null,s.onerror),s.onload=_.bind(null,s.onload),u&&document.head.appendChild(s)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");r.length&&(t=r[r.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{var t={179:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise(((r,i)=>n=t[e]=[r,i]));r.push(n[2]=a);var o=i.p+i.u(e),s=new Error;i.l(o,(r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;s.message="Loading chunk "+e+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,n[1](s)}}),"chunk-"+e,e)}};var e=(e,r)=>{var n,a,[o,s,u]=r,h=0;if(o.some((e=>0!==t[e]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);u&&u(i)}for(e&&e(r);h{"use strict";var t=i(856),e=i(552);var r=i(247);let n=!1,a=!1;class o extends t.xs{constructor(){super(),t.GL.setSize(2160,2700),this.camera.setAspectRatio(t.GL.aspectRatio),(0,e.Z)(t.GL.canvas,2160,2700),setTimeout((()=>{a=!0}),500)}_initTextures(){}_initViews(){this._dAxis=new t.nu,this._dCopy=new t.Cg,this._dBall=new t.QA}update(){}render(){t.GL.clear(.1,.1,.1,1),t.GL.setMatrices(this.camera),this._dAxis.draw(),a&&!n&&r.Z.autoSave&&(((t,e)=>{var r=document.createElement("a"),n=(t=>{for(var e=t.split(","),r=e[0].match(/:(.*?);/)[1],n=atob(e[1]),i=n.length,a=new Uint8Array(i);i--;)a[i]=n.charCodeAt(i);return new Blob([a],{type:r})})(t.toDataURL({format:"png",multiplier:4})),i=URL.createObjectURL(n);r.download=`${e}.png`,r.href=i,r.click()})(t.GL.canvas,(()=>{const t=new Date;return`${t.getFullYear()}.${t.getMonth()+1}.${t.getDate()}-${t.getHours()}.${t.getMinutes()}.${t.getSeconds()}`})()),n=!0)}resize(){}}const s=o;var u=i(624);const h=[];let c;const E=e=>{c=e.map((({id:e,file:r,type:n})=>{const i=r;let a;switch(n){case"jpg":case"png":a=new t.fy(r);break;case"text":a=(0,t.F7)(r)}return{id:e,source:i,type:n,file:a}})),console.table(c)};var _=i(719),f=i.n(_);let l,T;i(943);var d;new Promise(((t,e)=>{const r=document.body.querySelector(".Loading-Bar");console.log("Load Assets",h),h.length>0?(document.body.classList.add("isLoading"),new(f())({assets:h}).on("error",(t=>{console.log("Error :",t)})).on("progress",(t=>{r&&(r.style.width=100*t+"%")})).on("complete",(e=>{r&&(r.style.width="100%"),E(e),setTimeout((()=>{document.body.classList.remove("isLoading"),t(d)}),500)})).start()):t(d)})).then((function(){i.e(891).then(i.bind(i,891)).then((({default:e})=>{e.init(),T=document.createElement("canvas"),T.id="main-canvas",document.body.appendChild(T),t.GL.init(T,{alpha:!1,preserveDrawingBuffer:!0}),l=new s,Promise.all([i.e(296),i.e(608)]).then(i.bind(i,608)).then((({default:t})=>{t(l),i.e(756).then(i.bind(i,756))}))}))}),u.H)})()})(); \ No newline at end of file diff --git a/experiments/flame/dist/bundle.js.LICENSE.txt b/experiments/flame/dist/bundle.js.LICENSE.txt new file mode 100644 index 00000000..b5fb7739 --- /dev/null +++ b/experiments/flame/dist/bundle.js.LICENSE.txt @@ -0,0 +1,5 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ diff --git a/experiments/flame/dist/index.html b/experiments/flame/dist/index.html new file mode 100644 index 00000000..42967f4e --- /dev/null +++ b/experiments/flame/dist/index.html @@ -0,0 +1,44 @@ +FXHASH project \ No newline at end of file diff --git a/experiments/flame/dist/style.css b/experiments/flame/dist/style.css new file mode 100644 index 00000000..68ddd564 --- /dev/null +++ b/experiments/flame/dist/style.css @@ -0,0 +1,12 @@ +body { + background-color: rgb(33, 33, 33); +} + +* { + margin: 0; + padding: 0; +} + +.dg { + z-index: 99999 !important; +} diff --git a/experiments/flame/package-lock.json b/experiments/flame/package-lock.json new file mode 100644 index 00000000..099cfca3 --- /dev/null +++ b/experiments/flame/package-lock.json @@ -0,0 +1,4586 @@ +{ + "name": "fxhash-boilerplate-webpack", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "fxhash-boilerplate-webpack", + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "assets-loader": "github:madclem/assets-loader", + "gl-matrix": "^3.4.3", + "glslify-loader": "^2.0.0", + "hex-rgb": "^5.0.0", + "hsl-rgb": "^1.0.0", + "object-assign": "^4.1.1", + "raw-loader": "^4.0.2", + "rgb-to-hsl": "^0.0.3", + "scheduling": "^1.3.5", + "simplex-noise": "^3.0.1", + "stats.js": "^0.17.0", + "url-parse": "^1.5.10" + }, + "devDependencies": { + "adm-zip": "^0.5.9", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.4.0", + "dat.gui": "^0.7.7", + "fast-url-parser": "^1.1.3", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.4.0", + "querystringparser": "^0.1.1", + "style-loader": "^3.3.0", + "webpack": "^5.59.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.3.1" + } + }, + "node_modules/@choojs/findup": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", + "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", + "dependencies": { + "commander": "^2.15.1" + }, + "bin": { + "findup": "bin/findup.js" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", + "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" + }, + "node_modules/@types/express": { + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.16.tgz", + "integrity": "sha512-LkKpqRZ7zqXJuvoELakaFYuETHjZkSol8EV6cNnyishutDBCCdv6+dsKPbKkCcIk57qRphOLY5sEgClw1bO3gA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.31", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.33", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", + "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", + "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", + "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.5.0.tgz", + "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.7.0.tgz", + "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/assets-loader": { + "version": "0.5.2", + "resolved": "git+ssh://git@github.com/madclem/assets-loader.git#f99067686e300b6ec460f81a9b3b59e9d4dbd82d", + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour-service": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.1.0.tgz", + "integrity": "sha512-LVRinRB3k1/K0XzZ2p58COnWvkQknIY6sf0zF2rpErvcJXpMBttEPQSxK+HEXSS9VmpZlDoDnQWv8ftJT20B0Q==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001450", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz", + "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-webpack-plugin": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-9.1.0.tgz", + "integrity": "sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^11.0.3", + "normalize-path": "^3.0.0", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.7.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz", + "integrity": "sha512-qhOH1KlBMnZP8FzRO6YCH9UHXQhVMcEGLyNdb7Hv2cpcmJbW0YrddO+tG1ab5nT41KpHIYGsbeHqxB9xPu1pKQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.19", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dat.gui": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/dat.gui/-/dat.gui-0.7.9.tgz", + "integrity": "sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==", + "dev": true + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-url-parser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", + "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "dev": true, + "dependencies": { + "punycode": "^1.3.2" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glsl-inject-defines": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", + "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==", + "dependencies": { + "glsl-token-inject-block": "^1.0.0", + "glsl-token-string": "^1.0.1", + "glsl-tokenizer": "^2.0.2" + } + }, + "node_modules/glsl-resolve": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz", + "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==", + "dependencies": { + "resolve": "^0.6.1", + "xtend": "^2.1.2" + } + }, + "node_modules/glsl-resolve/node_modules/resolve": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==" + }, + "node_modules/glsl-token-assignments": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz", + "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==" + }, + "node_modules/glsl-token-defines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz", + "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==", + "dependencies": { + "glsl-tokenizer": "^2.0.0" + } + }, + "node_modules/glsl-token-depth": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz", + "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==" + }, + "node_modules/glsl-token-descope": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz", + "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==", + "dependencies": { + "glsl-token-assignments": "^2.0.0", + "glsl-token-depth": "^1.1.0", + "glsl-token-properties": "^1.0.0", + "glsl-token-scope": "^1.1.0" + } + }, + "node_modules/glsl-token-inject-block": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz", + "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==" + }, + "node_modules/glsl-token-properties": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz", + "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==" + }, + "node_modules/glsl-token-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz", + "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==" + }, + "node_modules/glsl-token-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz", + "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==" + }, + "node_modules/glsl-token-whitespace-trim": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz", + "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==" + }, + "node_modules/glsl-tokenizer": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", + "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", + "dependencies": { + "through2": "^0.6.3" + } + }, + "node_modules/glslify-bundle": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz", + "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", + "dependencies": { + "glsl-inject-defines": "^1.0.1", + "glsl-token-defines": "^1.0.0", + "glsl-token-depth": "^1.1.1", + "glsl-token-descope": "^1.0.2", + "glsl-token-scope": "^1.1.1", + "glsl-token-string": "^1.0.1", + "glsl-token-whitespace-trim": "^1.0.0", + "glsl-tokenizer": "^2.0.2", + "murmurhash-js": "^1.0.0", + "shallow-copy": "0.0.1" + } + }, + "node_modules/glslify-deps": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz", + "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==", + "dependencies": { + "@choojs/findup": "^0.2.0", + "events": "^3.2.0", + "glsl-resolve": "0.0.1", + "glsl-tokenizer": "^2.0.0", + "graceful-fs": "^4.1.2", + "inherits": "^2.0.1", + "map-limit": "0.0.1", + "resolve": "^1.0.0" + } + }, + "node_modules/glslify-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glslify-loader/-/glslify-loader-2.0.0.tgz", + "integrity": "sha512-oOdmTX1BSPG75o3gNZToemfbbuN5dgi4Pco/aRfjbwGxPIfflYLuok6JCf2kDBPHjP+tV+imNsj6YRJg9gKJ1A==", + "dependencies": { + "glslify-bundle": "^5.0.0", + "glslify-deps": "^1.3.0", + "loader-utils": "^1.1.0", + "resolve": "^1.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-rgb": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/hex-rgb/-/hex-rgb-5.0.0.tgz", + "integrity": "sha512-NQO+lgVUCtHxZ792FodgW0zflK+ozS9X9dwGp9XvvmPlH7pyxd588cn24TD3rmPm/N0AIRXF10Otah8yKqGw4w==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/hsl-rgb": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-rgb/-/hsl-rgb-1.0.0.tgz", + "integrity": "sha512-cNq+7sfwzSDoiG/jiu8wZpOmjScUZrMKiI33tH3aQ1MZsXWQd0yJjMpPwu2OZFYa4D/bOT1aCbB5gS1kOqFx1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz", + "integrity": "sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-limit": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", + "dependencies": { + "once": "~1.3.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz", + "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/querystringparser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/querystringparser/-/querystringparser-0.1.1.tgz", + "integrity": "sha512-dvvDKF+ZuUd0N9DZ0C59TTt2/aztGfRrNzbn6SiqSQq/uwCKoMpLEMAb08DNd0ozbyhJfrrGJFWGLHeoL7ESag==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-loader": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/raw-loader/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/raw-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-to-hsl": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/rgb-to-hsl/-/rgb-to-hsl-0.0.3.tgz", + "integrity": "sha512-bY9ESCopZxhGQa3ukQIr2l9XILr03i6jbrvZXRJAROYWWOrnEBL8tVTybC/OSg2nnqob2+qfeWJDa1xtDXPhVQ==" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scheduling": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/scheduling/-/scheduling-1.3.5.tgz", + "integrity": "sha512-gUt9vLguhUUduMFaQPEY0r9qUoNbet5f+w51UmpX5NnfMk22u/VYD1oA6pWKDHnCLvB04IXwNzKHEg7Rf5yg4Q==" + }, + "node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simplex-noise": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/simplex-noise/-/simplex-noise-3.0.1.tgz", + "integrity": "sha512-eww0SFiWLyOaUKQMJ7gbdvQJvULeJdM/Y4BiC3rrOQnYHo+MSPh465/qeXSZkpTdB9/HthumpnYD3DobZweBBQ==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy-transport/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.2.tgz", + "integrity": "sha512-JKuM+KvvWVqT7muHVyrwv7FVRPnmHDwF6XwoIxdbF5Witi0vu99RYpxDexpJndXt3jbZZmmWr2/mQa6HvSNdSg==", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", + "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/through2": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", + "dependencies": { + "readable-stream": ">=1.0.33-1 <1.1.0-0", + "xtend": ">=4.0.0 <4.1.0-0" + } + }, + "node_modules/through2/node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.75.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", + "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", + "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.2.0", + "@webpack-cli/info": "^1.5.0", + "@webpack-cli/serve": "^1.7.0", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "cross-spawn": "^7.0.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/experiments/flame/package.json b/experiments/flame/package.json new file mode 100644 index 00000000..eb090863 --- /dev/null +++ b/experiments/flame/package.json @@ -0,0 +1,42 @@ +{ + "name": "fxhash-boilerplate-webpack", + "version": "1.0.0", + "description": "a boilerplate to create a generative token on fxhash", + "main": "index.js", + "author": "fxhash", + "license": "MIT", + "scripts": { + "build": "webpack --config ./config/webpack.config.prod.js", + "start": "webpack serve --config ./config/webpack.config.dev.js & npm run shader & npm run assets", + "assets": "node ./tasks/watch-asset.js", + "shader": " node ./tasks/shader-watcher.js" + }, + "dependencies": { + "assets-loader": "github:madclem/assets-loader", + "gl-matrix": "^3.4.3", + "glslify-loader": "^2.0.0", + "hex-rgb": "^5.0.0", + "hsl-rgb": "^1.0.0", + "object-assign": "^4.1.1", + "raw-loader": "^4.0.2", + "rgb-to-hsl": "^0.0.3", + "scheduling": "^1.3.5", + "simplex-noise": "^3.0.1", + "stats.js": "^0.17.0", + "url-parse": "^1.5.10" + }, + "devDependencies": { + "adm-zip": "^0.5.9", + "copy-webpack-plugin": "^9.0.1", + "css-loader": "^6.4.0", + "dat.gui": "^0.7.7", + "fast-url-parser": "^1.1.3", + "fs-extra": "^10.0.0", + "html-webpack-plugin": "^5.4.0", + "querystringparser": "^0.1.1", + "style-loader": "^3.3.0", + "webpack": "^5.59.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.3.1" + } +} diff --git a/experiments/flame/public/index.html b/experiments/flame/public/index.html new file mode 100644 index 00000000..ed51a457 --- /dev/null +++ b/experiments/flame/public/index.html @@ -0,0 +1,27 @@ + + + + FXHASH project + + + + + + + + + + + diff --git a/experiments/flame/public/style.css b/experiments/flame/public/style.css new file mode 100644 index 00000000..0057fbdc --- /dev/null +++ b/experiments/flame/public/style.css @@ -0,0 +1,20 @@ +body { + background-color: rgb(33, 33, 33); +} + +* { + margin: 0; + padding: 0; +} + +.dg { + z-index: 99999 !important; +} + +#main-canvas { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} diff --git a/experiments/flame/src/Assets.js b/experiments/flame/src/Assets.js new file mode 100644 index 00000000..36731567 --- /dev/null +++ b/experiments/flame/src/Assets.js @@ -0,0 +1,42 @@ +let _assets; +import { GLTexture, parseObj } from "alfrid"; + +const init = (mAssets) => { + _assets = mAssets.map(({ id, file, type }) => { + const source = file; + let _file; + switch (type) { + case "jpg": + case "png": + _file = new GLTexture(file); + break; + case "text": + _file = parseObj(file); + break; + } + + return { + id, + source, + type, + file: _file, + }; + }); + console.table(_assets); +}; + +const get = (mName) => { + const asset = _assets.find((o) => o.id === mName); + if (!asset) { + return null; + } + + return asset.file; +}; + +const Assets = { + init, + get, +}; + +export default Assets; diff --git a/experiments/flame/src/Config.js b/experiments/flame/src/Config.js new file mode 100644 index 00000000..b919240e --- /dev/null +++ b/experiments/flame/src/Config.js @@ -0,0 +1,10 @@ +export default { + numParticles: 256, + colorBg: [25, 25, 25], + useTargetSize: false, + autoSave: false, + showThumbnail: false, + margin: 100, + thumbnailSize: 256, + background: [22, 22, 22], +}; diff --git a/experiments/flame/src/DrawParticles.js b/experiments/flame/src/DrawParticles.js new file mode 100644 index 00000000..c2abcba4 --- /dev/null +++ b/experiments/flame/src/DrawParticles.js @@ -0,0 +1,36 @@ +import { GL, Draw, Mesh } from "alfrid"; + +import Config from "./Config"; +import { random } from "./utils"; + +import vs from "shaders/particles.vert"; +import fs from "shaders/particles.frag"; + +export default class DrawParticles extends Draw { + constructor() { + super(); + + const { numParticles: num } = Config; + + const positions = []; + const uvs = []; + let count = 0; + const indices = []; + + for (let j = 0; j < num; j++) { + for (let i = 0; i < num; i++) { + positions.push([random(), random(), random()]); + uvs.push([i / num, j / num]); + indices.push(count); + count++; + } + } + + const mesh = new Mesh(GL.POINTS) + .bufferVertex(positions) + .bufferTexCoord(uvs) + .bufferIndex(indices); + + this.setMesh(mesh).useProgram(vs, fs); + } +} diff --git a/experiments/flame/src/DrawSave.js b/experiments/flame/src/DrawSave.js new file mode 100644 index 00000000..0ea22018 --- /dev/null +++ b/experiments/flame/src/DrawSave.js @@ -0,0 +1,54 @@ +import { GL, Draw, Mesh } from "alfrid"; +import Config from "./Config"; +import { random } from "./utils"; +import vs from "shaders/save.vert"; +import fs from "shaders/save.frag"; + +export default class DrawSave extends Draw { + constructor() { + super(); + + const { numParticles: num } = Config; + + const positions = []; + const uvs = []; + const normals = []; + const datas = []; + let count = 0; + const indices = []; + + const r = 4; + const ratio = 4; + + const getPos = () => { + const x = random(-r, r); + const y = random(-r / ratio, r / ratio) - 2; + const z = random(-1, 1) * 0.1; + + return GL.isMobile ? [y, x, z] : [x, y, z]; + }; + + for (let j = 0; j < num; j++) { + for (let i = 0; i < num; i++) { + positions.push(getPos()); + uvs.push([ + (i / num) * 2 - 1 + 0.5 / num, + (j / num) * 2 - 1 + 0.5 / num, + ]); + normals.push([random(), random(), random()]); + datas.push([random(), random(), random()]); + indices.push(count); + count++; + } + } + + const mesh = new Mesh(GL.POINTS) + .bufferVertex(positions) + .bufferTexCoord(uvs) + .bufferNormal(normals) + .bufferData(datas, "aData", 3) + .bufferIndex(indices); + + this.setMesh(mesh).useProgram(vs, fs); + } +} diff --git a/experiments/flame/src/DrawSim.js b/experiments/flame/src/DrawSim.js new file mode 100644 index 00000000..04503d54 --- /dev/null +++ b/experiments/flame/src/DrawSim.js @@ -0,0 +1,12 @@ +import { Draw, ShaderLibs, Geom } from "alfrid"; + +import fs from "shaders/sim.frag"; + +export default class DrawSim extends Draw { + constructor() { + super() + .setMesh(Geom.bigTriangle()) + .useProgram(ShaderLibs.bigTriangleVert, fs) + .setClearColor(0, 0, 0, 0); + } +} diff --git a/experiments/flame/src/SceneApp.js b/experiments/flame/src/SceneApp.js new file mode 100644 index 00000000..cff06e1a --- /dev/null +++ b/experiments/flame/src/SceneApp.js @@ -0,0 +1,183 @@ +import { + GL, + DrawBall, + DrawAxis, + DrawCopy, + DrawCamera, + Scene, + FboPingPong, + FrameBuffer, + CameraOrtho, +} from "alfrid"; +import { targetWidth, targetHeight } from "./features"; +import resize from "./utils/resize"; +import { random, randomInt, toGlsl, saveImage, getDateString } from "./utils"; +import Config from "./Config"; +import { vec2 } from "gl-matrix"; +import Scheduler from "scheduling"; + +// draw calls +import DrawParticles from "./DrawParticles"; +import DrawSave from "./DrawSave"; +import DrawSim from "./DrawSim"; + +// fluid simulation +import FluidSimulation from "./fluid-sim"; + +let hasSaved = false; +let canSave = false; + +class SceneApp extends Scene { + constructor() { + super(); + + if (Config.useTargetSize) { + GL.setSize(targetWidth, targetHeight); + this.camera.setAspectRatio(GL.aspectRatio); + resize(GL.canvas, targetWidth, targetHeight); + } + + // this.orbitalControl.lock(); + + setTimeout(() => { + canSave = true; + }, 500); + } + + _init() { + this.resize(); + + // fluid + const DISSIPATION = 0.985; + this._fluid = new FluidSimulation({ + DENSITY_DISSIPATION: DISSIPATION, + VELOCITY_DISSIPATION: DISSIPATION, + PRESSURE_DISSIPATION: DISSIPATION, + }); + + // light + this._light = [0, 7, 2]; + this._cameraLight = new CameraOrtho(); + const r = 7; + const ratio = 0.6; + this._cameraLight.ortho(-r, r, r * ratio, -r * ratio, 2, 12); + this._cameraLight.lookAt(this._light, [0, 0, 0]); + } + + _initTextures() { + const { numParticles: num } = Config; + + const oSettings = { + minFilter: GL.NEAREST, + magFilter: GL.NEAREST, + type: GL.FLOAT, + }; + + this._fbo = new FboPingPong(num, num, oSettings, 4); + this._fboPos = new FrameBuffer(num, num, oSettings); + } + + _initViews() { + this._dAxis = new DrawAxis(); + this._dCopy = new DrawCopy(); + this._dBall = new DrawBall(); + this._dCamera = new DrawCamera(); + + this._drawSim = new DrawSim(); + this._drawParticles = new DrawParticles(); + new DrawSave() + .setClearColor(0, 0, 0, 1) + .bindFrameBuffer(this._fbo.read) + .draw(); + + this._fboPos.bind(); + GL.clear(0, 0, 0, 0); + this._dCopy.draw(this._fbo.read.getTexture(0)); + this._fboPos.unbind(); + } + + _updateFluid() { + let time = Scheduler.getElapsedTime() * 0.1; + + let num = randomInt(4, 6); + for (let i = 0; i < num; i++) { + let x = ((i / num + time) % 1) + (random(-1, 1) * 0.2) / num; + let y = random(0.1, 0.4); + + let dir = [random(-1, 1) * 0.2, 1]; + vec2.normalize(dir, dir); + let strength = random(1, 5); + let radius = random(1, 4); + this._fluid.updateFlow([x, y], dir, strength, radius, 1); + } + + this._fluid.update(); + } + + update() { + this._updateFluid(); + + this._drawSim + .bindFrameBuffer(this._fbo.write) + .bindTexture("uPosMap", this._fbo.read.getTexture(0), 0) + .bindTexture("uVelMap", this._fbo.read.getTexture(1), 1) + .bindTexture("uExtraMap", this._fbo.read.getTexture(2), 2) + .bindTexture("uDataMap", this._fbo.read.getTexture(3), 3) + .bindTexture("uPosOrgMap", this._fboPos.texture, 4) + .bindTexture("uFluidMap", this._fluid.velocity, 5) + .bindTexture("uDensityMap", this._fluid.density, 6) + .uniform("uBound", 4) + .draw(); + + this._fbo.swap(); + } + + render() { + let g = 0.1; + GL.clear(...Config.colorBg.map(toGlsl), 1); + GL.setMatrices(this.camera); + + this._dAxis.draw(); + this._drawParticles + .bindTexture("uPosMap", this._fbo.read.getTexture(0), 0) + .bindTexture("uDataMap", this._fbo.read.getTexture(3), 1) + .uniform("uViewport", [GL.width, GL.height]) + .draw(); + + g = 0.05; + const r = 4; + this._dBall.draw([-r, -r, 0], [g, g, g], [1, 0, 0]); + this._dBall.draw([r, -r, 0], [g, g, g], [1, 0, 0]); + this._dBall.draw([r, r, 0], [g, g, g], [1, 0, 0]); + this._dBall.draw([-r, r, 0], [g, g, g], [1, 0, 0]); + + g = 0.1; + this._dBall.draw(this._light, [g, g, g], [1, 0.5, 0]); + + this._dCamera.draw(this._cameraLight, [1, 1, 1]); + + g = 200; + GL.viewport(0, 0, g, g); + this._dCopy.draw(this._fluid.velocity); + // this._dCopy.draw(this._fbo.read.getTexture(0)); + GL.viewport(g, 0, g, g); + this._dCopy.draw(this._fluid.density); + // this._dCopy.draw(this._fbo.read.getTexture(3)); + + if (canSave && !hasSaved && Config.autoSave) { + saveImage(GL.canvas, getDateString()); + hasSaved = true; + } + } + + resize() { + if (!GL.useTargetSize) { + const { innerWidth, innerHeight } = window; + const pixelRatio = 1.5; + GL.setSize(innerWidth * pixelRatio, innerHeight * pixelRatio); + this.camera?.setAspectRatio(GL.aspectRatio); + } + } +} + +export default SceneApp; diff --git a/experiments/flame/src/Settings.js b/experiments/flame/src/Settings.js new file mode 100644 index 00000000..981810d0 --- /dev/null +++ b/experiments/flame/src/Settings.js @@ -0,0 +1,73 @@ +// Settings.js + +import Config from "./Config"; +import parse from "url-parse"; + +let enabled = true; + +const reload = () => { + if (!enabled) { + return; + } + window.location.href = + window.location.origin + + window.location.pathname + + "?config=" + + JSON.stringify(Config); +}; + +const refresh = () => { + if (!enabled) { + return; + } + window.history.pushState( + "experiment", + "Title", + window.location.origin + + window.location.pathname + + "?config=" + + JSON.stringify(Config) + ); +}; + +const reset = () => { + window.location.href = window.location.origin + window.location.pathname; +}; + +let delayIndex = -1; + +const delayReload = () => { + if (!enabled) { + return; + } + window.clearTimeout(delayIndex); + + delayIndex = window.setTimeout(() => { + window.location.href = + window.location.origin + + window.location.pathname + + "?config=" + + JSON.stringify(Config); + }, 500); +}; + +const init = (mEnabled = true) => { + enabled = mEnabled; + const parsed = parse(window.location.search, true); + let parsedJson = {}; + if (parsed.query.config) { + parsedJson = JSON.parse(parsed.query.config); + } + + Object.assign(Config, parsedJson); + refresh(); +}; + +export default { + enabled, + reload, + reset, + refresh, + delayReload, + init, +}; diff --git a/experiments/flame/src/_template2D.js b/experiments/flame/src/_template2D.js new file mode 100644 index 00000000..beb789dd --- /dev/null +++ b/experiments/flame/src/_template2D.js @@ -0,0 +1,16 @@ +import { rgb } from "./utils"; +import { targetWidth, targetHeight } from "./features"; +import setupProject from "./utils/setupProject2D"; + +import Settings from "./Settings"; +import addControls from "./utils/addControl"; + +// development +if (process.env.NODE_ENV === "development") { + Settings.init(); + addControls(); +} +const { ctx, width, height } = setupProject(targetWidth, targetHeight); + +ctx.fillStyle = rgb(255, 255, 245); +ctx.fillRect(0, 0, width, height); diff --git a/experiments/flame/src/alfrid/camera/Camera.js b/experiments/flame/src/alfrid/camera/Camera.js new file mode 100644 index 00000000..ba2f2e9a --- /dev/null +++ b/experiments/flame/src/alfrid/camera/Camera.js @@ -0,0 +1,165 @@ +import { mat4, vec3, mat3 } from "gl-matrix"; + +class Camera { + constructor() { + this._mtx = mat4.create(); + this._mtxView = mat4.create(); + this._mtxProj = mat4.create(); + this._near = 0; + this._far = 0; + this._lookDir = vec3.create(); + } + + /** + * Update the view matrix with look At function + * + * @param {vec3} mEye the position of the camera + * @param {vec3} mCenter the target of the camera looking at + * @param {vec3} mUp the up vector + */ + lookAt(mEye, mCenter, mUp = [0, 1, 0]) { + mat4.lookAt(this._mtxView, mEye, mCenter, mUp); + } + + /** + * Set the camera from view & projection matrix + * + * @param {mat4} mView the view matrix + * @param {mat4} mProj the projection matrix + */ + setFromViewProjection(mView, mProj) { + mat4.copy(this._mtxView, mView); + mat4.copy(this._mtxProj, mProj); + } + + /** + * Update the view matrix of the camera + * + * @param {mat4} mMtx the view matrix + */ + setViewMatrix(mMtx) { + mat4.copy(this._mtxView, mMtx); + } + + /** + * Update the projection matrix of the camera + * + * @param {mat4} mMtx the projection matrix + */ + setProjectionMatrix(mMtx) { + mat4.copy(this._mtxProj, mMtx); + } + + /** + * Update the matrices of the camera, to be overwriten + * + */ + _updateMatrices() {} + + get viewMatrix() { + mat4.mul(this._mtx, this._mtxProj, this._mtxView); + return this._mtx; + } + + /** + * Get view matrix from camera + * + * @returns {mat4} the view matrix + */ + get viewMatrix() { + return this._mtxView; + } + + /** + * Get view matrix from camera + * + * @returns {mat4} the view matrix + */ + get view() { + return this._mtxView; + } + + /** + * Get projection matrix from camera + * + * @returns {mat4} the projection matrix + */ + get projectionMatrix() { + return this._mtxProj; + } + + /** + * Get projection matrix from camera + * + * @returns {mat4} the projection matrix + */ + get projection() { + return this._mtxProj; + } + + /** + * Get the position of the camera + * + * @returns {vec3} the position of the camera + */ + get position() { + const mtxInvert = mat4.create(); + mat4.invert(mtxInvert, this._mtxView); + return [mtxInvert[12], mtxInvert[13], mtxInvert[14]]; + } + + /** + * Get the pointing direction of the camera + * + * @returns {vec3} the pointing direction of the camera + */ + get direction() { + const mtxRot = mat3.create(); + mat3.fromMat4(mtxRot, this._mtxView); + mat3.transpose(mtxRot, mtxRot); + vec3.transformMat3(this._lookDir, [0, 0, -1], mtxRot); + vec3.normalize(this._lookDir, this._lookDir); + + return this._lookDir; + } + + /** + * Set the near clip plane of the camera + * + * @param {float} mValue the near clip plane distance + */ + set near(mValue) { + this._near = mValue; + this._updateMatrices(); + } + + /** + * Get the near clip plane of the camera + * + * @returns {float} near clip plane distance + */ + get near() { + return this._near; + } + + /** + * Set the far clip plane of the camera + * + * @param {float} mValue the far clip plane distance + */ + set far(mValue) { + this._far = mValue; + this._updateMatrices(); + } + + /** + * Get the far clip plane of the camera + * + * @returns {float} far clip plane distance + */ + get far() { + return this._far; + } +} + +export { Camera }; diff --git a/experiments/flame/src/alfrid/camera/CameraOrtho.js b/experiments/flame/src/alfrid/camera/CameraOrtho.js new file mode 100644 index 00000000..582f4fcc --- /dev/null +++ b/experiments/flame/src/alfrid/camera/CameraOrtho.js @@ -0,0 +1,58 @@ +import { Camera } from "./Camera"; +import { mat4 } from "gl-matrix"; + +class CameraOrtho extends Camera { + constructor(left, right, top, bottom, near = 0.1, far = 100) { + super(); + + this._left = 0; + this._right = 0; + this._top = 0; + this._bottom = 0; + + this.ortho(left, right, top, bottom, near, far); + } + + /** + * Update the projection matrix with orthogonal function + * + * @param {float} left the left boundary + * @param {float} right the right boundary + * @param {float} top the top boundary + * @param {float} bottom the bottom boundary + * @param {float} near the near clip plane distance + * @param {float} far the far clip plane distance + */ + ortho(left, right, top, bottom, near = 0.1, far = 100) { + this.left = left; + this.right = right; + this.top = top; + this.bottom = bottom; + mat4.ortho(this._mtxProj, left, right, bottom, top, near, far); + + // save state + this._left = left; + this._right = right; + this._top = top; + this._bottom = bottom; + this._near = near; + this._far = far; + } + + /** + * Update the matrices after resetting the near or far clip plane + * + */ + _updateMatrices() { + this.ortho( + this._left, + this._right, + this._top, + this._bottom, + this._near, + this._far + ); + } +} + +export { CameraOrtho }; diff --git a/experiments/flame/src/alfrid/camera/CameraPerspective.js b/experiments/flame/src/alfrid/camera/CameraPerspective.js new file mode 100644 index 00000000..01940a9a --- /dev/null +++ b/experiments/flame/src/alfrid/camera/CameraPerspective.js @@ -0,0 +1,88 @@ +import { Camera } from "./Camera"; +import { Ray } from "../math/Ray"; +import { vec3, mat4 } from "gl-matrix"; + +class CameraPerspective extends Camera { + constructor(mFov, mAspectRatio, mNear, mFar) { + super(); + this._fov = 0; + this._ratio = 0; + this.setPerspective(mFov, mAspectRatio, mNear, mFar); + } + + /** + * Update the projection matrix with perspective function + * + * @param {float} mFov the field of view + * @param {float} mAspectRatio the aspect ratio + * @param {float} mNear the near clip plane distance + * @param {float} mFar the far clip plane distance + */ + setPerspective(mFov, mAspectRatio, mNear, mFar) { + mat4.perspective(this._mtxProj, mFov, mAspectRatio, mNear, mFar); + this._near = mNear; + this._far = mFar; + this._fov = mFov; + this._ratio = mAspectRatio; + } + + /** + * Set the aspect ratio of the camera + * + * @param {float} mAspectRatio the aspect ratio + */ + setAspectRatio(mAspectRatio) { + this._ratio = mAspectRatio; + this._updateMatrices(); + } + + /** + * Generate a ray from the camera + * + * @param {vec3} mScreenPosition the screen space position + * @param {Ray} mRay the ray to overwrite + * @returns {Ray} the ray + */ + generateRay(mScreenPosition, mRay) { + const mInverseViewProj = mat4.create(); + const cameraDir = vec3.create(); + + const proj = this._mtxProj; + const view = this._mtxView; + + mat4.multiply(mInverseViewProj, proj, view); + mat4.invert(mInverseViewProj, mInverseViewProj); + + vec3.transformMat4(cameraDir, mScreenPosition, mInverseViewProj); + vec3.sub(cameraDir, cameraDir, this.position); + vec3.normalize(cameraDir, cameraDir); + + if (!mRay) { + mRay = new Ray(this.position, cameraDir); + } else { + mRay.origin = this.position; + mRay.direction = cameraDir; + } + + return mRay; + } + + /** + * Get the field of view (FOV) in degrees of the perspective camera. + * @returns {number} The field of view in degrees. + */ + get fov() { + const yScale = this._mtxProj[5]; // Element at second row, second column + return 2 * Math.atan(1 / yScale); + } + + /** + * Update the matrices after resetting the near or far clip plane + * + */ + _updateMatrices() { + this.setPerspective(this._fov, this._ratio, this._near, this._far); + } +} + +export { CameraPerspective }; diff --git a/experiments/flame/src/alfrid/core/FrameBuffer.js b/experiments/flame/src/alfrid/core/FrameBuffer.js new file mode 100644 index 00000000..0c0c418f --- /dev/null +++ b/experiments/flame/src/alfrid/core/FrameBuffer.js @@ -0,0 +1,243 @@ +import { GL } from "./GL"; +import { GLTexture } from "./GLTexture"; +import { WebGLNumber } from "../utils/WebGLNumber"; +import { WebGLConst } from "../utils/WebGLConst"; +import LogError, { Errors } from "../utils/LogError"; + +function FrameBuffer(mWidth, mHeight, mParameters = {}, mNumTargets = 1) { + let _GL; + let _frameBuffer; + const _width = mWidth; + const _height = mHeight; + const _parameters = mParameters; + const _numTargets = mNumTargets; + const _textures = []; + let _depthTexture; + + /** + * Bind the frame buffer + * + * @param {GL} mGL the GLTool instance + * @param {boolean} mAutoSetViewport automatically set the viewport to framebuffer's viewport + */ + this.bind = function(mGL, mAutoSetViewport = true) { + if (mGL !== undefined && _GL !== undefined && mGL !== _GL) { + LogError(Errors.FRAMEBUFFER_CONTEXT, _GL.id); + return; + } + + _GL = mGL || GL; + const { gl } = _GL; + + if (_numTargets > 1 && !_GL.multiRenderTargetSupport) { + LogError(Errors.DRAW_BUFFERS, _GL.id); + } + + if (!_frameBuffer) { + _initFrameBuffer(); + } + + if (mAutoSetViewport) { + _GL.viewport(0, 0, _width, _height); + } + gl.bindFramebuffer(gl.FRAMEBUFFER, _frameBuffer); + }; + + /** + * Unbind the frame buffer + * + * @param {boolean} mAutoSetViewport automatically set the viewport back to GL's viewport + */ + this.unbind = function(mAutoSetViewport = true) { + if (mAutoSetViewport) { + _GL.viewport(0, 0, _GL.width, _GL.height); + } + const { gl } = _GL; + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + + _textures.forEach((texture) => { + texture.generateMipmap(); + }); + }; + + /** + * Get the texture + * + * @param {number} mIndex the index of the texture + */ + this.getTexture = function(mIndex = 0) { + return _textures[mIndex]; + }; + + /** + * Destroy the framebuffer + * + */ + this.destroy = function() { + const { gl } = _GL; + + // delete all textures + _textures.forEach((t) => t.destroy()); + + // delete depth texture + _depthTexture.destroy(); + + // delete framebuffer + gl.deleteFramebuffer(_frameBuffer); + + _GL.frameBufferCount--; + }; + + /** + * Initialize the framebuffer + * + */ + const _initFrameBuffer = () => { + // create textures + _initTextures(); + + const { gl } = _GL; + _frameBuffer = gl.createFramebuffer(); + gl.bindFramebuffer(gl.FRAMEBUFFER, _frameBuffer); + _GL.frameBufferCount++; + + const target = _GL.webgl2 ? gl.DRAW_FRAMEBUFFER : gl.FRAMEBUFFER; + + const buffers = []; + for (let i = 0; i < _numTargets; i++) { + gl.framebufferTexture2D( + target, + gl.COLOR_ATTACHMENT0 + i, + gl.TEXTURE_2D, + _textures[i].texture, + 0 + ); + buffers.push(WebGLConst[`COLOR_ATTACHMENT${i}`]); + } + + // multi render targets + if (_GL.multiRenderTargetSupport) { + gl.drawBuffers(buffers); + } + + // depth texture + gl.framebufferTexture2D( + gl.FRAMEBUFFER, + gl.DEPTH_ATTACHMENT, + gl.TEXTURE_2D, + _depthTexture.texture, + 0 + ); + + // UNBIND + gl.bindTexture(gl.TEXTURE_2D, null); + gl.bindRenderbuffer(gl.RENDERBUFFER, null); + gl.bindFramebuffer(gl.FRAMEBUFFER, null); + }; + + /** + * Initialize the textures + * + */ + const _initTextures = () => { + for (let i = 0; i < _numTargets; i++) { + _textures.push(_createTexture()); + } + + const { gl } = _GL; + + const internalFormat = _GL.webgl2 + ? gl.DEPTH_COMPONENT16 + : gl.DEPTH_COMPONENT; + + // depth texture + _depthTexture = _createTexture( + internalFormat, + WebGLConst.UNSIGNED_INT, + WebGLConst.DEPTH_COMPONENT, + { + minFilter: WebGLConst.NEAREST, + magFilter: WebGLConst.NEAREST, + mipmap: false, + } + ); + }; + + /** + * Create texture + * + * @param {GLenum} mInternalformat GLenum value of the internal format + * @param {GLenum} mTexelType GLenum value of texel type + * @param {GLenum} mFormat GLenum value of the format + * @param {object} mParameters the texture parameters + */ + const _createTexture = ( + mInternalformat, + mTexelType, + mFormat, + mParameters = {} + ) => { + const parameters = Object.assign({}, _parameters); + + if (!mFormat) { + mFormat = mInternalformat; + } + + parameters.internalFormat = mInternalformat || WebGLConst.RGBA; + parameters.format = mFormat || WebGLConst.RGBA; + parameters.type = mTexelType || parameters.type; + // if ( + // mTexelType === WebGLConst.UNSIGNED_SHORT || + // mTexelType === WebGLConst.UNSIGNED_INT + // ) { + // // fix for depth textures + // parameters.type = mTexelType; + // } + Object.assign(parameters, mParameters); + + const texture = new GLTexture(null, parameters, _width, _height); + + // force to create glTexture + texture.createTexture(_GL); + return texture; + }; + + // getter & setters + + /** + * Get the first texture + * + * @returns {GLTexture} the texture + */ + this.__defineGetter__("texture", function() { + return _textures[0]; + }); + + /** + * Get the depth texture + * + * @returns {GLTexture} the depth texture + */ + this.__defineGetter__("depthTexture", function() { + return _depthTexture; + }); + + /** + * Get the width + * + * @returns {number} the width + */ + this.__defineGetter__("width", function() { + return _width; + }); + + /** + * Get the height + * + * @returns {number} the height + */ + this.__defineGetter__("height", function() { + return _height; + }); +} +export { FrameBuffer }; diff --git a/experiments/flame/src/alfrid/core/GL.js b/experiments/flame/src/alfrid/core/GL.js new file mode 100644 index 00000000..e60d2297 --- /dev/null +++ b/experiments/flame/src/alfrid/core/GL.js @@ -0,0 +1,412 @@ +import EventDispatcher from "events"; +import objectAssign from "object-assign"; +import { checkWebGL2, isMobile, getExtensions, equals } from "../utils"; +import exposeGLProperties from "../utils/exposeGLProperties"; +import defaultGLParameters from "./defaultGLParameters"; +import { mat4, mat3 } from "gl-matrix"; + +let _idTable = 0; + +function GLTool() { + // PRIVATE PROPERTIES + let _viewport = [0, 0, 0, 0]; + let _aspectRatio = 0; + let _shader; + let _camera; + let _width = 0; + let _height = 0; + let _webgl2 = checkWebGL2(); + let _isMobile = isMobile; + + // matrices + let _matrixStacks = []; + const _matrix = mat4.create(); + const _identityMatrix = mat4.create(); + const _modelMatrix = mat4.create(); + const _normalMatrix = mat3.create(); + const _inverselViewMatrix = mat4.create(); + const _inverseModelViewMatrix = mat3.create(); + + // PUBLIC PROPERTIES + this.id = `WebGLContext${_idTable++}`; + this.canvas; + this.gl; + + // EVENTS + this.CONTEXT_LOST = "contextLost"; + this.CONTEXT_RESTORED = "contextRestored"; + + // Resources + this.shaderCount = 0; + this.bufferCount = 0; + this.textureCount = 0; + this.frameBufferCount = 0; + + this.maxAnisotropy = 0; + + // Multi render targets + this.multiRenderTargetSupport = false; + this.maxMultiRenderTargets = 0; + + // PUBLIC METHODS + + /** + * Initialize the WebGL Context + * + * @param {undefined|Canvas|WebGLRenderingContext|WebGL2RenderingContext} mSource the source element + */ + this.init = function(mSource, mParameters = {}) { + const params = objectAssign({}, defaultGLParameters, mParameters); + + if (mSource === undefined) { + const canvas = document.createElement("canvas"); + this.init(canvas, params); + return; + } else if (mSource instanceof HTMLCanvasElement) { + this.canvas = mSource; + let target = _webgl2 ? "webgl2" : "webgl"; + if (mParameters.webgl1) { + // force using WebGL1 + target = "webgl"; + _webgl2 = false; + } + this.gl = mSource.getContext(target, params); + } else { + if ( + window.WebGL2RenderingContext && + mSource instanceof WebGL2RenderingContext + ) { + _webgl2 = true; + this.gl = mSource; + this.canvas = mSource.canvas; + } else if (mSource instanceof WebGLRenderingContext) { + _webgl2 = false; + this.gl = mSource; + this.canvas = mSource.canvas; + } else { + console.error( + "The source has to be one of the following : Canvas, WebGLRenderingContext or WebGL2RenderingContext" + ); + } + } + + // context event handling + this.canvas.addEventListener("webglcontextlost", onContextLost); + this.canvas.addEventListener("webglcontextrestored", onContextRestored); + + // Enable extensions + this.extensions = getExtensions(this); + + // Expose GL properties + exposeGLProperties(this); + + // Set size + this.setSize(this.canvas.width, this.canvas.height); + + // Set default blending to alpha blending + this.enable(this.BLEND); + this.enableAlphaBlending(); + + // Enable Depth Test & Cull face by default + this.enable(this.DEPTH_TEST); + this.enable(this.CULL_FACE); + + // Set the default culling + this.cullFace(GL.BACK); + }; + + /** + * Clear WebGL Context + * + * @param {number} r the red value + * @param {number} g the green value + * @param {number} b the blue value + * @param {number} a the alpha value + */ + this.clear = function(r = 0, g = 0, b = 0, a = 0) { + const { gl } = this; + gl.clearColor(r, g, b, a); + gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); + }; + + /** + * Set WebGL size + * + * @param {number} mWidth the width + * @param {number} mHeight the height + */ + this.setSize = function(mWidth, mHeight) { + _width = Math.floor(mWidth); + _height = Math.floor(mHeight); + this.canvas.width = _width; + this.canvas.height = _height; + _aspectRatio = _width / _height; + + this.viewport(0, 0, _width, _height); + }; + + /** + * Set WebGL Viewport + * + * @param {number} x the x value + * @param {number} y the y value + * @param {number} w the width + * @param {number} h the height + */ + this.viewport = function(x, y, w, h) { + if (!equals(_viewport, [x, y, w, h])) { + _viewport = [x, y, w, h]; + this.gl.viewport(x, y, w, h); + } + }; + + /** + * Set WebGL size + * + * @returns {vec4} the WebGL viewport + */ + this.getViewport = function() { + return _viewport; + }; + + /** + * get WebGL canvas aspect ratio + * + * @returns {number} the aspect ratio + */ + this.getAspectRatio = function() { + return _aspectRatio; + }; + + /** + * enable specific WebGL capabilities for this context. + * @param {GLenum} the GLenum value of the capability + */ + this.enable = function(mParameter) { + this.gl.enable(mParameter); + }; + + /** + * disable specific WebGL capabilities for this context. + * @param {GLenum} mParameter the GLenum value of the capability + */ + this.disable = function(mParameter) { + this.gl.disable(mParameter); + }; + + /** + * Set the culling of the WebGL Context + * @param {GLenum} mValue the GLenum value of the culling + */ + this.cullFace = function(mValue) { + this.gl.cullFace(mValue); + }; + + /** + * Set WebGL blending to Alpha blending + * + */ + this.enableAlphaBlending = function() { + const { gl } = this; + gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); + }; + + /** + * Set WebGL blending to Additive blending + * + */ + this.enableAdditiveBlending = function() { + const { gl } = this; + gl.blendFunc(gl.ONE, gl.ONE); + }; + + /** + * Set Camera + * + * @param {Camera} mCamera the camera going to be used + */ + this.setMatrices = function(mCamera) { + _camera = mCamera; + this.setModelMatrix(_identityMatrix); + }; + + /** + * Set the model matrix + * + * @param {mat4} mModelMatrix the model matrix + */ + this.setModelMatrix = function(mModelMatrix) { + mat4.copy(_modelMatrix, mModelMatrix); + if (_camera !== undefined) { + mat4.multiply(_matrix, _camera.viewMatrix, _modelMatrix); + mat3.fromMat4(_normalMatrix, _matrix); + mat3.invert(_normalMatrix, _normalMatrix); + mat3.transpose(_normalMatrix, _normalMatrix); + + mat3.fromMat4(_inverseModelViewMatrix, _matrix); + mat3.invert(_inverseModelViewMatrix, _inverseModelViewMatrix); + mat4.invert(_inverselViewMatrix, _camera.viewMatrix); + } + }; + + /** + * Set Active Shader + * + * @param {GLShader} mShader the shader going to be use + */ + this.useShader = function(mShader) { + _shader = mShader; + this.shaderProgram = mShader.shaderProgram; + this.gl.useProgram(this.shaderProgram); + }; + + /** + * Draw elements + * + * @param {Mesh|[Mesh]} mMesh the meshes that is going to be drawn + */ + this.draw = function(mMesh) { + if (mMesh.length) { + mMesh.forEach((m) => this.draw(m)); + return; + } + + // update the uniform values + _setupDefaultUniforms(); + _shader.updateUniforms(); + + mMesh.bind(this); + const { drawType } = mMesh; + const { gl } = this; + + if (mMesh.isInstanced) { + // DRAWING + gl.drawElementsInstanced( + mMesh.drawType, + mMesh.numItems, + gl.UNSIGNED_INT, + 0, + mMesh.numInstance + ); + } else { + if (drawType === gl.POINTS) { + gl.drawArrays(drawType, 0, mMesh.vertexSize); + } else { + gl.drawElements(drawType, mMesh.numItems, gl.UNSIGNED_INT, 0); + } + } + + mMesh.unbind(); + }; + + /** + * Get the current camera + * + * @returns {Camera} the camera that is using now + */ + this.getCamera = function() { + return _camera; + }; + + /** + * Destroy WebGL Context + * + */ + this.destroy = function(mRemove = true) { + this.gl.getExtension("WEBGL_lose_context").loseContext(); + if (mRemove && this.canvas.parentNode !== undefined) { + this.canvas.parentNode.removeChild(this.canvas); + } + }; + + // getter and setters + + /** + * Get the width of the WebGLContext + * + * @returns {number} the width + */ + this.__defineGetter__("width", function() { + return _width; + }); + + /** + * Get the height of the WebGLContext + * + * @returns {number} the height + */ + this.__defineGetter__("height", function() { + return _height; + }); + + /** + * Get if the context is WebGL 2 rendering context + * + * @returns {bool} if context is WebGL 2 + */ + this.__defineGetter__("webgl2", function() { + return _webgl2; + }); + + /** + * Get if it's running on a mobile browser + * + * @returns {bool} if is mobile browser + */ + this.__defineGetter__("isMobile", function() { + return _isMobile; + }); + + /** + * Get WebGL context's aspect ratio + * + * @returns {number} the aspect ratio + */ + this.__defineGetter__("aspectRatio", function() { + return _aspectRatio; + }); + + /** + * Setup the default matrices uniforms of the camera + * + */ + const _setupDefaultUniforms = () => { + if (_camera !== undefined) { + _shader.uniform("uProjectionMatrix", "mat4", _camera.projectionMatrix); + _shader.uniform("uViewMatrix", "mat4", _camera.viewMatrix); + _shader.uniform("uNormalMatrix", "mat3", _normalMatrix); + _shader.uniform( + "uModelViewMatrixInverse", + "mat3", + _inverseModelViewMatrix + ); + } + + _shader.uniform("uModelMatrix", "mat4", _modelMatrix); + }; + + /** + * Event Listener for context lost + * + */ + const onContextLost = () => { + this.emit(this.CONTEXT_LOST); + }; + + /** + * Event Listener for context restored + * + */ + const onContextRestored = () => { + this.emit(this.CONTEXT_RESTORED); + /* + At the point that setupWebGLStateAndResources is called the browser has reset all state to the default WebGL state and all previously allocated resources are invalid. So, you need to re-create textures, buffers, framebuffers, renderbuffers, shaders, programs, and setup your state (clearColor, blendFunc, depthFunc, etc...) + */ + }; +} + +GLTool.prototype = Object.assign(Object.create(EventDispatcher.prototype), { + constructor: GLTool, +}); +const GL = new GLTool(); +export { GL, GLTool }; diff --git a/experiments/flame/src/alfrid/core/GLCubeTexture.js b/experiments/flame/src/alfrid/core/GLCubeTexture.js new file mode 100644 index 00000000..3723a718 --- /dev/null +++ b/experiments/flame/src/alfrid/core/GLCubeTexture.js @@ -0,0 +1,240 @@ +import { GL } from "./GL"; +import { + getTextureParameters, + isSourceHtmlElement, + webgl2TextureCheck, + isPowerOfTwo, +} from "../utils/TextureUtils"; +import { WebGLNumber } from "../utils/WebGLNumber"; +import { WebGLConst } from "../utils/WebGLConst"; +import LogError, { Errors } from "../utils/LogError"; + +class GLCubeTexture { + constructor(mSource, mParam = {}, mWidth = 0, mHeight = 0) { + this._source = mSource; + this._isHtmlElement = isSourceHtmlElement(this._source[0]); + this._getDimension(mSource, mWidth, mHeight); + this._params = getTextureParameters(mParam, this._width, this._height); + this._checkMipmap(); + } + + /** + * Bind the texture + * + * @param {number} mIndex the binding target + * @param {GL} mGL the GLTool instance + */ + bind(mIndex, mGL) { + this.createTexture(mGL); + + const { gl } = this.GL; + gl.activeTexture(gl.TEXTURE0 + mIndex); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this._texture); + } + + /** + * Unbind the texture + * + */ + unbind() { + this.GL.gl.bindTexture(gl.TEXTURE_CUBE_MAP, null); + } + + /** + * Create the texture + * + */ + createTexture(mGL) { + if (mGL !== undefined && this.GL !== undefined && mGL !== this.GL) { + LogError(Errors.CUBE_TEXTURE_CONTEXT, this.GL.id); + return; + } + + this.GL = mGL || GL; + if (!this._texture) { + webgl2TextureCheck(this.GL, this._params); + this._uploadTexture(); + } + } + + /** + * Display the properties of the texture + * + */ + showProperties() { + console.log("Dimension :", this._width, this._height); + for (const s in this._params) { + console.log(s, WebGLNumber[this._params[s]] || this._params[s]); + } + } + + /** + * Upload and create the texture + * + */ + _uploadTexture() { + const { gl } = this.GL; + + const targets = [ + gl.TEXTURE_CUBE_MAP_POSITIVE_X, + gl.TEXTURE_CUBE_MAP_NEGATIVE_X, + gl.TEXTURE_CUBE_MAP_POSITIVE_Y, + gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, + gl.TEXTURE_CUBE_MAP_POSITIVE_Z, + gl.TEXTURE_CUBE_MAP_NEGATIVE_Z, + ]; + + let numLevels = 1; + let index = 0; + numLevels = this._source.length / 6; + this.numLevels = numLevels; + + this._texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_CUBE_MAP, this._texture); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false); + + let w = this._width; + let h = this._height; + + for (let level = 0; level < numLevels; level++) { + targets.forEach((target, i) => { + index = i * numLevels + level; + + if (this._isHtmlElement && !this.GL.webgl2) { + // cmft irradiance dds missing data + if (this._source[index].length > 0) { + gl.texImage2D( + target, + level, + this._params.internalFormat, + this._params.format, + this._params.type, + this._source[index] + ); + } + } else { + if (this._source[index].length > 0) { + gl.texImage2D( + target, + level, + this._params.internalFormat, + w, + h, + 0, + this._params.format, + this._params.type, + this._source[index] + ); + } + } + }); + + w = w >> 1; + h = h >> 1; + } + + if (this._generateMipmap) { + gl.generateMipmap(gl.TEXTURE_CUBE_MAP); + } + + // texture parameters + gl.texParameteri( + gl.TEXTURE_CUBE_MAP, + gl.TEXTURE_MAG_FILTER, + this._params.magFilter + ); + gl.texParameteri( + gl.TEXTURE_CUBE_MAP, + gl.TEXTURE_MIN_FILTER, + this._params.minFilter + ); + gl.texParameteri( + gl.TEXTURE_CUBE_MAP, + gl.TEXTURE_WRAP_S, + this._params.wrapS + ); + gl.texParameteri( + gl.TEXTURE_CUBE_MAP, + gl.TEXTURE_WRAP_T, + this._params.wrapT + ); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this._premultiplyAlpha); + + // unbind the texture + gl.bindTexture(gl.TEXTURE_CUBE_MAP, null); + } + + /** + * Check if the texture could have mipmap + * + */ + _checkMipmap() { + this._generateMipmap = this._params.mipmap; + + if (!(isPowerOfTwo(this._width) && isPowerOfTwo(this._height))) { + this._generateMipmap = false; + } + + const minFilter = WebGLNumber[this._params.minFilter]; + if (minFilter.indexOf("MIPMAP") === -1) { + this._generateMipmap = false; + } + } + + /** + * Getting the dimension of the source + * + */ + _getDimension(mSource, mWidth, mHeight) { + if (mSource) { + // for html image / video element + this._width = mSource[0].width || mSource[0].videoWidth; + this._height = mSource[0].height || mSource[0].videoWidth; + + // for manual width / height settings + this._width = this._width || mWidth; + this._height = this._height || mHeight; + + // auto detect ( data array) ? not sure is good idea ? + // todo : check HDR + if (!this._width || !this._height) { + this._width = this._height = Math.sqrt(mSource[0].length / 4); + // console.log('Auto detect, data dimension : ', this._width, this._height); + } + } else { + this._width = mWidth; + this._height = mHeight; + } + } + + // getter & setters + + /** + * Get the glTexture + * + * @returns {glTexture} the webgl texture + */ + get texture() { + return this._texture; + } + + /** + * Get the width of the texture + * + * @returns {number} the width of the texture + */ + get width() { + return this._width; + } + + /** + * Get the height of the texture + * + * @returns {number} the height of the texture + */ + get height() { + return this._height; + } +} + +export { GLCubeTexture }; diff --git a/experiments/flame/src/alfrid/core/GLShader.js b/experiments/flame/src/alfrid/core/GLShader.js new file mode 100644 index 00000000..65dfdd7e --- /dev/null +++ b/experiments/flame/src/alfrid/core/GLShader.js @@ -0,0 +1,168 @@ +import { GL } from "./GL"; +import { + addLineNumbers, + uniformMapping, + getUniformType, + cloneValue, +} from "../utils/ShaderUtils"; +import { equals } from "../utils/"; +import vsDefault from "../shader/glsl/basic.vert"; +import fsDefault from "../shader/glsl/basic.frag"; + +function GLShader(mVertexShader, mFragmentShader) { + this.vertexShader = mVertexShader || vsDefault; + this.fragmentShader = mFragmentShader || fsDefault; + this.shaderProgram; + + let _GL; + let _uniformCache = {}; + + /** + * Bind the current shader + * + * @param {GL} mGL the GLTool instance + */ + this.bind = function (mGL) { + if (mGL !== undefined && _GL !== undefined && mGL !== _GL) { + console.error( + "this shader has been bind to a different WebGL Rendering Context", + _GL.id + ); + return; + } + + _GL = mGL || GL; + if (!this.shaderProgram) { + const vsShader = createShaderProgram(this.vertexShader, true); + const fsShader = createShaderProgram(this.fragmentShader, false); + attachShaderProgram(vsShader, fsShader); + } + + _GL.useShader(this); + }; + + /** + * Set the uniform of the shader + * + * @param {string|object} mName the name of the uniform + * @param {string} mType the type of the uniform + * @param {number|[numbers]} mValue the value of the uniform + */ + this.uniform = function (mName, mType, mValue) { + let value; + let type; + if (mValue === undefined) { + type = getUniformType(mType); + value = mType; + } else { + type = mType; + value = mValue; + } + const uniformType = uniformMapping[type]; + + if (!_uniformCache[mName]) { + _uniformCache[mName] = { + type, + uniformType, + value: cloneValue(value), + changed: true, + }; + } else { + const oUniform = _uniformCache[mName]; + if (!equals(oUniform.value, value)) { + oUniform.value = cloneValue(value); + oUniform.changed = true; + } + } + return this; + }; + + /** + * Destroy the current shader + * + */ + this.updateUniforms = function () { + if (!_GL) { + console.warn( + "No WebGL Context has been set yet, please call shader.bind() first" + ); + return; + } + const { gl } = _GL; + + for (let s in _uniformCache) { + const oUniform = _uniformCache[s]; + if (oUniform.changed) { + const name = s; + + if (!oUniform.uniformLoc) { + oUniform.uniformLoc = gl.getUniformLocation(this.shaderProgram, name); + } + const { uniformLoc, uniformType, value } = oUniform; + if (uniformLoc !== null) { + if (uniformType.indexOf("Matrix") === -1) { + gl[uniformType](uniformLoc, value); + } else { + gl[uniformType](uniformLoc, false, value); + } + } + + oUniform.changed = false; + } + } + }; + + /** + * Destroy the current shader + * + */ + this.destroy = function () { + const { gl } = _GL; + gl.deleteProgram(this.shaderProgram); + _GL.shaderCount--; + }; + + /** + * Create & Compile shader + * + * @param {string} mShaderStr the shader program text + * @param {boolean} isVertexShader is vertex shader or not + */ + const createShaderProgram = (mShaderStr, isVertexShader) => { + const { gl } = _GL; + const shaderType = isVertexShader ? _GL.VERTEX_SHADER : _GL.FRAGMENT_SHADER; + const shader = gl.createShader(shaderType); + + gl.shaderSource(shader, mShaderStr); + gl.compileShader(shader); + + if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.warn("Error in Shader : ", gl.getShaderInfoLog(shader)); + console.log(addLineNumbers(mShaderStr)); + return null; + } + + return shader; + }; + + /** + * Attach shader + * + * @param {glShader} mVertexShader the vertex shader + * @param {glShader} mFragmentShader the fragment shader + */ + const attachShaderProgram = (mVertexShader, mFragmentShader) => { + const { gl } = _GL; + + this.shaderProgram = gl.createProgram(); + gl.attachShader(this.shaderProgram, mVertexShader); + gl.attachShader(this.shaderProgram, mFragmentShader); + gl.deleteShader(mVertexShader); + gl.deleteShader(mFragmentShader); + + gl.linkProgram(this.shaderProgram); + _GL.shaderCount++; + }; +} + +export { GLShader }; diff --git a/experiments/flame/src/alfrid/core/GLTexture.js b/experiments/flame/src/alfrid/core/GLTexture.js new file mode 100644 index 00000000..517b426d --- /dev/null +++ b/experiments/flame/src/alfrid/core/GLTexture.js @@ -0,0 +1,393 @@ +import { GL } from "./GL"; +import { + isPowerOfTwo, + getTextureParameters, + isSourceHtmlElement, + checkSource, + webgl2TextureCheck, + // webgl2FilterCheck, +} from "../utils/TextureUtils"; +import { WebGLNumber } from "../utils/WebGLNumber"; +import { BitSwitch } from "../utils/BitSwitch"; +import LogError, { Errors } from "../utils/LogError"; + +const MIN_FILTER = 0; +const MAG_FILTER = 1; +const WRAP_S = 2; +const WRAP_T = 3; + +class GLTexture { + constructor(mSource, mParam = {}, mWidth = 0, mHeight = 0) { + this._fromWebGLTexture = false; + if (mSource instanceof WebGLTexture) { + this._texture = mSource; + this._fromWebGLTexture = true; + } else { + this._source = mSource; + this._isHtmlElement = isSourceHtmlElement(this._source); + if (!this._isHtmlElement && mSource) { + if (!checkSource(mSource, mParam)) { + return; + } + } + + this._getDimension(mSource, mWidth, mHeight); + this._params = getTextureParameters(mParam, this._width, this._height); + this._checkMipmap(); + } + + // states + this._parametersState = new BitSwitch(0); + } + + /** + * Bind the texture + * + * @param {number} mIndex the binding target + * @param {GL} mGL the GLTool instance + */ + bind(mIndex, mGL) { + if (mGL !== undefined && this.GL !== undefined && mGL !== this.GL) { + LogError(Errors.TEXTURE_CONTEXT, this.GL.id); + return; + } + + this.GL = mGL || GL; + const { gl } = this.GL; + + if (!this._fromWebGLTexture) { + this.createTexture(this.GL); + } + + gl.activeTexture(gl.TEXTURE0 + mIndex); + gl.bindTexture(gl.TEXTURE_2D, this._texture); + + this._checkParameters(); + } + + /** + * Create the texture + * + */ + createTexture(mGL) { + if (mGL !== undefined && this.GL !== undefined && mGL !== this.GL) { + LogError(Errors.TEXTURE_CONTEXT, this.GL.id); + return; + } + + this.GL = mGL || GL; + if (!this._texture) { + webgl2TextureCheck(this.GL, this._params); + this._uploadTexture(); + } + } + + /** + * Update the texture + * + * @param {object} mSource the texture source + */ + updateTexture(mSource, mGL) { + this.GL = mGL || GL; + this._source = mSource; + this._uploadTexture(); + } + + /** + * Generate the mipmap of the texture + * + */ + generateMipmap() { + if (!this._generateMipmap) { + return; + } + const { gl } = this.GL; + gl.bindTexture(gl.TEXTURE_2D, this._texture); + gl.generateMipmap(gl.TEXTURE_2D); + } + + /** + * Destroy the texture + * + */ + destroy() { + const { gl } = this.GL; + gl.deleteTexture(this._texture); + this.GL.textureCount--; + } + + /** + * Display the properties of the texture + * + */ + showProperties() { + console.log("Dimension :", this._width, this._height); + for (const s in this._params) { + console.log(s, WebGLNumber[this._params[s]] || this._params[s]); + } + } + + /** + * Upload and create the texture + * + */ + _uploadTexture() { + const { gl } = this.GL; + + if (!this._texture) { + this._texture = gl.createTexture(); + this.GL.textureCount++; + } + gl.bindTexture(gl.TEXTURE_2D, this._texture); + gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); + + if (this._isHtmlElement && !this.GL.webgl2) { + gl.texImage2D( + gl.TEXTURE_2D, + 0, + this._params.internalFormat, + this._params.format, + this._params.type, + this._source + ); + } else { + gl.texImage2D( + gl.TEXTURE_2D, + 0, + this._params.internalFormat, + this._width, + this._height, + 0, + this._params.format, + this._params.type, + this._source + ); + } + + // texture parameters + gl.texParameteri( + gl.TEXTURE_2D, + gl.TEXTURE_MAG_FILTER, + this._params.magFilter + ); + gl.texParameteri( + gl.TEXTURE_2D, + gl.TEXTURE_MIN_FILTER, + this._params.minFilter + ); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._params.wrapS); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._params.wrapT); + gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, this._premultiplyAlpha); + + // const ext = this.GL.extensions["EXT_texture_filter_anisotropic"]; + // if (ext) { + // const level = this._params.anisotropy || this.GL.maxAnisotropy; + // gl.texParameterf(gl.TEXTURE_2D, ext.TEXTURE_MAX_ANISOTROPY_EXT, level); + // } + + if (this._generateMipmap) { + gl.generateMipmap(gl.TEXTURE_2D); + } + + // gl.bindTexture(gl.TEXTURE_2D, null); + } + + /** + * Check if the paramets has changed + * + */ + _checkParameters() { + const { gl } = this.GL; + if (this._parametersState.value > 0) { + if (this._parametersState.get(MIN_FILTER)) { + gl.texParameteri( + gl.TEXTURE_2D, + gl.TEXTURE_MIN_FILTER, + this._params.minFilter + ); + } else if (this._parametersState.get(MAG_FILTER)) { + gl.texParameteri( + gl.TEXTURE_2D, + gl.TEXTURE_MAG_FILTER, + this._params.magFilter + ); + } else if (this._parametersState.get(WRAP_S)) { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, this._params.wrapS); + } else { + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, this._params.wrapT); + } + } + this._parametersState.reset(0); + } + + /** + * Getting the dimension of the source + * + */ + _getDimension(mSource, mWidth, mHeight) { + if (mSource) { + // for html image / video element + this._width = mSource.width || mSource.videoWidth; + this._height = mSource.height || mSource.videoWidth; + + // for manual width / height settings + this._width = this._width || mWidth; + this._height = this._height || mHeight; + + // auto detect ( data array) ? not sure is good idea ? + // todo : check HDR + if (!this._width || !this._height) { + this._width = this._height = Math.sqrt(mSource.length / 4); + // console.log('Auto detect, data dimension : ', this._width, this._height); + } + } else { + this._width = mWidth; + this._height = mHeight; + } + } + + /** + * Check if the texture could have mipmap + * + */ + _checkMipmap() { + this._generateMipmap = this._params.mipmap; + + if (!(isPowerOfTwo(this._width) && isPowerOfTwo(this._height))) { + this._generateMipmap = false; + } + + const minFilter = WebGLNumber[this._params.minFilter]; + if (minFilter.indexOf("MIPMAP") === -1) { + this._generateMipmap = false; + } + } + + // getter & setters + + /** + * Get the glTexture + * + * @returns {glTexture} the webgl texture + */ + get texture() { + return this._texture; + } + + /** + * Set the min filter of the texture + * + * @param {GLenum} mValue GLenum value of the min filter + */ + set minFilter(mValue) { + this._params.minFilter = mValue; + this._parametersState.set(MIN_FILTER, 1); + // webgl2FilterCheck(this._params); + } + + /** + * Get the min filter of the texture + * + * @returns {GLenum} the min filter value + */ + get minFilter() { + return this._params.minFilter; + } + + /** + * Set the mag filter of the texture + * + * @param {GLenum} mValue GLenum value of the mag filter + */ + set magFilter(mValue) { + this._params.magFilter = mValue; + this._parametersState.set(MAG_FILTER, 1); + // webgl2FilterCheck(this._params); + } + + /** + * Get the mag filter of the texture + * + * @returns {GLenum} the mag filter value + */ + get magFilter() { + return this._params.magFilter; + } + + /** + * Set the s-coordinate of the wrapping + * + * @param {GLenum} mValue GLenum value of the wrapping + */ + set wrapS(mValue) { + this._params.wrapS = mValue; + this._parametersState.set(WRAP_S, 1); + } + + /** + * Get the s-coordinate of the wrapping + * + * @returns {GLenum} the value of s-coordinate of the wrapping + */ + get wrapS() { + return this._params.wrapS; + } + + /** + * Set the t-coordinate of the wrapping + * + * @param {GLenum} mValue GLenum value of the wrapping + */ + set wrapT(mValue) { + this._params.wrapT = mValue; + this._parametersState.set(WRAP_T, 1); + } + + /** + * Get the t-coordinate of the wrapping + * + * @returns {GLenum} the value of t-coordinate of the wrapping + */ + get wrapT() { + return this._params.wrapT; + } + + /** + * Get the width of the texture + * + * @returns {number} the width of the texture + */ + get width() { + return this._width; + } + + /** + * Get the height of the texture + * + * @returns {number} the height of the texture + */ + get height() { + return this._height; + } + + /** + * Get the WebGL texture + * + * @returns {object} the webgl texture + */ + get glTexture() { + return this._texture; + } +} + +export { GLTexture }; + +export const getColorTexture = (mColor) => { + const _colors = mColor.map((v) => Math.floor(v * 255)); + const canvas = document.createElement("canvas"); + canvas.width = canvas.height = 4; + const ctx = canvas.getContext("2d"); + ctx.fillStyle = `rgba(${_colors[0]}, ${_colors[1]}, ${_colors[2]}, 1)`; + ctx.fillRect(0, 0, canvas.width, canvas.height); + return new GLTexture(canvas); +}; diff --git a/experiments/flame/src/alfrid/core/Mesh.js b/experiments/flame/src/alfrid/core/Mesh.js new file mode 100644 index 00000000..79dce039 --- /dev/null +++ b/experiments/flame/src/alfrid/core/Mesh.js @@ -0,0 +1,421 @@ +import { WebGLConst } from "../utils/WebGLConst"; +import { flatten, getBuffer, getAttribLoc } from "../utils/BufferUtils"; + +function Mesh(mDrawType = WebGLConst.TRIANGLES) { + this.drawType = mDrawType; + + // PUBLIC PROPERTIES + this.numItems = 0; + + // PRIVATE PROPERTIES + let _attributes = []; + let _bufferChanged = []; + let _faces = []; + let _hasIndexBufferChanged = true; + let _isInstanced = false; + let _numInstance = 0; + + let _vao; + let _usage; + let _indices; + let _indexBuffer; + let _GL; + + /** + * add or update an attribute + * + * @param {array} mData the data of the attribute, array of array + * @param {string} mName the name of the attribute + * @param {number} mItemSize the size of each element + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + * @param {GLenum} isInstanced if the attribute is an instanced attrbute + */ + this.bufferData = function( + mData, + mName, + mItemSize, + mUsage = WebGLConst.STATIC_DRAW, + isInstanced = false + ) { + let bufferData; + let orgData = []; + if (typeof mData[0] === "number") { + bufferData = mData; + if (mItemSize === undefined) { + console.error("Missing element size for flatten data :", mName); + return this; + } + + for (let i = 0; i < bufferData.length; i += mItemSize) { + const a = []; + for (let j = 0; j < mItemSize; j++) { + a.push(bufferData[i + j]); + } + orgData.push(a); + } + } else { + orgData = mData; + bufferData = flatten(mData); + } + + const itemSize = mItemSize === undefined ? mData[0].length : mItemSize; + return bufferFlattenData( + bufferData, + mData, + mName, + itemSize, + mUsage, + isInstanced + ); + }; + + /** + * Add an instanced attribute + * + * @param {array} mData the data + * @param {GLenum} mName the name of the attribute + */ + this.bufferInstance = function(mData, mName) { + // Assumption that mData is array of array + // worth checking for full proof ? + const itemSize = mData[0].length; + _numInstance = mData.length; + + return this.bufferData( + mData, + mName, + itemSize, + WebGLConst.STATIC_DRAW, + true + ); + }; + + /** + * Add or Update the vertex position attribute + * + * @param {array} mData the data of the vertex positions + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + */ + this.bufferVertex = function(mData, mUsage = WebGLConst.STATIC_DRAW) { + return this.bufferData(mData, "aVertexPosition", 3, mUsage); + }; + + /** + * Add or Update the texture coordinate attribute + * + * @param {array} mData the data of the texture coordinate + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + */ + this.bufferTexCoord = function(mData, mUsage = WebGLConst.STATIC_DRAW) { + return this.bufferData(mData, "aTextureCoord", 2, mUsage); + }; + + /** + * Add or Update the vertex normal attribute + * + * @param {array} mData the data of the normal + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + */ + this.bufferNormal = function(mData, mUsage = WebGLConst.STATIC_DRAW) { + return this.bufferData(mData, "aNormal", 3, mUsage); + }; + + /** + * Add or Update the index buffer + * + * @param {array} mData the data of the index buffer + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + */ + this.bufferIndex = function(mData, mUsage = WebGLConst.STATIC_DRAW) { + _usage = mUsage; + _indices = new Uint32Array(mData); + this.numItems = _indices.length; + _hasIndexBufferChanged = true; + return this; + }; + + /** + * Bind the buffers of current Mesh + * + * @param {GL} mGL the GLTool instance + */ + this.bind = function(mGL) { + if (mGL !== undefined && _GL !== undefined && mGL !== _GL) { + console.error( + "this mesh has been bind to a different WebGL Rendering Context" + ); + return; + } + + _GL = mGL || GL; + const { gl } = _GL; + generateBuffers(); + gl.bindVertexArray(_vao); + + this.vertexSize = this.getSource("aVertexPosition").length; + }; + + this.unbind = function() {}; + + /** + * Find an attribute by name + * + * @param {string} mName the name of the attribute + * @returns {object} the attribute object + */ + this.getAttribute = function(mName) { + return _attributes.find((a) => a.name === mName); + }; + + /** + * get all attribtues + * + * @returns {array} the array of attributes + */ + this.getAttributes = function() { + return _attributes; + }; + + /** + * Find data source by name + * + * @param {string} mName the name of the attribute + * @returns {[array]} the source data of the attribute ( array of arrays ) + */ + this.getSource = function(mName) { + const attr = this.getAttribute(mName); + return attr ? attr.source : []; + }; + + /** + * Compute the face data of the mesh + * + */ + this.generateFaces = function() { + _faces = []; + let ia, ib, ic; + let a, b, c; + const { vertices } = this; + + for (let i = 0; i < _indices.length; i += 3) { + ia = _indices[i]; + ib = _indices[i + 1]; + ic = _indices[i + 2]; + + a = vertices[ia]; + b = vertices[ib]; + c = vertices[ic]; + + const face = { + indices: [ia, ib, ic], + vertices: [a, b, c], + }; + + _faces.push(face); + } + }; + + /** + * Destroy all buffers + * + */ + this.destroy = function() { + const { gl } = _GL; + _attributes.forEach((attr) => { + gl.deleteBuffer(attr.buffer); + attr.source = []; + attr.dataArray = []; + _GL.bufferCount--; + }); + if (_indexBuffer) { + gl.deleteBuffer(_indexBuffer); + _GL.bufferCount--; + } + gl.deleteVertexArray(_vao); + + // resetting + _attributes = []; + _indices = []; + _bufferChanged = []; + // _enabledVertexAttribute = []; + }; + + // getters and setters + /** + * Get the vertices data + * + * @returns {array} the vetices data + */ + this.__defineGetter__("vertices", function() { + return this.getSource("aVertexPosition"); + }); + + /** + * Get the texture coordinate data + * + * @returns {array} the texture coordinate data + */ + this.__defineGetter__("coords", function() { + return this.getSource("aTextureCoord"); + }); + + /** + * Get the normal data + * + * @returns {array} the normal data + */ + this.__defineGetter__("normal", function() { + return this.getSource("aNormal"); + }); + + /** + * Get the indices data + * + * @returns {array} the indices data + */ + this.__defineGetter__("indices", function() { + return _indices; + }); + + /** + * Get the face data + * + * @returns {array} the face data + */ + this.__defineGetter__("faces", function() { + return _faces; + }); + + /** + * Get if the mesh has instance rendering + * + * @returns {bool} if has instances + */ + this.__defineGetter__("isInstanced", function() { + return _isInstanced; + }); + + /** + * Get the number of instances + * + * @returns {number} if has instances + */ + this.__defineGetter__("numInstance", function() { + return _numInstance; + }); + + /** + * add or update an attribute + * + * @param {array} mData the data of the attribute + * @param {string} mName the name of the attribute + * @param {number} mItemSize the size of each element + * @param {GLenum} mUsage the usage of the attribute, static or dynamic + * @param {GLenum} isInstanced if the attribute is an instanced attrbute + */ + const bufferFlattenData = ( + mData, + mDataOrg, + mName, + mItemSize, + mUsage = WebGLConst.STATIC_DRAW, + isInstanced = false + ) => { + const usage = mUsage; + _isInstanced = isInstanced || _isInstanced; + + const dataArray = new Float32Array(mData); + const attribute = this.getAttribute(mName); + + if (attribute) { + // attribute existed, replace with new data + attribute.itemSize = mItemSize; + attribute.dataArray = dataArray; + attribute.source = mDataOrg; + } else { + // attribute not exist yet, create new attribute object + _attributes.push({ + name: mName, + source: mDataOrg, + itemSize: mItemSize, + usage, + dataArray, + isInstanced, + }); + } + + _bufferChanged.push(mName); + return this; + }; + + /** + * Generate new buffers + * + */ + const generateBuffers = () => { + const { shaderProgram, gl } = _GL; + if (_bufferChanged.length == 0) { + return; + } + + if (!_vao) { + _vao = gl.createVertexArray(); + } + + gl.bindVertexArray(_vao); + + // UPDATE BUFFERS + _attributes.forEach((attrObj) => { + if (_bufferChanged.indexOf(attrObj.name) !== -1) { + const buffer = getBuffer(attrObj, _GL); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, attrObj.dataArray, attrObj.usage); + + const attrPosition = getAttribLoc(gl, shaderProgram, attrObj.name); + if (attrPosition >= 0) { + gl.enableVertexAttribArray(attrPosition); + gl.vertexAttribPointer( + attrPosition, + attrObj.itemSize, + gl.FLOAT, + false, + 0, + 0 + ); + } + attrObj.attrPosition = attrPosition; + + if (attrObj.isInstanced) { + gl.vertexAttribDivisor(attrPosition, 1); + } + } + }); + + // check index buffer + _updateIndexBuffer(); + + // UNBIND VAO + gl.bindVertexArray(null); + + _hasIndexBufferChanged = false; + _bufferChanged = []; + }; + + /** + * Update Index Buffer + * + */ + const _updateIndexBuffer = () => { + const { gl } = _GL; + if (_hasIndexBufferChanged) { + if (!_indexBuffer) { + _indexBuffer = gl.createBuffer(); + _GL.bufferCount++; + } + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, _indexBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, _indices, _usage); + } + }; +} + +export { Mesh }; diff --git a/experiments/flame/src/alfrid/core/defaultGLParameters.js b/experiments/flame/src/alfrid/core/defaultGLParameters.js new file mode 100644 index 00000000..a55e16fe --- /dev/null +++ b/experiments/flame/src/alfrid/core/defaultGLParameters.js @@ -0,0 +1,5 @@ +export default { + alpha: false, + depth: true, + premultipliedAlpha: false, +}; diff --git a/experiments/flame/src/alfrid/helper/Draw.js b/experiments/flame/src/alfrid/helper/Draw.js new file mode 100644 index 00000000..39043bd7 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/Draw.js @@ -0,0 +1,189 @@ +import { GL } from "../core/GL"; +import { Mesh } from "../core/Mesh"; +import { GLShader } from "../core/GLShader"; +import { getUniformType } from "../utils/ShaderUtils"; + +class Draw { + constructor(mGL) { + this._GL = mGL || GL; + this._uniforms = {}; + this._uniformTextures = []; + this._fbo; + + this._clearColor = { r: 0, g: 0, b: 0, a: 0 }; + + return this; + } + + setClearColor(r = 0, g = 0, b = 0, a = 0) { + this._clearColor.r = r; + this._clearColor.g = g; + this._clearColor.b = b; + this._clearColor.a = a; + return this; + } + + useProgram(vs, fs) { + if (vs instanceof GLShader) { + this._shader = vs; + } else { + this._shader = new GLShader(vs, fs); + } + + return this; + } + + setMesh(mMesh) { + this._mesh = mMesh; + return this; + } + + createMesh(mType) { + this._mesh = new Mesh(mType); + return this; + } + + bufferVertex(mArrayVertices) { + if (!this._mesh) { + this._mesh = new Mesh(); + } + this._mesh.bufferVertex(mArrayVertices); + return this; + } + + bufferTexCoord(mArrayTexCoords) { + if (!this._mesh) { + this._mesh = new Mesh(); + } + this._mesh.bufferTexCoord(mArrayTexCoords); + return this; + } + + bufferNormal(mArrayNormals) { + if (!this._mesh) { + this._mesh = new Mesh(); + } + this._mesh.bufferNormal(mArrayNormals); + return this; + } + + bufferIndex(mIndices) { + if (!this._mesh) { + this._mesh = new Mesh(); + } + this._mesh.bufferIndex(mIndices); + return this; + } + + bufferInstance(mData, mName) { + if (!this._mesh) { + console.warn("Need to create mesh first"); + return this; + } + + this._mesh.bufferInstance(mData, mName); + + return this; + } + + bufferData(mArrayData, mName) { + if (!this._mesh) { + this._mesh = new Mesh(); + } + this._mesh.bufferData(mArrayData, mName); + return this; + } + + uniform(mName, mType, mValue) { + const name = mName; + let value; + let type; + if (mValue === undefined) { + type = getUniformType(mType); + value = mType; + } else { + type = mType; + value = mValue; + } + + this._uniforms[name] = { + type, + value, + }; + + return this; + } + + uniformTexture(name, texture, index) { + return this.bindTexture(name, texture, index); + } + + bindTexture(name, texture, index) { + if (index !== undefined) { + this._uniformTextures[index] = { + name, + texture, + }; + } else { + this._uniformTextures.push({ + name, + texture, + }); + } + + return this; + } + + bindFrameBuffer(fbo) { + this._fbo = fbo; + return this; + } + + draw() { + if (!this._shader) { + console.warn("No GLShader assigned for draw call"); + return; + } + if (!this._mesh) { + console.warn("No Mesh assigned for draw call"); + return; + } + + if (this._fbo) { + const { r, g, b, a } = this._clearColor; + this._fbo.bind(this._GL); + this._GL.clear(r, g, b, a); + } + + this._shader.bind(this._GL); + for (const s in this._uniforms) { + const o = this._uniforms[s]; + this._shader.uniform(s, o.type, o.value); + } + + this._uniformTextures.forEach((o, i) => { + if (o !== undefined) { + this._shader.uniform(o.name, "int", i); + o.texture.bind(i, this._GL); + } + }); + + this._GL.draw(this._mesh); + + if (this._fbo) { + this._fbo.unbind(); + } + + return this; + } + + get shader() { + return this._shader; + } + + get framebuffer() { + return this._fbo; + } +} + +export { Draw }; diff --git a/experiments/flame/src/alfrid/helper/DrawAxis.js b/experiments/flame/src/alfrid/helper/DrawAxis.js new file mode 100644 index 00000000..2c134417 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawAxis.js @@ -0,0 +1,44 @@ +import { Draw } from "./Draw"; +import vs from "../shader/glsl/axis.vert"; +import fs from "../shader/glsl/axis.frag"; + +class DrawAxis extends Draw { + constructor(mGL) { + super(mGL); + + const GL = this._GL; + const r = 1000; + const positions = [ + [-r, 0, 0], + [r, 0, 0], + [0, -r, 0], + [0, r, 0], + [0, 0, -r], + [0, 0, r], + ]; + const colors = [ + [1, 0, 0], + [1, 0, 0], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [0, 0, 1], + ]; + + const indices = [0, 1, 2, 3, 4, 5]; + this.createMesh(GL.LINES) + .bufferVertex(positions) + .bufferData(colors, "aColor") + .bufferIndex(indices) + .useProgram(vs, fs); + + this.opacity = 0.75; + } + + draw() { + this.uniform("uOpacity", this.opacity); + super.draw(); + } +} + +export { DrawAxis }; diff --git a/experiments/flame/src/alfrid/helper/DrawBall.js b/experiments/flame/src/alfrid/helper/DrawBall.js new file mode 100644 index 00000000..504aff01 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawBall.js @@ -0,0 +1,23 @@ +import { Draw } from "./Draw"; +import { Geom } from "./Geom"; +import { ShaderLibs } from "../shader"; + +class DrawBall extends Draw { + constructor(mGL) { + super(mGL); + + this.setMesh(Geom.sphere(1, 12)) + .useProgram(ShaderLibs.generalVert, ShaderLibs.simpleColorFrag) + .uniform("uRotation", [0, 0, 0]); + } + + draw(mPos, mScale = [1, 1, 1], mColor = [1, 1, 1], mOpacity = 1) { + this.uniform("uTranslate", mPos) + .uniform("uScale", mScale) + .uniform("uColor", mColor) + .uniform("uOpacity", mOpacity); + super.draw(0); + } +} + +export { DrawBall }; diff --git a/experiments/flame/src/alfrid/helper/DrawCamera.js b/experiments/flame/src/alfrid/helper/DrawCamera.js new file mode 100644 index 00000000..499b67dd --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawCamera.js @@ -0,0 +1,76 @@ +import { GL } from "../core/GL"; +import { DrawLine } from "./DrawLine"; +import { DrawBall } from "./DrawBall"; +const { mat4, vec4 } = require("gl-matrix"); + +class DrawCamera { + constructor(mGL) { + const _GL = mGL || GL; + this._dLine = new DrawLine(_GL); + this._dBall = new DrawBall(_GL); + + this.mtx = mat4.create(); + + this.color = [1, 1, 1]; + this.opacity = 0.75; + + this._points = [ + [1, 1, -1, 1], + [-1, 1, -1, 1], + [1, -1, -1, 1], + [-1, -1, -1, 1], + + [1, 1, 1, 1], + [-1, 1, 1, 1], + [1, -1, 1, 1], + [-1, -1, 1, 1], + ]; + + this._lines = [ + [0, 1], + [1, 3], + [3, 2], + [2, 0], + + [4, 5], + [5, 7], + [7, 6], + [6, 4], + + [0, 4], + [1, 5], + [2, 6], + [3, 7], + ]; + } + + draw(mCamera, mColor, mOpacity) { + const color = mColor || this.color; + const opacity = mOpacity || this.opacity; + + mat4.identity(this.mtx, this.mtx); + mat4.mul(this.mtx, mCamera.projection, mCamera.view); + mat4.invert(this.mtx, this.mtx); + + const points = this._points.map((pos) => { + const p = vec4.clone(pos); + vec4.transformMat4(p, p, this.mtx); + + p[0] /= p[3]; + p[1] /= p[3]; + p[2] /= p[3]; + return [p[0], p[1], p[2]]; + }); + + const s = 0.02; + points.forEach((p) => { + this._dBall.draw(p, [s, s, s], color, opacity); + }); + + this._lines.forEach((l) => { + this._dLine.draw(points[l[0]], points[l[1]], color, opacity); + }); + } +} + +export { DrawCamera }; diff --git a/experiments/flame/src/alfrid/helper/DrawCopy.js b/experiments/flame/src/alfrid/helper/DrawCopy.js new file mode 100644 index 00000000..93c5768d --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawCopy.js @@ -0,0 +1,21 @@ +import { Draw } from "./Draw"; +import { Geom } from "./Geom"; +import { ShaderLibs } from "../shader"; + +class DrawCopy extends Draw { + constructor(mGL) { + super(mGL); + + this.setMesh(Geom.bigTriangle()).useProgram( + ShaderLibs.bigTriangleVert, + ShaderLibs.copyFrag + ); + } + + draw(mTex) { + this.bindTexture("texture", mTex, 0); + super.draw(0); + } +} + +export { DrawCopy }; diff --git a/experiments/flame/src/alfrid/helper/DrawDotsPlane.js b/experiments/flame/src/alfrid/helper/DrawDotsPlane.js new file mode 100644 index 00000000..a454e696 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawDotsPlane.js @@ -0,0 +1,51 @@ +import { Draw } from "./Draw"; +import vs from "../shader/glsl/dots.vert"; +import fs from "../shader/glsl/simpleColor.frag"; + +class DrawDotsPlane extends Draw { + constructor(mGL) { + super(mGL); + + const GL = this._GL; + + const positions = []; + const indices = []; + let index = 0; + const size = 100; + let i, j; + + for (i = -size; i < size; i += 1) { + for (j = -size; j < size; j += 1) { + positions.push([i, j, 0]); + indices.push(index); + index++; + + positions.push([i, 0, j]); + indices.push(index); + index++; + } + } + + this.createMesh(GL.POINTS) + .bufferVertex(positions) + .bufferIndex(indices) + .useProgram(vs, fs); + + this.color = [1, 1, 1]; + this.opacity = 0.5; + this.pointScale = 1; + this.scale = 1; + } + + draw() { + const { width, height } = this._GL; + this.uniform("uColor", this.color) + .uniform("uOpacity", this.opacity) + .uniform("uScale", this.scale) + .uniform("uPointScale", this.pointScale) + .uniform("uViewport", [width, height]); + super.draw(); + } +} + +export { DrawDotsPlane }; diff --git a/experiments/flame/src/alfrid/helper/DrawLine.js b/experiments/flame/src/alfrid/helper/DrawLine.js new file mode 100644 index 00000000..cf8bd731 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/DrawLine.js @@ -0,0 +1,31 @@ +import { Draw } from "./Draw"; +import vs from "../shader/glsl/line.vert"; +import fs from "../shader/glsl/simpleColor.frag"; + +class DrawLine extends Draw { + constructor(mGL) { + super(mGL); + + const GL = this._GL; + const positions = [[0, 0, 0], [1, 0, 0]]; + + const indices = [0, 1]; + this.createMesh(GL.LINES) + .bufferVertex(positions) + .bufferIndex(indices) + .useProgram(vs, fs); + + this.color = [1, 1, 1]; + this.opacity = 0.75; + } + + draw(mA, mB, mColor, mOpacity) { + this.uniform("uPosA", mA) + .uniform("uPosB", mB) + .uniform("uOpacity", mOpacity || this.opacity) + .uniform("uColor", mColor || this.color); + super.draw(); + } +} + +export { DrawLine }; diff --git a/experiments/flame/src/alfrid/helper/FboArray.js b/experiments/flame/src/alfrid/helper/FboArray.js new file mode 100644 index 00000000..38e30655 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/FboArray.js @@ -0,0 +1,50 @@ +import { FrameBuffer } from "../core/FrameBuffer"; + +class FboArray { + constructor(mNum, width, height, params = {}, mNumTargets = 1) { + this._fbos = []; + + for (let i = 0; i < mNum; i++) { + const fbo = new FrameBuffer(width, height, params, mNumTargets); + this._fbos.push(fbo); + } + } + + /** + * Swap the Fbo, taking the first one and push back to the last + * + */ + swap() { + const a = this._fbos.shift(); + this._fbos.push(a); + } + + /** + * Return the last fbo + * + * @returns {FrameBuffer} the fbo + */ + get read() { + return this._fbos[this._fbos.length - 1]; + } + + /** + * Return the first fbo + * + * @returns {FrameBuffer} the fbo + */ + get write() { + return this._fbos[0]; + } + + /** + * Return all the fbo + * + * @returns {array} the array of fbos + */ + get all() { + return this._fbos; + } +} + +export { FboArray }; diff --git a/experiments/flame/src/alfrid/helper/FboPingPong.js b/experiments/flame/src/alfrid/helper/FboPingPong.js new file mode 100644 index 00000000..b1a61e6d --- /dev/null +++ b/experiments/flame/src/alfrid/helper/FboPingPong.js @@ -0,0 +1,11 @@ +// FboPingPong.js + +import { FboArray } from "./FboArray"; + +class FboPingPong extends FboArray { + constructor(width, height, params = {}, mNumTargets = 1) { + super(2, width, height, params, mNumTargets); + } +} + +export { FboPingPong }; diff --git a/experiments/flame/src/alfrid/helper/Geom.js b/experiments/flame/src/alfrid/helper/Geom.js new file mode 100644 index 00000000..10edb418 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/Geom.js @@ -0,0 +1,353 @@ +import { Mesh } from "../core/Mesh"; +let meshTri; +const Geom = { + plane: (width, height, numSegments, axis = "xy") => { + const positions = []; + const coords = []; + const indices = []; + const normals = []; + + const gapX = width / numSegments; + const gapY = height / numSegments; + const gapUV = 1 / numSegments; + const sx = -width * 0.5; + const sy = -height * 0.5; + let index = 0; + + for (let i = 0; i < numSegments; i++) { + for (let j = 0; j < numSegments; j++) { + const tx = gapX * i + sx; + const ty = gapY * j + sy; + + const u = i / numSegments; + const v = j / numSegments; + + if (axis === "xz") { + positions.push([tx, 0, ty + gapY]); + positions.push([tx + gapX, 0, ty + gapY]); + positions.push([tx + gapX, 0, ty]); + positions.push([tx, 0, ty]); + + coords.push([u, 1.0 - (v + gapUV)]); + coords.push([u + gapUV, 1.0 - (v + gapUV)]); + coords.push([u + gapUV, 1.0 - v]); + coords.push([u, 1.0 - v]); + + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + } else if (axis === "yz") { + positions.push([0, ty, tx]); + positions.push([0, ty, tx + gapX]); + positions.push([0, ty + gapY, tx + gapX]); + positions.push([0, ty + gapY, tx]); + + coords.push([u, v]); + coords.push([u + gapUV, v]); + coords.push([u + gapUV, v + gapUV]); + coords.push([u, v + gapUV]); + + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + } else { + positions.push([tx, ty, 0]); + positions.push([tx + gapX, ty, 0]); + positions.push([tx + gapX, ty + gapY, 0]); + positions.push([tx, ty + gapY, 0]); + + coords.push([u, v]); + coords.push([u + gapUV, v]); + coords.push([u + gapUV, v + gapUV]); + coords.push([u, v + gapUV]); + + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + } + + indices.push(index * 4 + 0); + indices.push(index * 4 + 1); + indices.push(index * 4 + 2); + indices.push(index * 4 + 0); + indices.push(index * 4 + 2); + indices.push(index * 4 + 3); + + index++; + } + } + + const mesh = new Mesh() + .bufferVertex(positions) + .bufferTexCoord(coords) + .bufferIndex(indices) + .bufferNormal(normals); + + return mesh; + }, + cube: (w, h, d, isInvert = false) => { + h = h || w; + d = d || w; + + const x = w / 2; + const y = h / 2; + const z = d / 2; + + const positions = []; + const coords = []; + const indices = []; + const normals = []; + let count = 0; + + // BACK + positions.push([-x, y, -z]); + positions.push([x, y, -z]); + positions.push([x, -y, -z]); + positions.push([-x, -y, -z]); + + normals.push([0, 0, -1]); + normals.push([0, 0, -1]); + normals.push([0, 0, -1]); + normals.push([0, 0, -1]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + count++; + + // RIGHT + positions.push([x, y, -z]); + positions.push([x, y, z]); + positions.push([x, -y, z]); + positions.push([x, -y, -z]); + + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + normals.push([1, 0, 0]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + count++; + + // FRONT + positions.push([x, y, z]); + positions.push([-x, y, z]); + positions.push([-x, -y, z]); + positions.push([x, -y, z]); + + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + normals.push([0, 0, 1]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + count++; + + // LEFT + positions.push([-x, y, z]); + positions.push([-x, y, -z]); + positions.push([-x, -y, -z]); + positions.push([-x, -y, z]); + + normals.push([-1, 0, 0]); + normals.push([-1, 0, 0]); + normals.push([-1, 0, 0]); + normals.push([-1, 0, 0]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + count++; + + // TOP + positions.push([x, y, -z]); + positions.push([-x, y, -z]); + positions.push([-x, y, z]); + positions.push([x, y, z]); + + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + normals.push([0, 1, 0]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + count++; + + // BOTTOM + positions.push([x, -y, z]); + positions.push([-x, -y, z]); + positions.push([-x, -y, -z]); + positions.push([x, -y, -z]); + + normals.push([0, -1, 0]); + normals.push([0, -1, 0]); + normals.push([0, -1, 0]); + normals.push([0, -1, 0]); + + coords.push([0, 0]); + coords.push([1, 0]); + coords.push([1, 1]); + coords.push([0, 1]); + + indices.push(count * 4 + 0); + indices.push(count * 4 + 1); + indices.push(count * 4 + 2); + indices.push(count * 4 + 0); + indices.push(count * 4 + 2); + indices.push(count * 4 + 3); + + if (isInvert) { + indices.reverse(); + } + + const mesh = new Mesh() + .bufferVertex(positions) + .bufferTexCoord(coords) + .bufferIndex(indices) + .bufferNormal(normals); + + return mesh; + }, + sphere: (size, numSegments, isInvert = false) => { + const positions = []; + const coords = []; + const indices = []; + const normals = []; + const gapUV = 1 / numSegments; + let index = 0; + + function getPosition(i, j, isNormal = false) { + // rx : -90 ~ 90 , ry : 0 ~ 360 + const rx = (i / numSegments) * Math.PI - Math.PI * 0.5; + const ry = (j / numSegments) * Math.PI * 2; + const r = isNormal ? 1 : size; + const pos = []; + pos[1] = Math.sin(rx) * r; + const t = Math.cos(rx) * r; + pos[0] = Math.cos(ry) * t; + pos[2] = Math.sin(ry) * t; + + const precision = 10000; + pos[0] = Math.floor(pos[0] * precision) / precision; + pos[1] = Math.floor(pos[1] * precision) / precision; + pos[2] = Math.floor(pos[2] * precision) / precision; + + return pos; + } + + for (let i = 0; i < numSegments; i++) { + for (let j = 0; j < numSegments; j++) { + positions.push(getPosition(i, j)); + positions.push(getPosition(i + 1, j)); + positions.push(getPosition(i + 1, j + 1)); + positions.push(getPosition(i, j + 1)); + + normals.push(getPosition(i, j, true)); + normals.push(getPosition(i + 1, j, true)); + normals.push(getPosition(i + 1, j + 1, true)); + normals.push(getPosition(i, j + 1, true)); + + const u = j / numSegments; + const v = i / numSegments; + + coords.push([1.0 - u, v]); + coords.push([1.0 - u, v + gapUV]); + coords.push([1.0 - u - gapUV, v + gapUV]); + coords.push([1.0 - u - gapUV, v]); + + indices.push(index * 4 + 0); + indices.push(index * 4 + 1); + indices.push(index * 4 + 2); + indices.push(index * 4 + 0); + indices.push(index * 4 + 2); + indices.push(index * 4 + 3); + + index++; + } + } + + if (isInvert) { + indices.reverse(); + } + + const mesh = new Mesh() + .bufferVertex(positions) + .bufferTexCoord(coords) + .bufferIndex(indices) + .bufferNormal(normals); + + return mesh; + }, + bigTriangle: () => { + if (!meshTri) { + const indices = [2, 1, 0]; + const positions = [ + [-1, -1], + [-1, 4], + [4, -1], + ]; + + meshTri = new Mesh() + .bufferData(positions, "aPosition", 2) + .bufferIndex(indices); + } + + return meshTri; + }, +}; + +export { Geom }; diff --git a/experiments/flame/src/alfrid/helper/Object3D.js b/experiments/flame/src/alfrid/helper/Object3D.js new file mode 100644 index 00000000..61195677 --- /dev/null +++ b/experiments/flame/src/alfrid/helper/Object3D.js @@ -0,0 +1,292 @@ +import { vec3, mat4, quat } from "gl-matrix"; +function Object3D() { + let _position = vec3.create(); + let _rotation = vec3.create(); + let _scale = vec3.fromValues(1, 1, 1); + + let _matrix = mat4.create(); + let _matrixParent = mat4.create(); + let _matrixTranslation = mat4.create(); + let _matrixRotation = mat4.create(); + let _matrixScale = mat4.create(); + let _matrixQuaternion = mat4.create(); + let _quat = quat.create(); + + let _children = []; + let _needUpdate = true; + + /** + * Force calling update the matrix + * + * @param {mat4} mParentMatrix the parent matrix + */ + this.update = function(mParentMatrix) { + if (mParentMatrix !== undefined) { + mat4.copy(_matrixParent, mParentMatrix); + } + _needUpdate = true; + _updateMatrix(); + }; + + /** + * Add child to the scene graph + * + * @param {Object3D} mChild the child + */ + this.addChild = function(mChild) { + _children.push(mChild); + }; + + /** + * Remove child from the scene graph + * + * @param {Object3D} mChild the child + */ + this.removeChild = function(mChild) { + const index = _children.indexOf(mChild); + if (index == -1) { + console.warn("Child no exist"); + return; + } + + _children.splice(index, 1); + }; + + /** + * Set the rotation from quaternion + * + * @param {Object3D} mQuat the quaternion value + */ + this.setRotationFromQuaternion = function(mQuat) { + quat.copy(_quat, mQuat); + _needUpdate = true; + }; + + /** + * Update the matrix + * + */ + const _updateMatrix = () => { + if (!_needUpdate) { + return; + } + + mat4.identity(_matrixTranslation, _matrixTranslation); + mat4.identity(_matrixScale, _matrixScale); + mat4.identity(_matrixRotation, _matrixRotation); + + mat4.rotateX(_matrixRotation, _matrixRotation, _rotation[0]); + mat4.rotateY(_matrixRotation, _matrixRotation, _rotation[1]); + mat4.rotateZ(_matrixRotation, _matrixRotation, _rotation[2]); + + mat4.fromQuat(_matrixQuaternion, _quat); + mat4.mul(_matrixRotation, _matrixQuaternion, _matrixRotation); + + mat4.scale(_matrixScale, _matrixScale, _scale); + mat4.translate(_matrixTranslation, _matrixTranslation, _position); + + mat4.mul(_matrix, _matrixTranslation, _matrixRotation); + mat4.mul(_matrix, _matrix, _matrixScale); + // mat4.mul(this._matrix, this._matrix, this._matrixParent); + mat4.mul(_matrix, _matrixParent, _matrix); + + // update the children + _children.forEach((child) => { + child.update(_matrix); + }); + + _needUpdate = false; + }; + + // getters & setters + /** + * Get the matrix + * + * @returns {mat4} the matrix + */ + this.__defineGetter__("matrix", function() { + _updateMatrix(); + return _matrix; + }); + + /** + * Set the x value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("x", function(mValue) { + _position[0] = mValue; + _needUpdate = true; + }); + + /** + * Get the x value of the object + * + * @returns {number} the x value + */ + this.__defineGetter__("x", function() { + return _position[0]; + }); + + /** + * Set the y value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("y", function(mValue) { + _position[1] = mValue; + _needUpdate = true; + }); + + /** + * Get the y value of the object + * + * @returns {number} the y value + */ + this.__defineGetter__("y", function() { + return _position[1]; + }); + + /** + * Set the z value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("z", function(mValue) { + _position[2] = mValue; + _needUpdate = true; + }); + + /** + * Get the z value of the object + * + * @returns {number} the z value + */ + this.__defineGetter__("z", function() { + return _position[2]; + }); + + /** + * Set the scale x value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("scaleX", function(mValue) { + _scale[0] = mValue; + _needUpdate = true; + }); + + /** + * Get the scale x value of the object + * + * @returns {number} the scale x value + */ + this.__defineGetter__("scaleX", function() { + return _scale[0]; + }); + + /** + * Set the scale y value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("scaleY", function(mValue) { + _scale[1] = mValue; + _needUpdate = true; + }); + + /** + * Get the scale y value of the object + * + * @returns {number} the scale y value + */ + this.__defineGetter__("scaleY", function() { + return _scale[1]; + }); + + /** + * Set the scale z value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("scaleZ", function(mValue) { + _scale[2] = mValue; + _needUpdate = true; + }); + + /** + * Get the scale z value of the object + * + * @returns {number} the scale z value + */ + this.__defineGetter__("scaleZ", function() { + return _scale[2]; + }); + + /** + * Set the rotation x value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("rotationX", function(mValue) { + _rotation[0] = mValue; + _needUpdate = true; + }); + + /** + * Get the rotation x value of the object + * + * @returns {number} the rotation x value + */ + this.__defineGetter__("rotationX", function() { + return _rotation[0]; + }); + + /** + * Set the rotation y value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("rotationY", function(mValue) { + _rotation[1] = mValue; + _needUpdate = true; + }); + + /** + * Get the rotation y value of the object + * + * @returns {number} the rotation y value + */ + this.__defineGetter__("rotationY", function() { + return _rotation[1]; + }); + + /** + * Set the rotation z value of the object + * + * @param {number} mValue the value + */ + this.__defineSetter__("rotationZ", function(mValue) { + _rotation[2] = mValue; + _needUpdate = true; + }); + + /** + * Get the rotation z value of the object + * + * @returns {number} the rotation z value + */ + this.__defineGetter__("rotationZ", function() { + return _rotation[2]; + }); + + /** + * Get the children of the object + * + */ + this.__defineGetter__("children", function() { + return _children; + }); +} + +export { Object3D }; diff --git a/experiments/flame/src/alfrid/index.js b/experiments/flame/src/alfrid/index.js new file mode 100644 index 00000000..31cee18a --- /dev/null +++ b/experiments/flame/src/alfrid/index.js @@ -0,0 +1,47 @@ +// core +export { GL, GLTool } from "./core/GL"; +export { GLShader } from "./core/GLShader"; +export { Mesh } from "./core/Mesh"; +export { GLTexture } from "./core/GLTexture"; +export { FrameBuffer } from "./core/FrameBuffer"; +// export { GLCubeTexture } from "./core/GLCubeTexture"; + +// cameras +export { Camera } from "./camera/Camera"; +export { CameraOrtho } from "./camera/CameraOrtho"; +export { CameraPerspective } from "./camera/CameraPerspective"; + +// maths +// export { Ray } from "./math/Ray"; + +// helpers +export { Draw } from "./helper/Draw"; +export { DrawAxis } from "./helper/DrawAxis"; +export { DrawDotsPlane } from "./helper/DrawDotsPlane"; +// export { DrawLine } from "./helper/DrawLine"; +export { DrawBall } from "./helper/DrawBall"; +export { DrawCopy } from "./helper/DrawCopy"; +export { DrawCamera } from "./helper/DrawCamera"; +export { Geom } from "./helper/Geom"; +export { Object3D } from "./helper/Object3D"; +export { FboArray } from "./helper/FboArray"; +export { FboPingPong } from "./helper/FboPingPong"; + +// utils +export { checkWebGL2 } from "./utils/checkWebGL2"; +export { EaseNumber } from "./utils/EaseNumber"; +export { TweenNumber } from "./utils/TweenNumber"; +export { SpringNumber } from "./utils/SpringNumber"; +export { OrbitalControl } from "./utils/OrbitalControl"; +export { BitSwitch } from "./utils/BitSwitch"; +export { HitTestor } from "./utils/HitTestor"; +export { Scene } from "./utils/Scene"; +export { parseObj } from "./utils/parseObj"; + +export { WebGLNumber } from "./utils/WebGLNumber"; +export { WebGLConst } from "./utils/WebGLConst"; + +export { ShaderLibs } from "./shader"; + +// polyfill fixes +import "./utils/polyfixes"; diff --git a/experiments/flame/src/alfrid/loader/loadBinary.js b/experiments/flame/src/alfrid/loader/loadBinary.js new file mode 100644 index 00000000..21ab438a --- /dev/null +++ b/experiments/flame/src/alfrid/loader/loadBinary.js @@ -0,0 +1,15 @@ +const loadBinary = (mUrl, mIsArrayBuffer = false) => + new Promise((resolve, reject) => { + const req = new XMLHttpRequest(); + req.addEventListener("load", (o) => { + resolve(req.response); + }); + if (mIsArrayBuffer) { + req.responseType = "arraybuffer"; + } + + req.open("GET", mUrl); + req.send(); + }); + +export { loadBinary }; diff --git a/experiments/flame/src/alfrid/loader/loadDds.js b/experiments/flame/src/alfrid/loader/loadDds.js new file mode 100644 index 00000000..1ed21bd4 --- /dev/null +++ b/experiments/flame/src/alfrid/loader/loadDds.js @@ -0,0 +1,16 @@ +import { loadBinary } from "./loadBinary"; +import { parseDds } from "../utils/parseDds"; + +const loadDds = (mUrl) => + new Promise((resolve, reject) => { + loadBinary(mUrl, true).then( + (o) => { + resolve(parseDds(o)); + }, + (err) => { + reject(err); + } + ); + }); + +export { loadDds }; diff --git a/experiments/flame/src/alfrid/loader/loadHdr.js b/experiments/flame/src/alfrid/loader/loadHdr.js new file mode 100644 index 00000000..c324b162 --- /dev/null +++ b/experiments/flame/src/alfrid/loader/loadHdr.js @@ -0,0 +1,16 @@ +import { loadBinary } from "./loadBinary"; +import { parseHdr } from "../utils/parseHdr"; + +const loadHdr = (mUrl) => + new Promise((resolve, reject) => { + loadBinary(mUrl, true).then( + (o) => { + resolve(parseHdr(o)); + }, + (err) => { + reject(err); + } + ); + }); + +export { loadHdr }; diff --git a/experiments/flame/src/alfrid/loader/loadObj.js b/experiments/flame/src/alfrid/loader/loadObj.js new file mode 100644 index 00000000..0dcc597e --- /dev/null +++ b/experiments/flame/src/alfrid/loader/loadObj.js @@ -0,0 +1,16 @@ +import { loadBinary } from "./loadBinary"; +import { parseObj } from "../utils/parseObj"; + +const loadObj = (mUrl) => + new Promise((resolve, reject) => { + loadBinary(mUrl, false).then( + (o) => { + resolve(parseObj(o)); + }, + (err) => { + reject(err); + } + ); + }); + +export { loadObj }; diff --git a/experiments/flame/src/alfrid/math/Ray.js b/experiments/flame/src/alfrid/math/Ray.js new file mode 100644 index 00000000..58d0f4b7 --- /dev/null +++ b/experiments/flame/src/alfrid/math/Ray.js @@ -0,0 +1,143 @@ +import { vec3 } from "gl-matrix"; + +function Ray(mOrigin, mDirection) { + this.origin = mOrigin; + this.direction = mDirection; + + // private properties + const a = vec3.create(); + const b = vec3.create(); + const c = vec3.create(); + const target = vec3.create(); + const edge1 = vec3.create(); + const edge2 = vec3.create(); + const normal = vec3.create(); + const diff = vec3.create(); + + this.at = function(t) { + vec3.copy(target, this.direction); + vec3.scale(target, target, t); + vec3.add(target, target, this.origin); + + return target; + }; + + this.lookAt = function(mTarget) { + vec3.sub(this.direction, mTarget, this.origin); + vec3.normalize(this.origin, this.origin); + }; + + this.closestPointToPoint = function(mPoint) { + const result = vec3.create(); + vec3.sub(mPoint, this.origin); + const directionDistance = vec3.dot(result, this.direction); + + if (directionDistance < 0) { + return vec3.clone(this.origin); + } + + vec3.copy(result, this.direction); + vec3.scale(result, result, directionDistance); + vec3.add(result, result, this.origin); + + return result; + }; + + this.distanceToPoint = function(mPoint) { + return Math.sqrt(this.distanceSqToPoint(mPoint)); + }; + + this.distanceSqToPoint = function(mPoint) { + const v1 = vec3.create(); + + vec3.sub(v1, mPoint, this.origin); + const directionDistance = vec3.dot(v1, this.direction); + + if (directionDistance < 0) { + return vec3.squaredDistance(this.origin, mPoint); + } + + vec3.copy(v1, this.direction); + vec3.scale(v1, v1, directionDistance); + vec3.add(v1, v1, this.origin); + return vec3.squaredDistance(v1, mPoint); + }; + + this.intersectsSphere = function(mCenter, mRadius) { + return this.distanceToPoint(mCenter) <= mRadius; + }; + + this.intersectSphere = function(mCenter, mRadius) { + const v1 = vec3.create(); + vec3.sub(v1, mCenter, this.origin); + const tca = vec3.dot(v1, this.direction); + const d2 = vec3.dot(v1, v1) - tca * tca; + const radius2 = mRadius * mRadius; + + if (d2 > radius2) return null; + + const thc = Math.sqrt(radius2 - d2); + + const t0 = tca - thc; + + const t1 = tca + thc; + + if (t0 < 0 && t1 < 0) return null; + + if (t0 < 0) return this.at(t1); + + return this.at(t0); + }; + + this.intersectTriangle = function(mPA, mPB, mPC, backfaceCulling = true) { + vec3.copy(a, mPA); + vec3.copy(b, mPB); + vec3.copy(c, mPC); + + vec3.sub(edge1, b, a); + vec3.sub(edge2, c, a); + vec3.cross(normal, edge1, edge2); + + let DdN = vec3.dot(this.direction, normal); + let sign; + + if (DdN > 0) { + if (backfaceCulling) { + return null; + } + sign = 1; + } else if (DdN < 0) { + sign = -1; + DdN = -DdN; + } else { + return null; + } + + vec3.sub(diff, this.origin, a); + + vec3.cross(edge2, diff, edge2); + const DdQxE2 = sign * vec3.dot(this.direction, edge2); + if (DdQxE2 < 0) { + return null; + } + + vec3.cross(edge1, edge1, diff); + const DdE1xQ = sign * vec3.dot(this.direction, edge1); + if (DdE1xQ < 0) { + return null; + } + + if (DdQxE2 + DdE1xQ > DdN) { + return null; + } + + const Qdn = -sign * vec3.dot(diff, normal); + if (Qdn < 0) { + return null; + } + + return this.at(Qdn / DdN); + }; +} + +export { Ray }; diff --git a/experiments/flame/src/alfrid/shader/BasicColorShader.js b/experiments/flame/src/alfrid/shader/BasicColorShader.js new file mode 100644 index 00000000..c01e4520 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/BasicColorShader.js @@ -0,0 +1,33 @@ +import { GLShader } from "../core/GLShader"; + +import vs from "./glsl/basic.vert"; +import fs from "./glsl/simpleColor.frag"; + +class BasicColorShader extends GLShader { + constructor(mColor = [1, 1, 1], mOpacity = 1) { + super(vs, fs); + + this.color = mColor; + this.opacity = mOpacity; + } + + get color() { + return this._color; + } + + set color(mValue) { + this._color = mValue; + this.uniform("uColor", this._color); + } + + get opacity() { + return this._opacity; + } + + set opacity(mValue) { + this._opacity = mValue; + this.uniform("uOpacity", this._opacity); + } +} + +export { BasicColorShader }; diff --git a/experiments/flame/src/alfrid/shader/DiffuseLightShader.js b/experiments/flame/src/alfrid/shader/DiffuseLightShader.js new file mode 100644 index 00000000..31f7af1f --- /dev/null +++ b/experiments/flame/src/alfrid/shader/DiffuseLightShader.js @@ -0,0 +1,43 @@ +import { GLShader } from "../core/GLShader"; + +import vs from "./glsl/basic.vert"; +import fs from "./glsl/diffuse.frag"; + +class DiffuseLightShader extends GLShader { + constructor(mColor = [1, 1, 1], mLight = [1, 1, 1], mIntensity = 0.5) { + super(vs, fs); + + this.color = mColor; + this.light = mLight; + this.intensity = mIntensity; + } + + get color() { + return this._color; + } + + set color(mValue) { + this._color = mValue; + this.uniform("uColor", this._color); + } + + get light() { + return this._light; + } + + set light(mValue) { + this._light = mValue; + this.uniform("uLight", this._light); + } + + get intensity() { + return this._intensity; + } + + set intensity(mValue) { + this._intensity = mValue; + this.uniform("uLightIntensity", this._intensity); + } +} + +export { DiffuseLightShader }; diff --git a/experiments/flame/src/alfrid/shader/PBRShader.js b/experiments/flame/src/alfrid/shader/PBRShader.js new file mode 100644 index 00000000..4e5b06bb --- /dev/null +++ b/experiments/flame/src/alfrid/shader/PBRShader.js @@ -0,0 +1,185 @@ +import { GL } from "../core/GL"; +import { getColorTexture } from "../core/GLTexture"; +import { GLShader } from "../core/GLShader"; + +import vs from "./glsl/pbr.vert"; +import fs from "./glsl/pbr.frag"; + +class PBRShader extends GLShader { + constructor() { + super(vs, fs); + + // placeholder textures + this.textureWhite = getColorTexture([1, 1, 1]); + + // look up textures + this._textureLut = this.textureWhite; + + // Roughness + this._roughness = 1.0; + + // Metallic + this._metallic = 1.0; + + // color + this._textureColor = this.textureWhite; + this._baseColor = [1, 1, 1]; + + // normal + this._textureNormal = this.textureWhite; + this._normalScale = 0; + + // ao + this._textureORM = this.textureWhite; + this._aoStrength = 1.0; + + // emissive + this._textureEmissive = this.textureWhite; + this._emissiveColor = [0, 0, 0]; + + // exposure + this._exposure = 2.2; + + // camera position + this._cameraPos = [0, 0, 1]; + + // uniforms + this.uniform("uBRDFMap", "int", 0); + this.uniform("uRadianceMap", "int", 1); + this.uniform("uIrradianceMap", "int", 2); + this.uniform("uColorMap", "int", 3); + this.uniform("uNormalMap", "int", 4); + this.uniform("uORMMap", "int", 5); + this.uniform("uEmissiveMap", "int", 6); + + // setup uniforms + this.uniform("uRoughness", this._roughness); + this.uniform("uMetallic", this._metallic); + this.uniform("uBaseColor", this._baseColor); + this.uniform("uNormalScale", this._normalScale); + this.uniform("uOcclusionStrength", this._aoStrength); + this.uniform("uEmissiveFactor", this._emissiveColor); + this.uniform("uCameraPos", this._cameraPos); + + this.uniform("uScaleDiffBaseMR", [0, 0, 0, 0]); + this.uniform("uScaleFGDSpec", [0, 0, 0, 0]); + this.uniform("uScaleIBLAmbient", [1, 1, 1, 1]); + this.uniform("uExposure", this._exposure); + + // offset for diffuse light + this.diffuseOffset = 0; + } + + bindAllTextures(mGL) { + const _GL = mGL || GL; + this._textureLut.bind(0, _GL); + + if (this._textureRad) { + this._textureRad.bind(1, _GL); + } else { + console.log("No Radiance Texture found"); + } + if (this._textureIrr) { + this._textureIrr.bind(2, _GL); + } else { + console.log("No Irradiance Texture found"); + } + + this._textureColor.bind(3); + this._textureNormal.bind(4); + this._textureORM.bind(5); + this._textureEmissive.bind(6); + } + + set lutMap(mTex) { + this._textureLut = mTex; + } + + set radianceMap(mTex) { + this._textureRad = mTex; + } + + set irradianceMap(mTex) { + this._textureIrr = mTex; + } + + // getters & setters for parameters + + set roughness(mValue) { + this._roughness = mValue; + this.uniform("uRoughness", this._roughness); + const t = + Math.pow((1.0 - this._roughness) * (1.0 - this._metallic), 2.0) * + this.diffuseOffset; + this.uniform("uScaleDiffBaseMR", [t, 0, 0, 0]); + } + + get roughness() { + return this._roughness; + } + + set metallic(mValue) { + this._metallic = mValue; + this.uniform("uMetallic", this._metallic); + } + + get metallic() { + return this._metallic; + } + + set baseColor(mValue) { + this._baseColor = mValue; + this.uniform("uBaseColor", this._baseColor); + } + + get baseColor() { + return this._baseColor; + } + + set normalScale(mValue) { + this._normalScale = mValue; + this.uniform("uNormalScale", this._normalScale); + } + + get normalScale() { + return this._normalScale; + } + + set aoStrength(mValue) { + this._aoStrength = mValue; + this.uniform("uOcclusionStrength", this._aoStrength); + } + + get aoStrength() { + return this._aoStrength; + } + + set emissiveColor(mValue) { + this._emissiveColor = mValue; + this.uniform("uEmissiveFactor", this._emissiveColor); + } + + get emissiveColor() { + return this._emissiveColor; + } + + set cameraPosition(mValue) { + this._cameraPos = mValue; + this.uniform("uCameraPos", this._cameraPos); + } + + get cameraPosition() { + return this._cameraPos; + } + + set exposure(mValue) { + this._exposure = mValue; + this.uniform("uExposure", this._exposure); + } + + get exposure() { + return this._exposure; + } +} + +export { PBRShader }; diff --git a/experiments/flame/src/alfrid/shader/glsl/axis.frag b/experiments/flame/src/alfrid/shader/glsl/axis.frag new file mode 100644 index 00000000..169b2419 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/axis.frag @@ -0,0 +1,9 @@ +#version 300 es +precision highp float; +in vec3 vColor; +uniform float uOpacity; +out vec4 oColor; + +void main(void) { + oColor = vec4(vColor, uOpacity); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/axis.vert b/experiments/flame/src/alfrid/shader/glsl/axis.vert new file mode 100644 index 00000000..399ec5b3 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/axis.vert @@ -0,0 +1,16 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec3 aColor; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +out vec3 vColor; + +void main(void) { + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0); + vColor = aColor; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/basic.frag b/experiments/flame/src/alfrid/shader/glsl/basic.frag new file mode 100644 index 00000000..db7ac640 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/basic.frag @@ -0,0 +1,6 @@ +precision highp float; +// varying vec2 vTextureCoord; + +void main(void) { + gl_FragColor = vec4(1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/basic.vert b/experiments/flame/src/alfrid/shader/glsl/basic.vert new file mode 100644 index 00000000..75808780 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/basic.vert @@ -0,0 +1,19 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +out vec2 vTextureCoord; +out vec3 vNormal; + +void main(void) { + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0); + vTextureCoord = aTextureCoord; + vNormal = aNormal; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/bigTriangle.vert b/experiments/flame/src/alfrid/shader/glsl/bigTriangle.vert new file mode 100644 index 00000000..dbfe7b53 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/bigTriangle.vert @@ -0,0 +1,10 @@ +#version 300 es + +precision mediump float; +in vec2 aPosition; +out vec2 vTextureCoord; + +void main(void) { + gl_Position = vec4(aPosition, 0.0, 1.0); + vTextureCoord = aPosition * .5 + .5; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/copy.frag b/experiments/flame/src/alfrid/shader/glsl/copy.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/copy.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/diffuse.frag b/experiments/flame/src/alfrid/shader/glsl/diffuse.frag new file mode 100644 index 00000000..a5e48313 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/diffuse.frag @@ -0,0 +1,14 @@ +precision highp float; + +varying vec3 vNormal; + +uniform vec3 uColor; +uniform vec3 uLight; +uniform float uLightIntensity; + +#pragma glslify: diffuse = require(glsl-utils/diffuse.glsl) + +void main(void) { + float g = diffuse(vNormal, uLight, uLightIntensity); + gl_FragColor = vec4(uColor * g, 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/dots.vert b/experiments/flame/src/alfrid/shader/glsl/dots.vert new file mode 100644 index 00000000..7d7324e2 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/dots.vert @@ -0,0 +1,20 @@ +#define SHADER_NAME DOTS_PLANE_VERTEX + +precision highp float; +attribute vec3 aVertexPosition; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; +uniform vec2 uViewport; +uniform float uScale; +uniform float uPointScale; + +const float radius = 0.008; + +void main(void) { + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition * uScale, 1.0); + + float distOffset = uViewport.y * uProjectionMatrix[1][1] * radius / gl_Position.w; + gl_PointSize = distOffset * uPointScale; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/general.vert b/experiments/flame/src/alfrid/shader/glsl/general.vert new file mode 100644 index 00000000..1a2837fe --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/general.vert @@ -0,0 +1,36 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +uniform vec3 uTranslate; +uniform vec3 uScale; +uniform vec3 uRotation; + +out vec2 vTextureCoord; +out vec3 vNormal; + +vec2 rotate(vec2 v, float a) { + float s = sin(a); + float c = cos(a); + mat2 m = mat2(c, s, -s, c); + return m * v; +} + +void main(void) { + vec3 pos = aVertexPosition * uScale; + pos.yz = rotate(pos.yz, uRotation.x); + pos.xz = rotate(pos.xz, uRotation.y); + pos.xy = rotate(pos.xy, uRotation.z); + pos += uTranslate; + + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(pos, 1.0); + vTextureCoord = aTextureCoord; + vNormal = aNormal; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/line.vert b/experiments/flame/src/alfrid/shader/glsl/line.vert new file mode 100644 index 00000000..f787df55 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/line.vert @@ -0,0 +1,15 @@ +#version 300 es +precision highp float; +in vec3 aVertexPosition; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +uniform vec3 uPosA; +uniform vec3 uPosB; + +void main(void) { + vec3 pos = mix(uPosA, uPosB, aVertexPosition.x); + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(pos, 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/pbr.frag b/experiments/flame/src/alfrid/shader/glsl/pbr.frag new file mode 100644 index 00000000..b9bf58b7 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/pbr.frag @@ -0,0 +1,255 @@ +#version 300 es +#define SHADER_NAME pbr_frag + +// #extension GL_EXT_shader_texture_lod: enable +// #extension GL_OES_standard_derivatives : enable + +precision highp float; + +uniform sampler2D uBRDFMap; +uniform samplerCube uRadianceMap; +uniform samplerCube uIrradianceMap; + +// color +uniform vec3 uBaseColor; +uniform sampler2D uColorMap; + +// ORM - Occlusion, Roughness, Metallic +uniform sampler2D uORMMap; +uniform float uOcclusionStrength; +uniform float uRoughness; +uniform float uMetallic; +uniform float uExposure; + + +// normal +uniform sampler2D uNormalMap; +uniform float uNormalScale; + +// emissive +uniform sampler2D uEmissiveMap; +uniform vec3 uEmissiveFactor; + +// light color +uniform vec3 uLightDirection; +uniform vec3 uLightColor; + +uniform vec3 uCameraPos; + +uniform vec4 uScaleDiffBaseMR; +uniform vec4 uScaleFGDSpec; +uniform vec4 uScaleIBLAmbient; + + +in vec2 vTextureCoord; +in vec3 vNormal; +in vec3 vPosition; + +out vec4 oColor; + +// From GLTF WebGL PBR : +// https://github.com/KhronosGroup/glTF-WebGL-PBR + +// Encapsulate the various inputs used by the various functions in the shading equation +// We store values in this struct to simplify the integration of alternative implementations +// of the shading terms, outlined in the Readme.MD Appendix. +struct PBRInfo +{ + float NdotL; // cos angle between normal and light direction + float NdotV; // cos angle between normal and view direction + float NdotH; // cos angle between normal and half vector + float LdotH; // cos angle between light direction and half vector + float VdotH; // cos angle between view direction and half vector + float perceptualRoughness; // roughness value, as authored by the model creator (input to shader) + float metalness; // metallic value at the surface + vec3 reflectance0; // full reflectance color (normal incidence angle) + vec3 reflectance90; // reflectance color at grazing angle + float alphaRoughness; // roughness mapped to a more linear change in the roughness (proposed by [2]) + vec3 diffuseColor; // color contribution from diffuse lighting + vec3 specularColor; // color contribution from specular lighting +}; + + +const float M_PI = 3.141592653589793; +const float c_MinRoughness = 0.04; + + +vec4 SRGBtoLINEAR(vec4 srgbIn) +{ + #ifdef MANUAL_SRGB + #ifdef SRGB_FAST_APPROXIMATION + vec3 linOut = pow(srgbIn.xyz,vec3(2.2)); + #else //SRGB_FAST_APPROXIMATION + vec3 bLess = step(vec3(0.04045),srgbIn.xyz); + vec3 linOut = mix( srgbIn.xyz/vec3(12.92), pow((srgbIn.xyz+vec3(0.055))/vec3(1.055),vec3(2.4)), bLess ); + #endif //SRGB_FAST_APPROXIMATION + return vec4(linOut,srgbIn.w);; + #else //MANUAL_SRGB + return srgbIn; + #endif //MANUAL_SRGB +} + +vec3 getNormal() { + vec3 pos_dx = dFdx(vPosition); + vec3 pos_dy = dFdy(vPosition); + vec3 tex_dx = dFdx(vec3(vTextureCoord, 0.0)); + vec3 tex_dy = dFdy(vec3(vTextureCoord, 0.0)); + vec3 t = (tex_dy.t * pos_dx - tex_dx.t * pos_dy) / (tex_dx.s * tex_dy.t - tex_dy.s * tex_dx.t); + + vec3 ng = normalize(vNormal); + + t = normalize(t - ng * dot(ng, t)); + vec3 b = normalize(cross(ng, t)); + mat3 tbn = mat3(t, b, ng); + + vec3 n = texture(uNormalMap, vTextureCoord).rgb; + n = normalize(tbn * ((2.0 * n - 1.0) * vec3(uNormalScale, uNormalScale, 1.0))); + return n; +} + + +vec3 getIBLContribution(PBRInfo pbrInputs, vec3 n, vec3 reflection) +{ + float mipCount = 7.0; // resolution of 512x512 + float lod = (pbrInputs.perceptualRoughness * mipCount); + // retrieve a scale and bias to F0. See [1], Figure 3 + vec3 brdf = SRGBtoLINEAR(texture(uBRDFMap, vec2(pbrInputs.NdotV, 1.0 - pbrInputs.perceptualRoughness))).rgb; + vec3 diffuseLight = SRGBtoLINEAR(texture(uIrradianceMap, n)).rgb; + + + #ifdef USE_TEX_LOD + vec3 specularLight = SRGBtoLINEAR(textureCubeLodEXT(uRadianceMap, reflection, lod)).rgb; + // vec3 specularLight = SRGBtoLINEAR(textureCubeLodEXT(u_SpecularEnvSampler, reflection, lod)).rgb; + #else + vec3 specularLight = SRGBtoLINEAR(texture(uRadianceMap, reflection)).rgb; + // vec3 specularLight = SRGBtoLINEAR(textureCube(u_SpecularEnvSampler, reflection)).rgb; + #endif + + vec3 diffuse = diffuseLight * pbrInputs.diffuseColor; + vec3 specular = specularLight * (pbrInputs.specularColor * brdf.x + brdf.y); + + // For presentation, this allows us to disable IBL terms + diffuse *= uScaleIBLAmbient.x; + specular *= uScaleIBLAmbient.y; + + return diffuse + specular; +} + + +vec3 diffuse(PBRInfo pbrInputs) +{ + return pbrInputs.diffuseColor / M_PI; +} + + +vec3 specularReflection(PBRInfo pbrInputs) +{ + return pbrInputs.reflectance0 + (pbrInputs.reflectance90 - pbrInputs.reflectance0) * pow(clamp(1.0 - pbrInputs.VdotH, 0.0, 1.0), 5.0); +} + +float geometricOcclusion(PBRInfo pbrInputs) +{ + float NdotL = pbrInputs.NdotL; + float NdotV = pbrInputs.NdotV; + float r = pbrInputs.alphaRoughness; + + float attenuationL = 2.0 * NdotL / (NdotL + sqrt(r * r + (1.0 - r * r) * (NdotL * NdotL))); + float attenuationV = 2.0 * NdotV / (NdotV + sqrt(r * r + (1.0 - r * r) * (NdotV * NdotV))); + return attenuationL * attenuationV; +} + + +float microfacetDistribution(PBRInfo pbrInputs) +{ + float roughnessSq = pbrInputs.alphaRoughness * pbrInputs.alphaRoughness; + float f = (pbrInputs.NdotH * roughnessSq - pbrInputs.NdotH) * pbrInputs.NdotH + 1.0; + return roughnessSq / (M_PI * f * f); +} + + +void main(void) { + vec4 orm = texture(uORMMap, vTextureCoord); + + + float perceptualRoughness = uRoughness * orm.g; + float metallic = uMetallic * orm.b; + perceptualRoughness = clamp(perceptualRoughness, c_MinRoughness, 1.0); + metallic = clamp(metallic, 0.0, 1.0); + float alphaRoughness = perceptualRoughness * perceptualRoughness; + + vec4 baseColor = SRGBtoLINEAR(texture(uColorMap, vTextureCoord)); + baseColor.rgb *= uBaseColor; + + vec3 f0 = vec3(0.04); + vec3 diffuseColor = baseColor.rgb * (vec3(1.0) - f0); + diffuseColor *= 1.0 - metallic; + vec3 specularColor = mix(f0, baseColor.rgb, metallic); + + // Compute reflectance. + float reflectance = max(max(specularColor.r, specularColor.g), specularColor.b); + + // For typical incident reflectance range (between 4% to 100%) set the grazing reflectance to 100% for typical fresnel effect. + // For very low reflectance range on highly diffuse objects (below 4%), incrementally reduce grazing reflecance to 0%. + float reflectance90 = clamp(reflectance * 25.0, 0.0, 1.0); + vec3 specularEnvironmentR0 = specularColor.rgb; + vec3 specularEnvironmentR90 = vec3(1.0, 1.0, 1.0) * reflectance90; + + vec3 n = getNormal(); // normal at surface point + vec3 v = normalize(uCameraPos - vPosition); // Vector from surface point to camera + vec3 l = normalize(uLightDirection); // Vector from surface point to light + vec3 h = normalize(l+v); // Half vector between both l and v + vec3 reflection = -normalize(reflect(v, n)); + + float NdotL = clamp(dot(n, l), 0.001, 1.0); + float NdotV = abs(dot(n, v)) + 0.001; + float NdotH = clamp(dot(n, h), 0.0, 1.0); + float LdotH = clamp(dot(l, h), 0.0, 1.0); + float VdotH = clamp(dot(v, h), 0.0, 1.0); + + PBRInfo pbrInputs = PBRInfo( + NdotL, + NdotV, + NdotH, + LdotH, + VdotH, + perceptualRoughness, + metallic, + specularEnvironmentR0, + specularEnvironmentR90, + alphaRoughness, + diffuseColor, + specularColor + ); + + // Calculate the shading terms for the microfacet specular shading model + vec3 F = specularReflection(pbrInputs); + float G = geometricOcclusion(pbrInputs); + float D = microfacetDistribution(pbrInputs); + + // Calculation of analytical lighting contribution + vec3 diffuseContrib = (1.0 - F) * diffuse(pbrInputs); + vec3 specContrib = F * G * D / (4.0 * NdotL * NdotV); + // Obtain final intensity as reflectance (BRDF) scaled by the energy of the light (cosine law) + vec3 color = NdotL * uLightColor * (diffuseContrib + specContrib); + + color += getIBLContribution(pbrInputs, n, reflection); + color = mix(color, color * orm.r, uOcclusionStrength); + + vec3 emissive = SRGBtoLINEAR(texture(uEmissiveMap, vTextureCoord)).rgb * uEmissiveFactor; + color += emissive; + + // This section uses mix to override final color for reference app visualization + // of various parameters in the lighting equation. + color = mix(color, F, uScaleFGDSpec.x); + color = mix(color, vec3(G), uScaleFGDSpec.y); + color = mix(color, vec3(D), uScaleFGDSpec.z); + color = mix(color, specContrib, uScaleFGDSpec.w); + + color = mix(color, diffuseContrib, uScaleDiffBaseMR.x); + color = mix(color, baseColor.rgb, uScaleDiffBaseMR.y); + color = mix(color, vec3(metallic), uScaleDiffBaseMR.z); + color = mix(color, vec3(perceptualRoughness), uScaleDiffBaseMR.w); + + // output the fragment color + oColor = vec4(pow(color,vec3(1.0/uExposure)), baseColor.a); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/pbr.vert b/experiments/flame/src/alfrid/shader/glsl/pbr.vert new file mode 100644 index 00000000..3248d9cd --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/pbr.vert @@ -0,0 +1,29 @@ +#version 300 es + +#define SHADER_NAME pbr_vert + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; +uniform mat3 uNormalMatrix; +uniform mat3 uModelViewMatrixInverse; + +out vec2 vTextureCoord; +out vec3 vNormal; +out vec3 vPosition; + + +void main(void) { + vec4 position = uModelMatrix * vec4(aVertexPosition, 1.0); + vPosition = position.xyz / position.w; + + vNormal = normalize(vec3(uModelMatrix * vec4(aNormal, 0.0))); + vTextureCoord = aTextureCoord; + + gl_Position = uProjectionMatrix * uViewMatrix * position; +} diff --git a/experiments/flame/src/alfrid/shader/glsl/simpleColor.frag b/experiments/flame/src/alfrid/shader/glsl/simpleColor.frag new file mode 100644 index 00000000..88fa9d22 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/simpleColor.frag @@ -0,0 +1,11 @@ +#version 300 es +precision highp float; + +uniform vec3 uColor; +uniform float uOpacity; + +out vec4 fragColor; + +void main(void) { + fragColor = vec4(uColor, uOpacity); +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/glsl/skybox.vert b/experiments/flame/src/alfrid/shader/glsl/skybox.vert new file mode 100644 index 00000000..c3219425 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/glsl/skybox.vert @@ -0,0 +1,28 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +out vec2 vTextureCoord; +out vec3 vVertex; +out vec3 vNormal; + +void main(void) { + mat4 matView = uViewMatrix; + matView[3][0] = 0.0; + matView[3][1] = 0.0; + matView[3][2] = 0.0; + + gl_Position = uProjectionMatrix * matView * uModelMatrix * vec4(aVertexPosition, 1.0); + vTextureCoord = aTextureCoord; + + vVertex = aVertexPosition; + // vVertex = normalize(aVertexPosition); + vNormal = aNormal; +} \ No newline at end of file diff --git a/experiments/flame/src/alfrid/shader/index.js b/experiments/flame/src/alfrid/shader/index.js new file mode 100644 index 00000000..279b5940 --- /dev/null +++ b/experiments/flame/src/alfrid/shader/index.js @@ -0,0 +1,15 @@ +import fsSimpleColor from "./glsl/simpleColor.frag"; +import fsCopy from "./glsl/copy.frag"; +import vsGeneral from "./glsl/general.vert"; +import vsTriangle from "./glsl/bigTriangle.vert"; +// import vsSkybox from "./glsl/skybox.vert"; + +const ShaderLibs = { + simpleColorFrag: fsSimpleColor, + copyFrag: fsCopy, + bigTriangleVert: vsTriangle, + generalVert: vsGeneral, + // skyboxVert: vsSkybox, +}; + +export { ShaderLibs }; diff --git a/experiments/flame/src/alfrid/utils/BitSwitch.js b/experiments/flame/src/alfrid/utils/BitSwitch.js new file mode 100644 index 00000000..6e2cdedb --- /dev/null +++ b/experiments/flame/src/alfrid/utils/BitSwitch.js @@ -0,0 +1,34 @@ +// bit-switch.js + +class BitSwitch { + constructor(mValue) { + this._value = mValue; + } + + set(mNumDigit, mValue = 1) { + this._value = this._value; + + if (mValue === 0) { + this._value = this._value & (0 << mNumDigit); + } else { + this._value = this._value | (1 << mNumDigit); + } + } + + get(mNumDigit) { + let value = this._value & (1 << mNumDigit); + value = value >> mNumDigit; + + return value === 1; + } + + reset(mValue) { + this._value = mValue; + } + + get value() { + return this._value; + } +} + +export { BitSwitch }; diff --git a/experiments/flame/src/alfrid/utils/BufferUtils.js b/experiments/flame/src/alfrid/utils/BufferUtils.js new file mode 100644 index 00000000..bfdfc150 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/BufferUtils.js @@ -0,0 +1,59 @@ +export const getBuffer = function(attr, GL) { + let buffer; + const { gl } = GL; + + if (attr.buffer !== undefined) { + buffer = attr.buffer; + } else { + buffer = gl.createBuffer(); + attr.buffer = buffer; + GL.bufferCount++; + } + + return buffer; +}; + +export const formBuffer = function(mData, mNum) { + const ary = []; + + for (let i = 0; i < mData.length; i += mNum) { + const o = []; + for (let j = 0; j < mNum; j++) { + o.push(mData[i + j]); + } + + ary.push(o); + } + + return ary; +}; + +export const getAttribLoc = (gl, shaderProgram, name) => { + if (shaderProgram.cacheAttribLoc === undefined) { + shaderProgram.cacheAttribLoc = {}; + } + if (shaderProgram.cacheAttribLoc[name] === undefined) { + shaderProgram.cacheAttribLoc[name] = gl.getAttribLocation( + shaderProgram, + name + ); + } + + return shaderProgram.cacheAttribLoc[name]; +}; + +export const flatten = (mValues) => { + // console.log("flatten", mValues, mValues[0] instanceof Float32Array); + if (mValues[0] instanceof Float32Array) { + const b = mValues.reduce((total, curr) => { + for (let i = 0; i < curr.length; i++) { + total.push(curr[i]); + } + return total; + }, []); + + return b; + } else { + return mValues.flat(); + } +}; diff --git a/experiments/flame/src/alfrid/utils/EaseNumber.js b/experiments/flame/src/alfrid/utils/EaseNumber.js new file mode 100644 index 00000000..fba537de --- /dev/null +++ b/experiments/flame/src/alfrid/utils/EaseNumber.js @@ -0,0 +1,69 @@ +import Scheduler from "scheduling"; + +class EaseNumber { + constructor(mValue, mEasing = 0.1) { + this.easing = mEasing; + this._value = mValue; + this._targetValue = mValue; + this._efIndex = Scheduler.addEF(() => this._update()); + } + + _update() { + const MIN_DIFF = 0.0001; + this._checkLimit(); + this._value += (this._targetValue - this._value) * this.easing; + if (Math.abs(this._targetValue - this._value) < MIN_DIFF) { + this._value = this._targetValue; + } + } + + setTo(mValue) { + this._targetValue = this._value = mValue; + } + + add(mAdd) { + this._targetValue += mAdd; + } + + limit(mMin, mMax) { + if (mMin > mMax) { + this.limit(mMax, mMin); + return; + } + + this._min = mMin; + this._max = mMax; + + this._checkLimit(); + } + + _checkLimit() { + if (this._min !== undefined && this._targetValue < this._min) { + this._targetValue = this._min; + } + + if (this._max !== undefined && this._targetValue > this._max) { + this._targetValue = this._max; + } + } + + destroy() { + Scheduler.removeEF(this._efIndex); + } + + // GETTERS / SETTERS + + set value(mValue) { + this._targetValue = mValue; + } + + get value() { + return this._value; + } + + get targetValue() { + return this._targetValue; + } +} + +export { EaseNumber }; diff --git a/experiments/flame/src/alfrid/utils/HitTestor.js b/experiments/flame/src/alfrid/utils/HitTestor.js new file mode 100644 index 00000000..f8f14602 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/HitTestor.js @@ -0,0 +1,139 @@ +import EventDispatcher from "events"; +import { Ray } from "../math/Ray"; +import { getMouse } from "../utils"; +import { mat4, vec3 } from "gl-matrix"; + +function distance(a, b) { + const dx = a.x - b.x; + const dy = a.y - b.y; + return Math.sqrt(dx * dx + dy * dy); +} + +class HitTestor extends EventDispatcher { + constructor( + mMesh, + mCamera, + mResolution, + mSkipMoveCheck = false, + mListenerTarget = window + ) { + super(); + + this._mesh = mMesh; + this._mesh.generateFaces(); + this._camera = mCamera; + this.faceVertices = mMesh.faces.map((face) => face.vertices); + this.clickTolerance = 8; + + this._ray = new Ray([0, 0, 0], [0, 0, -1]); + this._hit = vec3.fromValues(-999, -999, -999); + this._lastPos; + this._firstPos; + this.modelMatrix = mat4.create(); + this.resolution = mResolution || [window.innerWidth, window.innerHeight]; + + this._listenerTarget = mListenerTarget; + this._skippingMove = mSkipMoveCheck; + this._isMouseDown = false; + + this._onMoveBind = (e) => this._onMove(e); + this._onDownBind = (e) => this._onDown(e); + this._onUpBind = () => this._onUp(); + + this.connect(); + } + + connect() { + this._listenerTarget.addEventListener("mousedown", this._onDownBind); + this._listenerTarget.addEventListener("mousemove", this._onMoveBind); + this._listenerTarget.addEventListener("mouseup", this._onUpBind); + + this._listenerTarget.addEventListener("touchstart", this._onDownBind); + this._listenerTarget.addEventListener("touchmove", this._onMoveBind); + this._listenerTarget.addEventListener("touchend", this._onUpBind); + } + + disconnect() { + this._listenerTarget.removeEventListener("mousedown", this._onDownBind); + this._listenerTarget.removeEventListener("mousemove", this._onMoveBind); + this._listenerTarget.removeEventListener("mouseup", this._onUpBind); + } + + _checkHit(mType = "onHit") { + console.log("check hit"); + this.resolution = [window.innerWidth, window.innerHeight]; + const camera = this._camera; + if (!camera) { + return; + } + + const mx = (this._lastPos.x / this.resolution[0]) * 2.0 - 1.0; + const my = -(this._lastPos.y / this.resolution[1]) * 2.0 + 1.0; + + camera.generateRay([mx, my, 0], this._ray); + + let hit; + const v0 = vec3.create(); + const v1 = vec3.create(); + const v2 = vec3.create(); + let dist = 0; + + const getVector = (v, target) => { + vec3.transformMat4(target, v, this.modelMatrix); + }; + + for (let i = 0; i < this.faceVertices.length; i++) { + const vertices = this.faceVertices[i]; + getVector(vertices[0], v0); + getVector(vertices[1], v1); + getVector(vertices[2], v2); + const t = this._ray.intersectTriangle(v0, v1, v2); + + if (t) { + if (hit) { + const distToCam = vec3.dist(t, camera.position); + if (distToCam < dist) { + hit = vec3.clone(t); + dist = distToCam; + } + } else { + hit = vec3.clone(t); + dist = vec3.dist(hit, camera.position); + } + } + } + + if (hit) { + this._hit = vec3.clone(hit); + this.emit(mType, { hit }); + } else { + this.emit("onUp"); + } + } + + _onDown(e) { + this._firstPos = getMouse(e); + this._lastPos = getMouse(e); + this._checkHit("onDown"); + this._isMouseDown = true; + } + + _onMove(e) { + this._lastPos = getMouse(e); + if (!this._skippingMove) { + this._checkHit(); + } + } + + _onUp() { + const dist = distance(this._firstPos, this._lastPos); + if (dist < this.clickTolerance && this._isMouseDown) { + this._checkHit(); + } else { + this.emit("onUp"); + } + this._isMouseDown = false; + } +} + +export { HitTestor }; diff --git a/experiments/flame/src/alfrid/utils/LogError.js b/experiments/flame/src/alfrid/utils/LogError.js new file mode 100644 index 00000000..9e3ba0f2 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/LogError.js @@ -0,0 +1,14 @@ +const Errors = { + DRAW_BUFFERS: `This browser doesn't support multi render targets : WEBGL_draw_buffers`, + FRAMEBUFFER_CONTEXT: `This framebuffer has been bind to a different WebGL Rendering Context`, + SHADER_CONTEXT: `This shader has been bind to a different WebGL Rendering Context`, + TEXTURE_CONTEXT: `This texture has been bind to a different WebGL Rendering Context`, + CUBE_TEXTURE_CONTEXT: `This cube texture has been bind to a different WebGL Rendering Context`, +}; + +const logError = (mMessage, mExtra = "") => { + console.error(mMessage, mExtra); +}; + +export default logError; +export { Errors }; diff --git a/experiments/flame/src/alfrid/utils/OrbitalControl.js b/experiments/flame/src/alfrid/utils/OrbitalControl.js new file mode 100644 index 00000000..bb68984b --- /dev/null +++ b/experiments/flame/src/alfrid/utils/OrbitalControl.js @@ -0,0 +1,193 @@ +// OrbitalControl.js +import { EaseNumber } from "./EaseNumber"; +import Scheduler from "scheduling"; +import { vec3, mat4 } from "gl-matrix"; + +const getMouse = function (mEvent, mTarget) { + const o = mTarget || {}; + if (mEvent.touches) { + o.x = mEvent.touches[0].pageX; + o.y = mEvent.touches[0].pageY; + } else { + o.x = mEvent.clientX; + o.y = mEvent.clientY; + } + + return o; +}; + +class OrbitalControl { + // states + #isRotationLocked = false; + #isZoomLocked = false; + #isShiftDown = false; + #isMouseDown = false; + + // properties + #target; + #mouse = {}; + #preMouse = {}; + #mtx = mat4.create(); + #mtxInvert = mat4.create(); + #mtxShift = mat4.create(); + #mtxShiftSaved = mat4.create(); + #center = vec3.create(); + #position = vec3.create(); + #up = vec3.fromValues(0, 1, 0); + + radius = new EaseNumber(0); + rx = new EaseNumber(0); + ry = new EaseNumber(0); + + #rxSaved = 0; + #rySaved = 0; + + constructor(mTarget, mRadius = 5, mListenerTarget = window) { + this.#target = mTarget; + + this.radius.setTo(mRadius); + this.#position = [0, 0, this.radius]; + + // limit camera angle + this.rx.limit(-Math.PI / 2 + 0.01, Math.PI / 2 - 0.01); + + // events + mListenerTarget.addEventListener("mousewheel", this._onWheel); + mListenerTarget.addEventListener("DOMMouseScroll", this._onWheel); + + mListenerTarget.addEventListener("mousedown", this._onDown); + mListenerTarget.addEventListener("mousemove", this._onMove); + window.addEventListener("mouseup", this._onUp); + + mListenerTarget.addEventListener("touchstart", this._onDown); + mListenerTarget.addEventListener("touchmove", this._onMove); + window.addEventListener("touchend", this._onUp); + + // key + window.addEventListener("keydown", this._onKeyDown); + window.addEventListener("keyup", this._onKeyUp); + + this.update(); + Scheduler.addEF(this._loop); + } + + // public methods + lock(mLock = true) { + this.#isRotationLocked = mLock; + this.#isZoomLocked = mLock; + this.#isMouseDown = false; + } + + lockZoom(mValue = true) { + this.#isZoomLocked = mValue; + } + + lockRotation(mValue = true) { + this.#isRotationLocked = mValue; + } + + update() { + vec3.set(this.#position, 0, 0, this.radius.value); + vec3.rotateX(this.#position, this.#position, [0, 0, 0], this.rx.value); + vec3.rotateY(this.#position, this.#position, [0, 0, 0], this.ry.value); + + mat4.lookAt(this.#mtx, this.#position, this.#center, this.#up); + mat4.invert(this.#mtxInvert, this.#mtx); + + // apply shift + mat4.mul(this.#mtx, this.#mtx, this.#mtxShiftSaved); + mat4.mul(this.#mtx, this.#mtx, this.#mtxShift); + + this.#target?.setViewMatrix(this.#mtx); + } + + // event handling + _onDown = (e) => { + if (this.#isRotationLocked) return; + this.#isMouseDown = true; + getMouse(e, this.#mouse); + getMouse(e, this.#preMouse); + this.#rxSaved = this.rx.targetValue; + this.#rySaved = this.ry.targetValue; + mat4.identity(this.#mtxShift); + }; + + _onMove = (e) => { + if (this.#isRotationLocked) return; + if (!this.#isMouseDown) return; + + getMouse(e, this.#mouse); + + if (e.shiftKey) { + const diff = [ + this.#mouse.x - this.#preMouse.x, + -(this.#mouse.y - this.#preMouse.y), + 0, + ]; + vec3.transformMat4(diff, diff, this.#mtxInvert); + vec3.scale(diff, diff, 0.01); + mat4.identity(this.#mtxShift, this.#mtxShift); + mat4.translate(this.#mtxShift, this.#mtxShift, diff); + return; + } + + const dx = this.#mouse.x - this.#preMouse.x; + this.ry.value = -dx * 0.01 + this.#rySaved; + + const dy = this.#mouse.y - this.#preMouse.y; + this.rx.value = -dy * 0.01 + this.#rxSaved; + }; + + _onUp = () => { + this.#isMouseDown = false; + + if (this.#isShiftDown) { + mat4.mul(this.#mtxShiftSaved, this.#mtxShiftSaved, this.#mtxShift); + mat4.identity(this.#mtxShift); + } + }; + + _onWheel = (e) => { + if (this.#isZoomLocked) { + return; + } + const w = e.wheelDelta; + const d = e.detail; + let value = 0; + if (d) { + if (w) { + value = (w / d / 40) * d > 0 ? 1 : -1; // Opera + } else { + value = -d / 3; // Firefox; TODO: do not /3 for OS X + } + } else { + value = w / 120; + } + + this.radius.add(-value * 2); + if (this.radius.targetValue < 0) { + this.radius.value = 0.0001; + } + }; + + _onKeyDown = (e) => { + if (e.code.indexOf("Shift") > -1) { + this.#isShiftDown = true; + } + }; + + _onKeyUp = (e) => { + if (e.key === "Shift") { + mat4.mul(this.#mtxShiftSaved, this.#mtxShiftSaved, this.#mtxShift); + mat4.identity(this.#mtxShift); + } + this.#isShiftDown = false; + }; + + // private method + _loop = () => { + this.update(); + }; +} + +export { OrbitalControl }; diff --git a/experiments/flame/src/alfrid/utils/Scene.js b/experiments/flame/src/alfrid/utils/Scene.js new file mode 100644 index 00000000..6629f532 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/Scene.js @@ -0,0 +1,60 @@ +import Scheduler from "scheduling"; +import { GL } from "../core/GL"; +import { CameraPerspective } from "../camera/CameraPerspective"; +import { OrbitalControl } from "../utils/OrbitalControl"; + +class Scene { + constructor(mGL) { + this._GL = mGL || GL; + + // setup camera + this.camera = new CameraPerspective(); + this.camera.setPerspective((45 * Math.PI) / 180, GL.aspectRatio, 0.1, 100); + this.orbitalControl = new OrbitalControl(this.camera, 15, window); + this.orbitalControl.radius.value = 10; + this._isRunning = true; + + this._init(); + this._initTextures(); + this._initViews(); + + window.addEventListener("resize", () => this.resize()); + this._efIndex = Scheduler.addEF(() => this._loop()); + } + + stop() { + this._isRunning = false; + } + + resume() { + this._isRunning = true; + } + + _init() {} + + _initTextures() {} + + _initViews() {} + + update() {} + + render() {} + + _loop() { + if (!this._isRunning) { + return; + } + this.update(); + + this._GL.viewport(0, 0, this._GL.width, this._GL.height); + this._GL.setMatrices(this.camera); + this.render(); + } + + resize() { + this._GL.setSize(window.innerWidth, window.innerHeight); + this.camera.setAspectRatio(this._GL.aspectRatio); + } +} + +export { Scene }; diff --git a/experiments/flame/src/alfrid/utils/ShaderUtils.js b/experiments/flame/src/alfrid/utils/ShaderUtils.js new file mode 100644 index 00000000..7648685b --- /dev/null +++ b/experiments/flame/src/alfrid/utils/ShaderUtils.js @@ -0,0 +1,52 @@ +export const addLineNumbers = (string) => { + const lines = string.split("\n"); + for (let i = 0; i < lines.length; i++) { + lines[i] = `${i + 1}: ${lines[i]}`; + } + return lines.join("\n"); +}; + +export const uniformMapping = { + float: "uniform1f", + vec2: "uniform2fv", + vec3: "uniform3fv", + vec4: "uniform4fv", + int: "uniform1i", + ivec2: "uniform2i", + ivec3: "uniform3i", + ivec4: "uniform4i", + mat2: "uniformMatrix2fv", + mat3: "uniformMatrix3fv", + mat4: "uniformMatrix4fv", +}; + +export const cloneValue = (mValue) => { + if (typeof mValue === "number") { + return mValue; + } + if (mValue.slice) { + return mValue.slice(0); + } else { + return new Float32Array(mValue); + } +}; + +export const getUniformType = (mValue) => { + const isArray = typeof mValue === "object"; + + const getArrayUniformType = function(mValue) { + if (mValue.length === 9) { + return "mat3"; + } else if (mValue.length === 16) { + return "mat4"; + } else { + return `vec${mValue.length}`; + } + }; + + if (!isArray) { + return "float"; + } else { + return getArrayUniformType(mValue); + } +}; diff --git a/experiments/flame/src/alfrid/utils/SpringNumber.js b/experiments/flame/src/alfrid/utils/SpringNumber.js new file mode 100644 index 00000000..a520f916 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/SpringNumber.js @@ -0,0 +1,68 @@ +import Scheduler from "scheduling"; + +class SpringNumber { + constructor(mValue, mSpeed = 0.1, mDecreaseRate = 0.9) { + this._value = mValue; + this._targetValue = mValue; + this.speed = mSpeed; + this.decreaseRate = mDecreaseRate; + + this._velocity = 0; + + this._efIndex = Scheduler.addEF(() => this._update()); + } + + _update() { + const MIN_DIFF = 0.0001; + this._checkLimit(); + if (Math.abs(this._targetValue - this._value) < MIN_DIFF) { + this._value = this._targetValue; + return; + } + + this._velocity += (this._targetValue - this._value) * this.speed; + + this._value += this._velocity; + this._velocity *= this.decreaseRate; + + if (Math.abs(this._targetValue - this._value) < MIN_DIFF) { + this._value = this._targetValue; + } + } + + limit(mMin, mMax) { + if (mMin > mMax) { + this.limit(mMax, mMin); + return; + } + + this._min = mMin; + this._max = mMax; + + this._checkLimit(); + } + + _checkLimit() { + if (this._min !== undefined && this._targetValue < this._min) { + this._targetValue = this._min; + } + + if (this._max !== undefined && this._targetValue > this._max) { + this._targetValue = this._max; + } + } + + destroy() { + Scheduler.removeEF(this._efIndex); + } + + set value(mValue) { + this._targetValue = mValue; + } + + get value() { + return this._value; + } +} + +export { SpringNumber }; diff --git a/experiments/flame/src/alfrid/utils/TextureUtils.js b/experiments/flame/src/alfrid/utils/TextureUtils.js new file mode 100644 index 00000000..c1a4845c --- /dev/null +++ b/experiments/flame/src/alfrid/utils/TextureUtils.js @@ -0,0 +1,109 @@ +import { WebGLConst } from "./WebGLConst"; +import { WebGLNumber } from "./WebGLNumber"; + +export const isPowerOfTwo = (x) => { + return x !== 0 && !(x & (x - 1)); +}; + +export const getTextureParameters = function(mParams, mWidth, mHeight) { + if (!mParams.minFilter) { + let minFilter = WebGLConst.LINEAR; + if (mWidth && mWidth) { + if (isPowerOfTwo(mWidth) && isPowerOfTwo(mHeight)) { + minFilter = WebGLConst.NEAREST_MIPMAP_LINEAR; + } + } + + mParams.minFilter = minFilter; + } + + mParams.mipmap = mParams.mipmap === undefined ? true : mParams.mipmap; + mParams.magFilter = mParams.magFilter || WebGLConst.LINEAR; + mParams.wrapS = mParams.wrapS || WebGLConst.CLAMP_TO_EDGE; + mParams.wrapT = mParams.wrapT || WebGLConst.CLAMP_TO_EDGE; + mParams.internalFormat = mParams.internalFormat || WebGLConst.RGBA; + mParams.format = mParams.format || WebGLConst.RGBA; + mParams.premultiplyAlpha = + mParams.premultiplyAlpha === undefined ? false : mParams.premultiplyAlpha; + mParams.level = mParams.level || 0; + mParams.type = mParams.type || WebGLConst.UNSIGNED_BYTE; + + // // default filter to NEAREST for floating point textures + // if (mParams.type !== WebGLConst.UNSIGNED_BYTE) { + // mParams.minFilter = WebGLConst.NEAREST_MIPMAP_LINEAR; + // mParams.magFilter = WebGLConst.LINEAR; + // } + + // webgl2FilterCheck(mParams); + return mParams; +}; + +export const isSourceHtmlElement = (mSource) => { + return ( + mSource instanceof HTMLImageElement || + mSource instanceof HTMLCanvasElement || + mSource instanceof HTMLVideoElement + ); +}; + +export const checkSource = (mSource, mParams) => { + let flag = true; + + // source check + if (mSource.constructor.name === "Array") { + console.error( + "Please convert texture source to Unit8Array or Float32Array" + ); + flag = false; + } + + // type check + if (mParams.type === undefined) { + if (mSource.constructor.name !== "Uint8Array") { + console.error( + "Using none Unit8Array, pleaes specify type in the texture parameters" + ); + } + } + + return flag; +}; + +export const webgl2TextureCheck = (mGL, mParams) => { + if (!mGL.webgl2) { + return; + } + + // if (mParams.type !== WebGLConst.UNSIGNED_BYTE) { + // floating point texture + if (mParams.type === WebGLConst.HALF_FLOAT) { + /** + * enum OES_HALF_FLOAT !== webgl2.HALF_FLOAT + * + */ + mParams.type = mGL.gl.HALF_FLOAT; + mParams.internalFormat = WebGLConst.RGBA16F; + } else if (mParams.type === WebGLConst.FLOAT) { + mParams.internalFormat = WebGLConst.RGBA32F; + } + // } +}; + +/* +export const webgl2FilterCheck = (mParams) => { + const { type, minFilter, magFilter } = mParams; + + if (type !== WebGLConst.UNSIGNED_BYTE) { + if (minFilter !== WebGLConst.NEAREST || magFilter !== WebGLConst.NEAREST) { + console.warn( + "Trying to set min / mag filter to non NEAREST on floating point textures", + `minFilter: ${WebGLNumber[minFilter]}`, + `magFilter: ${WebGLNumber[magFilter]}` + ); + return false; + } else { + return true; + } + } +}; +*/ diff --git a/experiments/flame/src/alfrid/utils/TweenNumber.js b/experiments/flame/src/alfrid/utils/TweenNumber.js new file mode 100644 index 00000000..77a47525 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/TweenNumber.js @@ -0,0 +1,381 @@ +import Scheduler from "scheduling"; + +const Easing = { + Linear: { + None(k) { + return k; + }, + }, + Quadratic: { + In(k) { + return k * k; + }, + Out(k) { + return k * (2 - k); + }, + InOut(k) { + if ((k *= 2) < 1) { + return 0.5 * k * k; + } + return -0.5 * (--k * (k - 2) - 1); + }, + }, + Cubic: { + In(k) { + return k * k * k; + }, + Out(k) { + return --k * k * k + 1; + }, + InOut(k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k; + } + return 0.5 * ((k -= 2) * k * k + 2); + }, + }, + Quartic: { + In(k) { + return k * k * k * k; + }, + Out(k) { + return 1 - --k * k * k * k; + }, + InOut(k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k; + } + return -0.5 * ((k -= 2) * k * k * k - 2); + }, + }, + Quintic: { + In(k) { + return k * k * k * k * k; + }, + Out(k) { + return --k * k * k * k * k + 1; + }, + InOut(k) { + if ((k *= 2) < 1) { + return 0.5 * k * k * k * k * k; + } + return 0.5 * ((k -= 2) * k * k * k * k + 2); + }, + }, + Sinusoidal: { + In(k) { + return 1 - Math.cos((k * Math.PI) / 2); + }, + Out(k) { + return Math.sin((k * Math.PI) / 2); + }, + InOut(k) { + return 0.5 * (1 - Math.cos(Math.PI * k)); + }, + }, + Exponential: { + In(k) { + return k === 0 ? 0 : Math.pow(1024, k - 1); + }, + Out(k) { + return k === 1 ? 1 : 1 - Math.pow(2, -10 * k); + }, + InOut(k) { + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if ((k *= 2) < 1) { + return 0.5 * Math.pow(1024, k - 1); + } + return 0.5 * (-Math.pow(2, -10 * (k - 1)) + 2); + }, + }, + Circular: { + In(k) { + return 1 - Math.sqrt(1 - k * k); + }, + Out(k) { + return Math.sqrt(1 - --k * k); + }, + InOut(k) { + if ((k *= 2) < 1) { + return -0.5 * (Math.sqrt(1 - k * k) - 1); + } + return 0.5 * (Math.sqrt(1 - (k -= 2) * k) + 1); + }, + }, + Elastic: { + In(k) { + let s; + let a = 0.1; + const p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = (p * Math.asin(1 / a)) / (2 * Math.PI); + } + return -( + a * + Math.pow(2, 10 * (k -= 1)) * + Math.sin(((k - s) * (2 * Math.PI)) / p) + ); + }, + Out(k) { + let s; + let a = 0.1; + const p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = (p * Math.asin(1 / a)) / (2 * Math.PI); + } + return ( + a * Math.pow(2, -10 * k) * Math.sin(((k - s) * (2 * Math.PI)) / p) + 1 + ); + }, + InOut(k) { + let s; + let a = 0.1; + const p = 0.4; + if (k === 0) { + return 0; + } + if (k === 1) { + return 1; + } + if (!a || a < 1) { + a = 1; + s = p / 4; + } else { + s = (p * Math.asin(1 / a)) / (2 * Math.PI); + } + if ((k *= 2) < 1) { + return ( + -0.5 * + (a * + Math.pow(2, 10 * (k -= 1)) * + Math.sin(((k - s) * (2 * Math.PI)) / p)) + ); + } + return ( + a * + Math.pow(2, -10 * (k -= 1)) * + Math.sin(((k - s) * (2 * Math.PI)) / p) * + 0.5 + + 1 + ); + }, + }, + Back: { + In(k) { + const s = 1.70158; + return k * k * ((s + 1) * k - s); + }, + Out(k) { + const s = 1.70158; + return --k * k * ((s + 1) * k + s) + 1; + }, + InOut(k) { + const s = 1.70158 * 1.525; + if ((k *= 2) < 1) { + return 0.5 * (k * k * ((s + 1) * k - s)); + } + return 0.5 * ((k -= 2) * k * ((s + 1) * k + s) + 2); + }, + }, + Bounce: { + in(k) { + return 1 - Easing.Bounce.out(1 - k); + }, + out(k) { + if (k < 1 / 2.75) { + return 7.5625 * k * k; + } else if (k < 2 / 2.75) { + return 7.5625 * (k -= 1.5 / 2.75) * k + 0.75; + } else if (k < 2.5 / 2.75) { + return 7.5625 * (k -= 2.25 / 2.75) * k + 0.9375; + } else { + return 7.5625 * (k -= 2.625 / 2.75) * k + 0.984375; + } + }, + inOut(k) { + if (k < 0.5) { + return Easing.Bounce.in(k * 2) * 0.5; + } + return Easing.Bounce.out(k * 2 - 1) * 0.5 + 0.5; + }, + }, +}; + +function getFunc(mEasing) { + switch (mEasing) { + default: + case "linear": + return Easing.Linear.None; + case "expIn": + return Easing.Exponential.In; + case "expOut": + return Easing.Exponential.Out; + case "expInOut": + return Easing.Exponential.InOut; + + case "cubicIn": + return Easing.Cubic.In; + case "cubicOut": + return Easing.Cubic.Out; + case "cubicInOut": + return Easing.Cubic.InOut; + + case "quarticIn": + return Easing.Quartic.In; + case "quarticOut": + return Easing.Quartic.Out; + case "quarticInOut": + return Easing.Quartic.InOut; + + case "quinticIn": + return Easing.Quintic.In; + case "quinticOut": + return Easing.Quintic.Out; + case "quinticInOut": + return Easing.Quintic.InOut; + + case "sinusoidalIn": + return Easing.Sinusoidal.In; + case "sinusoidalOut": + return Easing.Sinusoidal.Out; + case "sinusoidalInOut": + return Easing.Sinusoidal.InOut; + + case "circularIn": + return Easing.Circular.In; + case "circularOut": + return Easing.Circular.Out; + case "circularInOut": + return Easing.Circular.InOut; + + case "elasticIn": + return Easing.Elastic.In; + case "elasticOut": + return Easing.Elastic.Out; + case "elasticInOut": + return Easing.Elastic.InOut; + + case "backIn": + return Easing.Back.In; + case "backOut": + return Easing.Back.Out; + case "backInOut": + return Easing.Back.InOut; + + case "bounceIn": + return Easing.Bounce.in; + case "bounceOut": + return Easing.Bounce.out; + case "bounceInOut": + return Easing.Bounce.inOut; + } +} + +class TweenNumber { + constructor(mValue, mEasing = "expOut", mSpeed = 0.01) { + this._value = mValue; + this._startValue = mValue; + this._targetValue = mValue; + this._counter = 1; + this.speed = mSpeed; + this.easing = mEasing; + this._needUpdate = true; + + this._efIndex = Scheduler.addEF(() => this._update()); + } + + _update() { + let newCounter = this._counter + this.speed; + if (newCounter > 1) { + newCounter = 1; + } + if (this._counter === newCounter) { + this._needUpdate = false; + return; + } + + this._counter = newCounter; + this._needUpdate = true; + } + + limit(mMin, mMax) { + if (mMin > mMax) { + this.limit(mMax, mMin); + return; + } + + this._min = mMin; + this._max = mMax; + + this._checkLimit(); + } + + setTo(mValue) { + this._value = mValue; + this._targetValue = mValue; + this._counter = 1; + } + + _checkLimit() { + if (this._min !== undefined && this._targetValue < this._min) { + this._targetValue = this._min; + } + + if (this._max !== undefined && this._targetValue > this._max) { + this._targetValue = this._max; + } + } + + destroy() { + Scheduler.removeEF(this._efIndex); + } + + // GETTERS / SETTERS + + set value(mValue) { + this._startValue = this._value; + this._targetValue = mValue; + this._checkLimit(); + this._counter = 0; + } + + get value() { + if (this._needUpdate) { + const f = getFunc(this.easing); + const p = f(this._counter); + this._value = + this._startValue + p * (this._targetValue - this._startValue); + this._needUpdate = false; + } + return this._value; + } + + get targetValue() { + return this._targetValue; + } +} + +export { TweenNumber }; diff --git a/experiments/flame/src/alfrid/utils/WebGLConst.js b/experiments/flame/src/alfrid/utils/WebGLConst.js new file mode 100644 index 00000000..2654c56d --- /dev/null +++ b/experiments/flame/src/alfrid/utils/WebGLConst.js @@ -0,0 +1,310 @@ +// WebglConst.js + +// stolen there https://github.com/mattdesl/gl-constants thanks @mattdesl ^^ + +export const WebGLConst = { + ACTIVE_ATTRIBUTES: 35721, + ACTIVE_ATTRIBUTE_MAX_LENGTH: 35722, + ACTIVE_TEXTURE: 34016, + ACTIVE_UNIFORMS: 35718, + ACTIVE_UNIFORM_MAX_LENGTH: 35719, + ALIASED_LINE_WIDTH_RANGE: 33902, + ALIASED_POINT_SIZE_RANGE: 33901, + ALPHA: 6406, + ALPHA_BITS: 3413, + ALWAYS: 519, + ARRAY_BUFFER: 34962, + ARRAY_BUFFER_BINDING: 34964, + ATTACHED_SHADERS: 35717, + BACK: 1029, + BLEND: 3042, + BLEND_COLOR: 32773, + BLEND_DST_ALPHA: 32970, + BLEND_DST_RGB: 32968, + BLEND_EQUATION: 32777, + BLEND_EQUATION_ALPHA: 34877, + BLEND_EQUATION_RGB: 32777, + BLEND_SRC_ALPHA: 32971, + BLEND_SRC_RGB: 32969, + BLUE_BITS: 3412, + BOOL: 35670, + BOOL_VEC2: 35671, + BOOL_VEC3: 35672, + BOOL_VEC4: 35673, + BROWSER_DEFAULT_WEBGL: 37444, + BUFFER_SIZE: 34660, + BUFFER_USAGE: 34661, + BYTE: 5120, + CCW: 2305, + CLAMP_TO_EDGE: 33071, + COLOR_ATTACHMENT0: 36064, + COLOR_BUFFER_BIT: 16384, + COLOR_CLEAR_VALUE: 3106, + COLOR_WRITEMASK: 3107, + COMPILE_STATUS: 35713, + COMPRESSED_TEXTURE_FORMATS: 34467, + CONSTANT_ALPHA: 32771, + CONSTANT_COLOR: 32769, + CONTEXT_LOST_WEBGL: 37442, + CULL_FACE: 2884, + CULL_FACE_MODE: 2885, + CURRENT_PROGRAM: 35725, + CURRENT_VERTEX_ATTRIB: 34342, + CW: 2304, + DECR: 7683, + DECR_WRAP: 34056, + DELETE_STATUS: 35712, + DEPTH_ATTACHMENT: 36096, + DEPTH_BITS: 3414, + DEPTH_BUFFER_BIT: 256, + DEPTH_CLEAR_VALUE: 2931, + DEPTH_COMPONENT: 6402, + RED: 6403, + DEPTH_COMPONENT16: 33189, + DEPTH_FUNC: 2932, + DEPTH_RANGE: 2928, + DEPTH_STENCIL: 34041, + DEPTH_STENCIL_ATTACHMENT: 33306, + DEPTH_TEST: 2929, + DEPTH_WRITEMASK: 2930, + DITHER: 3024, + DONT_CARE: 4352, + DST_ALPHA: 772, + DST_COLOR: 774, + DYNAMIC_DRAW: 35048, + ELEMENT_ARRAY_BUFFER: 34963, + ELEMENT_ARRAY_BUFFER_BINDING: 34965, + EQUAL: 514, + FASTEST: 4353, + FLOAT: 5126, + FLOAT_MAT2: 35674, + FLOAT_MAT3: 35675, + FLOAT_MAT4: 35676, + FLOAT_VEC2: 35664, + FLOAT_VEC3: 35665, + FLOAT_VEC4: 35666, + FRAGMENT_SHADER: 35632, + FRAMEBUFFER: 36160, + FRAMEBUFFER_ATTACHMENT_OBJECT_NAME: 36049, + FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE: 36048, + FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE: 36051, + FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL: 36050, + FRAMEBUFFER_BINDING: 36006, + FRAMEBUFFER_COMPLETE: 36053, + FRAMEBUFFER_INCOMPLETE_ATTACHMENT: 36054, + FRAMEBUFFER_INCOMPLETE_DIMENSIONS: 36057, + FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: 36055, + FRAMEBUFFER_UNSUPPORTED: 36061, + FRONT: 1028, + FRONT_AND_BACK: 1032, + FRONT_FACE: 2886, + FUNC_ADD: 32774, + FUNC_REVERSE_SUBTRACT: 32779, + FUNC_SUBTRACT: 32778, + GENERATE_MIPMAP_HINT: 33170, + GEQUAL: 518, + GREATER: 516, + GREEN_BITS: 3411, + HALF_FLOAT: 36193, + HIGH_FLOAT: 36338, + HIGH_INT: 36341, + INCR: 7682, + INCR_WRAP: 34055, + INFO_LOG_LENGTH: 35716, + INT: 5124, + INT_VEC2: 35667, + INT_VEC3: 35668, + INT_VEC4: 35669, + INVALID_ENUM: 1280, + INVALID_FRAMEBUFFER_OPERATION: 1286, + INVALID_OPERATION: 1282, + INVALID_VALUE: 1281, + INVERT: 5386, + KEEP: 7680, + LEQUAL: 515, + LESS: 513, + LINEAR: 9729, + LINEAR_MIPMAP_LINEAR: 9987, + LINEAR_MIPMAP_NEAREST: 9985, + LINES: 1, + LINE_LOOP: 2, + LINE_STRIP: 3, + LINE_WIDTH: 2849, + LINK_STATUS: 35714, + LOW_FLOAT: 36336, + LOW_INT: 36339, + LUMINANCE: 6409, + LUMINANCE_ALPHA: 6410, + MAX_COMBINED_TEXTURE_IMAGE_UNITS: 35661, + MAX_CUBE_MAP_TEXTURE_SIZE: 34076, + MAX_FRAGMENT_UNIFORM_VECTORS: 36349, + MAX_RENDERBUFFER_SIZE: 34024, + MAX_TEXTURE_IMAGE_UNITS: 34930, + MAX_TEXTURE_SIZE: 3379, + MAX_VARYING_VECTORS: 36348, + MAX_VERTEX_ATTRIBS: 34921, + MAX_VERTEX_TEXTURE_IMAGE_UNITS: 35660, + MAX_VERTEX_UNIFORM_VECTORS: 36347, + MAX_VIEWPORT_DIMS: 3386, + MEDIUM_FLOAT: 36337, + MEDIUM_INT: 36340, + MIRRORED_REPEAT: 33648, + NEAREST: 9728, + NEAREST_MIPMAP_LINEAR: 9986, + NEAREST_MIPMAP_NEAREST: 9984, + NEVER: 512, + NICEST: 4354, + NONE: 0, + NOTEQUAL: 517, + NO_ERROR: 0, + NUM_COMPRESSED_TEXTURE_FORMATS: 34466, + ONE: 1, + ONE_MINUS_CONSTANT_ALPHA: 32772, + ONE_MINUS_CONSTANT_COLOR: 32770, + ONE_MINUS_DST_ALPHA: 773, + ONE_MINUS_DST_COLOR: 775, + ONE_MINUS_SRC_ALPHA: 771, + ONE_MINUS_SRC_COLOR: 769, + OUT_OF_MEMORY: 1285, + PACK_ALIGNMENT: 3333, + POINTS: 0, + POLYGON_OFFSET_FACTOR: 32824, + POLYGON_OFFSET_FILL: 32823, + POLYGON_OFFSET_UNITS: 10752, + RED_BITS: 3410, + RENDERBUFFER: 36161, + RENDERBUFFER_ALPHA_SIZE: 36179, + RENDERBUFFER_BINDING: 36007, + RENDERBUFFER_BLUE_SIZE: 36178, + RENDERBUFFER_DEPTH_SIZE: 36180, + RENDERBUFFER_GREEN_SIZE: 36177, + RENDERBUFFER_HEIGHT: 36163, + RENDERBUFFER_INTERNAL_FORMAT: 36164, + RENDERBUFFER_RED_SIZE: 36176, + RENDERBUFFER_STENCIL_SIZE: 36181, + RENDERBUFFER_WIDTH: 36162, + RENDERER: 7937, + REPEAT: 10497, + REPLACE: 7681, + RGB: 6407, + RGB5_A1: 32855, + RGB565: 36194, + RGBA: 6408, + RGBA4: 32854, + SAMPLER_2D: 35678, + SAMPLER_CUBE: 35680, + SAMPLES: 32937, + SAMPLE_ALPHA_TO_COVERAGE: 32926, + SAMPLE_BUFFERS: 32936, + SAMPLE_COVERAGE: 32928, + SAMPLE_COVERAGE_INVERT: 32939, + SAMPLE_COVERAGE_VALUE: 32938, + SCISSOR_BOX: 3088, + SCISSOR_TEST: 3089, + SHADER_COMPILER: 36346, + SHADER_SOURCE_LENGTH: 35720, + SHADER_TYPE: 35663, + SHADING_LANGUAGE_VERSION: 35724, + SHORT: 5122, + SRC_ALPHA: 770, + SRC_ALPHA_SATURATE: 776, + SRC_COLOR: 768, + STATIC_DRAW: 35044, + STENCIL_ATTACHMENT: 36128, + STENCIL_BACK_FAIL: 34817, + STENCIL_BACK_FUNC: 34816, + STENCIL_BACK_PASS_DEPTH_FAIL: 34818, + STENCIL_BACK_PASS_DEPTH_PASS: 34819, + STENCIL_BACK_REF: 36003, + STENCIL_BACK_VALUE_MASK: 36004, + STENCIL_BACK_WRITEMASK: 36005, + STENCIL_BITS: 3415, + STENCIL_BUFFER_BIT: 1024, + STENCIL_CLEAR_VALUE: 2961, + STENCIL_FAIL: 2964, + STENCIL_FUNC: 2962, + STENCIL_INDEX: 6401, + STENCIL_INDEX8: 36168, + STENCIL_PASS_DEPTH_FAIL: 2965, + STENCIL_PASS_DEPTH_PASS: 2966, + STENCIL_REF: 2967, + STENCIL_TEST: 2960, + STENCIL_VALUE_MASK: 2963, + STENCIL_WRITEMASK: 2968, + STREAM_DRAW: 35040, + SUBPIXEL_BITS: 3408, + TEXTURE: 5890, + TEXTURE0: 33984, + TEXTURE1: 33985, + TEXTURE2: 33986, + TEXTURE3: 33987, + TEXTURE4: 33988, + TEXTURE5: 33989, + TEXTURE6: 33990, + TEXTURE7: 33991, + TEXTURE8: 33992, + TEXTURE9: 33993, + TEXTURE10: 33994, + TEXTURE11: 33995, + TEXTURE12: 33996, + TEXTURE13: 33997, + TEXTURE14: 33998, + TEXTURE15: 33999, + TEXTURE16: 34000, + TEXTURE17: 34001, + TEXTURE18: 34002, + TEXTURE19: 34003, + TEXTURE20: 34004, + TEXTURE21: 34005, + TEXTURE22: 34006, + TEXTURE23: 34007, + TEXTURE24: 34008, + TEXTURE25: 34009, + TEXTURE26: 34010, + TEXTURE27: 34011, + TEXTURE28: 34012, + TEXTURE29: 34013, + TEXTURE30: 34014, + TEXTURE31: 34015, + TEXTURE_2D: 3553, + TEXTURE_BINDING_2D: 32873, + TEXTURE_BINDING_CUBE_MAP: 34068, + TEXTURE_CUBE_MAP: 34067, + TEXTURE_CUBE_MAP_NEGATIVE_X: 34070, + TEXTURE_CUBE_MAP_NEGATIVE_Y: 34072, + TEXTURE_CUBE_MAP_NEGATIVE_Z: 34074, + TEXTURE_CUBE_MAP_POSITIVE_X: 34069, + TEXTURE_CUBE_MAP_POSITIVE_Y: 34071, + TEXTURE_CUBE_MAP_POSITIVE_Z: 34073, + TEXTURE_MAG_FILTER: 10240, + TEXTURE_MIN_FILTER: 10241, + TEXTURE_WRAP_S: 10242, + TEXTURE_WRAP_T: 10243, + TRIANGLES: 4, + TRIANGLE_FAN: 6, + TRIANGLE_STRIP: 5, + UNPACK_ALIGNMENT: 3317, + UNPACK_COLORSPACE_CONVERSION_WEBGL: 37443, + UNPACK_FLIP_Y_WEBGL: 37440, + UNPACK_PREMULTIPLY_ALPHA_WEBGL: 37441, + UNSIGNED_BYTE: 5121, + UNSIGNED_INT: 5125, + UNSIGNED_SHORT: 5123, + UNSIGNED_SHORT_4_4_4_4: 32819, + UNSIGNED_SHORT_5_5_5_1: 32820, + UNSIGNED_SHORT_5_6_5: 33635, + VALIDATE_STATUS: 35715, + VENDOR: 7936, + VERSION: 7938, + VERTEX_ATTRIB_ARRAY_BUFFER_BINDING: 34975, + VERTEX_ATTRIB_ARRAY_ENABLED: 34338, + VERTEX_ATTRIB_ARRAY_NORMALIZED: 34922, + VERTEX_ATTRIB_ARRAY_POINTER: 34373, + VERTEX_ATTRIB_ARRAY_SIZE: 34339, + VERTEX_ATTRIB_ARRAY_STRIDE: 34340, + VERTEX_ATTRIB_ARRAY_TYPE: 34341, + VERTEX_SHADER: 35633, + VIEWPORT: 2978, + ZERO: 0, + R8: 33321, +}; diff --git a/experiments/flame/src/alfrid/utils/WebGLNumber.js b/experiments/flame/src/alfrid/utils/WebGLNumber.js new file mode 100644 index 00000000..61111204 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/WebGLNumber.js @@ -0,0 +1,301 @@ +export const WebGLNumber = { + 0: "NONE", + 1: "ONE", + 2: "LINE_LOOP", + 3: "LINE_STRIP", + 4: "TRIANGLES", + 5: "TRIANGLE_STRIP", + 6: "TRIANGLE_FAN", + 256: "DEPTH_BUFFER_BIT", + 512: "NEVER", + 513: "LESS", + 514: "EQUAL", + 515: "LEQUAL", + 516: "GREATER", + 517: "NOTEQUAL", + 518: "GEQUAL", + 519: "ALWAYS", + 768: "SRC_COLOR", + 769: "ONE_MINUS_SRC_COLOR", + 770: "SRC_ALPHA", + 771: "ONE_MINUS_SRC_ALPHA", + 772: "DST_ALPHA", + 773: "ONE_MINUS_DST_ALPHA", + 774: "DST_COLOR", + 775: "ONE_MINUS_DST_COLOR", + 776: "SRC_ALPHA_SATURATE", + 1024: "STENCIL_BUFFER_BIT", + 1028: "FRONT", + 1029: "BACK", + 1032: "FRONT_AND_BACK", + 1280: "INVALID_ENUM", + 1281: "INVALID_VALUE", + 1282: "INVALID_OPERATION", + 1285: "OUT_OF_MEMORY", + 1286: "INVALID_FRAMEBUFFER_OPERATION", + 2304: "CW", + 2305: "CCW", + 2849: "LINE_WIDTH", + 2884: "CULL_FACE", + 2885: "CULL_FACE_MODE", + 2886: "FRONT_FACE", + 2928: "DEPTH_RANGE", + 2929: "DEPTH_TEST", + 2930: "DEPTH_WRITEMASK", + 2931: "DEPTH_CLEAR_VALUE", + 2932: "DEPTH_FUNC", + 2960: "STENCIL_TEST", + 2961: "STENCIL_CLEAR_VALUE", + 2962: "STENCIL_FUNC", + 2963: "STENCIL_VALUE_MASK", + 2964: "STENCIL_FAIL", + 2965: "STENCIL_PASS_DEPTH_FAIL", + 2966: "STENCIL_PASS_DEPTH_PASS", + 2967: "STENCIL_REF", + 2968: "STENCIL_WRITEMASK", + 2978: "VIEWPORT", + 3024: "DITHER", + 3042: "BLEND", + 3088: "SCISSOR_BOX", + 3089: "SCISSOR_TEST", + 3106: "COLOR_CLEAR_VALUE", + 3107: "COLOR_WRITEMASK", + 3317: "UNPACK_ALIGNMENT", + 3333: "PACK_ALIGNMENT", + 3379: "MAX_TEXTURE_SIZE", + 3386: "MAX_VIEWPORT_DIMS", + 3408: "SUBPIXEL_BITS", + 3410: "RED_BITS", + 3411: "GREEN_BITS", + 3412: "BLUE_BITS", + 3413: "ALPHA_BITS", + 3414: "DEPTH_BITS", + 3415: "STENCIL_BITS", + 3553: "TEXTURE_2D", + 4352: "DONT_CARE", + 4353: "FASTEST", + 4354: "NICEST", + 5120: "BYTE", + 5121: "UNSIGNED_BYTE", + 5122: "SHORT", + 5123: "UNSIGNED_SHORT", + 5124: "INT", + 5125: "UNSIGNED_INT", + 5126: "FLOAT", + 5386: "INVERT", + 5890: "TEXTURE", + 6401: "STENCIL_INDEX", + 6402: "DEPTH_COMPONENT", + 6403: "RED", + 6406: "ALPHA", + 6407: "RGB", + 6408: "RGBA", + 6409: "LUMINANCE", + 6410: "LUMINANCE_ALPHA", + 7680: "KEEP", + 7681: "REPLACE", + 7682: "INCR", + 7683: "DECR", + 7936: "VENDOR", + 7937: "RENDERER", + 7938: "VERSION", + 9728: "NEAREST", + 9729: "LINEAR", + 9984: "NEAREST_MIPMAP_NEAREST", + 9985: "LINEAR_MIPMAP_NEAREST", + 9986: "NEAREST_MIPMAP_LINEAR", + 9987: "LINEAR_MIPMAP_LINEAR", + 10240: "TEXTURE_MAG_FILTER", + 10241: "TEXTURE_MIN_FILTER", + 10242: "TEXTURE_WRAP_S", + 10243: "TEXTURE_WRAP_T", + 10497: "REPEAT", + 10752: "POLYGON_OFFSET_UNITS", + 16384: "COLOR_BUFFER_BIT", + 32769: "CONSTANT_COLOR", + 32770: "ONE_MINUS_CONSTANT_COLOR", + 32771: "CONSTANT_ALPHA", + 32772: "ONE_MINUS_CONSTANT_ALPHA", + 32773: "BLEND_COLOR", + 32774: "FUNC_ADD", + 32777: "BLEND_EQUATION_RGB", + 32778: "FUNC_SUBTRACT", + 32779: "FUNC_REVERSE_SUBTRACT", + 32819: "UNSIGNED_SHORT_4_4_4_4", + 32820: "UNSIGNED_SHORT_5_5_5_1", + 32823: "POLYGON_OFFSET_FILL", + 32824: "POLYGON_OFFSET_FACTOR", + 32854: "RGBA4", + 32855: "RGB5_A1", + 32873: "TEXTURE_BINDING_2D", + 32926: "SAMPLE_ALPHA_TO_COVERAGE", + 32928: "SAMPLE_COVERAGE", + 32936: "SAMPLE_BUFFERS", + 32937: "SAMPLES", + 32938: "SAMPLE_COVERAGE_VALUE", + 32939: "SAMPLE_COVERAGE_INVERT", + 32968: "BLEND_DST_RGB", + 32969: "BLEND_SRC_RGB", + 32970: "BLEND_DST_ALPHA", + 32971: "BLEND_SRC_ALPHA", + 33071: "CLAMP_TO_EDGE", + 33170: "GENERATE_MIPMAP_HINT", + 33189: "DEPTH_COMPONENT16", + 33306: "DEPTH_STENCIL_ATTACHMENT", + 33321: "R8", + 33635: "UNSIGNED_SHORT_5_6_5", + 33648: "MIRRORED_REPEAT", + 33901: "ALIASED_POINT_SIZE_RANGE", + 33902: "ALIASED_LINE_WIDTH_RANGE", + 33984: "TEXTURE0", + 33985: "TEXTURE1", + 33986: "TEXTURE2", + 33987: "TEXTURE3", + 33988: "TEXTURE4", + 33989: "TEXTURE5", + 33990: "TEXTURE6", + 33991: "TEXTURE7", + 33992: "TEXTURE8", + 33993: "TEXTURE9", + 33994: "TEXTURE10", + 33995: "TEXTURE11", + 33996: "TEXTURE12", + 33997: "TEXTURE13", + 33998: "TEXTURE14", + 33999: "TEXTURE15", + 34000: "TEXTURE16", + 34001: "TEXTURE17", + 34002: "TEXTURE18", + 34003: "TEXTURE19", + 34004: "TEXTURE20", + 34005: "TEXTURE21", + 34006: "TEXTURE22", + 34007: "TEXTURE23", + 34008: "TEXTURE24", + 34009: "TEXTURE25", + 34010: "TEXTURE26", + 34011: "TEXTURE27", + 34012: "TEXTURE28", + 34013: "TEXTURE29", + 34014: "TEXTURE30", + 34015: "TEXTURE31", + 34016: "ACTIVE_TEXTURE", + 34024: "MAX_RENDERBUFFER_SIZE", + 34041: "DEPTH_STENCIL", + 34055: "INCR_WRAP", + 34056: "DECR_WRAP", + 34067: "TEXTURE_CUBE_MAP", + 34068: "TEXTURE_BINDING_CUBE_MAP", + 34069: "TEXTURE_CUBE_MAP_POSITIVE_X", + 34070: "TEXTURE_CUBE_MAP_NEGATIVE_X", + 34071: "TEXTURE_CUBE_MAP_POSITIVE_Y", + 34072: "TEXTURE_CUBE_MAP_NEGATIVE_Y", + 34073: "TEXTURE_CUBE_MAP_POSITIVE_Z", + 34074: "TEXTURE_CUBE_MAP_NEGATIVE_Z", + 34076: "MAX_CUBE_MAP_TEXTURE_SIZE", + 34338: "VERTEX_ATTRIB_ARRAY_ENABLED", + 34339: "VERTEX_ATTRIB_ARRAY_SIZE", + 34340: "VERTEX_ATTRIB_ARRAY_STRIDE", + 34341: "VERTEX_ATTRIB_ARRAY_TYPE", + 34342: "CURRENT_VERTEX_ATTRIB", + 34373: "VERTEX_ATTRIB_ARRAY_POINTER", + 34466: "NUM_COMPRESSED_TEXTURE_FORMATS", + 34467: "COMPRESSED_TEXTURE_FORMATS", + 34660: "BUFFER_SIZE", + 34661: "BUFFER_USAGE", + 34816: "STENCIL_BACK_FUNC", + 34817: "STENCIL_BACK_FAIL", + 34818: "STENCIL_BACK_PASS_DEPTH_FAIL", + 34819: "STENCIL_BACK_PASS_DEPTH_PASS", + 34877: "BLEND_EQUATION_ALPHA", + 34921: "MAX_VERTEX_ATTRIBS", + 34922: "VERTEX_ATTRIB_ARRAY_NORMALIZED", + 34930: "MAX_TEXTURE_IMAGE_UNITS", + 34962: "ARRAY_BUFFER", + 34963: "ELEMENT_ARRAY_BUFFER", + 34964: "ARRAY_BUFFER_BINDING", + 34965: "ELEMENT_ARRAY_BUFFER_BINDING", + 34975: "VERTEX_ATTRIB_ARRAY_BUFFER_BINDING", + 35040: "STREAM_DRAW", + 35044: "STATIC_DRAW", + 35048: "DYNAMIC_DRAW", + 35632: "FRAGMENT_SHADER", + 35633: "VERTEX_SHADER", + 35660: "MAX_VERTEX_TEXTURE_IMAGE_UNITS", + 35661: "MAX_COMBINED_TEXTURE_IMAGE_UNITS", + 35663: "SHADER_TYPE", + 35664: "FLOAT_VEC2", + 35665: "FLOAT_VEC3", + 35666: "FLOAT_VEC4", + 35667: "INT_VEC2", + 35668: "INT_VEC3", + 35669: "INT_VEC4", + 35670: "BOOL", + 35671: "BOOL_VEC2", + 35672: "BOOL_VEC3", + 35673: "BOOL_VEC4", + 35674: "FLOAT_MAT2", + 35675: "FLOAT_MAT3", + 35676: "FLOAT_MAT4", + 35678: "SAMPLER_2D", + 35680: "SAMPLER_CUBE", + 35712: "DELETE_STATUS", + 35713: "COMPILE_STATUS", + 35714: "LINK_STATUS", + 35715: "VALIDATE_STATUS", + 35716: "INFO_LOG_LENGTH", + 35717: "ATTACHED_SHADERS", + 35718: "ACTIVE_UNIFORMS", + 35719: "ACTIVE_UNIFORM_MAX_LENGTH", + 35720: "SHADER_SOURCE_LENGTH", + 35721: "ACTIVE_ATTRIBUTES", + 35722: "ACTIVE_ATTRIBUTE_MAX_LENGTH", + 35724: "SHADING_LANGUAGE_VERSION", + 35725: "CURRENT_PROGRAM", + 36003: "STENCIL_BACK_REF", + 36004: "STENCIL_BACK_VALUE_MASK", + 36005: "STENCIL_BACK_WRITEMASK", + 36006: "FRAMEBUFFER_BINDING", + 36007: "RENDERBUFFER_BINDING", + 36048: "FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE", + 36049: "FRAMEBUFFER_ATTACHMENT_OBJECT_NAME", + 36050: "FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL", + 36051: "FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE", + 36053: "FRAMEBUFFER_COMPLETE", + 36054: "FRAMEBUFFER_INCOMPLETE_ATTACHMENT", + 36055: "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT", + 36057: "FRAMEBUFFER_INCOMPLETE_DIMENSIONS", + 36061: "FRAMEBUFFER_UNSUPPORTED", + 36064: "COLOR_ATTACHMENT0", + 36096: "DEPTH_ATTACHMENT", + 36128: "STENCIL_ATTACHMENT", + 36160: "FRAMEBUFFER", + 36161: "RENDERBUFFER", + 36162: "RENDERBUFFER_WIDTH", + 36163: "RENDERBUFFER_HEIGHT", + 36164: "RENDERBUFFER_INTERNAL_FORMAT", + 36168: "STENCIL_INDEX8", + 36176: "RENDERBUFFER_RED_SIZE", + 36177: "RENDERBUFFER_GREEN_SIZE", + 36178: "RENDERBUFFER_BLUE_SIZE", + 36179: "RENDERBUFFER_ALPHA_SIZE", + 36180: "RENDERBUFFER_DEPTH_SIZE", + 36181: "RENDERBUFFER_STENCIL_SIZE", + 36193: "HALF_FLOAT", + 36194: "RGB565", + 36336: "LOW_FLOAT", + 36337: "MEDIUM_FLOAT", + 36338: "HIGH_FLOAT", + 36339: "LOW_INT", + 36340: "MEDIUM_INT", + 36341: "HIGH_INT", + 36346: "SHADER_COMPILER", + 36347: "MAX_VERTEX_UNIFORM_VECTORS", + 36348: "MAX_VARYING_VECTORS", + 36349: "MAX_FRAGMENT_UNIFORM_VECTORS", + 37440: "UNPACK_FLIP_Y_WEBGL", + 37441: "UNPACK_PREMULTIPLY_ALPHA_WEBGL", + 37442: "CONTEXT_LOST_WEBGL", + 37443: "UNPACK_COLORSPACE_CONVERSION_WEBGL", + 37444: "BROWSER_DEFAULT_WEBGL", +}; diff --git a/experiments/flame/src/alfrid/utils/checkWebGL2.js b/experiments/flame/src/alfrid/utils/checkWebGL2.js new file mode 100644 index 00000000..27e4403c --- /dev/null +++ b/experiments/flame/src/alfrid/utils/checkWebGL2.js @@ -0,0 +1,8 @@ +const checkWebGL2 = () => { + const canvas = document.createElement("canvas"); + const ctx = + canvas.getContext("experimental-webgl2") || canvas.getContext("webgl2"); + return !!ctx; +}; + +export { checkWebGL2 }; diff --git a/experiments/flame/src/alfrid/utils/exposeGLProperties.js b/experiments/flame/src/alfrid/utils/exposeGLProperties.js new file mode 100644 index 00000000..0e4c4db7 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/exposeGLProperties.js @@ -0,0 +1,27 @@ +import { WebGLConst } from "./WebGLConst"; +import { WebGLNumber } from "./WebGLNumber"; + +const exposeGLProperties = (GL) => { + // console.log(GL); + for (const s in WebGLConst) { + if (!GL[s]) { + GL[s] = WebGLConst[s]; + } else { + // if (s !== "FLOAT") console.log("already exist : ", s); + console.log("already exist : ", s); + } + } + + if (GL.webgl2) { + const check = /^[^a-z]*$/; + for (const s in GL.gl) { + if (check.test(s) && s.indexOf("FLOAT") === -1) { + GL[s] = GL.gl[s]; + WebGLConst[s] = GL.gl[s]; + WebGLNumber[GL[s]] = s; + } + } + } +}; + +export default exposeGLProperties; diff --git a/experiments/flame/src/alfrid/utils/getAndApplyExtension.js b/experiments/flame/src/alfrid/utils/getAndApplyExtension.js new file mode 100644 index 00000000..c53247ab --- /dev/null +++ b/experiments/flame/src/alfrid/utils/getAndApplyExtension.js @@ -0,0 +1,23 @@ +// VertexArrayObject.js + +export default function getAndApplyExtension(gl, name) { + const ext = gl.getExtension(name); + if (!ext) { + return false; + } + const suffix = name.split("_")[0]; + const suffixRE = new RegExp(`${suffix}$`); + + for (const key in ext) { + const val = ext[key]; + if (typeof val === "function") { + const unsuffixedKey = key.replace(suffixRE, ""); + if (key.substring) { + gl[unsuffixedKey] = ext[key].bind(ext); + // console.log("Replacing :", key, "=>", unsuffixedKey); + } + } + } + + return true; +} diff --git a/experiments/flame/src/alfrid/utils/getExtensions.js b/experiments/flame/src/alfrid/utils/getExtensions.js new file mode 100644 index 00000000..3f83f0d1 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/getExtensions.js @@ -0,0 +1,80 @@ +import getAndApplyExtension from "./getAndApplyExtension"; + +const extensionsWebGL = [ + "EXT_shader_texture_lod", + "EXT_sRGB", + "EXT_frag_depth", + "OES_texture_float", + "OES_texture_half_float", + "OES_texture_float_linear", + "OES_texture_half_float_linear", + "OES_standard_derivatives", + "OES_element_index_uint", + "EXT_texture_filter_anisotropic", + "EXT_color_buffer_half_float", + "OES_vertex_array_object", + "WEBGL_depth_texture", + "ANGLE_instanced_arrays", + "WEBGL_color_buffer_float", + "WEBGL_draw_buffers", + "EXT_color_buffer_float", +]; + +// const extensionsWebGL2 = [ +// "EXT_color_buffer_float", +// "EXT_texture_filter_anisotropic", +// "OES_element_index_uint", +// "OES_texture_float_linear", +// "OES_texture_half_float_linear", +// ]; + +/** + * Clear WebGL Context + * + * @param {object} mGL the GLTool Instance + * @returns {object} the object contains all extensions + */ + +const getExtensions = (mGL) => { + const { gl } = mGL; + const isWebGL2 = + window.WebGL2RenderingContext && gl instanceof WebGL2RenderingContext; + const extensions = {}; + const extensionsList = extensionsWebGL; + extensionsList.forEach((ext) => { + extensions[ext] = gl.getExtension(ext); + }); + + if (!isWebGL2) { + // only IE not support + // caniuse.com/?search=OES_vertex_array_object + if (!extensions["OES_vertex_array_object"]) { + console.error("OES_vertex_array_object extension is not supported"); + } + getAndApplyExtension(gl, "OES_vertex_array_object"); + getAndApplyExtension(gl, "ANGLE_instanced_arrays"); + getAndApplyExtension(gl, "WEBGL_draw_buffers"); + } + + // ANISOTROPY Filter Check + const extAnisotropic = extensions["EXT_texture_filter_anisotropic"]; + if (extAnisotropic) { + mGL.maxAnisotropy = gl.getParameter( + extAnisotropic.MAX_TEXTURE_MAX_ANISOTROPY_EXT + ); + } + + // Draw Buffers + mGL.multiRenderTargetSupport = !!mGL.gl.drawBuffers; + + if (mGL.multiRenderTargetSupport) { + const MAX_DRAW_BUFFERS = + mGL.gl.MAX_DRAW_BUFFERS || + extensions["WEBGL_draw_buffers"].MAX_DRAW_BUFFERS_WEBGL; + mGL.maxMultiRenderTargets = gl.getParameter(MAX_DRAW_BUFFERS); + } + + return extensions; +}; + +export { getExtensions }; diff --git a/experiments/flame/src/alfrid/utils/index.js b/experiments/flame/src/alfrid/utils/index.js new file mode 100644 index 00000000..d017724e --- /dev/null +++ b/experiments/flame/src/alfrid/utils/index.js @@ -0,0 +1,68 @@ +import { mat4, glMatrix } from "gl-matrix"; +export { checkWebGL2 } from "./checkWebGL2"; +export { getExtensions } from "./getExtensions"; +export { isMobile } from "./isMobile"; + +export const checkViewport = (viewport, x, y, w, h) => { + let hasChanged = false; + if (x !== viewport[0]) { + hasChanged = true; + } + if (y !== viewport[1]) { + hasChanged = true; + } + if (w !== viewport[2]) { + hasChanged = true; + } + if (h !== viewport[3]) { + hasChanged = true; + } + return hasChanged; +}; + +export const equals = (a, b) => { + if (typeof a === "number") { + return glMatrix.equals(a, b); + } + + if (a.length !== b.length) { + return false; + } + + let _isEqual = true; + a.forEach((v, i) => { + _isEqual = glMatrix.equals(v, b[i]) && _isEqual; + }); + return _isEqual; +}; + +export const getMouse = (e) => { + let x, y; + + if (e.touches) { + x = e.touches[0].pageX; + y = e.touches[0].pageY; + } else { + x = e.clientX; + y = e.clientY; + } + + return { + x, + y, + }; +}; + +/* +mat4.log = function(m) { + const a = []; + for (let i = 0; i < 4; i++) { + const b = []; + for (let j = 0; j < 4; j++) { + b.push(m[i * 4 + j]); + } + a.push(b); + } + console.table(a); +}; +*/ diff --git a/experiments/flame/src/alfrid/utils/isMobile.js b/experiments/flame/src/alfrid/utils/isMobile.js new file mode 100644 index 00000000..eabbd08c --- /dev/null +++ b/experiments/flame/src/alfrid/utils/isMobile.js @@ -0,0 +1,16 @@ +const mobileCheck = () => { + let isMobile = false; + if ( + /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( + navigator.userAgent + ) + ) { + isMobile = true; + } + + return isMobile; +}; + +const isMobile = mobileCheck(); + +export { isMobile }; diff --git a/experiments/flame/src/alfrid/utils/parseDds.js b/experiments/flame/src/alfrid/utils/parseDds.js new file mode 100644 index 00000000..aa8e1c95 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/parseDds.js @@ -0,0 +1,30 @@ +import parse from "parse-dds"; + +const DDSD_MIPMAPCOUNT = 0x20000; +const OFF_MIPMAPCOUNT = 7; +const headerLengthInt = 31; + +const parseDds = function(mArrayBuffer) { + // CHECKING MIP MAP LEVELS + const ddsInfos = parse(mArrayBuffer); + const { flags } = ddsInfos; + const header = new Int32Array(mArrayBuffer, 0, headerLengthInt); + let mipmapCount = 1; + if (flags & DDSD_MIPMAPCOUNT) { + mipmapCount = Math.max(1, header[OFF_MIPMAPCOUNT]); + } + const sources = ddsInfos.images.map((img) => { + const faceData = new Float32Array( + mArrayBuffer.slice(img.offset, img.offset + img.length) + ); + return { + data: faceData, + shape: img.shape, + mipmapCount, + }; + }); + + return sources; +}; + +export { parseDds }; diff --git a/experiments/flame/src/alfrid/utils/parseHdr.js b/experiments/flame/src/alfrid/utils/parseHdr.js new file mode 100644 index 00000000..68e61f8f --- /dev/null +++ b/experiments/flame/src/alfrid/utils/parseHdr.js @@ -0,0 +1,214 @@ +// Code ported by Marcin Ignac (2014) +// Based on Java implementation from +// https://code.google.com/r/cys12345-research/source/browse/hdr/image_processor/RGBE.java?r=7d84e9fd866b24079dbe61fa0a966ce8365f5726 +// const radiancePattern = "#\\?RADIANCE"; +// const commentPattern = "#.*"; +// let gammaPattern = 'GAMMA='; +const exposurePattern = "EXPOSURE=\\s*([0-9]*[.][0-9]*)"; +const formatPattern = "FORMAT=32-bit_rle_rgbe"; +const widthHeightPattern = "-Y ([0-9]+) \\+X ([0-9]+)"; + +// http://croquetweak.blogspot.co.uk/2014/08/deconstructing-floats-frexp-and-ldexp.html +// function ldexp(mantissa, exponent) { +// return exponent > 1023 ? mantissa * Math.pow(2, 1023) * Math.pow(2, exponent - 1023) : exponent < -1074 ? mantissa * Math.pow(2, -1074) * Math.pow(2, exponent + 1074) : mantissa * Math.pow(2, exponent); +// } + +function readPixelsRawRLE( + buffer, + data, + offset, + fileOffset, + scanlineWidth, + numScanlines +) { + const rgbe = new Array(4); + let scanlineBuffer = null; + let ptr; + let ptrEnd; + let count; + const buf = new Array(2); + const bufferLength = buffer.length; + + function readBuf(buf) { + let bytesRead = 0; + do { + buf[bytesRead++] = buffer[fileOffset]; + } while (++fileOffset < bufferLength && bytesRead < buf.length); + return bytesRead; + } + + function readBufOffset(buf, offset, length) { + let bytesRead = 0; + do { + buf[offset + bytesRead++] = buffer[fileOffset]; + } while (++fileOffset < bufferLength && bytesRead < length); + return bytesRead; + } + + function readPixelsRaw(buffer, data, offset, numpixels) { + const numExpected = 4 * numpixels; + const numRead = readBufOffset(data, offset, numExpected); + if (numRead < numExpected) { + throw new Error( + `Error reading raw pixels: got ${numRead} bytes, expected ${numExpected}` + ); + } + } + + while (numScanlines > 0) { + if (readBuf(rgbe) < rgbe.length) { + throw new Error(`Error reading bytes: expected ${rgbe.length}`); + } + + if (rgbe[0] !== 2 || rgbe[1] !== 2 || (rgbe[2] & 0x80) !== 0) { + // this file is not run length encoded + data[offset++] = rgbe[0]; + data[offset++] = rgbe[1]; + data[offset++] = rgbe[2]; + data[offset++] = rgbe[3]; + readPixelsRaw(buffer, data, offset, scanlineWidth * numScanlines - 1); + return; + } + + if ((((rgbe[2] & 0xff) << 8) | (rgbe[3] & 0xff)) !== scanlineWidth) { + throw new Error( + `Wrong scanline width ${((rgbe[2] & 0xff) << 8) | + (rgbe[3] & 0xff)}, expected ${scanlineWidth}` + ); + } + + if (scanlineBuffer === null) { + scanlineBuffer = new Array(4 * scanlineWidth); + } + + ptr = 0; + /* read each of the four channels for the scanline into the buffer */ + for (let i = 0; i < 4; i++) { + ptrEnd = (i + 1) * scanlineWidth; + while (ptr < ptrEnd) { + if (readBuf(buf) < buf.length) { + throw new Error("Error reading 2-byte buffer"); + } + if ((buf[0] & 0xff) > 128) { + /* a run of the same value */ + count = (buf[0] & 0xff) - 128; + if (count === 0 || count > ptrEnd - ptr) { + throw new Error("Bad scanline data"); + } + while (count-- > 0) { + scanlineBuffer[ptr++] = buf[1]; + } + } else { + /* a non-run */ + count = buf[0] & 0xff; + if (count === 0 || count > ptrEnd - ptr) { + throw new Error("Bad scanline data"); + } + scanlineBuffer[ptr++] = buf[1]; + if (--count > 0) { + if (readBufOffset(scanlineBuffer, ptr, count) < count) { + throw new Error("Error reading non-run data"); + } + ptr += count; + } + } + } + } + + /* copy byte data to output */ + for (let i = 0; i < scanlineWidth; i++) { + data[offset + 0] = scanlineBuffer[i]; + data[offset + 1] = scanlineBuffer[i + scanlineWidth]; + data[offset + 2] = scanlineBuffer[i + 2 * scanlineWidth]; + data[offset + 3] = scanlineBuffer[i + 3 * scanlineWidth]; + offset += 4; + } + + numScanlines--; + } +} + +// Returns data as floats and flipped along Y by default +function parseHdr(buffer) { + if (buffer instanceof ArrayBuffer) { + buffer = new Uint8Array(buffer); + } + + let fileOffset = 0; + const bufferLength = buffer.length; + + const NEW_LINE = 10; + + function readLine() { + let buf = ""; + do { + const b = buffer[fileOffset]; + if (b === NEW_LINE) { + ++fileOffset; + break; + } + buf += String.fromCharCode(b); + } while (++fileOffset < bufferLength); + return buf; + } + + let width = 0; + let height = 0; + let exposure = 1; + const gamma = 1; + let rle = false; + + for (let i = 0; i < 20; i++) { + const line = readLine(); + let match; + if ((match = line.match(formatPattern))) { + rle = true; + } else if ((match = line.match(exposurePattern))) { + exposure = Number(match[1]); + } else if ((match = line.match(widthHeightPattern))) { + height = Number(match[1]); + width = Number(match[2]); + break; + } + } + + if (!rle) { + throw new Error("File is not run length encoded!"); + } + + const data = new Uint8Array(width * height * 4); + const scanlineWidth = width; + const numScanlines = height; + + readPixelsRawRLE(buffer, data, 0, fileOffset, scanlineWidth, numScanlines); + + // TODO: Should be Float16 + const floatData = new Float32Array(width * height * 4); + for (let offset = 0; offset < data.length; offset += 4) { + let r = data[offset + 0] / 255; + let g = data[offset + 1] / 255; + let b = data[offset + 2] / 255; + const e = data[offset + 3]; + const f = Math.pow(2.0, e - 128.0); + + r *= f; + g *= f; + b *= f; + + const floatOffset = offset; + + floatData[floatOffset + 0] = r; + floatData[floatOffset + 1] = g; + floatData[floatOffset + 2] = b; + floatData[floatOffset + 3] = 1.0; + } + + return { + shape: [width, height], + exposure, + gamma, + data: floatData, + }; +} + +export { parseHdr }; diff --git a/experiments/flame/src/alfrid/utils/parseObj.js b/experiments/flame/src/alfrid/utils/parseObj.js new file mode 100644 index 00000000..b00360e6 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/parseObj.js @@ -0,0 +1,273 @@ +import { Mesh } from "../core/Mesh"; + +const parseObj = (objStr) => { + const lines = objStr.split("\n"); + + const positions = []; + const coords = []; + const finalNormals = []; + const vertices = []; + const normals = []; + const uvs = []; + const indices = []; + let count = 0; + let result; + + // v float float float + const vertexPattern = /v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; + + // vn float float float + const normalPattern = /vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; + + // vt float float + const uvPattern = /vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/; + + // f vertex vertex vertex ... + const facePattern1 = /f( +-?\d+)( +-?\d+)( +-?\d+)( +-?\d+)?/; + + // f vertex/uv vertex/uv vertex/uv ... + const facePattern2 = /f( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))?/; + + // f vertex/uv/normal vertex/uv/normal vertex/uv/normal ... + const facePattern3 = /f( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))?/; + + // f vertex//normal vertex//normal vertex//normal ... + const facePattern4 = /f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/; + + function parseVertexIndex(value) { + const index = parseInt(value); + return (index >= 0 ? index - 1 : index + vertices.length / 3) * 3; + } + + function parseNormalIndex(value) { + const index = parseInt(value); + return (index >= 0 ? index - 1 : index + normals.length / 3) * 3; + } + + function parseUVIndex(value) { + const index = parseInt(value); + return (index >= 0 ? index - 1 : index + uvs.length / 2) * 2; + } + + function addVertex(a, b, c) { + positions.push([vertices[a], vertices[a + 1], vertices[a + 2]]); + positions.push([vertices[b], vertices[b + 1], vertices[b + 2]]); + positions.push([vertices[c], vertices[c + 1], vertices[c + 2]]); + + indices.push(count * 3 + 0); + indices.push(count * 3 + 1); + indices.push(count * 3 + 2); + + count++; + } + + function addUV(a, b, c) { + coords.push([uvs[a], uvs[a + 1]]); + coords.push([uvs[b], uvs[b + 1]]); + coords.push([uvs[c], uvs[c + 1]]); + } + + function addNormal(a, b, c) { + finalNormals.push([normals[a], normals[a + 1], normals[a + 2]]); + finalNormals.push([normals[b], normals[b + 1], normals[b + 2]]); + finalNormals.push([normals[c], normals[c + 1], normals[c + 2]]); + } + + function addFace(a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd) { + let ia = parseVertexIndex(a); + let ib = parseVertexIndex(b); + let ic = parseVertexIndex(c); + let id; + + if (d === undefined) { + addVertex(ia, ib, ic); + } else { + id = parseVertexIndex(d); + + addVertex(ia, ib, id); + addVertex(ib, ic, id); + } + + if (ua !== undefined) { + ia = parseUVIndex(ua); + ib = parseUVIndex(ub); + ic = parseUVIndex(uc); + + if (d === undefined) { + addUV(ia, ib, ic); + } else { + id = parseUVIndex(ud); + + addUV(ia, ib, id); + addUV(ib, ic, id); + } + } + + if (na !== undefined) { + ia = parseNormalIndex(na); + ib = parseNormalIndex(nb); + ic = parseNormalIndex(nc); + + if (d === undefined) { + addNormal(ia, ib, ic); + } else { + id = parseNormalIndex(nd); + + addNormal(ia, ib, id); + addNormal(ib, ic, id); + } + } + } + + for (let i = 0; i < lines.length; i++) { + let line = lines[i]; + line = line.trim(); + + if (line.length === 0 || line.charAt(0) === "#") { + continue; + } else if ((result = vertexPattern.exec(line)) !== null) { + vertices.push( + parseFloat(result[1]), + parseFloat(result[2]), + parseFloat(result[3]) + ); + } else if ((result = normalPattern.exec(line)) !== null) { + normals.push( + parseFloat(result[1]), + parseFloat(result[2]), + parseFloat(result[3]) + ); + } else if ((result = uvPattern.exec(line)) !== null) { + uvs.push(parseFloat(result[1]), parseFloat(result[2])); + } else if ((result = facePattern1.exec(line)) !== null) { + addFace(result[1], result[2], result[3], result[4]); + } else if ((result = facePattern2.exec(line)) !== null) { + addFace( + result[2], + result[5], + result[8], + result[11], + result[3], + result[6], + result[9], + result[12] + ); + } else if ((result = facePattern3.exec(line)) !== null) { + addFace( + result[2], + result[6], + result[10], + result[14], + result[3], + result[7], + result[11], + result[15], + result[4], + result[8], + result[12], + result[16] + ); + } else if ((result = facePattern4.exec(line)) !== null) { + addFace( + result[2], + result[5], + result[8], + result[11], + undefined, + undefined, + undefined, + undefined, + result[3], + result[6], + result[9], + result[12] + ); + } + } + + return generateMeshes({ + positions, + coords, + normals: finalNormals, + indices, + }); +}; + +const generateMeshes = (o) => { + const maxNumVertices = 65535; + const hasNormals = o.normals.length > 0; + const hasUVs = o.coords.length > 0; + let mesh; + + if (o.positions.length > maxNumVertices) { + const meshes = []; + let lastIndex = 0; + + const oCopy = {}; + oCopy.positions = o.positions.concat(); + oCopy.coords = o.coords.concat(); + oCopy.indices = o.indices.concat(); + oCopy.normals = o.normals.concat(); + + while (o.indices.length > 0) { + const sliceNum = Math.min(maxNumVertices, o.positions.length); + const indices = o.indices.splice(0, sliceNum); + const positions = []; + const coords = []; + const normals = []; + let index, + tmpIndex = 0; + + for (let i = 0; i < indices.length; i++) { + if (indices[i] > tmpIndex) { + tmpIndex = indices[i]; + } + + index = indices[i]; + + positions.push(oCopy.positions[index]); + if (hasUVs) { + coords.push(oCopy.coords[index]); + } + if (hasNormals) { + normals.push(oCopy.normals[index]); + } + + indices[i] -= lastIndex; + } + + lastIndex = tmpIndex + 1; + + mesh = new Mesh(); + mesh.bufferVertex(positions); + if (hasUVs) { + mesh.bufferTexCoord(coords); + } + + mesh.bufferIndex(indices); + if (hasNormals) { + mesh.bufferNormal(normals); + } + + meshes.push(mesh); + } + + return meshes; + } else { + mesh = new Mesh(); + mesh.bufferVertex(o.positions); + if (hasUVs) { + mesh.bufferTexCoord(o.coords); + } + mesh.bufferIndex(o.indices); + if (hasNormals) { + mesh.bufferNormal(o.normals); + } + + return mesh; + } + + return null; +}; + +export { parseObj }; diff --git a/experiments/flame/src/alfrid/utils/polyfixes.js b/experiments/flame/src/alfrid/utils/polyfixes.js new file mode 100644 index 00000000..eb912505 --- /dev/null +++ b/experiments/flame/src/alfrid/utils/polyfixes.js @@ -0,0 +1,25 @@ +if (!Array.prototype.flat) { + Object.defineProperty(Array.prototype, "flat", { + configurable: true, + value: function flat() { + var depth = isNaN(arguments[0]) ? 1 : Number(arguments[0]); + + return depth + ? Array.prototype.reduce.call( + this, + function(acc, cur) { + if (Array.isArray(cur)) { + acc.push.apply(acc, flat.call(cur, depth - 1)); + } else { + acc.push(cur); + } + + return acc; + }, + [] + ) + : Array.prototype.slice.call(this); + }, + writable: true, + }); +} diff --git a/experiments/flame/src/asset-list.js b/experiments/flame/src/asset-list.js new file mode 100644 index 00000000..cc8cb816 --- /dev/null +++ b/experiments/flame/src/asset-list.js @@ -0,0 +1,7 @@ + +const assetsToLoad = [ + +]; + + +export default assetsToLoad; \ No newline at end of file diff --git a/experiments/flame/src/color/hex-rgb.js b/experiments/flame/src/color/hex-rgb.js new file mode 100644 index 00000000..1453ef4e --- /dev/null +++ b/experiments/flame/src/color/hex-rgb.js @@ -0,0 +1,45 @@ +/** +* @func hex2rgb +* @desc Return an RGBA color from a Hex color. +* @param {StringHex} hex +* @return {ArrayRGBA} +* @example +* hex2rgb("#f00") // => [100, 0, 0, 100] +* hex2rgb("#f00f") // => [100, 0, 0, 100] +* @example +* hex2rgb("#ff0000") // => [100, 0, 0, 100] +* hex2rgb("#ff0000ff") // => [100, 0, 0, 100] +*/ + +export function hex2rgb(hex) { + // #{3,4,6,8} + const [, r, g, b, a, rr, gg, bb, aa] = hex.match(hexColorMatch) || []; + + if (rr !== undefined || r !== undefined) { + const red = rr !== undefined ? parseInt(rr, 16) : parseInt(r + r, 16); + const green = gg !== undefined ? parseInt(gg, 16) : parseInt(g + g, 16); + const blue = bb !== undefined ? parseInt(bb, 16) : parseInt(b + b, 16); + const alpha = aa !== undefined ? parseInt(aa, 16) : a !== undefined ? parseInt(a + a, 16) : 255; + + return [red, green, blue, alpha].map(c => c * 100 / 255); + } + + return undefined; +} + +/** +* @func rgb2hex +* @desc Return a HEX color from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @return {StringHex} +* @example +* rgb2hex(100, 0, 0) // => "#ff0000" +*/ + +export function rgb2hex(rgbR, rgbG, rgbB) { + return `#${((1 << 24) + (Math.round(rgbR * 255 / 100) << 16) + (Math.round(rgbG * 255 / 100) << 8) + Math.round(rgbB * 255 / 100)).toString(16).slice(1)}`; +} + +const hexColorMatch = /^#?(?:([a-f0-9])([a-f0-9])([a-f0-9])([a-f0-9])?|([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})?)$/i; diff --git a/experiments/flame/src/color/hsl-hsv.js b/experiments/flame/src/color/hsl-hsv.js new file mode 100644 index 00000000..b3aabd0e --- /dev/null +++ b/experiments/flame/src/color/hsl-hsv.js @@ -0,0 +1,42 @@ +/** +* @func hsl2hsv +* @desc Return an HSV color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayHSV} +* @example +* hsl2hsv(0, 100, 50) +* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117 +*/ + +export function hsl2hsv(hslH, hslS, hslL) { + const hsv1 = hslS * (hslL < 50 ? hslL : 100 - hslL) / 100; + const hsvS = hsv1 === 0 ? 0 : 2 * hsv1 / (hslL + hsv1) * 100; + const hsvV = hslL + hsv1; + + return [ hslH, hsvS, hsvV ]; +} + +/** +* @func hsv2hsl +* @desc Return an HSL color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayHSL} +* @example +* hsv2hsl(0, 0, 0) // => [0, 100, 50] +* @link https://gist.github.com/defims/0ca2ef8832833186ed396a2f8a204117 +*/ + +export function hsv2hsl(hsvH, hsvS, hsvV) { + const hslL = (200 - hsvS) * hsvV / 100; + + const [ hslS, hslV ] = [ + hslL === 0 || hslL === 200 ? 0 : hsvS * hsvV / 100 / (hslL <= 100 ? hslL : 200 - hslL) * 100, + hslL * 5 / 10 + ]; + + return [ hsvH, hslS, hslV ]; +} diff --git a/experiments/flame/src/color/hwb-hsv.js b/experiments/flame/src/color/hwb-hsv.js new file mode 100644 index 00000000..5e82199a --- /dev/null +++ b/experiments/flame/src/color/hwb-hsv.js @@ -0,0 +1,44 @@ +/** +* @func hwb2hsv +* @desc Return an HSV color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayHSV} +* @example +* hwb2hsv(0, 0, 0) // => [0, 100, 100] +* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV +*/ + +export function hwb2hsv(hwbH, hwbW, hwbB) { + const [ hsvH, hsvS, hsvV ] = [ + hwbH, + hwbB === 100 ? 0 : 100 - hwbW / (100 - hwbB) * 100, + 100 - hwbB + ]; + + return [ hsvH, hsvS, hsvV ]; +} + + +/** +* @func hsv2hwb +* @desc Return an HWB color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayHWB} +* @example +* hsv2hwb(0, 100, 100) // => [0, 0, 0] +* @link https://en.wikipedia.org/wiki/HWB_color_model#Converting_to_and_from_HSV +*/ + +export function hsv2hwb(hsvH, hsvS, hsvV) { + const [ hwbH, hwbW, hwbB ] = [ + hsvH, + (100 - hsvS) * hsvV / 100, + 100 - hsvV + ]; + + return [ hwbH, hwbW, hwbB ]; +} diff --git a/experiments/flame/src/color/index.js b/experiments/flame/src/color/index.js new file mode 100644 index 00000000..9e6b5a60 --- /dev/null +++ b/experiments/flame/src/color/index.js @@ -0,0 +1,1233 @@ +import { rgb2hsl, hsl2rgb } from './rgb-hsl'; +import { rgb2hwb, hwb2rgb } from './rgb-hwb'; +import { rgb2hsv, hsv2rgb } from './rgb-hsv'; +import { rgb2xyz, xyz2rgb } from './rgb-xyz'; +import { hsl2hsv, hsv2hsl } from './hsl-hsv'; +import { hwb2hsv, hsv2hwb } from './hwb-hsv'; +import { lab2xyz, xyz2lab } from './lab-xyz'; +import { lab2lch, lch2lab } from './lab-lch'; +import rgb2contrast from './rgb-contrast'; +import { hex2rgb, rgb2hex } from './hex-rgb'; +import keyword2rgb from './keyword-rgb'; +import lab2ciede from './lab-ciede'; + +/* Convert between RGB and Lab +/* ========================================================================== */ + +/** +* @func rgb2lab +* @desc Return a CIE LAB color from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @return {ArrayLAB} +* @example +* rgb2lab(100, 0, 0) // => [54.29, 80.82, 69.88] +*/ + +function rgb2lab(rgbR, rgbG, rgbB) { + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + + return [ labL, labA, labB ]; +} + +/** +* @func lab2rgb +* @desc Return an RGB color from a CIE LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {ArrayRGBA} +* @example +* lab2rgb(54.29, 80.82, 69.88) // => [100, 0, 0] +*/ + +function lab2rgb(labL, labA, labB) { + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + + return [ rgbR, rgbG, rgbB ]; +} + +/* Convert between RGB and LCH +/* ========================================================================== */ + +/** +* @func rgb2lch +* @desc Return a CIE LAB color from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @return {ArrayLCH} +* @example +* rgb2lch(100, 0, 0) // => [54.29, 106.84, 40.85] +*/ + +function rgb2lch(rgbR, rgbG, rgbB) { + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB); + + return [ lchL, lchC, lchH ]; +} + +/** +* @func lch2rgb +* @desc Return an RGB color from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue +* @return {ArrayRGBA} +* @example +* lch2rgb(54.29, 106.84, 40.85) // => [100, 0, 0] +*/ + +function lch2rgb(lchL, lchC, lchH) { + const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH); + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + + return [ rgbR, rgbG, rgbB ]; +} + +/* Convert between HSL and HWB +/* ========================================================================== */ + +/** +* @func hwb2hsl +* @desc Return an HSV color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayHSL} +* @example +* hwb2hsl(0, 0, 0) // => [0, 0, 100] +*/ + +function hwb2hsl(hwbH, hwbW, hwbB) { + const [ hsvH, hsvS, hsvV ] = hwb2hsv(hwbH, hwbW, hwbB); + const [ hslH, hslS, hslL ] = hsv2hsl(hsvH, hsvS, hsvV); + + return [ hslH, hslS, hslL ]; +} + +/** +* @func hsl2hwb +* @desc Return an HWB color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayHWB} +* @example +* hsl2hwb(0, 0, 100) // => [0, 0, 0] +*/ + +function hsl2hwb(hslH, hslS, hslL) { + const [ , hsvS, hsvV ] = hsl2hsv(hslH, hslS, hslL); + const [ , hwbW, hwbB ] = hsv2hwb(hslH, hsvS, hsvV); + + return [ hslH, hwbW, hwbB ]; +} + +/* Convert between HSL and Lab +/* ========================================================================== */ + +/** +* @func hsl2lab +* @desc Return a CIE LAB color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayLAB} +* @example +* hsl2lab(0, 100, 50) // => [54.29, 80.82, 69.88] +*/ + +function hsl2lab(hslH, hslS, hslL) { + const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + + return [ labL, labA, labB ]; +} + +/** +* @func lab2hsl +* @desc Return a HSL color from a CIE LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @param {Number=} f - Hue Fallback (0 - 360) +* @return {ArrayHSL} +* @example +* lab2hsl(54.29, 80.82, 69.88) // => [0, 100, 50] +*/ + +function lab2hsl(labL, labA, labB, fallbackhue) { + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue); + + return [ hslH, hslS, hslL ]; +} + +/* Convert between HSL and LCH +/* ========================================================================== */ + +/** +* @func hsl2lch +* @desc Return a CIE LCH color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayLCH} +* @example +* hsl2lch(0, 100, 50) // => [54.29, 106.84, 40.85] +*/ + +function hsl2lch(hslH, hslS, hslL) { + const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB); + + return [ lchL, lchC, lchH ]; +} + +/** +* @func lch2hsl +* @desc Return an HSL from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {ArrayLCH} +* @example +* lch2hsl(54.29, 106.84, 40.85) // => [0, 100, 50] +*/ + +function lch2hsl(lchL, lchC, lchH, fallbackhue) { + const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH); + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue); + + return [ hslH, hslS, hslL ]; +} + +/* Convert between HSL and XYZ +/* ========================================================================== */ + +/** +* @func hsl2xyz +* @desc Return an XYZ color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayXYZ} +* @example +* hsl2xyz(0, 100, 50) // => [41.25, 21.27, 1.93] +*/ + +function hsl2xyz(hslH, hslS, hslL) { + const [ rgbR, rgbG, rgbB ] = hsl2rgb(hslH, hslS, hslL); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + + return [ xyzX, xyzY, xyzZ ]; +} + +/** +* @func xyz2hsl +* @desc Return an HSL color from an XYZ color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayHSL} +* @example +* xyz2hsl(0, 100, 50) // => [41.25, 21.27, 1.93] +*/ + +function xyz2hsl(xyzX, xyzY, xyzZ, fallbackhue) { + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hslH, hslS, hslL ] = rgb2hsl(rgbR, rgbG, rgbB, fallbackhue); + + return [ hslH, hslS, hslL ]; +} + +/* Convert between HWB and Lab +/* ========================================================================== */ + +/** +* @func hwb2lab +* @desc Return a CIE LAB color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayLAB} +* @example +* hwb2lab(0, 0, 0) // => [54.29, 80.82, 69.88] +*/ + +function hwb2lab(hwbH, hwbW, hwbB) { + const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + + return [ labL, labA, labB ]; +} + +/** +* @func lab2hwb +* @desc Return an HWB color from a CIE LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {ArrayHWB} +* @example +* lab2hwb(54.29, 80.82, 69.88) // => [0, 0, 0] +*/ + +function lab2hwb(labL, labA, labB, fallbackhue) { + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue); + + return [ hwbH, hwbW, hwbB ]; +} + +/* Convert between HWB and LCH +/* ========================================================================== */ + +/** +* @func hwb2lch +* @desc Return a CIE LCH color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayLCH} +* @example +* hwb2lch(0, 0, 0) // => [54.29, 106.84, 40.85] +*/ + +function hwb2lch(hwbH, hwbW, hwbB) { + const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB); + + return [ lchL, lchC, lchH ]; +} + +/** +* @func lch2hwb +* @desc Return an HWB color from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {ArrayLCH} +* @example +* lch2hwb(54.29, 106.84, 40.85) // => [0, 0, 0] +*/ + +function lch2hwb(lchL, lchC, lchH, fallbackhue) { + const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH); + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue); + + return [ hwbH, hwbW, hwbB ]; +} + +/* Convert between HWB and XYZ +/* ========================================================================== */ + +/** +* @func hwb2xyz +* @desc Return an XYZ color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayXYZ} +* @example +* hwb2xyz(0, 0, 0) // => [41.25, 21.27, 1.93] +*/ + +function hwb2xyz(hwbH, hwbW, hwbB) { + const [ rgbR, rgbG, rgbB ] = hwb2rgb(hwbH, hwbW, hwbB); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + + return [ xyzX, xyzY, xyzZ ]; +} + +/** +* @func xyz2hwb +* @desc Return an HWB color from an XYZ color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayXYZ} +* @example +* xyz2hwb(0, 0, 0) // => [41.25, 21.27, 1.93] +*/ + +function xyz2hwb(xyzX, xyzY, xyzZ, fallbackhue) { + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hwbH, hwbW, hwbB ] = rgb2hwb(rgbR, rgbG, rgbB, fallbackhue); + + return [ hwbH, hwbW, hwbB ]; +} + +/* Convert between HSV and Lab +/* ========================================================================== */ + +/** +* @func hsv2lab +* @desc Return a CIE LAB color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayLAB} +* @example +* hsv2lab(0, 100, 100) // => [54.29, 80.82, 69.88] +*/ + +function hsv2lab(hsvH, hsvS, hsvV) { + const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + + return [ labL, labA, labB ]; +} + +/** +* @func lab2hsv +* @desc Return an HSV color from a CIE LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {ArrayHSV} +* @example +* lab2hsv(54.29, 80.82, 69.88) // => [0, 100, 100] +*/ + +function lab2hsv(labL, labA, labB, fallbackhue) { + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue); + + return [ hsvH, hsvS, hsvV ]; +} + +/* Convert between HSV and LCH +/* ========================================================================== */ + +/** +* @func hsv2lch +* @desc Return a CIE LCH color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayLCH} +* @example +* hsv2lch(0, 100, 100) // => [54.29, 106.84, 40.85] +*/ + +function hsv2lch(hsvH, hsvS, hsvV) { + const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB); + + return [ lchL, lchC, lchH ]; +} + +/** +* @func lch2hsv +* @desc Return an HSV color from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {ArrayHSV} +* @example +* lch2hsv(54.29, 106.84, 40.85) // => [0, 100, 100] +*/ + +function lch2hsv(lchL, lchC, lchH, fallbackhue) { + const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH); + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue); + + return [ hsvH, hsvS, hsvV ]; +} + +/* Convert between HSV and XYZ +/* ========================================================================== */ + +/** +* @func hsv2xyz +* @desc Return an XYZ color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayXYZ} +* @example +* hsv2xyz(0, 100, 100) // => [41.25, 21.27, 1.93] +*/ + +function hsv2xyz(hsvH, hsvS, hsvV) { + const [ rgbR, rgbG, rgbB ] = hsv2rgb(hsvH, hsvS, hsvV); + const [ xyzX, xyzY, xyzZ ] = rgb2xyz(rgbR, rgbG, rgbB); + + return [ xyzX, xyzY, xyzZ ]; +} + +/** +* @func xyz2hsv +* @desc Return an XYZ color from an HSV color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayHSV} +* @example +* xyz2hsv(41.25, 21.27, 1.93) // => [0, 100, 100] +*/ + +function xyz2hsv(xyzX, xyzY, xyzZ, fallbackhue) { + const [ rgbR, rgbG, rgbB ] = xyz2rgb(xyzX, xyzY, xyzZ); + const [ hsvH, hsvS, hsvV ] = rgb2hsv(rgbR, rgbG, rgbB, fallbackhue); + + return [ hsvH, hsvS, hsvV ]; +} + +/* Convert between XYZ and LCH +/* ========================================================================== */ + +/** +* @func xyz2lch +* @desc Return a CIE LCH color from an XYZ color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayLCH} +* @example +* xyz2lch(41.25, 21.27, 1.93) // => [54.29, 106.84, 40.85] +*/ + +function xyz2lch(xyzX, xyzY, xyzZ) { + const [ labL, labA, labB ] = xyz2lab(xyzX, xyzY, xyzZ); + const [ lchL, lchC, lchH ] = lab2lch(labL, labA, labB); + + return [ lchL, lchC, lchH ]; +} + +/** +* @func lch2xyz +* @desc Return an XYZ color from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {ArrayXYZ} +* @example +* lch2xyz(54.29, 106.84, 40.85) // => [41.25, 21.27, 1.93] +*/ + +function lch2xyz(lchL, lchC, lchH) { + const [ labL, labA, labB ] = lch2lab(lchL, lchC, lchH); + const [ xyzX, xyzY, xyzZ ] = lab2xyz(labL, labA, labB); + + return [ xyzX, xyzY, xyzZ ]; +} + +/* Hex input conversions +/* ========================================================================== */ + +/** +* @func hex2hsl +* @desc Return an HSL color from a Hex color +* @param {StringHex} hex +* @return {ArrayHSL} +* @example +* hex2hsl("#f00") // => [0, 100, 50] +*/ + +function hex2hsl(hex) { + return rgb2hsl(...hex2rgb(hex)); +} + +/** +* @func hex2hsv +* @desc Return an HSL color from a Hex color +* @param {StringHex} hex +* @return {ArrayHSV} +* @example +* hex2hsv("#f00") // => [0, 100, 100] +*/ + +function hex2hsv(hex) { + return rgb2hsv(...hex2rgb(hex)); +} + +/** +* @func hex2hwb +* @desc Return an HWB color from a Hex color +* @param {StringHex} hex +* @return {ArrayHWB} +* @example +* hex2hwb("#f00") // => [0, 0, 0] +*/ + +function hex2hwb(hex) { + return rgb2hwb(...hex2rgb(hex)); +} + +/** +* @func hex2lab +* @desc Return a CIE LAB color from a Hex color +* @param {StringHex} hex +* @return {ArrayLAB} +* @example +* hex2lab("#f00") // => [54.29, 80.82, 69.88] +*/ + +function hex2lab(hex) { + return rgb2lab(...hex2rgb(hex)); +} + +/** +* @func hex2lch +* @desc Return a CIE LCH color from a Hex color +* @param {StringHex} hex +* @return {ArrayLCH} +* @example +* hex2lch("#f00") // => [54.29, 106.84, 40.85] +*/ + +function hex2lch(hex) { + return rgb2lch(...hex2rgb(hex)); +} + +/** +* @func hex2xyz +* @desc Return an XYZ color from a Hex color +* @param {StringHex} hex +* @return {ArrayXYZ} +* @example +* hex2xyz("#f00") // => [41.25, 21.27, 1.93] +*/ + +function hex2xyz(hex) { + return rgb2xyz(...hex2rgb(hex)); +} + +/* Hex output conversions +/* ========================================================================== */ + +/** +* @func hsl2hex +* @desc Return a Hex color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {StringHex} +* @example +* hsl2hex(0, 100, 50) // => "#f00" +*/ + +function hsl2hex(hslH, hslS, hslL) { + return rgb2hex(...hsl2rgb(hslH, hslS, hslL)); +} + +/** +* @func hsv2hex +* @desc Return a Hex color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {StringHex} +* @example +* hsv2hex(0, 100, 100) // => "#f00" +*/ + +function hsv2hex(hsvH, hsvS, hsvV) { + return rgb2hex(...hsl2rgb(hsvH, hsvS, hsvV)); +} + +/** +* @func hwb2hex +* @desc Return a Hex color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {StringHex} +* @example +* hwb2hex(0, 0, 0) // => "#f00" +*/ + +function hwb2hex(hwbH, hwbW, hwbB) { + return rgb2hex(...hwb2rgb(hwbH, hwbW, hwbB)); +} + +/** +* @func lab2hex +* @desc Return a Hex color from a CIE LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {StringHex} +* @example +* lab2hex(54.29, 80.82, 69.88) // => "#f00" +*/ + +function lab2hex(labL, labA, labB) { + return rgb2hex(...lab2rgb(labL, labA, labB)); +} + +/** +* @func lch2hex +* @desc Return a Hex color from a CIE LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {StringHex} +* @example +* lch2hex(54.29, 106.84, 40.85) // => "#f00" +*/ + +function lch2hex(lchL, lchC, lchH) { + return rgb2hex(...lch2rgb(lchL, lchC, lchH)); +} + +/** +* @func xyz2hex +* @desc Return a Hex color from an XYZ color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {StringHex} +* @example +* xyz2hex(41.25, 21.27, 1.93) // => "#f00" +*/ + +function xyz2hex(xyzX, xyzY, xyzZ) { + return rgb2hex(...xyz2rgb(xyzX, xyzY, xyzZ)); +} + +/* CIEDE conversions +/* ========================================================================== */ + +/** +* @func hex2ciede +* @desc Return the CIEDE2000 difference between 2 HEX colors +* @param {StringHex} hex1 +* @param {StringHex} hex2 +* @return {NumberCIEDE} +* @example +* hex2ciede('#fff', '#000') // => 100 +*/ + +function hex2ciede(hex1, hex2) { + return lab2ciede(hex2lab(hex1), hex2lab(hex2)); +} + +/** +* @func hsl2ciede +* @desc Return the CIEDE2000 difference between 2 HSL colors +* @param {ArrayHSL} hsl1 +* @param {ArrayHSL} hsl2 +* @return {NumberCIEDE} +* @example +* hsl2ciede([0, 0, 100], [0, 0, 0]) // => 100 +*/ + +function hsl2ciede(hsl1, hsl2) { + return lab2ciede(hsl2lab(...hsl1), hsl2lab(...hsl2)); +} + +/** +* @func hsv2ciede +* @desc Return the CIEDE2000 difference between 2 HSV colors +* @param {ArrayHSV} hsl1 +* @param {ArrayHSV} hsl2 +* @return {NumberCIEDE}. +* @example +* hsv2ciede([0, 0, 40], [0, 0, 0]) // => 100 +*/ + +function hsv2ciede(hsv1, hsv2) { + return lab2ciede(hsv2lab(...hsv1), hsv2lab(...hsv2)); +} + +/** +* @func hwb2ciede +* @desc Return the CIEDE2000 difference between 2 HWB colors +* @param {ArrayHWB} hwb1 +* @param {ArrayHWB} hwb2 +* @return {NumberCIEDE}. +* @example +* hwb2ciede([0, 0, 40], [0, 0, 0]) // => 100 +*/ + +function hwb2ciede(hwb1, hwb2) { + return lab2ciede(hwb2lab(...hwb1), hwb2lab(...hwb2)); +} + +/** +* @func keyword2ciede +* @desc Return the CIEDE2000 difference between 2 keyword colors +* @param {StringKeyword} keyword1 +* @param {StringKeyword} keyword2 +* @return {NumberCIEDE}. +* @example +* keyword2ciede('white', 'black') // => 100 +*/ + +function keyword2ciede(keyword1, keyword2) { + return lab2ciede(keyword2lab(keyword1), keyword2lab(keyword2)); +} + +/** +* @func lch2ciede +* @desc Return the CIEDE2000 difference between 2 LCH colors +* @param {ArrayLCH} lch1 +* @param {ArrayLCH} lch2 +* @return {NumberCIEDE}. +* @example +* lch2ciede([100, 0.03, -82.2], [0, 0, 0]) // => 100 +*/ + +function lch2ciede(lch1, lch2) { + return lab2ciede(lch2lab(...lch1), lch2lab(...lch2)); +} + +/** +* @func rgb2ciede +* @desc Return the CIEDE2000 difference between 2 RGB colors +* @param {ArrayRGB} rgb1 +* @param {ArrayRGB} rgb2 +* @return {NumberCIEDE}. +* @example +* rgb2ciede([100, 100, 100], [0, 0, 0]) // => 100 +*/ + +function rgb2ciede(rgb1, rgb2) { + return lab2ciede(rgb2lab(...rgb1), rgb2lab(...rgb2)); +} + +/** +* @func xyz2ciede +* @desc Return the CIEDE2000 difference between 2 XYZ colors +* @param {ArrayXYZ} xyz1 +* @param {ArrayXYZ} xyz2 +* @return {NumberCIEDE}. +* @example +* xyz2ciede([95.05, 100, 108.88], [0, 0, 0]) // => 100 +*/ + +function xyz2ciede(xyz1, xyz2) { + return lab2ciede(xyz2lab(...xyz1), xyz2lab(...xyz2)); +} + +/* Contrast conversions +/* ========================================================================== */ + +/** +* @func hex2contrast +* @desc Return the contrast ratio of 2 HEX colors +* @param {StringHex} hex1 +* @param {StringHex} hex2 +* @return {NumberContrast} +* @example +* rgb2contrast("#fff", '#000') // => 21 +*/ + +function hex2contrast(hex1, hex2) { + return rgb2contrast(hex2rgb(hex1), hex2rgb(hex2)); +} + +/** +* @func hsl2contrast +* @desc Return the contrast ratio of 2 HSL colors +* @param {ArrayHSL} hsl1 +* @param {ArrayHSL} hsl2 +* @return {NumberContrast} +* @example +* hsl2contrast([0, 0, 100], [0, 0, 0]) // => 21 +*/ + +function hsl2contrast(hsl1, hsl2) { + return rgb2contrast(hsl2rgb(...hsl1), hsl2rgb(...hsl2)); +} + +/** +* @func hsv2contrast +* @desc Return the contrast ratio of 2 HSV colors +* @param {ArrayHSV} hsv1 +* @param {ArrayHSV} hsv2 +* @return {NumberContrast} +* @example +* hsv2contrast([0, 0, 100], [0, 0, 0]) // => 21 +*/ + +function hsv2contrast(hsv1, hsv2) { + return rgb2contrast(hsv2rgb(...hsv1), hsv2rgb(...hsv2)); +} + +/** +* @func hwb2contrast +* @desc Return the contrast ratio of 2 HWB colors +* @param {ArrayHWB} hwb1 +* @param {ArrayHWB} hwb2 +* @return {NumberContrast} +* @example +* hwb2contrast([0, 100, 0], [0, 0, 100]) // => 21 +*/ + +function hwb2contrast(hwb1, hwb2) { + return rgb2contrast(hwb2rgb(...hwb1), hwb2rgb(...hwb2)); +} + +/** +* @func keyword2contrast +* @desc Return the contrast ratio of 2 keyword colors +* @param {StringKeyword} keyword1 +* @param {StringKeyword} keyword2 +* @return {NumberContrast} +* @example +* keyword2contrast('white', 'black') // => 21 +*/ + +function keyword2contrast(keyword1, keyword2) { + return rgb2contrast(keyword2rgb(keyword1), keyword2rgb(keyword2)); +} + +/** +* @func lab2contrast +* @desc Return the contrast ratio of 2 LAB colors +* @param {ArrayLAB} lab1 +* @param {ArrayLAB} lab2 +* @return {NumberContrast} +* @example +* lab2contrast([100, 0.003, -0.025], [0, 0, 0]) // => 21 +*/ + +function lab2contrast(lab1, lab2) { + return rgb2contrast(lab2rgb(...lab1), lab2rgb(...lab2)); +} + +/** +* @func lch2contrast +* @desc Return the contrast ratio of 2 LCH colors +* @param {ArrayLCH} lch1 +* @param {ArrayLCH} lch2 +* @return {NumberContrast} +* @example +* lch2contrast([100, 0.025, -82.2], [0, 0, 0]) // => 21 +*/ + +function lch2contrast(lch1, lch2) { + return rgb2contrast(lch2rgb(...lch1), lch2rgb(...lch2)); +} + +/** +* @func xyz2contrast +* @desc Return the contrast ratio of 2 XYZ colors +* @param {ArrayXYZ} xyz1 +* @param {ArrayXYZ} xyz2 +* @return {NumberContrast} +* @example +* xyz2contrast([95.05, 100, 108.88], [0, 0, 0]) // => 21 +*/ + +function xyz2contrast(xyz1, xyz2) { + return rgb2contrast(xyz2rgb(...xyz1), xyz2rgb(...xyz2)); +} + +/* Keyword Conversions +/* ========================================================================== */ + +/** +* @func keyword2hex +* @desc Return an RGB color from a keyword color +* @param {StringKeyword} keyword - CSS Color Keyword +* @return {String} +* @example +* keyword2hex('white') // => "#ffffff" +*/ + +function keyword2hex(keyword) { + return rgb2hex(...keyword2rgb(keyword)); +} + +/** +* @func keyword2hsl +* @desc Return an HSL color from a keyword color +* @param {StringKeyword} +* @return {ArrayHSL} +* @example +* keyword2hsl('white') // => [0, 0, 100] +*/ + +function keyword2hsl(keyword) { + return rgb2hsl(...keyword2rgb(keyword)); +} + +/** +* @func keyword2hsv +* @desc Return an HSV color from a keyword color +* @param {StringKeyword} +* @return {ArrayHSV} +* @example +* keyword2hsv('white') // => [0, 0, 100] +*/ + +function keyword2hsv(keyword) { + return rgb2hsv(...keyword2rgb(keyword)); +} + +/** +* @func keyword2hwb +* @desc Return an HWB color from a keyword color +* @param {StringKeyword} +* @return {ArrayHWB} +* @example +* keyword2hwb('red') // => [0, 0, 0] +*/ + +function keyword2hwb(keyword) { + return rgb2hwb(...keyword2rgb(keyword)); +} + +/** +* @func keyword2lab +* @desc Return a CIE LAB color from a keyword color +* @param {StringKeyword} +* @return {ArrayLAB} +* @example +* keyword2lab('red') // => [54.29, 80.82, 69.88] +*/ + +function keyword2lab(keyword) { + return rgb2lab(...keyword2rgb(keyword)); +} + +/** +* @func keyword2lch +* @desc Return a CIE LCH color from a keyword color +* @param {StringKeyword} +* @return {ArrayLCH} +* @example +* keyword2lch('red') // => [54.29, 106.84, 40.85] +*/ + +function keyword2lch(keyword) { + return rgb2lch(...keyword2rgb(keyword)); +} + +/** +* @func keyword2lch +* @desc Return an XYZ color from a keyword color +* @param {StringKeyword} +* @return {ArrayXYZ} +* @example +* keyword2lch('red') // => [41.25, 21.27, 1.93] +*/ + +function keyword2xyz(keyword) { + return rgb2xyz(...keyword2rgb(keyword)); +} + +/* All Conversions +/* ========================================================================== */ + +export { + hex2ciede, + hex2contrast, + hex2hsl, + hex2hsv, + hex2hwb, + hex2lab, + hex2lch, + hex2rgb, + hex2xyz, + + hsl2ciede, + hsl2contrast, + hsl2hex, + hsl2hsv, + hsl2hwb, + hsl2lab, + hsl2lch, + hsl2rgb, + hsl2xyz, + + hsv2ciede, + hsv2contrast, + hsv2hex, + hsv2hsl, + hsv2hwb, + hsv2lab, + hsv2lch, + hsv2rgb, + hsv2xyz, + + hwb2ciede, + hwb2contrast, + hwb2hex, + hwb2hsl, + hwb2hsv, + hwb2lab, + hwb2lch, + hwb2rgb, + hwb2xyz, + + keyword2ciede, + keyword2contrast, + keyword2hex, + keyword2hsl, + keyword2hsv, + keyword2hwb, + keyword2lab, + keyword2lch, + keyword2rgb, + keyword2xyz, + + lab2ciede, + lab2contrast, + lab2hex, + lab2hsl, + lab2hsv, + lab2hwb, + lab2lch, + lab2rgb, + lab2xyz, + + lch2ciede, + lch2contrast, + lch2hex, + lch2hsl, + lch2hsv, + lch2hwb, + lch2lab, + lch2rgb, + lch2xyz, + + rgb2ciede, + rgb2contrast, + rgb2hex, + rgb2hsl, + rgb2hsv, + rgb2hwb, + rgb2lab, + rgb2lch, + rgb2xyz, + + xyz2ciede, + xyz2contrast, + xyz2hex, + xyz2hsl, + xyz2hsv, + xyz2hwb, + xyz2lab, + xyz2lch, + xyz2rgb +}; + +/** +* @typedef {Array} ArrayRGB +* An array of red, green, and blue channels. +* @property {Number} 0 - Red (0 - 100) +* @property {Number} 1 - Green (0 - 100) +* @property {Number} 2 - Blue (0 - 100) +* +*/ +/** +* @typedef {Array} ArrayRGBA +* An array of red, green, blue, and alpha channels. +* @property {Number} 0 - Red (0 - 100) +* @property {Number} 1 - Green (0 - 100) +* @property {Number} 2 - Blue (0 - 100) +* @property {Number} 3 - Alpha (0 - 100) +*/ +/** +* @typedef {Array} ArrayHSL +* An array of hue, saturation, and lightness channels. +* @property {Number} 0 - Hue Angle (0 - 360) +* @property {Number} 1 - Saturation (0 - 100) +* @property {Number} 2 - Lightness (0 - 100) +*/ +/** +* @typedef {Array} ArrayHSV +* An array of hue, saturation, and value channels. +* @property {Number} 0 - Hue Angle (0 - 360) +* @property {Number} 1 - Saturation (0 - 100) +* @property {Number} 2 - Value (0 - 100) +*/ +/** +* @typedef {Array} ArrayLAB +* An array of CIELAB lightness, red/green, and yellow/blue. +* @property {Number} 0 - CIE Lightness +* @property {Number} 1 - Red/Green Coordinate +* @property {Number} 2 - Yellow/Blue Coordinate +*/ +/** +* @typedef {Array} ArrayLCH +* An array of CIELAB lightness, chroma, and hue. +* @property {Number} 0 - CIE Lightness +* @property {Number} 1 - CIE Chroma +* @property {Number} 2 - CIE Hue +*/ +/** +* @typedef {Array} ArrayHWB +* An array of hue, whiteness, and blackness channels. +* @property {Number} 0 - Hue Angle (0 - 360) +* @property {Number} 1 - Whiteness (0 - 100) +* @property {Number} 2 - Blackness (0 - 100) +*/ +/** +* @typedef {Array} ArrayXYZ +* An array of CIELAB chromacity. +* @property {Number} 0 - X Chromacity +* @property {Number} 1 - Y Chromacity +* @property {Number} 2 - Z Chromacity +* @example +* [95.05, 100, 108.88] +* @example +* [0, 0, 0] +*/ +/** +* @typedef {String} StringHex +* A string representing the 3, 4, 6, or 8 digit hexidecimal color. +* @example +* "#f00" +* "#f00f" +* @example +* "#ff0000" +* "#ff0000ff" +*/ +/** +* @typedef {String} StringKeyword +* A case-insensitive string identifier that represents a specific color. +* @example +* "#f00" +* "#f00f" +* @example +* "#ff0000" +* "#ff0000ff" +*/ +/** +* @typedef {Number} NumberContrast +* A contrast ratio of the colors (0 - 21) +* @example +* 0 +* @example +* 21 +*/ +/** +* @typedef {Number} NumberCIEDE +* A CIEDE2000 difference between 2 colors (0 - 100) +* @example +* 0 +* @example +* 100 +*/ diff --git a/experiments/flame/src/color/keyword-rgb.js b/experiments/flame/src/color/keyword-rgb.js new file mode 100644 index 00000000..2c742fa0 --- /dev/null +++ b/experiments/flame/src/color/keyword-rgb.js @@ -0,0 +1,166 @@ +/** +* @func keyword2rgb +* @desc Return an RGB color from a CSS keyword color +* @param {StringKeyword} keyword +* @return {ArrayRGB} +* @example +* keyword2rgb('red') // => [100, 0, 0] +*/ + +export default function keyword2rgb(keyword) { + const rgb255 = keywords[String(keyword).toLowerCase()]; + + return rgb255 ? rgb255.map(x => x * 100 / 255) : null; +} + +const keywords = { + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + grey: [128, 128, 128], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + rebeccapurple: [102, 51, 153], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + transparent: [0, 0, 0], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}; diff --git a/experiments/flame/src/color/lab-ciede.js b/experiments/flame/src/color/lab-ciede.js new file mode 100644 index 00000000..35c6eddb --- /dev/null +++ b/experiments/flame/src/color/lab-ciede.js @@ -0,0 +1,90 @@ +import { abs, atan2d, cosd, exp, pow, sind, sqrt, precision } from './util'; + +/* Return +/* ========================================================================== */ + +/** +* @func lab2ciede +* @desc Return the CIEDE2000 difference between 2 CIE LAB colors (International Commission on Illumination, Delta E). +* @param {Array} lab1 - CIE LAB color +* @param {Number} lab1.0 - Lightness +* @param {Number} lab1.1 - Red/Green Coordinate +* @param {Number} lab1.2 - Yellow/Blue Coordinate +* @param {Array} lab2 - CIE LAB color +* @param {Number} lab2.0 - Lightness +* @param {Number} lab2.1 - Red/Green Coordinate +* @param {Number} lab2.2 - Yellow/Blue Coordinate +* @return {NumberCIEDE} +* @example +* lab2ciede([97.14, -21.56, 94.48], [0, 0, 0]) // => 100 +* @link https://en.wikipedia.org/wiki/Color_difference#CIEDE2000 +*/ + +export default function lab2ciede([L1, a1, b1], [L2, a2, b2]) { + const c1 = sqrt(pow(a1, 2) + pow(b1, 2)); + const c2 = sqrt(pow(a2, 2) + pow(b2, 2)); + + const deltaLPrime = L2 - L1; + + const lBar = (L1 + L2) / 2; + const cBar = (c1 + c2) / 2; + + const cBarPow7 = pow(cBar, 7); + const cCoeff = sqrt(cBarPow7 / (cBarPow7 + pow(25, 7))); + const a1Prime = a1 + a1 / 2 * (1 - cCoeff); + const a2Prime = a2 + a2 / 2 * (1 - cCoeff); + + const c1Prime = sqrt(a1Prime * a1Prime + b1 * b1); + const c2Prime = sqrt(a2Prime * a2Prime + b2 * b2); + const cBarPrime = (c1Prime + c2Prime) / 2; + const deltaCPrime = c2Prime - c1Prime; + + const h1Prime = a1Prime === 0 && b1 === 0 ? 0 : atan2d(b1, a1Prime) % 360; + const h2Prime = a2Prime === 0 && b2 === 0 ? 0 : atan2d(b2, a2Prime) % 360; + + let deltaSmallHPrime; + let deltaBigHPrime; + let hBarPrime; + + if (c1Prime === 0 || c2Prime === 0) { + deltaSmallHPrime = 0; + deltaBigHPrime = 0; + hBarPrime = h1Prime + h2Prime; + } else { + deltaSmallHPrime = abs(h1Prime - h2Prime) <= 180 + ? h2Prime - h1Prime + : h2Prime <= h1Prime + ? h2Prime - h1Prime + 360 + : h2Prime - h1Prime - 360; + + deltaBigHPrime = 2 * sqrt(c1Prime * c2Prime) * sind(deltaSmallHPrime / 2); + + hBarPrime = abs(h1Prime - h2Prime) <= 180 + ? (h1Prime + h2Prime) / 2 + : h1Prime + h2Prime < 360 + ? (h1Prime + h2Prime + 360) / 2 + : (h1Prime + h2Prime - 360) / 2; + } + + const T = 1 - 0.17 * precision * cosd(hBarPrime - 30) + 0.24 * precision * cosd(2 * hBarPrime) + 0.32 * precision * cosd(3 * hBarPrime + 6) - 0.2 * precision * cosd(4 * hBarPrime - 63) / precision / precision; + + const slCoeff = (lBar - 50) * (lBar - 50); + const sl = 1 + 0.015 * precision * slCoeff / sqrt(20 + slCoeff) / precision; + const sc = 1 + 0.045 * precision * cBarPrime / precision; + const sh = 1 + 0.015 * precision * cBarPrime * T / precision; + + const RtCoeff = 60 * exp(-((hBarPrime - 275) / 25) * ((hBarPrime - 275) / 25)); + const Rt = -2 * cCoeff * sind(RtCoeff); + + const term1 = deltaLPrime / (kl * sl); + const term2 = deltaCPrime / (kc * sc); + const term3 = deltaBigHPrime / (kh * sh); + const term4 = Rt * term2 * term3; + + return sqrt(term1 * term1 + term2 * term2 + term3 * term3 + term4); +} + +// weight factors +const kl = 1; +const kc = 1; +const kh = 1; diff --git a/experiments/flame/src/color/lab-lch.js b/experiments/flame/src/color/lab-lch.js new file mode 100644 index 00000000..b1a107dc --- /dev/null +++ b/experiments/flame/src/color/lab-lch.js @@ -0,0 +1,46 @@ +import { atan2, cosd, pow, rad2deg, sind, sqrt } from './util'; + +/** +* @func lab2lch +* @desc Return an LCH color from a LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {ArrayLAB} +* @example +* lab2lch(54.29, 80.82, 69.88) // => [54.29, 106.84, 40.85] +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +* @link https://www.w3.org/TR/css-color-4/#lch-to-lab +*/ + +export function lab2lch(labL, labA, labB) { + const [ lchC, lchH ] = [ + sqrt(pow(labA, 2) + pow(labB, 2)), // convert to chroma + rad2deg(atan2(labB, labA)) // convert to hue, in degrees + ]; + + return [ labL, lchC, lchH ]; +} + +/** +* @func lch2lab +* @desc Return a LAB color from an LCH color +* @param {Number} l - CIE Lightness +* @param {Number} c - CIE Chroma +* @param {Number} h - CIE Hue Angle +* @return {ArrayLCH} +* @example +* lch2lab(54.29, 106.84, 40.85) // => [54.29, 80.82, 69.88] +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +* @link https://www.w3.org/TR/css-color-4/#lch-to-lab +*/ + +export function lch2lab(lchL, lchC, lchH) { + // convert to Lab a and b from the polar form + const [ labA, labB ] = [ + lchC * cosd(lchH), + lchC * sind(lchH) + ]; + + return [ lchL, labA, labB ]; +} diff --git a/experiments/flame/src/color/lab-xyz.js b/experiments/flame/src/color/lab-xyz.js new file mode 100644 index 00000000..4d1d63e2 --- /dev/null +++ b/experiments/flame/src/color/lab-xyz.js @@ -0,0 +1,82 @@ +import { cbrt, epsilon, kappa, pow, wd50X, wd50Y, wd50Z, matrix } from './util'; + +/** +* @func lab2xyz +* @desc Return an XYZ color from a LAB color +* @param {Number} l - CIE Lightness +* @param {Number} a - Red/Green Coordinate +* @param {Number} b - Yellow/Blue Coordinate +* @return {ArrayXYZ} +* @example +* lab2xyz(54.29, 80.82, 69.88) // => 41.25, 21.27, 1.93 +* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +* @link https://www.easyrgb.com/en/math.php +*/ + +export function lab2xyz(labL, labA, labB) { + // compute f, starting with the luminance-related term + const f2 = (labL + 16) / 116; + const f1 = labA / 500 + f2; + const f3 = f2 - labB / 200; + + // compute pre-scaled XYZ + const [ initX, initY, initZ ] = [ + pow(f1, 3) > epsilon ? pow(f1, 3) : (116 * f1 - 16) / kappa, + labL > kappa * epsilon ? pow((labL + 16) / 116, 3) : labL / kappa, + pow(f3, 3) > epsilon ? pow(f3, 3) : (116 * f3 - 16) / kappa + ]; + + const [ xyzX, xyzY, xyzZ ] = matrix( + // compute XYZ by scaling pre-scaled XYZ by reference white + [ initX * wd50X, initY * wd50Y, initZ * wd50Z ], + // calculate D65 XYZ from D50 XYZ + [ + [ 0.9555766, -0.0230393, 0.0631636], + [-0.0282895, 1.0099416, 0.0210077], + [ 0.0122982, -0.0204830, 1.3299098] + ] + ); + + return [ xyzX, xyzY, xyzZ ]; +} + +/** +* @func xyz2lab +* @desc Return an LAB color from a XYZ color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayLAB} +* @example +* xyz2lab(41.25, 21.27, 1.93) // => [54.29, 80.82, 69.88] +* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +* @link https://www.easyrgb.com/en/math.php +*/ + +export function xyz2lab(xyzX, xyzY, xyzZ) { + // calculate D50 XYZ from D65 XYZ + const [ d50X, d50Y, d50Z ] = matrix([ xyzX, xyzY, xyzZ ], [ + [ 1.0478112, 0.0228866, -0.0501270], + [ 0.0295424, 0.9904844, -0.0170491], + [-0.0092345, 0.0150436, 0.7521316] + ]); + + // calculate f + const [ f1, f2, f3 ] = [ + d50X / wd50X, + d50Y / wd50Y, + d50Z / wd50Z + ].map( + value => value > epsilon ? cbrt(value) : (kappa * value + 16) / 116 + ); + + const [ labL, labA, labB ] = [ + 116 * f2 - 16, + 500 * (f1 - f2), + 200 * (f2 - f3) + ]; + + return [ labL, labA, labB ]; +} diff --git a/experiments/flame/src/color/rgb-contrast.js b/experiments/flame/src/color/rgb-contrast.js new file mode 100644 index 00000000..760d8668 --- /dev/null +++ b/experiments/flame/src/color/rgb-contrast.js @@ -0,0 +1,46 @@ +import { luminance2contrast, pow, precision } from './util' + +/** +* @func rgb2contrast +* @desc Return the contrast ratio of of RGB colors +* @param {ArrayRGB} rgb1 - RGB Color Array +* @param {ArrayRGB} rgb2 - RGB Color Array +* @return {NumberContrast} +* @example +* rgb2contrast([100, 0, 0], [0, 0, 0]) // => 5.252 +* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio +*/ + +export default function rgb2contrast(rgb1, rgb2) { + const luminance1 = rgb2luminance(...rgb1); + const luminance2 = rgb2luminance(...rgb2); + + return luminance2contrast(luminance1, luminance2); +} + +/** +* @private +* @func rgb2luminance +* @desc Return the relative brightness of RGB +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @return {Number} Relative luminance of the color +* @example +* rgb2luminance(100, 0, 0) // => 0.2126 +* @link https://www.w3.org/TR/WCAG21/#dfn-relative-luminance +*/ + +export function rgb2luminance(rgbR, rgbG, rgbB) { + return (adjustChannel(rgbR) * coefficientR + adjustChannel(rgbG) * coefficientG + adjustChannel(rgbB) * coefficientB) / precision; +} + +// low-gamma adjust coefficients +const adjustChannel = x => x <= 3.928 ? x / lowc : adjustGamma(x); +const adjustGamma = x => pow((x + 5.5) / 105.5, 2.4); +const lowc = 1292; + +// red/green/blue coefficients +const coefficientR = 0.2126 * precision; +const coefficientG = 0.7152 * precision; +const coefficientB = 0.0722 * precision; diff --git a/experiments/flame/src/color/rgb-hsl.js b/experiments/flame/src/color/rgb-hsl.js new file mode 100644 index 00000000..376c682b --- /dev/null +++ b/experiments/flame/src/color/rgb-hsl.js @@ -0,0 +1,66 @@ +import { abs, rgb2hue, rgb2value, rgb2whiteness, hue2rgb } from './util'; + +/** +* @func rgb2hsl +* @desc Return a HSL color from an RGB color +* @param {Number} r - red (0 - 100) +* @param {Number} g - green (0 - 100) +* @param {Number} b - blue (0 - 100) +* @param {Number=} f - Hue Fallback (0 - 360) +* @return {ArrayHSL} +* @example +* rgb2hsl(0, 100, 100) // => [0, 100, 50] +* @link https://www.w3.org/TR/css-color-3/#hsl-color +* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb +* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html +* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html +*/ + +export function rgb2hsl(rgbR, rgbG, rgbB, fallbackhue) { + const hslH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue); + const hslV = rgb2value(rgbR, rgbG, rgbB); + const hslW = rgb2whiteness(rgbR, rgbG, rgbB); + + // calculate value/whiteness delta + const hslD = hslV - hslW; + + // calculate lightness + const hslL = (hslV + hslW) / 2; + + // calculate saturation + const hslS = hslD === 0 ? 0 : hslD / (100 - abs(2 * hslL - 100)) * 100; + + return [ hslH, hslS, hslL ]; +} + +/** +* @func hsl2rgb +* @desc Return an RGB color from an HSL color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} l - Lightness (0 - 100) +* @return {ArrayRGB} +* @example +* hsl2rgb(0, 100, 50) // => [0, 100, 100] +* @link https://www.w3.org/TR/css-color-3/#hsl-color +* @link https://www.w3.org/TR/css-color-4/#hsl-to-rgb +* @link https://www.rapidtables.com/convert/color/rgb-to-hsl.html +* @link https://www.rapidtables.com/convert/color/hsl-to-rgb.html +*/ + +export function hsl2rgb(hslH, hslS, hslL) { + // calcuate t2 + const t2 = hslL <= 50 ? hslL * (hslS + 100) / 100 : hslL + hslS - hslL * hslS / 100; + + // calcuate t1 + const t1 = hslL * 2 - t2; + + // calculate rgb + const [ rgbR, rgbG, rgbB ] = [ + hue2rgb(t1, t2, hslH + 120), + hue2rgb(t1, t2, hslH), + hue2rgb(t1, t2, hslH - 120) + ]; + + return [ rgbR, rgbG, rgbB ]; +} diff --git a/experiments/flame/src/color/rgb-hsv.js b/experiments/flame/src/color/rgb-hsv.js new file mode 100644 index 00000000..81c0b392 --- /dev/null +++ b/experiments/flame/src/color/rgb-hsv.js @@ -0,0 +1,61 @@ +import { floor, rgb2value, rgb2whiteness, rgb2hue } from './util'; + +/** +* @func rgb2hsv +* @desc Return an HSV color from an RGB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @param {Number=} f - Hue Fallback (0 - 360) +* @return {ArrayHSV} +* @example +* rgb2hsv(100, 0, 0) // => [0, 100, 100] +* @link http://alvyray.com/Papers/CG/hsv2rgb.htm +*/ + +export function rgb2hsv(rgbR, rgbG, rgbB, fallbackhue) { + const hsvV = rgb2value(rgbR, rgbG, rgbB); + const hsvW = rgb2whiteness(rgbR, rgbG, rgbB); + const hsvH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue); + + // calculate saturation + const hsvS = hsvV === hsvW ? 0 : (hsvV - hsvW) / hsvV * 100; + + return [ hsvH, hsvS, hsvV ]; +} + +/** +* @func hsv2rgb +* @desc Return an RGB color from an HSV color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} s - Saturation (0 - 100) +* @param {Number} v - Value (0 - 100) +* @return {ArrayRGB} +* @example +* hsv2rgb(100, 0, 0) // => [100, 0, 0] +* @link http://alvyray.com/Papers/CG/hsv2rgb.htm +*/ + +export function hsv2rgb(hsvH, hsvS, hsvV) { + const rgbI = floor(hsvH / 60); + + // calculate rgb parts + const rgbF = hsvH / 60 - rgbI & 1 ? hsvH / 60 - rgbI : 1 - hsvH / 60 - rgbI; + const rgbM = hsvV * (100 - hsvS) / 100; + const rgbN = hsvV * (100 - hsvS * rgbF) / 100; + const rgbT = hsvV * (100 - (100 - rgbF) * hsvS / 100) / 100; + + const [ rgbR, rgbG, rgbB ] = rgbI === 5 + ? [ hsvV, rgbM, rgbN ] + : rgbI === 4 + ? [ rgbT, rgbM, hsvV ] + : rgbI === 3 + ? [ rgbM, rgbN, hsvV ] + : rgbI === 2 + ? [ rgbM, hsvV, rgbT ] + : rgbI === 1 + ? [ rgbN, hsvV, rgbM ] + : [ hsvV, rgbT, rgbM ]; + + return [ rgbR, rgbG, rgbB ]; +} diff --git a/experiments/flame/src/color/rgb-hwb.js b/experiments/flame/src/color/rgb-hwb.js new file mode 100644 index 00000000..8d83d5f0 --- /dev/null +++ b/experiments/flame/src/color/rgb-hwb.js @@ -0,0 +1,46 @@ +import { rgb2hue, rgb2whiteness, rgb2value } from './util'; +import { hsl2rgb } from './rgb-hsl'; + +/** +* @func rgb2hwb +* @desc Return an HWB color from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @param {Number} f - Hue Fallback (0 - 360) +* @return {ArrayHWB} +* @example +* rgb2hwb(100, 0, 0) // => [0, 0, 0] +* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb +* @link http://alvyray.com/Papers/CG/hwb2rgb.htm +*/ + +export function rgb2hwb(rgbR, rgbG, rgbB, fallbackhue) { + const hwbH = rgb2hue(rgbR, rgbG, rgbB, fallbackhue); + const hwbW = rgb2whiteness(rgbR, rgbG, rgbB); + const hwbV = rgb2value(rgbR, rgbG, rgbB); + const hwbB = 100 - hwbV; + + return [hwbH, hwbW, hwbB]; +} + +/** +* @func hwb2rgb +* @desc Return an RGB color from an HWB color +* @param {Number} h - Hue Angle (0 - 360) +* @param {Number} w - Whiteness (0 - 100) +* @param {Number} b - Blackness (0 - 100) +* @return {ArrayRGB} +* @example +* hwb2rgb(0, 0, 0) // => [100, 0, 0] +* @link https://www.w3.org/TR/css-color-4/#hwb-to-rgb +* @link http://alvyray.com/Papers/CG/hwb2rgb.htm +*/ + +export function hwb2rgb(hwbH, hwbW, hwbB, fallbackhue) { + const [ rgbR, rgbG, rgbB ] = hsl2rgb(hwbH, 100, 50, fallbackhue).map( + v => v * (100 - hwbW - hwbB) / 100 + hwbW + ); + + return [ rgbR, rgbG, rgbB ]; +} diff --git a/experiments/flame/src/color/rgb-xyz.js b/experiments/flame/src/color/rgb-xyz.js new file mode 100644 index 00000000..d899fd35 --- /dev/null +++ b/experiments/flame/src/color/rgb-xyz.js @@ -0,0 +1,55 @@ +import { matrix, pow } from './util'; + +/** +* @func rgb2xyz +* @desc Return an XYZ color from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Green (0 - 100) +* @param {Number} b - Blue (0 - 100) +* @return {ArrayXYZ} +* @example +* rgb2xyz(100, 0, 0) // => [41.25, 21.27, 1.93] +* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +*/ + +export function rgb2xyz(rgbR, rgbG, rgbB) { + const [ lrgbR, lrgbB, lrgbG ] = [ rgbR, rgbG, rgbB ].map( + v => v > 4.045 ? pow((v + 5.5) / 105.5, 2.4) * 100 : v / 12.92 + ); + + const [ xyzX, xyzY, xyzZ ] = matrix([ lrgbR, lrgbB, lrgbG ], [ + [0.4124564, 0.3575761, 0.1804375], + [0.2126729, 0.7151522, 0.0721750], + [0.0193339, 0.1191920, 0.9503041] + ]); + + return [ xyzX, xyzY, xyzZ ]; +} + +/** +* @func xyz2rgb +* @desc Return an XYZ color from an RGB color +* @param {Number} x - Chromaticity of X +* @param {Number} y - Chromaticity of Y +* @param {Number} z - Chromaticity of Z +* @return {ArrayRGB} +* @example +* xyz2rgb(41.25, 21.27, 1.93) // => [100, 0, 0] +* @link https://www.w3.org/TR/css-color-4/#rgb-to-lab +* @link https://www.w3.org/TR/css-color-4/#color-conversion-code +*/ + +export function xyz2rgb(xyzX, xyzY, xyzZ) { + const [ lrgbR, lrgbB, lrgbG ] = matrix([ xyzX, xyzY, xyzZ ], [ + [ 3.2404542, -1.5371385, -0.4985314], + [-0.9692660, 1.8760108, 0.0415560], + [ 0.0556434, -0.2040259, 1.0572252] + ]); + + const [ rgbR, rgbG, rgbB ] = [ lrgbR, lrgbB, lrgbG ].map( + v => v > 0.31308 ? 1.055 * pow(v / 100, 1 / 2.4) * 100 - 5.5 : 12.92 * v + ); + + return [ rgbR, rgbG, rgbB ]; +} diff --git a/experiments/flame/src/color/util.js b/experiments/flame/src/color/util.js new file mode 100644 index 00000000..28bd0eb6 --- /dev/null +++ b/experiments/flame/src/color/util.js @@ -0,0 +1,163 @@ +/** +* @private +* @func rgb2hue +* @desc Return a hue angle from an RGB color +* @param {Number} r - Red (0 - 100) +* @param {Number} g - Red (0 - 100) +* @param {Number} b - Red (0 - 100) +* @param {Number} f - Hue Fallback (0 - 360) +* @return {Number} Hue Angle (0 - 360) +* @example +* rgb2hue(100, 0, 0) +* @example +* rgb2hue(100, 0, 0, 0) +*/ + +export function rgb2hue(rgbR, rgbG, rgbB, fallbackhue = 0) { + const value = rgb2value(rgbR, rgbG, rgbB); + const whiteness = rgb2whiteness(rgbR, rgbG, rgbB); + const delta = value - whiteness; + + if (delta) { + // calculate segment + const segment = value === rgbR + ? (rgbG - rgbB) / delta + : value === rgbG + ? (rgbB - rgbR) / delta + : (rgbR - rgbG) / delta; + + // calculate shift + const shift = value === rgbR + ? segment < 0 + ? 360 / 60 + : 0 / 60 + : value === rgbG + ? 120 / 60 + : 240 / 60; + + // calculate hue + const hue = (segment + shift) * 60; + + return hue; + } else { + // otherwise return the Hue Fallback + return fallbackhue; + } +} + +/** +* @private +* @func hue2rgb +* @desc Return an RGB channel from a hue angle +* @param {Number} t1 +* @param {Number} t2 +* @param {Number} h - Hue Angle (0 - 360) +* @return {Number} RGB channel (0 - 100) +* @example +* hue2rgb(0, 0, 0) +*/ + +export function hue2rgb(t1, t2, hue) { + // calculate the ranged hue + const rhue = hue < 0 ? hue + 360 : hue > 360 ? hue - 360 : hue; + + // calculate the rgb value + const rgb = rhue * 6 < 360 + ? t1 + (t2 - t1) * rhue / 60 + : rhue * 2 < 360 + ? t2 + : rhue * 3 < 720 + ? t1 + (t2 - t1) * (240 - rhue) / 60 + : t1; + + return rgb; +} + +/** +* @private +* @func luminance2contrast +* @desc Return the contrast ratio between 2 luminance. +* @param {Number} l1 - Relative luminance of one color +* @param {Number} l2 - Relative luminance of another color +* @return {Number} Contrast ratio between the 2 luminance +* @example +* luminance2contrast(0.2126, 0) // => 5.252 +* @link https://www.w3.org/TR/WCAG21/#dfn-contrast-ratio +*/ + +export function luminance2contrast(relativeLuminance1, relativeLuminance2) { + // l1 is the relative luminance of the lighter of the colors + const l1 = max(relativeLuminance1, relativeLuminance2); + + // l1 is the relative luminance of the darker of the colors + const l2 = min(relativeLuminance1, relativeLuminance2); + + return (l1 * precision + 0.05 * precision) / (l2 * precision + 0.05 * precision); +} + + +/* RGB tooling +/* ========================================================================== */ + +export function rgb2value(rgbR, rgbG, rgbB) { + const value = max(rgbR, rgbG, rgbB); + + return value; +} + +export function rgb2whiteness(rgbR, rgbG, rgbB) { + const whiteness = min(rgbR, rgbG, rgbB); + + return whiteness; +} + +/* Math matrix +/* ========================================================================== */ + +export function matrix(params, mats) { + return mats.map( + mat => mat.reduce( + // (acc, value, index) => acc + params[index] * value, + (acc, value, index) => acc + params[index] * precision * (value * precision) / precision / precision, + 0 + ) + ); +} + +/* Precision +/* ========================================================================== */ + +export const precision = 100000000; + +/* D50 reference white +/* ========================================================================== */ + +export const [ wd50X, wd50Y, wd50Z ] = [ 96.42, 100, 82.49 ]; + +/* Math Expressions +/* ========================================================================== */ + +export const atan2d = (y, x) => rad2deg(atan2(y, x)); // arc-tangent in degrees +export const cosd = x => cos(deg2rad(x)); // cosine of the specified angle in degrees +export const deg2rad = x => x * PI / 180; // degree to radian +export const rad2deg = x => x * 180 / PI; // radian to degree +export const sind = x => sin(deg2rad(x)); // sine in degrees + +/* Math Constants +/* ========================================================================== */ + +export const abs = Math.abs; +export const atan2 = Math.atan2; +export const cbrt = Math.cbrt; +export const cos = Math.cos; +export const exp = Math.exp; +export const floor = Math.floor; +export const max = Math.max; +export const min = Math.min; +export const PI = Math.PI; +export const pow = Math.pow; +export const sin = Math.sin; +export const sqrt = Math.sqrt; + +export const epsilon = pow(6, 3) / pow(29, 3); +export const kappa = pow(29, 3) / pow(3, 3); diff --git a/experiments/flame/src/debug.js b/experiments/flame/src/debug.js new file mode 100644 index 00000000..62fcf2b5 --- /dev/null +++ b/experiments/flame/src/debug.js @@ -0,0 +1,8 @@ +import Stats from "stats.js"; +import Scheduler from "scheduling"; +const stats = new Stats(); +document.body.appendChild(stats.domElement); + +Scheduler.addEF(() => { + stats.update(); +}); diff --git a/experiments/flame/src/features.js b/experiments/flame/src/features.js new file mode 100644 index 00000000..a69baab8 --- /dev/null +++ b/experiments/flame/src/features.js @@ -0,0 +1,3 @@ +export const pixelRatio = 2; +export const targetWidth = 1080 * pixelRatio; +export const targetHeight = 1350 * pixelRatio; diff --git a/experiments/flame/src/fluid-sim/defaultSettings.js b/experiments/flame/src/fluid-sim/defaultSettings.js new file mode 100644 index 00000000..919efb92 --- /dev/null +++ b/experiments/flame/src/fluid-sim/defaultSettings.js @@ -0,0 +1,8 @@ +module.exports = { + TEXTURE_SIZE: 128, + TEXTURE_DOWNSAMPLE: 2, + DENSITY_DISSIPATION: 0.994, + VELOCITY_DISSIPATION: 0.996, + PRESSURE_DISSIPATION: 0.996, + PRESSURE_ITERATIONS: 20, +}; diff --git a/experiments/flame/src/fluid-sim/index.js b/experiments/flame/src/fluid-sim/index.js new file mode 100644 index 00000000..accfd436 --- /dev/null +++ b/experiments/flame/src/fluid-sim/index.js @@ -0,0 +1,259 @@ +// const alfrid = require("alfrid"); +import { GL, FboPingPong, FrameBuffer, Geom, ShaderLibs, Draw } from "alfrid"; +import Scheduler from "scheduling"; +const defaultSettings = require("./defaultSettings"); + +// shaders +import fsAdvect from "./shaders/advect.frag"; +import fsDivergence from "./shaders/divergence.frag"; +import fsClear from "./shaders/clear.frag"; +import fsJacobi from "./shaders/jacobi.frag"; +import fsGradientSub from "./shaders/gradientSubstract.frag"; +import fsSplat from "./shaders/splat.frag"; +import fsAdd from "./shaders/add.frag"; + +import { iOS } from "../utils"; + +class FluidSimulation { + constructor(mSettings = {}) { + this.settings = { ...defaultSettings }; + for (let s in mSettings) { + if (this.settings[s]) { + this.settings[s] = mSettings[s]; + } + } + + if (GL.isMobile) { + this.settings["TEXTURE_DOWNSAMPLE"] = 4; + } + + this._initTextures(); + this._initDrawCalls(); + } + + _initTextures() { + const { TEXTURE_SIZE: size } = this.settings; + this._texelSize = [1 / size, 1 / size]; + console.log(this._texelSize); + + const type = iOS ? GL.HALF_FLOAT : GL.FLOAT; + + const oSettings = { + minFilter: GL.LINEAR, + magFilter: GL.LINEAR, + wrapS: GL.MIRRORED_REPEAT, + wrapT: GL.MIRRORED_REPEAT, + type, + }; + + this._fboVelocity = new FboPingPong(size, size, oSettings); + this._fboDensity = new FboPingPong(size, size, oSettings); + this._fboPressure = new FboPingPong(size, size, oSettings); + this._fboDivergence = new FrameBuffer(size, size, oSettings); + + this._fboVelocity.read.bind(); + this._fboVelocity.read.unbind(); + this._fboVelocity.write.bind(); + this._fboVelocity.write.unbind(); + + this._fboDensity.read.bind(); + this._fboDensity.read.unbind(); + this._fboDensity.write.bind(); + this._fboDensity.write.unbind(); + + this._fboPressure.read.bind(); + this._fboPressure.read.unbind(); + this._fboPressure.write.bind(); + this._fboPressure.write.unbind(); + + this._fboDivergence.bind(); + this._fboDivergence.unbind(); + } + + _initDrawCalls() { + const mesh = Geom.bigTriangle(); + // const vs = ShaderLibs.bigTriangleVert; + const vs = `precision mediump float; +attribute vec2 aPosition; +varying vec2 vTextureCoord; + +void main(void) { + gl_Position = vec4(aPosition, 0.0, 1.0); + vTextureCoord = aPosition * .5 + .5; +} + `; + + // draw calls + this._drawAdvect = new Draw() + .useProgram(vs, fsAdvect) + .setMesh(mesh) + .setClearColor(0, 0, 0, 1) + .uniform("uTimestep", "float", 0.0005) + // .uniform("uTimestep", "float", 0.001) + .uniform("uTexelSize", "vec2", this._texelSize); + + this._drawDivergence = new Draw() + .useProgram(vs, fsDivergence) + .setMesh(mesh) + .setClearColor(0, 0, 0, 1) + .bindFrameBuffer(this._fboDivergence) + .uniform("uTexelSize", "vec2", this._texelSize); + + this._drawClear = new Draw() + .useProgram(vs, fsClear) + .setMesh(mesh) + .setClearColor(0, 0, 0, 1) + .uniform("uDissipation", "float", this.settings.PRESSURE_DISSIPATION); + + this._drawJacobi = new Draw() + .useProgram(vs, fsJacobi) + .setMesh(mesh) + .setClearColor(0, 0, 0, 1) + .uniform("uTexelSize", "vec2", this._texelSize); + + this._drawGradient = new Draw() + .useProgram(vs, fsGradientSub) + .setMesh(mesh) + .setClearColor(0, 0, 0, 1) + .uniform("uTexelSize", "vec2", this._texelSize); + + this._drawSplat = new Draw().useProgram(vs, fsSplat).setMesh(mesh); + this._drawAdd = new Draw().useProgram(vs, fsAdd).setMesh(mesh); + } + + updateFlow(mPos, mDir, mStrength = 1, mRadius = 1, mNoiseStrength = 0) { + const radius = 0.05; + const strength = 500 * mStrength; + const time = Scheduler.getElapsedTime() * 2.0; + + this._drawSplat + .bindFrameBuffer(this._fboVelocity.write) + .uniform("uTime", "float", time) + .uniform("uCenter", "vec2", mPos) + .uniform("uRadius", "float", radius * mRadius) + .uniform("uStrength", "float", strength) + .uniform("uNoiseStrength", "float", mNoiseStrength) + .uniform("uIsVelocity", "float", 1.0) + .uniform("uDir", "vec2", mDir) + .uniformTexture("texture", this._fboVelocity.read.texture, 0) + .draw(); + this._fboVelocity.swap(); + + this._drawSplat + .bindFrameBuffer(this._fboDensity.write) + .uniform("uCenter", "vec2", mPos) + .uniform("uIsVelocity", "float", 0.0) + .uniform("uStrength", "float", 0.05) + .uniform("uNoiseStrength", "float", mNoiseStrength) + .uniform("uDir", "vec2", mDir) + .uniformTexture("texture", this._fboDensity.read.texture, 0) + .draw(); + this._fboDensity.swap(); + } + + updateFlowWithMap(mTextureVel, mTextureDensity, uStrength = 1) { + this._drawAdd + .bindFrameBuffer(this._fboVelocity.write) + .uniformTexture("textureBase", this._fboVelocity.read.texture, 0) + .uniformTexture("textureAdd", mTextureVel, 1) + .uniform("uStrength", "float", uStrength * 1000) + .draw(); + this._fboVelocity.swap(); + + this._drawAdd + .bindFrameBuffer(this._fboDensity.write) + .uniformTexture("textureBase", this._fboDensity.read.texture, 0) + .uniformTexture("textureAdd", mTextureDensity, 1) + .uniform("uStrength", "float", 0.02) + .draw(); + this._fboDensity.swap(); + } + + advect(target, textureX, dissipation) { + this._drawAdvect + .bindFrameBuffer(target) + .uniformTexture("textureVel", this._fboVelocity.read.texture, 0) + .uniformTexture("textureMap", textureX, 1) + .uniform("uDissipation", "float", dissipation) + .draw(); + } + + update() { + // advect - velocity + this.advect( + this._fboVelocity.write, + this._fboVelocity.read.texture, + this.settings.VELOCITY_DISSIPATION + ); + this._fboVelocity.swap(); + + // advect - density + this.advect( + this._fboDensity.write, + this._fboDensity.read.texture, + this.settings.DENSITY_DISSIPATION + ); + this._fboDensity.swap(); + + // divergence + this._drawDivergence + .uniformTexture("textureVel", this._fboVelocity.read.texture, 0) + .draw(); + + // clear + this._drawClear + .bindFrameBuffer(this._fboPressure.write) + .uniformTexture("texturePressure", this._fboPressure.read.texture, 0) + .draw(); + this._fboPressure.swap(); + + // jacobi + for (let i = 0; i < this.settings.PRESSURE_ITERATIONS; i++) { + this._drawJacobi + .bindFrameBuffer(this._fboPressure.write) + .uniformTexture("texturePressure", this._fboPressure.read.texture, 0) + .uniformTexture("textureDivergence", this._fboDivergence.texture, 1) + .draw(); + + this._fboPressure.swap(); + } + + // gradient sub + this._drawGradient + .bindFrameBuffer(this._fboVelocity.write) + .uniformTexture("texturePressure", this._fboPressure.read.texture, 0) + .uniformTexture("textureVel", this._fboVelocity.read.texture, 1) + .draw(); + + this._fboVelocity.swap(); + } + + get velocity() { + return this._fboVelocity.read.texture; + } + + get density() { + return this._fboDensity.read.texture; + } + + get divergence() { + return this._fboDivergence.texture; + } + + get pressure() { + return this._fboPressure.read.texture; + } + + get allTextures() { + return [this.velocity, this.density, this.divergence, this.pressure]; + } + + log() { + console.log("Fluid Settings : "); + for (let s in this.settings) { + console.log(s, this.settings[s]); + } + } +} + +export default FluidSimulation; diff --git a/experiments/flame/src/fluid-sim/shaders/add.frag.js b/experiments/flame/src/fluid-sim/shaders/add.frag.js new file mode 100644 index 00000000..9e70598d --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/add.frag.js @@ -0,0 +1,11 @@ +module.exports = `precision highp float; +varying vec2 vTextureCoord; +uniform sampler2D textureBase; +uniform sampler2D textureAdd; +uniform float uStrength; + +void main(void) { + vec3 base = texture2D(textureBase, vTextureCoord).xyz; + vec3 add = texture2D(textureAdd, vTextureCoord).xyz; + gl_FragColor = vec4(base + add * uStrength, 1.0); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/advect.frag.js b/experiments/flame/src/fluid-sim/shaders/advect.frag.js new file mode 100644 index 00000000..f9636bea --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/advect.frag.js @@ -0,0 +1,13 @@ +module.exports = `precision highp float; + +varying vec2 vTextureCoord; +uniform float uTimestep; +uniform float uDissipation; +uniform vec2 uTexelSize; // 1 / grid scale +uniform sampler2D textureVel; // input textureVel +uniform sampler2D textureMap; // quantity to advect + +void main() { + vec2 pos = vTextureCoord - uTimestep * uTexelSize * texture2D(textureVel, vTextureCoord).xy; + gl_FragColor = uDissipation * texture2D(textureMap, pos); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/clear.frag.js b/experiments/flame/src/fluid-sim/shaders/clear.frag.js new file mode 100644 index 00000000..1392651d --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/clear.frag.js @@ -0,0 +1,9 @@ +module.exports = `precision highp float; + +varying vec2 vTextureCoord; +uniform sampler2D texturePressure; +uniform float uDissipation; + +void main() { + gl_FragColor = uDissipation * texture2D(texturePressure, vTextureCoord); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/curlnoise.glsl.js b/experiments/flame/src/fluid-sim/shaders/curlnoise.glsl.js new file mode 100644 index 00000000..5b18711f --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/curlnoise.glsl.js @@ -0,0 +1,103 @@ +module.exports = ` + +vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + +vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + +vec4 permute(vec4 x) { return mod289(((x*34.0)+1.0)*x); } + +vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r;} + +float snoise(vec3 v) { + const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + vec3 i = floor(v + dot(v, C.yyy) ); + vec3 x0 = v - i + dot(i, C.xxx) ; + + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + i = mod289(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), + dot(p2,x2), dot(p3,x3) ) ); +} + +vec3 snoiseVec3( vec3 x ){ + + float s = snoise(vec3( x )); + float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 )); + float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 )); + vec3 c = vec3( s , s1 , s2 ); + return c; + +} + +vec3 curlNoise( vec3 p ){ + + const float e = .1; + vec3 dx = vec3( e , 0.0 , 0.0 ); + vec3 dy = vec3( 0.0 , e , 0.0 ); + vec3 dz = vec3( 0.0 , 0.0 , e ); + + vec3 p_x0 = snoiseVec3( p - dx ); + vec3 p_x1 = snoiseVec3( p + dx ); + vec3 p_y0 = snoiseVec3( p - dy ); + vec3 p_y1 = snoiseVec3( p + dy ); + vec3 p_z0 = snoiseVec3( p - dz ); + vec3 p_z1 = snoiseVec3( p + dz ); + + float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y; + float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z; + float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x; + + const float divisor = 1.0 / ( 2.0 * e ); + return normalize( vec3( x , y , z ) * divisor ); + +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/divergence.frag.js b/experiments/flame/src/fluid-sim/shaders/divergence.frag.js new file mode 100644 index 00000000..2341b3cd --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/divergence.frag.js @@ -0,0 +1,23 @@ +module.exports = ` +precision highp float; +precision mediump sampler2D; + +varying vec2 vTextureCoord; // grid coordinates +uniform vec2 uTexelSize; +uniform sampler2D textureVel; // vector field + +vec2 sampleVelocity(in vec2 uv) { + vec2 mult = vec2(1.0, 1.0); + if (uv.x < 0.0 || uv.x > 1.0) { mult.x = -1.0; } + if (uv.y < 0.0 || uv.y > 1.0) { mult.y = -1.0; } + return texture2D(textureVel, uv).xy; +} + +void main() { + float L = sampleVelocity(vTextureCoord - vec2(uTexelSize.x, 0.0)).x; + float R = sampleVelocity(vTextureCoord + vec2(uTexelSize.x, 0.0)).x; + float T = sampleVelocity(vTextureCoord + vec2(0.0, uTexelSize.y)).y; + float B = sampleVelocity(vTextureCoord - vec2(0.0, uTexelSize.y)).y; + float div = 0.5 * (R - L + T - B); + gl_FragColor = vec4(div, 0.0, 0.0, 1.0); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/gradientSubstract.frag.js b/experiments/flame/src/fluid-sim/shaders/gradientSubstract.frag.js new file mode 100644 index 00000000..123faf95 --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/gradientSubstract.frag.js @@ -0,0 +1,15 @@ +module.exports = `precision highp float; + +varying vec2 vTextureCoord; +uniform vec2 uTexelSize; +uniform sampler2D texturePressure; +uniform sampler2D textureVel; + +void main() { + float pL = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x; + float pR = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x; + float pB = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x; + float pT = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x; + vec2 v = texture2D(textureVel, vTextureCoord).xy; + gl_FragColor = vec4(v - vec2(pR - pL, pT - pB), 0.0, 1.0); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/jacobi.frag.js b/experiments/flame/src/fluid-sim/shaders/jacobi.frag.js new file mode 100644 index 00000000..68565a9c --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/jacobi.frag.js @@ -0,0 +1,21 @@ +module.exports = `precision highp float; +precision mediump sampler2D; + +varying vec2 vTextureCoord; // grid coordinates +uniform vec2 uTexelSize; +uniform sampler2D texturePressure; +uniform sampler2D textureDivergence; + +void main() { + // left, right, bottom, and top texturePressure samples + float L = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x; + float R = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x; + float B = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x; + float T = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x; + + // textureDivergence sample, from center + float bC = texture2D(textureDivergence, vTextureCoord).x; + + // evaluate Jacobi iteration + gl_FragColor = vec4(0.25 * (L + R + B + T - bC), 0, 0, 1); +}`; diff --git a/experiments/flame/src/fluid-sim/shaders/splat.frag.js b/experiments/flame/src/fluid-sim/shaders/splat.frag.js new file mode 100644 index 00000000..68826fc8 --- /dev/null +++ b/experiments/flame/src/fluid-sim/shaders/splat.frag.js @@ -0,0 +1,58 @@ +const curlNoise = require("./curlnoise.glsl"); +module.exports = ` +// copy.frag + +#define SHADER_NAME SIMPLE_TEXTURE + +precision highp float; +varying vec2 vTextureCoord; +uniform sampler2D texture; + +uniform vec2 uCenter; +uniform vec2 uDir; +uniform float uTime; +uniform float uRadius; +uniform float uStrength; +uniform float uNoiseStrength; +uniform float uIsVelocity; + + +vec2 rotate(vec2 v, float a) { + float s = sin(a); + float c = cos(a); + mat2 m = mat2(c, -s, s, c); + return m * v; +} + +${curlNoise} + +#define PI 3.141592653 + +void main(void) { + vec2 center = uCenter; + + float r = 0.15 + sin(cos(uTime) * 4.489538925) * 0.0; + vec2 v = vec2(r, 0.0); + v = rotate(v, uTime); + + vec3 noise = curlNoise(vec3(vTextureCoord * 2.0, uTime)) * uNoiseStrength; + + vec2 dir = uDir; + dir *= uStrength; + float d = distance(vTextureCoord, center); + d = smoothstep(uRadius, 0.0, d); + + + vec3 color = uIsVelocity > 0.5 ? vec3(dir, 0.0) : vec3(uStrength); + if(uIsVelocity > .5) { + color += noise * 0.5; + } else { + color += noise.rrr * uStrength; + } + color *= d; + + vec3 base = texture2D(texture, vTextureCoord).xyz; + + gl_FragColor = vec4(color + base, 1.0); +} +`; diff --git a/experiments/flame/src/hash.js b/experiments/flame/src/hash.js new file mode 100644 index 00000000..65a6ff65 --- /dev/null +++ b/experiments/flame/src/hash.js @@ -0,0 +1,36 @@ +let alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"; +var fxhash = + "oo" + + Array(49) + .fill(0) + .map((_) => alphabet[(Math.random() * alphabet.length) | 0]) + .join(""); +// fxhash = "ooviis2FLVW5XXMprTezqQ1aAc2upyZosSvwh6dizP8TPqfEvzq"; +let b58dec = (str) => + str + .split("") + .reduce( + (p, c, i) => + p + alphabet.indexOf(c) * Math.pow(alphabet.length, str.length - i - 1), + 0 + ); +let fxhashTrunc = fxhash.slice(2); +let regex = new RegExp(".{" + ((fxhash.length / 4) | 0) + "}", "g"); +let hashes = fxhashTrunc.match(regex).map((h) => b58dec(h)); +let sfc32 = (a, b, c, d) => { + return () => { + a |= 0; + b |= 0; + c |= 0; + d |= 0; + var t = (((a + b) | 0) + d) | 0; + d = (d + 1) | 0; + a = b ^ (b >>> 9); + b = (c + (c << 3)) | 0; + c = (c << 21) | (c >>> 11); + c = (c + t) | 0; + return (t >>> 0) / 4294967296; + }; +}; +window.fxhash = fxhash; +window.fxrand = sfc32(...hashes); diff --git a/experiments/flame/src/index.js b/experiments/flame/src/index.js new file mode 100644 index 00000000..5a81830f --- /dev/null +++ b/experiments/flame/src/index.js @@ -0,0 +1,74 @@ +// these are the variables you can use as inputs to your algorithms +// console.log(fxhash); // the 64 chars hex number fed to your algorithm +// console.log(fxrand()); // deterministic PRNG function, use it instead of Math.random() + +// note about the fxrand() function +// when the "fxhash" is always the same, it will generate the same sequence of +// pseudo random numbers, always + +//---------------------- +// defining features +//---------------------- +// You can define some token features by populating the $fxhashFeatures property +// of the window object. +// More about it in the guide, section features: +// [https://fxhash.xyz/articles/guide-mint-generative-token#features] +// +// window.$fxhashFeatures = { +// "Background": "Black", +// "Number of lines": 10, +// "Inverted": true +// } + +// import "./sketch01.js"; + +import "./hash.js"; +import Config from "./Config.js"; +import { GL } from "alfrid"; +import Scene from "./SceneApp"; +import { logError } from "./utils"; +import preload from "./utils/preload"; +import "./utils/Capture"; +import addFullscreen from "./utils/fullscreen"; + +const isDev = process.env.NODE_ENV === "development"; + +let scene; +let canvas; + +const initScene = () => { + canvas = document.createElement("canvas"); + canvas.id = "main-canvas"; + document.body.appendChild(canvas); + + GL.init(canvas, { alpha: false, preserveDrawingBuffer: true }); + const { gl } = GL; + if (`drawingBufferColorSpace` in gl) { + gl.drawingBufferColorSpace = "display-p3"; + console.log("Drawing Buffer Color Space:", gl.drawingBufferColorSpace); + } + + if (!Config.useTargetSize) { + addFullscreen(); + } + + scene = new Scene(); +}; + +function _init3D() { + if (isDev) { + import("./Settings").then(({ default: Settings }) => { + Settings.init(); + initScene(); + + import("./utils/addControl").then(({ default: addControls }) => { + addControls(scene); + import("./debug"); + }); + }); + } else { + initScene(); + } +} + +preload().then(_init3D, logError); diff --git a/experiments/flame/src/shaders/add.frag b/experiments/flame/src/shaders/add.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/add.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/advect.frag b/experiments/flame/src/shaders/advect.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/advect.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/basic.vert b/experiments/flame/src/shaders/basic.vert new file mode 100644 index 00000000..75808780 --- /dev/null +++ b/experiments/flame/src/shaders/basic.vert @@ -0,0 +1,19 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +out vec2 vTextureCoord; +out vec3 vNormal; + +void main(void) { + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0); + vTextureCoord = aTextureCoord; + vNormal = aNormal; +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/clear.frag b/experiments/flame/src/shaders/clear.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/clear.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/diffuse.frag b/experiments/flame/src/shaders/diffuse.frag new file mode 100644 index 00000000..86f40584 --- /dev/null +++ b/experiments/flame/src/shaders/diffuse.frag @@ -0,0 +1,13 @@ +// copy.frag + +#define SHADER_NAME SIMPLE_TEXTURE + +precision highp float; +varying vec3 vNormal; +#pragma glslify: diffuse = require(./glsl-utils/diffuse.glsl) +#define LIGHT vec3(1.0, 0.8, 0.6) + +void main(void) { + float g = diffuse(vNormal, LIGHT, .5); + gl_FragColor = vec4(vec3(g), 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/divergence.frag b/experiments/flame/src/shaders/divergence.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/divergence.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/_normalize.glsl b/experiments/flame/src/shaders/glsl-utils/_normalize.glsl new file mode 100644 index 00000000..5532046b --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/_normalize.glsl @@ -0,0 +1,17 @@ +vec2 _normalize(vec2 v) { + if(length(v) <= 0.0) { + return vec2(0.0); + } else { + return normalize(v); + } +} + +vec3 _normalize(vec3 v) { + if(length(v) <= 0.0) { + return vec3(0.0); + } else { + return normalize(v); + } +} + +#pragma glslify: export(diffuse) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/align.glsl b/experiments/flame/src/shaders/glsl-utils/align.glsl new file mode 100644 index 00000000..4a4b463c --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/align.glsl @@ -0,0 +1,34 @@ +vec2 rotate(vec2 v, float a) { + float s = sin(a); + float c = cos(a); + mat2 m = mat2(c, s, -s, c); + return m * v; +} + +mat4 rotationMatrix(vec3 axis, float angle) { + axis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +vec3 rotate(vec3 v, vec3 axis, float angle) { + mat4 m = rotationMatrix(axis, angle); + return (m * vec4(v, 1.0)).xyz; +} + + +vec3 align(vec3 pos, vec3 dir) { + vec3 initDir = vec3(1.0, 0.0, 0.0); + vec3 axis = cross(dir, initDir); + float angle = acos(dot(dir, initDir)); + return rotate(pos, axis, angle); +} + + +#pragma glslify: export(align) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/bezier.glsl b/experiments/flame/src/shaders/glsl-utils/bezier.glsl new file mode 100755 index 00000000..db1ef2f8 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/bezier.glsl @@ -0,0 +1,92 @@ + +vec3 bezier(vec3 A, vec3 B, vec3 C, vec3 D, float t) { + vec3 E = mix(A, B, t); + vec3 F = mix(B, C, t); + vec3 G = mix(C, D, t); + + vec3 H = mix(E, F, t); + vec3 I = mix(F, G, t); + + vec3 P = mix(H, I, t); + + return P; +} + + +vec3 bezier(vec3 A, vec3 B, vec3 C, vec3 D, vec3 E, float t) { + vec3 A1 = mix(A, B, t); + vec3 B1 = mix(B, C, t); + vec3 C1 = mix(C, D, t); + vec3 D1 = mix(D, E, t); + + vec3 A2 = mix(A1, B1, t); + vec3 B2 = mix(B1, C1, t); + vec3 C2 = mix(C1, D1, t); + + vec3 A3 = mix(A2, B2, t); + vec3 B3 = mix(B2, C2, t); + + vec3 P = mix(A3, B3, t); + + return P; +} + + +vec3 bezier(vec3 A, vec3 B, vec3 C, vec3 D, vec3 E, vec3 F, float t) { + vec3 A1 = mix(A, B, t); + vec3 B1 = mix(B, C, t); + vec3 C1 = mix(C, D, t); + vec3 D1 = mix(D, E, t); + vec3 E1 = mix(E, F, t); + + vec3 A2 = mix(A1, B1, t); + vec3 B2 = mix(B1, C1, t); + vec3 C2 = mix(C1, D1, t); + vec3 D2 = mix(D1, E1, t); + + vec3 A3 = mix(A2, B2, t); + vec3 B3 = mix(B2, C2, t); + vec3 C3 = mix(C2, D2, t); + + vec3 A4 = mix(A3, B3, t); + vec3 B4 = mix(B3, C3, t); + + vec3 P = mix(A4, B4, t); + + return P; +} + + +vec3 bezier(vec3 A, vec3 B, vec3 C, vec3 D, vec3 E, vec3 F, vec3 G, float t) { + vec3 A1 = mix(A, B, t); + vec3 B1 = mix(B, C, t); + vec3 C1 = mix(C, D, t); + vec3 D1 = mix(D, E, t); + vec3 E1 = mix(E, F, t); + vec3 F1 = mix(F, G, t); + + vec3 A2 = mix(A1, B1, t); + vec3 B2 = mix(B1, C1, t); + vec3 C2 = mix(C1, D1, t); + vec3 D2 = mix(D1, E1, t); + vec3 E2 = mix(E1, F1, t); + + vec3 A3 = mix(A2, B2, t); + vec3 B3 = mix(B2, C2, t); + vec3 C3 = mix(C2, D2, t); + vec3 D3 = mix(D2, E2, t); + + vec3 A4 = mix(A3, B3, t); + vec3 B4 = mix(B3, C3, t); + vec3 C4 = mix(C3, D3, t); + + vec3 A5 = mix(A4, B4, t); + vec3 B5 = mix(B4, C4, t); + + vec3 P = mix(A5, B5, t); + + return P; +} + + +#pragma glslify: export(bezier) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/blur13.glsl b/experiments/flame/src/shaders/glsl-utils/blur13.glsl new file mode 100644 index 00000000..d524d328 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/blur13.glsl @@ -0,0 +1,16 @@ +vec4 blur13(sampler2D image, vec2 uv, vec2 resolution, vec2 direction) { + vec4 color = vec4(0.0); + vec2 off1 = vec2(1.411764705882353) * direction; + vec2 off2 = vec2(3.2941176470588234) * direction; + vec2 off3 = vec2(5.176470588235294) * direction; + color += texture2D(image, uv) * 0.1964825501511404; + color += texture2D(image, uv + (off1 / resolution)) * 0.2969069646728344; + color += texture2D(image, uv - (off1 / resolution)) * 0.2969069646728344; + color += texture2D(image, uv + (off2 / resolution)) * 0.09447039785044732; + color += texture2D(image, uv - (off2 / resolution)) * 0.09447039785044732; + color += texture2D(image, uv + (off3 / resolution)) * 0.010381362401148057; + color += texture2D(image, uv - (off3 / resolution)) * 0.010381362401148057; + return color; +} + +#pragma glslify: export(blur13) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/blur5.glsl b/experiments/flame/src/shaders/glsl-utils/blur5.glsl new file mode 100644 index 00000000..147d3464 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/blur5.glsl @@ -0,0 +1,10 @@ +vec4 blur5(sampler2D image, vec2 uv, vec2 resolution, vec2 direction) { + vec4 color = vec4(0.0); + vec2 off1 = vec2(1.3333333333333333) * direction; + color += texture2D(image, uv) * 0.29411764705882354; + color += texture2D(image, uv + (off1 / resolution)) * 0.35294117647058826; + color += texture2D(image, uv - (off1 / resolution)) * 0.35294117647058826; + return color; +} + +#pragma glslify: export(blur5) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/blur9.glsl b/experiments/flame/src/shaders/glsl-utils/blur9.glsl new file mode 100644 index 00000000..988bbb46 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/blur9.glsl @@ -0,0 +1,13 @@ +vec4 blur9(sampler2D image, vec2 uv, vec2 resolution, vec2 direction) { + vec4 color = vec4(0.0); + vec2 off1 = vec2(1.3846153846) * direction; + vec2 off2 = vec2(3.2307692308) * direction; + color += texture2D(image, uv) * 0.2270270270; + color += texture2D(image, uv + (off1 / resolution)) * 0.3162162162; + color += texture2D(image, uv - (off1 / resolution)) * 0.3162162162; + color += texture2D(image, uv + (off2 / resolution)) * 0.0702702703; + color += texture2D(image, uv - (off2 / resolution)) * 0.0702702703; + return color; +} + +#pragma glslify: export(blur9) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/curlNoise.glsl b/experiments/flame/src/shaders/glsl-utils/curlNoise.glsl new file mode 100644 index 00000000..c440c7ba --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/curlNoise.glsl @@ -0,0 +1,106 @@ +// curlNoise.glsl + +vec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + +vec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; } + +// snoise.glsl +vec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); } +vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; } + +float snoise(vec3 v){ + const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + vec3 i = floor(v + dot(v, C.yyy) ); + vec3 x0 = v - i + dot(i, C.xxx) ; + + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + vec3 x1 = x0 - i1 + 1.0 * C.xxx; + vec3 x2 = x0 - i2 + 2.0 * C.xxx; + vec3 x3 = x0 - 1. + 3.0 * C.xxx; + + i = mod(i, 289.0 ); + vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + float n_ = 1.0/7.0; + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z *ns.z); + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + +float snoise(float x, float y, float z){ + return snoise(vec3(x, y, z)); +} + +vec3 snoiseVec3( vec3 x ){ + + float s = snoise(vec3( x )); + float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 )); + float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 )); + vec3 c = vec3( s , s1 , s2 ); + return c; + +} + + +vec3 curlNoise( vec3 p ){ + + const float e = .1; + vec3 dx = vec3( e , 0.0 , 0.0 ); + vec3 dy = vec3( 0.0 , e , 0.0 ); + vec3 dz = vec3( 0.0 , 0.0 , e ); + + vec3 p_x0 = snoiseVec3( p - dx ); + vec3 p_x1 = snoiseVec3( p + dx ); + vec3 p_y0 = snoiseVec3( p - dy ); + vec3 p_y1 = snoiseVec3( p + dy ); + vec3 p_z0 = snoiseVec3( p - dz ); + vec3 p_z1 = snoiseVec3( p + dz ); + + float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y; + float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z; + float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x; + + const float divisor = 1.0 / ( 2.0 * e ); + return normalize( vec3( x , y , z ) * divisor ); + +} + +#pragma glslify: export(curlNoise) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/diffuse.glsl b/experiments/flame/src/shaders/glsl-utils/diffuse.glsl new file mode 100644 index 00000000..115c3583 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/diffuse.glsl @@ -0,0 +1,11 @@ +float diffuse(vec3 n, vec3 l) { + float d = dot(normalize(n), normalize(l)); + return max(d, 0.0); +} + +float diffuse(vec3 n, vec3 l, float t) { + float d = dot(normalize(n), normalize(l)); + return mix(1.0, max(d, 0.0), t); +} + +#pragma glslify: export(diffuse) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/fbm/1d.glsl b/experiments/flame/src/shaders/glsl-utils/fbm/1d.glsl new file mode 100755 index 00000000..6356b777 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/fbm/1d.glsl @@ -0,0 +1,24 @@ + +#define NUM_OCTAVES 5 + +float rand(float n){return fract(sin(n) * 43758.5453123);} + +float noise(float p){ + float fl = floor(p); + float fc = fract(p); + return mix(rand(fl), rand(fl + 1.0), fc); +} + +float fbm(float x) { + float v = 0.0; + float a = 0.5; + float shift = float(100); + for (int i = 0; i < NUM_OCTAVES; ++i) { + v += a * noise(x); + x = x * 2.0 + shift; + a *= 0.5; + } + return v; +} + +#pragma glslify: export(fbm) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/fbm/2d.glsl b/experiments/flame/src/shaders/glsl-utils/fbm/2d.glsl new file mode 100755 index 00000000..627206c2 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/fbm/2d.glsl @@ -0,0 +1,32 @@ +#define NUM_OCTAVES 5 + +float rand(vec2 n) { + return fract(sin(dot(n, vec2(12.9898, 4.1414))) * 43758.5453); +} + +float noise(vec2 p){ + vec2 ip = floor(p); + vec2 u = fract(p); + u = u*u*(3.0-2.0*u); + + float res = mix( + mix(rand(ip),rand(ip+vec2(1.0,0.0)),u.x), + mix(rand(ip+vec2(0.0,1.0)),rand(ip+vec2(1.0,1.0)),u.x),u.y); + return res*res; +} + +float fbm(vec2 x) { + float v = 0.0; + float a = 0.5; + vec2 shift = vec2(100); + // Rotate to reduce axial bias + mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.50)); + for (int i = 0; i < NUM_OCTAVES; ++i) { + v += a * noise(x); + x = rot * x * 2.0 + shift; + a *= 0.5; + } + return v; +} + +#pragma glslify: export(fbm) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/fbm/3d.glsl b/experiments/flame/src/shaders/glsl-utils/fbm/3d.glsl new file mode 100755 index 00000000..51db641f --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/fbm/3d.glsl @@ -0,0 +1,42 @@ +#define NUM_OCTAVES 5 + +float mod289(float x){return x - floor(x * (1.0 / 289.0)) * 289.0;} +vec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;} +vec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);} + +float noise(vec3 p){ + vec3 a = floor(p); + vec3 d = p - a; + d = d * d * (3.0 - 2.0 * d); + + vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0); + vec4 k1 = perm(b.xyxy); + vec4 k2 = perm(k1.xyxy + b.zzww); + + vec4 c = k2 + a.zzzz; + vec4 k3 = perm(c); + vec4 k4 = perm(c + 1.0); + + vec4 o1 = fract(k3 * (1.0 / 41.0)); + vec4 o2 = fract(k4 * (1.0 / 41.0)); + + vec4 o3 = o2 * d.z + o1 * (1.0 - d.z); + vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x); + + return o4.y * d.y + o4.x * (1.0 - d.y); +} + + +float fbm(vec3 x) { + float v = 0.0; + float a = 0.5; + vec3 shift = vec3(100); + for (int i = 0; i < NUM_OCTAVES; ++i) { + v += a * noise(x); + x = x * 2.0 + shift; + a *= 0.5; + } + return v; +} + +#pragma glslify: export(fbm) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/map.glsl b/experiments/flame/src/shaders/glsl-utils/map.glsl new file mode 100644 index 00000000..a070a78c --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/map.glsl @@ -0,0 +1,14 @@ +float map(float value, float start, float end, float newStart, float newEnd) { + float percent = (value - start) / (end - start); + if (percent < 0.0) { + percent = 0.0; + } + if (percent > 1.0) { + percent = 1.0; + } + float newValue = newStart + (newEnd - newStart) * percent; + return newValue; +} + + +#pragma glslify: export(map) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/package.json b/experiments/flame/src/shaders/glsl-utils/package.json new file mode 100644 index 00000000..ee8c4b09 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/package.json @@ -0,0 +1,23 @@ +{ + "name": "glsl-utils", + "version": "1.0.0", + "description": "glsl tool functions", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://yiwenl@github.com/yiwenl/glsl-utils.git" + }, + "keywords": [ + "glsl", + "tool" + ], + "author": "Yi-Wen LIN", + "license": "MIT", + "bugs": { + "url": "https://github.com/yiwenl/glsl-utils/issues" + }, + "homepage": "https://github.com/yiwenl/glsl-utils#readme" +} diff --git a/experiments/flame/src/shaders/glsl-utils/particleSize.glsl b/experiments/flame/src/shaders/glsl-utils/particleSize.glsl new file mode 100644 index 00000000..dadf5977 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/particleSize.glsl @@ -0,0 +1,5 @@ +float particleSize(vec4 screenPos, mat4 mtxProj, vec2 viewport, float radius) { + return viewport.y * mtxProj[1][1] * radius / screenPos.w; +} + +#pragma glslify: export(particleSize) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/rotate.glsl b/experiments/flame/src/shaders/glsl-utils/rotate.glsl new file mode 100644 index 00000000..8ff5231a --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/rotate.glsl @@ -0,0 +1,26 @@ +vec2 rotate(vec2 v, float a) { + float s = sin(a); + float c = cos(a); + mat2 m = mat2(c, s, -s, c); + return m * v; +} + +mat4 rotationMatrix(vec3 axis, float angle) { + axis = normalize(axis); + float s = sin(angle); + float c = cos(angle); + float oc = 1.0 - c; + + return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0, + oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0, + oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0, + 0.0, 0.0, 0.0, 1.0); +} + +vec3 rotate(vec3 v, vec3 axis, float angle) { + mat4 m = rotationMatrix(axis, angle); + return (m * vec4(v, 1.0)).xyz; +} + + +#pragma glslify: export(rotate) \ No newline at end of file diff --git a/experiments/flame/src/shaders/glsl-utils/snoise.glsl b/experiments/flame/src/shaders/glsl-utils/snoise.glsl new file mode 100644 index 00000000..1170a1e2 --- /dev/null +++ b/experiments/flame/src/shaders/glsl-utils/snoise.glsl @@ -0,0 +1,66 @@ +// snoise.glsl +vec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); } +vec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; } + +float snoise(vec3 v){ + const vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + vec3 i = floor(v + dot(v, C.yyy) ); + vec3 x0 = v - i + dot(i, C.xxx) ; + + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + vec3 x1 = x0 - i1 + 1.0 * C.xxx; + vec3 x2 = x0 - i2 + 2.0 * C.xxx; + vec3 x3 = x0 - 1. + 3.0 * C.xxx; + + i = mod(i, 289.0 ); + vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + float n_ = 1.0/7.0; + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z *ns.z); + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); + + vec4 x = x_ *ns.x + ns.yyyy; + vec4 y = y_ *ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0); + m = m * m; + return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + +float snoise(float x, float y, float z){ + return snoise(vec3(x, y, z)); +} + +#pragma glslify: export(snoise) \ No newline at end of file diff --git a/experiments/flame/src/shaders/gradientSubstract.frag b/experiments/flame/src/shaders/gradientSubstract.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/gradientSubstract.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/jacobi.frag b/experiments/flame/src/shaders/jacobi.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/jacobi.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/particles.frag b/experiments/flame/src/shaders/particles.frag new file mode 100644 index 00000000..a1396c1e --- /dev/null +++ b/experiments/flame/src/shaders/particles.frag @@ -0,0 +1,36 @@ +#version 300 es + +precision highp float; +in vec3 vColor; +in vec4 vShadowCoord; + +uniform sampler2D uDepthMap; +uniform vec3 uLight; + +out vec4 oColor; + + +float samplePCF3x3( vec4 sc ) +{ + const int s = 2; + float shadow = 0.0; + float bias = 0.005; + float threshold = sc.z - bias; + + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s,-s) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, 0) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, s) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0,-s) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, 0) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, s) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s,-s) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, 0) ).r); + shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, s) ).r); + return shadow/9.0; +} + + +void main(void) { + if(distance(gl_PointCoord, vec2(0.5)) > 0.5) discard; + oColor = vec4(vColor, 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/particles.vert b/experiments/flame/src/shaders/particles.vert new file mode 100644 index 00000000..45d8d210 --- /dev/null +++ b/experiments/flame/src/shaders/particles.vert @@ -0,0 +1,45 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; +uniform mat4 uShadowMatrix; +uniform vec2 uViewport; + +uniform sampler2D uPosMap; +uniform sampler2D uDataMap; + +out vec3 vColor; +out vec4 vShadowCoord; + +#pragma glslify: rotate = require(./glsl-utils/rotate.glsl) +#pragma glslify: particleSize = require(./glsl-utils/particleSize.glsl) + +#define radius 0.015 + +void main(void) { + + vec3 pos = texture(uPosMap, aTextureCoord).xyz; + vec3 data = texture(uDataMap, aTextureCoord).xyz; + float life = data.x; + vec4 wsPos = uModelMatrix * vec4(pos, 1.0); + + gl_Position = uProjectionMatrix * uViewMatrix * wsPos; + + float scale = mix(0.5, 1.0, aVertexPosition.x); + float scaleLife = abs(life - .5); + scaleLife = smoothstep(0.5, 0.4, scaleLife); + scale *= scaleLife; + + gl_PointSize = particleSize(gl_Position, uProjectionMatrix, uViewport, radius) * scale; + + vShadowCoord = uShadowMatrix * wsPos; + float g = mix(0.5, 1.0, aVertexPosition.y); + // vColor = vec3(data.yz, 0.0); + vColor = vec3(g); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/save.frag b/experiments/flame/src/shaders/save.frag new file mode 100644 index 00000000..eac4273f --- /dev/null +++ b/experiments/flame/src/shaders/save.frag @@ -0,0 +1,18 @@ +#version 300 es + +precision highp float; +in vec3 vPosition; +in vec3 vNormal; +in vec3 vData; + +layout (location = 0) out vec4 oFragColor0; +layout (location = 1) out vec4 oFragColor1; +layout (location = 2) out vec4 oFragColor2; +layout (location = 3) out vec4 oFragColor3; + +void main(void) { + oFragColor0 = vec4(vPosition, 1.0); + oFragColor1 = vec4(vec3(0.0), 1.0); + oFragColor2 = vec4(vNormal, 1.0); + oFragColor3 = vec4(vData, 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/save.vert b/experiments/flame/src/shaders/save.vert new file mode 100644 index 00000000..63f8c5d5 --- /dev/null +++ b/experiments/flame/src/shaders/save.vert @@ -0,0 +1,20 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; +in vec3 aData; + +out vec3 vPosition; +out vec3 vNormal; +out vec3 vData; + +void main(void) { + gl_Position = vec4(aTextureCoord, 0.0, 1.0); + vPosition = aVertexPosition; + vNormal = aNormal; + vData = aData; + + gl_PointSize = 1.0; +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/sim.frag b/experiments/flame/src/shaders/sim.frag new file mode 100644 index 00000000..e25d8530 --- /dev/null +++ b/experiments/flame/src/shaders/sim.frag @@ -0,0 +1,75 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; + +uniform sampler2D uPosMap; +uniform sampler2D uVelMap; +uniform sampler2D uExtraMap; +uniform sampler2D uDataMap; +uniform sampler2D uPosOrgMap; +uniform sampler2D uFluidMap; +uniform sampler2D uDensityMap; + +uniform float uBound; +uniform float uTime; + +layout (location = 0) out vec4 oFragColor0; +layout (location = 1) out vec4 oFragColor1; +layout (location = 2) out vec4 oFragColor2; +layout (location = 3) out vec4 oFragColor3; + +#pragma glslify: rotate = require(./glsl-utils/rotate.glsl) +#pragma glslify: snoise = require(./glsl-utils/snoise.glsl) +#pragma glslify: curlNoise = require(./glsl-utils/curlNoise.glsl) + +#define PI 3.1415926535897932384626433832795 + +void main(void) { + + vec3 pos = texture(uPosMap, vTextureCoord).xyz; + vec3 vel = texture(uVelMap, vTextureCoord).xyz; + vec3 extra = texture(uExtraMap, vTextureCoord).xyz; + vec3 data = texture(uDataMap, vTextureCoord).xyz; + vec3 posOrg = texture(uPosOrgMap, vTextureCoord).xyz; + + float life = data.x; + life -= mix(1.0, 3.0, extra.y) * 0.004; + + vec3 acc = vec3(0.0); + + vec2 uv = pos.xy / uBound * .5 + .5; + vec3 fluid = texture(uFluidMap, uv).xyz; + float density = texture(uDensityMap, uv).x; + density = mix(0.5, 1.0, density); + acc += fluid * 0.001 * density; + + + // noise + vec3 noise = curlNoise(pos * 0.5); + noise.xy *= 0.01; + acc += noise; + + // pull back to center + acc.z -= pos.z * 0.05; + + vel += acc; + float speed = mix(1.0, 3.0, extra.x) * 0.0005; + + float initSpeed = smoothstep(.9, .6, life); + pos += vel * speed * initSpeed; + vel *= .96; + + + if(life <= 0.0) { + life = 1.0; + pos = posOrg; + } + data.x = life; + + + oFragColor0 = vec4(pos, 1.0); + oFragColor1 = vec4(vel, 1.0); + oFragColor2 = vec4(extra, 1.0); + oFragColor3 = vec4(data, 1.0); +} \ No newline at end of file diff --git a/experiments/flame/src/shaders/splat.frag b/experiments/flame/src/shaders/splat.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/src/shaders/splat.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/src/sketch01.js b/experiments/flame/src/sketch01.js new file mode 100644 index 00000000..fb6a9ba0 --- /dev/null +++ b/experiments/flame/src/sketch01.js @@ -0,0 +1,27 @@ +import "./hash.js"; +import { rgb, getMonoColor } from "./utils/index.js"; +import { targetWidth, targetHeight } from "./features.js"; +import setupProject from "./utils/setupProject2D.js"; + +import Settings from "./Settings.js"; +import addControls from "./utils/addControl.js"; + +import { getPalette } from "./utils/SolarPalettes.js"; + +// development +if (process.env.NODE_ENV === "development") { + Settings.init(); + addControls(); +} +const { ctx, width, height } = setupProject(targetWidth, targetHeight); + +ctx.fillStyle = rgb(getMonoColor(255)); +ctx.fillRect(0, 0, width, height); + +const palette = getPalette(9); +const w = Math.floor(width / palette.length); + +palette.forEach((c, i) => { + ctx.fillStyle = rgb(c); + ctx.fillRect(i * w, 0, w, height); +}); diff --git a/experiments/flame/src/utils/Capture.js b/experiments/flame/src/utils/Capture.js new file mode 100644 index 00000000..b11d064c --- /dev/null +++ b/experiments/flame/src/utils/Capture.js @@ -0,0 +1,61 @@ +// Capture.js + +const dataURLtoBlob = (dataurl) => { + var arr = dataurl.split(","); + var mime = arr[0].match(/:(.*?);/)[1]; + var bstr = atob(arr[1]); + var n = bstr.length; + var u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { type: mime }); +}; + +const saveImage = (canvas, filename) => { + var link = document.createElement("a"); + var imgData = canvas.toDataURL({ + format: "png", + multiplier: 4, + }); + // var strDataURI = imgData.substr(22, imgData.length); + var blob = dataURLtoBlob(imgData); + var objurl = URL.createObjectURL(blob); + + link.download = `${filename}.png`; + + link.href = objurl; + + link.click(); +}; + +const getDateString = () => { + const date = new Date(); + const strDate = + `${date.getFullYear()}.` + + `${date.getMonth() + 1}.` + + `${date.getDate()}-` + + `${date.getHours()}.` + + `${date.getMinutes()}.` + + `${date.getSeconds()}`; + + return strDate; +}; + +String.prototype.replaceAll = function replaceAll(search, replacement) { + const target = this; + return target.replace(new RegExp(search, "g"), replacement); +}; + +const capture = () => { + window.addEventListener("keydown", (e) => { + if (e.keyCode === 83 && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + const strDate = getDateString(); + const canvas = document.querySelector("#main-canvas"); + saveImage(canvas, strDate); + } + }); +}; + +export default capture(); diff --git a/experiments/flame/src/utils/Color.js b/experiments/flame/src/utils/Color.js new file mode 100644 index 00000000..f7389243 --- /dev/null +++ b/experiments/flame/src/utils/Color.js @@ -0,0 +1,124 @@ +import hexRgb from "hex-rgb"; +import rgbToHsl from "rgb-to-hsl"; +import hslToRgb from "hsl-rgb"; + +class Color { + constructor(r, g, b, isHSL = false) { + if (typeof r === "string") { + const { red, green, blue } = hexRgb(r); + this._r = red; + this._g = green; + this._b = blue; + } else { + if (!!r.length) { + this._r = r[0]; + this._g = r[1]; + this._b = r[2]; + } else { + if (isHSL) { + this._hue = r; + this._saturation = g; + this.lightness = b; + } else { + this._r = r; + this._g = g; + this._b = b; + } + } + } + + this._updateHSL(); + } + + _updateRGB() { + const oRGB = hslToRgb(this._hue, this._saturation, this._lightness); + + this._r = oRGB[0]; + this._g = oRGB[1]; + this._b = oRGB[2]; + } + + _updateHSL() { + const oHSL = rgbToHsl(this._r, this._g, this._b); + this._hue = oHSL[0]; + this._saturation = parseFloat(oHSL[1].split("%")[0]) / 100; + this._lightness = parseFloat(oHSL[2].split("%")[0]) / 100; + } + + // rgb + set r(value) { + this._r = value; + this._updateHSL(); + } + + get r() { + return this._r; + } + + set g(value) { + this._g = value; + this._updateHSL(); + } + + get g() { + return this._g; + } + + set b(value) { + this._b = value; + this._updateHSL(); + } + + get b() { + return this._b; + } + + // hsl + set hue(value) { + this._hue = value; + this._updateRGB(); + } + + get hue() { + return this._hue; + } + + set saturation(value) { + this._saturation = value; + this._updateRGB(); + } + + get saturation() { + return this._saturation; + } + + set lightness(value) { + this._lightness = value; + this._updateRGB(); + } + + get lightness() { + return this._lightness; + } + + // get value + get hex() { + return 0; + } + + get value() { + return [this._r, this._g, this._b]; + } + + set value(mValues) { + this._r = mValues[0]; + this._g = mValues[1]; + this.b = mValues[2]; + } + + get glsl() { + return [this._r, this._g, this._b].map((v) => v / 255); + } +} + +export default Color; diff --git a/experiments/flame/src/utils/ColorTheme.js b/experiments/flame/src/utils/ColorTheme.js new file mode 100644 index 00000000..01f14b87 --- /dev/null +++ b/experiments/flame/src/utils/ColorTheme.js @@ -0,0 +1,16 @@ +// ColorThemes.js + +import { randomInt, shuffle } from "./"; +import COLOR_THEMES from "./colors.json"; +import hexRgb from "hex-rgb"; + +export const getColorTheme = () => { + const index = randomInt(COLOR_THEMES.length); + const colorTheme = shuffle(COLOR_THEMES[index]); + const colors = colorTheme.map((c) => { + const { red, green, blue } = hexRgb(c); + return [red, green, blue]; + }); + + return colors; +}; diff --git a/experiments/flame/src/utils/SolarPalettes.js b/experiments/flame/src/utils/SolarPalettes.js new file mode 100644 index 00000000..2ebaaba1 --- /dev/null +++ b/experiments/flame/src/utils/SolarPalettes.js @@ -0,0 +1,708 @@ +import { pick } from "./"; + +const palettes = [ + { + name: "立春", + theme: [ + [ + [255, 247, 155], + [255, 238, 111], + [236, 212, 82], + [182, 160, 20], + ], + [ + [213, 235, 225], + [177, 213, 200], + [153, 188, 172], + [128, 164, 146], + ], + [ + [139, 112, 66], + [119, 80, 57], + [95, 67, 33], + [66, 37, 23], + ], + [ + [243, 166, 148], + [238, 121, 89], + [186, 81, 64], + [193, 44, 31], + ], + ], + }, + { + name: "雨水", + theme: [ + [ + [249, 211, 227], + [236, 176, 193], + [221, 118, 148], + [167, 98, 131], + ], + [ + [190, 177, 170], + [180, 146, 115], + [164, 95, 68], + [107, 84, 88], + ], + [ + [229, 168, 75], + [225, 138, 59], + [152, 79, 49], + [124, 70, 30], + ], + [ + [192, 214, 149], + [169, 190, 123], + [119, 150, 73], + [79, 111, 70], + ], + ], + }, + { + name: "驚蟄", + theme: [ + [ + [186, 91, 73], + [166, 64, 54], + [158, 42, 34], + [124, 25, 30], + ], + [ + [246, 190, 200], + [240, 145, 160], + [220, 107, 130], + [195, 92, 93], + ], + [ + [254, 220, 94], + [250, 192, 61], + [219, 155, 52], + [198, 121, 21], + ], + [ + [154, 167, 177], + [107, 121, 142], + [69, 70, 94], + [44, 47, 59], + ], + ], + }, + { + name: "春分", + theme: [ + [ + [235, 238, 232], + [235, 237, 223], + [224, 224, 208], + [199, 198, 182], + ], + [ + [210, 175, 157], + [188, 131, 107], + [178, 109, 93], + [154, 102, 85], + ], + [ + [234, 85, 20], + [210, 57, 24], + [200, 22, 29], + [167, 33, 38], + ], + [ + [50, 113, 174], + [0, 113, 117], + [40, 72, 82], + [18, 38, 79], + ], + ], + }, + { + name: "清明", + theme: [ + [ + [166, 85, 157], + [138, 24, 116], + [108, 33, 109], + [66, 34, 86], + ], + [ + [190, 194, 179], + [157, 157, 130], + [145, 145, 119], + [121, 131, 108], + ], + [ + [211, 204, 214], + [155, 142, 169], + [126, 82, 127], + [102, 61, 116], + ], + [ + [203, 92, 131], + [184, 53, 112], + [167, 55, 102], + [144, 55, 84], + ], + ], + }, + { + name: "穀雨", + theme: [ + [ + [220, 199, 225], + [187, 161, 203], + [166, 126, 183], + [125, 82, 132], + ], + [ + [168, 191, 143], + [104, 148, 92], + [76, 128, 69], + [68, 106, 55], + ], + [ + [174, 208, 238], + [110, 155, 197], + [53, 78, 107], + [19, 57, 62], + ], + [ + [189, 130, 83], + [148, 86, 53], + [128, 76, 46], + [91, 50, 34], + ], + ], + }, + { + name: "立夏", + theme: [ + [ + [195, 217, 78], + [183, 211, 50], + [158, 188, 25], + [132, 167, 41], + ], + [ + [223, 206, 180], + [191, 167, 130], + [180, 155, 127], + [148, 120, 79], + ], + [ + [190, 194, 188], + [168, 161, 156], + [146, 137, 123], + [112, 105, 93], + ], + [ + [242, 154, 118], + [237, 109, 61], + [233, 72, 41], + [230, 0, 18], + ], + ], + }, + { + name: "小滿", + theme: [ + [ + [226, 162, 172], + [221, 107, 123], + [194, 81, 96], + [184, 26, 53], + ], + [ + [106, 141, 82], + [93, 131, 81], + [79, 121, 74], + [42, 110, 63], + ], + [ + [212, 201, 170], + [180, 163, 121], + [158, 131, 88], + [129, 102, 59], + ], + [ + [242, 200, 103], + [211, 162, 55], + [208, 134, 53], + [159, 96, 39], + ], + ], + }, + { + name: "芒種", + theme: [ + [ + [213, 209, 174], + [191, 192, 150], + [169, 168, 134], + [146, 144, 93], + ], + [ + [179, 181, 156], + [168, 176, 146], + [169, 167, 115], + [134, 140, 78], + ], + [ + [221, 187, 153], + [210, 163, 108], + [190, 148, 87], + [180, 136, 77], + ], + [ + [83, 81, 100], + [69, 70, 89], + [52, 48, 65], + [30, 39, 50], + ], + ], + }, + { + name: "夏至", + theme: [ + [ + [203, 82, 62], + [177, 59, 46], + [149, 48, 46], + [130, 35, 39], + ], + [ + [178, 182, 182], + [167, 170, 161], + [122, 123, 120], + [104, 106, 103], + ], + [ + [240, 194, 162], + [219, 156, 94], + [217, 136, 61], + [204, 93, 32], + ], + [ + [245, 243, 242], + [234, 229, 227], + [223, 224, 217], + [212, 211, 202], + ], + ], + }, + { + name: "小暑", + theme: [ + [ + [245, 176, 135], + [241, 143, 96], + [239, 132, 93], + [237, 109, 70], + ], + [ + [224, 223, 198], + [191, 185, 156], + [169, 159, 112], + [135, 125, 82], + ], + [ + [149, 64, 36], + [135, 52, 36], + [102, 43, 31], + [76, 30, 26], + ], + [ + [16, 104, 152], + [18, 80, 123], + [6, 67, 111], + [0, 52, 69], + ], + ], + }, + { + name: "大暑", + theme: [ + [ + [227, 173, 185], + [207, 146, 158], + [178, 119, 119], + [163, 95, 101], + ], + [ + [237, 241, 187], + [227, 235, 152], + [216, 222, 138], + [205, 209, 113], + ], + [ + [212, 191, 137], + [191, 166, 112], + [170, 142, 89], + [137, 109, 71], + ], + [ + [190, 210, 187], + [155, 180, 150], + [129, 163, 128], + [105, 142, 106], + ], + ], + }, + { + name: "立秋", + theme: [ + [ + [136, 171, 218], + [111, 148, 205], + [89, 118, 186], + [46, 89, 167], + ], + [ + [152, 182, 194], + [127, 159, 175], + [102, 143, 139], + [84, 118, 137], + ], + [ + [239, 239, 239], + [216, 209, 197], + [198, 190, 177], + [172, 159, 138], + ], + [ + [192, 208, 157], + [147, 143, 76], + [127, 117, 76], + [89, 83, 51], + ], + ], + }, + { + name: "處暑", + theme: [ + [ + [240, 207, 227], + [228, 184, 213], + [206, 147, 192], + [186, 121, 177], + ], + [ + [201, 207, 193], + [168, 183, 140], + [144, 160, 125], + [108, 134, 80], + ], + [ + [162, 210, 226], + [135, 192, 202], + [90, 164, 174], + [16, 139, 150], + ], + [ + [234, 216, 154], + [213, 180, 92], + [191, 156, 70], + [170, 133, 52], + ], + ], + }, + { + name: "白露", + theme: [ + [ + [245, 242, 233], + [234, 228, 209], + [223, 214, 184], + [213, 200, 160], + ], + [ + [134, 144, 138], + [107, 125, 115], + [85, 95, 77], + [69, 73, 61], + ], + [ + [211, 203, 197], + [200, 181, 179], + [146, 129, 135], + [89, 76, 87], + ], + [ + [196, 183, 152], + [165, 138, 95], + [124, 98, 63], + [100, 77, 49], + ], + ], + }, + { + name: "秋分", + theme: [ + [ + [213, 227, 212], + [202, 215, 197], + [190, 202, 183], + [179, 189, 169], + ], + [ + [192, 173, 94], + [170, 150, 73], + [143, 61, 44], + [104, 54, 50], + ], + [ + [74, 148, 196], + [65, 130, 164], + [50, 120, 138], + [0, 109, 135], + ], + [ + [234, 238, 241], + [212, 221, 225], + [189, 203, 210], + [178, 191, 195], + ], + ], + }, + { + name: "寒露", + theme: [ + [ + [166, 186, 177], + [129, 157, 142], + [119, 138, 119], + [95, 118, 106], + ], + [ + [221, 176, 120], + [218, 146, 51], + [188, 110, 55], + [159, 82, 33], + ], + [ + [139, 163, 199], + [0, 61, 116], + [25, 50, 95], + [26, 40, 71], + ], + [ + [236, 217, 199], + [225, 193, 153], + [198, 162, 104], + [179, 147, 75], + ], + ], + }, + { + name: "霜降", + theme: [ + [ + [209, 41, 32], + [171, 29, 34], + [143, 29, 34], + [99, 18, 22], + ], + [ + [189, 178, 178], + [145, 130, 143], + [106, 91, 109], + [92, 79, 85], + ], + [ + [248, 198, 181], + [218, 158, 140], + [215, 127, 102], + [177, 90, 67], + ], + [ + [223, 215, 194], + [212, 193, 166], + [190, 167, 139], + [153, 128, 108], + ], + ], + }, + { + name: "立冬", + theme: [ + [ + [255, 251, 199], + [247, 238, 173], + [236, 224, 147], + [214, 197, 96], + ], + [ + [136, 191, 184], + [93, 163, 157], + [61, 142, 134], + [32, 104, 100], + ], + [ + [158, 140, 107], + [136, 118, 87], + [109, 92, 61], + [90, 76, 59], + ], + [ + [168, 135, 135], + [158, 105, 109], + [129, 71, 76], + [102, 43, 47], + ], + ], + }, + { + name: "小雪", + theme: [ + [ + [222, 130, 167], + [204, 115, 160], + [185, 90, 137], + [176, 67, 111], + ], + [ + [230, 119, 98], + [221, 107, 79], + [210, 71, 53], + [185, 58, 38], + ], + [ + [212, 229, 239], + [188, 212, 231], + [163, 187, 219], + [138, 171, 204], + ], + [ + [158, 131, 104], + [144, 108, 74], + [124, 91, 62], + [114, 69, 58], + ], + ], + }, + { + name: "大雪", + theme: [ + [ + [239, 196, 206], + [206, 136, 146], + [195, 92, 106], + [176, 69, 82], + ], + [ + [212, 211, 193], + [191, 193, 169], + [169, 160, 130], + [117, 108, 75], + ], + [ + [120, 138, 111], + [93, 114, 89], + [78, 101, 72], + [63, 80, 59], + ], + [ + [164, 171, 214], + [117, 124, 187], + [97, 94, 168], + [74, 75, 157], + ], + ], + }, + { + name: "冬至", + theme: [ + [ + [231, 202, 211], + [217, 160, 179], + [187, 122, 140], + [158, 78, 86], + ], + [ + [218, 169, 169], + [205, 115, 114], + [168, 88, 88], + [124, 68, 73], + ], + [ + [235, 225, 169], + [225, 210, 121], + [214, 188, 70], + [190, 138, 47], + ], + [ + [121, 104, 96], + [88, 82, 72], + [70, 67, 59], + [49, 50, 44], + ], + ], + }, + { + name: "小寒", + theme: [ + [ + [246, 249, 228], + [236, 235, 194], + [225, 211, 132], + [202, 178, 114], + ], + [ + [189, 150, 131], + [149, 90, 66], + [129, 73, 44], + [104, 54, 26], + ], + [ + [125, 146, 159], + [87, 100, 112], + [60, 70, 84], + [21, 29, 41], + ], + [ + [164, 201, 204], + [108, 168, 175], + [80, 146, 150], + [34, 107, 104], + ], + ], + }, + { + name: "大寒", + theme: [ + [ + [153, 93, 127], + [129, 70, 98], + [96, 38, 65], + [66, 11, 47], + ], + [ + [235, 227, 199], + [202, 197, 160], + [146, 137, 107], + [102, 95, 77], + ], + [ + [221, 197, 184], + [190, 168, 157], + [143, 109, 95], + [105, 75, 60], + ], + [ + [200, 182, 187], + [156, 141, 155], + [157, 133, 143], + [118, 85, 93], + ], + ], + }, +]; + +export default palettes; + +export const getPalette = (mIndex) => { + const palette = mIndex === undefined ? pick(palettes) : palettes[mIndex]; + const { theme } = palette; + return theme.map((colors) => pick(colors)); +}; diff --git a/experiments/flame/src/utils/addControl.js b/experiments/flame/src/utils/addControl.js new file mode 100644 index 00000000..7d85d07e --- /dev/null +++ b/experiments/flame/src/utils/addControl.js @@ -0,0 +1,94 @@ +import { GL } from "alfrid"; + +import * as dat from "dat.gui"; +import Config from "../Config"; +import Settings from "../Settings"; +import { rgb } from "../utils"; +import { saveJson } from "./"; +import { resizeUpdate } from "./resize"; +import addPreview, { resizeThumbnail } from "./thumbnail"; +import Color from "../utils/Color"; + +const showRGBControl = false; + +export default (scene) => { + const { refresh, reload } = Settings; + const oControl = { + save: () => { + saveJson(Config, "Settings"); + }, + }; + + const gui = new dat.GUI({ width: 300 }); + window.gui = gui; + + // color + const addColorControl = (mFolder, mAttr, mName, mOpen = true) => { + const oColor = new Color(Config[mAttr]); + mName = mName || mAttr; + + const _refresh = () => { + Config[mAttr] = oColor.value; + refresh(); + }; + + const f = mFolder.addFolder(mName); + f.addColor(oColor, "value").onFinishChange(_refresh).listen(); + f.add(oColor, "hue", 0, 360).onFinishChange(_refresh).listen(); + f.add(oColor, "saturation", 0, 1).onFinishChange(_refresh).listen(); + f.add(oColor, "lightness", 0, 1).onFinishChange(_refresh).listen(); + if (showRGBControl) { + f.add(oColor, "r", 0, 255).step(1).onFinishChange(_refresh).listen(); + f.add(oColor, "g", 0, 255).step(1).onFinishChange(_refresh).listen(); + f.add(oColor, "b", 0, 255).step(1).onFinishChange(_refresh).listen(); + } + mOpen && f.open(); + }; + + addColorControl(gui, "colorBg"); + + // system settings + const fSystem = gui.addFolder("System"); + const updateBackgroundColor = () => { + refresh(); + document.body.style.backgroundColor = rgb(Config.background); + }; + + const updateThumbnail = () => { + refresh(); + resizeThumbnail(); + }; + + fSystem.add(Config, "useTargetSize").onFinishChange(reload); + + if (Config.useTargetSize) { + fSystem + .add(Config, "margin", 0, 500) + .step(1) + .onChange(function () { + refresh(); + resizeUpdate(); + }); + fSystem.addColor(Config, "background").onChange(updateBackgroundColor); + fSystem.add(Config, "showThumbnail").onFinishChange(reload); + if (Config.showThumbnail) { + fSystem + .add(Config, "thumbnailSize", 0, 500) + .step(1) + .onFinishChange(updateThumbnail); + } + } + + fSystem.add(Config, "autoSave").onFinishChange(reload); + fSystem.add(oControl, "save").name("Save Settings"); + fSystem.add(Settings, "reset").name("Reset Default"); + + fSystem.open(); + + resizeUpdate(); + updateBackgroundColor(); + + if (Config.showThumbnail) { + addPreview(GL.canvas); + } +}; diff --git a/experiments/flame/src/utils/bezier.js b/experiments/flame/src/utils/bezier.js new file mode 100644 index 00000000..8a88e433 --- /dev/null +++ b/experiments/flame/src/utils/bezier.js @@ -0,0 +1,34 @@ +import { vec2 } from "gl-matrix"; +import { vec3 } from "gl-matrix"; + +export const bezier2 = (mPoints, t) => { + if (mPoints.length === 2) { + const p = vec2.create(); + vec2.lerp(p, mPoints[0], mPoints[1], t); + return p; + } + + const a = []; + for (let i = 0; i < mPoints.length - 1; i++) { + const p = vec2.create(); + vec2.lerp(p, mPoints[i], mPoints[i + 1], t); + a.push(p); + } + return bezier2(a, t); +}; + +export const bezier3 = (mPoints, t) => { + if (mPoints.length === 2) { + const p = vec3.create(); + vec3.lerp(p, mPoints[0], mPoints[1], t); + return p; + } + + const a = []; + for (let i = 0; i < mPoints.length - 1; i++) { + const p = vec3.create(); + vec3.lerp(p, mPoints[i], mPoints[i + 1], t); + a.push(p); + } + return bezier3(a, t); +}; diff --git a/experiments/flame/src/utils/colors.json b/experiments/flame/src/utils/colors.json new file mode 100644 index 00000000..b5bd3752 --- /dev/null +++ b/experiments/flame/src/utils/colors.json @@ -0,0 +1,51 @@ +[ + ["#69d2e7", "#a7dbd8", "#e0e4cc", "#f38630", "#fa6900"], + ["#fe4365", "#fc9d9a", "#f9cdad", "#c8c8a9", "#83af9b"], + ["#ecd078", "#d95b43", "#c02942", "#542437", "#53777a"], + ["#556270", "#4ecdc4", "#c7f464", "#ff6b6b", "#c44d58"], + ["#774f38", "#e08e79", "#f1d4af", "#ece5ce", "#c5e0dc"], + ["#e8ddcb", "#cdb380", "#036564", "#033649", "#031634"], + ["#490a3d", "#bd1550", "#e97f02", "#f8ca00", "#8a9b0f"], + ["#594f4f", "#547980", "#45ada8", "#9de0ad", "#e5fcc2"], + ["#00a0b0", "#6a4a3c", "#cc333f", "#eb6841", "#edc951"], + ["#e94e77", "#d68189", "#c6a49a", "#c6e5d9", "#f4ead5"], + ["#3fb8af", "#7fc7af", "#dad8a7", "#ff9e9d", "#ff3d7f"], + ["#d9ceb2", "#948c75", "#d5ded9", "#7a6a53", "#99b2b7"], + ["#ffffff", "#cbe86b", "#f2e9e1", "#1c140d", "#cbe86b"], + ["#efffcd", "#dce9be", "#555152", "#2e2633", "#99173c"], + ["#343838", "#005f6b", "#008c9e", "#00b4cc", "#00dffc"], + ["#413e4a", "#73626e", "#b38184", "#f0b49e", "#f7e4be"], + ["#ff4e50", "#fc913a", "#f9d423", "#ede574", "#e1f5c4"], + ["#99b898", "#fecea8", "#ff847c", "#e84a5f", "#2a363b"], + ["#655643", "#80bca3", "#f6f7bd", "#e6ac27", "#bf4d28"], + ["#00a8c6", "#40c0cb", "#f9f2e7", "#aee239", "#8fbe00"], + ["#351330", "#424254", "#64908a", "#e8caa4", "#cc2a41"], + ["#554236", "#f77825", "#d3ce3d", "#f1efa5", "#60b99a"], + ["#5d4157", "#838689", "#a8caba", "#cad7b2", "#ebe3aa"], + ["#8c2318", "#5e8c6a", "#88a65e", "#bfb35a", "#f2c45a"], + ["#fad089", "#ff9c5b", "#f5634a", "#ed303c", "#3b8183"], + ["#ff4242", "#f4fad2", "#d4ee5e", "#e1edb9", "#f0f2eb"], + ["#f8b195", "#f67280", "#c06c84", "#6c5b7b", "#355c7d"], + ["#d1e751", "#ffffff", "#000000", "#4dbce9", "#26ade4"], + ["#1b676b", "#519548", "#88c425", "#bef202", "#eafde6"], + ["#5e412f", "#fcebb6", "#78c0a8", "#f07818", "#f0a830"], + ["#bcbdac", "#cfbe27", "#f27435", "#f02475", "#3b2d38"], + ["#452632", "#91204d", "#e4844a", "#e8bf56", "#e2f7ce"], + ["#eee6ab", "#c5bc8e", "#696758", "#45484b", "#36393b"], + ["#f0d8a8", "#3d1c00", "#86b8b1", "#f2d694", "#fa2a00"], + ["#2a044a", "#0b2e59", "#0d6759", "#7ab317", "#a0c55f"], + ["#f04155", "#ff823a", "#f2f26f", "#fff7bd", "#95cfb7"], + ["#b9d7d9", "#668284", "#2a2829", "#493736", "#7b3b3b"], + ["#bbbb88", "#ccc68d", "#eedd99", "#eec290", "#eeaa88"], + ["#b3cc57", "#ecf081", "#ffbe40", "#ef746f", "#ab3e5b"], + ["#a3a948", "#edb92e", "#f85931", "#ce1836", "#009989"], + ["#300030", "#480048", "#601848", "#c04848", "#f07241"], + ["#67917a", "#170409", "#b8af03", "#ccbf82", "#e33258"], + ["#aab3ab", "#c4cbb7", "#ebefc9", "#eee0b7", "#e8caaf"], + ["#e8d5b7", "#0e2430", "#fc3a51", "#f5b349", "#e8d5b9"], + ["#ab526b", "#bca297", "#c5ceae", "#f0e2a4", "#f4ebc3"], + ["#607848", "#789048", "#c0d860", "#f0f0d8", "#604848"], + ["#b6d8c0", "#c8d9bf", "#dadabd", "#ecdbbc", "#fedcba"], + ["#a8e6ce", "#dcedc2", "#ffd3b5", "#ffaaa6", "#ff8c94"], + ["#3e4147", "#fffedf", "#dfba69", "#5a2e2e", "#2a2c31"] +] diff --git a/experiments/flame/src/utils/draw.js b/experiments/flame/src/utils/draw.js new file mode 100644 index 00000000..e69de29b diff --git a/experiments/flame/src/utils/fullscreen.js b/experiments/flame/src/utils/fullscreen.js new file mode 100644 index 00000000..05f7cc5c --- /dev/null +++ b/experiments/flame/src/utils/fullscreen.js @@ -0,0 +1,23 @@ +// fullscreen +let canvas; + +// Function to toggle fullscreen mode +function toggleFullScreen() { + if (!!canvas) { + if (!document.fullscreenElement) { + canvas.requestFullscreen(); + } else { + document.exitFullscreen(); + } + } +} + +export default function () { + canvas = document.querySelector("#main-canvas"); + // Add event listener for keydown event on the whole document + document.addEventListener("keydown", function (event) { + if (event.key === "f") { + toggleFullScreen(); + } + }); +} diff --git a/experiments/flame/src/utils/getDateString.js b/experiments/flame/src/utils/getDateString.js new file mode 100644 index 00000000..0ab8029e --- /dev/null +++ b/experiments/flame/src/utils/getDateString.js @@ -0,0 +1,14 @@ +const getDateString = () => { + const date = new Date() + const strDate = +`${date.getFullYear()}.` + +`${date.getMonth() + 1}.` + +`${date.getDate()}-` + +`${date.getHours()}.` + +`${date.getMinutes()}.` + +`${date.getSeconds()}` + + return strDate +} + +export { getDateString } diff --git a/experiments/flame/src/utils/index.js b/experiments/flame/src/utils/index.js new file mode 100644 index 00000000..272ffae0 --- /dev/null +++ b/experiments/flame/src/utils/index.js @@ -0,0 +1,112 @@ +export { saveImage } from "./saveImage"; +export { saveJson } from "./saveJson"; +export { getDateString } from "./getDateString"; +import { mat4 } from "gl-matrix"; + +export const getMonoColor = (v) => [v, v * 0.99, v * 0.96]; + +export const toGlsl = (v) => v / 255; + +export const RAD = Math.PI / 180; + +export const logError = (e) => { + console.error(e); +}; + +export const random = (a, b) => { + if (a === undefined) { + return fxrand(); + } + if (b === undefined) { + return fxrand() * a; + } + return a + (b - a) * fxrand(); +}; + +export const randomInt = (a, b) => { + return Math.floor(random(a, b)); +}; + +export const rgb = (r, g, b) => { + if (r.length) { + return rgb(r[0], r[1], r[2]); + } + if (g === undefined) { + return `rgb(${r}, ${r}, ${r})`; + } else { + return `rgb(${r}, ${g}, ${b})`; + } +}; + +export const pick = (elms) => { + return elms[randomInt(elms.length)]; +}; + +export const rgba = (r, g, b, a = 1) => { + let _g = g, + _b = b; + if (g === undefined) { + _g = r; + } + + if (b === undefined) { + _b = r; + } + + return `rgb(${r}, ${_g}, ${_b}, ${a})`; +}; + +export const shuffle = (a) => { + for (let i = a.length - 1; i > 0; i--) { + const j = Math.floor(random() * (i + 1)); + [a[i], a[j]] = [a[j], a[i]]; + } + return a; +}; + +export const mix = (a, b, p) => { + return a * (1 - p) + b * p; +}; + +export const mixColor = (a, b, p) => { + return [mix(a[0], b[0], p), mix(a[1], b[1], p), mix(a[2], b[2], p)]; +}; + +export const smoothstep = (min, max, value) => { + var x = Math.max(0, Math.min(1, (value - min) / (max - min))); + return x * x * (3 - 2 * x); +}; + +export const iOS = () => { + return ( + [ + "iPad Simulator", + "iPhone Simulator", + "iPod Simulator", + "iPad", + "iPhone", + "iPod", + ].includes(navigator.platform) || + // iPad on iOS 13 detection + (navigator.userAgent.includes("Mac") && "ontouchend" in document) + ); +}; + +export const biasMatrix = mat4.fromValues( + 0.5, + 0.0, + 0.0, + 0.0, + 0.0, + 0.5, + 0.0, + 0.0, + 0.0, + 0.0, + 0.5, + 0.0, + 0.5, + 0.5, + 0.5, + 1.0 +); diff --git a/experiments/flame/src/utils/noise.js b/experiments/flame/src/utils/noise.js new file mode 100644 index 00000000..02ff5e0d --- /dev/null +++ b/experiments/flame/src/utils/noise.js @@ -0,0 +1,44 @@ +import SimplexNoise from "simplex-noise"; + +console.log(window.fxhash); +let simplex = new SimplexNoise(window.fxhash); + +export const noise = (a, b, c, d) => { + if (c === undefined) { + return simplex.noise2D(a, b); + } else if (d === undefined) { + return simplex.noise3D(a, b, c); + } else { + return simplex.noise4D(a, b, c, d); + } +}; + +export const noise2D = (a, b, s = 1) => { + return noise(a * s, b * s); +}; + +export const noise3D = (a, b, c, s = 1) => { + return noise(a * s, b * s, c * s); +}; + +export const fbm2D = (a, b, scale = 1, level = 5) => { + let n = 0; + let t = 0; + for (let i = 0; i < level; i++) { + t = Math.pow(2, i); + n += noise2D(a * scale * t, b * scale * t) / t; + } + + return n; +}; + +export const fbm3D = (a, b, c, s = 1, l = 5, p = 2) => { + let n = 0; + let t = 0; + for (let i = 0; i < l; i++) { + t = Math.pow(p, i); + n += noise3D(a, b, c, s * t) / t; + } + + return n; +}; diff --git a/experiments/flame/src/utils/preload.js b/experiments/flame/src/utils/preload.js new file mode 100644 index 00000000..71fc9255 --- /dev/null +++ b/experiments/flame/src/utils/preload.js @@ -0,0 +1,36 @@ +// preload.js +import assets from "../asset-list"; +import Assets from "../Assets"; +import AssetsLoader from "assets-loader"; + +const loadAssets = (gl) => + new Promise((resolve, reject) => { + const loader = document.body.querySelector(".Loading-Bar"); + console.log("Load Assets", assets); + if (assets.length > 0) { + document.body.classList.add("isLoading"); + + new AssetsLoader({ + assets: assets, + }) + .on("error", (error) => { + console.log("Error :", error); + }) + .on("progress", (p) => { + if (loader) loader.style.width = `${p * 100}%`; + }) + .on("complete", (o) => { + if (loader) loader.style.width = `100%`; + Assets.init(o); + setTimeout(() => { + document.body.classList.remove("isLoading"); + resolve(gl); + }, 500); + }) + .start(); + } else { + resolve(gl); + } + }); + +export default loadAssets; diff --git a/experiments/flame/src/utils/resize.js b/experiments/flame/src/utils/resize.js new file mode 100644 index 00000000..49643d7b --- /dev/null +++ b/experiments/flame/src/utils/resize.js @@ -0,0 +1,58 @@ +import Config from "../Config"; + +let _canvas, _w, _h; + +const _resize = (canvas, w, h) => { + const { margin } = Config; + const { innerWidth, innerHeight } = window; + + w = w || innerWidth; + h = h || innerHeight; + + const targetWidth = innerWidth - margin; + const targetHeight = innerHeight - margin; + + let tw = Math.min(w, targetWidth); + let th = Math.min(h, targetHeight); + + const sx = targetWidth / w; + const sy = targetHeight / h; + const scale = Math.min(sx, sy); + tw = w * scale; + th = h * scale; + let left = Math.floor(innerWidth - tw) / 2; + const top = Math.floor(innerHeight - th) / 2; + + let style = ` + position:absolute; + width:${tw}px; + height:${th}px; + top:${top}px; + left:${left}px; + `; + if (process.env.NODE_ENV === "development") { + style += ` + box-shadow:5px 10px 10px rgba(0, 0, 0, 0.25); + `; + } + + canvas.style.cssText = style; +}; + +export const resizeUpdate = () => { + if (_canvas) { + _resize(_canvas, _w, _h); + } +}; + +const resize = (canvas, w, h) => { + _canvas = canvas; + _w = w; + _h = h; + window.addEventListener("resize", () => { + _resize(canvas, w, h); + }); + _resize(canvas, w, h); +}; + +export default resize; diff --git a/experiments/flame/src/utils/saveImage.js b/experiments/flame/src/utils/saveImage.js new file mode 100644 index 00000000..c2533d6e --- /dev/null +++ b/experiments/flame/src/utils/saveImage.js @@ -0,0 +1,32 @@ +// saveImage.js + +// const FILE_EXTENTION = 'jpg' +// const MIME_TYPE = 'image/jpeg' + +const dataURLtoBlob = (dataurl) => { + var arr = dataurl.split(','); var mime = arr[0].match(/:(.*?);/)[1] + var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n) + while (n--) { + u8arr[n] = bstr.charCodeAt(n) + } + return new Blob([u8arr], { type: mime }) +} + +const saveImage = (canvas, filename) => { + var link = document.createElement('a') + var imgData = canvas.toDataURL({ + format: 'png', + multiplier: 4 + }) + // var strDataURI = imgData.substr(22, imgData.length); + var blob = dataURLtoBlob(imgData) + var objurl = URL.createObjectURL(blob) + + link.download = `${filename}.png` + + link.href = objurl + + link.click() +} + +export { saveImage } diff --git a/experiments/flame/src/utils/saveJson.js b/experiments/flame/src/utils/saveJson.js new file mode 100644 index 00000000..335c5c78 --- /dev/null +++ b/experiments/flame/src/utils/saveJson.js @@ -0,0 +1,44 @@ +// saveJson.js + +const saveJson = (obj, mName = "data", mPretty = true) => { + var str = mPretty ? JSON.stringify(obj, null, 4) : JSON.stringify(obj); + var data = encode(str); + + var blob = new Blob([data], { + type: "application/octet-stream", + }); + + var url = URL.createObjectURL(blob); + var link = document.createElement("a"); + link.setAttribute("href", url); + link.setAttribute("download", `${mName}.json`); + var event = document.createEvent("MouseEvents"); + event.initMouseEvent( + "click", + true, + true, + window, + 1, + 0, + 0, + 0, + 0, + false, + false, + false, + false, + 0, + null + ); + link.dispatchEvent(event); +}; + +const encode = (s) => { + var out = []; + for (var i = 0; i < s.length; i++) { + out[i] = s.charCodeAt(i); + } + return new Uint8Array(out); +}; + +export { saveJson }; diff --git a/experiments/flame/src/utils/setupProject2D.js b/experiments/flame/src/utils/setupProject2D.js new file mode 100644 index 00000000..df5db331 --- /dev/null +++ b/experiments/flame/src/utils/setupProject2D.js @@ -0,0 +1,22 @@ +import "./Capture"; +import resize from "./resize"; + +export const createCanvas = (width, height) => { + const canvas = document.createElement("canvas"); + canvas.width = width; + canvas.height = height; + const ctx = canvas.getContext("2d"); + return { canvas, ctx, width, height }; +}; + +const setupProject = (width, height) => { + const { canvas, ctx } = createCanvas(width, height); + canvas.id = "main-canvas"; + document.body.appendChild(canvas); + + resize(canvas, width, height); + + return { canvas, ctx, width, height }; +}; + +export default setupProject; diff --git a/experiments/flame/src/utils/thumbnail.js b/experiments/flame/src/utils/thumbnail.js new file mode 100644 index 00000000..041d381a --- /dev/null +++ b/experiments/flame/src/utils/thumbnail.js @@ -0,0 +1,36 @@ +import { createCanvas } from "./setupProject2D"; +import Config from "../Config"; +let targetCanvas, canvas, ctx; + +export default function addPreview(mTargetCanvas, mFreq = 2000) { + targetCanvas = mTargetCanvas; + const { width, height } = mTargetCanvas; + setInterval(update, mFreq); + const o = createCanvas(width, height); + canvas = o.canvas; + ctx = o.ctx; + + resizeThumbnail(); + update(); +} + +function update() { + console.log("update"); + ctx.drawImage(targetCanvas, 0, 0); +} + +export function resizeThumbnail() { + const { width, height } = targetCanvas; + const ratio = width / height; + const w = Config.thumbnailSize; + const h = Math.floor(w / ratio); + document.body.appendChild(canvas); + canvas.style.cssText = ` + position:absolute; + bottom:0; + right:0; + width:${w}px; + height:${h}px; + z-index:9999; + `; +} diff --git a/experiments/flame/tasks/asset-template.js b/experiments/flame/tasks/asset-template.js new file mode 100644 index 00000000..0c7bf983 --- /dev/null +++ b/experiments/flame/tasks/asset-template.js @@ -0,0 +1,5 @@ + +const assetsToLoad = {{ASSETS}}; + + +export default assetsToLoad; \ No newline at end of file diff --git a/experiments/flame/tasks/basic.vert b/experiments/flame/tasks/basic.vert new file mode 100644 index 00000000..4c5d021c --- /dev/null +++ b/experiments/flame/tasks/basic.vert @@ -0,0 +1,21 @@ +#version 300 es + +precision highp float; +in vec3 aVertexPosition; +in vec2 aTextureCoord; +in vec3 aNormal; + +uniform mat4 uModelMatrix; +uniform mat4 uViewMatrix; +uniform mat4 uProjectionMatrix; + +out vec2 vTextureCoord; +out vec3 vNormal; + +#pragma glslify: rotate = require(./glsl-utils/rotate.glsl) + +void main(void) { + gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0); + vTextureCoord = aTextureCoord; + vNormal = aNormal; +} \ No newline at end of file diff --git a/experiments/flame/tasks/checkExtension.js b/experiments/flame/tasks/checkExtension.js new file mode 100644 index 00000000..0c5e3c0f --- /dev/null +++ b/experiments/flame/tasks/checkExtension.js @@ -0,0 +1,24 @@ +// checkExtension.js + +const path = require('path'); + +module.exports = function checkExtension(mFile, mExtensions) { + if(mExtensions.length == 0) { + return true; + } + + + let extensions; + + if(!mExtensions.concat) + { + extensions = [mExtensions]; + } + else + { + extensions = mExtensions.concat(); + } + + const ext = path.extname(mFile).replace('.', ''); + return mExtensions.indexOf(ext) > -1; +} \ No newline at end of file diff --git a/experiments/flame/tasks/copy-file.js b/experiments/flame/tasks/copy-file.js new file mode 100644 index 00000000..c80f7c80 --- /dev/null +++ b/experiments/flame/tasks/copy-file.js @@ -0,0 +1,32 @@ +// copy-file.js + +'use strict'; + +const fs = require('fs'); + +function copyFile(source, target, cb) { + let cbCalled = false; + + const rd = fs.createReadStream(source); + rd.on("error", function(err) { + done(err); + }); + const wr = fs.createWriteStream(target); + wr.on("error", function(err) { + done(err); + }); + wr.on("close", function(ex) { + done(); + }); + rd.pipe(wr); + + function done(err) { + if (!cbCalled) { + cb(err); + cbCalled = true; + } + } +} + + +module.exports = copyFile; \ No newline at end of file diff --git a/experiments/flame/tasks/copy.frag b/experiments/flame/tasks/copy.frag new file mode 100644 index 00000000..bc8ff7e3 --- /dev/null +++ b/experiments/flame/tasks/copy.frag @@ -0,0 +1,11 @@ +#version 300 es + +precision highp float; +in vec2 vTextureCoord; +uniform sampler2D uMap; + +out vec4 oColor; + +void main(void) { + oColor = texture(uMap, vTextureCoord); +} \ No newline at end of file diff --git a/experiments/flame/tasks/find-folder-promise.js b/experiments/flame/tasks/find-folder-promise.js new file mode 100644 index 00000000..43c24282 --- /dev/null +++ b/experiments/flame/tasks/find-folder-promise.js @@ -0,0 +1,28 @@ +// find-folder-promise.js + +const fs = require('fs'); +const path = require('path'); +const isDir = require('./isDirectory'); + +const contains = (mDir, mTarget) => new Promise((resolve, reject) => { + if (mDir.indexOf(mTarget) > -1) { + resolve(mDir); + } else { + if (!isDir(mDir)) { + reject(); + return; + } + + const paths = fs.readdirSync(mDir); + paths.forEach((subPath)=> { + const _subPath = path.resolve(mDir, subPath); + if(isDir(_subPath)) { + return contains(_subPath, mTarget).then(resolve, reject); + } + }); + } + +}); + + +module.exports = contains; \ No newline at end of file diff --git a/experiments/flame/tasks/find-folder.js b/experiments/flame/tasks/find-folder.js new file mode 100644 index 00000000..8452a89c --- /dev/null +++ b/experiments/flame/tasks/find-folder.js @@ -0,0 +1,41 @@ +// find-folder.js + +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const isDir = require('./isDirectory'); + +function contains(mDir, mTarget, mCallback) { + fs.readdir(mDir, (err, files) => { + if(files.indexOf(mTarget) > -1) { + // mCallback(`${mDir}/${mTarget}`); + mCallback(path.resolve(mDir, mTarget)); + } else { + + const onDir = (mSubDir) => { + if(mSubDir !== null) { + mCallback(mSubDir); + } + } + + const folders = files.filter((a)=> { + const subPath = path.resolve(mDir, a); + return isDir(subPath); + }); + + if(folders.length == 0) { + mCallback(null, mTarget); + } else { + folders.forEach((f)=> { + const subPath = path.resolve(mDir, f); + if(isDir(subPath)) { + contains(subPath, mTarget, onDir); + } + }); + } + } + }); +} + +module.exports = contains; \ No newline at end of file diff --git a/experiments/flame/tasks/getAllMatches.js b/experiments/flame/tasks/getAllMatches.js new file mode 100644 index 00000000..638b378e --- /dev/null +++ b/experiments/flame/tasks/getAllMatches.js @@ -0,0 +1,20 @@ +// getAllMatches.js + +'use strict'; + +module.exports = function getAllMatches(mStr, mRegExp, mWithDetials) { + mWithDetials = mWithDetials || false; + let results = []; + + let match; + while( match = mRegExp.exec(mStr)) { + if(mWithDetials) { + results.push(match); + } else { + results.push(match[0]); + } + + } + + return results; +} \ No newline at end of file diff --git a/experiments/flame/tasks/getExtension.js b/experiments/flame/tasks/getExtension.js new file mode 100644 index 00000000..bbbc200a --- /dev/null +++ b/experiments/flame/tasks/getExtension.js @@ -0,0 +1,8 @@ +// getExtension.js + +'use strict'; + +module.exports = function(mFile) { + const ary = mFile.split('.'); + return ary[ary.length - 1]; +} \ No newline at end of file diff --git a/experiments/flame/tasks/getFileName.js b/experiments/flame/tasks/getFileName.js new file mode 100644 index 00000000..768e546d --- /dev/null +++ b/experiments/flame/tasks/getFileName.js @@ -0,0 +1,11 @@ +// getFileName.js + +'use strict'; + +module.exports = function getFileName(mPath) { + const ary = mPath.split('/'); + let str = ary[ary.length-1]; + const lastIndex = str.lastIndexOf('.'); + str = str.substring(0, lastIndex); + return str; +} \ No newline at end of file diff --git a/experiments/flame/tasks/html-watch.js b/experiments/flame/tasks/html-watch.js new file mode 100644 index 00000000..6c5d0f9c --- /dev/null +++ b/experiments/flame/tasks/html-watch.js @@ -0,0 +1,37 @@ +// html-watch.js +const watcher = require('./watch'); +const path = require('path'); +const fs = require('fs-extra'); + +const env = process.env.NODE_ENV; +const isProd = env === 'production'; +const PATH_SRC = path.resolve('./src/html'); + +const watcherViews = watcher([PATH_SRC]); + + +const processTemplate = (str) => new Promise((resolve, reject) => { + if(isProd) { + str = str.replace(/{{dev.*}}/g, ''); + } else { + str = str.replace(/{{dev/g, ''); + str = str.replace(/}}/g, ''); + } + + resolve(str); +}); + +const writeTemplate = (str) => new Promise((resolve, reject) => { + fs.writeFile('./dist/index.html', str, 'utf8'); +}); + +watcherViews.on('all', (event, file) => { + if(file.indexOf('.html') === -1) return; + + fs.readFile(file, 'utf8') + .then( processTemplate ) + .then( writeTemplate ) + .catch(err=> { + console.log('Error :', err); + }); +}); \ No newline at end of file diff --git a/experiments/flame/tasks/html.js b/experiments/flame/tasks/html.js new file mode 100644 index 00000000..0635744c --- /dev/null +++ b/experiments/flame/tasks/html.js @@ -0,0 +1,28 @@ +// html.js + +const fs = require('fs-extra') + +const env = process.env.NODE_ENV +const isProd = env === 'production' + +const processTemplate = (str) => new Promise((resolve, reject) => { + if (isProd) { + str = str.replace(/{{dev.*}}/g, '') + } else { + str = str.replace(/{{dev/g, '') + str = str.replace(/}}/g, '') + } + + resolve(str) +}) + +const writeTemplate = (str) => new Promise((resolve, reject) => { + fs.writeFile('./dist/index.html', str, 'utf8') +}) + +fs.readFile('./src/html/index-template.html', 'utf8') + .then(processTemplate) + .then(writeTemplate) + .catch(err => { + console.log('Error :', err) + }) diff --git a/experiments/flame/tasks/insertString.js b/experiments/flame/tasks/insertString.js new file mode 100644 index 00000000..8e44ab3b --- /dev/null +++ b/experiments/flame/tasks/insertString.js @@ -0,0 +1,10 @@ +// insertString.js + +'use strict'; + +module.exports = function insertString(mStr, mStrToInsert, mIndex) { + const sBefore = mStr.substring(0, mIndex); + const sAfter = mStr.substring(mIndex); + + return `${sBefore}${mStrToInsert}${sAfter}`; +} \ No newline at end of file diff --git a/experiments/flame/tasks/isDirectory.js b/experiments/flame/tasks/isDirectory.js new file mode 100644 index 00000000..293870b5 --- /dev/null +++ b/experiments/flame/tasks/isDirectory.js @@ -0,0 +1,10 @@ +// isDirectory.js +const fs = require('fs'); + +module.exports = function isDirectory(mPath) { + try { + return fs.lstatSync(mPath).isDirectory(); + } catch(e) { + return false; + } +} \ No newline at end of file diff --git a/experiments/flame/tasks/shader-watcher.js b/experiments/flame/tasks/shader-watcher.js new file mode 100644 index 00000000..deee04b2 --- /dev/null +++ b/experiments/flame/tasks/shader-watcher.js @@ -0,0 +1,119 @@ +// shader-watcher.js + +"use strict"; + +const fs = require("fs"); +const path = require("path"); +const findFolder = require("./find-folder"); +const watcher = require("./watch"); +const copyFile = require("./copy-file"); +const checkExtension = require("./checkExtension"); + +const PATH_SRC = "./src"; +const TEMPLATE_VERTEX = "./tasks/basic.vert"; +const TEMPLATE_FRAGMENT = "./tasks/copy.frag"; +const regShader = /shaders\/.+\.(vert|frag)/g; + +let shaderPath; + +findFolder(PATH_SRC, "shaders", (mPath) => { + shaderPath = mPath; + startWatch(); +}); + +let watcherViews = watcher([PATH_SRC]); + +function startWatch() { + watcherViews.on("all", (event, file) => { + if (file.indexOf(".DS_Store") > -1) return; + if (!checkExtension(file, ["js"])) return; + console.log("Event:", event, "file :", file); + if (event !== "add" && event !== "change") return; + + checkFile(file); + }); +} + +const checkFile = (file) => { + getShaderImports(file) + .then((shaderImports) => { + return shaderImports.reduce((sequence, shaderName) => { + return sequence + .then(() => { + return isShaderExist(shaderName); + }) + .then((mName) => { + generateShader(mName); + }) + .catch((err) => { + console.log(err); + }); + }, Promise.resolve()); + }) + .catch((err) => { + console.log("Error:", err); + }); +}; + +const getShaderImports = (mPath) => + new Promise((resolve, reject) => { + let results = []; + + fs.readFile(mPath, "utf8", (err, str) => { + if (err) { + reject("Error Loading file !"); + } else { + let match; + while ((match = regShader.exec(str))) { + results.push(match[0]); + } + + results = results.map((mPath) => { + return mPath.replace("shaders/", ""); + }); + + resolve(results); + } + }); + }); + +const isShaderExist = (name) => + new Promise((resolve, reject) => { + fs.readdir(shaderPath, (err, files) => { + if (err) { + reject(err); + return; + } + if (files.indexOf(name) === -1) { + resolve(name); + } else { + reject(`Shader existed : ${name}`); + } + }); + }); + +function generateShader(mName) { + if (isVertexShader(mName)) { + generateVertexShader(mName); + } else { + generateFragmentShader(mName); + } +} + +function generateVertexShader(mName) { + console.log("Generate vertex shader :", mName); + copyFile(TEMPLATE_VERTEX, path.resolve(shaderPath, mName), (err) => { + if (err) console.log("Err", err); + }); +} + +function generateFragmentShader(mName) { + console.log("Generate fragment shader : ", mName); + copyFile(TEMPLATE_FRAGMENT, path.resolve(shaderPath, mName), (err) => { + if (err) console.log("Err", err); + }); +} + +function isVertexShader(mName) { + return mName.indexOf(".vert") > -1; +} diff --git a/experiments/flame/tasks/test-shader.js b/experiments/flame/tasks/test-shader.js new file mode 100644 index 00000000..1d2582fd --- /dev/null +++ b/experiments/flame/tasks/test-shader.js @@ -0,0 +1,96 @@ +// test-shader.js + +const fs = require('fs'); +const path = require('path'); +const findFolder = require('./find-folder-promise'); +const copyFile = require('./copy-file'); + +const FILE_PATH = 'src/js/ViewObjModel.js'; +const PATH_SRC = './src'; +const TEMPLATE_VERTEX = './tasks/basic.vert'; +const TEMPLATE_FRAGMENT = './tasks/copy.frag'; +const regShader = /shaders\/.+\.(vert|frag)/g; + +let shaderPath; + +findFolder(PATH_SRC, 'shaders').then((path)=> { + shaderPath = path; + + getShaderImports(FILE_PATH).then(shaderImports => { + return shaderImports.reduce((sequence, shaderName)=> { + return sequence.then(()=>{ + return isShaderExist(shaderName); + }).then((mName)=> { + generateShader(mName); + }).catch((err)=> { + console.log(err); + }); + }, Promise.resolve()); + + }).catch((err)=> { + console.log('Error:', err); + }); +}); + + +const getShaderImports = (mPath) => new Promise((resolve, reject) => { + let results = []; + + fs.readFile(mPath, 'utf8', (err, str) => { + if(err) { + reject('Error Loading file !'); + } else { + let match; + while( match = regShader.exec(str)) { + results.push(match[0]); + } + + results = results.map((mPath)=> { + return mPath.replace('shaders/', ''); + }); + + resolve(results); + } + }); +}); + +const isShaderExist = (name) => new Promise((resolve, reject) => { + fs.readdir(shaderPath, (err, files) => { + if(err) { + reject(err); + return; + } + if(files.indexOf(name) === -1) { + resolve(name); + } else { + reject(`Shader existed : ${name}`); + } + }); +}) + +function generateShader(mName) { + if(isVertexShader(mName)) { + generateVertexShader(mName); + } else { + generateFragmentShader(mName); + } +} + +function generateVertexShader(mName) { + console.log('Generate vertex shader :', mName); + copyFile(TEMPLATE_VERTEX, path.resolve(shaderPath, mName), (err)=> { + if(err) console.log('Err', err); + }); +} + +function generateFragmentShader(mName) { + console.log('Generate fragment shader : ', mName); + copyFile(TEMPLATE_FRAGMENT, path.resolve(shaderPath, mName), (err)=> { + if(err) console.log('Err', err); + }); +} + + +function isVertexShader(mName) { + return mName.indexOf('.vert') > -1; +} \ No newline at end of file diff --git a/experiments/flame/tasks/test.js b/experiments/flame/tasks/test.js new file mode 100644 index 00000000..944292c8 --- /dev/null +++ b/experiments/flame/tasks/test.js @@ -0,0 +1,5 @@ +// test.js + +console.log('1'); +console.log('2'); +console.log('3'); \ No newline at end of file diff --git a/experiments/flame/tasks/uniforms-checker.js b/experiments/flame/tasks/uniforms-checker.js new file mode 100644 index 00000000..8042f53a --- /dev/null +++ b/experiments/flame/tasks/uniforms-checker.js @@ -0,0 +1,239 @@ +// uniforms-checker.js + +'use strict'; + +const fs = require('fs'); +const path = require('path'); +const findFolder = require('./find-folder'); +const watcher = require('./watch'); +const getAllMatches = require('./getAllMatches'); +const insertString = require('./insertString'); +const checkExtension = require('./checkExtension'); + +const PATH_SRC = './src'; +const regShader = /shaders\/.+\.(vert|frag)/g; +const regUniform = /shader\.uniform\(.*/g; +const regUniformGLSL = /uniform\s.+/g; +const regUniformLast = /uniform\s.+;/g; + +const uniformMapping = { + float: 'uniform1f', + vec2: 'uniform2fv', + vec3: 'uniform3fv', + vec4: 'uniform4fv', + mat3: 'uniformMatrix3fv', + mat4: 'uniformMatrix4fv' +}; + +let shaderPath; + +findFolder(PATH_SRC, 'shaders', (mPath)=> { + shaderPath = mPath; + startWatch(); +}); + +let watcherViews = watcher([PATH_SRC]); + +function startWatch() { + // onFileChange('./src/js/ViewGiant.js'); + + watcherViews.on('all',(event, file) => { + if(file.indexOf('.DS_Store') > -1) return; + if(!checkExtension(file, ['js'])) return; + if(event !== 'add' && event !== 'change') return; + onFileChange(file); + }); +} + + +function replace(str, pattern, strToReplace) { + return str.replace(new RegExp(pattern, 'g'), strToReplace); +} + +function onFileChange(mPath) { + console.log('File Changed :', mPath); + let results; + + parseJS(mPath, (results) => { + // console.log('Results:', results); + + if(results.shaders.length == 0) return; + + let count = 0; + + let uniforms = []; + + const combineUniforms = ()=> { + let final = []; + + uniforms.forEach((u)=> { + if(final.length == 0) { + final.push(u); + } else { + let result = final.filter((a)=> { + return a.uniformName === u.uniformName; + }); + + if(result.length == 0) { + final.push(u); + } + } + }); + + const uniformsToAdd = []; + results.uniforms.forEach((uniform)=> { + let match = final.find((u)=> { + return u.uniformName === uniform.uniformName; + }); + + if(!match) { uniformsToAdd.push(uniform); } + }); + + + if(uniformsToAdd.length == 0) { return; } + results.shaders.forEach((shader)=> { + addUniforms(shader, uniformsToAdd); + }); + } + + const onParsed = (oUniforms) => { + uniforms = uniforms.concat(oUniforms); + count ++; + if(count == results.shaders.length) { + combineUniforms(); + } + } + + results.shaders.forEach((mShaderPath)=> { + // checkUniforms(mShaderPath, results.uniforms); + getShaderUniforms(mShaderPath, onParsed); + }) + }); +} + + +function parseJS(mPath, mCallback) { + let shaders = []; + fs.readFile(mPath, 'utf8', (err, str) => { + if(err) { + console.log('Error Loading file !'); + } else { + shaders = getAllMatches(str, regShader); + + shaders = shaders.map((path)=> { + return path.replace('shaders/', ''); + }); + + + getUniforms(str, (uniforms)=> { + const o = { + shaders, + uniforms, + } + mCallback(o); + }); + } + }); +} + +function getUniforms(mFile, mCb) { + let uniforms = getAllMatches(mFile, regUniform); + + const getUniformType = (mType) => { + for(let s in uniformMapping) { + if(s === mType) { + return s; + } else if(uniformMapping[s] === mType) { + return s; + } + } + + return mType; + } + + // console.log('Uniforms:', uniforms); + + uniforms = uniforms.map((u) => { + let s = replace(u, '"', ""); + s = s.split("'").join(""); + + console.log('Uniform String :', s); + s = replace(s, "'"); + s = s.split('(')[1]; + s = s.split(')')[0]; + const ary = s.split(', '); + const uniformName = ary[0]; + const uniformType = getUniformType(ary[1]); + + console.log('Uniform Type :', uniformType, ary[1]); + + return { + uniformName, + uniformType + }; + }); + + + uniforms = uniforms.filter((u)=> { + return u.uniformType !== 'uniform1i'; + }); + + mCb(uniforms); +} + +function getShaderUniforms(mShaderPath, mCb) { + fs.readFile(path.resolve(shaderPath, mShaderPath), 'utf8', (err, str) => { + if(err) { + console.log('Error Loading file !'); + } else { + let uniformsGlsl = getAllMatches(str, regUniformGLSL); + + uniformsGlsl = uniformsGlsl.map((u)=> { + let s = u.replace(';', ''); + s = s.replace(/(\t)*/g, ''); + const tmp = s.split(' '); + const uniformType = tmp[1]; + const uniformName = tmp[2]; + return { + uniformName, + uniformType + }; + }); + + mCb(uniformsGlsl); + } + }); + +} + +function addUniforms(mPath, mUniformsToAdd) { + console.log('Add uniform :', mPath, mUniformsToAdd); + const targetShaderPath = path.resolve(shaderPath, mPath); + + fs.readFile(targetShaderPath, 'utf8', (err, str) => { + if(err) { + console.log('Error Loading file !'); + } else { + const uniformsGlsl = getAllMatches(str, regUniformLast, true); + const temp = uniformsGlsl.pop(); + const index = temp.index + temp[0].length; + + let strUniform = '\n'; + mUniformsToAdd.forEach((uniform)=> { + strUniform += `uniform ${uniform.uniformType} \t\t${uniform.uniformName};\n`; + }); + + strUniform = strUniform.substring(0, strUniform.length-1); + + str = insertString(str, strUniform, index); + + fs.writeFile(targetShaderPath, str, (err, data) => { + if(err) { + console.log('Error Writing File'); + } else { + console.log(`shader ${mPath} updated`); + } + }); + } + }); +} diff --git a/experiments/flame/tasks/watch-asset.js b/experiments/flame/tasks/watch-asset.js new file mode 100644 index 00000000..326c6879 --- /dev/null +++ b/experiments/flame/tasks/watch-asset.js @@ -0,0 +1,190 @@ +// watch-asset.js + +"use strict"; + +const fs = require("fs-extra"); +const watcher = require("./watch"); +const getExtension = require("./getExtension"); +const getFileName = require("./getFileName"); + +const ASSETS_PATH = ["./public/assets"]; + +const OUTPUT_PATH = "./src/asset-list.js"; +const TEMPLATE_PATH = "./tasks/asset-template.js"; +let assets = []; +let needUpdate = true; + +function replace(str, pattern, strToReplace) { + return str.replace(new RegExp(pattern, "g"), strToReplace); +} + +function saveFile(str) { + fs.writeFile(OUTPUT_PATH, str, (err, data) => { + if (err) { + console.log("Error Writing File"); + } else { + console.log("asset-list.js updated"); + } + }); +} + +function isDir(mPath) { + return fs.lstatSync(mPath).isDirectory(); +} + +function getAssetsInDir(mSourceDir, mCallback) { + fs.readdir(mSourceDir, (err, files) => { + console.log("source", mSourceDir); + const assetPath = mSourceDir.replace("./public/", ""); + console.log("Dir path :", mSourceDir, assetPath); + + // ERROR GETTING FOLDER + if (err) { + console.log("Error :", err); + return; + } + + let assets = files.filter((f) => { + return f.indexOf("DS_Store") === -1 && f.indexOf(".mtl") === -1; + }); + + // console.log('Assets in ', mSourceDir, assets); + + for (let i = 0; i < assets.length; i++) { + let a = assets[i]; + // console.log('is dir ? ', a, fs.lstatSync(`${mSourceDir}/${a}`).isDirectory()); + } + + const folders = assets.filter((a) => { + return isDir(`${mSourceDir}/${a}`); + }); + + assets = assets.filter((a) => { + return !isDir(`${mSourceDir}/${a}`); + }); + + assets = assets.map((f) => { + return `${assetPath}/${f}`; + }); + + console.log("Folders:", assets); + + if (folders.length == 0) { + mCallback(assets); + } else { + let count = 0; + const onAssets = (a) => { + assets = assets.concat(a); + count++; + if (count === folders.length) { + mCallback(assets); + } + }; + + for (let i = 0; i < folders.length; i++) { + let a = folders[i]; + getAssetsInDir(`${mSourceDir}/${a}`, onAssets); + } + } + }); +} + +function getAssets() { + assets = []; + let count = 0; + + const onFolder = (files) => { + assets = assets.concat(files); + count++; + + if (count == ASSETS_PATH.length) { + generateAssetList(); + } + }; + + for (let i = 0; i < ASSETS_PATH.length; i++) { + let dir = ASSETS_PATH[i]; + getAssetsInDir(dir, onFolder); + } +} + +function getAssetType(mExt) { + switch (mExt) { + case "jpg": + return "jpg"; + case "png": + return "png"; + case "obj": + return "text"; + case "dds": + return "binary"; + case "hdr": + return "binary"; + } +} + +function generateAssetList() { + const list = assets.map((file) => { + const id = getFileName(file); + const url = file; + const ext = getExtension(file); + const type = getAssetType(ext); + + return { + id, + url, + type, + }; + }); + + let strList = JSON.stringify(list); + strList = strList.replace("[", "[\n\t"); + strList = strList.replace("]", "\n]"); + strList = strList.split("},{").join("},\n\t{"); + console.log(strList); + + fs.readFile(TEMPLATE_PATH, "utf8", (err, str) => { + if (err) { + console.log("Error Loading file !"); + } else { + str = replace(str, "{{ASSETS}}", strList); + saveFile(str); + } + }); +} + +// getAssets(); + +function loop() { + if (needUpdate) { + console.log("Update Assets"); + getAssets(); + needUpdate = false; + } +} + +const dirPaths = ASSETS_PATH.concat(); +dirPaths.reduce((sequence, dirPath) => { + return sequence + .then(() => { + console.log("dirPath", dirPath); + return fs.ensureDir(dirPath); + }) + .then(() => { + startWatch(); + }) + .catch((err) => { + console.log("Error :", err); + }); +}, Promise.resolve()); + +const startWatch = () => { + setInterval(loop, 500); + const watcherAssets = watcher([ASSETS_PATH]); + + watcherAssets.on("all", (event, file) => { + console.log("Event:", event); + if (file.indexOf(".DS_Store") > -1) return; + needUpdate = true; + }); +}; diff --git a/experiments/flame/tasks/watch.js b/experiments/flame/tasks/watch.js new file mode 100644 index 00000000..6763cb4a --- /dev/null +++ b/experiments/flame/tasks/watch.js @@ -0,0 +1,27 @@ +// watch.js + +const watch = require('chokidar').watch; +const Emitter = require('events'); + +const ignores = [ + 'node_modules/**', + 'bower_components/**', + '.git', + '.DS_Store', +] + +module.exports = function(blob,opt) { + + opt = Object.assign({ + ignored: ignores, + ignoreInitial: true + }, opt); + + const emitter = new Emitter(); + const watcher = watch(blob,opt); + watcher.on('all',(event, path) => { + emitter.emit('all', event, path) + }); + return emitter; + +} diff --git a/experiments/lines01/src/SceneApp.js b/experiments/lines01/src/SceneApp.js index 94e898b9..56bdff4f 100644 --- a/experiments/lines01/src/SceneApp.js +++ b/experiments/lines01/src/SceneApp.js @@ -220,7 +220,7 @@ class SceneApp extends Scene { render() { let g = 0.8; GL.clear(...Config.colorBg.map(toGlsl), 1); - GL.clear(0, 0, 0, 0); + // GL.clear(0, 0, 0, 0); // GL.clear(g, g, g * 0.95, 1); GL.setMatrices(this.camera); @@ -245,8 +245,8 @@ class SceneApp extends Scene { } } - // g = 512; - // GL.viewport(0, 0, g, g); + g = 512 * 3; + GL.viewport(0, 0, g, g); // this._dCopy.draw(this._fboPosRibbon.texture); } diff --git a/experiments/ribbon02/dist/296.bundle.js b/experiments/ribbon02/dist/296.bundle.js index d734ed09..ce63de9f 100644 --- a/experiments/ribbon02/dist/296.bundle.js +++ b/experiments/ribbon02/dist/296.bundle.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[296],{376:(e,t,n)=>{function o(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}n.d(t,{XS:()=>ce});var i=Array.prototype.forEach,r=Array.prototype.slice,s={BREAK:{},extend:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))}),this),e},defaults:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))}),this),e},compose:function(){var e=r.call(arguments);return function(){for(var t=r.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(i&&e.forEach&&e.forEach===i)e.forEach(t,n);else if(e.length===e.length+0){var o,r=void 0;for(r=0,o=e.length;r1?s.toArray(arguments):arguments[0];return s.each(a,(function(t){if(t.litmus(e))return s.each(t.conversions,(function(t,n){if(l=t.read(e),!1===d&&!1!==l)return d=l,l.conversionName=n,l.conversion=t,s.BREAK})),s.BREAK})),d},u=void 0,h={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0;return 0===i?{h:NaN,s:0,v:0}:(s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:r/i,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(u=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}var L=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=o||{};return i.__min=r.min,i.__max=r.max,i.__step=r.step,s.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=T(i.__impliedStep),i}return g(t,e),f(t,[{key:"setValue",value:function(e){var n=e;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=T(e),this}}]),t}(x),N=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));i.__truncationSuspended=!1;var r=i,a=void 0;function l(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())}function d(e){var t=a-e.clientY;r.setValue(r.getValue()+t*r.__impliedStep),a=e.clientY}function c(){k.unbind(window,"mousemove",d),k.unbind(window,"mouseup",c),l()}return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),k.bind(i.__input,"change",(function(){var e=parseFloat(r.__input.value);s.isNaN(e)||r.setValue(e)})),k.bind(i.__input,"blur",(function(){l()})),k.bind(i.__input,"mousedown",(function(e){k.bind(window,"mousemove",d),k.bind(window,"mouseup",c),a=e.clientY})),k.bind(i.__input,"keydown",(function(e){13===e.keyCode&&(r.__truncationSuspended=!0,this.blur(),r.__truncationSuspended=!1,l())})),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e,n,o;return this.__input.value=this.__truncationSuspended?this.getValue():(e=this.getValue(),n=this.__precision,o=Math.pow(10,n),Math.round(e*o)/o),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L);function B(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}var H=function(e){function t(e,n,o,i,r){p(this,t);var s=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),a=s;function l(e){e.preventDefault();var t=a.__background.getBoundingClientRect();return a.setValue(B(e.clientX,t.left,t.right,a.__min,a.__max)),!1}function d(){k.unbind(window,"mousemove",l),k.unbind(window,"mouseup",d),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}function c(e){var t=e.touches[0].clientX,n=a.__background.getBoundingClientRect();a.setValue(B(t,n.left,n.right,a.__min,a.__max))}function u(){k.unbind(window,"touchmove",c),k.unbind(window,"touchend",u),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}return s.__background=document.createElement("div"),s.__foreground=document.createElement("div"),k.bind(s.__background,"mousedown",(function(e){document.activeElement.blur(),k.bind(window,"mousemove",l),k.bind(window,"mouseup",d),l(e)})),k.bind(s.__background,"touchstart",(function(e){1===e.touches.length&&(k.bind(window,"touchmove",c),k.bind(window,"touchend",u),c(e))})),k.addClass(s.__background,"slider"),k.addClass(s.__foreground,"slider-fg"),s.updateDisplay(),s.__background.appendChild(s.__foreground),s.domElement.appendChild(s.__background),s}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L),P=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,k.bind(i.__button,"click",(function(e){return e.preventDefault(),r.fire(),!1})),k.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return g(t,e),f(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(x),F=function(e){function t(e,n){p(this,t);var o=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));o.__color=new v(o.getValue()),o.__temp=new v(0);var i=o;o.domElement=document.createElement("div"),k.makeSelectable(o.domElement,!1),o.__selector=document.createElement("div"),o.__selector.className="selector",o.__saturation_field=document.createElement("div"),o.__saturation_field.className="saturation-field",o.__field_knob=document.createElement("div"),o.__field_knob.className="field-knob",o.__field_knob_border="2px solid ",o.__hue_knob=document.createElement("div"),o.__hue_knob.className="hue-knob",o.__hue_field=document.createElement("div"),o.__hue_field.className="hue-field",o.__input=document.createElement("input"),o.__input.type="text",o.__input_textShadow="0 1px 1px ",k.bind(o.__input,"keydown",(function(e){13===e.keyCode&&_.call(this)})),k.bind(o.__input,"blur",_),k.bind(o.__selector,"mousedown",(function(){k.addClass(this,"drag").bind(window,"mouseup",(function(){k.removeClass(i.__selector,"drag")}))})),k.bind(o.__selector,"touchstart",(function(){k.addClass(this,"drag").bind(window,"touchend",(function(){k.removeClass(i.__selector,"drag")}))}));var r,a=document.createElement("div");function l(e){m(e),k.bind(window,"mousemove",m),k.bind(window,"touchmove",m),k.bind(window,"mouseup",u),k.bind(window,"touchend",u)}function d(e){g(e),k.bind(window,"mousemove",g),k.bind(window,"touchmove",g),k.bind(window,"mouseup",h),k.bind(window,"touchend",h)}function u(){k.unbind(window,"mousemove",m),k.unbind(window,"touchmove",m),k.unbind(window,"mouseup",u),k.unbind(window,"touchend",u),f()}function h(){k.unbind(window,"mousemove",g),k.unbind(window,"touchmove",g),k.unbind(window,"mouseup",h),k.unbind(window,"touchend",h),f()}function _(){var e=c(this.value);!1!==e?(i.__color.__state=e,i.setValue(i.__color.toOriginal())):this.value=i.__color.toString()}function f(){i.__onFinishChange&&i.__onFinishChange.call(i,i.__color.toOriginal())}function m(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,r=n.clientY,s=(o-t.left)/(t.right-t.left),a=1-(r-t.top)/(t.bottom-t.top);return a>1?a=1:a<0&&(a=0),s>1?s=1:s<0&&(s=0),i.__color.v=a,i.__color.s=s,i.setValue(i.__color.toOriginal()),!1}function g(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),i.__color.h=360*n,i.setValue(i.__color.toOriginal()),!1}return s.extend(o.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),s.extend(o.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:o.__field_knob_border+(o.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),s.extend(o.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),s.extend(o.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),s.extend(a.style,{width:"100%",height:"100%",background:"none"}),j(a,"top","rgba(0,0,0,0)","#000"),s.extend(o.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),(r=o.__hue_field).style.background="",r.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",r.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",s.extend(o.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:o.__input_textShadow+"rgba(0,0,0,0.7)"}),k.bind(o.__saturation_field,"mousedown",l),k.bind(o.__saturation_field,"touchstart",l),k.bind(o.__field_knob,"mousedown",l),k.bind(o.__field_knob,"touchstart",l),k.bind(o.__hue_field,"mousedown",d),k.bind(o.__hue_field,"touchstart",d),o.__saturation_field.appendChild(a),o.__selector.appendChild(o.__field_knob),o.__selector.appendChild(o.__saturation_field),o.__selector.appendChild(o.__hue_field),o.__hue_field.appendChild(o.__hue_knob),o.domElement.appendChild(o.__input),o.domElement.appendChild(o.__selector),o.updateDisplay(),o}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=c(this.getValue());if(!1!==e){var t=!1;s.each(v.COMPONENTS,(function(n){if(!s.isUndefined(e[n])&&!s.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}}),this),t&&s.extend(this.__color.__state,e)}s.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;s.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,j(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),s.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(x),I=["-moz-","-o-","-webkit-","-ms-",""];function j(e,t,n,o){e.style.background="",s.each(I,(function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "}))}var D='
\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
',V=function(e,t){var n=e[t];return s.isArray(arguments[2])||s.isObject(arguments[2])?new O(e,t,arguments[2]):s.isNumber(n)?s.isNumber(arguments[2])&&s.isNumber(arguments[3])?s.isNumber(arguments[4])?new H(e,t,arguments[2],arguments[3],arguments[4]):new H(e,t,arguments[2],arguments[3]):s.isNumber(arguments[4])?new N(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new N(e,t,{min:arguments[2],max:arguments[3]}):s.isString(n)?new R(e,t):s.isFunction(n)?new P(e,t,""):s.isBoolean(n)?new S(e,t):null},z=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},U=function(){function e(){p(this,e),this.backgroundElement=document.createElement("div"),s.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),k.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;k.bind(this.backgroundElement,"click",(function(){t.hide()}))}return f(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",k.unbind(e.domElement,"webkitTransitionEnd",t),k.unbind(e.domElement,"transitionend",t),k.unbind(e.domElement,"oTransitionEnd",t)};k.bind(this.domElement,"webkitTransitionEnd",t),k.bind(this.domElement,"transitionend",t),k.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-k.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-k.getHeight(this.domElement)/2+"px"}}]),e}();!function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}(function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n"));var M="Default",G=function(){try{return!!window.localStorage}catch(e){return!1}}(),X=void 0,K=!0,Y=void 0,J=!1,W=[],Q=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),k.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=s.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=s.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),s.isUndefined(o.load)?o.load={preset:M}:o.preset&&(o.load.preset=o.preset),s.isUndefined(o.parent)&&o.hideable&&W.push(this),o.resizable=s.isUndefined(o.parent)&&o.resizable,o.autoPlace&&s.isUndefined(o.scrollable)&&(o.scrollable=!0);var i,r=G&&"true"===localStorage.getItem(ne(0,"isLocal")),a=void 0,l=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,function(e){for(var t=0;t1){var o=n.__li.nextElementSibling;return n.remove(),te(e,n.object,n.property,{before:o,factoryArgs:[s.toArray(arguments)]})}if(s.isArray(t)||s.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),te(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof H){var o=new N(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});s.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}})),k.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof N){var i=function(t){if(s.isNumber(n.__min)&&s.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=te(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=s.compose(i,n.min),n.max=s.compose(i,n.max)}else n instanceof S?(k.bind(t,"click",(function(){k.fakeEvent(n.__checkbox,"click")})),k.bind(n.__checkbox,"click",(function(e){e.stopPropagation()}))):n instanceof P?(k.bind(t,"click",(function(){k.fakeEvent(n.__button,"click")})),k.bind(t,"mouseover",(function(){k.addClass(n.__button,"hover")})),k.bind(t,"mouseout",(function(){k.removeClass(n.__button,"hover")}))):n instanceof F&&(k.addClass(t,"color"),n.updateDisplay=s.compose((function(e){return t.style.borderLeftColor=n.__color.toString(),e}),n.updateDisplay),n.updateDisplay());n.setValue=s.compose((function(t){return e.getRoot().__preset_select&&n.isModified()&&$(e.getRoot(),!0),t}),n.setValue)}(e,d,i),e.__controllers.push(i),i}function ne(e,t){return document.location.href+"."+t}function oe(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function ie(e,t){t.style.display=e.useLocalStorage?"block":"none"}function re(e){var t=e.__save_row=document.createElement("li");k.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),k.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",k.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",k.addClass(o,"button"),k.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",k.addClass(i,"button"),k.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",k.addClass(r,"button"),k.addClass(r,"revert");var a=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?s.each(e.load.remembered,(function(t,n){oe(e,n,n===e.preset)})):oe(e,M,!1),k.bind(a,"change",(function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=le(this)),e.folders={},s.each(this.__folders,(function(t,n){e.folders[n]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=le(this),$(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[M]=le(this,!0)),this.load.remembered[e]=le(this),this.preset=e,oe(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){s.each(this.__controllers,(function(t){this.getRoot().load.remembered?ee(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),s.each(this.__folders,(function(e){e.revert(e)})),e||$(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&de(this.__listening)},updateDisplay:function(){s.each(this.__controllers,(function(e){e.updateDisplay()})),s.each(this.__folders,(function(e){e.updateDisplay()}))}});var ce=Q},129:(e,t)=>{var n=Object.prototype.hasOwnProperty;function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var o,r,s=[];for(r in"string"!=typeof t&&(t="?"),e)if(n.call(e,r)){if((o=e[r])||null!=o&&!isNaN(o)||(o=""),r=i(r),o=i(o),null===r||null===o)continue;s.push(r+"="+o)}return s.length?t+s.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var r=o(t[1]),s=o(t[2]);null===r||null===s||r in i||(i[r]=s)}return i}},851:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,t,n)=>{var o=n(851),i=n(129),r=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,d=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function u(e){return(e||"").toString().replace(r,"")}var h=[["#","hash"],["?","query"],function(e,t){return f(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],_={hash:1,query:1};function p(e){var t,o=("undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{}).location||{},i={},r=typeof(e=e||o);if("blob:"===e.protocol)i=new g(unescape(e.pathname),{});else if("string"===r)for(t in i=new g(e,{}),_)delete i[t];else if("object"===r){for(t in e)t in _||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=a.test(e.href))}return i}function f(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,t){e=(e=u(e)).replace(s,""),t=t||{};var n,o=d.exec(e),i=o[1]?o[1].toLowerCase():"",r=!!o[2],a=!!o[3],l=0;return r?a?(n=o[2]+o[3]+o[4],l=o[2].length+o[3].length):(n=o[2]+o[4],l=o[2].length):a?(n=o[3]+o[4],l=o[3].length):n=o[4],"file:"===i?l>=2&&(n=n.slice(2)):f(i)?n=o[4]:i?r&&(n=n.slice(2)):l>=2&&f(t.protocol)&&(n=o[4]),{protocol:i,slashes:r||f(i),slashesCount:l,rest:n}}function g(e,t,n){if(e=(e=u(e)).replace(s,""),!(this instanceof g))return new g(e,t,n);var r,a,l,d,_,b,v=h.slice(),y=typeof t,w=this,x=0;for("object"!==y&&"string"!==y&&(n=t,t=null),n&&"function"!=typeof n&&(n=i.parse),r=!(a=m(e||"",t=p(t))).protocol&&!a.slashes,w.slashes=a.slashes||r&&t.slashes,w.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!f(w.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x{function o(e,t){var n=e.__state.conversionName.toString(),o=Math.round(e.r),i=Math.round(e.g),r=Math.round(e.b),s=e.a,a=Math.round(e.h),l=e.s.toFixed(1),d=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===n||"SIX_CHAR_HEX"===n){for(var c=e.hex.toString(16);c.length<6;)c="0"+c;return"#"+c}return"CSS_RGB"===n?"rgb("+o+","+i+","+r+")":"CSS_RGBA"===n?"rgba("+o+","+i+","+r+","+s+")":"HEX"===n?"0x"+e.hex.toString(16):"RGB_ARRAY"===n?"["+o+","+i+","+r+"]":"RGBA_ARRAY"===n?"["+o+","+i+","+r+","+s+"]":"RGB_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+"}":"RGBA_OBJ"===n?"{r:"+o+",g:"+i+",b:"+r+",a:"+s+"}":"HSV_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+"}":"HSVA_OBJ"===n?"{h:"+a+",s:"+l+",v:"+d+",a:"+s+"}":"unknown format"}n.d(t,{XS:()=>le});var i=Array.prototype.forEach,r=Array.prototype.slice,s={BREAK:{},extend:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(t[n])||(e[n]=t[n])}.bind(this))}),this),e},defaults:function(e){return this.each(r.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(n){this.isUndefined(e[n])&&(e[n]=t[n])}.bind(this))}),this),e},compose:function(){var e=r.call(arguments);return function(){for(var t=r.call(arguments),n=e.length-1;n>=0;n--)t=[e[n].apply(this,t)];return t[0]}},each:function(e,t,n){if(e)if(i&&e.forEach&&e.forEach===i)e.forEach(t,n);else if(e.length===e.length+0){var o,r=void 0;for(r=0,o=e.length;r1?s.toArray(arguments):arguments[0];return s.each(a,(function(t){if(t.litmus(e))return s.each(t.conversions,(function(t,n){if(l=t.read(e),!1===d&&!1!==l)return d=l,l.conversionName=n,l.conversion=t,s.BREAK})),s.BREAK})),d},u=void 0,h={hsv_to_rgb:function(e,t,n){var o=Math.floor(e/60)%6,i=e/60-Math.floor(e/60),r=n*(1-t),s=n*(1-i*t),a=n*(1-(1-i)*t),l=[[n,a,r],[s,n,r],[r,n,a],[r,s,n],[a,r,n],[n,r,s]][o];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,n){var o=Math.min(e,t,n),i=Math.max(e,t,n),r=i-o,s=void 0;return 0===i?{h:NaN,s:0,v:0}:(s=e===i?(t-n)/r:t===i?2+(n-e)/r:4+(e-t)/r,(s/=6)<0&&(s+=1),{h:360*s,s:r/i,v:i/255})},rgb_to_hex:function(e,t,n){var o=this.hex_with_component(0,2,e);return o=this.hex_with_component(o,1,t),this.hex_with_component(o,0,n)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,n){return n<<(u=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}var L=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=o||{};return i.__min=r.min,i.__max=r.max,i.__step=r.step,s.isUndefined(i.__step)?0===i.initialValue?i.__impliedStep=1:i.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(i.initialValue))/Math.LN10))/10:i.__impliedStep=i.__step,i.__precision=T(i.__impliedStep),i}return g(t,e),f(t,[{key:"setValue",value:function(e){var n=e;return void 0!==this.__min&&nthis.__max&&(n=this.__max),void 0!==this.__step&&n%this.__step!=0&&(n=Math.round(n/this.__step)*this.__step),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,n)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=T(e),this}}]),t}(x),N=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,o));i.__truncationSuspended=!1;var r=i,a=void 0;function l(){r.__onFinishChange&&r.__onFinishChange.call(r,r.getValue())}function d(e){var t=a-e.clientY;r.setValue(r.getValue()+t*r.__impliedStep),a=e.clientY}function c(){k.unbind(window,"mousemove",d),k.unbind(window,"mouseup",c),l()}return i.__input=document.createElement("input"),i.__input.setAttribute("type","text"),k.bind(i.__input,"change",(function(){var e=parseFloat(r.__input.value);s.isNaN(e)||r.setValue(e)})),k.bind(i.__input,"blur",(function(){l()})),k.bind(i.__input,"mousedown",(function(e){k.bind(window,"mousemove",d),k.bind(window,"mouseup",c),a=e.clientY})),k.bind(i.__input,"keydown",(function(e){13===e.keyCode&&(r.__truncationSuspended=!0,this.blur(),r.__truncationSuspended=!1,l())})),i.updateDisplay(),i.domElement.appendChild(i.__input),i}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e,n,o;return this.__input.value=this.__truncationSuspended?this.getValue():(e=this.getValue(),n=this.__precision,o=Math.pow(10,n),Math.round(e*o)/o),m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L);function B(e,t,n,o,i){return o+(e-t)/(n-t)*(i-o)}var H=function(e){function t(e,n,o,i,r){p(this,t);var s=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n,{min:o,max:i,step:r})),a=s;function l(e){e.preventDefault();var t=a.__background.getBoundingClientRect();return a.setValue(B(e.clientX,t.left,t.right,a.__min,a.__max)),!1}function d(){k.unbind(window,"mousemove",l),k.unbind(window,"mouseup",d),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}function c(e){var t=e.touches[0].clientX,n=a.__background.getBoundingClientRect();a.setValue(B(t,n.left,n.right,a.__min,a.__max))}function u(){k.unbind(window,"touchmove",c),k.unbind(window,"touchend",u),a.__onFinishChange&&a.__onFinishChange.call(a,a.getValue())}return s.__background=document.createElement("div"),s.__foreground=document.createElement("div"),k.bind(s.__background,"mousedown",(function(e){document.activeElement.blur(),k.bind(window,"mousemove",l),k.bind(window,"mouseup",d),l(e)})),k.bind(s.__background,"touchstart",(function(e){1===e.touches.length&&(k.bind(window,"touchmove",c),k.bind(window,"touchend",u),c(e))})),k.addClass(s.__background,"slider"),k.addClass(s.__foreground,"slider-fg"),s.updateDisplay(),s.__background.appendChild(s.__foreground),s.domElement.appendChild(s.__background),s}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",m(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(L),P=function(e){function t(e,n,o){p(this,t);var i=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n)),r=i;return i.__button=document.createElement("div"),i.__button.innerHTML=void 0===o?"Fire":o,k.bind(i.__button,"click",(function(e){return e.preventDefault(),r.fire(),!1})),k.addClass(i.__button,"button"),i.domElement.appendChild(i.__button),i}return g(t,e),f(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(x),F=function(e){function t(e,n){p(this,t);var o=b(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));o.__color=new v(o.getValue()),o.__temp=new v(0);var i=o;o.domElement=document.createElement("div"),k.makeSelectable(o.domElement,!1),o.__selector=document.createElement("div"),o.__selector.className="selector",o.__saturation_field=document.createElement("div"),o.__saturation_field.className="saturation-field",o.__field_knob=document.createElement("div"),o.__field_knob.className="field-knob",o.__field_knob_border="2px solid ",o.__hue_knob=document.createElement("div"),o.__hue_knob.className="hue-knob",o.__hue_field=document.createElement("div"),o.__hue_field.className="hue-field",o.__input=document.createElement("input"),o.__input.type="text",o.__input_textShadow="0 1px 1px ",k.bind(o.__input,"keydown",(function(e){13===e.keyCode&&_.call(this)})),k.bind(o.__input,"blur",_),k.bind(o.__selector,"mousedown",(function(){k.addClass(this,"drag").bind(window,"mouseup",(function(){k.removeClass(i.__selector,"drag")}))})),k.bind(o.__selector,"touchstart",(function(){k.addClass(this,"drag").bind(window,"touchend",(function(){k.removeClass(i.__selector,"drag")}))}));var r,a=document.createElement("div");function l(e){m(e),k.bind(window,"mousemove",m),k.bind(window,"touchmove",m),k.bind(window,"mouseup",u),k.bind(window,"touchend",u)}function d(e){g(e),k.bind(window,"mousemove",g),k.bind(window,"touchmove",g),k.bind(window,"mouseup",h),k.bind(window,"touchend",h)}function u(){k.unbind(window,"mousemove",m),k.unbind(window,"touchmove",m),k.unbind(window,"mouseup",u),k.unbind(window,"touchend",u),f()}function h(){k.unbind(window,"mousemove",g),k.unbind(window,"touchmove",g),k.unbind(window,"mouseup",h),k.unbind(window,"touchend",h),f()}function _(){var e=c(this.value);!1!==e?(i.__color.__state=e,i.setValue(i.__color.toOriginal())):this.value=i.__color.toString()}function f(){i.__onFinishChange&&i.__onFinishChange.call(i,i.__color.toOriginal())}function m(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__saturation_field.getBoundingClientRect(),n=e.touches&&e.touches[0]||e,o=n.clientX,r=n.clientY,s=(o-t.left)/(t.right-t.left),a=1-(r-t.top)/(t.bottom-t.top);return a>1?a=1:a<0&&(a=0),s>1?s=1:s<0&&(s=0),i.__color.v=a,i.__color.s=s,i.setValue(i.__color.toOriginal()),!1}function g(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=i.__hue_field.getBoundingClientRect(),n=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return n>1?n=1:n<0&&(n=0),i.__color.h=360*n,i.setValue(i.__color.toOriginal()),!1}return s.extend(o.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),s.extend(o.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:o.__field_knob_border+(o.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),s.extend(o.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),s.extend(o.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),s.extend(a.style,{width:"100%",height:"100%",background:"none"}),j(a,"top","rgba(0,0,0,0)","#000"),s.extend(o.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),(r=o.__hue_field).style.background="",r.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",r.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",r.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",s.extend(o.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:o.__input_textShadow+"rgba(0,0,0,0.7)"}),k.bind(o.__saturation_field,"mousedown",l),k.bind(o.__saturation_field,"touchstart",l),k.bind(o.__field_knob,"mousedown",l),k.bind(o.__field_knob,"touchstart",l),k.bind(o.__hue_field,"mousedown",d),k.bind(o.__hue_field,"touchstart",d),o.__saturation_field.appendChild(a),o.__selector.appendChild(o.__field_knob),o.__selector.appendChild(o.__saturation_field),o.__selector.appendChild(o.__hue_field),o.__hue_field.appendChild(o.__hue_knob),o.domElement.appendChild(o.__input),o.domElement.appendChild(o.__selector),o.updateDisplay(),o}return g(t,e),f(t,[{key:"updateDisplay",value:function(){var e=c(this.getValue());if(!1!==e){var t=!1;s.each(v.COMPONENTS,(function(n){if(!s.isUndefined(e[n])&&!s.isUndefined(this.__color.__state[n])&&e[n]!==this.__color.__state[n])return t=!0,{}}),this),t&&s.extend(this.__color.__state,e)}s.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var n=this.__color.v<.5||this.__color.s>.5?255:0,o=255-n;s.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+n+","+n+","+n+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,j(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),s.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+n+","+n+","+n+")",textShadow:this.__input_textShadow+"rgba("+o+","+o+","+o+",.7)"})}}]),t}(x),I=["-moz-","-o-","-webkit-","-ms-",""];function j(e,t,n,o){e.style.background="",s.each(I,(function(i){e.style.cssText+="background: "+i+"linear-gradient("+t+", "+n+" 0%, "+o+" 100%); "}))}var D=function(e,t){var n=e[t];return s.isArray(arguments[2])||s.isObject(arguments[2])?new O(e,t,arguments[2]):s.isNumber(n)?s.isNumber(arguments[2])&&s.isNumber(arguments[3])?s.isNumber(arguments[4])?new H(e,t,arguments[2],arguments[3],arguments[4]):new H(e,t,arguments[2],arguments[3]):s.isNumber(arguments[4])?new N(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new N(e,t,{min:arguments[2],max:arguments[3]}):s.isString(n)?new R(e,t):s.isFunction(n)?new P(e,t,""):s.isBoolean(n)?new S(e,t):null},V=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)},z=function(){function e(){p(this,e),this.backgroundElement=document.createElement("div"),s.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),k.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),s.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;k.bind(this.backgroundElement,"click",(function(){t.hide()}))}return f(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),s.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",k.unbind(e.domElement,"webkitTransitionEnd",t),k.unbind(e.domElement,"transitionend",t),k.unbind(e.domElement,"oTransitionEnd",t)};k.bind(this.domElement,"webkitTransitionEnd",t),k.bind(this.domElement,"transitionend",t),k.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-k.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-k.getHeight(this.domElement)/2+"px"}}]),e}();!function(e,t){var n=t||document,o=document.createElement("style");o.type="text/css",o.innerHTML=e;var i=n.getElementsByTagName("head")[0];try{i.appendChild(o)}catch(e){}}(function(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n"));var U="Default",M=function(){try{return!!window.localStorage}catch(e){return!1}}(),G=void 0,X=!0,K=void 0,Y=!1,J=[],W=function e(t){var n=this,o=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),k.addClass(this.domElement,"dg"),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],o=s.defaults(o,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),o=s.defaults(o,{resizable:o.autoPlace,hideable:o.autoPlace}),s.isUndefined(o.load)?o.load={preset:U}:o.preset&&(o.load.preset=o.preset),s.isUndefined(o.parent)&&o.hideable&&J.push(this),o.resizable=s.isUndefined(o.parent)&&o.resizable,o.autoPlace&&s.isUndefined(o.scrollable)&&(o.scrollable=!0);var i,r=M&&"true"===localStorage.getItem(te(0,"isLocal")),a=void 0,l=void 0;if(Object.defineProperties(this,{parent:{get:function(){return o.parent}},scrollable:{get:function(){return o.scrollable}},autoPlace:{get:function(){return o.autoPlace}},closeOnTop:{get:function(){return o.closeOnTop}},preset:{get:function(){return n.parent?n.getRoot().preset:o.load.preset},set:function(e){n.parent?n.getRoot().preset=e:o.load.preset=e,function(e){for(var t=0;t1){var o=n.__li.nextElementSibling;return n.remove(),ee(e,n.object,n.property,{before:o,factoryArgs:[s.toArray(arguments)]})}if(s.isArray(t)||s.isObject(t)){var i=n.__li.nextElementSibling;return n.remove(),ee(e,n.object,n.property,{before:i,factoryArgs:[t]})}},name:function(e){return n.__li.firstElementChild.firstElementChild.innerHTML=e,n},listen:function(){return n.__gui.listen(n),n},remove:function(){return n.__gui.remove(n),n}}),n instanceof H){var o=new N(n.object,n.property,{min:n.__min,max:n.__max,step:n.__step});s.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=n[e],i=o[e];n[e]=o[e]=function(){var e=Array.prototype.slice.call(arguments);return i.apply(o,e),t.apply(n,e)}})),k.addClass(t,"has-slider"),n.domElement.insertBefore(o.domElement,n.domElement.firstElementChild)}else if(n instanceof N){var i=function(t){if(s.isNumber(n.__min)&&s.isNumber(n.__max)){var o=n.__li.firstElementChild.firstElementChild.innerHTML,i=n.__gui.__listening.indexOf(n)>-1;n.remove();var r=ee(e,n.object,n.property,{before:n.__li.nextElementSibling,factoryArgs:[n.__min,n.__max,n.__step]});return r.name(o),i&&r.listen(),r}return t};n.min=s.compose(i,n.min),n.max=s.compose(i,n.max)}else n instanceof S?(k.bind(t,"click",(function(){k.fakeEvent(n.__checkbox,"click")})),k.bind(n.__checkbox,"click",(function(e){e.stopPropagation()}))):n instanceof P?(k.bind(t,"click",(function(){k.fakeEvent(n.__button,"click")})),k.bind(t,"mouseover",(function(){k.addClass(n.__button,"hover")})),k.bind(t,"mouseout",(function(){k.removeClass(n.__button,"hover")}))):n instanceof F&&(k.addClass(t,"color"),n.updateDisplay=s.compose((function(e){return t.style.borderLeftColor=n.__color.toString(),e}),n.updateDisplay),n.updateDisplay());n.setValue=s.compose((function(t){return e.getRoot().__preset_select&&n.isModified()&&Z(e.getRoot(),!0),t}),n.setValue)}(e,d,i),e.__controllers.push(i),i}function te(e,t){return document.location.href+"."+t}function ne(e,t,n){var o=document.createElement("option");o.innerHTML=t,o.value=t,e.__preset_select.appendChild(o),n&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function oe(e,t){t.style.display=e.useLocalStorage?"block":"none"}function ie(e){var t=void 0;function n(n){return n.preventDefault(),e.width+=t-n.clientX,e.onResize(),t=n.clientX,!1}function o(){k.removeClass(e.__closeButton,W.CLASS_DRAG),k.unbind(window,"mousemove",n),k.unbind(window,"mouseup",o)}function i(i){return i.preventDefault(),t=i.clientX,k.addClass(e.__closeButton,W.CLASS_DRAG),k.bind(window,"mousemove",n),k.bind(window,"mouseup",o),!1}e.__resize_handle=document.createElement("div"),s.extend(e.__resize_handle.style,{width:"6px",marginLeft:"-3px",height:"200px",cursor:"ew-resize",position:"absolute"}),k.bind(e.__resize_handle,"mousedown",i),k.bind(e.__closeButton,"mousedown",i),e.domElement.insertBefore(e.__resize_handle,e.domElement.firstElementChild)}function re(e,t){e.domElement.style.width=t+"px",e.__save_row&&e.autoPlace&&(e.__save_row.style.width=t+"px"),e.__closeButton&&(e.__closeButton.style.width=t+"px")}function se(e,t){var n={};return s.each(e.__rememberedObjects,(function(o,i){var r={},a=e.__rememberedObjectIndecesToControllers[i];s.each(a,(function(e,n){r[n]=t?e.initialValue:e.getValue()})),n[i]=r})),n}function ae(e){0!==e.length&&V.call(window,(function(){ae(e)})),s.each(e,(function(e){e.updateDisplay()}))}W.toggleHide=function(){Y=!Y,s.each(J,(function(e){e.domElement.style.display=Y?"none":""}))},W.CLASS_AUTO_PLACE="a",W.CLASS_AUTO_PLACE_CONTAINER="ac",W.CLASS_MAIN="main",W.CLASS_CONTROLLER_ROW="cr",W.CLASS_TOO_TALL="taller-than-window",W.CLASS_CLOSED="closed",W.CLASS_CLOSE_BUTTON="close-button",W.CLASS_CLOSE_TOP="close-top",W.CLASS_CLOSE_BOTTOM="close-bottom",W.CLASS_DRAG="drag",W.DEFAULT_WIDTH=245,W.TEXT_CLOSED="Close Controls",W.TEXT_OPEN="Open Controls",W._keydownHandler=function(e){"text"===document.activeElement.type||72!==e.which&&72!==e.keyCode||W.toggleHide()},k.bind(window,"keydown",W._keydownHandler,!1),s.extend(W.prototype,{add:function(e,t){return ee(this,e,t,{factoryArgs:Array.prototype.slice.call(arguments,2)})},addColor:function(e,t){return ee(this,e,t,{color:!0})},remove:function(e){this.__ul.removeChild(e.__li),this.__controllers.splice(this.__controllers.indexOf(e),1);var t=this;s.defer((function(){t.onResize()}))},destroy:function(){if(this.parent)throw new Error("Only the root GUI should be removed with .destroy(). For subfolders, use gui.removeFolder(folder) instead.");this.autoPlace&&K.removeChild(this.domElement);var e=this;s.each(this.__folders,(function(t){e.removeFolder(t)})),k.unbind(window,"keydown",W._keydownHandler,!1),q(this)},addFolder:function(e){if(void 0!==this.__folders[e])throw new Error('You already have a folder in this GUI by the name "'+e+'"');var t={name:e,parent:this};t.autoPlace=this.autoPlace,this.load&&this.load.folders&&this.load.folders[e]&&(t.closed=this.load.folders[e].closed,t.load=this.load.folders[e]);var n=new W(t);this.__folders[e]=n;var o=Q(this,n.domElement);return k.addClass(o,"folder"),n},removeFolder:function(e){this.__ul.removeChild(e.domElement.parentElement),delete this.__folders[e.name],this.load&&this.load.folders&&this.load.folders[e.name]&&delete this.load.folders[e.name],q(e);var t=this;s.each(e.__folders,(function(t){e.removeFolder(t)})),s.defer((function(){t.onResize()}))},open:function(){this.closed=!1},close:function(){this.closed=!0},hide:function(){this.domElement.style.display="none"},show:function(){this.domElement.style.display=""},onResize:function(){var e=this.getRoot();if(e.scrollable){var t=k.getOffset(e.__ul).top,n=0;s.each(e.__ul.childNodes,(function(t){e.autoPlace&&t===e.__save_row||(n+=k.getHeight(t))})),window.innerHeight-t-20GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n'),this.parent)throw new Error("You can only call remember on a top level GUI.");var e=this;s.each(Array.prototype.slice.call(arguments),(function(t){0===e.__rememberedObjects.length&&function(e){var t=e.__save_row=document.createElement("li");k.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),k.addClass(t,"save-row");var n=document.createElement("span");n.innerHTML=" ",k.addClass(n,"button gears");var o=document.createElement("span");o.innerHTML="Save",k.addClass(o,"button"),k.addClass(o,"save");var i=document.createElement("span");i.innerHTML="New",k.addClass(i,"button"),k.addClass(i,"save-as");var r=document.createElement("span");r.innerHTML="Revert",k.addClass(r,"button"),k.addClass(r,"revert");var a=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?s.each(e.load.remembered,(function(t,n){ne(e,n,n===e.preset)})):ne(e,U,!1),k.bind(a,"change",(function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=se(this)),e.folders={},s.each(this.__folders,(function(t,n){e.folders[n]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=se(this),Z(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[U]=se(this,!0)),this.load.remembered[e]=se(this),this.preset=e,ne(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){s.each(this.__controllers,(function(t){this.getRoot().load.remembered?$(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),s.each(this.__folders,(function(e){e.revert(e)})),e||Z(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&ae(this.__listening)},updateDisplay:function(){s.each(this.__controllers,(function(e){e.updateDisplay()})),s.each(this.__folders,(function(e){e.updateDisplay()}))}});var le=W},129:(e,t)=>{var n=Object.prototype.hasOwnProperty;function o(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var o,r,s=[];for(r in"string"!=typeof t&&(t="?"),e)if(n.call(e,r)){if((o=e[r])||null!=o&&!isNaN(o)||(o=""),r=i(r),o=i(o),null===r||null===o)continue;s.push(r+"="+o)}return s.length?t+s.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var r=o(t[1]),s=o(t[2]);null===r||null===s||r in i||(i[r]=s)}return i}},851:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,t,n)=>{var o=n(851),i=n(129),r=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,d=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function u(e){return(e||"").toString().replace(r,"")}var h=[["#","hash"],["?","query"],function(e,t){return f(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],_={hash:1,query:1};function p(e){var t,o=("undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{}).location||{},i={},r=typeof(e=e||o);if("blob:"===e.protocol)i=new g(unescape(e.pathname),{});else if("string"===r)for(t in i=new g(e,{}),_)delete i[t];else if("object"===r){for(t in e)t in _||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=a.test(e.href))}return i}function f(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,t){e=(e=u(e)).replace(s,""),t=t||{};var n,o=d.exec(e),i=o[1]?o[1].toLowerCase():"",r=!!o[2],a=!!o[3],l=0;return r?a?(n=o[2]+o[3]+o[4],l=o[2].length+o[3].length):(n=o[2]+o[4],l=o[2].length):a?(n=o[3]+o[4],l=o[3].length):n=o[4],"file:"===i?l>=2&&(n=n.slice(2)):f(i)?n=o[4]:i?r&&(n=n.slice(2)):l>=2&&f(t.protocol)&&(n=o[4]),{protocol:i,slashes:r||f(i),slashesCount:l,rest:n}}function g(e,t,n){if(e=(e=u(e)).replace(s,""),!(this instanceof g))return new g(e,t,n);var r,a,l,d,_,b,v=h.slice(),y=typeof t,w=this,x=0;for("object"!==y&&"string"!==y&&(n=t,t=null),n&&"function"!=typeof n&&(n=i.parse),r=!(a=m(e||"",t=p(t))).protocol&&!a.slashes,w.slashes=a.slashes||r&&t.slashes,w.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!f(w.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x{o.r(n),o.d(n,{default:()=>r});var i=o(247),t=o(564),a=o.n(t);let d=!0;const w=()=>{d&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.Z))};let l=-1;const r={enabled:d,reload:()=>{d&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.Z))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:w,delayReload:()=>{d&&(window.clearTimeout(l),l=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.Z)}),500))},init:(e=!0)=>{d=e;const n=a()(window.location.search,!0);let o={};n.query.config&&(o=JSON.parse(n.query.config)),Object.assign(i.Z,o),w()}}},824:(e,n,o)=>{o.r(n),o.d(n,{default:()=>d}),o(896);var i=o(376),t=o(247),a=o(891);o(619);const d=e=>{const{refresh:n,reload:o}=a.default,d=new i.XS({width:300});window.gui=d,d.add(t.Z,"numParticles",[32,48,64,96,128]).onChange(o),d.add(t.Z,"numSets",[10,12,14,16]).name("Ribbon length").onFinishChange(o),d.add(t.Z,"extreme").onChange(n),d.add(t.Z,"usePoseDetection").onChange(o),d.add(a.default,"reset").name("Reset Default Settings")}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[437],{891:(e,n,o)=>{o.r(n),o.d(n,{default:()=>r});var i=o(247),t=o(564),a=o.n(t);let d=!0;const l=()=>{d&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.default))};let w=-1;const r={enabled:d,reload:()=>{d&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.default))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:l,delayReload:()=>{d&&(window.clearTimeout(w),w=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(i.default)}),500))},init:(e=!0)=>{d=e;const n=a()(window.location.search,!0);let o={};n.query.config&&(o=JSON.parse(n.query.config)),Object.assign(i.default,o),l()}}},824:(e,n,o)=>{o.r(n),o.d(n,{default:()=>d});var i=o(376),t=o(247),a=o(891);o(619);const d=e=>{const{refresh:n,reload:o}=a.default,d=new i.XS({width:300});window.gui=d,d.add(t.default,"numParticles",[32,48,64,96,128]).onChange(o),d.add(t.default,"numSets",[10,12,14,16]).name("Ribbon length").onFinishChange(o),d.add(t.default,"useHandDetection").onChange(o),d.add(a.default,"reset").name("Reset Default Settings")}}}]); \ No newline at end of file diff --git a/experiments/ribbon02/dist/891.bundle.js b/experiments/ribbon02/dist/891.bundle.js index b164791f..bddffe82 100644 --- a/experiments/ribbon02/dist/891.bundle.js +++ b/experiments/ribbon02/dist/891.bundle.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[891],{129:(e,o)=>{var t=Object.prototype.hasOwnProperty;function n(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function r(e){try{return encodeURIComponent(e)}catch(e){return null}}o.stringify=function(e,o){o=o||"";var n,s,a=[];for(s in"string"!=typeof o&&(o="?"),e)if(t.call(e,s)){if((n=e[s])||null!=n&&!isNaN(n)||(n=""),s=r(s),n=r(n),null===s||null===n)continue;a.push(s+"="+n)}return a.length?o+a.join("&"):""},o.parse=function(e){for(var o,t=/([^=?#&]+)=?([^&]*)/g,r={};o=t.exec(e);){var s=n(o[1]),a=n(o[2]);null===s||null===a||s in r||(r[s]=a)}return r}},851:e=>{e.exports=function(e,o){if(o=o.split(":")[0],!(e=+e))return!1;switch(o){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,o,t)=>{var n=t(851),r=t(129),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,p=/^[a-zA-Z]:/;function h(e){return(e||"").toString().replace(s,"")}var u=[["#","hash"],["?","query"],function(e,o){return w(o.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(e){var o,n=("undefined"!=typeof window?window:void 0!==t.g?t.g:"undefined"!=typeof self?self:{}).location||{},r={},s=typeof(e=e||n);if("blob:"===e.protocol)r=new g(unescape(e.pathname),{});else if("string"===s)for(o in r=new g(e,{}),f)delete r[o];else if("object"===s){for(o in e)o in f||(r[o]=e[o]);void 0===r.slashes&&(r.slashes=i.test(e.href))}return r}function w(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,o){e=(e=h(e)).replace(a,""),o=o||{};var t,n=l.exec(e),r=n[1]?n[1].toLowerCase():"",s=!!n[2],i=!!n[3],c=0;return s?i?(t=n[2]+n[3]+n[4],c=n[2].length+n[3].length):(t=n[2]+n[4],c=n[2].length):i?(t=n[3]+n[4],c=n[3].length):t=n[4],"file:"===r?c>=2&&(t=t.slice(2)):w(r)?t=n[4]:r?s&&(t=t.slice(2)):c>=2&&w(o.protocol)&&(t=n[4]),{protocol:r,slashes:s||w(r),slashesCount:c,rest:t}}function g(e,o,t){if(e=(e=h(e)).replace(a,""),!(this instanceof g))return new g(e,o,t);var s,i,c,l,f,y,C=u.slice(),v=typeof o,b=this,x=0;for("object"!==v&&"string"!==v&&(t=o,o=null),t&&"function"!=typeof t&&(t=r.parse),s=!(i=m(e||"",o=d(o))).protocol&&!i.slashes,b.slashes=i.slashes||s&&o.slashes,b.protocol=i.protocol||o.protocol||"",e=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||p.test(e))||!i.slashes&&(i.protocol||i.slashesCount<2||!w(b.protocol)))&&(C[3]=[/(.*)/,"pathname"]);x{t.r(o),t.d(o,{default:()=>l});var n=t(247),r=t(564),s=t.n(r);let a=!0;const i=()=>{a&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z))};let c=-1;const l={enabled:a,reload:()=>{a&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:i,delayReload:()=>{a&&(window.clearTimeout(c),c=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.Z)}),500))},init:(e=!0)=>{a=e;const o=s()(window.location.search,!0);let t={};o.query.config&&(t=JSON.parse(o.query.config)),Object.assign(n.Z,t),i()}}}}]); \ No newline at end of file +"use strict";(self.webpackChunkfxhash_boilerplate_webpack=self.webpackChunkfxhash_boilerplate_webpack||[]).push([[891],{129:(e,o)=>{var t=Object.prototype.hasOwnProperty;function n(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function r(e){try{return encodeURIComponent(e)}catch(e){return null}}o.stringify=function(e,o){o=o||"";var n,s,a=[];for(s in"string"!=typeof o&&(o="?"),e)if(t.call(e,s)){if((n=e[s])||null!=n&&!isNaN(n)||(n=""),s=r(s),n=r(n),null===s||null===n)continue;a.push(s+"="+n)}return a.length?o+a.join("&"):""},o.parse=function(e){for(var o,t=/([^=?#&]+)=?([^&]*)/g,r={};o=t.exec(e);){var s=n(o[1]),a=n(o[2]);null===s||null===a||s in r||(r[s]=a)}return r}},851:e=>{e.exports=function(e,o){if(o=o.split(":")[0],!(e=+e))return!1;switch(o){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},564:(e,o,t)=>{var n=t(851),r=t(129),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,a=/[\n\r\t]/g,i=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,p=/^[a-zA-Z]:/;function h(e){return(e||"").toString().replace(s,"")}var u=[["#","hash"],["?","query"],function(e,o){return w(o.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(e){var o,n=("undefined"!=typeof window?window:void 0!==t.g?t.g:"undefined"!=typeof self?self:{}).location||{},r={},s=typeof(e=e||n);if("blob:"===e.protocol)r=new g(unescape(e.pathname),{});else if("string"===s)for(o in r=new g(e,{}),f)delete r[o];else if("object"===s){for(o in e)o in f||(r[o]=e[o]);void 0===r.slashes&&(r.slashes=i.test(e.href))}return r}function w(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function m(e,o){e=(e=h(e)).replace(a,""),o=o||{};var t,n=l.exec(e),r=n[1]?n[1].toLowerCase():"",s=!!n[2],i=!!n[3],c=0;return s?i?(t=n[2]+n[3]+n[4],c=n[2].length+n[3].length):(t=n[2]+n[4],c=n[2].length):i?(t=n[3]+n[4],c=n[3].length):t=n[4],"file:"===r?c>=2&&(t=t.slice(2)):w(r)?t=n[4]:r?s&&(t=t.slice(2)):c>=2&&w(o.protocol)&&(t=n[4]),{protocol:r,slashes:s||w(r),slashesCount:c,rest:t}}function g(e,o,t){if(e=(e=h(e)).replace(a,""),!(this instanceof g))return new g(e,o,t);var s,i,c,l,f,y,C=u.slice(),v=typeof o,b=this,x=0;for("object"!==v&&"string"!==v&&(t=o,o=null),t&&"function"!=typeof t&&(t=r.parse),s=!(i=m(e||"",o=d(o))).protocol&&!i.slashes,b.slashes=i.slashes||s&&o.slashes,b.protocol=i.protocol||o.protocol||"",e=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||p.test(e))||!i.slashes&&(i.protocol||i.slashesCount<2||!w(b.protocol)))&&(C[3]=[/(.*)/,"pathname"]);x{t.r(o),t.d(o,{default:()=>l});var n=t(247),r=t(564),s=t.n(r);let a=!0;const i=()=>{a&&window.history.pushState("experiment","Title",window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.default))};let c=-1;const l={enabled:a,reload:()=>{a&&(window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.default))},reset:()=>{window.location.href=window.location.origin+window.location.pathname},refresh:i,delayReload:()=>{a&&(window.clearTimeout(c),c=window.setTimeout((()=>{window.location.href=window.location.origin+window.location.pathname+"?config="+JSON.stringify(n.default)}),500))},init:(e=!0)=>{a=e;const o=s()(window.location.search,!0);let t={};o.query.config&&(t=JSON.parse(o.query.config)),Object.assign(n.default,t),i()}}}}]); \ No newline at end of file diff --git a/experiments/ribbon02/dist/bundle.js b/experiments/ribbon02/dist/bundle.js index fc3594ac..7d07f4a8 100644 --- a/experiments/ribbon02/dist/bundle.js +++ b/experiments/ribbon02/dist/bundle.js @@ -1,2 +1,2 @@ /*! For license information please see bundle.js.LICENSE.txt */ -(()=>{var t,e,n={427:t=>{"use strict";t.exports=function(){try{return!!new Blob}catch(t){return!1}}()},42:(t,e,n)=>{"use strict";var r=n(187).EventEmitter;function o(){r.call(this),this.setMaxListeners(20)}o.prototype=Object.create(r.prototype),o.prototype.constructor=o,o.prototype.off=function(t,e){return e?this.removeListener(t,e):t?this.removeAllListeners(t):this.removeAllListeners()},t.exports=o},622:(t,e,n)=>{"use strict";var r=n(42),o=n(388),i=0;t.exports=function t(e){var n,s={},a=[],u=[],c=0,h=0,l={},f=function(r){return Array.isArray(r)?(r.forEach(f),n):((i=r.assets&&Array.isArray(r.assets)?t(_(r,e)):o(_(r,e))).once("destroy",m),u.push(i),l[i.id]=i,n);var i},d=function(t){return arguments.length?s[t]?s[t]:l[t]:a},_=function(t,e){return"string"==typeof t&&(t={url:t}),void 0===t.isTouchLocked&&(t.isTouchLocked=e.isTouchLocked),void 0===t.blob&&(t.blob=e.blob),void 0===t.basePath&&(t.basePath=e.basePath),t.id=t.id||t.url||String(++i),t.type=t.type||(n=t.url)&&n.split("?")[0].split(".").pop().toLowerCase(),t.crossOrigin=t.crossOrigin||e.crossOrigin,t.webAudioContext=t.webAudioContext||e.webAudioContext,t.log=e.log,t;var n},v=function(t){var e=c+t;n.emit("progress",e/h)},p=function(t,e,r){Array.isArray(t)&&(t={id:e,file:t,type:r}),c++,n.emit("progress",c/h),s[t.id]=t.file,a.push(t),n.emit("childcomplete",t),E()},x=function(t){h--,n.listeners("error").length?n.emit("error",t):console.error(t),E()},m=function(t){l[t]=null,delete l[t],s[t]=null,delete s[t],a.some((function(e,n){if(e.id===t)return a.splice(n,1),!0}))},E=function(){c>=h&&n.emit("complete",a,s,e.id,"group")};return n=Object.create(r.prototype,{_events:{value:{}},id:{get:function(){return e.id}},add:{value:f},start:{value:function(){return h=u.length,u.forEach((function(t){t.on("progress",v).once("complete",p).once("error",x).start()})),u=[],n}},get:{value:d},find:{value:function(t){if(d(t))return d(t);var e=null;return Object.keys(l).some((function(n){return!!(e=l[n].find&&l[n].find(t))})),e}},getLoader:{value:function(t){return l[t]}},loaded:{get:function(){return c>=h}},file:{get:function(){return a}},destroy:{value:function(){for(;u.length;)u.pop().destroy();return n.off("error"),n.off("progress"),n.off("complete"),a=[],s={},e.webAudioContext=null,h=0,c=0,Object.keys(l).forEach((function(t){l[t].destroy()})),l={},n.emit("destroy",n.id),n}}}),e=_(e||{},{basePath:"",blob:!1,touchLocked:!1,crossOrigin:null,webAudioContext:null,log:!1}),Array.isArray(e.assets)&&f(e.assets),n}},370:(t,e,n)=>{"use strict";var r=n(622);r.stats=n(795),t.exports=r},388:(t,e,n)=>{"use strict";var r=n(42),o=n(427),i=n(795);t.exports=function(t){var e,n,s,a,u,c,h=t.id,l=t.basePath||"",f=t.url,d=t.type,_=t.crossOrigin,v=t.isTouchLocked,p=t.blob&&o,x=t.webAudioContext,m=t.log,E=function(t){t&&(c={id:h,file:t,type:d},e.emit("progress",1),e.emit("complete",c,h,d),w())},T=function(t,e){n=e||R,(s=new XMLHttpRequest).open("GET",l+f,!0),s.responseType=t,s.addEventListener("progress",M),s.addEventListener("load",n),s.addEventListener("error",N),s.send()},M=function(t){t.lengthComputable&&e.emit("progress",t.loaded/t.total)},R=function(){A()&&E(s.response)},A=function(){return s&&s.status<400?(i.update(s,a,f,m),!0):(N(s&&s.statusText),!1)},g=function(){s=new Image,_&&(s.crossOrigin="anonymous"),s.addEventListener("error",N,!1),s.addEventListener("load",b,!1),s.src=l+f},b=function(t){window.clearTimeout(u),t||!s.error&&s.readyState?E(s):N()},y=function(){T("blob",(function(){A()&&((s=new Image).addEventListener("error",N,!1),s.addEventListener("load",S,!1),s.src=window.URL.createObjectURL(s.response))}))},S=function(){window.URL.revokeObjectURL(s.src),E(s)},L=function(){T("arraybuffer",(function(){A()&&x.decodeAudioData(s.response,(function(t){s=null,E(t)}),(function(t){N(t)}))}))},C=function(t){s=document.createElement(t),v||(window.clearTimeout(u),u=window.setTimeout(b,2e3),s.addEventListener("canplaythrough",b,!1)),s.addEventListener("error",N,!1),s.preload="auto",s.src=l+f,s.load(),v&&E(s)},N=function(t){window.clearTimeout(u);var n=t;s&&s.tagName&&s.error?n="MediaError: "+["","ABORTED","NETWORK","DECODE","SRC_NOT_SUPPORTED"][s.error.code]+" "+s.src:s&&s.statusText?n=s.statusText:t&&t.message?n=t.message:t&&t.type&&(n=t.type),e.emit("error",'Error loading "'+l+f+'" '+n),P()},w=function(){e.off("error"),e.off("progress"),e.off("complete"),s&&(s.removeEventListener("progress",M),s.removeEventListener("load",n),s.removeEventListener("error",N),s.removeEventListener("load",b),s.removeEventListener("canplaythrough",b),s.removeEventListener("load",S))},P=function(){w(),s&&s.abort&&s.readyState<4&&s.abort(),s=null,x=null,c=null,window.clearTimeout(u),e.emit("destroy",h)};return e=Object.create(r.prototype,{_events:{value:{}},id:{value:t.id},start:{value:function(){switch(a=Date.now(),d){case"json":T("json",(function(){if(A()){var t=s.response;"string"==typeof t&&(t=JSON.parse(t)),E(t)}}));break;case"jpg":case"png":case"gif":case"webp":case"svg":p?y():g();break;case"mp3":case"ogg":case"opus":case"wav":case"m4a":x?L():C("audio");break;case"ogv":case"mp4":case"webm":case"hls":p?T("blob"):C("video");break;case"bin":case"binary":T("arraybuffer");break;case"txt":case"text":T("text");break;default:throw"AssetsLoader ERROR: Unknown type for file with URL: "+l+f+" ("+d+")"}}},loaded:{get:function(){return!!c}},file:{get:function(){return c}},destroy:{value:P}})}},795:t=>{"use strict";t.exports={mbs:0,secs:0,update:function(t,e,n,r){var o,i=t.getAllResponseHeaders();if(i){var s=i.match(/content-length: (\d+)/i);s&&s.length&&(o=s[1])}if(o){var a=(o=parseInt(o,10))/1024/1024,u=(Date.now()-e)/1e3;this.secs+=u,this.mbs+=a,r&&this.log(n,a,u)}else r&&console.warn.call(console,"Can't get Content-Length:",n)},log:function(t,e,n){if(t){var r="File loaded: "+t.substr(t.lastIndexOf("/")+1)+" size:"+e.toFixed(2)+"mb time:"+n.toFixed(2)+"s speed:"+(e/n).toFixed(2)+"mbps";console.log.call(console,r)}var o="Total loaded: "+this.mbs.toFixed(2)+"mb time:"+this.secs.toFixed(2)+"s speed:"+this.getMbps().toFixed(2)+"mbps";console.log.call(console,o)},getMbps:function(){return this.mbs/this.secs}}},187:t=>{"use strict";var e,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};e=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var o=Number.isNaN||function(t){return t!=t};function i(){i.init.call(this)}t.exports=i,t.exports.once=function(t,e){return new Promise((function(n,r){function o(n){t.removeListener(e,i),r(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",o),n([].slice.call(arguments))}v(t,e,i,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&v(t,"error",e,{once:!0})}(t,o)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var s=10;function a(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function u(t){return void 0===t._maxListeners?i.defaultMaxListeners:t._maxListeners}function c(t,e,n,r){var o,i,s,c;if(a(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),s=i[e]),void 0===s)s=i[e]=n,++t._eventsCount;else if("function"==typeof s?s=i[e]=r?[n,s]:[s,n]:r?s.unshift(n):s.push(n),(o=u(t))>0&&s.length>o&&!s.warned){s.warned=!0;var h=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");h.name="MaxListenersExceededWarning",h.emitter=t,h.type=e,h.count=s.length,c=h,console&&console.warn&&console.warn(c)}return t}function h(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function l(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},o=h.bind(r);return o.listener=n,r.wrapFn=o,o}function f(t,e,n){var r=t._events;if(void 0===r)return[];var o=r[e];return void 0===o?[]:"function"==typeof o?n?[o.listener||o]:[o]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(s=e[0]),s instanceof Error)throw s;var a=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw a.context=s,a}var u=i[t];if(void 0===u)return!1;if("function"==typeof u)r(u,this,e);else{var c=u.length,h=_(u,c);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){s=n[i].listener,o=i;break}if(o<0)return this;0===o?n.shift():function(t,e){for(;e+1=0;r--)this.removeListener(t,e[r]);return this},i.prototype.listeners=function(t){return f(this,t,!0)},i.prototype.rawListeners=function(t){return f(this,t,!1)},i.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):d.call(t,e)},i.prototype.listenerCount=d,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},685:(t,e,n)=>{"use strict";n.r(e),n.d(e,{ARRAY_TYPE:()=>o,EPSILON:()=>r,RANDOM:()=>i,equals:()=>c,setMatrixArrayType:()=>s,toRadian:()=>u});var r=1e-6,o="undefined"!=typeof Float32Array?Float32Array:Array,i=Math.random;function s(t){o=t}var a=Math.PI/180;function u(t){return t*a}function c(t,e){return Math.abs(t-e)<=r*Math.max(1,Math.abs(t),Math.abs(e))}Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)})},720:(t,e,n)=>{"use strict";n.r(e),n.d(e,{glMatrix:()=>u,mat2:()=>r,mat2d:()=>o,mat3:()=>st,mat4:()=>at,quat:()=>s,quat2:()=>a,vec2:()=>Ln,vec3:()=>ut,vec4:()=>i});var r={};n.r(r),n.d(r,{LDU:()=>y,add:()=>S,adjoint:()=>x,clone:()=>h,copy:()=>l,create:()=>c,determinant:()=>m,equals:()=>N,exactEquals:()=>C,frob:()=>b,fromRotation:()=>R,fromScaling:()=>A,fromValues:()=>d,identity:()=>f,invert:()=>p,mul:()=>I,multiply:()=>E,multiplyScalar:()=>w,multiplyScalarAndAdd:()=>P,rotate:()=>T,scale:()=>M,set:()=>_,str:()=>g,sub:()=>D,subtract:()=>L,transpose:()=>v});var o={};n.r(o),n.d(o,{add:()=>Q,clone:()=>F,copy:()=>U,create:()=>O,determinant:()=>X,equals:()=>rt,exactEquals:()=>nt,frob:()=>$,fromRotation:()=>W,fromScaling:()=>q,fromTranslation:()=>Z,fromValues:()=>z,identity:()=>B,invert:()=>V,mul:()=>ot,multiply:()=>H,multiplyScalar:()=>tt,multiplyScalarAndAdd:()=>et,rotate:()=>Y,scale:()=>j,set:()=>G,str:()=>K,sub:()=>it,subtract:()=>J,translate:()=>k});var i={};n.r(i),n.d(i,{add:()=>_t,ceil:()=>mt,clone:()=>ht,copy:()=>ft,create:()=>ct,cross:()=>It,dist:()=>kt,distance:()=>bt,div:()=>jt,divide:()=>xt,dot:()=>Pt,equals:()=>Vt,exactEquals:()=>Gt,floor:()=>Et,forEach:()=>Kt,fromValues:()=>lt,inverse:()=>Nt,len:()=>qt,length:()=>St,lerp:()=>Dt,max:()=>Mt,min:()=>Tt,mul:()=>Yt,multiply:()=>pt,negate:()=>Ct,normalize:()=>wt,random:()=>Ot,round:()=>Rt,scale:()=>At,scaleAndAdd:()=>gt,set:()=>dt,sqrDist:()=>Wt,sqrLen:()=>Zt,squaredDistance:()=>yt,squaredLength:()=>Lt,str:()=>zt,sub:()=>Ht,subtract:()=>vt,transformMat4:()=>Ft,transformQuat:()=>Ut,zero:()=>Bt});var s={};n.r(s),n.d(s,{add:()=>Se,calculateW:()=>se,clone:()=>Ae,conjugate:()=>de,copy:()=>be,create:()=>$t,dot:()=>Ne,equals:()=>Be,exactEquals:()=>Ue,exp:()=>ae,fromEuler:()=>ve,fromMat3:()=>_e,fromValues:()=>ge,getAngle:()=>ee,getAxisAngle:()=>te,identity:()=>Qt,invert:()=>fe,len:()=>Ie,length:()=>Pe,lerp:()=>we,ln:()=>ue,mul:()=>Le,multiply:()=>ne,normalize:()=>Fe,pow:()=>ce,random:()=>le,rotateX:()=>re,rotateY:()=>oe,rotateZ:()=>ie,rotationTo:()=>ze,scale:()=>Ce,set:()=>ye,setAxes:()=>Ve,setAxisAngle:()=>Jt,slerp:()=>he,sqlerp:()=>Ge,sqrLen:()=>Oe,squaredLength:()=>De,str:()=>pe});var a={};n.r(a),n.d(a,{add:()=>fn,clone:()=>He,conjugate:()=>En,copy:()=>Ke,create:()=>Xe,dot:()=>pn,equals:()=>Sn,exactEquals:()=>yn,fromMat4:()=>Ze,fromRotation:()=>qe,fromRotationTranslation:()=>ke,fromRotationTranslationValues:()=>je,fromTranslation:()=>We,fromValues:()=>Ye,getDual:()=>tn,getReal:()=>Je,getTranslation:()=>rn,identity:()=>$e,invert:()=>mn,len:()=>Mn,length:()=>Tn,lerp:()=>xn,mul:()=>_n,multiply:()=>dn,normalize:()=>gn,rotateAroundAxis:()=>ln,rotateByQuatAppend:()=>cn,rotateByQuatPrepend:()=>hn,rotateX:()=>sn,rotateY:()=>an,rotateZ:()=>un,scale:()=>vn,set:()=>Qe,setDual:()=>nn,setReal:()=>en,sqrLen:()=>An,squaredLength:()=>Rn,str:()=>bn,translate:()=>on});var u=n(685);function c(){var t=new u.ARRAY_TYPE(4);return u.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0),t[0]=1,t[3]=1,t}function h(t){var e=new u.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function l(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function f(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t}function d(t,e,n,r){var o=new u.ARRAY_TYPE(4);return o[0]=t,o[1]=e,o[2]=n,o[3]=r,o}function _(t,e,n,r,o){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t}function v(t,e){if(t===e){var n=e[1];t[1]=e[2],t[2]=n}else t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3];return t}function p(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=n*i-o*r;return s?(s=1/s,t[0]=i*s,t[1]=-r*s,t[2]=-o*s,t[3]=n*s,t):null}function x(t,e){var n=e[0];return t[0]=e[3],t[1]=-e[1],t[2]=-e[2],t[3]=n,t}function m(t){return t[0]*t[3]-t[2]*t[1]}function E(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=n[0],u=n[1],c=n[2],h=n[3];return t[0]=r*a+i*u,t[1]=o*a+s*u,t[2]=r*c+i*h,t[3]=o*c+s*h,t}function T(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=Math.sin(n),u=Math.cos(n);return t[0]=r*u+i*a,t[1]=o*u+s*a,t[2]=r*-a+i*u,t[3]=o*-a+s*u,t}function M(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=n[0],u=n[1];return t[0]=r*a,t[1]=o*a,t[2]=i*u,t[3]=s*u,t}function R(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t}function A(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t}function g(t){return"mat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}function b(t){return Math.hypot(t[0],t[1],t[2],t[3])}function y(t,e,n,r){return t[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-t[2]*n[1],[t,e,n]}function S(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t}function L(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t}function C(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function N(t,e){var n=t[0],r=t[1],o=t[2],i=t[3],s=e[0],a=e[1],c=e[2],h=e[3];return Math.abs(n-s)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-a)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-h)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(h))}function w(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t}function P(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t}var I=E,D=L;function O(){var t=new u.ARRAY_TYPE(6);return u.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[4]=0,t[5]=0),t[0]=1,t[3]=1,t}function F(t){var e=new u.ARRAY_TYPE(6);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function U(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function B(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t}function z(t,e,n,r,o,i){var s=new u.ARRAY_TYPE(6);return s[0]=t,s[1]=e,s[2]=n,s[3]=r,s[4]=o,s[5]=i,s}function G(t,e,n,r,o,i,s){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t[4]=i,t[5]=s,t}function V(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=n*i-r*o;return u?(u=1/u,t[0]=i*u,t[1]=-r*u,t[2]=-o*u,t[3]=n*u,t[4]=(o*a-i*s)*u,t[5]=(r*s-n*a)*u,t):null}function X(t){return t[0]*t[3]-t[1]*t[2]}function H(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=n[0],h=n[1],l=n[2],f=n[3],d=n[4],_=n[5];return t[0]=r*c+i*h,t[1]=o*c+s*h,t[2]=r*l+i*f,t[3]=o*l+s*f,t[4]=r*d+i*_+a,t[5]=o*d+s*_+u,t}function Y(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=Math.sin(n),h=Math.cos(n);return t[0]=r*h+i*c,t[1]=o*h+s*c,t[2]=r*-c+i*h,t[3]=o*-c+s*h,t[4]=a,t[5]=u,t}function j(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=n[0],h=n[1];return t[0]=r*c,t[1]=o*c,t[2]=i*h,t[3]=s*h,t[4]=a,t[5]=u,t}function k(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=n[0],h=n[1];return t[0]=r,t[1]=o,t[2]=i,t[3]=s,t[4]=r*c+i*h+a,t[5]=o*c+s*h+u,t}function W(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=-n,t[3]=r,t[4]=0,t[5]=0,t}function q(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=e[1],t[4]=0,t[5]=0,t}function Z(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=e[0],t[5]=e[1],t}function K(t){return"mat2d("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+")"}function $(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],1)}function Q(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t}function J(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t}function tt(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t}function et(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t}function nt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function rt(t,e){var n=t[0],r=t[1],o=t[2],i=t[3],s=t[4],a=t[5],c=e[0],h=e[1],l=e[2],f=e[3],d=e[4],_=e[5];return Math.abs(n-c)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(c))&&Math.abs(r-h)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(h))&&Math.abs(o-l)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(l))&&Math.abs(i-f)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(f))&&Math.abs(s-d)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(d))&&Math.abs(a-_)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(_))}var ot=H,it=J,st=n(600),at=n(975),ut=n(160);function ct(){var t=new u.ARRAY_TYPE(4);return u.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function ht(t){var e=new u.ARRAY_TYPE(4);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function lt(t,e,n,r){var o=new u.ARRAY_TYPE(4);return o[0]=t,o[1]=e,o[2]=n,o[3]=r,o}function ft(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function dt(t,e,n,r,o){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t}function _t(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t}function vt(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t}function pt(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t[3]=e[3]*n[3],t}function xt(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t[3]=e[3]/n[3],t}function mt(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t[3]=Math.ceil(e[3]),t}function Et(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t[3]=Math.floor(e[3]),t}function Tt(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t[3]=Math.min(e[3],n[3]),t}function Mt(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t[3]=Math.max(e[3],n[3]),t}function Rt(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t[3]=Math.round(e[3]),t}function At(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t}function gt(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t}function bt(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2],i=e[3]-t[3];return Math.hypot(n,r,o,i)}function yt(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2],i=e[3]-t[3];return n*n+r*r+o*o+i*i}function St(t){var e=t[0],n=t[1],r=t[2],o=t[3];return Math.hypot(e,n,r,o)}function Lt(t){var e=t[0],n=t[1],r=t[2],o=t[3];return e*e+n*n+r*r+o*o}function Ct(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t}function Nt(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t[3]=1/e[3],t}function wt(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=n*n+r*r+o*o+i*i;return s>0&&(s=1/Math.sqrt(s)),t[0]=n*s,t[1]=r*s,t[2]=o*s,t[3]=i*s,t}function Pt(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]}function It(t,e,n,r){var o=n[0]*r[1]-n[1]*r[0],i=n[0]*r[2]-n[2]*r[0],s=n[0]*r[3]-n[3]*r[0],a=n[1]*r[2]-n[2]*r[1],u=n[1]*r[3]-n[3]*r[1],c=n[2]*r[3]-n[3]*r[2],h=e[0],l=e[1],f=e[2],d=e[3];return t[0]=l*c-f*u+d*a,t[1]=-h*c+f*s-d*i,t[2]=h*u-l*s+d*o,t[3]=-h*a+l*i-f*o,t}function Dt(t,e,n,r){var o=e[0],i=e[1],s=e[2],a=e[3];return t[0]=o+r*(n[0]-o),t[1]=i+r*(n[1]-i),t[2]=s+r*(n[2]-s),t[3]=a+r*(n[3]-a),t}function Ot(t,e){var n,r,o,i,s,a;e=e||1;do{s=(n=2*u.RANDOM()-1)*n+(r=2*u.RANDOM()-1)*r}while(s>=1);do{a=(o=2*u.RANDOM()-1)*o+(i=2*u.RANDOM()-1)*i}while(a>=1);var c=Math.sqrt((1-s)/a);return t[0]=e*n,t[1]=e*r,t[2]=e*o*c,t[3]=e*i*c,t}function Ft(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3];return t[0]=n[0]*r+n[4]*o+n[8]*i+n[12]*s,t[1]=n[1]*r+n[5]*o+n[9]*i+n[13]*s,t[2]=n[2]*r+n[6]*o+n[10]*i+n[14]*s,t[3]=n[3]*r+n[7]*o+n[11]*i+n[15]*s,t}function Ut(t,e,n){var r=e[0],o=e[1],i=e[2],s=n[0],a=n[1],u=n[2],c=n[3],h=c*r+a*i-u*o,l=c*o+u*r-s*i,f=c*i+s*o-a*r,d=-s*r-a*o-u*i;return t[0]=h*c+d*-s+l*-u-f*-a,t[1]=l*c+d*-a+f*-s-h*-u,t[2]=f*c+d*-u+h*-a-l*-s,t[3]=e[3],t}function Bt(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t}function zt(t){return"vec4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}function Gt(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]}function Vt(t,e){var n=t[0],r=t[1],o=t[2],i=t[3],s=e[0],a=e[1],c=e[2],h=e[3];return Math.abs(n-s)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-a)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(a))&&Math.abs(o-c)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(c))&&Math.abs(i-h)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(h))}var Xt,Ht=vt,Yt=pt,jt=xt,kt=bt,Wt=yt,qt=St,Zt=Lt,Kt=(Xt=ct(),function(t,e,n,r,o,i){var s,a;for(e||(e=4),n||(n=0),a=r?Math.min(r*e+n,t.length):t.length,s=n;su.EPSILON?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=1,t[1]=0,t[2]=0),n}function ee(t,e){var n=Ne(t,e);return Math.acos(2*n*n-1)}function ne(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=n[0],u=n[1],c=n[2],h=n[3];return t[0]=r*h+s*a+o*c-i*u,t[1]=o*h+s*u+i*a-r*c,t[2]=i*h+s*c+r*u-o*a,t[3]=s*h-r*a-o*u-i*c,t}function re(t,e,n){n*=.5;var r=e[0],o=e[1],i=e[2],s=e[3],a=Math.sin(n),u=Math.cos(n);return t[0]=r*u+s*a,t[1]=o*u+i*a,t[2]=i*u-o*a,t[3]=s*u-r*a,t}function oe(t,e,n){n*=.5;var r=e[0],o=e[1],i=e[2],s=e[3],a=Math.sin(n),u=Math.cos(n);return t[0]=r*u-i*a,t[1]=o*u+s*a,t[2]=i*u+r*a,t[3]=s*u-o*a,t}function ie(t,e,n){n*=.5;var r=e[0],o=e[1],i=e[2],s=e[3],a=Math.sin(n),u=Math.cos(n);return t[0]=r*u+o*a,t[1]=o*u-r*a,t[2]=i*u+s*a,t[3]=s*u-i*a,t}function se(t,e){var n=e[0],r=e[1],o=e[2];return t[0]=n,t[1]=r,t[2]=o,t[3]=Math.sqrt(Math.abs(1-n*n-r*r-o*o)),t}function ae(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=Math.sqrt(n*n+r*r+o*o),a=Math.exp(i),u=s>0?a*Math.sin(s)/s:0;return t[0]=n*u,t[1]=r*u,t[2]=o*u,t[3]=a*Math.cos(s),t}function ue(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=Math.sqrt(n*n+r*r+o*o),a=s>0?Math.atan2(s,i)/s:0;return t[0]=n*a,t[1]=r*a,t[2]=o*a,t[3]=.5*Math.log(n*n+r*r+o*o+i*i),t}function ce(t,e,n){return ue(t,e),Ce(t,t,n),ae(t,t),t}function he(t,e,n,r){var o,i,s,a,c,h=e[0],l=e[1],f=e[2],d=e[3],_=n[0],v=n[1],p=n[2],x=n[3];return(i=h*_+l*v+f*p+d*x)<0&&(i=-i,_=-_,v=-v,p=-p,x=-x),1-i>u.EPSILON?(o=Math.acos(i),s=Math.sin(o),a=Math.sin((1-r)*o)/s,c=Math.sin(r*o)/s):(a=1-r,c=r),t[0]=a*h+c*_,t[1]=a*l+c*v,t[2]=a*f+c*p,t[3]=a*d+c*x,t}function le(t){var e=u.RANDOM(),n=u.RANDOM(),r=u.RANDOM(),o=Math.sqrt(1-e),i=Math.sqrt(e);return t[0]=o*Math.sin(2*Math.PI*n),t[1]=o*Math.cos(2*Math.PI*n),t[2]=i*Math.sin(2*Math.PI*r),t[3]=i*Math.cos(2*Math.PI*r),t}function fe(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=n*n+r*r+o*o+i*i,a=s?1/s:0;return t[0]=-n*a,t[1]=-r*a,t[2]=-o*a,t[3]=i*a,t}function de(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function _e(t,e){var n,r=e[0]+e[4]+e[8];if(r>0)n=Math.sqrt(r+1),t[3]=.5*n,n=.5/n,t[0]=(e[5]-e[7])*n,t[1]=(e[6]-e[2])*n,t[2]=(e[1]-e[3])*n;else{var o=0;e[4]>e[0]&&(o=1),e[8]>e[3*o+o]&&(o=2);var i=(o+1)%3,s=(o+2)%3;n=Math.sqrt(e[3*o+o]-e[3*i+i]-e[3*s+s]+1),t[o]=.5*n,n=.5/n,t[3]=(e[3*i+s]-e[3*s+i])*n,t[i]=(e[3*i+o]+e[3*o+i])*n,t[s]=(e[3*s+o]+e[3*o+s])*n}return t}function ve(t,e,n,r){var o=.5*Math.PI/180;e*=o,n*=o,r*=o;var i=Math.sin(e),s=Math.cos(e),a=Math.sin(n),u=Math.cos(n),c=Math.sin(r),h=Math.cos(r);return t[0]=i*u*h-s*a*c,t[1]=s*a*h+i*u*c,t[2]=s*u*c-i*a*h,t[3]=s*u*h+i*a*c,t}function pe(t){return"quat("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+")"}var xe,me,Ee,Te,Me,Re,Ae=ht,ge=lt,be=ft,ye=dt,Se=_t,Le=ne,Ce=At,Ne=Pt,we=Dt,Pe=St,Ie=Pe,De=Lt,Oe=De,Fe=wt,Ue=Gt,Be=Vt,ze=(xe=ut.create(),me=ut.fromValues(1,0,0),Ee=ut.fromValues(0,1,0),function(t,e,n){var r=ut.dot(e,n);return r<-.999999?(ut.cross(xe,me,e),ut.len(xe)<1e-6&&ut.cross(xe,Ee,e),ut.normalize(xe,xe),Jt(t,xe,Math.PI),t):r>.999999?(t[0]=0,t[1]=0,t[2]=0,t[3]=1,t):(ut.cross(xe,e,n),t[0]=xe[0],t[1]=xe[1],t[2]=xe[2],t[3]=1+r,Fe(t,t))}),Ge=(Te=$t(),Me=$t(),function(t,e,n,r,o,i){return he(Te,e,o,i),he(Me,n,r,i),he(t,Te,Me,2*i*(1-i)),t}),Ve=(Re=st.create(),function(t,e,n,r){return Re[0]=n[0],Re[3]=n[1],Re[6]=n[2],Re[1]=r[0],Re[4]=r[1],Re[7]=r[2],Re[2]=-e[0],Re[5]=-e[1],Re[8]=-e[2],Fe(t,_e(t,Re))});function Xe(){var t=new u.ARRAY_TYPE(8);return u.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0),t[3]=1,t}function He(t){var e=new u.ARRAY_TYPE(8);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e}function Ye(t,e,n,r,o,i,s,a){var c=new u.ARRAY_TYPE(8);return c[0]=t,c[1]=e,c[2]=n,c[3]=r,c[4]=o,c[5]=i,c[6]=s,c[7]=a,c}function je(t,e,n,r,o,i,s){var a=new u.ARRAY_TYPE(8);a[0]=t,a[1]=e,a[2]=n,a[3]=r;var c=.5*o,h=.5*i,l=.5*s;return a[4]=c*r+h*n-l*e,a[5]=h*r+l*t-c*n,a[6]=l*r+c*e-h*t,a[7]=-c*t-h*e-l*n,a}function ke(t,e,n){var r=.5*n[0],o=.5*n[1],i=.5*n[2],s=e[0],a=e[1],u=e[2],c=e[3];return t[0]=s,t[1]=a,t[2]=u,t[3]=c,t[4]=r*c+o*u-i*a,t[5]=o*c+i*s-r*u,t[6]=i*c+r*a-o*s,t[7]=-r*s-o*a-i*u,t}function We(t,e){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=.5*e[0],t[5]=.5*e[1],t[6]=.5*e[2],t[7]=0,t}function qe(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function Ze(t,e){var n=$t();at.getRotation(n,e);var r=new u.ARRAY_TYPE(3);return at.getTranslation(r,e),ke(t,n,r),t}function Ke(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function $e(t){return t[0]=0,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t}function Qe(t,e,n,r,o,i,s,a,u){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t[4]=i,t[5]=s,t[6]=a,t[7]=u,t}var Je=be;function tn(t,e){return t[0]=e[4],t[1]=e[5],t[2]=e[6],t[3]=e[7],t}var en=be;function nn(t,e){return t[4]=e[0],t[5]=e[1],t[6]=e[2],t[7]=e[3],t}function rn(t,e){var n=e[4],r=e[5],o=e[6],i=e[7],s=-e[0],a=-e[1],u=-e[2],c=e[3];return t[0]=2*(n*c+i*s+r*u-o*a),t[1]=2*(r*c+i*a+o*s-n*u),t[2]=2*(o*c+i*u+n*a-r*s),t}function on(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=.5*n[0],u=.5*n[1],c=.5*n[2],h=e[4],l=e[5],f=e[6],d=e[7];return t[0]=r,t[1]=o,t[2]=i,t[3]=s,t[4]=s*a+o*c-i*u+h,t[5]=s*u+i*a-r*c+l,t[6]=s*c+r*u-o*a+f,t[7]=-r*a-o*u-i*c+d,t}function sn(t,e,n){var r=-e[0],o=-e[1],i=-e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=a*s+h*r+u*i-c*o,f=u*s+h*o+c*r-a*i,d=c*s+h*i+a*o-u*r,_=h*s-a*r-u*o-c*i;return re(t,e,n),r=t[0],o=t[1],i=t[2],s=t[3],t[4]=l*s+_*r+f*i-d*o,t[5]=f*s+_*o+d*r-l*i,t[6]=d*s+_*i+l*o-f*r,t[7]=_*s-l*r-f*o-d*i,t}function an(t,e,n){var r=-e[0],o=-e[1],i=-e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=a*s+h*r+u*i-c*o,f=u*s+h*o+c*r-a*i,d=c*s+h*i+a*o-u*r,_=h*s-a*r-u*o-c*i;return oe(t,e,n),r=t[0],o=t[1],i=t[2],s=t[3],t[4]=l*s+_*r+f*i-d*o,t[5]=f*s+_*o+d*r-l*i,t[6]=d*s+_*i+l*o-f*r,t[7]=_*s-l*r-f*o-d*i,t}function un(t,e,n){var r=-e[0],o=-e[1],i=-e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=a*s+h*r+u*i-c*o,f=u*s+h*o+c*r-a*i,d=c*s+h*i+a*o-u*r,_=h*s-a*r-u*o-c*i;return ie(t,e,n),r=t[0],o=t[1],i=t[2],s=t[3],t[4]=l*s+_*r+f*i-d*o,t[5]=f*s+_*o+d*r-l*i,t[6]=d*s+_*i+l*o-f*r,t[7]=_*s-l*r-f*o-d*i,t}function cn(t,e,n){var r=n[0],o=n[1],i=n[2],s=n[3],a=e[0],u=e[1],c=e[2],h=e[3];return t[0]=a*s+h*r+u*i-c*o,t[1]=u*s+h*o+c*r-a*i,t[2]=c*s+h*i+a*o-u*r,t[3]=h*s-a*r-u*o-c*i,a=e[4],u=e[5],c=e[6],h=e[7],t[4]=a*s+h*r+u*i-c*o,t[5]=u*s+h*o+c*r-a*i,t[6]=c*s+h*i+a*o-u*r,t[7]=h*s-a*r-u*o-c*i,t}function hn(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=n[0],u=n[1],c=n[2],h=n[3];return t[0]=r*h+s*a+o*c-i*u,t[1]=o*h+s*u+i*a-r*c,t[2]=i*h+s*c+r*u-o*a,t[3]=s*h-r*a-o*u-i*c,a=n[4],u=n[5],c=n[6],h=n[7],t[4]=r*h+s*a+o*c-i*u,t[5]=o*h+s*u+i*a-r*c,t[6]=i*h+s*c+r*u-o*a,t[7]=s*h-r*a-o*u-i*c,t}function ln(t,e,n,r){if(Math.abs(r)0){n=Math.sqrt(n);var r=e[0]/n,o=e[1]/n,i=e[2]/n,s=e[3]/n,a=e[4],u=e[5],c=e[6],h=e[7],l=r*a+o*u+i*c+s*h;t[0]=r,t[1]=o,t[2]=i,t[3]=s,t[4]=(a-r*l)/n,t[5]=(u-o*l)/n,t[6]=(c-i*l)/n,t[7]=(h-s*l)/n}return t}function bn(t){return"quat2("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+")"}function yn(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]}function Sn(t,e){var n=t[0],r=t[1],o=t[2],i=t[3],s=t[4],a=t[5],c=t[6],h=t[7],l=e[0],f=e[1],d=e[2],_=e[3],v=e[4],p=e[5],x=e[6],m=e[7];return Math.abs(n-l)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(l))&&Math.abs(r-f)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(f))&&Math.abs(o-d)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(i-_)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(_))&&Math.abs(s-v)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(a-p)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(c-x)<=u.EPSILON*Math.max(1,Math.abs(c),Math.abs(x))&&Math.abs(h-m)<=u.EPSILON*Math.max(1,Math.abs(h),Math.abs(m))}var Ln=n(437)},600:(t,e,n)=>{"use strict";n.r(e),n.d(e,{add:()=>L,adjoint:()=>d,clone:()=>s,copy:()=>a,create:()=>o,determinant:()=>_,equals:()=>I,exactEquals:()=>P,frob:()=>S,fromMat2d:()=>R,fromMat4:()=>i,fromQuat:()=>A,fromRotation:()=>T,fromScaling:()=>M,fromTranslation:()=>E,fromValues:()=>u,identity:()=>h,invert:()=>f,mul:()=>D,multiply:()=>v,multiplyScalar:()=>N,multiplyScalarAndAdd:()=>w,normalFromMat4:()=>g,projection:()=>b,rotate:()=>x,scale:()=>m,set:()=>c,str:()=>y,sub:()=>O,subtract:()=>C,translate:()=>p,transpose:()=>l});var r=n(685);function o(){var t=new r.ARRAY_TYPE(9);return r.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function i(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function s(t){var e=new r.ARRAY_TYPE(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function a(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function u(t,e,n,o,i,s,a,u,c){var h=new r.ARRAY_TYPE(9);return h[0]=t,h[1]=e,h[2]=n,h[3]=o,h[4]=i,h[5]=s,h[6]=a,h[7]=u,h[8]=c,h}function c(t,e,n,r,o,i,s,a,u,c){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t[4]=i,t[5]=s,t[6]=a,t[7]=u,t[8]=c,t}function h(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function l(t,e){if(t===e){var n=e[1],r=e[2],o=e[5];t[1]=e[3],t[2]=e[6],t[3]=n,t[5]=e[7],t[6]=r,t[7]=o}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function f(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=h*s-a*c,f=-h*i+a*u,d=c*i-s*u,_=n*l+r*f+o*d;return _?(_=1/_,t[0]=l*_,t[1]=(-h*r+o*c)*_,t[2]=(a*r-o*s)*_,t[3]=f*_,t[4]=(h*n-o*u)*_,t[5]=(-a*n+o*i)*_,t[6]=d*_,t[7]=(-c*n+r*u)*_,t[8]=(s*n-r*i)*_,t):null}function d(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=e[6],c=e[7],h=e[8];return t[0]=s*h-a*c,t[1]=o*c-r*h,t[2]=r*a-o*s,t[3]=a*u-i*h,t[4]=n*h-o*u,t[5]=o*i-n*a,t[6]=i*c-s*u,t[7]=r*u-n*c,t[8]=n*s-r*i,t}function _(t){var e=t[0],n=t[1],r=t[2],o=t[3],i=t[4],s=t[5],a=t[6],u=t[7],c=t[8];return e*(c*i-s*u)+n*(-c*o+s*a)+r*(u*o-i*a)}function v(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=e[8],f=n[0],d=n[1],_=n[2],v=n[3],p=n[4],x=n[5],m=n[6],E=n[7],T=n[8];return t[0]=f*r+d*s+_*c,t[1]=f*o+d*a+_*h,t[2]=f*i+d*u+_*l,t[3]=v*r+p*s+x*c,t[4]=v*o+p*a+x*h,t[5]=v*i+p*u+x*l,t[6]=m*r+E*s+T*c,t[7]=m*o+E*a+T*h,t[8]=m*i+E*u+T*l,t}function p(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=e[8],f=n[0],d=n[1];return t[0]=r,t[1]=o,t[2]=i,t[3]=s,t[4]=a,t[5]=u,t[6]=f*r+d*s+c,t[7]=f*o+d*a+h,t[8]=f*i+d*u+l,t}function x(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=e[8],f=Math.sin(n),d=Math.cos(n);return t[0]=d*r+f*s,t[1]=d*o+f*a,t[2]=d*i+f*u,t[3]=d*s-f*r,t[4]=d*a-f*o,t[5]=d*u-f*i,t[6]=c,t[7]=h,t[8]=l,t}function m(t,e,n){var r=n[0],o=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=o*e[3],t[4]=o*e[4],t[5]=o*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function E(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t}function T(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function M(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function R(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t}function A(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=n+n,a=r+r,u=o+o,c=n*s,h=r*s,l=r*a,f=o*s,d=o*a,_=o*u,v=i*s,p=i*a,x=i*u;return t[0]=1-l-_,t[3]=h-x,t[6]=f+p,t[1]=h+x,t[4]=1-c-_,t[7]=d-v,t[2]=f-p,t[5]=d+v,t[8]=1-c-l,t}function g(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=e[9],f=e[10],d=e[11],_=e[12],v=e[13],p=e[14],x=e[15],m=n*a-r*s,E=n*u-o*s,T=n*c-i*s,M=r*u-o*a,R=r*c-i*a,A=o*c-i*u,g=h*v-l*_,b=h*p-f*_,y=h*x-d*_,S=l*p-f*v,L=l*x-d*v,C=f*x-d*p,N=m*C-E*L+T*S+M*y-R*b+A*g;return N?(N=1/N,t[0]=(a*C-u*L+c*S)*N,t[1]=(u*y-s*C-c*b)*N,t[2]=(s*L-a*y+c*g)*N,t[3]=(o*L-r*C-i*S)*N,t[4]=(n*C-o*y+i*b)*N,t[5]=(r*y-n*L-i*g)*N,t[6]=(v*A-p*R+x*M)*N,t[7]=(p*T-_*A-x*E)*N,t[8]=(_*R-v*T+x*m)*N,t):null}function b(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}function y(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function S(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function L(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t}function C(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t}function N(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t}function w(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t}function P(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]}function I(t,e){var n=t[0],o=t[1],i=t[2],s=t[3],a=t[4],u=t[5],c=t[6],h=t[7],l=t[8],f=e[0],d=e[1],_=e[2],v=e[3],p=e[4],x=e[5],m=e[6],E=e[7],T=e[8];return Math.abs(n-f)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(f))&&Math.abs(o-d)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(i-_)<=r.EPSILON*Math.max(1,Math.abs(i),Math.abs(_))&&Math.abs(s-v)<=r.EPSILON*Math.max(1,Math.abs(s),Math.abs(v))&&Math.abs(a-p)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(u-x)<=r.EPSILON*Math.max(1,Math.abs(u),Math.abs(x))&&Math.abs(c-m)<=r.EPSILON*Math.max(1,Math.abs(c),Math.abs(m))&&Math.abs(h-E)<=r.EPSILON*Math.max(1,Math.abs(h),Math.abs(E))&&Math.abs(l-T)<=r.EPSILON*Math.max(1,Math.abs(l),Math.abs(T))}var D=v,O=C},975:(t,e,n)=>{"use strict";n.r(e),n.d(e,{add:()=>W,adjoint:()=>f,clone:()=>i,copy:()=>s,create:()=>o,determinant:()=>d,equals:()=>Q,exactEquals:()=>$,frob:()=>k,fromQuat:()=>D,fromQuat2:()=>L,fromRotation:()=>A,fromRotationTranslation:()=>S,fromRotationTranslationScale:()=>P,fromRotationTranslationScaleOrigin:()=>I,fromScaling:()=>R,fromTranslation:()=>M,fromValues:()=>a,fromXRotation:()=>g,fromYRotation:()=>b,fromZRotation:()=>y,frustum:()=>O,getRotation:()=>w,getScaling:()=>N,getTranslation:()=>C,identity:()=>c,invert:()=>l,lookAt:()=>H,mul:()=>J,multiply:()=>_,multiplyScalar:()=>Z,multiplyScalarAndAdd:()=>K,ortho:()=>V,orthoNO:()=>G,orthoZO:()=>X,perspective:()=>U,perspectiveFromFieldOfView:()=>z,perspectiveNO:()=>F,perspectiveZO:()=>B,rotate:()=>x,rotateX:()=>m,rotateY:()=>E,rotateZ:()=>T,scale:()=>p,set:()=>u,str:()=>j,sub:()=>tt,subtract:()=>q,targetTo:()=>Y,translate:()=>v,transpose:()=>h});var r=n(685);function o(){var t=new r.ARRAY_TYPE(16);return r.ARRAY_TYPE!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function i(t){var e=new r.ARRAY_TYPE(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function s(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function a(t,e,n,o,i,s,a,u,c,h,l,f,d,_,v,p){var x=new r.ARRAY_TYPE(16);return x[0]=t,x[1]=e,x[2]=n,x[3]=o,x[4]=i,x[5]=s,x[6]=a,x[7]=u,x[8]=c,x[9]=h,x[10]=l,x[11]=f,x[12]=d,x[13]=_,x[14]=v,x[15]=p,x}function u(t,e,n,r,o,i,s,a,u,c,h,l,f,d,_,v,p){return t[0]=e,t[1]=n,t[2]=r,t[3]=o,t[4]=i,t[5]=s,t[6]=a,t[7]=u,t[8]=c,t[9]=h,t[10]=l,t[11]=f,t[12]=d,t[13]=_,t[14]=v,t[15]=p,t}function c(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function h(t,e){if(t===e){var n=e[1],r=e[2],o=e[3],i=e[6],s=e[7],a=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=i,t[11]=e[14],t[12]=o,t[13]=s,t[14]=a}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function l(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=e[9],f=e[10],d=e[11],_=e[12],v=e[13],p=e[14],x=e[15],m=n*a-r*s,E=n*u-o*s,T=n*c-i*s,M=r*u-o*a,R=r*c-i*a,A=o*c-i*u,g=h*v-l*_,b=h*p-f*_,y=h*x-d*_,S=l*p-f*v,L=l*x-d*v,C=f*x-d*p,N=m*C-E*L+T*S+M*y-R*b+A*g;return N?(N=1/N,t[0]=(a*C-u*L+c*S)*N,t[1]=(o*L-r*C-i*S)*N,t[2]=(v*A-p*R+x*M)*N,t[3]=(f*R-l*A-d*M)*N,t[4]=(u*y-s*C-c*b)*N,t[5]=(n*C-o*y+i*b)*N,t[6]=(p*T-_*A-x*E)*N,t[7]=(h*A-f*T+d*E)*N,t[8]=(s*L-a*y+c*g)*N,t[9]=(r*y-n*L-i*g)*N,t[10]=(_*R-v*T+x*m)*N,t[11]=(l*T-h*R-d*m)*N,t[12]=(a*b-s*S-u*g)*N,t[13]=(n*S-r*b+o*g)*N,t[14]=(v*E-_*M-p*m)*N,t[15]=(h*M-l*E+f*m)*N,t):null}function f(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=e[4],a=e[5],u=e[6],c=e[7],h=e[8],l=e[9],f=e[10],d=e[11],_=e[12],v=e[13],p=e[14],x=e[15];return t[0]=a*(f*x-d*p)-l*(u*x-c*p)+v*(u*d-c*f),t[1]=-(r*(f*x-d*p)-l*(o*x-i*p)+v*(o*d-i*f)),t[2]=r*(u*x-c*p)-a*(o*x-i*p)+v*(o*c-i*u),t[3]=-(r*(u*d-c*f)-a*(o*d-i*f)+l*(o*c-i*u)),t[4]=-(s*(f*x-d*p)-h*(u*x-c*p)+_*(u*d-c*f)),t[5]=n*(f*x-d*p)-h*(o*x-i*p)+_*(o*d-i*f),t[6]=-(n*(u*x-c*p)-s*(o*x-i*p)+_*(o*c-i*u)),t[7]=n*(u*d-c*f)-s*(o*d-i*f)+h*(o*c-i*u),t[8]=s*(l*x-d*v)-h*(a*x-c*v)+_*(a*d-c*l),t[9]=-(n*(l*x-d*v)-h*(r*x-i*v)+_*(r*d-i*l)),t[10]=n*(a*x-c*v)-s*(r*x-i*v)+_*(r*c-i*a),t[11]=-(n*(a*d-c*l)-s*(r*d-i*l)+h*(r*c-i*a)),t[12]=-(s*(l*p-f*v)-h*(a*p-u*v)+_*(a*f-u*l)),t[13]=n*(l*p-f*v)-h*(r*p-o*v)+_*(r*f-o*l),t[14]=-(n*(a*p-u*v)-s*(r*p-o*v)+_*(r*u-o*a)),t[15]=n*(a*f-u*l)-s*(r*f-o*l)+h*(r*u-o*a),t}function d(t){var e=t[0],n=t[1],r=t[2],o=t[3],i=t[4],s=t[5],a=t[6],u=t[7],c=t[8],h=t[9],l=t[10],f=t[11],d=t[12],_=t[13],v=t[14],p=t[15];return(e*s-n*i)*(l*p-f*v)-(e*a-r*i)*(h*p-f*_)+(e*u-o*i)*(h*v-l*_)+(n*a-r*s)*(c*p-f*d)-(n*u-o*s)*(c*v-l*d)+(r*u-o*a)*(c*_-h*d)}function _(t,e,n){var r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=e[8],f=e[9],d=e[10],_=e[11],v=e[12],p=e[13],x=e[14],m=e[15],E=n[0],T=n[1],M=n[2],R=n[3];return t[0]=E*r+T*a+M*l+R*v,t[1]=E*o+T*u+M*f+R*p,t[2]=E*i+T*c+M*d+R*x,t[3]=E*s+T*h+M*_+R*m,E=n[4],T=n[5],M=n[6],R=n[7],t[4]=E*r+T*a+M*l+R*v,t[5]=E*o+T*u+M*f+R*p,t[6]=E*i+T*c+M*d+R*x,t[7]=E*s+T*h+M*_+R*m,E=n[8],T=n[9],M=n[10],R=n[11],t[8]=E*r+T*a+M*l+R*v,t[9]=E*o+T*u+M*f+R*p,t[10]=E*i+T*c+M*d+R*x,t[11]=E*s+T*h+M*_+R*m,E=n[12],T=n[13],M=n[14],R=n[15],t[12]=E*r+T*a+M*l+R*v,t[13]=E*o+T*u+M*f+R*p,t[14]=E*i+T*c+M*d+R*x,t[15]=E*s+T*h+M*_+R*m,t}function v(t,e,n){var r,o,i,s,a,u,c,h,l,f,d,_,v=n[0],p=n[1],x=n[2];return e===t?(t[12]=e[0]*v+e[4]*p+e[8]*x+e[12],t[13]=e[1]*v+e[5]*p+e[9]*x+e[13],t[14]=e[2]*v+e[6]*p+e[10]*x+e[14],t[15]=e[3]*v+e[7]*p+e[11]*x+e[15]):(r=e[0],o=e[1],i=e[2],s=e[3],a=e[4],u=e[5],c=e[6],h=e[7],l=e[8],f=e[9],d=e[10],_=e[11],t[0]=r,t[1]=o,t[2]=i,t[3]=s,t[4]=a,t[5]=u,t[6]=c,t[7]=h,t[8]=l,t[9]=f,t[10]=d,t[11]=_,t[12]=r*v+a*p+l*x+e[12],t[13]=o*v+u*p+f*x+e[13],t[14]=i*v+c*p+d*x+e[14],t[15]=s*v+h*p+_*x+e[15]),t}function p(t,e,n){var r=n[0],o=n[1],i=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*o,t[5]=e[5]*o,t[6]=e[6]*o,t[7]=e[7]*o,t[8]=e[8]*i,t[9]=e[9]*i,t[10]=e[10]*i,t[11]=e[11]*i,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function x(t,e,n,o){var i,s,a,u,c,h,l,f,d,_,v,p,x,m,E,T,M,R,A,g,b,y,S,L,C=o[0],N=o[1],w=o[2],P=Math.hypot(C,N,w);return P0?(n[0]=2*(u*a+l*o+c*s-h*i)/f,n[1]=2*(c*a+l*i+h*o-u*s)/f,n[2]=2*(h*a+l*s+u*i-c*o)/f):(n[0]=2*(u*a+l*o+c*s-h*i),n[1]=2*(c*a+l*i+h*o-u*s),n[2]=2*(h*a+l*s+u*i-c*o)),S(t,e,n),t}function C(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function N(t,e){var n=e[0],r=e[1],o=e[2],i=e[4],s=e[5],a=e[6],u=e[8],c=e[9],h=e[10];return t[0]=Math.hypot(n,r,o),t[1]=Math.hypot(i,s,a),t[2]=Math.hypot(u,c,h),t}function w(t,e){var n=new r.ARRAY_TYPE(3);N(n,e);var o=1/n[0],i=1/n[1],s=1/n[2],a=e[0]*o,u=e[1]*i,c=e[2]*s,h=e[4]*o,l=e[5]*i,f=e[6]*s,d=e[8]*o,_=e[9]*i,v=e[10]*s,p=a+l+v,x=0;return p>0?(x=2*Math.sqrt(p+1),t[3]=.25*x,t[0]=(f-_)/x,t[1]=(d-c)/x,t[2]=(u-h)/x):a>l&&a>v?(x=2*Math.sqrt(1+a-l-v),t[3]=(f-_)/x,t[0]=.25*x,t[1]=(u+h)/x,t[2]=(d+c)/x):l>v?(x=2*Math.sqrt(1+l-a-v),t[3]=(d-c)/x,t[0]=(u+h)/x,t[1]=.25*x,t[2]=(f+_)/x):(x=2*Math.sqrt(1+v-a-l),t[3]=(u-h)/x,t[0]=(d+c)/x,t[1]=(f+_)/x,t[2]=.25*x),t}function P(t,e,n,r){var o=e[0],i=e[1],s=e[2],a=e[3],u=o+o,c=i+i,h=s+s,l=o*u,f=o*c,d=o*h,_=i*c,v=i*h,p=s*h,x=a*u,m=a*c,E=a*h,T=r[0],M=r[1],R=r[2];return t[0]=(1-(_+p))*T,t[1]=(f+E)*T,t[2]=(d-m)*T,t[3]=0,t[4]=(f-E)*M,t[5]=(1-(l+p))*M,t[6]=(v+x)*M,t[7]=0,t[8]=(d+m)*R,t[9]=(v-x)*R,t[10]=(1-(l+_))*R,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function I(t,e,n,r,o){var i=e[0],s=e[1],a=e[2],u=e[3],c=i+i,h=s+s,l=a+a,f=i*c,d=i*h,_=i*l,v=s*h,p=s*l,x=a*l,m=u*c,E=u*h,T=u*l,M=r[0],R=r[1],A=r[2],g=o[0],b=o[1],y=o[2],S=(1-(v+x))*M,L=(d+T)*M,C=(_-E)*M,N=(d-T)*R,w=(1-(f+x))*R,P=(p+m)*R,I=(_+E)*A,D=(p-m)*A,O=(1-(f+v))*A;return t[0]=S,t[1]=L,t[2]=C,t[3]=0,t[4]=N,t[5]=w,t[6]=P,t[7]=0,t[8]=I,t[9]=D,t[10]=O,t[11]=0,t[12]=n[0]+g-(S*g+N*b+I*y),t[13]=n[1]+b-(L*g+w*b+D*y),t[14]=n[2]+y-(C*g+P*b+O*y),t[15]=1,t}function D(t,e){var n=e[0],r=e[1],o=e[2],i=e[3],s=n+n,a=r+r,u=o+o,c=n*s,h=r*s,l=r*a,f=o*s,d=o*a,_=o*u,v=i*s,p=i*a,x=i*u;return t[0]=1-l-_,t[1]=h+x,t[2]=f-p,t[3]=0,t[4]=h-x,t[5]=1-c-_,t[6]=d+v,t[7]=0,t[8]=f+p,t[9]=d-v,t[10]=1-c-l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function O(t,e,n,r,o,i,s){var a=1/(n-e),u=1/(o-r),c=1/(i-s);return t[0]=2*i*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*i*u,t[6]=0,t[7]=0,t[8]=(n+e)*a,t[9]=(o+r)*u,t[10]=(s+i)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=s*i*2*c,t[15]=0,t}function F(t,e,n,r,o){var i,s=1/Math.tan(e/2);return t[0]=s/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=o&&o!==1/0?(i=1/(r-o),t[10]=(o+r)*i,t[14]=2*o*r*i):(t[10]=-1,t[14]=-2*r),t}var U=F;function B(t,e,n,r,o){var i,s=1/Math.tan(e/2);return t[0]=s/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,null!=o&&o!==1/0?(i=1/(r-o),t[10]=o*i,t[14]=o*r*i):(t[10]=-1,t[14]=-r),t}function z(t,e,n,r){var o=Math.tan(e.upDegrees*Math.PI/180),i=Math.tan(e.downDegrees*Math.PI/180),s=Math.tan(e.leftDegrees*Math.PI/180),a=Math.tan(e.rightDegrees*Math.PI/180),u=2/(s+a),c=2/(o+i);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=c,t[6]=0,t[7]=0,t[8]=-(s-a)*u*.5,t[9]=(o-i)*c*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t}function G(t,e,n,r,o,i,s){var a=1/(e-n),u=1/(r-o),c=1/(i-s);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+n)*a,t[13]=(o+r)*u,t[14]=(s+i)*c,t[15]=1,t}var V=G;function X(t,e,n,r,o,i,s){var a=1/(e-n),u=1/(r-o),c=1/(i-s);return t[0]=-2*a,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=c,t[11]=0,t[12]=(e+n)*a,t[13]=(o+r)*u,t[14]=i*c,t[15]=1,t}function H(t,e,n,o){var i,s,a,u,h,l,f,d,_,v,p=e[0],x=e[1],m=e[2],E=o[0],T=o[1],M=o[2],R=n[0],A=n[1],g=n[2];return Math.abs(p-R)0&&(h*=d=1/Math.sqrt(d),l*=d,f*=d);var _=u*f-c*l,v=c*h-a*f,p=a*l-u*h;return(d=_*_+v*v+p*p)>0&&(_*=d=1/Math.sqrt(d),v*=d,p*=d),t[0]=_,t[1]=v,t[2]=p,t[3]=0,t[4]=l*p-f*v,t[5]=f*_-h*p,t[6]=h*v-l*_,t[7]=0,t[8]=h,t[9]=l,t[10]=f,t[11]=0,t[12]=o,t[13]=i,t[14]=s,t[15]=1,t}function j(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function k(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function W(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}function q(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t[9]=e[9]-n[9],t[10]=e[10]-n[10],t[11]=e[11]-n[11],t[12]=e[12]-n[12],t[13]=e[13]-n[13],t[14]=e[14]-n[14],t[15]=e[15]-n[15],t}function Z(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12]*n,t[13]=e[13]*n,t[14]=e[14]*n,t[15]=e[15]*n,t}function K(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t[9]=e[9]+n[9]*r,t[10]=e[10]+n[10]*r,t[11]=e[11]+n[11]*r,t[12]=e[12]+n[12]*r,t[13]=e[13]+n[13]*r,t[14]=e[14]+n[14]*r,t[15]=e[15]+n[15]*r,t}function $(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function Q(t,e){var n=t[0],o=t[1],i=t[2],s=t[3],a=t[4],u=t[5],c=t[6],h=t[7],l=t[8],f=t[9],d=t[10],_=t[11],v=t[12],p=t[13],x=t[14],m=t[15],E=e[0],T=e[1],M=e[2],R=e[3],A=e[4],g=e[5],b=e[6],y=e[7],S=e[8],L=e[9],C=e[10],N=e[11],w=e[12],P=e[13],I=e[14],D=e[15];return Math.abs(n-E)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(E))&&Math.abs(o-T)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(T))&&Math.abs(i-M)<=r.EPSILON*Math.max(1,Math.abs(i),Math.abs(M))&&Math.abs(s-R)<=r.EPSILON*Math.max(1,Math.abs(s),Math.abs(R))&&Math.abs(a-A)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(u-g)<=r.EPSILON*Math.max(1,Math.abs(u),Math.abs(g))&&Math.abs(c-b)<=r.EPSILON*Math.max(1,Math.abs(c),Math.abs(b))&&Math.abs(h-y)<=r.EPSILON*Math.max(1,Math.abs(h),Math.abs(y))&&Math.abs(l-S)<=r.EPSILON*Math.max(1,Math.abs(l),Math.abs(S))&&Math.abs(f-L)<=r.EPSILON*Math.max(1,Math.abs(f),Math.abs(L))&&Math.abs(d-C)<=r.EPSILON*Math.max(1,Math.abs(d),Math.abs(C))&&Math.abs(_-N)<=r.EPSILON*Math.max(1,Math.abs(_),Math.abs(N))&&Math.abs(v-w)<=r.EPSILON*Math.max(1,Math.abs(v),Math.abs(w))&&Math.abs(p-P)<=r.EPSILON*Math.max(1,Math.abs(p),Math.abs(P))&&Math.abs(x-I)<=r.EPSILON*Math.max(1,Math.abs(x),Math.abs(I))&&Math.abs(m-D)<=r.EPSILON*Math.max(1,Math.abs(m),Math.abs(D))}var J=_,tt=q},437:(t,e,n)=>{"use strict";n.r(e),n.d(e,{add:()=>c,angle:()=>F,ceil:()=>d,clone:()=>i,copy:()=>a,create:()=>o,cross:()=>L,dist:()=>k,distance:()=>T,div:()=>j,divide:()=>f,dot:()=>S,equals:()=>G,exactEquals:()=>z,floor:()=>_,forEach:()=>Z,fromValues:()=>s,inverse:()=>b,len:()=>X,length:()=>R,lerp:()=>C,max:()=>p,min:()=>v,mul:()=>Y,multiply:()=>l,negate:()=>g,normalize:()=>y,random:()=>N,rotate:()=>O,round:()=>x,scale:()=>m,scaleAndAdd:()=>E,set:()=>u,sqrDist:()=>W,sqrLen:()=>q,squaredDistance:()=>M,squaredLength:()=>A,str:()=>B,sub:()=>H,subtract:()=>h,transformMat2:()=>w,transformMat2d:()=>P,transformMat3:()=>I,transformMat4:()=>D,zero:()=>U});var r=n(685);function o(){var t=new r.ARRAY_TYPE(2);return r.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0),t}function i(t){var e=new r.ARRAY_TYPE(2);return e[0]=t[0],e[1]=t[1],e}function s(t,e){var n=new r.ARRAY_TYPE(2);return n[0]=t,n[1]=e,n}function a(t,e){return t[0]=e[0],t[1]=e[1],t}function u(t,e,n){return t[0]=e,t[1]=n,t}function c(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t}function h(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t}function l(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t}function f(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t}function d(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t}function _(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t}function v(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t}function p(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t}function x(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t}function m(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t}function E(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t}function T(t,e){var n=e[0]-t[0],r=e[1]-t[1];return Math.hypot(n,r)}function M(t,e){var n=e[0]-t[0],r=e[1]-t[1];return n*n+r*r}function R(t){var e=t[0],n=t[1];return Math.hypot(e,n)}function A(t){var e=t[0],n=t[1];return e*e+n*n}function g(t,e){return t[0]=-e[0],t[1]=-e[1],t}function b(t,e){return t[0]=1/e[0],t[1]=1/e[1],t}function y(t,e){var n=e[0],r=e[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o)),t[0]=e[0]*o,t[1]=e[1]*o,t}function S(t,e){return t[0]*e[0]+t[1]*e[1]}function L(t,e,n){var r=e[0]*n[1]-e[1]*n[0];return t[0]=t[1]=0,t[2]=r,t}function C(t,e,n,r){var o=e[0],i=e[1];return t[0]=o+r*(n[0]-o),t[1]=i+r*(n[1]-i),t}function N(t,e){e=e||1;var n=2*r.RANDOM()*Math.PI;return t[0]=Math.cos(n)*e,t[1]=Math.sin(n)*e,t}function w(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[2]*o,t[1]=n[1]*r+n[3]*o,t}function P(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[2]*o+n[4],t[1]=n[1]*r+n[3]*o+n[5],t}function I(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[3]*o+n[6],t[1]=n[1]*r+n[4]*o+n[7],t}function D(t,e,n){var r=e[0],o=e[1];return t[0]=n[0]*r+n[4]*o+n[12],t[1]=n[1]*r+n[5]*o+n[13],t}function O(t,e,n,r){var o=e[0]-n[0],i=e[1]-n[1],s=Math.sin(r),a=Math.cos(r);return t[0]=o*a-i*s+n[0],t[1]=o*s+i*a+n[1],t}function F(t,e){var n=t[0],r=t[1],o=e[0],i=e[1],s=Math.sqrt(n*n+r*r)*Math.sqrt(o*o+i*i),a=s&&(n*o+r*i)/s;return Math.acos(Math.min(Math.max(a,-1),1))}function U(t){return t[0]=0,t[1]=0,t}function B(t){return"vec2("+t[0]+", "+t[1]+")"}function z(t,e){return t[0]===e[0]&&t[1]===e[1]}function G(t,e){var n=t[0],o=t[1],i=e[0],s=e[1];return Math.abs(n-i)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(i))&&Math.abs(o-s)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(s))}var V,X=R,H=h,Y=l,j=f,k=T,W=M,q=A,Z=(V=o(),function(t,e,n,r,o,i){var s,a;for(e||(e=2),n||(n=0),a=r?Math.min(r*e+n,t.length):t.length,s=n;s{"use strict";n.r(e),n.d(e,{add:()=>h,angle:()=>z,bezier:()=>w,ceil:()=>_,clone:()=>i,copy:()=>u,create:()=>o,cross:()=>L,dist:()=>q,distance:()=>M,div:()=>W,divide:()=>d,dot:()=>S,equals:()=>H,exactEquals:()=>X,floor:()=>v,forEach:()=>Q,fromValues:()=>a,hermite:()=>N,inverse:()=>b,len:()=>K,length:()=>s,lerp:()=>C,max:()=>x,min:()=>p,mul:()=>k,multiply:()=>f,negate:()=>g,normalize:()=>y,random:()=>P,rotateX:()=>F,rotateY:()=>U,rotateZ:()=>B,round:()=>m,scale:()=>E,scaleAndAdd:()=>T,set:()=>c,sqrDist:()=>Z,sqrLen:()=>$,squaredDistance:()=>R,squaredLength:()=>A,str:()=>V,sub:()=>j,subtract:()=>l,transformMat3:()=>D,transformMat4:()=>I,transformQuat:()=>O,zero:()=>G});var r=n(685);function o(){var t=new r.ARRAY_TYPE(3);return r.ARRAY_TYPE!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function i(t){var e=new r.ARRAY_TYPE(3);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function s(t){var e=t[0],n=t[1],r=t[2];return Math.hypot(e,n,r)}function a(t,e,n){var o=new r.ARRAY_TYPE(3);return o[0]=t,o[1]=e,o[2]=n,o}function u(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function c(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function h(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function l(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function f(t,e,n){return t[0]=e[0]*n[0],t[1]=e[1]*n[1],t[2]=e[2]*n[2],t}function d(t,e,n){return t[0]=e[0]/n[0],t[1]=e[1]/n[1],t[2]=e[2]/n[2],t}function _(t,e){return t[0]=Math.ceil(e[0]),t[1]=Math.ceil(e[1]),t[2]=Math.ceil(e[2]),t}function v(t,e){return t[0]=Math.floor(e[0]),t[1]=Math.floor(e[1]),t[2]=Math.floor(e[2]),t}function p(t,e,n){return t[0]=Math.min(e[0],n[0]),t[1]=Math.min(e[1],n[1]),t[2]=Math.min(e[2],n[2]),t}function x(t,e,n){return t[0]=Math.max(e[0],n[0]),t[1]=Math.max(e[1],n[1]),t[2]=Math.max(e[2],n[2]),t}function m(t,e){return t[0]=Math.round(e[0]),t[1]=Math.round(e[1]),t[2]=Math.round(e[2]),t}function E(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function T(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t}function M(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.hypot(n,r,o)}function R(t,e){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return n*n+r*r+o*o}function A(t){var e=t[0],n=t[1],r=t[2];return e*e+n*n+r*r}function g(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t}function b(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function y(t,e){var n=e[0],r=e[1],o=e[2],i=n*n+r*r+o*o;return i>0&&(i=1/Math.sqrt(i)),t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t}function S(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function L(t,e,n){var r=e[0],o=e[1],i=e[2],s=n[0],a=n[1],u=n[2];return t[0]=o*u-i*a,t[1]=i*s-r*u,t[2]=r*a-o*s,t}function C(t,e,n,r){var o=e[0],i=e[1],s=e[2];return t[0]=o+r*(n[0]-o),t[1]=i+r*(n[1]-i),t[2]=s+r*(n[2]-s),t}function N(t,e,n,r,o,i){var s=i*i,a=s*(2*i-3)+1,u=s*(i-2)+i,c=s*(i-1),h=s*(3-2*i);return t[0]=e[0]*a+n[0]*u+r[0]*c+o[0]*h,t[1]=e[1]*a+n[1]*u+r[1]*c+o[1]*h,t[2]=e[2]*a+n[2]*u+r[2]*c+o[2]*h,t}function w(t,e,n,r,o,i){var s=1-i,a=s*s,u=i*i,c=a*s,h=3*i*a,l=3*u*s,f=u*i;return t[0]=e[0]*c+n[0]*h+r[0]*l+o[0]*f,t[1]=e[1]*c+n[1]*h+r[1]*l+o[1]*f,t[2]=e[2]*c+n[2]*h+r[2]*l+o[2]*f,t}function P(t,e){e=e||1;var n=2*r.RANDOM()*Math.PI,o=2*r.RANDOM()-1,i=Math.sqrt(1-o*o)*e;return t[0]=Math.cos(n)*i,t[1]=Math.sin(n)*i,t[2]=o*e,t}function I(t,e,n){var r=e[0],o=e[1],i=e[2],s=n[3]*r+n[7]*o+n[11]*i+n[15];return s=s||1,t[0]=(n[0]*r+n[4]*o+n[8]*i+n[12])/s,t[1]=(n[1]*r+n[5]*o+n[9]*i+n[13])/s,t[2]=(n[2]*r+n[6]*o+n[10]*i+n[14])/s,t}function D(t,e,n){var r=e[0],o=e[1],i=e[2];return t[0]=r*n[0]+o*n[3]+i*n[6],t[1]=r*n[1]+o*n[4]+i*n[7],t[2]=r*n[2]+o*n[5]+i*n[8],t}function O(t,e,n){var r=n[0],o=n[1],i=n[2],s=n[3],a=e[0],u=e[1],c=e[2],h=o*c-i*u,l=i*a-r*c,f=r*u-o*a,d=o*f-i*l,_=i*h-r*f,v=r*l-o*h,p=2*s;return h*=p,l*=p,f*=p,d*=2,_*=2,v*=2,t[0]=a+h+d,t[1]=u+l+_,t[2]=c+f+v,t}function F(t,e,n,r){var o=[],i=[];return o[0]=e[0]-n[0],o[1]=e[1]-n[1],o[2]=e[2]-n[2],i[0]=o[0],i[1]=o[1]*Math.cos(r)-o[2]*Math.sin(r),i[2]=o[1]*Math.sin(r)+o[2]*Math.cos(r),t[0]=i[0]+n[0],t[1]=i[1]+n[1],t[2]=i[2]+n[2],t}function U(t,e,n,r){var o=[],i=[];return o[0]=e[0]-n[0],o[1]=e[1]-n[1],o[2]=e[2]-n[2],i[0]=o[2]*Math.sin(r)+o[0]*Math.cos(r),i[1]=o[1],i[2]=o[2]*Math.cos(r)-o[0]*Math.sin(r),t[0]=i[0]+n[0],t[1]=i[1]+n[1],t[2]=i[2]+n[2],t}function B(t,e,n,r){var o=[],i=[];return o[0]=e[0]-n[0],o[1]=e[1]-n[1],o[2]=e[2]-n[2],i[0]=o[0]*Math.cos(r)-o[1]*Math.sin(r),i[1]=o[0]*Math.sin(r)+o[1]*Math.cos(r),i[2]=o[2],t[0]=i[0]+n[0],t[1]=i[1]+n[1],t[2]=i[2]+n[2],t}function z(t,e){var n=t[0],r=t[1],o=t[2],i=e[0],s=e[1],a=e[2],u=Math.sqrt(n*n+r*r+o*o)*Math.sqrt(i*i+s*s+a*a),c=u&&S(t,e)/u;return Math.acos(Math.min(Math.max(c,-1),1))}function G(t){return t[0]=0,t[1]=0,t[2]=0,t}function V(t){return"vec3("+t[0]+", "+t[1]+", "+t[2]+")"}function X(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function H(t,e){var n=t[0],o=t[1],i=t[2],s=e[0],a=e[1],u=e[2];return Math.abs(n-s)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(o-a)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(a))&&Math.abs(i-u)<=r.EPSILON*Math.max(1,Math.abs(i),Math.abs(u))}var Y,j=l,k=f,W=d,q=M,Z=R,K=s,$=A,Q=(Y=o(),function(t,e,n,r,o,i){var s,a;for(e||(e=3),n||(n=0),a=r?Math.min(r*e+n,t.length):t.length,s=n;s{"use strict";var e=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,i){for(var s,a,u=o(t),c=1;c{"use strict";n.d(e,{Z:()=>E});let r=window,o=60,i=performance.now(),s=0,a=0,u=i;const c=[],h=[],l=[],f=[];let d=[],_=[],v=-1,p=0;function x(){!function(){let t,e=0,n=1e3/o,r=0;for(e=0;e0;)t=d.pop(),t.func(t.args);let v=performance.now();for(a=(v-i)/1e3,s=v-u,e=0;et.delay&&(t.func(t.args),h.splice(e,1));for(v=performance.now();l.length>0;){if(t=l.shift(),r=performance.now(),!(r-v0;)t=f.shift(),r=performance.now(),r-v-1&&window.cancelAnimationFrame(v),r=t,x()},setFrameRate:function(t){o=t},getElapsedTime:function(){return a},getDeltaTime:function(){return s}};const E=m},247:(t,e,n)=>{"use strict";n.d(e,{Z:()=>r});const r={numParticles:64,numSets:16,extreme:!1,autoSave:!1,usePoseDetection:!1,showThumbnail:!1,margin:100,thumbnailSize:256,background:[22,22,22]}},896:(t,e,n)=>{"use strict";n.d(e,{Ag:()=>F,hG:()=>U,nu:()=>B,QA:()=>X,oF:()=>W,Cg:()=>H,SY:()=>Z,uL:()=>I,GL:()=>T,fy:()=>P,v6:()=>z,l:()=>et,Kj:()=>b,xs:()=>rt,jz:()=>V,F7:()=>ot});var r=n(187),o=n.n(r),i=n(418),s=n.n(i),a=n(685);function u(t,e){const n=t.getExtension(e);if(!n)return!1;const r=e.split("_")[0],o=new RegExp(`${r}$`);for(const e in n)if("function"==typeof n[e]){const r=e.replace(o,"");e.substring&&(t[r]=n[e].bind(n))}return!0}const c=["EXT_shader_texture_lod","EXT_sRGB","EXT_frag_depth","OES_texture_float","OES_texture_half_float","OES_texture_float_linear","OES_texture_half_float_linear","OES_standard_derivatives","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_color_buffer_half_float","OES_vertex_array_object","WEBGL_depth_texture","ANGLE_instanced_arrays","WEBGL_color_buffer_float","WEBGL_draw_buffers","EXT_color_buffer_float"],h=(()=>{let t=!1;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(t=!0),t})(),l=(t,e)=>{if("number"==typeof t)return a.equals(t,e);if(t.length!==e.length)return!1;let n=!0;return t.forEach(((t,r)=>{n=a.equals(t,e[r])&&n})),n},f=t=>{let e,n;return t.touches?(e=t.touches[0].pageX,n=t.touches[0].pageY):(e=t.clientX,n=t.clientY),{x:e,y:n}},d={ACTIVE_ATTRIBUTES:35721,ACTIVE_ATTRIBUTE_MAX_LENGTH:35722,ACTIVE_TEXTURE:34016,ACTIVE_UNIFORMS:35718,ACTIVE_UNIFORM_MAX_LENGTH:35719,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,ALPHA:6406,ALPHA_BITS:3413,ALWAYS:519,ARRAY_BUFFER:34962,ARRAY_BUFFER_BINDING:34964,ATTACHED_SHADERS:35717,BACK:1029,BLEND:3042,BLEND_COLOR:32773,BLEND_DST_ALPHA:32970,BLEND_DST_RGB:32968,BLEND_EQUATION:32777,BLEND_EQUATION_ALPHA:34877,BLEND_EQUATION_RGB:32777,BLEND_SRC_ALPHA:32971,BLEND_SRC_RGB:32969,BLUE_BITS:3412,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,BROWSER_DEFAULT_WEBGL:37444,BUFFER_SIZE:34660,BUFFER_USAGE:34661,BYTE:5120,CCW:2305,CLAMP_TO_EDGE:33071,COLOR_ATTACHMENT0:36064,COLOR_BUFFER_BIT:16384,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,COMPILE_STATUS:35713,COMPRESSED_TEXTURE_FORMATS:34467,CONSTANT_ALPHA:32771,CONSTANT_COLOR:32769,CONTEXT_LOST_WEBGL:37442,CULL_FACE:2884,CULL_FACE_MODE:2885,CURRENT_PROGRAM:35725,CURRENT_VERTEX_ATTRIB:34342,CW:2304,DECR:7683,DECR_WRAP:34056,DELETE_STATUS:35712,DEPTH_ATTACHMENT:36096,DEPTH_BITS:3414,DEPTH_BUFFER_BIT:256,DEPTH_CLEAR_VALUE:2931,DEPTH_COMPONENT:6402,RED:6403,DEPTH_COMPONENT16:33189,DEPTH_FUNC:2932,DEPTH_RANGE:2928,DEPTH_STENCIL:34041,DEPTH_STENCIL_ATTACHMENT:33306,DEPTH_TEST:2929,DEPTH_WRITEMASK:2930,DITHER:3024,DONT_CARE:4352,DST_ALPHA:772,DST_COLOR:774,DYNAMIC_DRAW:35048,ELEMENT_ARRAY_BUFFER:34963,ELEMENT_ARRAY_BUFFER_BINDING:34965,EQUAL:514,FASTEST:4353,FLOAT:5126,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,FRAGMENT_SHADER:35632,FRAMEBUFFER:36160,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_BINDING:36006,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_UNSUPPORTED:36061,FRONT:1028,FRONT_AND_BACK:1032,FRONT_FACE:2886,FUNC_ADD:32774,FUNC_REVERSE_SUBTRACT:32779,FUNC_SUBTRACT:32778,GENERATE_MIPMAP_HINT:33170,GEQUAL:518,GREATER:516,GREEN_BITS:3411,HALF_FLOAT:36193,HIGH_FLOAT:36338,HIGH_INT:36341,INCR:7682,INCR_WRAP:34055,INFO_LOG_LENGTH:35716,INT:5124,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,INVALID_ENUM:1280,INVALID_FRAMEBUFFER_OPERATION:1286,INVALID_OPERATION:1282,INVALID_VALUE:1281,INVERT:5386,KEEP:7680,LEQUAL:515,LESS:513,LINEAR:9729,LINEAR_MIPMAP_LINEAR:9987,LINEAR_MIPMAP_NEAREST:9985,LINES:1,LINE_LOOP:2,LINE_STRIP:3,LINE_WIDTH:2849,LINK_STATUS:35714,LOW_FLOAT:36336,LOW_INT:36339,LUMINANCE:6409,LUMINANCE_ALPHA:6410,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_CUBE_MAP_TEXTURE_SIZE:34076,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_RENDERBUFFER_SIZE:34024,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_TEXTURE_SIZE:3379,MAX_VARYING_VECTORS:36348,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VIEWPORT_DIMS:3386,MEDIUM_FLOAT:36337,MEDIUM_INT:36340,MIRRORED_REPEAT:33648,NEAREST:9728,NEAREST_MIPMAP_LINEAR:9986,NEAREST_MIPMAP_NEAREST:9984,NEVER:512,NICEST:4354,NONE:0,NOTEQUAL:517,NO_ERROR:0,NUM_COMPRESSED_TEXTURE_FORMATS:34466,ONE:1,ONE_MINUS_CONSTANT_ALPHA:32772,ONE_MINUS_CONSTANT_COLOR:32770,ONE_MINUS_DST_ALPHA:773,ONE_MINUS_DST_COLOR:775,ONE_MINUS_SRC_ALPHA:771,ONE_MINUS_SRC_COLOR:769,OUT_OF_MEMORY:1285,PACK_ALIGNMENT:3333,POINTS:0,POLYGON_OFFSET_FACTOR:32824,POLYGON_OFFSET_FILL:32823,POLYGON_OFFSET_UNITS:10752,RED_BITS:3410,RENDERBUFFER:36161,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_BINDING:36007,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_STENCIL_SIZE:36181,RENDERBUFFER_WIDTH:36162,RENDERER:7937,REPEAT:10497,REPLACE:7681,RGB:6407,RGB5_A1:32855,RGB565:36194,RGBA:6408,RGBA4:32854,SAMPLER_2D:35678,SAMPLER_CUBE:35680,SAMPLES:32937,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_BUFFERS:32936,SAMPLE_COVERAGE:32928,SAMPLE_COVERAGE_INVERT:32939,SAMPLE_COVERAGE_VALUE:32938,SCISSOR_BOX:3088,SCISSOR_TEST:3089,SHADER_COMPILER:36346,SHADER_SOURCE_LENGTH:35720,SHADER_TYPE:35663,SHADING_LANGUAGE_VERSION:35724,SHORT:5122,SRC_ALPHA:770,SRC_ALPHA_SATURATE:776,SRC_COLOR:768,STATIC_DRAW:35044,STENCIL_ATTACHMENT:36128,STENCIL_BACK_FAIL:34817,STENCIL_BACK_FUNC:34816,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,STENCIL_BITS:3415,STENCIL_BUFFER_BIT:1024,STENCIL_CLEAR_VALUE:2961,STENCIL_FAIL:2964,STENCIL_FUNC:2962,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_TEST:2960,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STREAM_DRAW:35040,SUBPIXEL_BITS:3408,TEXTURE:5890,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,TEXTURE_2D:3553,TEXTURE_BINDING_2D:32873,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP:34067,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TRIANGLES:4,TRIANGLE_FAN:6,TRIANGLE_STRIP:5,UNPACK_ALIGNMENT:3317,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,UNSIGNED_BYTE:5121,UNSIGNED_INT:5125,UNSIGNED_SHORT:5123,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,VALIDATE_STATUS:35715,VENDOR:7936,VERSION:7938,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_SHADER:35633,VIEWPORT:2978,ZERO:0,R8:33321},_={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6403:"RED",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33321:"R8",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36193:"HALF_FLOAT",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"},v={alpha:!1,depth:!0,premultipliedAlpha:!1};var p=n(975),x=n(600);let m=0;function E(){let t,e,n=[0,0,0,0],r=0,o=0,i=0,a=(()=>{const t=document.createElement("canvas");return!(!t.getContext("experimental-webgl2")&&!t.getContext("webgl2"))})(),f=h;const E=p.create(),M=p.create(),R=p.create(),A=x.create(),g=p.create(),b=x.create();this.id="WebGLContext"+m++,this.canvas,this.gl,this.CONTEXT_LOST="contextLost",this.CONTEXT_RESTORED="contextRestored",this.shaderCount=0,this.bufferCount=0,this.textureCount=0,this.frameBufferCount=0,this.maxAnisotropy=0,this.multiRenderTargetSupport=!1,this.maxMultiRenderTargets=0,this.init=function(t,e={}){const n=s()({},v,e);if(void 0!==t){if(t instanceof HTMLCanvasElement){this.canvas=t;let r=a?"webgl2":"webgl";e.webgl1&&(r="webgl",a=!1),this.gl=t.getContext(r,n)}else window.WebGL2RenderingContext&&t instanceof WebGL2RenderingContext?(a=!0,this.gl=t,this.canvas=t.canvas):t instanceof WebGLRenderingContext?(a=!1,this.gl=t,this.canvas=t.canvas):console.error("The source has to be one of the following : Canvas, WebGLRenderingContext or WebGL2RenderingContext");this.canvas.addEventListener("webglcontextlost",S),this.canvas.addEventListener("webglcontextrestored",L),this.extensions=(t=>{const{gl:e}=t,n=window.WebGL2RenderingContext&&e instanceof WebGL2RenderingContext,r={};c.forEach((t=>{r[t]=e.getExtension(t)})),n||(r.OES_vertex_array_object||console.error("OES_vertex_array_object extension is not supported"),u(e,"OES_vertex_array_object"),u(e,"ANGLE_instanced_arrays"),u(e,"WEBGL_draw_buffers"));const o=r.EXT_texture_filter_anisotropic;if(o&&(t.maxAnisotropy=e.getParameter(o.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),t.multiRenderTargetSupport=!!t.gl.drawBuffers,t.multiRenderTargetSupport){const n=t.gl.MAX_DRAW_BUFFERS||r.WEBGL_draw_buffers.MAX_DRAW_BUFFERS_WEBGL;t.maxMultiRenderTargets=e.getParameter(n)}return r})(this),(t=>{for(const e in d)t[e]?console.log("already exist : ",e):t[e]=d[e];if(t.webgl2){const e=/^[^a-z]*$/;for(const n in t.gl)e.test(n)&&-1===n.indexOf("FLOAT")&&(t[n]=t.gl[n],d[n]=t.gl[n],_[t[n]]=n)}})(this),this.setSize(this.canvas.width,this.canvas.height),this.enable(this.BLEND),this.enableAlphaBlending(),this.enable(this.DEPTH_TEST),this.enable(this.CULL_FACE),this.cullFace(T.BACK)}else{const t=document.createElement("canvas");this.init(t,n)}},this.clear=function(t=0,e=0,n=0,r=0){const{gl:o}=this;o.clearColor(t,e,n,r),o.clear(o.COLOR_BUFFER_BIT|o.DEPTH_BUFFER_BIT)},this.setSize=function(t,e){o=Math.floor(t),i=Math.floor(e),this.canvas.width=o,this.canvas.height=i,r=o/i,this.viewport(0,0,o,i)},this.viewport=function(t,e,r,o){l(n,[t,e,r,o])||(n=[t,e,r,o],this.gl.viewport(t,e,r,o))},this.getViewport=function(){return n},this.getAspectRatio=function(){return r},this.enable=function(t){this.gl.enable(t)},this.disable=function(t){this.gl.disable(t)},this.cullFace=function(t){this.gl.cullFace(t)},this.enableAlphaBlending=function(){const{gl:t}=this;t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA)},this.enableAdditiveBlending=function(){const{gl:t}=this;t.blendFunc(t.ONE,t.ONE)},this.setMatrices=function(t){e=t,this.setModelMatrix(M)},this.setModelMatrix=function(t){p.copy(R,t),void 0!==e&&(p.multiply(E,e.viewMatrix,R),x.fromMat4(A,E),x.invert(A,A),x.transpose(A,A),x.fromMat4(b,E),x.invert(b,b),p.invert(g,e.viewMatrix))},this.useShader=function(e){t=e,this.shaderProgram=e.shaderProgram,this.gl.useProgram(this.shaderProgram)},this.draw=function(e){if(e.length)return void e.forEach((t=>this.draw(t)));y(),t.updateUniforms(),e.bind(this);const{drawType:n}=e,{gl:r}=this;e.isInstanced?r.drawElementsInstanced(e.drawType,e.numItems,r.UNSIGNED_INT,0,e.numInstance):n===r.POINTS?r.drawArrays(n,0,e.vertexSize):r.drawElements(n,e.numItems,r.UNSIGNED_INT,0),e.unbind()},this.getCamera=function(){return e},this.destroy=function(t=!0){this.gl.getExtension("WEBGL_lose_context").loseContext(),t&&void 0!==this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)},this.__defineGetter__("width",(function(){return o})),this.__defineGetter__("height",(function(){return i})),this.__defineGetter__("webgl2",(function(){return a})),this.__defineGetter__("isMobile",(function(){return f})),this.__defineGetter__("aspectRatio",(function(){return r}));const y=()=>{void 0!==e&&(t.uniform("uProjectionMatrix","mat4",e.projectionMatrix),t.uniform("uViewMatrix","mat4",e.viewMatrix),t.uniform("uNormalMatrix","mat3",A),t.uniform("uModelViewMatrixInverse","mat3",b)),t.uniform("uModelMatrix","mat4",R)},S=()=>{this.emit(this.CONTEXT_LOST)},L=()=>{this.emit(this.CONTEXT_RESTORED)}}E.prototype=Object.assign(Object.create(o().prototype),{constructor:E});const T=new E,M={float:"uniform1f",vec2:"uniform2fv",vec3:"uniform3fv",vec4:"uniform4fv",int:"uniform1i",ivec2:"uniform2i",ivec3:"uniform3i",ivec4:"uniform4i",mat2:"uniformMatrix2fv",mat3:"uniformMatrix3fv",mat4:"uniformMatrix4fv"},R=t=>"number"==typeof t?t:t.slice?t.slice(0):new Float32Array(t),A=t=>"object"==typeof t?function(t){return 9===t.length?"mat3":16===t.length?"mat4":`vec${t.length}`}(t):"float";function g(t,e){let n;this.vertexShader=t||"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n}",this.fragmentShader=e||"precision highp float;\n#define GLSLIFY 1\n// varying vec2 vTextureCoord;\n\nvoid main(void) {\n gl_FragColor = vec4(1.0);\n}",this.shaderProgram;let r={};this.bind=function(t){if(void 0===t||void 0===n||t===n){if(n=t||T,!this.shaderProgram){const t=o(this.vertexShader,!0),e=o(this.fragmentShader,!1);i(t,e)}n.useShader(this)}else console.error("this shader has been bind to a different WebGL Rendering Context",n.id)},this.uniform=function(t,e,n){let o,i;void 0===n?(i=A(e),o=e):(i=e,o=n);const s=M[i];if(r[t]){const e=r[t];l(e.value,o)||(e.value=R(o),e.changed=!0)}else r[t]={type:i,uniformType:s,value:R(o),changed:!0};return this},this.updateUniforms=function(){if(!n)return void console.warn("No WebGL Context has been set yet, please call shader.bind() first");const{gl:t}=n;for(let e in r){const n=r[e];if(n.changed){const r=e;n.uniformLoc||(n.uniformLoc=t.getUniformLocation(this.shaderProgram,r));const{uniformLoc:o,uniformType:i,value:s}=n;null!==o&&(-1===i.indexOf("Matrix")?t[i](o,s):t[i](o,!1,s)),n.changed=!1}}},this.destroy=function(){const{gl:t}=n;t.deleteProgram(this.shaderProgram),n.shaderCount--};const o=(t,e)=>{const{gl:r}=n,o=e?n.VERTEX_SHADER:n.FRAGMENT_SHADER,i=r.createShader(o);return r.shaderSource(i,t),r.compileShader(i),r.getShaderParameter(i,r.COMPILE_STATUS)?i:(console.warn("Error in Shader : ",r.getShaderInfoLog(i)),console.log((t=>{const e=t.split("\n");for(let t=0;t{const{gl:r}=n;this.shaderProgram=r.createProgram(),r.attachShader(this.shaderProgram,t),r.attachShader(this.shaderProgram,e),r.deleteShader(t),r.deleteShader(e),r.linkProgram(this.shaderProgram),n.shaderCount++}}function b(t=d.TRIANGLES){this.drawType=t,this.numItems=0;let e,n,r,o,i,s=[],a=[],u=[],c=!0,h=!1,l=0;this.bufferData=function(t,e,n,r=d.STATIC_DRAW,o=!1){let i,s=[];if("number"==typeof t[0]){if(i=t,void 0===n)return console.error("Missing element size for flatten data :",e),this;for(let t=0;t{for(let n=0;ne.name===t))},this.getAttributes=function(){return s},this.getSource=function(t){const e=this.getAttribute(t);return e?e.source:[]},this.generateFaces=function(){let t,e,n,o,i,s;u=[];const{vertices:a}=this;for(let c=0;c{t.deleteBuffer(e.buffer),e.source=[],e.dataArray=[],i.bufferCount--})),o&&(t.deleteBuffer(o),i.bufferCount--),t.deleteVertexArray(e),s=[],r=[],a=[]},this.__defineGetter__("vertices",(function(){return this.getSource("aVertexPosition")})),this.__defineGetter__("coords",(function(){return this.getSource("aTextureCoord")})),this.__defineGetter__("normal",(function(){return this.getSource("aNormal")})),this.__defineGetter__("indices",(function(){return r})),this.__defineGetter__("faces",(function(){return u})),this.__defineGetter__("isInstanced",(function(){return h})),this.__defineGetter__("numInstance",(function(){return l}));const f=(t,e,n,r,o=d.STATIC_DRAW,i=!1)=>{const u=o;h=i||h;const c=new Float32Array(t),l=this.getAttribute(n);return l?(l.itemSize=r,l.dataArray=c,l.source=e):s.push({name:n,source:e,itemSize:r,usage:u,dataArray:c,isInstanced:i}),a.push(n),this},_=()=>{const{shaderProgram:t,gl:n}=i;0!=a.length&&(e||(e=n.createVertexArray()),n.bindVertexArray(e),s.forEach((e=>{if(-1!==a.indexOf(e.name)){const r=function(t,e){let n;const{gl:r}=e;return void 0!==t.buffer?n=t.buffer:(n=r.createBuffer(),t.buffer=n,e.bufferCount++),n}(e,i);n.bindBuffer(n.ARRAY_BUFFER,r),n.bufferData(n.ARRAY_BUFFER,e.dataArray,e.usage);const o=((t,e,n)=>(void 0===e.cacheAttribLoc&&(e.cacheAttribLoc={}),void 0===e.cacheAttribLoc[n]&&(e.cacheAttribLoc[n]=t.getAttribLocation(e,n)),e.cacheAttribLoc[n]))(n,t,e.name);o>=0&&(n.enableVertexAttribArray(o),n.vertexAttribPointer(o,e.itemSize,n.FLOAT,!1,0,0)),e.attrPosition=o,e.isInstanced&&n.vertexAttribDivisor(o,1)}})),v(),n.bindVertexArray(null),c=!1,a=[])},v=()=>{const{gl:t}=i;c&&(o||(o=t.createBuffer(),i.bufferCount++),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,o),t.bufferData(t.ELEMENT_ARRAY_BUFFER,r,n))}}const y=t=>0!==t&&!(t&t-1);class S{constructor(t){this._value=t}set(t,e=1){this._value=this._value,this._value=0===e?this._value&0<>=t,1===e}reset(t){this._value=t}get value(){return this._value}}const L="This browser doesn't support multi render targets : WEBGL_draw_buffers",C="This framebuffer has been bind to a different WebGL Rendering Context",N="This texture has been bind to a different WebGL Rendering Context",w=(t,e="")=>{console.error(t,e)};class P{constructor(t,e={},n=0,r=0){if(this._fromWebGLTexture=!1,t instanceof WebGLTexture)this._texture=t,this._fromWebGLTexture=!0;else{if(this._source=t,this._isHtmlElement=(t=>t instanceof HTMLImageElement||t instanceof HTMLCanvasElement||t instanceof HTMLVideoElement)(this._source),!this._isHtmlElement&&t&&!((t,e)=>{let n=!0;return"Array"===t.constructor.name&&(console.error("Please convert texture source to Unit8Array or Float32Array"),n=!1),void 0===e.type&&"Uint8Array"!==t.constructor.name&&console.error("Using none Unit8Array, pleaes specify type in the texture parameters"),n})(t,e))return;this._getDimension(t,n,r),this._params=function(t,e,n){if(!t.minFilter){let r=d.LINEAR;e&&e&&y(e)&&y(n)&&(r=d.NEAREST_MIPMAP_LINEAR),t.minFilter=r}return t.mipmap=void 0===t.mipmap||t.mipmap,t.magFilter=t.magFilter||d.LINEAR,t.wrapS=t.wrapS||d.CLAMP_TO_EDGE,t.wrapT=t.wrapT||d.CLAMP_TO_EDGE,t.internalFormat=t.internalFormat||d.RGBA,t.format=t.format||d.RGBA,t.premultiplyAlpha=void 0!==t.premultiplyAlpha&&t.premultiplyAlpha,t.level=t.level||0,t.type=t.type||d.UNSIGNED_BYTE,t}(e,this._width,this._height),this._checkMipmap()}this._parametersState=new S(0)}bind(t,e){if(void 0!==e&&void 0!==this.GL&&e!==this.GL)return void w(N,this.GL.id);this.GL=e||T;const{gl:n}=this.GL;this._fromWebGLTexture||this.createTexture(this.GL),n.activeTexture(n.TEXTURE0+t),n.bindTexture(n.TEXTURE_2D,this._texture),this._checkParameters()}createTexture(t){void 0===t||void 0===this.GL||t===this.GL?(this.GL=t||T,this._texture||(((t,e)=>{t.webgl2&&(e.type===d.HALF_FLOAT?(e.type=t.gl.HALF_FLOAT,e.internalFormat=d.RGBA16F):e.type===d.FLOAT&&(e.internalFormat=d.RGBA32F))})(this.GL,this._params),this._uploadTexture())):w(N,this.GL.id)}updateTexture(t,e){this.GL=e||T,this._source=t,this._uploadTexture()}generateMipmap(){if(!this._generateMipmap)return;const{gl:t}=this.GL;t.bindTexture(t.TEXTURE_2D,this._texture),t.generateMipmap(t.TEXTURE_2D)}destroy(){const{gl:t}=this.GL;t.deleteTexture(this._texture),this.GL.textureCount--}showProperties(){console.log("Dimension :",this._width,this._height);for(const t in this._params)console.log(t,_[this._params[t]]||this._params[t])}_uploadTexture(){const{gl:t}=this.GL;this._texture||(this._texture=t.createTexture(),this.GL.textureCount++),t.bindTexture(t.TEXTURE_2D,this._texture),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,!0),this._isHtmlElement&&!this.GL.webgl2?t.texImage2D(t.TEXTURE_2D,0,this._params.internalFormat,this._params.format,this._params.type,this._source):t.texImage2D(t.TEXTURE_2D,0,this._params.internalFormat,this._width,this._height,0,this._params.format,this._params.type,this._source),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,this._params.magFilter),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,this._params.minFilter),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,this._params.wrapS),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,this._params.wrapT),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha),this._generateMipmap&&t.generateMipmap(t.TEXTURE_2D)}_checkParameters(){const{gl:t}=this.GL;this._parametersState.value>0&&(this._parametersState.get(0)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,this._params.minFilter):this._parametersState.get(1)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,this._params.magFilter):this._parametersState.get(2)?t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,this._params.wrapS):t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,this._params.wrapT)),this._parametersState.reset(0)}_getDimension(t,e,n){t?(this._width=t.width||t.videoWidth,this._height=t.height||t.videoWidth,this._width=this._width||e,this._height=this._height||n,this._width&&this._height||(this._width=this._height=Math.sqrt(t.length/4))):(this._width=e,this._height=n)}_checkMipmap(){this._generateMipmap=this._params.mipmap,y(this._width)&&y(this._height)||(this._generateMipmap=!1),-1===_[this._params.minFilter].indexOf("MIPMAP")&&(this._generateMipmap=!1)}get texture(){return this._texture}set minFilter(t){this._params.minFilter=t,this._parametersState.set(0,1)}get minFilter(){return this._params.minFilter}set magFilter(t){this._params.magFilter=t,this._parametersState.set(1,1)}get magFilter(){return this._params.magFilter}set wrapS(t){this._params.wrapS=t,this._parametersState.set(2,1)}get wrapS(){return this._params.wrapS}set wrapT(t){this._params.wrapT=t,this._parametersState.set(3,1)}get wrapT(){return this._params.wrapT}get width(){return this._width}get height(){return this._height}get glTexture(){return this._texture}}function I(t,e,n={},r=1){let o,i;const s=t,a=e,u=n,c=r,h=[];let l;this.bind=function(t,e=!0){if(void 0!==t&&void 0!==o&&t!==o)return void w(C,o.id);o=t||T;const{gl:n}=o;c>1&&!o.multiRenderTargetSupport&&w(L,o.id),i||f(),e&&o.viewport(0,0,s,a),n.bindFramebuffer(n.FRAMEBUFFER,i)},this.unbind=function(t=!0){t&&o.viewport(0,0,o.width,o.height);const{gl:e}=o;e.bindFramebuffer(e.FRAMEBUFFER,null),h.forEach((t=>{t.generateMipmap()}))},this.getTexture=function(t=0){return h[t]},this.destroy=function(){const{gl:t}=o;h.forEach((t=>t.destroy())),l.destroy(),t.deleteFramebuffer(i),o.frameBufferCount--};const f=()=>{_();const{gl:t}=o;i=t.createFramebuffer(),t.bindFramebuffer(t.FRAMEBUFFER,i),o.frameBufferCount++;const e=o.webgl2?t.DRAW_FRAMEBUFFER:t.FRAMEBUFFER,n=[];for(let r=0;r{for(let t=0;t{const i=Object.assign({},u);n||(n=t),i.internalFormat=t||d.RGBA,i.format=n||d.RGBA,i.type=e||i.type,Object.assign(i,r);const c=new P(null,i,s,a);return c.createTexture(o),c};this.__defineGetter__("texture",(function(){return h[0]})),this.__defineGetter__("depthTexture",(function(){return l})),this.__defineGetter__("width",(function(){return s})),this.__defineGetter__("height",(function(){return a}))}var D=n(160);class O{constructor(){this._mtx=p.create(),this._mtxView=p.create(),this._mtxProj=p.create(),this._near=0,this._far=0,this._lookDir=D.create()}lookAt(t,e,n=[0,1,0]){p.lookAt(this._mtxView,t,e,n)}setFromViewProjection(t,e){p.copy(this._mtxView,t),p.copy(this._mtxProj,e)}setViewMatrix(t){p.copy(this._mtxView,t)}setProjectionMatrix(t){p.copy(this._mtxProj,t)}_updateMatrices(){}get viewMatrix(){return p.mul(this._mtx,this._mtxProj,this._mtxView),this._mtx}get viewMatrix(){return this._mtxView}get view(){return this._mtxView}get projectionMatrix(){return this._mtxProj}get projection(){return this._mtxProj}get position(){const t=p.create();return p.invert(t,this._mtxView),[t[12],t[13],t[14]]}get direction(){const t=x.create();return x.fromMat4(t,this._mtxView),x.transpose(t,t),D.transformMat3(this._lookDir,[0,0,-1],t),D.normalize(this._lookDir,this._lookDir),this._lookDir}set near(t){this._near=t,this._updateMatrices()}get near(){return this._near}set far(t){this._far=t,this._updateMatrices()}get far(){return this._far}}class F extends O{constructor(t,e,n,r,o=.1,i=100){super(),this._left=0,this._right=0,this._top=0,this._bottom=0,this.ortho(t,e,n,r,o,i)}ortho(t,e,n,r,o=.1,i=100){this.left=t,this.right=e,this.top=n,this.bottom=r,p.ortho(this._mtxProj,t,e,r,n,o,i),this._left=t,this._right=e,this._top=n,this._bottom=r,this._near=o,this._far=i}_updateMatrices(){this.ortho(this._left,this._right,this._top,this._bottom,this._near,this._far)}}class U{constructor(t){return this._GL=t||T,this._uniforms={},this._uniformTextures=[],this._fbo,this._clearColor={r:0,g:0,b:0,a:0},this}setClearColor(t=0,e=0,n=0,r=0){return this._clearColor.r=t,this._clearColor.g=e,this._clearColor.b=n,this._clearColor.a=r,this}useProgram(t,e){return this._shader=t instanceof g?t:new g(t,e),this}setMesh(t){return this._mesh=t,this}createMesh(t){return this._mesh=new b(t),this}bufferVertex(t){return this._mesh||(this._mesh=new b),this._mesh.bufferVertex(t),this}bufferTexCoord(t){return this._mesh||(this._mesh=new b),this._mesh.bufferTexCoord(t),this}bufferNormal(t){return this._mesh||(this._mesh=new b),this._mesh.bufferNormal(t),this}bufferIndex(t){return this._mesh||(this._mesh=new b),this._mesh.bufferIndex(t),this}bufferInstance(t,e){return this._mesh?(this._mesh.bufferInstance(t,e),this):(console.warn("Need to create mesh first"),this)}bufferData(t,e){return this._mesh||(this._mesh=new b),this._mesh.bufferData(t,e),this}uniform(t,e,n){const r=t;let o,i;return void 0===n?(i=A(e),o=e):(i=e,o=n),this._uniforms[r]={type:i,value:o},this}uniformTexture(t,e,n){return this.bindTexture(t,e,n)}bindTexture(t,e,n){return void 0!==n?this._uniformTextures[n]={name:t,texture:e}:this._uniformTextures.push({name:t,texture:e}),this}bindFrameBuffer(t){return this._fbo=t,this}draw(){if(this._shader){if(this._mesh){if(this._fbo){const{r:t,g:e,b:n,a:r}=this._clearColor;this._fbo.bind(this._GL),this._GL.clear(t,e,n,r)}this._shader.bind(this._GL);for(const t in this._uniforms){const e=this._uniforms[t];this._shader.uniform(t,e.type,e.value)}return this._uniformTextures.forEach(((t,e)=>{void 0!==t&&(this._shader.uniform(t.name,"int",e),t.texture.bind(e,this._GL))})),this._GL.draw(this._mesh),this._fbo&&this._fbo.unbind(),this}console.warn("No Mesh assigned for draw call")}else console.warn("No GLShader assigned for draw call")}get shader(){return this._shader}get framebuffer(){return this._fbo}}class B extends U{constructor(t){super(t);const e=this._GL,n=1e3,r=[[-n,0,0],[n,0,0],[0,-n,0],[0,n,0],[0,0,-n],[0,0,n]];this.createMesh(e.LINES).bufferVertex(r).bufferData([[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]],"aColor").bufferIndex([0,1,2,3,4,5]).useProgram("#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec3 aColor;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec3 vColor;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vColor = aColor;\n}","#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec3 vColor;\nuniform float uOpacity;\nout vec4 oColor;\n\nvoid main(void) {\n oColor = vec4(vColor, uOpacity);\n}"),this.opacity=.75}draw(){this.uniform("uOpacity",this.opacity),super.draw()}}const z={plane:(t,e,n,r="xy")=>{const o=[],i=[],s=[],a=[],u=t/n,c=e/n,h=1/n,l=.5*-t,f=.5*-e;let d=0;for(let t=0;t{const o=t/2,i=(e=e||t)/2,s=(n=n||t)/2,a=[],u=[],c=[],h=[];let l=0;return a.push([-o,i,-s]),a.push([o,i,-s]),a.push([o,-i,-s]),a.push([-o,-i,-s]),h.push([0,0,-1]),h.push([0,0,-1]),h.push([0,0,-1]),h.push([0,0,-1]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),l++,a.push([o,i,-s]),a.push([o,i,s]),a.push([o,-i,s]),a.push([o,-i,-s]),h.push([1,0,0]),h.push([1,0,0]),h.push([1,0,0]),h.push([1,0,0]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),l++,a.push([o,i,s]),a.push([-o,i,s]),a.push([-o,-i,s]),a.push([o,-i,s]),h.push([0,0,1]),h.push([0,0,1]),h.push([0,0,1]),h.push([0,0,1]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),l++,a.push([-o,i,s]),a.push([-o,i,-s]),a.push([-o,-i,-s]),a.push([-o,-i,s]),h.push([-1,0,0]),h.push([-1,0,0]),h.push([-1,0,0]),h.push([-1,0,0]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),l++,a.push([o,i,-s]),a.push([-o,i,-s]),a.push([-o,i,s]),a.push([o,i,s]),h.push([0,1,0]),h.push([0,1,0]),h.push([0,1,0]),h.push([0,1,0]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),l++,a.push([o,-i,s]),a.push([-o,-i,s]),a.push([-o,-i,-s]),a.push([o,-i,-s]),h.push([0,-1,0]),h.push([0,-1,0]),h.push([0,-1,0]),h.push([0,-1,0]),u.push([0,0]),u.push([1,0]),u.push([1,1]),u.push([0,1]),c.push(4*l+0),c.push(4*l+1),c.push(4*l+2),c.push(4*l+0),c.push(4*l+2),c.push(4*l+3),r&&c.reverse(),(new b).bufferVertex(a).bufferTexCoord(u).bufferIndex(c).bufferNormal(h)},sphere:(t,e,n=!1)=>{const r=[],o=[],i=[],s=[],a=1/e;let u=0;function c(n,r,o=!1){const i=n/e*Math.PI-.5*Math.PI,s=r/e*Math.PI*2,a=o?1:t,u=[];u[1]=Math.sin(i)*a;const c=Math.cos(i)*a;u[0]=Math.cos(s)*c,u[2]=Math.sin(s)*c;const h=1e4;return u[0]=Math.floor(u[0]*h)/h,u[1]=Math.floor(u[1]*h)/h,u[2]=Math.floor(u[2]*h)/h,u}for(let t=0;t(new b).bufferData([[-1,-1],[-1,4],[4,-1]],"aPosition",2).bufferIndex([2,1,0])},G="#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform vec3 uColor;\nuniform float uOpacity;\n\nout vec4 fragColor;\n\nvoid main(void) {\n fragColor = vec4(uColor, uOpacity);\n}",V={simpleColorFrag:G,copyFrag:"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\n\nout vec4 oColor;\n\nvoid main(void) {\n oColor = texture(uMap, vTextureCoord);\n}",bigTriangleVert:"#version 300 es\n\nprecision mediump float;\n#define GLSLIFY 1\nin vec2 aPosition;\nout vec2 vTextureCoord;\n\nvoid main(void) {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n vTextureCoord = aPosition * .5 + .5;\n}",generalVert:"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nuniform vec3 uTranslate;\nuniform vec3 uScale;\nuniform vec3 uRotation;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, s, -s, c);\n\treturn m * v;\n}\n\nvoid main(void) {\n vec3 pos = aVertexPosition * uScale;\n pos.yz = rotate(pos.yz, uRotation.x);\n pos.xz = rotate(pos.xz, uRotation.y);\n pos.xy = rotate(pos.xy, uRotation.z);\n pos += uTranslate;\n\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(pos, 1.0);\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n}"};class X extends U{constructor(t){super(t),this.setMesh(z.sphere(1,12)).useProgram(V.generalVert,V.simpleColorFrag).uniform("uRotation",[0,0,0])}draw(t,e=[1,1,1],n=[1,1,1],r=1){this.uniform("uTranslate",t).uniform("uScale",e).uniform("uColor",n).uniform("uOpacity",r),super.draw(0)}}class H extends U{constructor(t){super(t),this.setMesh(z.bigTriangle()).useProgram(V.bigTriangleVert,V.copyFrag)}draw(t){this.bindTexture("texture",t,0),super.draw(0)}}class Y extends U{constructor(t){super(t);const e=this._GL;this.createMesh(e.LINES).bufferVertex([[0,0,0],[1,0,0]]).bufferIndex([0,1]).useProgram("#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nuniform vec3 uPosA;\nuniform vec3 uPosB;\n\nvoid main(void) {\n vec3 pos = mix(uPosA, uPosB, aVertexPosition.x);\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(pos, 1.0);\n}",G),this.color=[1,1,1],this.opacity=.75}draw(t,e,n,r){this.uniform("uPosA",t).uniform("uPosB",e).uniform("uOpacity",r||this.opacity).uniform("uColor",n||this.color),super.draw()}}const{mat4:j,vec4:k}=n(720);class W{constructor(t){const e=t||T;this._dLine=new Y(e),this._dBall=new X(e),this.mtx=j.create(),this.color=[1,1,1],this.opacity=.75,this._points=[[1,1,-1,1],[-1,1,-1,1],[1,-1,-1,1],[-1,-1,-1,1],[1,1,1,1],[-1,1,1,1],[1,-1,1,1],[-1,-1,1,1]],this._lines=[[0,1],[1,3],[3,2],[2,0],[4,5],[5,7],[7,6],[6,4],[0,4],[1,5],[2,6],[3,7]]}draw(t,e,n){const r=e||this.color,o=n||this.opacity;j.identity(this.mtx,this.mtx),j.mul(this.mtx,t.projection,t.view),j.invert(this.mtx,this.mtx);const i=this._points.map((t=>{const e=k.clone(t);return k.transformMat4(e,e,this.mtx),e[0]/=e[3],e[1]/=e[3],e[2]/=e[3],[e[0],e[1],e[2]]})),s=.02;i.forEach((t=>{this._dBall.draw(t,[s,s,s],r,o)})),this._lines.forEach((t=>{this._dLine.draw(i[t[0]],i[t[1]],r,o)}))}}class q{constructor(t,e,n,r={},o=1){this._fbos=[];for(let i=0;ithis._update()))}_update(){this._checkLimit(),this._value+=(this._targetValue-this._value)*this.easing,Math.abs(this._targetValue-this._value)<1e-4&&(this._value=this._targetValue)}setTo(t){this._targetValue=this._value=t}add(t){this._targetValue+=t}limit(t,e){t>e?this.limit(e,t):(this._min=t,this._max=e,this._checkLimit())}_checkLimit(){void 0!==this._min&&this._targetValuethis._max&&(this._targetValue=this._max)}destroy(){K.Z.removeEF(this._efIndex)}set value(t){this._targetValue=t}get value(){return this._value}get targetValue(){return this._targetValue}}const Q=function(t,e){const n=e||{};return t.touches?(n.x=t.touches[0].pageX,n.y=t.touches[0].pageY):(n.x=t.clientX,n.y=t.clientY),n};class J{#t=!1;#e=!1;#n=!1;#r=!1;#o;#i={};#s={};#a=p.create();#u=p.create();#c=p.create();#h=p.create();#l=D.create();#f=D.create();#d=D.fromValues(0,1,0);radius=new $(0);rx=new $(0);ry=new $(0);#_=0;#v=0;constructor(t,e=5,n=window){this.#o=t,this.radius.setTo(e),this.#f=[0,0,this.radius],this.rx.limit(-Math.PI/2+.01,Math.PI/2-.01),n.addEventListener("mousewheel",this._onWheel),n.addEventListener("DOMMouseScroll",this._onWheel),n.addEventListener("mousedown",this._onDown),n.addEventListener("mousemove",this._onMove),window.addEventListener("mouseup",this._onUp),n.addEventListener("touchstart",this._onDown),n.addEventListener("touchmove",this._onMove),window.addEventListener("touchend",this._onUp),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.update(),K.Z.addEF(this._loop)}lock(t=!0){this.#t=t,this.#e=t,this.#r=!1}lockZoom(t=!0){this.#e=t}lockRotation(t=!0){this.#t=t}update(){D.set(this.#f,0,0,this.radius.value),D.rotateX(this.#f,this.#f,[0,0,0],this.rx.value),D.rotateY(this.#f,this.#f,[0,0,0],this.ry.value),p.lookAt(this.#a,this.#f,this.#l,this.#d),p.invert(this.#u,this.#a),p.mul(this.#a,this.#a,this.#h),p.mul(this.#a,this.#a,this.#c),this.#o?.setViewMatrix(this.#a)}_onDown=t=>{this.#t||(this.#r=!0,Q(t,this.#i),Q(t,this.#s),this.#_=this.rx.targetValue,this.#v=this.ry.targetValue,p.identity(this.#c))};_onMove=t=>{if(this.#t)return;if(!this.#r)return;if(Q(t,this.#i),t.shiftKey){const t=[this.#i.x-this.#s.x,-(this.#i.y-this.#s.y),0];return D.transformMat4(t,t,this.#u),D.scale(t,t,.01),p.identity(this.#c,this.#c),void p.translate(this.#c,this.#c,t)}const e=this.#i.x-this.#s.x;this.ry.value=.01*-e+this.#v;const n=this.#i.y-this.#s.y;this.rx.value=.01*-n+this.#_};_onUp=()=>{this.#r=!1,this.#n&&(p.mul(this.#h,this.#h,this.#c),p.identity(this.#c))};_onWheel=t=>{if(this.#e)return;const e=t.wheelDelta,n=t.detail;let r=0;r=n?e?e/n/40*n>0?1:-1:-n/3:e/120,this.radius.add(2*-r),this.radius.targetValue<0&&(this.radius.value=1e-4)};_onKeyDown=t=>{t.code.indexOf("Shift")>-1&&(this.#n=!0)};_onKeyUp=t=>{"Shift"===t.key&&(p.mul(this.#h,this.#h,this.#c),p.identity(this.#c)),this.#n=!1};_loop=()=>{this.update()}}function tt(t,e){this.origin=t,this.direction=e;const n=D.create(),r=D.create(),o=D.create(),i=D.create(),s=D.create(),a=D.create(),u=D.create(),c=D.create();this.at=function(t){return D.copy(i,this.direction),D.scale(i,i,t),D.add(i,i,this.origin),i},this.lookAt=function(t){D.sub(this.direction,t,this.origin),D.normalize(this.origin,this.origin)},this.closestPointToPoint=function(t){const e=D.create();D.sub(t,this.origin);const n=D.dot(e,this.direction);return n<0?D.clone(this.origin):(D.copy(e,this.direction),D.scale(e,e,n),D.add(e,e,this.origin),e)},this.distanceToPoint=function(t){return Math.sqrt(this.distanceSqToPoint(t))},this.distanceSqToPoint=function(t){const e=D.create();D.sub(e,t,this.origin);const n=D.dot(e,this.direction);return n<0?D.squaredDistance(this.origin,t):(D.copy(e,this.direction),D.scale(e,e,n),D.add(e,e,this.origin),D.squaredDistance(e,t))},this.intersectsSphere=function(t,e){return this.distanceToPoint(t)<=e},this.intersectSphere=function(t,e){const n=D.create();D.sub(n,t,this.origin);const r=D.dot(n,this.direction),o=D.dot(n,n)-r*r,i=e*e;if(o>i)return null;const s=Math.sqrt(i-o),a=r-s,u=r+s;return a<0&&u<0?null:a<0?this.at(u):this.at(a)},this.intersectTriangle=function(t,e,i,h=!0){D.copy(n,t),D.copy(r,e),D.copy(o,i),D.sub(s,r,n),D.sub(a,o,n),D.cross(u,s,a);let l,f=D.dot(this.direction,u);if(f>0){if(h)return null;l=1}else{if(!(f<0))return null;l=-1,f=-f}D.sub(c,this.origin,n),D.cross(a,c,a);const d=l*D.dot(this.direction,a);if(d<0)return null;D.cross(s,s,c);const _=l*D.dot(this.direction,s);if(_<0)return null;if(d+_>f)return null;const v=-l*D.dot(c,u);return v<0?null:this.at(v/f)}}class et extends(o()){constructor(t,e,n,r=!1,o=window){super(),this._mesh=t,this._mesh.generateFaces(),this._camera=e,this.faceVertices=t.faces.map((t=>t.vertices)),this.clickTolerance=8,this._ray=new tt([0,0,0],[0,0,-1]),this._hit=D.fromValues(-999,-999,-999),this._lastPos,this._firstPos,this.modelMatrix=p.create(),this.resolution=n||[window.innerWidth,window.innerHeight],this._listenerTarget=o,this._skippingMove=r,this._onMoveBind=t=>this._onMove(t),this._onDownBind=t=>this._onDown(t),this._onUpBind=()=>this._onUp(),this.connect()}connect(){this._listenerTarget.addEventListener("mousedown",this._onDownBind),this._listenerTarget.addEventListener("mousemove",this._onMoveBind),this._listenerTarget.addEventListener("mouseup",this._onUpBind)}disconnect(){this._listenerTarget.removeEventListener("mousedown",this._onDownBind),this._listenerTarget.removeEventListener("mousemove",this._onMoveBind),this._listenerTarget.removeEventListener("mouseup",this._onUpBind)}_checkHit(t="onHit"){const e=this._camera;if(!e)return;this.resolution=[window.innerWidth,window.innerHeight];const n=this._lastPos.x/this.resolution[0]*2-1,r=-this._lastPos.y/this.resolution[1]*2+1;let o;e.generateRay([n,r,0],this._ray);const i=D.create(),s=D.create(),a=D.create();let u=0;const c=(t,e)=>{D.transformMat4(e,t,this.modelMatrix)};for(let t=0;tthis.resize())),this._efIndex=K.Z.addEF((()=>this._loop()))}stop(){this._isRunning=!1}resume(){this._isRunning=!0}_init(){}_initTextures(){}_initViews(){}update(){}render(){}_loop(){this._isRunning&&(this.update(),this._GL.viewport(0,0,this._GL.width,this._GL.height),this._GL.setMatrices(this.camera),this.render())}resize(){this._GL.setSize(window.innerWidth,window.innerHeight),this.camera.setAspectRatio(this._GL.aspectRatio)}}const ot=t=>{const e=t.split("\n"),n=[],r=[],o=[],i=[],s=[],a=[],u=[];let c,h=0;const l=/v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,f=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,d=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,_=/f( +-?\d+)( +-?\d+)( +-?\d+)( +-?\d+)?/,v=/f( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))?/,p=/f( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))?/,x=/f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/;function m(t){const e=parseInt(t);return 3*(e>=0?e-1:e+i.length/3)}function E(t){const e=parseInt(t);return 3*(e>=0?e-1:e+s.length/3)}function T(t){const e=parseInt(t);return 2*(e>=0?e-1:e+a.length/2)}function M(t,e,r){n.push([i[t],i[t+1],i[t+2]]),n.push([i[e],i[e+1],i[e+2]]),n.push([i[r],i[r+1],i[r+2]]),u.push(3*h+0),u.push(3*h+1),u.push(3*h+2),h++}function R(t,e,n){r.push([a[t],a[t+1]]),r.push([a[e],a[e+1]]),r.push([a[n],a[n+1]])}function A(t,e,n){o.push([s[t],s[t+1],s[t+2]]),o.push([s[e],s[e+1],s[e+2]]),o.push([s[n],s[n+1],s[n+2]])}function g(t,e,n,r,o,i,s,a,u,c,h,l){let f,d=m(t),_=m(e),v=m(n);void 0===r?M(d,_,v):(f=m(r),M(d,_,f),M(_,v,f)),void 0!==o&&(d=T(o),_=T(i),v=T(s),void 0===r?R(d,_,v):(f=T(a),R(d,_,f),R(_,v,f))),void 0!==u&&(d=E(u),_=E(c),v=E(h),void 0===r?A(d,_,v):(f=E(l),A(d,_,f),A(_,v,f)))}for(let t=0;t{const e=t.normals.length>0,n=t.coords.length>0;let r;if(t.positions.length>65535){const o=[];let i=0;const s={};for(s.positions=t.positions.concat(),s.coords=t.coords.concat(),s.indices=t.indices.concat(),s.normals=t.normals.concat();t.indices.length>0;){const a=Math.min(65535,t.positions.length),u=t.indices.splice(0,a),c=[],h=[],l=[];let f,d=0;for(let t=0;td&&(d=u[t]),f=u[t],c.push(s.positions[f]),n&&h.push(s.coords[f]),e&&l.push(s.normals[f]),u[t]-=i;i=d+1,r=new b,r.bufferVertex(c),n&&r.bufferTexCoord(h),r.bufferIndex(u),e&&r.bufferNormal(l),o.push(r)}return o}return r=new b,r.bufferVertex(t.positions),n&&r.bufferTexCoord(t.coords),r.bufferIndex(t.indices),e&&r.bufferNormal(t.normals),r};n(643)},643:()=>{Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function t(){var e=isNaN(arguments[0])?1:Number(arguments[0]);return e?Array.prototype.reduce.call(this,(function(n,r){return Array.isArray(r)?n.push.apply(n,t.call(r,e-1)):n.push(r),n}),[]):Array.prototype.slice.call(this)},writable:!0})},447:t=>{t.exports={TEXTURE_SIZE:128,TEXTURE_DOWNSAMPLE:2,DENSITY_DISSIPATION:.994,VELOCITY_DISSIPATION:.996,PRESSURE_DISSIPATION:.996,PRESSURE_ITERATIONS:20}},841:t=>{t.exports="precision highp float;\nvarying vec2 vTextureCoord;\nuniform sampler2D textureBase;\nuniform sampler2D textureAdd;\nuniform float uStrength;\n\nvoid main(void) {\n vec3 base = texture2D(textureBase, vTextureCoord).xyz;\n vec3 add = texture2D(textureAdd, vTextureCoord).xyz;\n gl_FragColor = vec4(base + add * uStrength, 1.0);\n}"},333:t=>{t.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform float uTimestep;\nuniform float uDissipation;\nuniform vec2 uTexelSize; // 1 / grid scale \nuniform sampler2D textureVel; // input textureVel\nuniform sampler2D textureMap; // quantity to advect\n\nvoid main() {\n\tvec2 pos = vTextureCoord - uTimestep * uTexelSize * texture2D(textureVel, vTextureCoord).xy;\n\tgl_FragColor = uDissipation * texture2D(textureMap, pos);\n}"},110:t=>{t.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D texturePressure;\nuniform float uDissipation;\n\nvoid main() {\n gl_FragColor = uDissipation * texture2D(texturePressure, vTextureCoord);\n}"},125:t=>{t.exports="\n\nvec3 mod289(vec3 x) {\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\t}\n\nvec4 mod289(vec4 x) {\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\t}\n\nvec4 permute(vec4 x) {\treturn mod289(((x*34.0)+1.0)*x);\t}\n\nvec4 taylorInvSqrt(vec4 r) {\treturn 1.79284291400159 - 0.85373472095314 * r;}\n\nfloat snoise(vec3 v) { \n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n i = mod289(i); \n vec4 p = permute( permute( permute( \n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) \n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), \n dot(p2,x2), dot(p3,x3) ) );\n}\n\nvec3 snoiseVec3( vec3 x ){\n\n float s = snoise(vec3( x ));\n float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n vec3 c = vec3( s , s1 , s2 );\n return c;\n\n}\n\nvec3 curlNoise( vec3 p ){\n \n const float e = .1;\n vec3 dx = vec3( e , 0.0 , 0.0 );\n vec3 dy = vec3( 0.0 , e , 0.0 );\n vec3 dz = vec3( 0.0 , 0.0 , e );\n\n vec3 p_x0 = snoiseVec3( p - dx );\n vec3 p_x1 = snoiseVec3( p + dx );\n vec3 p_y0 = snoiseVec3( p - dy );\n vec3 p_y1 = snoiseVec3( p + dy );\n vec3 p_z0 = snoiseVec3( p - dz );\n vec3 p_z1 = snoiseVec3( p + dz );\n\n float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n\n const float divisor = 1.0 / ( 2.0 * e );\n return normalize( vec3( x , y , z ) * divisor );\n\n}"},287:t=>{t.exports="\nprecision highp float;\nprecision mediump sampler2D;\n\nvarying vec2 vTextureCoord; // grid coordinates\nuniform vec2 uTexelSize;\nuniform sampler2D textureVel; // vector field\n\nvec2 sampleVelocity(in vec2 uv) {\n vec2 mult = vec2(1.0, 1.0);\n if (uv.x < 0.0 || uv.x > 1.0) { mult.x = -1.0; }\n if (uv.y < 0.0 || uv.y > 1.0) { mult.y = -1.0; }\n return texture2D(textureVel, uv).xy;\n}\n\nvoid main() {\n float L = sampleVelocity(vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n float R = sampleVelocity(vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n float T = sampleVelocity(vTextureCoord + vec2(0.0, uTexelSize.y)).y;\n float B = sampleVelocity(vTextureCoord - vec2(0.0, uTexelSize.y)).y;\n float div = 0.5 * (R - L + T - B);\n gl_FragColor = vec4(div, 0.0, 0.0, 1.0);\n}"},546:t=>{t.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform vec2 uTexelSize;\nuniform sampler2D texturePressure;\nuniform sampler2D textureVel;\n\nvoid main() {\n\tfloat pL = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n\tfloat pR = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n\tfloat pB = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x;\n\tfloat pT = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x;\n\tvec2 v = texture2D(textureVel, vTextureCoord).xy;\n\tgl_FragColor = vec4(v - vec2(pR - pL, pT - pB), 0.0, 1.0);\n}"},639:t=>{t.exports="precision highp float;\nprecision mediump sampler2D;\n\nvarying vec2 vTextureCoord; // grid coordinates \nuniform vec2 uTexelSize;\nuniform sampler2D texturePressure;\nuniform sampler2D textureDivergence;\n\nvoid main() {\n // left, right, bottom, and top texturePressure samples\n float L = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n float R = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n float B = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x;\n float T = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x;\n\n // textureDivergence sample, from center\n float bC = texture2D(textureDivergence, vTextureCoord).x;\n \n // evaluate Jacobi iteration\n gl_FragColor = vec4(0.25 * (L + R + B + T - bC), 0, 0, 1);\n}"},389:(t,e,n)=>{const r=n(125);t.exports=`\n// copy.frag\n\n#define SHADER_NAME SIMPLE_TEXTURE\n\nprecision highp float;\nvarying vec2 vTextureCoord;\nuniform sampler2D texture;\n\nuniform vec2 uCenter;\nuniform vec2 uDir;\nuniform float uTime;\nuniform float uRadius;\nuniform float uStrength;\nuniform float uNoiseStrength;\nuniform float uIsVelocity;\n\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, -s, s, c);\n\treturn m * v;\n}\n\n${r}\n\n#define PI 3.141592653\n\nvoid main(void) {\n\tvec2 center = uCenter;\n\n\tfloat r = 0.15 + sin(cos(uTime) * 4.489538925) * 0.0;\n\tvec2 v = vec2(r, 0.0);\n\tv = rotate(v, uTime);\n\t\n\tvec3 noise = curlNoise(vec3(vTextureCoord * 2.0, uTime)) * uNoiseStrength;\n\n\tvec2 dir = uDir;\n\tdir *= uStrength;\n\tfloat d = distance(vTextureCoord, center);\n\td = smoothstep(uRadius, 0.0, d);\n\t\n\t\n\tvec3 color = uIsVelocity > 0.5 ? vec3(dir, 0.0) : vec3(uStrength);\n\tif(uIsVelocity > .5) {\n\t\tcolor += noise * 0.5;\n\t} else {\n\t\tcolor += noise.rrr * uStrength;\n\t}\n\tcolor *= d;\n\t\n\tvec3 base = texture2D(texture, vTextureCoord).xyz;\n\t\n\tgl_FragColor = vec4(color + base, 1.0);\n}\n`},297:()=>{let t="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";var e="oo"+Array(49).fill(0).map((e=>t[Math.random()*t.length|0])).join("");let n=e.slice(2),r=new RegExp(".{"+(e.length/4|0)+"}","g"),o=n.match(r).map((e=>{return(n=e).split("").reduce(((e,r,o)=>e+t.indexOf(r)*Math.pow(t.length,n.length-o-1)),0);var n}));window.fxhash=e,window.fxrand=((t,e,n,r)=>()=>{var o=((t|=0)+(e|=0)|0)+(r|=0)|0;return r=r+1|0,t=e^e>>>9,e=(n|=0)+(n<<3)|0,n=(n=n<<21|n>>>11)+o|0,(o>>>0)/4294967296})(...o)},619:(t,e,n)=>{"use strict";n.d(e,{Ag:()=>s,jE:()=>_,gO:()=>d,H:()=>a,CD:()=>l,MX:()=>u,B8:()=>c,m4:()=>h,Ak:()=>r,CW:()=>f});const r=(t,e="data",n=!0)=>{var r=n?JSON.stringify(t,null,4):JSON.stringify(t),i=o(r),s=new Blob([i],{type:"application/octet-stream"}),a=URL.createObjectURL(s),u=document.createElement("a");u.setAttribute("href",a),u.setAttribute("download",`${e}.json`);var c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,0,null),u.dispatchEvent(c)},o=t=>{for(var e=[],n=0;n{console.error(t)},u=(t,e)=>void 0===t?fxrand():void 0===e?fxrand()*t:t+(e-t)*fxrand(),c=(t,e,n)=>t.length?c(t[0],t[1],t[2]):void 0===e?`rgb(${t}, ${t}, ${t})`:`rgb(${t}, ${e}, ${n})`,h=(t,e,n,r=1)=>{let o=e,i=n;return void 0===e&&(o=t),void 0===n&&(i=t),`rgb(${t}, ${o}, ${i}, ${r})`},l=(t,e,n)=>t*(1-n)+e*n,f=(t,e,n)=>{var r=Math.max(0,Math.min(1,(n-t)/(e-t)));return r*r*(3-2*r)},d=()=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,_=i.fromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1)}},r={};function o(t){var e=r[t];if(void 0!==e)return e.exports;var i=r[t]={exports:{}};return n[t].call(i.exports,i,i.exports,o),i.exports}o.m=n,o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var n in e)o.o(e,n)&&!o.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},o.f={},o.e=t=>Promise.all(Object.keys(o.f).reduce(((e,n)=>(o.f[n](t,e),e)),[])),o.u=t=>t+".bundle.js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),t={},e="fxhash-boilerplate-webpack:",o.l=(n,r,i,s)=>{if(t[n])t[n].push(r);else{var a,u;if(void 0!==i)for(var c=document.getElementsByTagName("script"),h=0;h{a.onerror=a.onload=null,clearTimeout(d);var o=t[n];if(delete t[n],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach((t=>t(r))),e)return e(r)},d=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),u&&document.head.appendChild(a)}},o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;o.g.importScripts&&(t=o.g.location+"");var e=o.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");n.length&&(t=n[n.length-1].src)}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=t})(),(()=>{var t={179:0};o.f.j=(e,n)=>{var r=o.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var i=new Promise(((n,o)=>r=t[e]=[n,o]));n.push(r[2]=i);var s=o.p+o.u(e),a=new Error;o.l(s,(n=>{if(o.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var i=n&&("load"===n.type?"missing":n.type),s=n&&n.target&&n.target.src;a.message="Loading chunk "+e+" failed.\n("+i+": "+s+")",a.name="ChunkLoadError",a.type=i,a.request=s,r[1](a)}}),"chunk-"+e,e)}};var e=(e,n)=>{var r,i,[s,a,u]=n,c=0;if(s.some((e=>0!==t[e]))){for(r in a)o.o(a,r)&&(o.m[r]=a[r]);u&&u(o)}for(e&&e(n);c{"use strict";o(297);var t=o(896),e=o(619),n=o(247);let r;const i=e=>{r=e.map((({id:e,file:n,type:r})=>{const o=n;let i;switch(r){case"jpg":case"png":i=new t.fy(n);break;case"text":i=(0,t.F7)(n)}return{id:e,source:o,type:r,file:i}})),console.table(r)},s=t=>{const e=r.find((e=>e.id===t));return e?e.file:null};var a=o(160),u=o(437),c=o(975),h=o(51);class l extends t.hG{constructor(){super().setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform float uRatio;\n\nout vec4 oColor;\n\nvoid main(void) {\n vec2 uv = vTextureCoord - .5;\n if(uRatio < 1.0) {\n uv.x *= uRatio;\n } else {\n uv.y /= uRatio;\n }\n uv += .5;\n vec4 color = texture(uMap, uv);\n color.rgb *= .8;\n\n oColor = color;\n}")}draw(){t.GL.disable(t.GL.DEPTH_TEST),this.uniform("uRatio",t.GL.aspectRatio),super.draw(),t.GL.enable(t.GL.DEPTH_TEST)}}class f extends t.hG{constructor(){super();const{numParticles:r}=n.Z,o=[],i=[],s=[],u=[],c=[],h=()=>{const t=2*Math.sqrt((0,e.MX)());return a.random([0,0,0],t)};for(let t=0;t{const{pos:n,normal:r}=((t,e)=>{const n=2*Math.PI/3*e,r=Math.cos(n),o=Math.sin(n);return{pos:[t,.01*o,.01*r],normal:[0,o,r]}})(t,e);s.push(n),u.push(r),a.push([t/i,e/3])},f=i*i;for(let t=0;t 0.5) discard;\n // shadow\n vec4 shadowCoord = vShadowCoord / vShadowCoord.w;\n\tfloat s = samplePCF3x3(shadowCoord);\n s = mix(s, 1.0, .6);\n\n float d = diffuse(vNormal, uLight, .5);\n vec3 color = vColor * d * s;\n color = smoothstep(vec3(0.0), vec3(1.0), color) * 1.2;\n\n oColor = vec4(color, 1.0);\n}").uniform("uTotal",f).uniform("uNumSets",i)}}class v extends t.hG{constructor(){super();const e=t.v6.plane(50,50,1,"xz");this.setMesh(e).useProgram("#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat4 uShadowMatrix;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\nout vec4 vShadowCoord;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, s, -s, c);\n\treturn m * v;\n}\n\nmat4 rotationMatrix(vec3 axis, float angle) {\n axis = normalize(axis);\n float s = sin(angle);\n float c = cos(angle);\n float oc = 1.0 - c;\n \n return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,\n oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,\n oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,\n 0.0, 0.0, 0.0, 1.0);\n}\n\nvec3 rotate(vec3 v, vec3 axis, float angle) {\n\tmat4 m = rotationMatrix(axis, angle);\n\treturn (m * vec4(v, 1.0)).xyz;\n}\n\nvoid main(void) {\n vec3 pos = aVertexPosition;\n pos.y -= 4.0;\n\n vec4 wsPos = uModelMatrix * vec4(pos, 1.0);\n gl_Position = uProjectionMatrix * uViewMatrix * wsPos;\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n\n vShadowCoord = uShadowMatrix * wsPos;\n}","#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nin vec4 vShadowCoord;\n\nuniform sampler2D uMap;\nuniform sampler2D uDepthMap;\nout vec4 oColor;\n\nfloat samplePCF3x3( vec4 sc )\n{\n const int s = 2;\n float shadow = 0.0;\n\n float bias = 0.005;\n float threshold = sc.z - bias;\n\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, s) ).r);\n return shadow/9.0;\n}\n\nvoid main(void) {\n // shadow\n vec4 shadowCoord = vShadowCoord / vShadowCoord.w;\n\n\tfloat s = 1.0 -samplePCF3x3(shadowCoord);\n\n if(shadowCoord.x < 0.0 ||shadowCoord.x > 1.0 ||\n shadowCoord.y < 0.0 ||shadowCoord.y > 1.0) {\n s = 0.0;\n }\n\n if(shadowCoord.z > 1.0) {\n s = 0.0;\n }\n\n float d = distance(vTextureCoord, vec2(0.5));\n // s *= smoothstep(0.5, 0.0, d);\n\n oColor = vec4(vec3(0.0), s * 0.1);\n // oColor = vec4(vec3(d), 1.0);\n}")}}class p extends t.hG{constructor(){super().setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\n#define LUT_FLIP_Y 1\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform sampler2D uAOMap;\nuniform sampler2D uNoiseMap;\nuniform sampler2D uLookupMap;\nuniform sampler2D uBlurMap;\nuniform sampler2D uDepthMap;\nuniform float uRatio;\n\nuniform float uFocus; // Focus distance\nuniform float uNear; // Camera near plane\nuniform float uFar; // Camera far plane\n\nout vec4 oColor;\n\nvec4 lookup(in vec4 textureColor, in sampler2D lookupTable, float strength) {\n #ifndef LUT_NO_CLAMP\n textureColor = clamp(textureColor, 0.0, 1.0);\n #endif\n\n mediump float blueColor = textureColor.b * 63.0;\n\n mediump vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n\n mediump vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n\n highp vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n #ifdef LUT_FLIP_Y\n texPos1.y = 1.0-texPos1.y;\n #endif\n\n highp vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n #ifdef LUT_FLIP_Y\n texPos2.y = 1.0-texPos2.y;\n #endif\n\n lowp vec4 newColor1 = texture(lookupTable, texPos1);\n lowp vec4 newColor2 = texture(lookupTable, texPos2);\n\n lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return mix(textureColor, newColor, strength);\n}\n\nvec4 lookup(in vec4 textureColor, in sampler2D lookupTable) {\n return lookup(textureColor, lookupTable, 1.0);\n}\n\nfloat normalizeDepth(float depth) {\n return (2.0 * uNear) / (uFar + uNear - depth * (uFar - uNear));\n}\n\nvoid main(void) {\n float depth = texture(uDepthMap, vTextureCoord).r;\n float normalizedDepth = normalizeDepth(depth);\n vec4 color = texture(uMap, vTextureCoord);\n vec4 blurredColor = texture(uBlurMap, vTextureCoord);\n\n float t = 0.05;\n // Calculate blur amount based on depth difference\n float blurAmount = smoothstep(uFocus - t, uFocus + t, normalizedDepth);\n color = mix(color, blurredColor, blurAmount);\n\n float ao = texture(uAOMap, vTextureCoord).r;\n ao = mix(ao, 1.0, .2);\n \n color.rgb *= ao;\n\n vec2 uv = vTextureCoord - .5;\n if(uRatio > 1.0) {\n uv.y /= uRatio;\n } else {\n uv.x *= uRatio;\n }\n\n float d = length(uv);\n float v = smoothstep(0.3, 0.8, d);\n d = smoothstep(0.2, .8, d);\n\n float n = texture(uNoiseMap, vTextureCoord).r;\n color.rgb *= mix(1.0 - d * 0.4, 1.0, n);\n\n color.rgb = pow(color.rgb, vec3(1.0/1.6));\n\n // dark bottom right\n uv = vTextureCoord;\n uv.y = 1.0 - uv.y;\n d = length(uv);\n d = smoothstep(0.4, 1.2, d);\n color.rgb -= d * 0.4;\n\n oColor = lookup(color, uLookupMap, 0.35);\n oColor.rgb *= mix(1.1, 0.5, v);\n // oColor = vec4(vec3(ao), 1.0);\n // oColor = vec4(vec3(blurAmount), 1.0);\n\n // oColor = mix(oColor, blurredColor, step(vTextureCoord.x, .5));\n}")}}class x extends t.hG{constructor(){super().setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform sampler2D uPosMap;\nuniform sampler2D uFluidMap;\nuniform sampler2D uDensityMap;\nuniform float uTime;\nuniform float uStrength;\nuniform float uBound;\n\nout vec4 oColor;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, s, -s, c);\n\treturn m * v;\n}\n\nmat4 rotationMatrix(vec3 axis, float angle) {\n axis = normalize(axis);\n float s = sin(angle);\n float c = cos(angle);\n float oc = 1.0 - c;\n \n return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,\n oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,\n oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,\n 0.0, 0.0, 0.0, 1.0);\n}\n\nvec3 rotate(vec3 v, vec3 axis, float angle) {\n\tmat4 m = rotationMatrix(axis, angle);\n\treturn (m * vec4(v, 1.0)).xyz;\n}\n\n// curlNoise.glsl\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\n// snoise.glsl\nvec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v){\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n \n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n \n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n \n vec3 x1 = x0 - i1 + 1.0 * C.xxx;\n vec3 x2 = x0 - i2 + 2.0 * C.xxx;\n vec3 x3 = x0 - 1. + 3.0 * C.xxx;\n \n i = mod(i, 289.0 );\n vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n float n_ = 1.0/7.0;\n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z *ns.z);\n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ );\n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) );\n}\n\nfloat snoise(float x, float y, float z){\n return snoise(vec3(x, y, z));\n}\n\nvec3 snoiseVec3( vec3 x ){\n\n\tfloat s = snoise(vec3( x ));\n\tfloat s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n\tfloat s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n\tvec3 c = vec3( s , s1 , s2 );\n\treturn c;\n\n}\n\nvec3 curlNoise( vec3 p ){\n\t\n\tconst float e = .1;\n\tvec3 dx = vec3( e , 0.0 , 0.0 );\n\tvec3 dy = vec3( 0.0 , e , 0.0 );\n\tvec3 dz = vec3( 0.0 , 0.0 , e );\n\n\tvec3 p_x0 = snoiseVec3( p - dx );\n\tvec3 p_x1 = snoiseVec3( p + dx );\n\tvec3 p_y0 = snoiseVec3( p - dy );\n\tvec3 p_y1 = snoiseVec3( p + dy );\n\tvec3 p_z0 = snoiseVec3( p - dz );\n\tvec3 p_z1 = snoiseVec3( p + dz );\n\n\tfloat x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n\tfloat y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n\tfloat z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n\n\tconst float divisor = 1.0 / ( 2.0 * e );\n\treturn normalize( vec3( x , y , z ) * divisor );\n\n}\n\nvec2 _normalize(vec2 v) {\n if (length(v) > 0.0) {\n return normalize(v);\n } else {\n return vec2(0.0);\n }\n}\n\n#define PI 3.1415926535897932384626433832795\n\nvoid main(void) {\n vec3 pos = texture(uPosMap, vTextureCoord).xyz;\n vec3 noise = curlNoise(pos * 0.5 + uTime * 0.15);\n pos += noise * 0.002;\n\n vec2 uv = pos.xy / uBound * .5 + .5;\n vec2 vel = texture(uFluidMap, uv).xy;\n float density = texture(uDensityMap, uv).x;\n density = smoothstep(0.0, 1.0, density);\n density = mix(0.25, 1.0, density);\n\n float dz = abs(pos.z - 2.0);\n dz = smoothstep(3.0, 0.0, dz);\n\n pos.xy += vel * 0.0002 * density * dz * uStrength;\n\n float d = length(pos);\n float maxRadius = 8.0;\n if(d > maxRadius) {\n pos = normalize(pos) * maxRadius;\n }\n\n oColor = vec4(pos, 1.0);\n}").setClearColor(0,0,0,0)}}class m extends t.hG{constructor(){super().setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform sampler2D uMap;\nuniform vec2 uPos;\nuniform vec2 uDir;\nuniform float uStrength;\n\nout vec4 oColor;\n\nvoid main(void) {\n vec3 color = texture(uMap, vTextureCoord).rgb;\n\n float d = distance(vTextureCoord, uPos);\n float radius = uStrength * 0.5;\n float t = smoothstep(radius, 0.0, d);\n\n float f = smoothstep(0.0, 1.0, uStrength);\n color.rg += uDir * t * f * 1.5;\n\n color *= .99;\n\n oColor = vec4(color, 1.0);\n}").setClearColor(0,0,0,1)}}let E,T,M,R,A,g,b;var y=o(187),S=o.n(y);String.prototype.replaceAll=function(t,e){return this.replace(new RegExp(t,"g"),e)},window.addEventListener("keydown",(t=>{if(83===t.keyCode&&(t.metaKey||t.ctrlKey)){t.preventDefault();const e=(()=>{const t=new Date;return`${t.getFullYear()}.${t.getMonth()+1}.${t.getDate()}-${t.getHours()}.${t.getMinutes()}.${t.getSeconds()}`})();((t,e)=>{var n=document.createElement("a"),r=(t=>{for(var e=t.split(","),n=e[0].match(/:(.*?);/)[1],r=atob(e[1]),o=r.length,i=new Uint8Array(o);o--;)i[o]=r.charCodeAt(o);return new Blob([i],{type:n})})(t.toDataURL({format:"png",multiplier:4})),o=URL.createObjectURL(r);n.download=`${e}.png`,n.href=o,n.click()})(document.querySelector("#main-canvas"),e)}}));const L=640,C=[0],N="poseFound",w="poseLost";class P extends(S()){constructor(){super();const{canvas:t,ctx:e,width:n,height:r}=((t,e)=>{const n=document.createElement("canvas");n.width=t,n.height=e;const r=n.getContext("2d");return{canvas:n,ctx:r,width:t,height:e}})(L,480);this.canvas=t,this.ctx=e,document.body.appendChild(t),t.id="pose-canvas",console.log(n,r),t.style.cssText=`\n position: absolute;\n right: 0;\n bottom: 0;\n width:${n/2}px;\n height:${r/2}px;\n z-index: 999;\n `,this.init()}async init(){await this._setupCamera(),this.detector=await poseDetection.createDetector(poseDetection.SupportedModels.MoveNet),this.checkPose()}_setupCamera(){return new Promise(((t,e)=>{navigator.mediaDevices&&navigator.mediaDevices.getUserMedia||e(new Error("no camera"));const n=document.createElement("video");document.body.appendChild(n),n.className="webcam",n.id="video",n.setAttribute("playsinline",""),n.width=L,n.height=480;const r=e=>{this.video=n,n.addEventListener("loadeddata",(()=>{t(n)})),n.srcObject=e,n.play(),console.log("Stream fetched :",n.width,n.height,n.videoWidth,n.videoHeight)};let o="";navigator.mediaDevices.enumerateDevices().then((function(t){const e=t.filter((t=>"videoinput"===t.kind));if(console.log("Webcams found : ",e.length),console.table(e),1===e.length)o=e[0].deviceId;else{const t=e.filter((t=>t.label.indexOf("C920")>-1))[0];o=t?t.deviceId:e[0].deviceId}window.navigator.mediaDevices.getUserMedia({video:{width:640,height:480,frameRate:30,deviceId:o}}).then(r).catch((function(){console.error("No camera available.")}))})).catch((function(t){console.log(t.name+": "+t.message)}))}))}async checkPose(){const t=await this.detector.estimatePoses(this.video);if(t.length>0){const e=C.map((e=>{const{x:n,y:r,score:o}=t[0].keypoints[e];return{pos:[(L-n)/L,1-r/480],score:o}}));this.emit(N,e),this.debugPose(t[0])}else this.emit(w);requestAnimationFrame((()=>this.checkPose()))}debugPose({keypoints:t}){const{ctx:n,canvas:r}=this,{width:o,height:i}=r;n.clearRect(0,0,o,i),n.fillStyle=(0,e.m4)(0,0,0,.25),t.forEach((({x:t,y:r,score:i},s)=>{if(i>.5){const i=255;n.fillStyle=C.indexOf(s)>-1?(0,e.B8)(200,10,0):(0,e.m4)(i,i,i,.5),((t,e,r=5)=>{n.beginPath(),n.arc(t,e,r,0,2*Math.PI),n.fill()})(o-t,r,C.indexOf(s)>-1?8:4)}}))}}var I=o(333),D=o.n(I),O=o(287),F=o.n(O),U=o(110),B=o.n(U),z=o(639),G=o.n(z),V=o(546),X=o.n(V),H=o(389),Y=o.n(H),j=o(841),k=o.n(j);const W=o(447);class q extends t.xs{constructor(){super(),this.orbitalControl.radius.value=10,this.orbitalControl.radius.limit(8,11),this.orbitalControl.rx.limit(.2,-1),this.orbitalControl.ry.limit(-1.5,1.5);const{numParticles:r,numSets:o}=n.Z;this._fboPos.bind();for(let e=0;e{999===this._preHit[0]?a.copy(this._preHit,t.hit):a.copy(this._preHit,this._hit),a.copy(this._hit,t.hit);let r=this._hit[0]/6*.5+.5,o=this._hit[1]/6*.5+.5;const i=a.sub([],this._hit,this._preHit),s=[i[0],i[1]],c=u.length(s);let h=(0,e.CW)(0,.3,c);u.normalize(s,s);let l=(0,e.CD)(1,3,h)*n.Z.extreme?1:2;this._fluid.updateFlow([r,o],s,.2*h,l,1)})),o.on("onUp",(t=>{this._hit=[999,999,999],this._preHit=[999,999,999]})),this._seedTime=(0,e.MX)(1e3),this._lightPosition=[0,10,.1],a.rotateX(this._lightPosition,this._lightPosition,[0,0,0],.3),this._cameraLight=new t.Ag,this._cameraLight.ortho(-15,15,15,-15,2,20),this._cameraLight.lookAt(this._lightPosition,[0,0,0]),this.mtxShadow=c.create(),c.mul(this.mtxShadow,this._cameraLight.projection,this._cameraLight.view),c.mul(this.mtxShadow,e.jE,this.mtxShadow)}_initTextures(){this._texturePaper=function(){const n=new t.uL(2048,2048);return(new t.hG).setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform float uSeed;\nuniform float uRatio;\n\nfloat diffuse(vec3 n, vec3 l) {\n float d = dot(normalize(n), normalize(l));\n return max(d, 0.0);\n}\n\nfloat diffuse(vec3 n, vec3 l, float t) {\n float d = dot(normalize(n), normalize(l));\n return mix(1.0, max(d, 0.0), t);\n}\n\n// snoise.glsl\nvec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v){\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n \n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n \n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n \n vec3 x1 = x0 - i1 + 1.0 * C.xxx;\n vec3 x2 = x0 - i2 + 2.0 * C.xxx;\n vec3 x3 = x0 - 1. + 3.0 * C.xxx;\n \n i = mod(i, 289.0 );\n vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n float n_ = 1.0/7.0;\n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z *ns.z);\n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ );\n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) );\n}\n\nfloat snoise(float x, float y, float z){\n return snoise(vec3(x, y, z));\n}\n\n#define NUM_OCTAVES 5\n\nfloat mod289(float x){return x - floor(x * (1.0 / 289.0)) * 289.0;}\nvec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}\nvec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}\n\nfloat noise(vec3 p){\n vec3 a = floor(p);\n vec3 d = p - a;\n d = d * d * (3.0 - 2.0 * d);\n\n vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);\n vec4 k1 = perm(b.xyxy);\n vec4 k2 = perm(k1.xyxy + b.zzww);\n\n vec4 c = k2 + a.zzzz;\n vec4 k3 = perm(c);\n vec4 k4 = perm(c + 1.0);\n\n vec4 o1 = fract(k3 * (1.0 / 41.0));\n vec4 o2 = fract(k4 * (1.0 / 41.0));\n\n vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);\n vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);\n\n return o4.y * d.y + o4.x * (1.0 - d.y);\n}\n\nfloat fbm(vec3 x) {\n\tfloat v = 0.0;\n\tfloat a = 0.5;\n\tvec3 shift = vec3(100);\n\tfor (int i = 0; i < NUM_OCTAVES; ++i) {\n\t\tv += a * noise(x);\n\t\tx = x * 2.0 + shift;\n\t\ta *= 0.5;\n\t}\n\treturn v;\n}\n\nout vec4 oColor;\n\nfloat getHeight(vec2 uv) {\n float hScale = 2.0;\n vec3 posNoise = vec3(uv, uSeed);\n\n float t = 1.0;\n float base = smoothstep(-t, t, snoise(posNoise.xzy));\n\n float noiseScale = 4.0;\n t = 0.2;\n\n float nBase = smoothstep(t, 1.0-t, fbm(posNoise * noiseScale * mix(1.0, 1.2, base))) * hScale;\n noiseScale = noiseScale * 12.0;\n float nTop = smoothstep(t, 1.0-t, fbm(posNoise * noiseScale * mix(1.0, 1.2, base))) * hScale;\n return mix(nBase, nTop, 0.2);\n}\n\nvoid main(void) {\n vec2 uv = vTextureCoord;\n uv.y /= uRatio;\n\n vec3 offset = vec3(-1.0, 0.0, 1.0) * 0.001;\n \n\n float s11 = getHeight(uv);\n float s01 = getHeight(uv + offset.xy);\n float s21 = getHeight(uv + offset.zy);\n float s10 = getHeight(uv + offset.yx);\n float s12 = getHeight(uv + offset.yz);\n\n vec2 size = vec2(2.0,0.0);\n\n vec3 va = normalize(vec3(size.xy,s21-s01));\n vec3 vb = normalize(vec3(size.yx,s12-s10));\n // vec3 n = normalize(cross(va,vb) + fbm(vec3(uv, uSeed) * 100.0) * 0.1);\n vec3 n = normalize(cross(va,vb));\n\n vec3 light = vec3(0.3, 0.3, 1.0);\n float d = diffuse(n, light);\n d = mix(d, 1.0, .25);\n \n oColor = vec4(vec3(d), 1.0);\n // gl_FragColor = vec4(n, 1.0);\n}").setClearColor(1,1,1,1).bindFrameBuffer(n).uniform("uSeed",(0,e.MX)()).uniform("uRatio",1).draw(),n.texture}(),this._textureLookup=s("lookup"),this._textureLookup.minFilter=t.GL.NEAREST,this._textureLookup.magFilter=t.GL.NEAREST;const{numParticles:r,numSets:o}=n.Z,i={minFilter:t.GL.NEAREST,magFilter:t.GL.NEAREST,type:t.GL.FLOAT};this._fbo=new t.SY(r,r,i,4),this._textureNoise=(R||(R=new t.uL(t.GL.width,t.GL.height,{wrapS:t.GL.MIRRORED_REPEAT,wrapT:t.GL.MIRRORED_REPEAT}),A=(0,e.MX)(1e3),M=(new t.hG).setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 vTextureCoord;\nout vec4 outColor;\n\nuniform vec2 uResolution;\nuniform float uTime;\n\nuint Rand(uint x) {\n x ^= x >> 16;\n x *= 0x7feb352dU;\n x ^= x >> 15;\n x *= 0x846ca68bU;\n x ^= x >> 16;\n return x;\n}\n\nuint HilbertIndex(uvec2 p) {\n uint i = 0u;\n for(uint l = 0x4000u; l > 0u; l >>= 1u) {\n uvec2 r = min(p & l, 1u);\n \n i = (i << 2u) | ((r.x * 3u) ^ r.y); \n p = r.y == 0u ? (0x7FFFu * r.x) ^ p.yx : p;\n }\n return i;\n}\n\nuint ReverseBits(uint x) {\n x = ((x & 0xaaaaaaaau) >> 1) | ((x & 0x55555555u) << 1);\n x = ((x & 0xccccccccu) >> 2) | ((x & 0x33333333u) << 2);\n x = ((x & 0xf0f0f0f0u) >> 4) | ((x & 0x0f0f0f0fu) << 4);\n x = ((x & 0xff00ff00u) >> 8) | ((x & 0x00ff00ffu) << 8);\n return (x >> 16) | (x << 16);\n}\n\n// from: https://psychopath.io/post/2021_01_30_building_a_better_lk_hash\nuint OwenHash(uint x, uint seed) { // seed is any random number\n x ^= x * 0x3d20adeau;\n x += seed;\n x *= (seed >> 16) | 1u;\n x ^= x * 0x05526c56u;\n x ^= x * 0x53a22864u;\n return x;\n}\n\n// adapted from: https://www.shadertoy.com/view/MslGR8\nfloat ReshapeUniformToTriangle(float v) {\n v = v * 2.0 - 1.0;\n v = sign(v) * (1.0 - sqrt(max(0.0, 1.0 - abs(v)))); // [-1, 1], max prevents NaNs\n return v + 0.5; // [-0.5, 1.5]\n}\n\nvoid main() {\n float scale = 10.0;\n uint m = HilbertIndex(uvec2(uResolution * vTextureCoord * scale)); // map pixel coords to hilbert curve index\n m = OwenHash(ReverseBits(m), 0xe7843fbfu); // owen-scramble hilbert index\n m = OwenHash(ReverseBits(m), 0x8d8fb1e0u); // map hilbert index to sobol sequence and owen-scramble\n float mask = float(ReverseBits(m)) / 4294967296.0; // convert to float\n\n outColor = vec4(vec3(mask), 1.0);\n}\n").setClearColor(0,0,0,1).bindFrameBuffer(R).uniform("uTime",A).uniform("uResolution",[t.GL.width,t.GL.height])),M.draw(),A+=.01,R.texture);let a=r*o;this._fboPos=new t.uL(a,a,i),this._fboScrambled=new t.uL(a,a,i),this._fboRender=new t.uL(t.GL.width,t.GL.height),a=2048,this._fboShadow=new t.uL(a,a,{minFilter:t.GL.LINEAR,magFilter:t.GL.LINEAR}),a=1024,this._fboFlow=new t.SY(a,a,{type:t.GL.FLOAT,minFilter:t.GL.LINEAR,magFilter:t.GL.LINEAR}),this._fboFlow.read.bind(),t.GL.clear(0,0,0,1),this._fboFlow.read.unbind()}_initViews(){this._dAxis=new t.nu,this._dCopy=new t.Cg,this._dBall=new t.QA,this._dCamera=new t.oF,this._drawBg=new l,this._drawFloor=new v,this._drawCompose=new p,(new f).bindFrameBuffer(this._fbo.read).draw(),this._drawSim=new d,this._drawRibbon=new _,this._drawScramble=(new x).bindFrameBuffer(this._fboScrambled),this._drawFlowUpdate=new m}_initPoseDetection(){this._poseDetection=new P,this._poseDetection.on(N,this._onPoseFound),this._poseDetection.on(w,(()=>{}))}_onPoseFound=t=>{let e=t[0].pos[0]-.5;this.orbitalControl.ry.value=2*e};update(){this._fluid.update(),this._updateFlow(),this._drawSim.bindFrameBuffer(this._fbo.write).bindTexture("uPosMap",this._fbo.read.getTexture(0),0).bindTexture("uVelMap",this._fbo.read.getTexture(1),1).bindTexture("uExtraMap",this._fbo.read.getTexture(2),2).bindTexture("uDataMap",this._fbo.read.getTexture(3),3).uniform("uTime",h.Z.getElapsedTime()+this._seedTime).uniform("uSpeed",1).uniform("uTouch",[999,999,999]).uniform("uNoiseScale",1).uniform("uCenter",[0,.5,0]).draw(),this._fbo.swap();const{numParticles:e,numSets:r}=n.Z,o=parseInt(r),i=this._index%o,s=Math.floor(this._index/o);this._index++,this._index>=o*o&&(this._index=0),t.GL.disable(t.GL.DEPTH_TEST),this._fboPos.bind(),t.GL.viewport(i*e,s*e,e,e),this._dCopy.draw(this._fbo.read.getTexture(0)),this._fboPos.unbind(),this._drawScramble.bindFrameBuffer(this._fboScrambled).bindTexture("uPosMap",this._fboPos.texture,0).bindTexture("uFluidMap",this._fluid.velocity,1).bindTexture("uDensityMap",this._fluid.density,2).uniform("uTime",h.Z.getElapsedTime()+this._seedTime).uniform("uBound",6).uniform("uStrength",n.Z.extreme?10:1).draw(),this._fboPos.bind(),t.GL.clear(0,0,0,0),this._dCopy.draw(this._fboScrambled.texture),this._fboPos.unbind(),t.GL.enable(t.GL.DEPTH_TEST),this._updateShadowMap(),t.GL.setMatrices(this.camera),this._fboRender.bind(),t.GL.clear(0,0,0,0),this._drawBg.bindTexture("uMap",this._texturePaper,0).draw(),this._drawFloor.bindTexture("uDepthMap",this._fboShadow.depthTexture,0).uniform("uShadowMatrix",this.mtxShadow).draw();const a=.02;this._dBall.draw(this._hit,[a,a,a],[.6,.05,0]),this._renderRibbon(!0),this._fboRender.unbind(),this._textureAO=function(e){if(!T){const n=1;T=new t.uL(e.width,e.height),E=(new t.hG).setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 vTextureCoord;\nout vec4 oColor;\n\nuniform sampler2D uDepthMap;\nuniform vec2 uScreenSize;\nuniform float uRadius;\n\n#define uNear 6.0\n#define uFar 15.0\n\nconst float PI = 3.141592657;\n\nconst int samples = 8; //samples on the first ring (4-8)\nconst int rings = 4; //ring count (3-6)\n\nvec2 rand(in vec2 coord) //generating random noise\n{\n\tfloat noiseX = (fract(sin(dot(coord ,vec2(12.9898,78.233))) * 43758.5453));\n\tfloat noiseY = (fract(sin(dot(coord ,vec2(12.9898,78.233)*2.0)) * 43758.5453));\n\treturn vec2(noiseX,noiseY) * 0.001;\n}\n\nfloat readDepth(in vec2 coord)\n{\n\treturn (2.0 * uNear) / (uFar + uNear - texture(uDepthMap, coord ).x * (uFar-uNear)); \n}\n\nfloat compareDepths(in float depth1, in float depth2)\n{\n float aoCap = 1.0;\n float aoMultiplier = 50.0;\n float depthTolerance = 0.000;\n float aorange = 50.0; // units in space the AO effect extends to (this gets divided by the camera far range)\n float maxDepthDifference = 0.05; // Threshold for depth difference\n\n // Calculate depth difference\n float depthDifference = abs(depth1 - depth2);\n\n // Check if the depth difference exceeds the threshold\n // if (depthDifference > maxDepthDifference) {\n // return 0.0; // No AO if the difference is too large\n // }\n\n // Existing depth comparison logic\n float diff = sqrt(clamp(1.0 - (depth1 - depth2) / (aorange / (uFar - uNear)), 0.0, 1.0));\n float ao = min(aoCap, max(0.0, depth1 - depth2 - depthTolerance) * aoMultiplier) * diff;\n\n ao *= smoothstep(maxDepthDifference, maxDepthDifference * 0.5, depthDifference);\n\n return ao;\n}\n\nfloat checkSurroundingDepth(in vec2 coord, float baseDepth, float threshold) {\n float count = 0.0;\n float total = 0.0;\n float range = 0.02; // Range of pixels to check around the current pixel\n\n for (float x = -range; x <= range; x += 0.05) {\n for (float y = -range; y <= range; y += 0.05) {\n float depth = readDepth(coord + vec2(x, y));\n if (abs(depth - baseDepth) > threshold) {\n count += 1.0;\n }\n total += 1.0;\n }\n }\n\n // Return the ratio of nearby different-depth pixels to the total checked pixels\n return count / total;\n}\n\nfloat ssao() {\n float scale = uRadius;\n float textureWidth = uScreenSize.x * scale;\n float textureHeight = uScreenSize.y * scale;\n\n\tfloat depth = readDepth(vTextureCoord);\n\tfloat d;\n\tfloat aspect = textureWidth/textureHeight;\n\tvec2 noise = rand(vTextureCoord * 10.0);\n\n\tfloat w = (1.0 / textureWidth)/clamp(depth,0.05,1.0)+(noise.x*(1.0-noise.x));\n float h = (1.0 / textureHeight)/clamp(depth,0.05,1.0)+(noise.y*(1.0-noise.y));\n \n float pw = 0.0;\n float ph = 0.0;\n\n float ao = 0.0; \n float s = 0.0;\n float fade = 4.0;\n float t = 1.0;\n\n for (int i = 0 ; i < rings; i += 1) {\n \tfade *= 0.25;\n for (int j = 0 ; j < samples*rings; j += 1) {\n \tif (j >= samples*i) break;\n float step = PI*2.0 / (float(samples)*float(i));\n pw = (cos(float(j)*step)*float(i)) * t;\n ph = (sin(float(j)*step)*float(i))*aspect * t;\n d = readDepth( vec2(vTextureCoord.s+pw*w,vTextureCoord.t+ph*h));\n ao += compareDepths(depth,d)*fade; \n s += 1.0*fade;\n }\n }\n\n ao /= s;\n ao = 1.0 - ao;\n float offset = .5;\n ao = offset + (1.0 - offset) * ao;\n ao = pow(ao, 2.0);\n\n\treturn ao;\n}\n\nvoid main() {\n float ao = ssao();\n oColor = vec4(ao, ao, ao, 1.0);\n}\n").setClearColor(0,0,0,1).bindFrameBuffer(T).uniform("uScreenSize",[e.width*n,e.height*n]).uniform("uRadius",.15)}return E.bindTexture("uDepthMap",e,0).draw(),T.texture}(this._fboRender.depthTexture),this._textureBlurredRender=function(e){const{width:n,height:r}=t.GL;if(!g){const e=1;g=new t.SY(n*e,r*e,{minFilter:t.GL.LINEAR,magFilter:t.GL.LINEAR}),b=(new t.hG).setMesh(t.v6.bigTriangle()).useProgram(t.jz.bigTriangleVert,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform vec2 uDirection;\nuniform vec2 uResolution;\n\nout vec4 oColor;\n\nvec4 blur9(sampler2D image, vec2 uv, vec2 resolution, vec2 direction) {\n\tvec4 color = vec4(0.0);\n\tvec2 off1 = vec2(1.3846153846) * direction;\n\tvec2 off2 = vec2(3.2307692308) * direction;\n\tcolor += texture(image, uv) * 0.2270270270;\n\tcolor += texture(image, uv + (off1 / resolution)) * 0.3162162162;\n\tcolor += texture(image, uv - (off1 / resolution)) * 0.3162162162;\n\tcolor += texture(image, uv + (off2 / resolution)) * 0.0702702703;\n\tcolor += texture(image, uv - (off2 / resolution)) * 0.0702702703;\n\treturn color;\n}\n\nvoid main(void) {\n oColor = blur9(uMap, vTextureCoord, uResolution, uDirection);\n}").setClearColor(0,0,0,1)}for(let t=0;t<1;t++){const o=1/Math.pow(1.1,t),i=0===t?e:g.read.texture;b.bindFrameBuffer(g.write).bindTexture("uMap",i,0).uniform("uDirection",[1,0]).uniform("uResolution",[n*o,r*o]).draw(),g.swap(),b.bindFrameBuffer(g.write).bindTexture("uMap",g.read.texture,0).uniform("uDirection",[0,1]).uniform("uResolution",[n*o,r*o]).draw(),g.swap()}return g.read.texture}(this._fboRender.texture)}_updateFlow(){this._drawFlowUpdate.bindFrameBuffer(this._fboFlow.write).bindTexture("uMap",this._fboFlow.read.texture,0).draw(),this._fboFlow.swap()}_updateShadowMap(){this._fboShadow.bind(),t.GL.setMatrices(this._cameraLight),t.GL.clear(0,0,0,0),this._renderRibbon(!1),this._fboShadow.unbind()}_renderRibbon(t=!1){const e=t?this._fboShadow.depthTexture:this._fbo.read.getTexture(0);this._drawRibbon.bindTexture("uPosMap",this._fboScrambled.texture,0).bindTexture("uDepthMap",e,1).uniform("uIndex",this._index).uniform("uLight",this._lightPosition).uniform("uShadowMatrix",this.mtxShadow).uniform("uTime",h.Z.getElapsedTime()).uniform("uTouch",this._hit).draw()}render(){t.GL.clear(.1,.1,.1,1),t.GL.setMatrices(this.camera),t.GL.disable(t.GL.DEPTH_TEST);const{near:e,far:n}=this.camera;let r=(this.orbitalControl.radius.value+3.2-e)/(n-e);this._drawCompose.bindTexture("uMap",this._fboRender.texture,0).bindTexture("uAOMap",this._textureAO,1).bindTexture("uNoiseMap",this._textureNoise,2).bindTexture("uLookupMap",this._textureLookup,3).bindTexture("uBlurMap",this._textureBlurredRender,4).bindTexture("uDepthMap",this._fboRender.depthTexture,5).uniform("uFocus",r).uniform("uRatio",t.GL.aspectRatio).uniform("uNear",e).uniform("uFar",n).draw()}resize(){const{innerWidth:e,innerHeight:n}=window;t.GL.setSize(1.5*e,1.5*n),this.camera?.setAspectRatio?.(t.GL.aspectRatio),this._fboRender=new t.uL(t.GL.width,t.GL.height)}}const Z=q,K=[{id:"lookup",url:"assets/lookup.png",type:"png"}];var $=o(370),Q=o.n($);let J,tt;var et;new Promise(((t,e)=>{const n=document.body.querySelector(".Loading-Bar");console.log("Load Assets",K),K.length>0?(document.body.classList.add("isLoading"),new(Q())({assets:K}).on("error",(t=>{console.log("Error :",t)})).on("progress",(t=>{n&&(n.style.width=100*t+"%")})).on("complete",(e=>{n&&(n.style.width="100%"),i(e),setTimeout((()=>{document.body.classList.remove("isLoading"),t(et)}),500)})).start()):t(et)})).then((function(){o.e(891).then(o.bind(o,891)).then((({default:e})=>{e.init(),(()=>{tt=document.createElement("canvas"),tt.id="main-canvas",document.body.appendChild(tt),t.GL.init(tt,{alpha:!1,preserveDrawingBuffer:!0});const{gl:e}=t.GL;"drawingBufferColorSpace"in e&&(e.drawingBufferColorSpace="display-p3",console.log("Drawing Buffer Color Space:",e.drawingBufferColorSpace)),J=new Z})(),Promise.all([o.e(296),o.e(437)]).then(o.bind(o,824)).then((({default:t})=>{t(J)}))}))}),e.H)})()})(); \ No newline at end of file +(()=>{var e,t,n={523:function(e,t,n){(function(){"use strict";var e;function t(e){var t=0;return function(){return t>>0)+"_",a=0;return function e(r){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new t(n+(r||"")+"_"+a++,r)}})),s("Symbol.iterator",(function(e){if(e)return e;e=Symbol("Symbol.iterator");for(var n="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),s=0;st&&(t=Math.max(0,r+t)),(null==n||n>r)&&(n=r),0>(n=Number(n))&&(n=Math.max(0,r+n)),t=Number(t||0);t(t=t||0)&&(t=Math.max(t+r,0));tn;n++){var r=e.concat(t[n].split(""));I[n]=r;for(var a=0;a>2];o=t[(3&o)<<4|i>>4],i=t[(15&i)<<2|u>>6],u=t[63&u],n[s++]=l+o+i+u}switch(l=0,u=r,e.length-a){case 2:u=t[(15&(l=e[a+1]))<<2]||r;case 1:e=e[a],n[s]=t[e>>2]+t[(3&e)<<4|l>>4]+u+r}return n.join("")}for(t="";10240>4),64!=o&&(t(s<<4&240|o>>2),64!=i&&t(o<<6&192|i))}}(e,(function(e){r[a++]=e})),a!==n?r.subarray(0,a):r}(e);F.test(e)&&(e=e.replace(F,B)),e=atob(e);for(var t=new Uint8Array(e.length),n=0;ne,n=(e=Math.abs(e))>>>0;e=Math.floor((e-n)/4294967296),t&&(t=(n=i(K(n,e))).next().value,e=n.next().value,n=t),j=n>>>0,H=e>>>0}var W,q="function"==typeof BigInt;function K(e,t){return t=~t,e?e=1+~e:t+=1,[e,t]}function X(e,t){this.i=e>>>0,this.h=t>>>0}function Y(e){if(!e)return W||(W=new X(0,0));if(!/^-?\d+$/.test(e))return null;if(16>e.length)G(Number(e));else if(q)e=BigInt(e),j=Number(e&BigInt(4294967295))>>>0,H=Number(e>>BigInt(32)&BigInt(4294967295));else{var t=+("-"===e[0]);H=j=0;for(var n=e.length,r=t,a=(n-t)%6+t;a<=n;r=a,a+=6)r=Number(e.slice(r,a)),H*=1e6,4294967296<=(j=1e6*j+r)&&(H+=j/4294967296|0,j%=4294967296);t&&(e=(t=i(K(j,H))).next().value,t=t.next().value,j=e,H=t)}return new X(j,H)}function Z(e,t){return Error("Invalid wire type: "+e+" (at position "+t+")")}function J(){return Error("Failed to read varint, encoding is invalid.")}function Q(e,t){return Error("Tried to read past the end of the data "+t+" > "+e)}function ee(){throw Error("Invalid UTF8")}function te(e,t){return t=String.fromCharCode.apply(null,t),null==e?t:e+t}var ne,re,ae,se=void 0,oe="undefined"!=typeof TextDecoder,ie="undefined"!=typeof TextEncoder;function ue(e){if(e!==$)throw Error("illegal external caller")}function le(e,t){if(ue(t),this.V=e,null!=e&&0===e.length)throw Error("ByteString should be constructed with non-empty values")}function ce(){return ae||(ae=new le(null,$))}function he(e){ue($);var t=e.V;return null==(t=null==t||O&&null!=t&&t instanceof Uint8Array?t:"string"==typeof t?z(t):null)?t:e.V=t}function pe(e,t){this.i=null,this.m=!1,this.h=this.j=this.l=0,de(this,e,t)}function de(e,t,n){n=void 0===n?{}:n,e.S=void 0!==n.S&&n.S,t&&(t=function(e){if("string"==typeof e)return{buffer:z(e),C:!1};if(Array.isArray(e))return{buffer:new Uint8Array(e),C:!1};if(e.constructor===Uint8Array)return{buffer:e,C:!1};if(e.constructor===ArrayBuffer)return{buffer:new Uint8Array(e),C:!1};if(e.constructor===le)return{buffer:he(e)||U(),C:!0};if(e instanceof Uint8Array)return{buffer:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),C:!1};throw Error("Type not convertible to a Uint8Array, expected a Uint8Array, an ArrayBuffer, a base64 encoded string, a ByteString or an Array of numbers")}(t),e.i=t.buffer,e.m=t.C,e.l=0,e.j=e.i.length,e.h=e.l)}function fe(e,t){if(e.h=t,t>e.j)throw Q(e.j,t)}function me(e){var t=e.i,n=e.h,r=t[n++],a=127&r;if(128&r&&(a|=(127&(r=t[n++]))<<7,128&r&&(a|=(127&(r=t[n++]))<<14,128&r&&(a|=(127&(r=t[n++]))<<21,128&r&&(a|=(r=t[n++])<<28,128&r&&128&t[n++]&&128&t[n++]&&128&t[n++]&&128&t[n++]&&128&t[n++])))))throw J();return fe(e,n),a}function ge(e,t){if(0>t)throw Error("Tried to read a negative byte length: "+t);var n=e.h,r=n+t;if(r>e.j)throw Q(t,e.j-n);return e.h=r,n}pe.prototype.reset=function(){this.h=this.l};var ye=[];function ve(){this.h=[]}function xe(e,t,n){for(;0>>7|n<<25)>>>0,n>>>=7;e.h.push(t)}function be(e,t){for(;127>>=7;e.h.push(t)}function _e(e,t){if(ye.length){var n=ye.pop();de(n,e,t),e=n}else e=new pe(e,t);this.h=e,this.j=this.h.h,this.i=this.l=-1,this.setOptions(t)}function Ee(e){var t=e.h;if(t.h==t.j)return!1;e.j=e.h.h;var n=me(e.h)>>>0;if(t=n>>>3,!(0<=(n&=7)&&5>=n))throw Z(n,e.j);if(1>t)throw Error("Invalid field number: "+t+" (at position "+e.j+")");return e.l=t,e.i=n,!0}function Te(e){switch(e.i){case 0:if(0!=e.i)Te(e);else e:{for(var t=(e=e.h).h,n=t+10,r=e.i;t>>0,fe(e=e.h,e.h+t));break;case 5:fe(e=e.h,e.h+4);break;case 3:for(t=e.l;;){if(!Ee(e))throw Error("Unmatched start-group tag: stream EOF");if(4==e.i){if(e.l!=t)throw Error("Unmatched end-group tag");break}Te(e)}break;default:throw Z(e.i,e.j)}}ve.prototype.length=function(){return this.h.length},ve.prototype.end=function(){var e=this.h;return this.h=[],e},_e.prototype.setOptions=function(e){e=void 0===e?{}:e,this.ca=void 0!==e.ca&&e.ca},_e.prototype.reset=function(){this.h.reset(),this.j=this.h.h,this.i=this.l=-1};var we=[];function Ne(){this.j=[],this.i=0,this.h=new ve}function Se(e,t){0!==t.length&&(e.j.push(t),e.i+=t.length)}var Me="function"==typeof Symbol&&"symbol"==typeof Symbol()?Symbol():void 0;function Ae(e,t){return Me?e[Me]|=t:void 0!==e.A?e.A|=t:(Object.defineProperties(e,{A:{value:t,configurable:!0,writable:!0,enumerable:!1}}),t)}function Re(e,t){Me?e[Me]&&(e[Me]&=~t):void 0!==e.A&&(e.A&=~t)}function Ie(e){var t;return null==(t=Me?e[Me]:e.A)?0:t}function ke(e,t){Me?e[Me]=t:void 0!==e.A?e.A=t:Object.defineProperties(e,{A:{value:t,configurable:!0,writable:!0,enumerable:!1}})}function Ce(e){return Ae(e,1),e}function Oe(e,t){ke(t,-51&(0|e))}function De(e,t){ke(t,-41&(18|e))}var Le={};function Pe(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)&&e.constructor===Object}var Fe,Be,ze=[];function Ue(e){if(2&Ie(e.o))throw Error("Cannot mutate an immutable Message")}function $e(e){var t=e.length;(t=t?e[t-1]:void 0)&&Pe(t)?t.g=1:(t={},e.push((t.g=1,t)))}function Ve(e){var t=e.i+e.G;return e.B||(e.B=e.o[t]={})}function je(e,t){return-1===t?null:t>=e.i?e.B?e.B[t]:void 0:e.o[t+e.G]}function He(e,t,n,r){Ue(e),Ge(e,t,n,r)}function Ge(e,t,n,r){e.j&&(e.j=void 0),t>=e.i||r?Ve(e)[t]=n:(e.o[t+e.G]=n,(e=e.B)&&t in e&&delete e[t])}function We(e,t,n,r){var a=je(e,t);Array.isArray(a)||(a=Fe);var s=Ie(a);if(1&s||Ce(a),r)2&s||Ae(a,2),1&n||Object.freeze(a);else{r=!(2&n);var o=2&s;1&n||!o?r&&16&s&&!o&&Re(a,16):Ge(e,t,a=Ce(Array.prototype.slice.call(a)))}return a}function qe(e,t){var n=je(e,t),r=null==n?n:"number"==typeof n||"NaN"===n||"Infinity"===n||"-Infinity"===n?Number(n):void 0;return null!=r&&r!==n&&Ge(e,t,r),r}function Ke(e,t,n,r,a){e.h||(e.h={});var s=e.h[n],o=We(e,n,3,a);if(!s){var i=o;s=[];var u=!!(16&Ie(e.o));o=!!(2&Ie(i));var l=i;!a&&o&&(i=Array.prototype.slice.call(i));for(var c=o,h=0;ho&&"number"!=typeof e[o]){var i=e[o++];n(t,i)}for(;o>>0)>>31)+1,s=o>>>23&255,o&=8388607,He(t,n,255==s?o?NaN:1/0*e:0==s?e*Math.pow(2,-149)*o:e*Math.pow(2,s-150)*(o+Math.pow(2,23))),!0}),(function(e,t,n){if(null!=(t=qe(t,n))){be(e.h,8*n+5),e=e.h;var r=+t;0===r?0<1/r?j=H=0:(H=0,j=2147483648):isNaN(r)?(H=0,j=2147483647):34028234663852886e22<(r=(n=0>r?-2147483648:0)?-r:r)?(H=0,j=(2139095040|n)>>>0):11754943508222875e-54>r?(r=Math.round(r/Math.pow(2,-149)),H=0,j=(n|r)>>>0):(t=Math.floor(Math.log(r)/Math.LN2),r*=Math.pow(2,-t),16777216<=(r=Math.round(8388608*r))&&++t,H=0,j=(n|t+127<<23|8388607&r)>>>0),n=j,e.h.push(n>>>0&255),e.h.push(n>>>8&255),e.h.push(n>>>16&255),e.h.push(n>>>24&255)}})),Pt=Dt((function(e,t,n){if(0!==e.i)return!1;var r=e.h,a=0,s=e=0,o=r.i,i=r.h;do{var u=o[i++];a|=(127&u)<s&&128&u);for(32>4),s=3;32>s&&128&u;s+=7)e|=(127&(u=o[i++]))<u))throw J();return r=a>>>0,(e=2147483648&(u=e>>>0))&&(u=~u>>>0,0==(r=1+~r>>>0)&&(u=u+1>>>0)),r=4294967296*u+(r>>>0),He(t,n,e?-r:r),!0}),(function(e,t,n){null!=(t=je(t,n))&&("string"==typeof t&&Y(t),null!=t&&(be(e.h,8*n),"number"==typeof t?(e=e.h,G(t),xe(e,j,H)):(n=Y(t),xe(e.h,n.i,n.h))))})),Ft=Dt((function(e,t,n){return 0===e.i&&(He(t,n,me(e.h)),!0)}),(function(e,t,n){if(null!=(t=je(t,n))&&null!=t)if(be(e.h,8*n),e=e.h,0<=(n=t))be(e,n);else{for(t=0;9>t;t++)e.h.push(127&n|128),n>>=7;e.h.push(1)}})),Bt=Dt((function(e,t,n){if(2!==e.i)return!1;var r=me(e.h)>>>0,a=ge(e=e.h,r);if(e=e.i,oe){var s,o=e;(s=ne)||(s=ne=new TextDecoder("utf-8",{fatal:!0})),e=a+r,o=0===a&&e===o.length?o:o.subarray(a,e);try{var i=s.decode(o)}catch(e){if(void 0===se){try{s.decode(new Uint8Array([128]))}catch(e){}try{s.decode(new Uint8Array([97])),se=!0}catch(e){se=!1}}throw!se&&(ne=void 0),e}}else{r=(i=a)+r,a=[];for(var u,l,c=null;i(u=e[i++])?a.push(u):224>u?i>=r?ee():(l=e[i++],194>u||128!=(192&l)?(i--,ee()):a.push((31&u)<<6|63&l)):240>u?i>=r-1?ee():128!=(192&(l=e[i++]))||224===u&&160>l||237===u&&160<=l||128!=(192&(o=e[i++]))?(i--,ee()):a.push((15&u)<<12|(63&l)<<6|63&o):244>=u?i>=r-2?ee():128!=(192&(l=e[i++]))||0!=l-144+(u<<28)>>30||128!=(192&(o=e[i++]))||128!=(192&(s=e[i++]))?(i--,ee()):(u=(7&u)<<18|(63&l)<<12|(63&o)<<6|63&s,u-=65536,a.push(55296+(u>>10&1023),56320+(1023&u))):ee(),8192<=a.length&&(c=te(c,a),a.length=0);i=te(c,a)}return He(t,n,i),!0}),(function(e,t,n){if(null!=(t=je(t,n))){var r=!1;if(r=void 0!==r&&r,ie){if(r&&/(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])/.test(t))throw Error("Found an unpaired surrogate");t=(re||(re=new TextEncoder)).encode(t)}else{for(var a=0,s=new Uint8Array(3*t.length),o=0;oi)s[a++]=i;else{if(2048>i)s[a++]=i>>6|192;else{if(55296<=i&&57343>=i){if(56319>=i&&o=u){i=1024*(i-55296)+u-56320+65536,s[a++]=i>>18|240,s[a++]=i>>12&63|128,s[a++]=i>>6&63|128,s[a++]=63&i|128;continue}o--}if(r)throw Error("Found an unpaired surrogate");i=65533}s[a++]=i>>12|224,s[a++]=i>>6&63|128}s[a++]=63&i|128}}t=a===s.length?s:s.subarray(0,a)}be(e.h,8*n+2),be(e.h,t.length),Se(e,e.h.end()),Se(e,t)}})),zt=Dt((function(e,t,n,r,a){if(2!==e.i)return!1;t=Ze(t,n,r),n=e.h.j,r=me(e.h)>>>0;var s=e.h.h+r,o=s-n;if(0>=o&&(e.h.j=s,a(t,e,void 0,void 0,void 0),o=s-e.h.h),o)throw Error("Message parsing ended unexpectedly. Expected to read "+r+" bytes, instead read "+(r-o)+" bytes, either the data ended unexpectedly or the message misreported its own length");return e.h.h=s,e.h.j=n,!0}),(function(e,t,n,r,a){if(null!=(t=Xe(t,r,n)))for(r=0;r>>=7,o.i++;s.push(i),o.i++}}));function Ut(e){return function(t,n){e:{if(we.length){var r=we.pop();r.setOptions(n),de(r.h,t,n),t=r}else t=new _e(t,n);try{var a=kt(e),s=Ct(new a.P,t,a);break e}finally{(a=t.h).i=null,a.m=!1,a.l=0,a.j=0,a.h=0,a.S=!1,t.l=-1,t.i=-1,100>we.length&&we.push(t)}s=void 0}return s}}function $t(e){return function(){var t=new Ne;Ot(this,t,Nt(e)),Se(t,t.h.end());for(var n=new Uint8Array(t.i),r=t.j,a=r.length,s=0,o=0;o{"use strict";e.exports=function(){try{return!!new Blob}catch(e){return!1}}()},74:(e,t,n)=>{"use strict";var r=n(187).EventEmitter;function a(){r.call(this),this.setMaxListeners(20)}a.prototype=Object.create(r.prototype),a.prototype.constructor=a,a.prototype.off=function(e,t){return t?this.removeListener(e,t):e?this.removeAllListeners(e):this.removeAllListeners()},e.exports=a},622:(e,t,n)=>{"use strict";var r=n(74),a=n(388),s=0;e.exports=function e(t){var n,o={},i=[],u=[],l=0,c=0,h={},p=function(r){return Array.isArray(r)?(r.forEach(p),n):((s=r.assets&&Array.isArray(r.assets)?e(f(r,t)):a(f(r,t))).once("destroy",v),u.push(s),h[s.id]=s,n);var s},d=function(e){return arguments.length?o[e]?o[e]:h[e]:i},f=function(e,t){return"string"==typeof e&&(e={url:e}),void 0===e.isTouchLocked&&(e.isTouchLocked=t.isTouchLocked),void 0===e.blob&&(e.blob=t.blob),void 0===e.basePath&&(e.basePath=t.basePath),e.id=e.id||e.url||String(++s),e.type=e.type||(n=e.url)&&n.split("?")[0].split(".").pop().toLowerCase(),e.crossOrigin=e.crossOrigin||t.crossOrigin,e.webAudioContext=e.webAudioContext||t.webAudioContext,e.log=t.log,e;var n},m=function(e){var t=l+e;n.emit("progress",t/c)},g=function(e,t,r){Array.isArray(e)&&(e={id:t,file:e,type:r}),l++,n.emit("progress",l/c),o[e.id]=e.file,i.push(e),n.emit("childcomplete",e),x()},y=function(e){c--,n.listeners("error").length?n.emit("error",e):console.error(e),x()},v=function(e){h[e]=null,delete h[e],o[e]=null,delete o[e],i.some((function(t,n){if(t.id===e)return i.splice(n,1),!0}))},x=function(){l>=c&&n.emit("complete",i,o,t.id,"group")};return n=Object.create(r.prototype,{_events:{value:{}},id:{get:function(){return t.id}},add:{value:p},start:{value:function(){return c=u.length,u.forEach((function(e){e.on("progress",m).once("complete",g).once("error",y).start()})),u=[],n}},get:{value:d},find:{value:function(e){if(d(e))return d(e);var t=null;return Object.keys(h).some((function(n){return!!(t=h[n].find&&h[n].find(e))})),t}},getLoader:{value:function(e){return h[e]}},loaded:{get:function(){return l>=c}},file:{get:function(){return i}},destroy:{value:function(){for(;u.length;)u.pop().destroy();return n.off("error"),n.off("progress"),n.off("complete"),i=[],o={},t.webAudioContext=null,c=0,l=0,Object.keys(h).forEach((function(e){h[e].destroy()})),h={},n.emit("destroy",n.id),n}}}),t=f(t||{},{basePath:"",blob:!1,touchLocked:!1,crossOrigin:null,webAudioContext:null,log:!1}),Array.isArray(t.assets)&&p(t.assets),n}},370:(e,t,n)=>{"use strict";var r=n(622);r.stats=n(795),e.exports=r},388:(e,t,n)=>{"use strict";var r=n(74),a=n(427),s=n(795);e.exports=function(e){var t,n,o,i,u,l,c=e.id,h=e.basePath||"",p=e.url,d=e.type,f=e.crossOrigin,m=e.isTouchLocked,g=e.blob&&a,y=e.webAudioContext,v=e.log,x=function(e){e&&(l={id:c,file:e,type:d},t.emit("progress",1),t.emit("complete",l,c,d),k())},b=function(e,t){n=t||E,(o=new XMLHttpRequest).open("GET",h+p,!0),o.responseType=e,o.addEventListener("progress",_),o.addEventListener("load",n),o.addEventListener("error",I),o.send()},_=function(e){e.lengthComputable&&t.emit("progress",e.loaded/e.total)},E=function(){T()&&x(o.response)},T=function(){return o&&o.status<400?(s.update(o,i,p,v),!0):(I(o&&o.statusText),!1)},w=function(){o=new Image,f&&(o.crossOrigin="anonymous"),o.addEventListener("error",I,!1),o.addEventListener("load",N,!1),o.src=h+p},N=function(e){window.clearTimeout(u),e||!o.error&&o.readyState?x(o):I()},S=function(){b("blob",(function(){T()&&((o=new Image).addEventListener("error",I,!1),o.addEventListener("load",M,!1),o.src=window.URL.createObjectURL(o.response))}))},M=function(){window.URL.revokeObjectURL(o.src),x(o)},A=function(){b("arraybuffer",(function(){T()&&y.decodeAudioData(o.response,(function(e){o=null,x(e)}),(function(e){I(e)}))}))},R=function(e){o=document.createElement(e),m||(window.clearTimeout(u),u=window.setTimeout(N,2e3),o.addEventListener("canplaythrough",N,!1)),o.addEventListener("error",I,!1),o.preload="auto",o.src=h+p,o.load(),m&&x(o)},I=function(e){window.clearTimeout(u);var n=e;o&&o.tagName&&o.error?n="MediaError: "+["","ABORTED","NETWORK","DECODE","SRC_NOT_SUPPORTED"][o.error.code]+" "+o.src:o&&o.statusText?n=o.statusText:e&&e.message?n=e.message:e&&e.type&&(n=e.type),t.emit("error",'Error loading "'+h+p+'" '+n),C()},k=function(){t.off("error"),t.off("progress"),t.off("complete"),o&&(o.removeEventListener("progress",_),o.removeEventListener("load",n),o.removeEventListener("error",I),o.removeEventListener("load",N),o.removeEventListener("canplaythrough",N),o.removeEventListener("load",M))},C=function(){k(),o&&o.abort&&o.readyState<4&&o.abort(),o=null,y=null,l=null,window.clearTimeout(u),t.emit("destroy",c)};return t=Object.create(r.prototype,{_events:{value:{}},id:{value:e.id},start:{value:function(){switch(i=Date.now(),d){case"json":b("json",(function(){if(T()){var e=o.response;"string"==typeof e&&(e=JSON.parse(e)),x(e)}}));break;case"jpg":case"png":case"gif":case"webp":case"svg":g?S():w();break;case"mp3":case"ogg":case"opus":case"wav":case"m4a":y?A():R("audio");break;case"ogv":case"mp4":case"webm":case"hls":g?b("blob"):R("video");break;case"bin":case"binary":b("arraybuffer");break;case"txt":case"text":b("text");break;default:throw"AssetsLoader ERROR: Unknown type for file with URL: "+h+p+" ("+d+")"}}},loaded:{get:function(){return!!l}},file:{get:function(){return l}},destroy:{value:C}})}},795:e=>{"use strict";e.exports={mbs:0,secs:0,update:function(e,t,n,r){var a,s=e.getAllResponseHeaders();if(s){var o=s.match(/content-length: (\d+)/i);o&&o.length&&(a=o[1])}if(a){var i=(a=parseInt(a,10))/1024/1024,u=(Date.now()-t)/1e3;this.secs+=u,this.mbs+=i,r&&this.log(n,i,u)}else r&&console.warn.call(console,"Can't get Content-Length:",n)},log:function(e,t,n){if(e){var r="File loaded: "+e.substr(e.lastIndexOf("/")+1)+" size:"+t.toFixed(2)+"mb time:"+n.toFixed(2)+"s speed:"+(t/n).toFixed(2)+"mbps";console.log.call(console,r)}var a="Total loaded: "+this.mbs.toFixed(2)+"mb time:"+this.secs.toFixed(2)+"s speed:"+this.getMbps().toFixed(2)+"mbps";console.log.call(console,a)},getMbps:function(){return this.mbs/this.secs}}},187:e=>{"use strict";var t,n="object"==typeof Reflect?Reflect:null,r=n&&"function"==typeof n.apply?n.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};t=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var a=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(n,r){function a(n){e.removeListener(t,s),r(n)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",a),n([].slice.call(arguments))}m(e,t,s,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&m(e,"error",t,{once:!0})}(e,a)}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var o=10;function i(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function u(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function l(e,t,n,r){var a,s,o,l;if(i(n),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),s=e._events),o=s[t]),void 0===o)o=s[t]=n,++e._eventsCount;else if("function"==typeof o?o=s[t]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),(a=u(e))>0&&o.length>a&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,l=c,console&&console.warn&&console.warn(l)}return e}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,n){var r={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},a=c.bind(r);return a.listener=n,r.wrapFn=a,a}function p(e,t,n){var r=e._events;if(void 0===r)return[];var a=r[t];return void 0===a?[]:"function"==typeof a?n?[a.listener||a]:[a]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(o=t[0]),o instanceof Error)throw o;var i=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw i.context=o,i}var u=s[e];if(void 0===u)return!1;if("function"==typeof u)r(u,this,t);else{var l=u.length,c=f(u,l);for(n=0;n=0;s--)if(n[s]===t||n[s].listener===t){o=n[s].listener,a=s;break}if(a<0)return this;0===a?n.shift():function(e,t){for(;t+1=0;r--)this.removeListener(e,t[r]);return this},s.prototype.listeners=function(e){return p(this,e,!0)},s.prototype.rawListeners=function(e){return p(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):d.call(e,t)},s.prototype.listenerCount=d,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},685:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ARRAY_TYPE:()=>a,EPSILON:()=>r,RANDOM:()=>s,equals:()=>l,setMatrixArrayType:()=>o,toRadian:()=>u});var r=1e-6,a="undefined"!=typeof Float32Array?Float32Array:Array,s=Math.random;function o(e){a=e}var i=Math.PI/180;function u(e){return e*i}function l(e,t){return Math.abs(e-t)<=r*Math.max(1,Math.abs(e),Math.abs(t))}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)})},720:(e,t,n)=>{"use strict";n.r(t),n.d(t,{glMatrix:()=>u,mat2:()=>r,mat2d:()=>a,mat3:()=>oe,mat4:()=>ie,quat:()=>o,quat2:()=>i,vec2:()=>An,vec3:()=>ue,vec4:()=>s});var r={};n.r(r),n.d(r,{LDU:()=>S,add:()=>M,adjoint:()=>y,clone:()=>c,copy:()=>h,create:()=>l,determinant:()=>v,equals:()=>I,exactEquals:()=>R,frob:()=>N,fromRotation:()=>E,fromScaling:()=>T,fromValues:()=>d,identity:()=>p,invert:()=>g,mul:()=>O,multiply:()=>x,multiplyScalar:()=>k,multiplyScalarAndAdd:()=>C,rotate:()=>b,scale:()=>_,set:()=>f,str:()=>w,sub:()=>D,subtract:()=>A,transpose:()=>m});var a={};n.r(a),n.d(a,{add:()=>J,clone:()=>P,copy:()=>F,create:()=>L,determinant:()=>V,equals:()=>re,exactEquals:()=>ne,frob:()=>Z,fromRotation:()=>q,fromScaling:()=>K,fromTranslation:()=>X,fromValues:()=>z,identity:()=>B,invert:()=>$,mul:()=>ae,multiply:()=>j,multiplyScalar:()=>ee,multiplyScalarAndAdd:()=>te,rotate:()=>H,scale:()=>G,set:()=>U,str:()=>Y,sub:()=>se,subtract:()=>Q,translate:()=>W});var s={};n.r(s),n.d(s,{add:()=>fe,ceil:()=>ve,clone:()=>ce,copy:()=>pe,create:()=>le,cross:()=>Oe,dist:()=>We,distance:()=>Ne,div:()=>Ge,divide:()=>ye,dot:()=>Ce,equals:()=>$e,exactEquals:()=>Ue,floor:()=>xe,forEach:()=>Ye,fromValues:()=>he,inverse:()=>Ie,len:()=>Ke,length:()=>Me,lerp:()=>De,max:()=>_e,min:()=>be,mul:()=>He,multiply:()=>ge,negate:()=>Re,normalize:()=>ke,random:()=>Le,round:()=>Ee,scale:()=>Te,scaleAndAdd:()=>we,set:()=>de,sqrDist:()=>qe,sqrLen:()=>Xe,squaredDistance:()=>Se,squaredLength:()=>Ae,str:()=>ze,sub:()=>je,subtract:()=>me,transformMat4:()=>Pe,transformQuat:()=>Fe,zero:()=>Be});var o={};n.r(o),n.d(o,{add:()=>Mt,calculateW:()=>ot,clone:()=>Tt,conjugate:()=>dt,copy:()=>Nt,create:()=>Ze,dot:()=>It,equals:()=>Bt,exactEquals:()=>Ft,exp:()=>it,fromEuler:()=>mt,fromMat3:()=>ft,fromValues:()=>wt,getAngle:()=>tt,getAxisAngle:()=>et,identity:()=>Je,invert:()=>pt,len:()=>Ot,length:()=>Ct,lerp:()=>kt,ln:()=>ut,mul:()=>At,multiply:()=>nt,normalize:()=>Pt,pow:()=>lt,random:()=>ht,rotateX:()=>rt,rotateY:()=>at,rotateZ:()=>st,rotationTo:()=>zt,scale:()=>Rt,set:()=>St,setAxes:()=>$t,setAxisAngle:()=>Qe,slerp:()=>ct,sqlerp:()=>Ut,sqrLen:()=>Lt,squaredLength:()=>Dt,str:()=>gt});var i={};n.r(i),n.d(i,{add:()=>pn,clone:()=>jt,conjugate:()=>xn,copy:()=>Yt,create:()=>Vt,dot:()=>gn,equals:()=>Mn,exactEquals:()=>Sn,fromMat4:()=>Xt,fromRotation:()=>Kt,fromRotationTranslation:()=>Wt,fromRotationTranslationValues:()=>Gt,fromTranslation:()=>qt,fromValues:()=>Ht,getDual:()=>en,getReal:()=>Qt,getTranslation:()=>rn,identity:()=>Zt,invert:()=>vn,len:()=>_n,length:()=>bn,lerp:()=>yn,mul:()=>fn,multiply:()=>dn,normalize:()=>wn,rotateAroundAxis:()=>hn,rotateByQuatAppend:()=>ln,rotateByQuatPrepend:()=>cn,rotateX:()=>sn,rotateY:()=>on,rotateZ:()=>un,scale:()=>mn,set:()=>Jt,setDual:()=>nn,setReal:()=>tn,sqrLen:()=>Tn,squaredLength:()=>En,str:()=>Nn,translate:()=>an});var u=n(685);function l(){var e=new u.ARRAY_TYPE(4);return u.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0),e[0]=1,e[3]=1,e}function c(e){var t=new u.ARRAY_TYPE(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function h(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function p(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e}function d(e,t,n,r){var a=new u.ARRAY_TYPE(4);return a[0]=e,a[1]=t,a[2]=n,a[3]=r,a}function f(e,t,n,r,a){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e}function m(e,t){if(e===t){var n=t[1];e[1]=t[2],e[2]=n}else e[0]=t[0],e[1]=t[2],e[2]=t[1],e[3]=t[3];return e}function g(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=n*s-a*r;return o?(o=1/o,e[0]=s*o,e[1]=-r*o,e[2]=-a*o,e[3]=n*o,e):null}function y(e,t){var n=t[0];return e[0]=t[3],e[1]=-t[1],e[2]=-t[2],e[3]=n,e}function v(e){return e[0]*e[3]-e[2]*e[1]}function x(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=n[0],u=n[1],l=n[2],c=n[3];return e[0]=r*i+s*u,e[1]=a*i+o*u,e[2]=r*l+s*c,e[3]=a*l+o*c,e}function b(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=Math.sin(n),u=Math.cos(n);return e[0]=r*u+s*i,e[1]=a*u+o*i,e[2]=r*-i+s*u,e[3]=a*-i+o*u,e}function _(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=n[0],u=n[1];return e[0]=r*i,e[1]=a*i,e[2]=s*u,e[3]=o*u,e}function E(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=-n,e[3]=r,e}function T(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=t[1],e}function w(e){return"mat2("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"}function N(e){return Math.hypot(e[0],e[1],e[2],e[3])}function S(e,t,n,r){return e[2]=r[2]/r[0],n[0]=r[0],n[1]=r[1],n[3]=r[3]-e[2]*n[1],[e,t,n]}function M(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e}function A(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e}function R(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function I(e,t){var n=e[0],r=e[1],a=e[2],s=e[3],o=t[0],i=t[1],l=t[2],c=t[3];return Math.abs(n-o)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-i)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(a-l)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(l))&&Math.abs(s-c)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(c))}function k(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e}function C(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e}var O=x,D=A;function L(){var e=new u.ARRAY_TYPE(6);return u.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[4]=0,e[5]=0),e[0]=1,e[3]=1,e}function P(e){var t=new u.ARRAY_TYPE(6);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function F(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function B(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}function z(e,t,n,r,a,s){var o=new u.ARRAY_TYPE(6);return o[0]=e,o[1]=t,o[2]=n,o[3]=r,o[4]=a,o[5]=s,o}function U(e,t,n,r,a,s,o){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e[4]=s,e[5]=o,e}function $(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=n*s-r*a;return u?(u=1/u,e[0]=s*u,e[1]=-r*u,e[2]=-a*u,e[3]=n*u,e[4]=(a*i-s*o)*u,e[5]=(r*o-n*i)*u,e):null}function V(e){return e[0]*e[3]-e[1]*e[2]}function j(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=n[0],c=n[1],h=n[2],p=n[3],d=n[4],f=n[5];return e[0]=r*l+s*c,e[1]=a*l+o*c,e[2]=r*h+s*p,e[3]=a*h+o*p,e[4]=r*d+s*f+i,e[5]=a*d+o*f+u,e}function H(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=Math.sin(n),c=Math.cos(n);return e[0]=r*c+s*l,e[1]=a*c+o*l,e[2]=r*-l+s*c,e[3]=a*-l+o*c,e[4]=i,e[5]=u,e}function G(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=n[0],c=n[1];return e[0]=r*l,e[1]=a*l,e[2]=s*c,e[3]=o*c,e[4]=i,e[5]=u,e}function W(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=n[0],c=n[1];return e[0]=r,e[1]=a,e[2]=s,e[3]=o,e[4]=r*l+s*c+i,e[5]=a*l+o*c+u,e}function q(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=-n,e[3]=r,e[4]=0,e[5]=0,e}function K(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=t[1],e[4]=0,e[5]=0,e}function X(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=t[0],e[5]=t[1],e}function Y(e){return"mat2d("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+")"}function Z(e){return Math.hypot(e[0],e[1],e[2],e[3],e[4],e[5],1)}function J(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e}function Q(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e}function ee(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e}function te(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e}function ne(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]}function re(e,t){var n=e[0],r=e[1],a=e[2],s=e[3],o=e[4],i=e[5],l=t[0],c=t[1],h=t[2],p=t[3],d=t[4],f=t[5];return Math.abs(n-l)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(l))&&Math.abs(r-c)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(c))&&Math.abs(a-h)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(h))&&Math.abs(s-p)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(p))&&Math.abs(o-d)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(i-f)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(f))}var ae=j,se=Q,oe=n(600),ie=n(975),ue=n(160);function le(){var e=new u.ARRAY_TYPE(4);return u.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[3]=0),e}function ce(e){var t=new u.ARRAY_TYPE(4);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t}function he(e,t,n,r){var a=new u.ARRAY_TYPE(4);return a[0]=e,a[1]=t,a[2]=n,a[3]=r,a}function pe(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}function de(e,t,n,r,a){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e}function fe(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e}function me(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e}function ge(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e[3]=t[3]*n[3],e}function ye(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e[3]=t[3]/n[3],e}function ve(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e[3]=Math.ceil(t[3]),e}function xe(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e[3]=Math.floor(t[3]),e}function be(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e[3]=Math.min(t[3],n[3]),e}function _e(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e[3]=Math.max(t[3],n[3]),e}function Ee(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e[3]=Math.round(t[3]),e}function Te(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e}function we(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e}function Ne(e,t){var n=t[0]-e[0],r=t[1]-e[1],a=t[2]-e[2],s=t[3]-e[3];return Math.hypot(n,r,a,s)}function Se(e,t){var n=t[0]-e[0],r=t[1]-e[1],a=t[2]-e[2],s=t[3]-e[3];return n*n+r*r+a*a+s*s}function Me(e){var t=e[0],n=e[1],r=e[2],a=e[3];return Math.hypot(t,n,r,a)}function Ae(e){var t=e[0],n=e[1],r=e[2],a=e[3];return t*t+n*n+r*r+a*a}function Re(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=-t[3],e}function Ie(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e[3]=1/t[3],e}function ke(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=n*n+r*r+a*a+s*s;return o>0&&(o=1/Math.sqrt(o)),e[0]=n*o,e[1]=r*o,e[2]=a*o,e[3]=s*o,e}function Ce(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]}function Oe(e,t,n,r){var a=n[0]*r[1]-n[1]*r[0],s=n[0]*r[2]-n[2]*r[0],o=n[0]*r[3]-n[3]*r[0],i=n[1]*r[2]-n[2]*r[1],u=n[1]*r[3]-n[3]*r[1],l=n[2]*r[3]-n[3]*r[2],c=t[0],h=t[1],p=t[2],d=t[3];return e[0]=h*l-p*u+d*i,e[1]=-c*l+p*o-d*s,e[2]=c*u-h*o+d*a,e[3]=-c*i+h*s-p*a,e}function De(e,t,n,r){var a=t[0],s=t[1],o=t[2],i=t[3];return e[0]=a+r*(n[0]-a),e[1]=s+r*(n[1]-s),e[2]=o+r*(n[2]-o),e[3]=i+r*(n[3]-i),e}function Le(e,t){var n,r,a,s,o,i;t=t||1;do{o=(n=2*u.RANDOM()-1)*n+(r=2*u.RANDOM()-1)*r}while(o>=1);do{i=(a=2*u.RANDOM()-1)*a+(s=2*u.RANDOM()-1)*s}while(i>=1);var l=Math.sqrt((1-o)/i);return e[0]=t*n,e[1]=t*r,e[2]=t*a*l,e[3]=t*s*l,e}function Pe(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3];return e[0]=n[0]*r+n[4]*a+n[8]*s+n[12]*o,e[1]=n[1]*r+n[5]*a+n[9]*s+n[13]*o,e[2]=n[2]*r+n[6]*a+n[10]*s+n[14]*o,e[3]=n[3]*r+n[7]*a+n[11]*s+n[15]*o,e}function Fe(e,t,n){var r=t[0],a=t[1],s=t[2],o=n[0],i=n[1],u=n[2],l=n[3],c=l*r+i*s-u*a,h=l*a+u*r-o*s,p=l*s+o*a-i*r,d=-o*r-i*a-u*s;return e[0]=c*l+d*-o+h*-u-p*-i,e[1]=h*l+d*-i+p*-o-c*-u,e[2]=p*l+d*-u+c*-i-h*-o,e[3]=t[3],e}function Be(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=0,e}function ze(e){return"vec4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"}function Ue(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]}function $e(e,t){var n=e[0],r=e[1],a=e[2],s=e[3],o=t[0],i=t[1],l=t[2],c=t[3];return Math.abs(n-o)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(r-i)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(a-l)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(l))&&Math.abs(s-c)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(c))}var Ve,je=me,He=ge,Ge=ye,We=Ne,qe=Se,Ke=Me,Xe=Ae,Ye=(Ve=le(),function(e,t,n,r,a,s){var o,i;for(t||(t=4),n||(n=0),i=r?Math.min(r*t+n,e.length):e.length,o=n;ou.EPSILON?(e[0]=t[0]/r,e[1]=t[1]/r,e[2]=t[2]/r):(e[0]=1,e[1]=0,e[2]=0),n}function tt(e,t){var n=It(e,t);return Math.acos(2*n*n-1)}function nt(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=n[0],u=n[1],l=n[2],c=n[3];return e[0]=r*c+o*i+a*l-s*u,e[1]=a*c+o*u+s*i-r*l,e[2]=s*c+o*l+r*u-a*i,e[3]=o*c-r*i-a*u-s*l,e}function rt(e,t,n){n*=.5;var r=t[0],a=t[1],s=t[2],o=t[3],i=Math.sin(n),u=Math.cos(n);return e[0]=r*u+o*i,e[1]=a*u+s*i,e[2]=s*u-a*i,e[3]=o*u-r*i,e}function at(e,t,n){n*=.5;var r=t[0],a=t[1],s=t[2],o=t[3],i=Math.sin(n),u=Math.cos(n);return e[0]=r*u-s*i,e[1]=a*u+o*i,e[2]=s*u+r*i,e[3]=o*u-a*i,e}function st(e,t,n){n*=.5;var r=t[0],a=t[1],s=t[2],o=t[3],i=Math.sin(n),u=Math.cos(n);return e[0]=r*u+a*i,e[1]=a*u-r*i,e[2]=s*u+o*i,e[3]=o*u-s*i,e}function ot(e,t){var n=t[0],r=t[1],a=t[2];return e[0]=n,e[1]=r,e[2]=a,e[3]=Math.sqrt(Math.abs(1-n*n-r*r-a*a)),e}function it(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=Math.sqrt(n*n+r*r+a*a),i=Math.exp(s),u=o>0?i*Math.sin(o)/o:0;return e[0]=n*u,e[1]=r*u,e[2]=a*u,e[3]=i*Math.cos(o),e}function ut(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=Math.sqrt(n*n+r*r+a*a),i=o>0?Math.atan2(o,s)/o:0;return e[0]=n*i,e[1]=r*i,e[2]=a*i,e[3]=.5*Math.log(n*n+r*r+a*a+s*s),e}function lt(e,t,n){return ut(e,t),Rt(e,e,n),it(e,e),e}function ct(e,t,n,r){var a,s,o,i,l,c=t[0],h=t[1],p=t[2],d=t[3],f=n[0],m=n[1],g=n[2],y=n[3];return(s=c*f+h*m+p*g+d*y)<0&&(s=-s,f=-f,m=-m,g=-g,y=-y),1-s>u.EPSILON?(a=Math.acos(s),o=Math.sin(a),i=Math.sin((1-r)*a)/o,l=Math.sin(r*a)/o):(i=1-r,l=r),e[0]=i*c+l*f,e[1]=i*h+l*m,e[2]=i*p+l*g,e[3]=i*d+l*y,e}function ht(e){var t=u.RANDOM(),n=u.RANDOM(),r=u.RANDOM(),a=Math.sqrt(1-t),s=Math.sqrt(t);return e[0]=a*Math.sin(2*Math.PI*n),e[1]=a*Math.cos(2*Math.PI*n),e[2]=s*Math.sin(2*Math.PI*r),e[3]=s*Math.cos(2*Math.PI*r),e}function pt(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=n*n+r*r+a*a+s*s,i=o?1/o:0;return e[0]=-n*i,e[1]=-r*i,e[2]=-a*i,e[3]=s*i,e}function dt(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],e}function ft(e,t){var n,r=t[0]+t[4]+t[8];if(r>0)n=Math.sqrt(r+1),e[3]=.5*n,n=.5/n,e[0]=(t[5]-t[7])*n,e[1]=(t[6]-t[2])*n,e[2]=(t[1]-t[3])*n;else{var a=0;t[4]>t[0]&&(a=1),t[8]>t[3*a+a]&&(a=2);var s=(a+1)%3,o=(a+2)%3;n=Math.sqrt(t[3*a+a]-t[3*s+s]-t[3*o+o]+1),e[a]=.5*n,n=.5/n,e[3]=(t[3*s+o]-t[3*o+s])*n,e[s]=(t[3*s+a]+t[3*a+s])*n,e[o]=(t[3*o+a]+t[3*a+o])*n}return e}function mt(e,t,n,r){var a=.5*Math.PI/180;t*=a,n*=a,r*=a;var s=Math.sin(t),o=Math.cos(t),i=Math.sin(n),u=Math.cos(n),l=Math.sin(r),c=Math.cos(r);return e[0]=s*u*c-o*i*l,e[1]=o*i*c+s*u*l,e[2]=o*u*l-s*i*c,e[3]=o*u*c+s*i*l,e}function gt(e){return"quat("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+")"}var yt,vt,xt,bt,_t,Et,Tt=ce,wt=he,Nt=pe,St=de,Mt=fe,At=nt,Rt=Te,It=Ce,kt=De,Ct=Me,Ot=Ct,Dt=Ae,Lt=Dt,Pt=ke,Ft=Ue,Bt=$e,zt=(yt=ue.create(),vt=ue.fromValues(1,0,0),xt=ue.fromValues(0,1,0),function(e,t,n){var r=ue.dot(t,n);return r<-.999999?(ue.cross(yt,vt,t),ue.len(yt)<1e-6&&ue.cross(yt,xt,t),ue.normalize(yt,yt),Qe(e,yt,Math.PI),e):r>.999999?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(ue.cross(yt,t,n),e[0]=yt[0],e[1]=yt[1],e[2]=yt[2],e[3]=1+r,Pt(e,e))}),Ut=(bt=Ze(),_t=Ze(),function(e,t,n,r,a,s){return ct(bt,t,a,s),ct(_t,n,r,s),ct(e,bt,_t,2*s*(1-s)),e}),$t=(Et=oe.create(),function(e,t,n,r){return Et[0]=n[0],Et[3]=n[1],Et[6]=n[2],Et[1]=r[0],Et[4]=r[1],Et[7]=r[2],Et[2]=-t[0],Et[5]=-t[1],Et[8]=-t[2],Pt(e,ft(e,Et))});function Vt(){var e=new u.ARRAY_TYPE(8);return u.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0),e[3]=1,e}function jt(e){var t=new u.ARRAY_TYPE(8);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t}function Ht(e,t,n,r,a,s,o,i){var l=new u.ARRAY_TYPE(8);return l[0]=e,l[1]=t,l[2]=n,l[3]=r,l[4]=a,l[5]=s,l[6]=o,l[7]=i,l}function Gt(e,t,n,r,a,s,o){var i=new u.ARRAY_TYPE(8);i[0]=e,i[1]=t,i[2]=n,i[3]=r;var l=.5*a,c=.5*s,h=.5*o;return i[4]=l*r+c*n-h*t,i[5]=c*r+h*e-l*n,i[6]=h*r+l*t-c*e,i[7]=-l*e-c*t-h*n,i}function Wt(e,t,n){var r=.5*n[0],a=.5*n[1],s=.5*n[2],o=t[0],i=t[1],u=t[2],l=t[3];return e[0]=o,e[1]=i,e[2]=u,e[3]=l,e[4]=r*l+a*u-s*i,e[5]=a*l+s*o-r*u,e[6]=s*l+r*i-a*o,e[7]=-r*o-a*i-s*u,e}function qt(e,t){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e[4]=.5*t[0],e[5]=.5*t[1],e[6]=.5*t[2],e[7]=0,e}function Kt(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=0,e[5]=0,e[6]=0,e[7]=0,e}function Xt(e,t){var n=Ze();ie.getRotation(n,t);var r=new u.ARRAY_TYPE(3);return ie.getTranslation(r,t),Wt(e,n,r),e}function Yt(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e}function Zt(e){return e[0]=0,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e}function Jt(e,t,n,r,a,s,o,i,u){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e[4]=s,e[5]=o,e[6]=i,e[7]=u,e}var Qt=Nt;function en(e,t){return e[0]=t[4],e[1]=t[5],e[2]=t[6],e[3]=t[7],e}var tn=Nt;function nn(e,t){return e[4]=t[0],e[5]=t[1],e[6]=t[2],e[7]=t[3],e}function rn(e,t){var n=t[4],r=t[5],a=t[6],s=t[7],o=-t[0],i=-t[1],u=-t[2],l=t[3];return e[0]=2*(n*l+s*o+r*u-a*i),e[1]=2*(r*l+s*i+a*o-n*u),e[2]=2*(a*l+s*u+n*i-r*o),e}function an(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=.5*n[0],u=.5*n[1],l=.5*n[2],c=t[4],h=t[5],p=t[6],d=t[7];return e[0]=r,e[1]=a,e[2]=s,e[3]=o,e[4]=o*i+a*l-s*u+c,e[5]=o*u+s*i-r*l+h,e[6]=o*l+r*u-a*i+p,e[7]=-r*i-a*u-s*l+d,e}function sn(e,t,n){var r=-t[0],a=-t[1],s=-t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=i*o+c*r+u*s-l*a,p=u*o+c*a+l*r-i*s,d=l*o+c*s+i*a-u*r,f=c*o-i*r-u*a-l*s;return rt(e,t,n),r=e[0],a=e[1],s=e[2],o=e[3],e[4]=h*o+f*r+p*s-d*a,e[5]=p*o+f*a+d*r-h*s,e[6]=d*o+f*s+h*a-p*r,e[7]=f*o-h*r-p*a-d*s,e}function on(e,t,n){var r=-t[0],a=-t[1],s=-t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=i*o+c*r+u*s-l*a,p=u*o+c*a+l*r-i*s,d=l*o+c*s+i*a-u*r,f=c*o-i*r-u*a-l*s;return at(e,t,n),r=e[0],a=e[1],s=e[2],o=e[3],e[4]=h*o+f*r+p*s-d*a,e[5]=p*o+f*a+d*r-h*s,e[6]=d*o+f*s+h*a-p*r,e[7]=f*o-h*r-p*a-d*s,e}function un(e,t,n){var r=-t[0],a=-t[1],s=-t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=i*o+c*r+u*s-l*a,p=u*o+c*a+l*r-i*s,d=l*o+c*s+i*a-u*r,f=c*o-i*r-u*a-l*s;return st(e,t,n),r=e[0],a=e[1],s=e[2],o=e[3],e[4]=h*o+f*r+p*s-d*a,e[5]=p*o+f*a+d*r-h*s,e[6]=d*o+f*s+h*a-p*r,e[7]=f*o-h*r-p*a-d*s,e}function ln(e,t,n){var r=n[0],a=n[1],s=n[2],o=n[3],i=t[0],u=t[1],l=t[2],c=t[3];return e[0]=i*o+c*r+u*s-l*a,e[1]=u*o+c*a+l*r-i*s,e[2]=l*o+c*s+i*a-u*r,e[3]=c*o-i*r-u*a-l*s,i=t[4],u=t[5],l=t[6],c=t[7],e[4]=i*o+c*r+u*s-l*a,e[5]=u*o+c*a+l*r-i*s,e[6]=l*o+c*s+i*a-u*r,e[7]=c*o-i*r-u*a-l*s,e}function cn(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=n[0],u=n[1],l=n[2],c=n[3];return e[0]=r*c+o*i+a*l-s*u,e[1]=a*c+o*u+s*i-r*l,e[2]=s*c+o*l+r*u-a*i,e[3]=o*c-r*i-a*u-s*l,i=n[4],u=n[5],l=n[6],c=n[7],e[4]=r*c+o*i+a*l-s*u,e[5]=a*c+o*u+s*i-r*l,e[6]=s*c+o*l+r*u-a*i,e[7]=o*c-r*i-a*u-s*l,e}function hn(e,t,n,r){if(Math.abs(r)0){n=Math.sqrt(n);var r=t[0]/n,a=t[1]/n,s=t[2]/n,o=t[3]/n,i=t[4],u=t[5],l=t[6],c=t[7],h=r*i+a*u+s*l+o*c;e[0]=r,e[1]=a,e[2]=s,e[3]=o,e[4]=(i-r*h)/n,e[5]=(u-a*h)/n,e[6]=(l-s*h)/n,e[7]=(c-o*h)/n}return e}function Nn(e){return"quat2("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+")"}function Sn(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]}function Mn(e,t){var n=e[0],r=e[1],a=e[2],s=e[3],o=e[4],i=e[5],l=e[6],c=e[7],h=t[0],p=t[1],d=t[2],f=t[3],m=t[4],g=t[5],y=t[6],v=t[7];return Math.abs(n-h)<=u.EPSILON*Math.max(1,Math.abs(n),Math.abs(h))&&Math.abs(r-p)<=u.EPSILON*Math.max(1,Math.abs(r),Math.abs(p))&&Math.abs(a-d)<=u.EPSILON*Math.max(1,Math.abs(a),Math.abs(d))&&Math.abs(s-f)<=u.EPSILON*Math.max(1,Math.abs(s),Math.abs(f))&&Math.abs(o-m)<=u.EPSILON*Math.max(1,Math.abs(o),Math.abs(m))&&Math.abs(i-g)<=u.EPSILON*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(l-y)<=u.EPSILON*Math.max(1,Math.abs(l),Math.abs(y))&&Math.abs(c-v)<=u.EPSILON*Math.max(1,Math.abs(c),Math.abs(v))}var An=n(437)},600:(e,t,n)=>{"use strict";n.r(t),n.d(t,{add:()=>A,adjoint:()=>d,clone:()=>o,copy:()=>i,create:()=>a,determinant:()=>f,equals:()=>O,exactEquals:()=>C,frob:()=>M,fromMat2d:()=>E,fromMat4:()=>s,fromQuat:()=>T,fromRotation:()=>b,fromScaling:()=>_,fromTranslation:()=>x,fromValues:()=>u,identity:()=>c,invert:()=>p,mul:()=>D,multiply:()=>m,multiplyScalar:()=>I,multiplyScalarAndAdd:()=>k,normalFromMat4:()=>w,projection:()=>N,rotate:()=>y,scale:()=>v,set:()=>l,str:()=>S,sub:()=>L,subtract:()=>R,translate:()=>g,transpose:()=>h});var r=n(685);function a(){var e=new r.ARRAY_TYPE(9);return r.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function s(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[4],e[4]=t[5],e[5]=t[6],e[6]=t[8],e[7]=t[9],e[8]=t[10],e}function o(e){var t=new r.ARRAY_TYPE(9);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function i(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function u(e,t,n,a,s,o,i,u,l){var c=new r.ARRAY_TYPE(9);return c[0]=e,c[1]=t,c[2]=n,c[3]=a,c[4]=s,c[5]=o,c[6]=i,c[7]=u,c[8]=l,c}function l(e,t,n,r,a,s,o,i,u,l){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e[4]=s,e[5]=o,e[6]=i,e[7]=u,e[8]=l,e}function c(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function h(e,t){if(e===t){var n=t[1],r=t[2],a=t[5];e[1]=t[3],e[2]=t[6],e[3]=n,e[5]=t[7],e[6]=r,e[7]=a}else e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8];return e}function p(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=t[6],l=t[7],c=t[8],h=c*o-i*l,p=-c*s+i*u,d=l*s-o*u,f=n*h+r*p+a*d;return f?(f=1/f,e[0]=h*f,e[1]=(-c*r+a*l)*f,e[2]=(i*r-a*o)*f,e[3]=p*f,e[4]=(c*n-a*u)*f,e[5]=(-i*n+a*s)*f,e[6]=d*f,e[7]=(-l*n+r*u)*f,e[8]=(o*n-r*s)*f,e):null}function d(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=t[6],l=t[7],c=t[8];return e[0]=o*c-i*l,e[1]=a*l-r*c,e[2]=r*i-a*o,e[3]=i*u-s*c,e[4]=n*c-a*u,e[5]=a*s-n*i,e[6]=s*l-o*u,e[7]=r*u-n*l,e[8]=n*o-r*s,e}function f(e){var t=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],i=e[6],u=e[7],l=e[8];return t*(l*s-o*u)+n*(-l*a+o*i)+r*(u*a-s*i)}function m(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=t[8],p=n[0],d=n[1],f=n[2],m=n[3],g=n[4],y=n[5],v=n[6],x=n[7],b=n[8];return e[0]=p*r+d*o+f*l,e[1]=p*a+d*i+f*c,e[2]=p*s+d*u+f*h,e[3]=m*r+g*o+y*l,e[4]=m*a+g*i+y*c,e[5]=m*s+g*u+y*h,e[6]=v*r+x*o+b*l,e[7]=v*a+x*i+b*c,e[8]=v*s+x*u+b*h,e}function g(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=t[8],p=n[0],d=n[1];return e[0]=r,e[1]=a,e[2]=s,e[3]=o,e[4]=i,e[5]=u,e[6]=p*r+d*o+l,e[7]=p*a+d*i+c,e[8]=p*s+d*u+h,e}function y(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=t[8],p=Math.sin(n),d=Math.cos(n);return e[0]=d*r+p*o,e[1]=d*a+p*i,e[2]=d*s+p*u,e[3]=d*o-p*r,e[4]=d*i-p*a,e[5]=d*u-p*s,e[6]=l,e[7]=c,e[8]=h,e}function v(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function x(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=t[0],e[7]=t[1],e[8]=1,e}function b(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=-n,e[4]=r,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function _(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=t[1],e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function E(e,t){return e[0]=t[0],e[1]=t[1],e[2]=0,e[3]=t[2],e[4]=t[3],e[5]=0,e[6]=t[4],e[7]=t[5],e[8]=1,e}function T(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,i=r+r,u=a+a,l=n*o,c=r*o,h=r*i,p=a*o,d=a*i,f=a*u,m=s*o,g=s*i,y=s*u;return e[0]=1-h-f,e[3]=c-y,e[6]=p+g,e[1]=c+y,e[4]=1-l-f,e[7]=d-m,e[2]=p-g,e[5]=d+m,e[8]=1-l-h,e}function w(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=t[6],l=t[7],c=t[8],h=t[9],p=t[10],d=t[11],f=t[12],m=t[13],g=t[14],y=t[15],v=n*i-r*o,x=n*u-a*o,b=n*l-s*o,_=r*u-a*i,E=r*l-s*i,T=a*l-s*u,w=c*m-h*f,N=c*g-p*f,S=c*y-d*f,M=h*g-p*m,A=h*y-d*m,R=p*y-d*g,I=v*R-x*A+b*M+_*S-E*N+T*w;return I?(I=1/I,e[0]=(i*R-u*A+l*M)*I,e[1]=(u*S-o*R-l*N)*I,e[2]=(o*A-i*S+l*w)*I,e[3]=(a*A-r*R-s*M)*I,e[4]=(n*R-a*S+s*N)*I,e[5]=(r*S-n*A-s*w)*I,e[6]=(m*T-g*E+y*_)*I,e[7]=(g*b-f*T-y*x)*I,e[8]=(f*E-m*b+y*v)*I,e):null}function N(e,t,n){return e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1,e}function S(e){return"mat3("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+")"}function M(e){return Math.hypot(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])}function A(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e}function R(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e}function I(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e}function k(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e}function C(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]}function O(e,t){var n=e[0],a=e[1],s=e[2],o=e[3],i=e[4],u=e[5],l=e[6],c=e[7],h=e[8],p=t[0],d=t[1],f=t[2],m=t[3],g=t[4],y=t[5],v=t[6],x=t[7],b=t[8];return Math.abs(n-p)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(p))&&Math.abs(a-d)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(d))&&Math.abs(s-f)<=r.EPSILON*Math.max(1,Math.abs(s),Math.abs(f))&&Math.abs(o-m)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(m))&&Math.abs(i-g)<=r.EPSILON*Math.max(1,Math.abs(i),Math.abs(g))&&Math.abs(u-y)<=r.EPSILON*Math.max(1,Math.abs(u),Math.abs(y))&&Math.abs(l-v)<=r.EPSILON*Math.max(1,Math.abs(l),Math.abs(v))&&Math.abs(c-x)<=r.EPSILON*Math.max(1,Math.abs(c),Math.abs(x))&&Math.abs(h-b)<=r.EPSILON*Math.max(1,Math.abs(h),Math.abs(b))}var D=m,L=R},975:(e,t,n)=>{"use strict";n.r(t),n.d(t,{add:()=>q,adjoint:()=>p,clone:()=>s,copy:()=>o,create:()=>a,determinant:()=>d,equals:()=>J,exactEquals:()=>Z,frob:()=>W,fromQuat:()=>D,fromQuat2:()=>A,fromRotation:()=>T,fromRotationTranslation:()=>M,fromRotationTranslationScale:()=>C,fromRotationTranslationScaleOrigin:()=>O,fromScaling:()=>E,fromTranslation:()=>_,fromValues:()=>i,fromXRotation:()=>w,fromYRotation:()=>N,fromZRotation:()=>S,frustum:()=>L,getRotation:()=>k,getScaling:()=>I,getTranslation:()=>R,identity:()=>l,invert:()=>h,lookAt:()=>j,mul:()=>Q,multiply:()=>f,multiplyScalar:()=>X,multiplyScalarAndAdd:()=>Y,ortho:()=>$,orthoNO:()=>U,orthoZO:()=>V,perspective:()=>F,perspectiveFromFieldOfView:()=>z,perspectiveNO:()=>P,perspectiveZO:()=>B,rotate:()=>y,rotateX:()=>v,rotateY:()=>x,rotateZ:()=>b,scale:()=>g,set:()=>u,str:()=>G,sub:()=>ee,subtract:()=>K,targetTo:()=>H,translate:()=>m,transpose:()=>c});var r=n(685);function a(){var e=new r.ARRAY_TYPE(16);return r.ARRAY_TYPE!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function s(e){var t=new r.ARRAY_TYPE(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function o(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function i(e,t,n,a,s,o,i,u,l,c,h,p,d,f,m,g){var y=new r.ARRAY_TYPE(16);return y[0]=e,y[1]=t,y[2]=n,y[3]=a,y[4]=s,y[5]=o,y[6]=i,y[7]=u,y[8]=l,y[9]=c,y[10]=h,y[11]=p,y[12]=d,y[13]=f,y[14]=m,y[15]=g,y}function u(e,t,n,r,a,s,o,i,u,l,c,h,p,d,f,m,g){return e[0]=t,e[1]=n,e[2]=r,e[3]=a,e[4]=s,e[5]=o,e[6]=i,e[7]=u,e[8]=l,e[9]=c,e[10]=h,e[11]=p,e[12]=d,e[13]=f,e[14]=m,e[15]=g,e}function l(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function c(e,t){if(e===t){var n=t[1],r=t[2],a=t[3],s=t[6],o=t[7],i=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=s,e[11]=t[14],e[12]=a,e[13]=o,e[14]=i}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function h(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=t[6],l=t[7],c=t[8],h=t[9],p=t[10],d=t[11],f=t[12],m=t[13],g=t[14],y=t[15],v=n*i-r*o,x=n*u-a*o,b=n*l-s*o,_=r*u-a*i,E=r*l-s*i,T=a*l-s*u,w=c*m-h*f,N=c*g-p*f,S=c*y-d*f,M=h*g-p*m,A=h*y-d*m,R=p*y-d*g,I=v*R-x*A+b*M+_*S-E*N+T*w;return I?(I=1/I,e[0]=(i*R-u*A+l*M)*I,e[1]=(a*A-r*R-s*M)*I,e[2]=(m*T-g*E+y*_)*I,e[3]=(p*E-h*T-d*_)*I,e[4]=(u*S-o*R-l*N)*I,e[5]=(n*R-a*S+s*N)*I,e[6]=(g*b-f*T-y*x)*I,e[7]=(c*T-p*b+d*x)*I,e[8]=(o*A-i*S+l*w)*I,e[9]=(r*S-n*A-s*w)*I,e[10]=(f*E-m*b+y*v)*I,e[11]=(h*b-c*E-d*v)*I,e[12]=(i*N-o*M-u*w)*I,e[13]=(n*M-r*N+a*w)*I,e[14]=(m*x-f*_-g*v)*I,e[15]=(c*_-h*x+p*v)*I,e):null}function p(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=t[4],i=t[5],u=t[6],l=t[7],c=t[8],h=t[9],p=t[10],d=t[11],f=t[12],m=t[13],g=t[14],y=t[15];return e[0]=i*(p*y-d*g)-h*(u*y-l*g)+m*(u*d-l*p),e[1]=-(r*(p*y-d*g)-h*(a*y-s*g)+m*(a*d-s*p)),e[2]=r*(u*y-l*g)-i*(a*y-s*g)+m*(a*l-s*u),e[3]=-(r*(u*d-l*p)-i*(a*d-s*p)+h*(a*l-s*u)),e[4]=-(o*(p*y-d*g)-c*(u*y-l*g)+f*(u*d-l*p)),e[5]=n*(p*y-d*g)-c*(a*y-s*g)+f*(a*d-s*p),e[6]=-(n*(u*y-l*g)-o*(a*y-s*g)+f*(a*l-s*u)),e[7]=n*(u*d-l*p)-o*(a*d-s*p)+c*(a*l-s*u),e[8]=o*(h*y-d*m)-c*(i*y-l*m)+f*(i*d-l*h),e[9]=-(n*(h*y-d*m)-c*(r*y-s*m)+f*(r*d-s*h)),e[10]=n*(i*y-l*m)-o*(r*y-s*m)+f*(r*l-s*i),e[11]=-(n*(i*d-l*h)-o*(r*d-s*h)+c*(r*l-s*i)),e[12]=-(o*(h*g-p*m)-c*(i*g-u*m)+f*(i*p-u*h)),e[13]=n*(h*g-p*m)-c*(r*g-a*m)+f*(r*p-a*h),e[14]=-(n*(i*g-u*m)-o*(r*g-a*m)+f*(r*u-a*i)),e[15]=n*(i*p-u*h)-o*(r*p-a*h)+c*(r*u-a*i),e}function d(e){var t=e[0],n=e[1],r=e[2],a=e[3],s=e[4],o=e[5],i=e[6],u=e[7],l=e[8],c=e[9],h=e[10],p=e[11],d=e[12],f=e[13],m=e[14],g=e[15];return(t*o-n*s)*(h*g-p*m)-(t*i-r*s)*(c*g-p*f)+(t*u-a*s)*(c*m-h*f)+(n*i-r*o)*(l*g-p*d)-(n*u-a*o)*(l*m-h*d)+(r*u-a*i)*(l*f-c*d)}function f(e,t,n){var r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=t[8],p=t[9],d=t[10],f=t[11],m=t[12],g=t[13],y=t[14],v=t[15],x=n[0],b=n[1],_=n[2],E=n[3];return e[0]=x*r+b*i+_*h+E*m,e[1]=x*a+b*u+_*p+E*g,e[2]=x*s+b*l+_*d+E*y,e[3]=x*o+b*c+_*f+E*v,x=n[4],b=n[5],_=n[6],E=n[7],e[4]=x*r+b*i+_*h+E*m,e[5]=x*a+b*u+_*p+E*g,e[6]=x*s+b*l+_*d+E*y,e[7]=x*o+b*c+_*f+E*v,x=n[8],b=n[9],_=n[10],E=n[11],e[8]=x*r+b*i+_*h+E*m,e[9]=x*a+b*u+_*p+E*g,e[10]=x*s+b*l+_*d+E*y,e[11]=x*o+b*c+_*f+E*v,x=n[12],b=n[13],_=n[14],E=n[15],e[12]=x*r+b*i+_*h+E*m,e[13]=x*a+b*u+_*p+E*g,e[14]=x*s+b*l+_*d+E*y,e[15]=x*o+b*c+_*f+E*v,e}function m(e,t,n){var r,a,s,o,i,u,l,c,h,p,d,f,m=n[0],g=n[1],y=n[2];return t===e?(e[12]=t[0]*m+t[4]*g+t[8]*y+t[12],e[13]=t[1]*m+t[5]*g+t[9]*y+t[13],e[14]=t[2]*m+t[6]*g+t[10]*y+t[14],e[15]=t[3]*m+t[7]*g+t[11]*y+t[15]):(r=t[0],a=t[1],s=t[2],o=t[3],i=t[4],u=t[5],l=t[6],c=t[7],h=t[8],p=t[9],d=t[10],f=t[11],e[0]=r,e[1]=a,e[2]=s,e[3]=o,e[4]=i,e[5]=u,e[6]=l,e[7]=c,e[8]=h,e[9]=p,e[10]=d,e[11]=f,e[12]=r*m+i*g+h*y+t[12],e[13]=a*m+u*g+p*y+t[13],e[14]=s*m+l*g+d*y+t[14],e[15]=o*m+c*g+f*y+t[15]),e}function g(e,t,n){var r=n[0],a=n[1],s=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*a,e[5]=t[5]*a,e[6]=t[6]*a,e[7]=t[7]*a,e[8]=t[8]*s,e[9]=t[9]*s,e[10]=t[10]*s,e[11]=t[11]*s,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function y(e,t,n,a){var s,o,i,u,l,c,h,p,d,f,m,g,y,v,x,b,_,E,T,w,N,S,M,A,R=a[0],I=a[1],k=a[2],C=Math.hypot(R,I,k);return C0?(n[0]=2*(u*i+h*a+l*o-c*s)/p,n[1]=2*(l*i+h*s+c*a-u*o)/p,n[2]=2*(c*i+h*o+u*s-l*a)/p):(n[0]=2*(u*i+h*a+l*o-c*s),n[1]=2*(l*i+h*s+c*a-u*o),n[2]=2*(c*i+h*o+u*s-l*a)),M(e,t,n),e}function R(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function I(e,t){var n=t[0],r=t[1],a=t[2],s=t[4],o=t[5],i=t[6],u=t[8],l=t[9],c=t[10];return e[0]=Math.hypot(n,r,a),e[1]=Math.hypot(s,o,i),e[2]=Math.hypot(u,l,c),e}function k(e,t){var n=new r.ARRAY_TYPE(3);I(n,t);var a=1/n[0],s=1/n[1],o=1/n[2],i=t[0]*a,u=t[1]*s,l=t[2]*o,c=t[4]*a,h=t[5]*s,p=t[6]*o,d=t[8]*a,f=t[9]*s,m=t[10]*o,g=i+h+m,y=0;return g>0?(y=2*Math.sqrt(g+1),e[3]=.25*y,e[0]=(p-f)/y,e[1]=(d-l)/y,e[2]=(u-c)/y):i>h&&i>m?(y=2*Math.sqrt(1+i-h-m),e[3]=(p-f)/y,e[0]=.25*y,e[1]=(u+c)/y,e[2]=(d+l)/y):h>m?(y=2*Math.sqrt(1+h-i-m),e[3]=(d-l)/y,e[0]=(u+c)/y,e[1]=.25*y,e[2]=(p+f)/y):(y=2*Math.sqrt(1+m-i-h),e[3]=(u-c)/y,e[0]=(d+l)/y,e[1]=(p+f)/y,e[2]=.25*y),e}function C(e,t,n,r){var a=t[0],s=t[1],o=t[2],i=t[3],u=a+a,l=s+s,c=o+o,h=a*u,p=a*l,d=a*c,f=s*l,m=s*c,g=o*c,y=i*u,v=i*l,x=i*c,b=r[0],_=r[1],E=r[2];return e[0]=(1-(f+g))*b,e[1]=(p+x)*b,e[2]=(d-v)*b,e[3]=0,e[4]=(p-x)*_,e[5]=(1-(h+g))*_,e[6]=(m+y)*_,e[7]=0,e[8]=(d+v)*E,e[9]=(m-y)*E,e[10]=(1-(h+f))*E,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function O(e,t,n,r,a){var s=t[0],o=t[1],i=t[2],u=t[3],l=s+s,c=o+o,h=i+i,p=s*l,d=s*c,f=s*h,m=o*c,g=o*h,y=i*h,v=u*l,x=u*c,b=u*h,_=r[0],E=r[1],T=r[2],w=a[0],N=a[1],S=a[2],M=(1-(m+y))*_,A=(d+b)*_,R=(f-x)*_,I=(d-b)*E,k=(1-(p+y))*E,C=(g+v)*E,O=(f+x)*T,D=(g-v)*T,L=(1-(p+m))*T;return e[0]=M,e[1]=A,e[2]=R,e[3]=0,e[4]=I,e[5]=k,e[6]=C,e[7]=0,e[8]=O,e[9]=D,e[10]=L,e[11]=0,e[12]=n[0]+w-(M*w+I*N+O*S),e[13]=n[1]+N-(A*w+k*N+D*S),e[14]=n[2]+S-(R*w+C*N+L*S),e[15]=1,e}function D(e,t){var n=t[0],r=t[1],a=t[2],s=t[3],o=n+n,i=r+r,u=a+a,l=n*o,c=r*o,h=r*i,p=a*o,d=a*i,f=a*u,m=s*o,g=s*i,y=s*u;return e[0]=1-h-f,e[1]=c+y,e[2]=p-g,e[3]=0,e[4]=c-y,e[5]=1-l-f,e[6]=d+m,e[7]=0,e[8]=p+g,e[9]=d-m,e[10]=1-l-h,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function L(e,t,n,r,a,s,o){var i=1/(n-t),u=1/(a-r),l=1/(s-o);return e[0]=2*s*i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=2*s*u,e[6]=0,e[7]=0,e[8]=(n+t)*i,e[9]=(a+r)*u,e[10]=(o+s)*l,e[11]=-1,e[12]=0,e[13]=0,e[14]=o*s*2*l,e[15]=0,e}function P(e,t,n,r,a){var s,o=1/Math.tan(t/2);return e[0]=o/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=a&&a!==1/0?(s=1/(r-a),e[10]=(a+r)*s,e[14]=2*a*r*s):(e[10]=-1,e[14]=-2*r),e}var F=P;function B(e,t,n,r,a){var s,o=1/Math.tan(t/2);return e[0]=o/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,null!=a&&a!==1/0?(s=1/(r-a),e[10]=a*s,e[14]=a*r*s):(e[10]=-1,e[14]=-r),e}function z(e,t,n,r){var a=Math.tan(t.upDegrees*Math.PI/180),s=Math.tan(t.downDegrees*Math.PI/180),o=Math.tan(t.leftDegrees*Math.PI/180),i=Math.tan(t.rightDegrees*Math.PI/180),u=2/(o+i),l=2/(a+s);return e[0]=u,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=l,e[6]=0,e[7]=0,e[8]=-(o-i)*u*.5,e[9]=(a-s)*l*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function U(e,t,n,r,a,s,o){var i=1/(t-n),u=1/(r-a),l=1/(s-o);return e[0]=-2*i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*l,e[11]=0,e[12]=(t+n)*i,e[13]=(a+r)*u,e[14]=(o+s)*l,e[15]=1,e}var $=U;function V(e,t,n,r,a,s,o){var i=1/(t-n),u=1/(r-a),l=1/(s-o);return e[0]=-2*i,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*u,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=l,e[11]=0,e[12]=(t+n)*i,e[13]=(a+r)*u,e[14]=s*l,e[15]=1,e}function j(e,t,n,a){var s,o,i,u,c,h,p,d,f,m,g=t[0],y=t[1],v=t[2],x=a[0],b=a[1],_=a[2],E=n[0],T=n[1],w=n[2];return Math.abs(g-E)0&&(c*=d=1/Math.sqrt(d),h*=d,p*=d);var f=u*p-l*h,m=l*c-i*p,g=i*h-u*c;return(d=f*f+m*m+g*g)>0&&(f*=d=1/Math.sqrt(d),m*=d,g*=d),e[0]=f,e[1]=m,e[2]=g,e[3]=0,e[4]=h*g-p*m,e[5]=p*f-c*g,e[6]=c*m-h*f,e[7]=0,e[8]=c,e[9]=h,e[10]=p,e[11]=0,e[12]=a,e[13]=s,e[14]=o,e[15]=1,e}function G(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function W(e){return Math.hypot(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}function q(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function K(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function X(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function Y(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function Z(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function J(e,t){var n=e[0],a=e[1],s=e[2],o=e[3],i=e[4],u=e[5],l=e[6],c=e[7],h=e[8],p=e[9],d=e[10],f=e[11],m=e[12],g=e[13],y=e[14],v=e[15],x=t[0],b=t[1],_=t[2],E=t[3],T=t[4],w=t[5],N=t[6],S=t[7],M=t[8],A=t[9],R=t[10],I=t[11],k=t[12],C=t[13],O=t[14],D=t[15];return Math.abs(n-x)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(x))&&Math.abs(a-b)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(b))&&Math.abs(s-_)<=r.EPSILON*Math.max(1,Math.abs(s),Math.abs(_))&&Math.abs(o-E)<=r.EPSILON*Math.max(1,Math.abs(o),Math.abs(E))&&Math.abs(i-T)<=r.EPSILON*Math.max(1,Math.abs(i),Math.abs(T))&&Math.abs(u-w)<=r.EPSILON*Math.max(1,Math.abs(u),Math.abs(w))&&Math.abs(l-N)<=r.EPSILON*Math.max(1,Math.abs(l),Math.abs(N))&&Math.abs(c-S)<=r.EPSILON*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(h-M)<=r.EPSILON*Math.max(1,Math.abs(h),Math.abs(M))&&Math.abs(p-A)<=r.EPSILON*Math.max(1,Math.abs(p),Math.abs(A))&&Math.abs(d-R)<=r.EPSILON*Math.max(1,Math.abs(d),Math.abs(R))&&Math.abs(f-I)<=r.EPSILON*Math.max(1,Math.abs(f),Math.abs(I))&&Math.abs(m-k)<=r.EPSILON*Math.max(1,Math.abs(m),Math.abs(k))&&Math.abs(g-C)<=r.EPSILON*Math.max(1,Math.abs(g),Math.abs(C))&&Math.abs(y-O)<=r.EPSILON*Math.max(1,Math.abs(y),Math.abs(O))&&Math.abs(v-D)<=r.EPSILON*Math.max(1,Math.abs(v),Math.abs(D))}var Q=f,ee=K},437:(e,t,n)=>{"use strict";n.r(t),n.d(t,{add:()=>l,angle:()=>P,ceil:()=>d,clone:()=>s,copy:()=>i,create:()=>a,cross:()=>A,dist:()=>W,distance:()=>b,div:()=>G,divide:()=>p,dot:()=>M,equals:()=>U,exactEquals:()=>z,floor:()=>f,forEach:()=>X,fromValues:()=>o,inverse:()=>N,len:()=>V,length:()=>E,lerp:()=>R,max:()=>g,min:()=>m,mul:()=>H,multiply:()=>h,negate:()=>w,normalize:()=>S,random:()=>I,rotate:()=>L,round:()=>y,scale:()=>v,scaleAndAdd:()=>x,set:()=>u,sqrDist:()=>q,sqrLen:()=>K,squaredDistance:()=>_,squaredLength:()=>T,str:()=>B,sub:()=>j,subtract:()=>c,transformMat2:()=>k,transformMat2d:()=>C,transformMat3:()=>O,transformMat4:()=>D,zero:()=>F});var r=n(685);function a(){var e=new r.ARRAY_TYPE(2);return r.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0),e}function s(e){var t=new r.ARRAY_TYPE(2);return t[0]=e[0],t[1]=e[1],t}function o(e,t){var n=new r.ARRAY_TYPE(2);return n[0]=e,n[1]=t,n}function i(e,t){return e[0]=t[0],e[1]=t[1],e}function u(e,t,n){return e[0]=t,e[1]=n,e}function l(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e}function c(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e}function h(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e}function p(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e}function d(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e}function f(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e}function m(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e}function g(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e}function y(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e}function v(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e}function x(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e}function b(e,t){var n=t[0]-e[0],r=t[1]-e[1];return Math.hypot(n,r)}function _(e,t){var n=t[0]-e[0],r=t[1]-e[1];return n*n+r*r}function E(e){var t=e[0],n=e[1];return Math.hypot(t,n)}function T(e){var t=e[0],n=e[1];return t*t+n*n}function w(e,t){return e[0]=-t[0],e[1]=-t[1],e}function N(e,t){return e[0]=1/t[0],e[1]=1/t[1],e}function S(e,t){var n=t[0],r=t[1],a=n*n+r*r;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e}function M(e,t){return e[0]*t[0]+e[1]*t[1]}function A(e,t,n){var r=t[0]*n[1]-t[1]*n[0];return e[0]=e[1]=0,e[2]=r,e}function R(e,t,n,r){var a=t[0],s=t[1];return e[0]=a+r*(n[0]-a),e[1]=s+r*(n[1]-s),e}function I(e,t){t=t||1;var n=2*r.RANDOM()*Math.PI;return e[0]=Math.cos(n)*t,e[1]=Math.sin(n)*t,e}function k(e,t,n){var r=t[0],a=t[1];return e[0]=n[0]*r+n[2]*a,e[1]=n[1]*r+n[3]*a,e}function C(e,t,n){var r=t[0],a=t[1];return e[0]=n[0]*r+n[2]*a+n[4],e[1]=n[1]*r+n[3]*a+n[5],e}function O(e,t,n){var r=t[0],a=t[1];return e[0]=n[0]*r+n[3]*a+n[6],e[1]=n[1]*r+n[4]*a+n[7],e}function D(e,t,n){var r=t[0],a=t[1];return e[0]=n[0]*r+n[4]*a+n[12],e[1]=n[1]*r+n[5]*a+n[13],e}function L(e,t,n,r){var a=t[0]-n[0],s=t[1]-n[1],o=Math.sin(r),i=Math.cos(r);return e[0]=a*i-s*o+n[0],e[1]=a*o+s*i+n[1],e}function P(e,t){var n=e[0],r=e[1],a=t[0],s=t[1],o=Math.sqrt(n*n+r*r)*Math.sqrt(a*a+s*s),i=o&&(n*a+r*s)/o;return Math.acos(Math.min(Math.max(i,-1),1))}function F(e){return e[0]=0,e[1]=0,e}function B(e){return"vec2("+e[0]+", "+e[1]+")"}function z(e,t){return e[0]===t[0]&&e[1]===t[1]}function U(e,t){var n=e[0],a=e[1],s=t[0],o=t[1];return Math.abs(n-s)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(a-o)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(o))}var $,V=E,j=c,H=h,G=p,W=b,q=_,K=T,X=($=a(),function(e,t,n,r,a,s){var o,i;for(t||(t=2),n||(n=0),i=r?Math.min(r*t+n,e.length):e.length,o=n;o{"use strict";n.r(t),n.d(t,{add:()=>c,angle:()=>z,bezier:()=>k,ceil:()=>f,clone:()=>s,copy:()=>u,create:()=>a,cross:()=>A,dist:()=>K,distance:()=>_,div:()=>q,divide:()=>d,dot:()=>M,equals:()=>j,exactEquals:()=>V,floor:()=>m,forEach:()=>J,fromValues:()=>i,hermite:()=>I,inverse:()=>N,len:()=>Y,length:()=>o,lerp:()=>R,max:()=>y,min:()=>g,mul:()=>W,multiply:()=>p,negate:()=>w,normalize:()=>S,random:()=>C,rotateX:()=>P,rotateY:()=>F,rotateZ:()=>B,round:()=>v,scale:()=>x,scaleAndAdd:()=>b,set:()=>l,sqrDist:()=>X,sqrLen:()=>Z,squaredDistance:()=>E,squaredLength:()=>T,str:()=>$,sub:()=>G,subtract:()=>h,transformMat3:()=>D,transformMat4:()=>O,transformQuat:()=>L,zero:()=>U});var r=n(685);function a(){var e=new r.ARRAY_TYPE(3);return r.ARRAY_TYPE!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function s(e){var t=new r.ARRAY_TYPE(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function o(e){var t=e[0],n=e[1],r=e[2];return Math.hypot(t,n,r)}function i(e,t,n){var a=new r.ARRAY_TYPE(3);return a[0]=e,a[1]=t,a[2]=n,a}function u(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function l(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function c(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function h(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function p(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function d(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function f(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function m(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function g(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function y(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function v(e,t){return e[0]=Math.round(t[0]),e[1]=Math.round(t[1]),e[2]=Math.round(t[2]),e}function x(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function b(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function _(e,t){var n=t[0]-e[0],r=t[1]-e[1],a=t[2]-e[2];return Math.hypot(n,r,a)}function E(e,t){var n=t[0]-e[0],r=t[1]-e[1],a=t[2]-e[2];return n*n+r*r+a*a}function T(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function w(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function N(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function S(e,t){var n=t[0],r=t[1],a=t[2],s=n*n+r*r+a*a;return s>0&&(s=1/Math.sqrt(s)),e[0]=t[0]*s,e[1]=t[1]*s,e[2]=t[2]*s,e}function M(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function A(e,t,n){var r=t[0],a=t[1],s=t[2],o=n[0],i=n[1],u=n[2];return e[0]=a*u-s*i,e[1]=s*o-r*u,e[2]=r*i-a*o,e}function R(e,t,n,r){var a=t[0],s=t[1],o=t[2];return e[0]=a+r*(n[0]-a),e[1]=s+r*(n[1]-s),e[2]=o+r*(n[2]-o),e}function I(e,t,n,r,a,s){var o=s*s,i=o*(2*s-3)+1,u=o*(s-2)+s,l=o*(s-1),c=o*(3-2*s);return e[0]=t[0]*i+n[0]*u+r[0]*l+a[0]*c,e[1]=t[1]*i+n[1]*u+r[1]*l+a[1]*c,e[2]=t[2]*i+n[2]*u+r[2]*l+a[2]*c,e}function k(e,t,n,r,a,s){var o=1-s,i=o*o,u=s*s,l=i*o,c=3*s*i,h=3*u*o,p=u*s;return e[0]=t[0]*l+n[0]*c+r[0]*h+a[0]*p,e[1]=t[1]*l+n[1]*c+r[1]*h+a[1]*p,e[2]=t[2]*l+n[2]*c+r[2]*h+a[2]*p,e}function C(e,t){t=t||1;var n=2*r.RANDOM()*Math.PI,a=2*r.RANDOM()-1,s=Math.sqrt(1-a*a)*t;return e[0]=Math.cos(n)*s,e[1]=Math.sin(n)*s,e[2]=a*t,e}function O(e,t,n){var r=t[0],a=t[1],s=t[2],o=n[3]*r+n[7]*a+n[11]*s+n[15];return o=o||1,e[0]=(n[0]*r+n[4]*a+n[8]*s+n[12])/o,e[1]=(n[1]*r+n[5]*a+n[9]*s+n[13])/o,e[2]=(n[2]*r+n[6]*a+n[10]*s+n[14])/o,e}function D(e,t,n){var r=t[0],a=t[1],s=t[2];return e[0]=r*n[0]+a*n[3]+s*n[6],e[1]=r*n[1]+a*n[4]+s*n[7],e[2]=r*n[2]+a*n[5]+s*n[8],e}function L(e,t,n){var r=n[0],a=n[1],s=n[2],o=n[3],i=t[0],u=t[1],l=t[2],c=a*l-s*u,h=s*i-r*l,p=r*u-a*i,d=a*p-s*h,f=s*c-r*p,m=r*h-a*c,g=2*o;return c*=g,h*=g,p*=g,d*=2,f*=2,m*=2,e[0]=i+c+d,e[1]=u+h+f,e[2]=l+p+m,e}function P(e,t,n,r){var a=[],s=[];return a[0]=t[0]-n[0],a[1]=t[1]-n[1],a[2]=t[2]-n[2],s[0]=a[0],s[1]=a[1]*Math.cos(r)-a[2]*Math.sin(r),s[2]=a[1]*Math.sin(r)+a[2]*Math.cos(r),e[0]=s[0]+n[0],e[1]=s[1]+n[1],e[2]=s[2]+n[2],e}function F(e,t,n,r){var a=[],s=[];return a[0]=t[0]-n[0],a[1]=t[1]-n[1],a[2]=t[2]-n[2],s[0]=a[2]*Math.sin(r)+a[0]*Math.cos(r),s[1]=a[1],s[2]=a[2]*Math.cos(r)-a[0]*Math.sin(r),e[0]=s[0]+n[0],e[1]=s[1]+n[1],e[2]=s[2]+n[2],e}function B(e,t,n,r){var a=[],s=[];return a[0]=t[0]-n[0],a[1]=t[1]-n[1],a[2]=t[2]-n[2],s[0]=a[0]*Math.cos(r)-a[1]*Math.sin(r),s[1]=a[0]*Math.sin(r)+a[1]*Math.cos(r),s[2]=a[2],e[0]=s[0]+n[0],e[1]=s[1]+n[1],e[2]=s[2]+n[2],e}function z(e,t){var n=e[0],r=e[1],a=e[2],s=t[0],o=t[1],i=t[2],u=Math.sqrt(n*n+r*r+a*a)*Math.sqrt(s*s+o*o+i*i),l=u&&M(e,t)/u;return Math.acos(Math.min(Math.max(l,-1),1))}function U(e){return e[0]=0,e[1]=0,e[2]=0,e}function $(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function V(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function j(e,t){var n=e[0],a=e[1],s=e[2],o=t[0],i=t[1],u=t[2];return Math.abs(n-o)<=r.EPSILON*Math.max(1,Math.abs(n),Math.abs(o))&&Math.abs(a-i)<=r.EPSILON*Math.max(1,Math.abs(a),Math.abs(i))&&Math.abs(s-u)<=r.EPSILON*Math.max(1,Math.abs(s),Math.abs(u))}var H,G=h,W=p,q=d,K=_,X=E,Y=o,Z=T,J=(H=a(),function(e,t,n,r,a,s){var o,i;for(t||(t=3),n||(n=0),i=r?Math.min(r*t+n,e.length):e.length,o=n;o{e.exports=n;var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(e){}function n(e,t,n){this.low=0|e,this.high=0|t,this.unsigned=!!n}function r(e){return!0===(e&&e.__isLong__)}n.prototype.__isLong__,Object.defineProperty(n.prototype,"__isLong__",{value:!0}),n.isLong=r;var a={},s={};function o(e,t){var n,r,o;return t?(o=0<=(e>>>=0)&&e<256)&&(r=s[e])?r:(n=u(e,(0|e)<0?-1:0,!0),o&&(s[e]=n),n):(o=-128<=(e|=0)&&e<128)&&(r=a[e])?r:(n=u(e,e<0?-1:0,!1),o&&(a[e]=n),n)}function i(e,t){if(isNaN(e))return t?y:g;if(t){if(e<0)return y;if(e>=d)return E}else{if(e<=-f)return T;if(e+1>=f)return _}return e<0?i(-e,t).neg():u(e%p|0,e/p|0,t)}function u(e,t,r){return new n(e,t,r)}n.fromInt=o,n.fromNumber=i,n.fromBits=u;var l=Math.pow;function c(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return g;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return c(e.substring(1),t,n).neg();for(var a=i(l(n,8)),s=g,o=0;o>>0:this.low},w.toNumber=function(){return this.unsigned?(this.high>>>0)*p+(this.low>>>0):this.high*p+(this.low>>>0)},w.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((s=u).isZero())return c+o;for(;c.length<6;)c="0"+c;o=""+c+o}},w.getHighBits=function(){return this.high},w.getHighBitsUnsigned=function(){return this.high>>>0},w.getLowBits=function(){return this.low},w.getLowBitsUnsigned=function(){return this.low>>>0},w.getNumBitsAbs=function(){if(this.isNegative())return this.eq(T)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},w.isOdd=function(){return 1==(1&this.low)},w.isEven=function(){return 0==(1&this.low)},w.equals=function(e){return r(e)||(e=h(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},w.eq=w.equals,w.notEquals=function(e){return!this.eq(e)},w.neq=w.notEquals,w.ne=w.notEquals,w.lessThan=function(e){return this.comp(e)<0},w.lt=w.lessThan,w.lessThanOrEqual=function(e){return this.comp(e)<=0},w.lte=w.lessThanOrEqual,w.le=w.lessThanOrEqual,w.greaterThan=function(e){return this.comp(e)>0},w.gt=w.greaterThan,w.greaterThanOrEqual=function(e){return this.comp(e)>=0},w.gte=w.greaterThanOrEqual,w.ge=w.greaterThanOrEqual,w.compare=function(e){if(r(e)||(e=h(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},w.comp=w.compare,w.negate=function(){return!this.unsigned&&this.eq(T)?T:this.not().add(v)},w.neg=w.negate,w.add=function(e){r(e)||(e=h(e));var t=this.high>>>16,n=65535&this.high,a=this.low>>>16,s=65535&this.low,o=e.high>>>16,i=65535&e.high,l=e.low>>>16,c=0,p=0,d=0,f=0;return d+=(f+=s+(65535&e.low))>>>16,p+=(d+=a+l)>>>16,c+=(p+=n+i)>>>16,c+=t+o,u((d&=65535)<<16|(f&=65535),(c&=65535)<<16|(p&=65535),this.unsigned)},w.subtract=function(e){return r(e)||(e=h(e)),this.add(e.neg())},w.sub=w.subtract,w.multiply=function(e){if(this.isZero())return g;if(r(e)||(e=h(e)),t)return u(t.mul(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned);if(e.isZero())return g;if(this.eq(T))return e.isOdd()?T:g;if(e.eq(T))return this.isOdd()?T:g;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(m)&&e.lt(m))return i(this.toNumber()*e.toNumber(),this.unsigned);var n=this.high>>>16,a=65535&this.high,s=this.low>>>16,o=65535&this.low,l=e.high>>>16,c=65535&e.high,p=e.low>>>16,d=65535&e.low,f=0,y=0,v=0,x=0;return v+=(x+=o*d)>>>16,y+=(v+=s*d)>>>16,v&=65535,y+=(v+=o*p)>>>16,f+=(y+=a*d)>>>16,y&=65535,f+=(y+=s*p)>>>16,y&=65535,f+=(y+=o*c)>>>16,f+=n*d+a*p+s*c+o*l,u((v&=65535)<<16|(x&=65535),(f&=65535)<<16|(y&=65535),this.unsigned)},w.mul=w.multiply,w.divide=function(e){if(r(e)||(e=h(e)),e.isZero())throw Error("division by zero");var n,a,s;if(t)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?u((this.unsigned?t.div_u:t.div_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?y:g;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return y;if(e.gt(this.shru(1)))return x;s=y}else{if(this.eq(T))return e.eq(v)||e.eq(b)?T:e.eq(T)?v:(n=this.shr(1).div(e).shl(1)).eq(g)?e.isNegative()?v:b:(a=this.sub(e.mul(n)),s=n.add(a.div(e)));if(e.eq(T))return this.unsigned?y:g;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();s=g}for(a=this;a.gte(e);){n=Math.max(1,Math.floor(a.toNumber()/e.toNumber()));for(var o=Math.ceil(Math.log(n)/Math.LN2),c=o<=48?1:l(2,o-48),p=i(n),d=p.mul(e);d.isNegative()||d.gt(a);)d=(p=i(n-=c,this.unsigned)).mul(e);p.isZero()&&(p=v),s=s.add(p),a=a.sub(d)}return s},w.div=w.divide,w.modulo=function(e){return r(e)||(e=h(e)),t?u((this.unsigned?t.rem_u:t.rem_s)(this.low,this.high,e.low,e.high),t.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},w.mod=w.modulo,w.rem=w.modulo,w.not=function(){return u(~this.low,~this.high,this.unsigned)},w.and=function(e){return r(e)||(e=h(e)),u(this.low&e.low,this.high&e.high,this.unsigned)},w.or=function(e){return r(e)||(e=h(e)),u(this.low|e.low,this.high|e.high,this.unsigned)},w.xor=function(e){return r(e)||(e=h(e)),u(this.low^e.low,this.high^e.high,this.unsigned)},w.shiftLeft=function(e){return r(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?u(this.low<>>32-e,this.unsigned):u(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):u(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},w.shr=w.shiftRight,w.shiftRightUnsigned=function(e){if(r(e)&&(e=e.toInt()),0==(e&=63))return this;var t=this.high;return e<32?u(this.low>>>e|t<<32-e,t>>>e,this.unsigned):u(32===e?t:t>>>e-32,0,this.unsigned)},w.shru=w.shiftRightUnsigned,w.shr_u=w.shiftRightUnsigned,w.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},w.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},w.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},w.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},w.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},n.fromBytes=function(e,t,r){return r?n.fromBytesLE(e,t):n.fromBytesBE(e,t)},n.fromBytesLE=function(e,t){return new n(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},n.fromBytesBE=function(e,t){return new n(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)}},418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,a){for(var s,o,i=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;u{"use strict";n.d(t,{Z:()=>x});let r=window,a=60,s=performance.now(),o=0,i=0,u=s;const l=[],c=[],h=[],p=[];let d=[],f=[],m=-1,g=0;function y(){!function(){let e,t=0,n=1e3/a,r=0;for(t=0;t0;)e=d.pop(),e.func(e.args);let m=performance.now();for(i=(m-s)/1e3,o=m-u,t=0;te.delay&&(e.func(e.args),c.splice(t,1));for(m=performance.now();h.length>0;){if(e=h.shift(),r=performance.now(),!(r-m0;)e=p.shift(),r=performance.now(),r-m-1&&window.cancelAnimationFrame(m),r=e,y()},setFrameRate:function(e){a=e},getElapsedTime:function(){return i},getDeltaTime:function(){return o}};const x=v},377:(e,t,n)=>{var r=n(832),a=n(652),s=n(801),o=n(30),i=n(618),u=n(49),l=n(971);l.alea=r,l.xor128=a,l.xorwow=s,l.xorshift7=o,l.xor4096=i,l.tychei=u,e.exports=l},832:function(e,t,n){var r;!function(e,a,s){function o(e){var t,n=this,r=(t=4022871197,function(e){e=String(e);for(var n=0;n>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function i(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function u(e,t){var n=new o(e),r=t&&t.state,a=n.next;return a.int32=function(){return 4294967296*n.next()|0},a.double=function(){return a()+11102230246251565e-32*(2097152*a()|0)},a.quick=a,r&&("object"==typeof r&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.alea=u}(0,e=n.nmd(e),n.amdD)},49:function(e,t,n){var r;!function(e,a,s){function o(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return a.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},a.int32=n.next,a.quick=a,r&&("object"==typeof r&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.tychei=u}(0,e=n.nmd(e),n.amdD)},652:function(e,t,n){var r;!function(e,a,s){function o(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return a.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},a.int32=n.next,a.quick=a,r&&("object"==typeof r&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.xor128=u}(0,e=n.nmd(e),n.amdD)},618:function(e,t,n){var r;!function(e,a,s){function o(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,s=t.i;return t.w=r=r+1640531527|0,n=a[s+34&127],e=a[s=s+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[s]=n^e,t.i=s,n+(r^r>>>16)|0},function(e,t){var n,r,a,s,o,i=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,s=-32;s>>15,r^=r<<4,r^=r>>>13,s>=0&&(o=o+1640531527|0,a=0==(n=i[127&s]^=r+o)?a+1:0);for(a>=128&&(i[127&(t&&t.length||0)]=-1),a=127,s=512;s>0;--s)r=i[a+34&127],n=i[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,i[a]=r^n;e.w=o,e.X=i,e.i=a}(t,e)}function i(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function u(e,t){null==e&&(e=+new Date);var n=new o(e),r=t&&t.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},a.int32=n.next,a.quick=a,r&&(r.X&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.xor4096=u}(0,e=n.nmd(e),n.amdD)},30:function(e,t,n){var r;!function(e,a,s){function o(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}function i(e,t){return t.x=e.x.slice(),t.i=e.i,t}function u(e,t){null==e&&(e=+new Date);var n=new o(e),r=t&&t.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},a.int32=n.next,a.quick=a,r&&(r.x&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.xorshift7=u}(0,e=n.nmd(e),n.amdD)},801:function(e,t,n){var r;!function(e,a,s){function o(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function u(e,t){var n=new o(e),r=t&&t.state,a=function(){return(n.next()>>>0)/4294967296};return a.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},a.int32=n.next,a.quick=a,r&&("object"==typeof r&&i(r,n),a.state=function(){return i(n,{})}),a}a&&a.exports?a.exports=u:n.amdD&&n.amdO?void 0===(r=function(){return u}.call(t,n,t,a))||(a.exports=r):this.xorwow=u}(0,e=n.nmd(e),n.amdD)},971:function(e,t,n){var r;!function(a,s,o){var i,u=256,l=o.pow(u,6),c=o.pow(2,52),h=2*c,p=u-1;function d(e,t,n){var r=[],p=y(g((t=1==t?{entropy:!0}:t||{}).entropy?[e,v(s)]:null==e?function(){try{var e;return i&&(e=i.randomBytes)?e=e(u):(e=new Uint8Array(u),(a.crypto||a.msCrypto).getRandomValues(e)),v(e)}catch(e){var t=a.navigator,n=t&&t.plugins;return[+new Date,a,n,a.screen,v(s)]}}():e,3),r),d=new f(r),x=function(){for(var e=d.g(6),t=l,n=0;e=h;)e/=2,t/=2,n>>>=1;return(e+n)/t};return x.int32=function(){return 0|d.g(4)},x.quick=function(){return d.g(4)/4294967296},x.double=x,y(v(d.S),s),(t.pass||n||function(e,t,n,r){return r&&(r.S&&m(r,d),e.state=function(){return m(d,{})}),n?(o.random=e,t):e})(x,p,"global"in t?t.global:this==o,t.state)}function f(e){var t,n=e.length,r=this,a=0,s=r.i=r.j=0,o=r.S=[];for(n||(e=[n++]);a{"use strict";n.d(t,{default:()=>r});const r={numParticles:64,numSets:16,extreme:!0,autoSave:!1,useHandDetection:!1,showThumbnail:!1,margin:100,thumbnailSize:256,background:[22,22,22]}},643:()=>{Array.prototype.flat||Object.defineProperty(Array.prototype,"flat",{configurable:!0,value:function e(){var t=isNaN(arguments[0])?1:Number(arguments[0]);return t?Array.prototype.reduce.call(this,(function(n,r){return Array.isArray(r)?n.push.apply(n,e.call(r,t-1)):n.push(r),n}),[]):Array.prototype.slice.call(this)},writable:!0})},447:e=>{e.exports={TEXTURE_SIZE:128,TEXTURE_DOWNSAMPLE:2,DENSITY_DISSIPATION:.994,VELOCITY_DISSIPATION:.996,PRESSURE_DISSIPATION:.996,PRESSURE_ITERATIONS:20}},841:e=>{e.exports="precision highp float;\nvarying vec2 vTextureCoord;\nuniform sampler2D textureBase;\nuniform sampler2D textureAdd;\nuniform float uStrength;\n\nvoid main(void) {\n vec3 base = texture2D(textureBase, vTextureCoord).xyz;\n vec3 add = texture2D(textureAdd, vTextureCoord).xyz;\n gl_FragColor = vec4(base + add * uStrength, 1.0);\n}"},333:e=>{e.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform float uTimestep;\nuniform float uDissipation;\nuniform vec2 uTexelSize; // 1 / grid scale \nuniform sampler2D textureVel; // input textureVel\nuniform sampler2D textureMap; // quantity to advect\n\nvoid main() {\n\tvec2 pos = vTextureCoord - uTimestep * uTexelSize * texture2D(textureVel, vTextureCoord).xy;\n\tgl_FragColor = uDissipation * texture2D(textureMap, pos);\n}"},110:e=>{e.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform sampler2D texturePressure;\nuniform float uDissipation;\n\nvoid main() {\n gl_FragColor = uDissipation * texture2D(texturePressure, vTextureCoord);\n}"},125:e=>{e.exports="\n\nvec3 mod289(vec3 x) {\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\t}\n\nvec4 mod289(vec4 x) {\treturn x - floor(x * (1.0 / 289.0)) * 289.0;\t}\n\nvec4 permute(vec4 x) {\treturn mod289(((x*34.0)+1.0)*x);\t}\n\nvec4 taylorInvSqrt(vec4 r) {\treturn 1.79284291400159 - 0.85373472095314 * r;}\n\nfloat snoise(vec3 v) { \n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n\n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n\n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n\n vec3 x1 = x0 - i1 + C.xxx;\n vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y\n vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y\n\n i = mod289(i); \n vec4 p = permute( permute( permute( \n i.z + vec4(0.0, i1.z, i2.z, 1.0 ))\n + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) \n + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n\n float n_ = 0.142857142857; // 1.0/7.0\n vec3 ns = n_ * D.wyz - D.xzx;\n\n vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7)\n\n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N)\n\n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n\n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n\n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n\n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n\n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n\n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n\n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), \n dot(p2,x2), dot(p3,x3) ) );\n}\n\nvec3 snoiseVec3( vec3 x ){\n\n float s = snoise(vec3( x ));\n float s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n float s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n vec3 c = vec3( s , s1 , s2 );\n return c;\n\n}\n\nvec3 curlNoise( vec3 p ){\n \n const float e = .1;\n vec3 dx = vec3( e , 0.0 , 0.0 );\n vec3 dy = vec3( 0.0 , e , 0.0 );\n vec3 dz = vec3( 0.0 , 0.0 , e );\n\n vec3 p_x0 = snoiseVec3( p - dx );\n vec3 p_x1 = snoiseVec3( p + dx );\n vec3 p_y0 = snoiseVec3( p - dy );\n vec3 p_y1 = snoiseVec3( p + dy );\n vec3 p_z0 = snoiseVec3( p - dz );\n vec3 p_z1 = snoiseVec3( p + dz );\n\n float x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n float y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n float z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n\n const float divisor = 1.0 / ( 2.0 * e );\n return normalize( vec3( x , y , z ) * divisor );\n\n}"},287:e=>{e.exports="\nprecision highp float;\nprecision mediump sampler2D;\n\nvarying vec2 vTextureCoord; // grid coordinates\nuniform vec2 uTexelSize;\nuniform sampler2D textureVel; // vector field\n\nvec2 sampleVelocity(in vec2 uv) {\n vec2 mult = vec2(1.0, 1.0);\n if (uv.x < 0.0 || uv.x > 1.0) { mult.x = -1.0; }\n if (uv.y < 0.0 || uv.y > 1.0) { mult.y = -1.0; }\n return texture2D(textureVel, uv).xy;\n}\n\nvoid main() {\n float L = sampleVelocity(vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n float R = sampleVelocity(vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n float T = sampleVelocity(vTextureCoord + vec2(0.0, uTexelSize.y)).y;\n float B = sampleVelocity(vTextureCoord - vec2(0.0, uTexelSize.y)).y;\n float div = 0.5 * (R - L + T - B);\n gl_FragColor = vec4(div, 0.0, 0.0, 1.0);\n}"},546:e=>{e.exports="precision highp float;\n\nvarying vec2 vTextureCoord;\nuniform vec2 uTexelSize;\nuniform sampler2D texturePressure;\nuniform sampler2D textureVel;\n\nvoid main() {\n\tfloat pL = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n\tfloat pR = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n\tfloat pB = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x;\n\tfloat pT = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x;\n\tvec2 v = texture2D(textureVel, vTextureCoord).xy;\n\tgl_FragColor = vec4(v - vec2(pR - pL, pT - pB), 0.0, 1.0);\n}"},639:e=>{e.exports="precision highp float;\nprecision mediump sampler2D;\n\nvarying vec2 vTextureCoord; // grid coordinates \nuniform vec2 uTexelSize;\nuniform sampler2D texturePressure;\nuniform sampler2D textureDivergence;\n\nvoid main() {\n // left, right, bottom, and top texturePressure samples\n float L = texture2D(texturePressure, vTextureCoord - vec2(uTexelSize.x, 0.0)).x;\n float R = texture2D(texturePressure, vTextureCoord + vec2(uTexelSize.x, 0.0)).x;\n float B = texture2D(texturePressure, vTextureCoord - vec2(0.0, uTexelSize.y)).x;\n float T = texture2D(texturePressure, vTextureCoord + vec2(0.0, uTexelSize.y)).x;\n\n // textureDivergence sample, from center\n float bC = texture2D(textureDivergence, vTextureCoord).x;\n \n // evaluate Jacobi iteration\n gl_FragColor = vec4(0.25 * (L + R + B + T - bC), 0, 0, 1);\n}"},389:(e,t,n)=>{const r=n(125);e.exports=`\n// copy.frag\n\n#define SHADER_NAME SIMPLE_TEXTURE\n\nprecision highp float;\nvarying vec2 vTextureCoord;\nuniform sampler2D texture;\n\nuniform vec2 uCenter;\nuniform vec2 uDir;\nuniform float uTime;\nuniform float uRadius;\nuniform float uStrength;\nuniform float uNoiseStrength;\nuniform float uIsVelocity;\n\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, -s, s, c);\n\treturn m * v;\n}\n\n${r}\n\n#define PI 3.141592653\n\nvoid main(void) {\n\tvec2 center = uCenter;\n\n\tfloat r = 0.15 + sin(cos(uTime) * 4.489538925) * 0.0;\n\tvec2 v = vec2(r, 0.0);\n\tv = rotate(v, uTime);\n\t\n\tvec3 noise = curlNoise(vec3(vTextureCoord * 2.0, uTime)) * uNoiseStrength;\n\n\tvec2 dir = uDir;\n\tdir *= uStrength;\n\tfloat d = distance(vTextureCoord, center);\n\td = smoothstep(uRadius, 0.0, d);\n\t\n\t\n\tvec3 color = uIsVelocity > 0.5 ? vec3(dir, 0.0) : vec3(uStrength);\n\tif(uIsVelocity > .5) {\n\t\tcolor += noise * 0.5;\n\t} else {\n\t\tcolor += noise.rrr * uStrength;\n\t}\n\tcolor *= d;\n\t\n\tvec3 base = texture2D(texture, vTextureCoord).xyz;\n\t\n\tgl_FragColor = vec4(color + base, 1.0);\n}\n`},297:()=>{let e="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";var t="oo"+Array(49).fill(0).map((t=>e[58*Math.random()|0])).join("");let n=t.slice(2),r=new RegExp(".{"+(t.length/4|0)+"}","g"),a=n.match(r).map((t=>{return(n=t).split("").reduce(((t,r,a)=>t+e.indexOf(r)*Math.pow(58,n.length-a-1)),0);var n}));window.fxhash=t,window.fxrand=((e,t,n,r)=>()=>{var a=((e|=0)+(t|=0)|0)+(r|=0)|0;return r=r+1|0,e=t^t>>>9,t=(n|=0)+(n<<3)|0,n=(n=n<<21|n>>>11)+a|0,(a>>>0)/4294967296})(...a)},619:(e,t,n)=>{"use strict";n.d(t,{Ag:()=>o,jE:()=>p,gO:()=>h,H:()=>i,CD:()=>l,MX:()=>u,Ak:()=>r,CW:()=>c});const r=(e,t="data",n=!0)=>{var r=n?JSON.stringify(e,null,4):JSON.stringify(e),s=a(r),o=new Blob([s],{type:"application/octet-stream"}),i=URL.createObjectURL(o),u=document.createElement("a");u.setAttribute("href",i),u.setAttribute("download",`${t}.json`);var l=document.createEvent("MouseEvents");l.initMouseEvent("click",!0,!0,window,1,0,0,0,0,!1,!1,!1,!1,0,null),u.dispatchEvent(l)},a=e=>{for(var t=[],n=0;n{console.error(e)},u=(e,t)=>void 0===e?fxrand():void 0===t?fxrand()*e:e+(t-e)*fxrand(),l=(e,t,n)=>e*(1-n)+t*n,c=(e,t,n)=>{var r=Math.max(0,Math.min(1,(n-e)/(t-e)));return r*r*(3-2*r)},h=()=>["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document,p=s.fromValues(.5,0,0,0,0,.5,0,0,0,0,.5,0,.5,.5,.5,1)},410:()=>{},628:()=>{},42:()=>{}},r={};function a(e){var t=r[e];if(void 0!==t)return t.exports;var s=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(s.exports,s,s.exports,a),s.loaded=!0,s.exports}a.m=n,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,n)=>(a.f[n](e,t),t)),[])),a.u=e=>e+".bundle.js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="fxhash-boilerplate-webpack:",a.l=(n,r,s,o)=>{if(e[n])e[n].push(r);else{var i,u;if(void 0!==s)for(var l=document.getElementsByTagName("script"),c=0;c{i.onerror=i.onload=null,clearTimeout(d);var a=e[n];if(delete e[n],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach((e=>e(r))),t)return t(r)},d=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}},a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var t=a.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var n=t.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&!e;)e=n[r--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={179:0};a.f.j=(t,n)=>{var r=a.o(e,t)?e[t]:void 0;if(0!==r)if(r)n.push(r[2]);else{var s=new Promise(((n,a)=>r=e[t]=[n,a]));n.push(r[2]=s);var o=a.p+a.u(t),i=new Error;a.l(o,(n=>{if(a.o(e,t)&&(0!==(r=e[t])&&(e[t]=void 0),r)){var s=n&&("load"===n.type?"missing":n.type),o=n&&n.target&&n.target.src;i.message="Loading chunk "+t+" failed.\n("+s+": "+o+")",i.name="ChunkLoadError",i.type=s,i.request=o,r[1](i)}}),"chunk-"+t,t)}};var t=(t,n)=>{var r,s,[o,i,u]=n,l=0;if(o.some((t=>0!==e[t]))){for(r in i)a.o(i,r)&&(a.m[r]=i[r]);u&&u(a)}for(t&&t(n);l{"use strict";var e={};a.r(e),a.d(e,{CompositeArrayBuffer:()=>Vn,browserFiles:()=>va,browserHTTPRequest:()=>Ma,concatenateArrayBuffers:()=>Xn,copyModel:()=>Lr,decodeWeights:()=>Gn,encodeWeights:()=>Hn,fromMemory:()=>ka,fromMemorySync:()=>Ca,getLoadHandlers:()=>ir,getModelArtifactsForJSON:()=>Qn,getModelArtifactsForJSONSync:()=>Jn,getModelArtifactsInfoForJSON:()=>er,getSaveHandlers:()=>or,getWeightSpecs:()=>tr,http:()=>Sa,isHTTPScheme:()=>wa,listModels:()=>Or,loadWeights:()=>_a,moveModel:()=>Pr,registerLoadRouter:()=>sr,registerSaveRouter:()=>ar,removeModel:()=>Dr,weightsLoaderFactory:()=>Ea,withSaveHandler:()=>Oa,withSaveHandlerSync:()=>Da});var t={};a.r(t),a.d(t,{conv2d:()=>Lu,depthwiseConv2d:()=>Bu,matMul:()=>zu});var n={};a.r(n),a.d(n,{json:()=>ql});var r={};a.r(r),a.d(r,{json:()=>Kl});var s={};a.r(s),a.d(s,{json:()=>Xl});var o={};a.r(o),a.d(o,{json:()=>Yl});var i={};a.r(i),a.d(i,{json:()=>Zl});var u={};a.r(u),a.d(u,{json:()=>Jl});var l={};a.r(l),a.d(l,{json:()=>Ql});var c={};a.r(c),a.d(c,{json:()=>ec});var h={};a.r(h),a.d(h,{json:()=>tc});var p={};a.r(p),a.d(p,{json:()=>nc});var d={};a.r(d),a.d(d,{json:()=>rc});var f={};a.r(f),a.d(f,{json:()=>ac});var m={};a.r(m),a.d(m,{json:()=>sc});var g={};a.r(g),a.d(g,{json:()=>oc});var y={};a.r(y),a.d(y,{json:()=>ic});var v={};a.r(v),a.d(v,{json:()=>uc});var x={};a.r(x),a.d(x,{json:()=>lc});var b={};a.r(b),a.d(b,{json:()=>cc});var _={};a.r(_),a.d(_,{json:()=>hc});var E={};a.r(E),a.d(E,{OP_SCOPE_SUFFIX:()=>Pn,abs:()=>ca,acos:()=>Ua,acosh:()=>$a,add:()=>Wr,addN:()=>Va,all:()=>ja,any:()=>Ha,argMax:()=>Ga,argMin:()=>Wa,asin:()=>qa,asinh:()=>Ka,atan:()=>Xa,atan2:()=>Ya,atanh:()=>Za,avgPool:()=>is,avgPool3d:()=>us,basicLSTMCell:()=>fs,batchNorm:()=>gs,batchNorm2d:()=>ys,batchNorm3d:()=>vs,batchNorm4d:()=>xs,batchToSpaceND:()=>ms,bincount:()=>bs,bitwiseAnd:()=>_s,booleanMaskAsync:()=>bu,broadcastArgs:()=>Es,broadcastTo:()=>Ts,buffer:()=>zr,cast:()=>Ur,ceil:()=>ws,clipByValue:()=>Ns,clone:()=>$r,complex:()=>Bn,concat:()=>ls,concat1d:()=>Ss,concat2d:()=>Ms,concat3d:()=>As,concat4d:()=>Rs,conv1d:()=>ks,conv2d:()=>Is,conv2dTranspose:()=>Os,conv3d:()=>Ds,conv3dTranspose:()=>Ps,cos:()=>Fs,cosh:()=>Bs,cosineWindow:()=>Au,cumprod:()=>zs,cumsum:()=>Us,denseBincount:()=>$s,depthToSpace:()=>Vs,depthwiseConv2d:()=>js,diag:()=>Hs,dilation2d:()=>Gs,div:()=>Kr,divNoNan:()=>Ks,dot:()=>Xs,dropout:()=>Su,einsum:()=>Ys,elu:()=>Zs,enclosingPowerOfTwo:()=>Mu,ensureShape:()=>Js,equal:()=>Ws,erf:()=>Qs,euclideanNorm:()=>oo,exp:()=>io,expandDims:()=>uo,expm1:()=>lo,eye:()=>ho,fft:()=>Ki,fill:()=>ia,floor:()=>po,floorDiv:()=>qr,fused:()=>t,gather:()=>fo,gatherND:()=>Nu,greater:()=>mo,greaterEqual:()=>go,ifft:()=>Xi,imag:()=>yo,image:()=>Il,inTopKAsync:()=>Ru,irfft:()=>Yi,isFinite:()=>vo,isInf:()=>xo,isNaN:()=>bo,leakyRelu:()=>_o,less:()=>Eo,lessEqual:()=>To,linalg:()=>kl,linspace:()=>wo,localResponseNormalization:()=>No,log:()=>So,log1p:()=>Mo,logSigmoid:()=>Io,logSoftmax:()=>ko,logSumExp:()=>Co,logicalAnd:()=>Oo,logicalNot:()=>Do,logicalOr:()=>Lo,logicalXor:()=>Po,losses:()=>Cl,lowerBound:()=>zo,matMul:()=>cs,max:()=>to,maxPool:()=>Uo,maxPool3d:()=>$o,maxPoolWithArgmax:()=>Vo,maximum:()=>pa,mean:()=>jo,meshgrid:()=>Wo,min:()=>no,minimum:()=>qo,mirrorPad:()=>Ko,mod:()=>Xo,moments:()=>Yo,movingAverage:()=>Eu,mul:()=>Xr,multiRNNCell:()=>Zo,multinomial:()=>Jo,neg:()=>Ao,norm:()=>so,notEqual:()=>Qo,oneHot:()=>ei,ones:()=>Go,onesLike:()=>ti,op:()=>Fn,outerProduct:()=>ni,pad:()=>ri,pad1d:()=>ai,pad2d:()=>si,pad3d:()=>oi,pad4d:()=>ii,pool:()=>li,pow:()=>ua,prelu:()=>ci,print:()=>Vr,prod:()=>hi,raggedGather:()=>pi,raggedRange:()=>di,raggedTensorToTensor:()=>fi,rand:()=>mi,randomGamma:()=>bi,randomNormal:()=>_i,randomStandardNormal:()=>Ei,randomUniform:()=>Ti,randomUniformInt:()=>wi,range:()=>Ni,real:()=>Si,reciprocal:()=>Mi,relu:()=>Ai,relu6:()=>Ri,reshape:()=>os,reverse:()=>Ii,reverse1d:()=>ki,reverse2d:()=>Ci,reverse3d:()=>Oi,reverse4d:()=>Di,rfft:()=>Ji,round:()=>Li,rsqrt:()=>Pi,scalar:()=>ea,scatterND:()=>Tu,searchSorted:()=>Bo,selu:()=>Fi,separableConv2d:()=>Bi,setdiff1dAsync:()=>zi,sigmoid:()=>hs,sign:()=>Ui,signal:()=>Rl,sin:()=>$i,sinh:()=>Vi,slice:()=>ps,slice1d:()=>ji,slice2d:()=>Hi,slice3d:()=>Gi,slice4d:()=>Wi,softmax:()=>qi,softplus:()=>Ro,spaceToBatchND:()=>ui,sparse:()=>Ol,sparseToDense:()=>wu,spectral:()=>Al,split:()=>Zi,sqrt:()=>Yr,square:()=>Zr,squaredDifference:()=>Qi,squeeze:()=>eu,stack:()=>tu,step:()=>nu,stridedSlice:()=>ru,string:()=>Dl,sub:()=>la,sum:()=>ro,tan:()=>au,tanh:()=>ds,tensor:()=>Un,tensor1d:()=>su,tensor2d:()=>ou,tensor3d:()=>La,tensor4d:()=>iu,tensor5d:()=>uu,tensor6d:()=>lu,tensorScatterUpdate:()=>hu,tile:()=>co,topk:()=>pu,transpose:()=>_u,truncatedNormal:()=>du,unique:()=>fu,unsortedSegmentSum:()=>mu,unstack:()=>gu,upperBound:()=>yu,variable:()=>vu,where:()=>qs,whereAsync:()=>xu,zeros:()=>Ho,zerosLike:()=>Jr}),a(297);var T=a(187),w=a.n(T),N=a(418),S=a.n(N),M=a(685);function A(e,t){const n=e.getExtension(t);if(!n)return!1;const r=t.split("_")[0],a=new RegExp(`${r}$`);for(const t in n)if("function"==typeof n[t]){const r=t.replace(a,"");t.substring&&(e[r]=n[t].bind(n))}return!0}const R=["EXT_shader_texture_lod","EXT_sRGB","EXT_frag_depth","OES_texture_float","OES_texture_half_float","OES_texture_float_linear","OES_texture_half_float_linear","OES_standard_derivatives","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_color_buffer_half_float","OES_vertex_array_object","WEBGL_depth_texture","ANGLE_instanced_arrays","WEBGL_color_buffer_float","WEBGL_draw_buffers","EXT_color_buffer_float"],I=(()=>{let e=!1;return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&(e=!0),e})(),k=(e,t)=>{if("number"==typeof e)return M.equals(e,t);if(e.length!==t.length)return!1;let n=!0;return e.forEach(((e,r)=>{n=M.equals(e,t[r])&&n})),n},C=e=>{let t,n;return e.touches?(t=e.touches[0].pageX,n=e.touches[0].pageY):(t=e.clientX,n=e.clientY),{x:t,y:n}},O={ACTIVE_ATTRIBUTES:35721,ACTIVE_ATTRIBUTE_MAX_LENGTH:35722,ACTIVE_TEXTURE:34016,ACTIVE_UNIFORMS:35718,ACTIVE_UNIFORM_MAX_LENGTH:35719,ALIASED_LINE_WIDTH_RANGE:33902,ALIASED_POINT_SIZE_RANGE:33901,ALPHA:6406,ALPHA_BITS:3413,ALWAYS:519,ARRAY_BUFFER:34962,ARRAY_BUFFER_BINDING:34964,ATTACHED_SHADERS:35717,BACK:1029,BLEND:3042,BLEND_COLOR:32773,BLEND_DST_ALPHA:32970,BLEND_DST_RGB:32968,BLEND_EQUATION:32777,BLEND_EQUATION_ALPHA:34877,BLEND_EQUATION_RGB:32777,BLEND_SRC_ALPHA:32971,BLEND_SRC_RGB:32969,BLUE_BITS:3412,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,BROWSER_DEFAULT_WEBGL:37444,BUFFER_SIZE:34660,BUFFER_USAGE:34661,BYTE:5120,CCW:2305,CLAMP_TO_EDGE:33071,COLOR_ATTACHMENT0:36064,COLOR_BUFFER_BIT:16384,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,COMPILE_STATUS:35713,COMPRESSED_TEXTURE_FORMATS:34467,CONSTANT_ALPHA:32771,CONSTANT_COLOR:32769,CONTEXT_LOST_WEBGL:37442,CULL_FACE:2884,CULL_FACE_MODE:2885,CURRENT_PROGRAM:35725,CURRENT_VERTEX_ATTRIB:34342,CW:2304,DECR:7683,DECR_WRAP:34056,DELETE_STATUS:35712,DEPTH_ATTACHMENT:36096,DEPTH_BITS:3414,DEPTH_BUFFER_BIT:256,DEPTH_CLEAR_VALUE:2931,DEPTH_COMPONENT:6402,RED:6403,DEPTH_COMPONENT16:33189,DEPTH_FUNC:2932,DEPTH_RANGE:2928,DEPTH_STENCIL:34041,DEPTH_STENCIL_ATTACHMENT:33306,DEPTH_TEST:2929,DEPTH_WRITEMASK:2930,DITHER:3024,DONT_CARE:4352,DST_ALPHA:772,DST_COLOR:774,DYNAMIC_DRAW:35048,ELEMENT_ARRAY_BUFFER:34963,ELEMENT_ARRAY_BUFFER_BINDING:34965,EQUAL:514,FASTEST:4353,FLOAT:5126,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,FRAGMENT_SHADER:35632,FRAMEBUFFER:36160,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_BINDING:36006,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_UNSUPPORTED:36061,FRONT:1028,FRONT_AND_BACK:1032,FRONT_FACE:2886,FUNC_ADD:32774,FUNC_REVERSE_SUBTRACT:32779,FUNC_SUBTRACT:32778,GENERATE_MIPMAP_HINT:33170,GEQUAL:518,GREATER:516,GREEN_BITS:3411,HALF_FLOAT:36193,HIGH_FLOAT:36338,HIGH_INT:36341,INCR:7682,INCR_WRAP:34055,INFO_LOG_LENGTH:35716,INT:5124,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,INVALID_ENUM:1280,INVALID_FRAMEBUFFER_OPERATION:1286,INVALID_OPERATION:1282,INVALID_VALUE:1281,INVERT:5386,KEEP:7680,LEQUAL:515,LESS:513,LINEAR:9729,LINEAR_MIPMAP_LINEAR:9987,LINEAR_MIPMAP_NEAREST:9985,LINES:1,LINE_LOOP:2,LINE_STRIP:3,LINE_WIDTH:2849,LINK_STATUS:35714,LOW_FLOAT:36336,LOW_INT:36339,LUMINANCE:6409,LUMINANCE_ALPHA:6410,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_CUBE_MAP_TEXTURE_SIZE:34076,MAX_FRAGMENT_UNIFORM_VECTORS:36349,MAX_RENDERBUFFER_SIZE:34024,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_TEXTURE_SIZE:3379,MAX_VARYING_VECTORS:36348,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VIEWPORT_DIMS:3386,MEDIUM_FLOAT:36337,MEDIUM_INT:36340,MIRRORED_REPEAT:33648,NEAREST:9728,NEAREST_MIPMAP_LINEAR:9986,NEAREST_MIPMAP_NEAREST:9984,NEVER:512,NICEST:4354,NONE:0,NOTEQUAL:517,NO_ERROR:0,NUM_COMPRESSED_TEXTURE_FORMATS:34466,ONE:1,ONE_MINUS_CONSTANT_ALPHA:32772,ONE_MINUS_CONSTANT_COLOR:32770,ONE_MINUS_DST_ALPHA:773,ONE_MINUS_DST_COLOR:775,ONE_MINUS_SRC_ALPHA:771,ONE_MINUS_SRC_COLOR:769,OUT_OF_MEMORY:1285,PACK_ALIGNMENT:3333,POINTS:0,POLYGON_OFFSET_FACTOR:32824,POLYGON_OFFSET_FILL:32823,POLYGON_OFFSET_UNITS:10752,RED_BITS:3410,RENDERBUFFER:36161,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_BINDING:36007,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_STENCIL_SIZE:36181,RENDERBUFFER_WIDTH:36162,RENDERER:7937,REPEAT:10497,REPLACE:7681,RGB:6407,RGB5_A1:32855,RGB565:36194,RGBA:6408,RGBA4:32854,SAMPLER_2D:35678,SAMPLER_CUBE:35680,SAMPLES:32937,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_BUFFERS:32936,SAMPLE_COVERAGE:32928,SAMPLE_COVERAGE_INVERT:32939,SAMPLE_COVERAGE_VALUE:32938,SCISSOR_BOX:3088,SCISSOR_TEST:3089,SHADER_COMPILER:36346,SHADER_SOURCE_LENGTH:35720,SHADER_TYPE:35663,SHADING_LANGUAGE_VERSION:35724,SHORT:5122,SRC_ALPHA:770,SRC_ALPHA_SATURATE:776,SRC_COLOR:768,STATIC_DRAW:35044,STENCIL_ATTACHMENT:36128,STENCIL_BACK_FAIL:34817,STENCIL_BACK_FUNC:34816,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,STENCIL_BITS:3415,STENCIL_BUFFER_BIT:1024,STENCIL_CLEAR_VALUE:2961,STENCIL_FAIL:2964,STENCIL_FUNC:2962,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_TEST:2960,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STREAM_DRAW:35040,SUBPIXEL_BITS:3408,TEXTURE:5890,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,TEXTURE_2D:3553,TEXTURE_BINDING_2D:32873,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP:34067,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TRIANGLES:4,TRIANGLE_FAN:6,TRIANGLE_STRIP:5,UNPACK_ALIGNMENT:3317,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,UNSIGNED_BYTE:5121,UNSIGNED_INT:5125,UNSIGNED_SHORT:5123,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,VALIDATE_STATUS:35715,VENDOR:7936,VERSION:7938,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_SHADER:35633,VIEWPORT:2978,ZERO:0,R8:33321},D={0:"NONE",1:"ONE",2:"LINE_LOOP",3:"LINE_STRIP",4:"TRIANGLES",5:"TRIANGLE_STRIP",6:"TRIANGLE_FAN",256:"DEPTH_BUFFER_BIT",512:"NEVER",513:"LESS",514:"EQUAL",515:"LEQUAL",516:"GREATER",517:"NOTEQUAL",518:"GEQUAL",519:"ALWAYS",768:"SRC_COLOR",769:"ONE_MINUS_SRC_COLOR",770:"SRC_ALPHA",771:"ONE_MINUS_SRC_ALPHA",772:"DST_ALPHA",773:"ONE_MINUS_DST_ALPHA",774:"DST_COLOR",775:"ONE_MINUS_DST_COLOR",776:"SRC_ALPHA_SATURATE",1024:"STENCIL_BUFFER_BIT",1028:"FRONT",1029:"BACK",1032:"FRONT_AND_BACK",1280:"INVALID_ENUM",1281:"INVALID_VALUE",1282:"INVALID_OPERATION",1285:"OUT_OF_MEMORY",1286:"INVALID_FRAMEBUFFER_OPERATION",2304:"CW",2305:"CCW",2849:"LINE_WIDTH",2884:"CULL_FACE",2885:"CULL_FACE_MODE",2886:"FRONT_FACE",2928:"DEPTH_RANGE",2929:"DEPTH_TEST",2930:"DEPTH_WRITEMASK",2931:"DEPTH_CLEAR_VALUE",2932:"DEPTH_FUNC",2960:"STENCIL_TEST",2961:"STENCIL_CLEAR_VALUE",2962:"STENCIL_FUNC",2963:"STENCIL_VALUE_MASK",2964:"STENCIL_FAIL",2965:"STENCIL_PASS_DEPTH_FAIL",2966:"STENCIL_PASS_DEPTH_PASS",2967:"STENCIL_REF",2968:"STENCIL_WRITEMASK",2978:"VIEWPORT",3024:"DITHER",3042:"BLEND",3088:"SCISSOR_BOX",3089:"SCISSOR_TEST",3106:"COLOR_CLEAR_VALUE",3107:"COLOR_WRITEMASK",3317:"UNPACK_ALIGNMENT",3333:"PACK_ALIGNMENT",3379:"MAX_TEXTURE_SIZE",3386:"MAX_VIEWPORT_DIMS",3408:"SUBPIXEL_BITS",3410:"RED_BITS",3411:"GREEN_BITS",3412:"BLUE_BITS",3413:"ALPHA_BITS",3414:"DEPTH_BITS",3415:"STENCIL_BITS",3553:"TEXTURE_2D",4352:"DONT_CARE",4353:"FASTEST",4354:"NICEST",5120:"BYTE",5121:"UNSIGNED_BYTE",5122:"SHORT",5123:"UNSIGNED_SHORT",5124:"INT",5125:"UNSIGNED_INT",5126:"FLOAT",5386:"INVERT",5890:"TEXTURE",6401:"STENCIL_INDEX",6402:"DEPTH_COMPONENT",6403:"RED",6406:"ALPHA",6407:"RGB",6408:"RGBA",6409:"LUMINANCE",6410:"LUMINANCE_ALPHA",7680:"KEEP",7681:"REPLACE",7682:"INCR",7683:"DECR",7936:"VENDOR",7937:"RENDERER",7938:"VERSION",9728:"NEAREST",9729:"LINEAR",9984:"NEAREST_MIPMAP_NEAREST",9985:"LINEAR_MIPMAP_NEAREST",9986:"NEAREST_MIPMAP_LINEAR",9987:"LINEAR_MIPMAP_LINEAR",10240:"TEXTURE_MAG_FILTER",10241:"TEXTURE_MIN_FILTER",10242:"TEXTURE_WRAP_S",10243:"TEXTURE_WRAP_T",10497:"REPEAT",10752:"POLYGON_OFFSET_UNITS",16384:"COLOR_BUFFER_BIT",32769:"CONSTANT_COLOR",32770:"ONE_MINUS_CONSTANT_COLOR",32771:"CONSTANT_ALPHA",32772:"ONE_MINUS_CONSTANT_ALPHA",32773:"BLEND_COLOR",32774:"FUNC_ADD",32777:"BLEND_EQUATION_RGB",32778:"FUNC_SUBTRACT",32779:"FUNC_REVERSE_SUBTRACT",32819:"UNSIGNED_SHORT_4_4_4_4",32820:"UNSIGNED_SHORT_5_5_5_1",32823:"POLYGON_OFFSET_FILL",32824:"POLYGON_OFFSET_FACTOR",32854:"RGBA4",32855:"RGB5_A1",32873:"TEXTURE_BINDING_2D",32926:"SAMPLE_ALPHA_TO_COVERAGE",32928:"SAMPLE_COVERAGE",32936:"SAMPLE_BUFFERS",32937:"SAMPLES",32938:"SAMPLE_COVERAGE_VALUE",32939:"SAMPLE_COVERAGE_INVERT",32968:"BLEND_DST_RGB",32969:"BLEND_SRC_RGB",32970:"BLEND_DST_ALPHA",32971:"BLEND_SRC_ALPHA",33071:"CLAMP_TO_EDGE",33170:"GENERATE_MIPMAP_HINT",33189:"DEPTH_COMPONENT16",33306:"DEPTH_STENCIL_ATTACHMENT",33321:"R8",33635:"UNSIGNED_SHORT_5_6_5",33648:"MIRRORED_REPEAT",33901:"ALIASED_POINT_SIZE_RANGE",33902:"ALIASED_LINE_WIDTH_RANGE",33984:"TEXTURE0",33985:"TEXTURE1",33986:"TEXTURE2",33987:"TEXTURE3",33988:"TEXTURE4",33989:"TEXTURE5",33990:"TEXTURE6",33991:"TEXTURE7",33992:"TEXTURE8",33993:"TEXTURE9",33994:"TEXTURE10",33995:"TEXTURE11",33996:"TEXTURE12",33997:"TEXTURE13",33998:"TEXTURE14",33999:"TEXTURE15",34e3:"TEXTURE16",34001:"TEXTURE17",34002:"TEXTURE18",34003:"TEXTURE19",34004:"TEXTURE20",34005:"TEXTURE21",34006:"TEXTURE22",34007:"TEXTURE23",34008:"TEXTURE24",34009:"TEXTURE25",34010:"TEXTURE26",34011:"TEXTURE27",34012:"TEXTURE28",34013:"TEXTURE29",34014:"TEXTURE30",34015:"TEXTURE31",34016:"ACTIVE_TEXTURE",34024:"MAX_RENDERBUFFER_SIZE",34041:"DEPTH_STENCIL",34055:"INCR_WRAP",34056:"DECR_WRAP",34067:"TEXTURE_CUBE_MAP",34068:"TEXTURE_BINDING_CUBE_MAP",34069:"TEXTURE_CUBE_MAP_POSITIVE_X",34070:"TEXTURE_CUBE_MAP_NEGATIVE_X",34071:"TEXTURE_CUBE_MAP_POSITIVE_Y",34072:"TEXTURE_CUBE_MAP_NEGATIVE_Y",34073:"TEXTURE_CUBE_MAP_POSITIVE_Z",34074:"TEXTURE_CUBE_MAP_NEGATIVE_Z",34076:"MAX_CUBE_MAP_TEXTURE_SIZE",34338:"VERTEX_ATTRIB_ARRAY_ENABLED",34339:"VERTEX_ATTRIB_ARRAY_SIZE",34340:"VERTEX_ATTRIB_ARRAY_STRIDE",34341:"VERTEX_ATTRIB_ARRAY_TYPE",34342:"CURRENT_VERTEX_ATTRIB",34373:"VERTEX_ATTRIB_ARRAY_POINTER",34466:"NUM_COMPRESSED_TEXTURE_FORMATS",34467:"COMPRESSED_TEXTURE_FORMATS",34660:"BUFFER_SIZE",34661:"BUFFER_USAGE",34816:"STENCIL_BACK_FUNC",34817:"STENCIL_BACK_FAIL",34818:"STENCIL_BACK_PASS_DEPTH_FAIL",34819:"STENCIL_BACK_PASS_DEPTH_PASS",34877:"BLEND_EQUATION_ALPHA",34921:"MAX_VERTEX_ATTRIBS",34922:"VERTEX_ATTRIB_ARRAY_NORMALIZED",34930:"MAX_TEXTURE_IMAGE_UNITS",34962:"ARRAY_BUFFER",34963:"ELEMENT_ARRAY_BUFFER",34964:"ARRAY_BUFFER_BINDING",34965:"ELEMENT_ARRAY_BUFFER_BINDING",34975:"VERTEX_ATTRIB_ARRAY_BUFFER_BINDING",35040:"STREAM_DRAW",35044:"STATIC_DRAW",35048:"DYNAMIC_DRAW",35632:"FRAGMENT_SHADER",35633:"VERTEX_SHADER",35660:"MAX_VERTEX_TEXTURE_IMAGE_UNITS",35661:"MAX_COMBINED_TEXTURE_IMAGE_UNITS",35663:"SHADER_TYPE",35664:"FLOAT_VEC2",35665:"FLOAT_VEC3",35666:"FLOAT_VEC4",35667:"INT_VEC2",35668:"INT_VEC3",35669:"INT_VEC4",35670:"BOOL",35671:"BOOL_VEC2",35672:"BOOL_VEC3",35673:"BOOL_VEC4",35674:"FLOAT_MAT2",35675:"FLOAT_MAT3",35676:"FLOAT_MAT4",35678:"SAMPLER_2D",35680:"SAMPLER_CUBE",35712:"DELETE_STATUS",35713:"COMPILE_STATUS",35714:"LINK_STATUS",35715:"VALIDATE_STATUS",35716:"INFO_LOG_LENGTH",35717:"ATTACHED_SHADERS",35718:"ACTIVE_UNIFORMS",35719:"ACTIVE_UNIFORM_MAX_LENGTH",35720:"SHADER_SOURCE_LENGTH",35721:"ACTIVE_ATTRIBUTES",35722:"ACTIVE_ATTRIBUTE_MAX_LENGTH",35724:"SHADING_LANGUAGE_VERSION",35725:"CURRENT_PROGRAM",36003:"STENCIL_BACK_REF",36004:"STENCIL_BACK_VALUE_MASK",36005:"STENCIL_BACK_WRITEMASK",36006:"FRAMEBUFFER_BINDING",36007:"RENDERBUFFER_BINDING",36048:"FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE",36049:"FRAMEBUFFER_ATTACHMENT_OBJECT_NAME",36050:"FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL",36051:"FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE",36053:"FRAMEBUFFER_COMPLETE",36054:"FRAMEBUFFER_INCOMPLETE_ATTACHMENT",36055:"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT",36057:"FRAMEBUFFER_INCOMPLETE_DIMENSIONS",36061:"FRAMEBUFFER_UNSUPPORTED",36064:"COLOR_ATTACHMENT0",36096:"DEPTH_ATTACHMENT",36128:"STENCIL_ATTACHMENT",36160:"FRAMEBUFFER",36161:"RENDERBUFFER",36162:"RENDERBUFFER_WIDTH",36163:"RENDERBUFFER_HEIGHT",36164:"RENDERBUFFER_INTERNAL_FORMAT",36168:"STENCIL_INDEX8",36176:"RENDERBUFFER_RED_SIZE",36177:"RENDERBUFFER_GREEN_SIZE",36178:"RENDERBUFFER_BLUE_SIZE",36179:"RENDERBUFFER_ALPHA_SIZE",36180:"RENDERBUFFER_DEPTH_SIZE",36181:"RENDERBUFFER_STENCIL_SIZE",36193:"HALF_FLOAT",36194:"RGB565",36336:"LOW_FLOAT",36337:"MEDIUM_FLOAT",36338:"HIGH_FLOAT",36339:"LOW_INT",36340:"MEDIUM_INT",36341:"HIGH_INT",36346:"SHADER_COMPILER",36347:"MAX_VERTEX_UNIFORM_VECTORS",36348:"MAX_VARYING_VECTORS",36349:"MAX_FRAGMENT_UNIFORM_VECTORS",37440:"UNPACK_FLIP_Y_WEBGL",37441:"UNPACK_PREMULTIPLY_ALPHA_WEBGL",37442:"CONTEXT_LOST_WEBGL",37443:"UNPACK_COLORSPACE_CONVERSION_WEBGL",37444:"BROWSER_DEFAULT_WEBGL"},L={alpha:!1,depth:!0,premultipliedAlpha:!1};var P=a(975),F=a(600);let B=0;function z(){let e,t,n=[0,0,0,0],r=0,a=0,s=0,o=(()=>{const e=document.createElement("canvas");return!(!e.getContext("experimental-webgl2")&&!e.getContext("webgl2"))})(),i=I;const u=P.create(),l=P.create(),c=P.create(),h=F.create(),p=P.create(),d=F.create();this.id="WebGLContext"+B++,this.canvas,this.gl,this.CONTEXT_LOST="contextLost",this.CONTEXT_RESTORED="contextRestored",this.shaderCount=0,this.bufferCount=0,this.textureCount=0,this.frameBufferCount=0,this.maxAnisotropy=0,this.multiRenderTargetSupport=!1,this.maxMultiRenderTargets=0,this.init=function(e,t={}){const n=S()({},L,t);if(void 0!==e){if(e instanceof HTMLCanvasElement){this.canvas=e;let r=o?"webgl2":"webgl";t.webgl1&&(r="webgl",o=!1),this.gl=e.getContext(r,n)}else window.WebGL2RenderingContext&&e instanceof WebGL2RenderingContext?(o=!0,this.gl=e,this.canvas=e.canvas):e instanceof WebGLRenderingContext?(o=!1,this.gl=e,this.canvas=e.canvas):console.error("The source has to be one of the following : Canvas, WebGLRenderingContext or WebGL2RenderingContext");this.canvas.addEventListener("webglcontextlost",m),this.canvas.addEventListener("webglcontextrestored",g),this.extensions=(e=>{const{gl:t}=e,n=window.WebGL2RenderingContext&&t instanceof WebGL2RenderingContext,r={};R.forEach((e=>{r[e]=t.getExtension(e)})),n||(r.OES_vertex_array_object||console.error("OES_vertex_array_object extension is not supported"),A(t,"OES_vertex_array_object"),A(t,"ANGLE_instanced_arrays"),A(t,"WEBGL_draw_buffers"));const a=r.EXT_texture_filter_anisotropic;if(a&&(e.maxAnisotropy=t.getParameter(a.MAX_TEXTURE_MAX_ANISOTROPY_EXT)),e.multiRenderTargetSupport=!!e.gl.drawBuffers,e.multiRenderTargetSupport){const n=e.gl.MAX_DRAW_BUFFERS||r.WEBGL_draw_buffers.MAX_DRAW_BUFFERS_WEBGL;e.maxMultiRenderTargets=t.getParameter(n)}return r})(this),(e=>{for(const t in O)e[t]?console.log("already exist : ",t):e[t]=O[t];if(e.webgl2){const t=/^[^a-z]*$/;for(const n in e.gl)t.test(n)&&-1===n.indexOf("FLOAT")&&(e[n]=e.gl[n],O[n]=e.gl[n],D[e[n]]=n)}})(this),this.setSize(this.canvas.width,this.canvas.height),this.enable(this.BLEND),this.enableAlphaBlending(),this.enable(this.DEPTH_TEST),this.enable(this.CULL_FACE),this.cullFace(U.BACK)}else{const e=document.createElement("canvas");this.init(e,n)}},this.clear=function(e=0,t=0,n=0,r=0){const{gl:a}=this;a.clearColor(e,t,n,r),a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT)},this.setSize=function(e,t){a=Math.floor(e),s=Math.floor(t),this.canvas.width=a,this.canvas.height=s,r=a/s,this.viewport(0,0,a,s)},this.viewport=function(e,t,r,a){k(n,[e,t,r,a])||(n=[e,t,r,a],this.gl.viewport(e,t,r,a))},this.getViewport=function(){return n},this.getAspectRatio=function(){return r},this.enable=function(e){this.gl.enable(e)},this.disable=function(e){this.gl.disable(e)},this.cullFace=function(e){this.gl.cullFace(e)},this.enableAlphaBlending=function(){const{gl:e}=this;e.blendFunc(e.SRC_ALPHA,e.ONE_MINUS_SRC_ALPHA)},this.enableAdditiveBlending=function(){const{gl:e}=this;e.blendFunc(e.ONE,e.ONE)},this.setMatrices=function(e){t=e,this.setModelMatrix(l)},this.setModelMatrix=function(e){P.copy(c,e),void 0!==t&&(P.multiply(u,t.viewMatrix,c),F.fromMat4(h,u),F.invert(h,h),F.transpose(h,h),F.fromMat4(d,u),F.invert(d,d),P.invert(p,t.viewMatrix))},this.useShader=function(t){e=t,this.shaderProgram=t.shaderProgram,this.gl.useProgram(this.shaderProgram)},this.draw=function(t){if(t.length)return void t.forEach((e=>this.draw(e)));f(),e.updateUniforms(),t.bind(this);const{drawType:n}=t,{gl:r}=this;t.isInstanced?r.drawElementsInstanced(t.drawType,t.numItems,r.UNSIGNED_INT,0,t.numInstance):n===r.POINTS?r.drawArrays(n,0,t.vertexSize):r.drawElements(n,t.numItems,r.UNSIGNED_INT,0),t.unbind()},this.getCamera=function(){return t},this.destroy=function(e=!0){this.gl.getExtension("WEBGL_lose_context").loseContext(),e&&void 0!==this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas)},this.__defineGetter__("width",(function(){return a})),this.__defineGetter__("height",(function(){return s})),this.__defineGetter__("webgl2",(function(){return o})),this.__defineGetter__("isMobile",(function(){return i})),this.__defineGetter__("aspectRatio",(function(){return r}));const f=()=>{void 0!==t&&(e.uniform("uProjectionMatrix","mat4",t.projectionMatrix),e.uniform("uViewMatrix","mat4",t.viewMatrix),e.uniform("uNormalMatrix","mat3",h),e.uniform("uModelViewMatrixInverse","mat3",d)),e.uniform("uModelMatrix","mat4",c)},m=()=>{this.emit(this.CONTEXT_LOST)},g=()=>{this.emit(this.CONTEXT_RESTORED)}}z.prototype=Object.assign(Object.create(w().prototype),{constructor:z});const U=new z,$={float:"uniform1f",vec2:"uniform2fv",vec3:"uniform3fv",vec4:"uniform4fv",int:"uniform1i",ivec2:"uniform2i",ivec3:"uniform3i",ivec4:"uniform4i",mat2:"uniformMatrix2fv",mat3:"uniformMatrix3fv",mat4:"uniformMatrix4fv"},V=e=>"number"==typeof e?e:e.slice?e.slice(0):new Float32Array(e),j=e=>"object"==typeof e?function(e){return 9===e.length?"mat3":16===e.length?"mat4":`vec${e.length}`}(e):"float";function H(e,t){let n;this.vertexShader=e||"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n}",this.fragmentShader=t||"precision highp float;\n#define GLSLIFY 1\n// varying vec2 vTextureCoord;\n\nvoid main(void) {\n gl_FragColor = vec4(1.0);\n}",this.shaderProgram;let r={};this.bind=function(e){if(void 0===e||void 0===n||e===n){if(n=e||U,!this.shaderProgram){const e=a(this.vertexShader,!0),t=a(this.fragmentShader,!1);s(e,t)}n.useShader(this)}else console.error("this shader has been bind to a different WebGL Rendering Context",n.id)},this.uniform=function(e,t,n){let a,s;void 0===n?(s=j(t),a=t):(s=t,a=n);const o=$[s];if(r[e]){const t=r[e];k(t.value,a)||(t.value=V(a),t.changed=!0)}else r[e]={type:s,uniformType:o,value:V(a),changed:!0};return this},this.updateUniforms=function(){if(!n)return void console.warn("No WebGL Context has been set yet, please call shader.bind() first");const{gl:e}=n;for(let t in r){const n=r[t];if(n.changed){const r=t;n.uniformLoc||(n.uniformLoc=e.getUniformLocation(this.shaderProgram,r));const{uniformLoc:a,uniformType:s,value:o}=n;null!==a&&(-1===s.indexOf("Matrix")?e[s](a,o):e[s](a,!1,o)),n.changed=!1}}},this.destroy=function(){const{gl:e}=n;e.deleteProgram(this.shaderProgram),n.shaderCount--};const a=(e,t)=>{const{gl:r}=n,a=t?n.VERTEX_SHADER:n.FRAGMENT_SHADER,s=r.createShader(a);return r.shaderSource(s,e),r.compileShader(s),r.getShaderParameter(s,r.COMPILE_STATUS)?s:(console.warn("Error in Shader : ",r.getShaderInfoLog(s)),console.log((e=>{const t=e.split("\n");for(let e=0;e{const{gl:r}=n;this.shaderProgram=r.createProgram(),r.attachShader(this.shaderProgram,e),r.attachShader(this.shaderProgram,t),r.deleteShader(e),r.deleteShader(t),r.linkProgram(this.shaderProgram),n.shaderCount++}}function G(e=O.TRIANGLES){this.drawType=e,this.numItems=0;let t,n,r,a,s,o=[],i=[],u=[],l=!0,c=!1,h=0;this.bufferData=function(e,t,n,r=O.STATIC_DRAW,a=!1){let s,o=[];if("number"==typeof e[0]){if(s=e,void 0===n)return console.error("Missing element size for flatten data :",t),this;for(let e=0;e{for(let n=0;nt.name===e))},this.getAttributes=function(){return o},this.getSource=function(e){const t=this.getAttribute(e);return t?t.source:[]},this.generateFaces=function(){let e,t,n,a,s,o;u=[];const{vertices:i}=this;for(let l=0;l{e.deleteBuffer(t.buffer),t.source=[],t.dataArray=[],s.bufferCount--})),a&&(e.deleteBuffer(a),s.bufferCount--),e.deleteVertexArray(t),o=[],r=[],i=[]},this.__defineGetter__("vertices",(function(){return this.getSource("aVertexPosition")})),this.__defineGetter__("coords",(function(){return this.getSource("aTextureCoord")})),this.__defineGetter__("normal",(function(){return this.getSource("aNormal")})),this.__defineGetter__("indices",(function(){return r})),this.__defineGetter__("faces",(function(){return u})),this.__defineGetter__("isInstanced",(function(){return c})),this.__defineGetter__("numInstance",(function(){return h}));const p=(e,t,n,r,a=O.STATIC_DRAW,s=!1)=>{const u=a;c=s||c;const l=new Float32Array(e),h=this.getAttribute(n);return h?(h.itemSize=r,h.dataArray=l,h.source=t):o.push({name:n,source:t,itemSize:r,usage:u,dataArray:l,isInstanced:s}),i.push(n),this},d=()=>{const{shaderProgram:e,gl:n}=s;0!=i.length&&(t||(t=n.createVertexArray()),n.bindVertexArray(t),o.forEach((t=>{if(-1!==i.indexOf(t.name)){const r=function(e,t){let n;const{gl:r}=t;return void 0!==e.buffer?n=e.buffer:(n=r.createBuffer(),e.buffer=n,t.bufferCount++),n}(t,s);n.bindBuffer(n.ARRAY_BUFFER,r),n.bufferData(n.ARRAY_BUFFER,t.dataArray,t.usage);const a=((e,t,n)=>(void 0===t.cacheAttribLoc&&(t.cacheAttribLoc={}),void 0===t.cacheAttribLoc[n]&&(t.cacheAttribLoc[n]=e.getAttribLocation(t,n)),t.cacheAttribLoc[n]))(n,e,t.name);a>=0&&(n.enableVertexAttribArray(a),n.vertexAttribPointer(a,t.itemSize,n.FLOAT,!1,0,0)),t.attrPosition=a,t.isInstanced&&n.vertexAttribDivisor(a,1)}})),f(),n.bindVertexArray(null),l=!1,i=[])},f=()=>{const{gl:e}=s;l&&(a||(a=e.createBuffer(),s.bufferCount++),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a),e.bufferData(e.ELEMENT_ARRAY_BUFFER,r,n))}}const W=e=>0!==e&&!(e&e-1);class q{constructor(e){this._value=e}set(e,t=1){this._value=this._value,this._value=0===t?this._value&0<>=e,1===t}reset(e){this._value=e}get value(){return this._value}}const K="This browser doesn't support multi render targets : WEBGL_draw_buffers",X="This framebuffer has been bind to a different WebGL Rendering Context",Y="This texture has been bind to a different WebGL Rendering Context",Z=(e,t="")=>{console.error(e,t)};class J{constructor(e,t={},n=0,r=0){if(this._fromWebGLTexture=!1,e instanceof WebGLTexture)this._texture=e,this._fromWebGLTexture=!0;else{if(this._source=e,this._isHtmlElement=(e=>e instanceof HTMLImageElement||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement)(this._source),!this._isHtmlElement&&e&&!((e,t)=>{let n=!0;return"Array"===e.constructor.name&&(console.error("Please convert texture source to Unit8Array or Float32Array"),n=!1),void 0===t.type&&"Uint8Array"!==e.constructor.name&&console.error("Using none Unit8Array, pleaes specify type in the texture parameters"),n})(e,t))return;this._getDimension(e,n,r),this._params=function(e,t,n){if(!e.minFilter){let r=O.LINEAR;t&&t&&W(t)&&W(n)&&(r=O.NEAREST_MIPMAP_LINEAR),e.minFilter=r}return e.mipmap=void 0===e.mipmap||e.mipmap,e.magFilter=e.magFilter||O.LINEAR,e.wrapS=e.wrapS||O.CLAMP_TO_EDGE,e.wrapT=e.wrapT||O.CLAMP_TO_EDGE,e.internalFormat=e.internalFormat||O.RGBA,e.format=e.format||O.RGBA,e.premultiplyAlpha=void 0!==e.premultiplyAlpha&&e.premultiplyAlpha,e.level=e.level||0,e.type=e.type||O.UNSIGNED_BYTE,e}(t,this._width,this._height),this._checkMipmap()}this._parametersState=new q(0)}bind(e,t){if(void 0!==t&&void 0!==this.GL&&t!==this.GL)return void Z(Y,this.GL.id);this.GL=t||U;const{gl:n}=this.GL;this._fromWebGLTexture||this.createTexture(this.GL),n.activeTexture(n.TEXTURE0+e),n.bindTexture(n.TEXTURE_2D,this._texture),this._checkParameters()}createTexture(e){void 0===e||void 0===this.GL||e===this.GL?(this.GL=e||U,this._texture||(((e,t)=>{e.webgl2&&(t.type===O.HALF_FLOAT?(t.type=e.gl.HALF_FLOAT,t.internalFormat=O.RGBA16F):t.type===O.FLOAT&&(t.internalFormat=O.RGBA32F))})(this.GL,this._params),this._uploadTexture())):Z(Y,this.GL.id)}updateTexture(e,t){this.GL=t||U,this._source=e,this._uploadTexture()}generateMipmap(){if(!this._generateMipmap)return;const{gl:e}=this.GL;e.bindTexture(e.TEXTURE_2D,this._texture),e.generateMipmap(e.TEXTURE_2D)}destroy(){const{gl:e}=this.GL;e.deleteTexture(this._texture),this.GL.textureCount--}showProperties(){console.log("Dimension :",this._width,this._height);for(const e in this._params)console.log(e,D[this._params[e]]||this._params[e])}_uploadTexture(){const{gl:e}=this.GL;this._texture||(this._texture=e.createTexture(),this.GL.textureCount++),e.bindTexture(e.TEXTURE_2D,this._texture),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,!0),this._isHtmlElement&&!this.GL.webgl2?e.texImage2D(e.TEXTURE_2D,0,this._params.internalFormat,this._params.format,this._params.type,this._source):e.texImage2D(e.TEXTURE_2D,0,this._params.internalFormat,this._width,this._height,0,this._params.format,this._params.type,this._source),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,this._params.magFilter),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,this._params.minFilter),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,this._params.wrapS),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,this._params.wrapT),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,this._premultiplyAlpha),this._generateMipmap&&e.generateMipmap(e.TEXTURE_2D)}_checkParameters(){const{gl:e}=this.GL;this._parametersState.value>0&&(this._parametersState.get(0)?e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,this._params.minFilter):this._parametersState.get(1)?e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,this._params.magFilter):this._parametersState.get(2)?e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,this._params.wrapS):e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,this._params.wrapT)),this._parametersState.reset(0)}_getDimension(e,t,n){e?(this._width=e.width||e.videoWidth,this._height=e.height||e.videoWidth,this._width=this._width||t,this._height=this._height||n,this._width&&this._height||(this._width=this._height=Math.sqrt(e.length/4))):(this._width=t,this._height=n)}_checkMipmap(){this._generateMipmap=this._params.mipmap,W(this._width)&&W(this._height)||(this._generateMipmap=!1),-1===D[this._params.minFilter].indexOf("MIPMAP")&&(this._generateMipmap=!1)}get texture(){return this._texture}set minFilter(e){this._params.minFilter=e,this._parametersState.set(0,1)}get minFilter(){return this._params.minFilter}set magFilter(e){this._params.magFilter=e,this._parametersState.set(1,1)}get magFilter(){return this._params.magFilter}set wrapS(e){this._params.wrapS=e,this._parametersState.set(2,1)}get wrapS(){return this._params.wrapS}set wrapT(e){this._params.wrapT=e,this._parametersState.set(3,1)}get wrapT(){return this._params.wrapT}get width(){return this._width}get height(){return this._height}get glTexture(){return this._texture}}function Q(e,t,n={},r=1){let a,s;const o=e,i=t,u=n,l=r,c=[];let h;this.bind=function(e,t=!0){if(void 0!==e&&void 0!==a&&e!==a)return void Z(X,a.id);a=e||U;const{gl:n}=a;l>1&&!a.multiRenderTargetSupport&&Z(K,a.id),s||p(),t&&a.viewport(0,0,o,i),n.bindFramebuffer(n.FRAMEBUFFER,s)},this.unbind=function(e=!0){e&&a.viewport(0,0,a.width,a.height);const{gl:t}=a;t.bindFramebuffer(t.FRAMEBUFFER,null),c.forEach((e=>{e.generateMipmap()}))},this.getTexture=function(e=0){return c[e]},this.destroy=function(){const{gl:e}=a;c.forEach((e=>e.destroy())),h.destroy(),e.deleteFramebuffer(s),a.frameBufferCount--};const p=()=>{d();const{gl:e}=a;s=e.createFramebuffer(),e.bindFramebuffer(e.FRAMEBUFFER,s),a.frameBufferCount++;const t=a.webgl2?e.DRAW_FRAMEBUFFER:e.FRAMEBUFFER,n=[];for(let r=0;r{for(let e=0;e{const s=Object.assign({},u);n||(n=e),s.internalFormat=e||O.RGBA,s.format=n||O.RGBA,s.type=t||s.type,Object.assign(s,r);const l=new J(null,s,o,i);return l.createTexture(a),l};this.__defineGetter__("texture",(function(){return c[0]})),this.__defineGetter__("depthTexture",(function(){return h})),this.__defineGetter__("width",(function(){return o})),this.__defineGetter__("height",(function(){return i}))}var ee=a(160);class te{constructor(){this._mtx=P.create(),this._mtxView=P.create(),this._mtxProj=P.create(),this._near=0,this._far=0,this._lookDir=ee.create()}lookAt(e,t,n=[0,1,0]){P.lookAt(this._mtxView,e,t,n)}setFromViewProjection(e,t){P.copy(this._mtxView,e),P.copy(this._mtxProj,t)}setViewMatrix(e){P.copy(this._mtxView,e)}setProjectionMatrix(e){P.copy(this._mtxProj,e)}_updateMatrices(){}get viewMatrix(){return P.mul(this._mtx,this._mtxProj,this._mtxView),this._mtx}get viewMatrix(){return this._mtxView}get view(){return this._mtxView}get projectionMatrix(){return this._mtxProj}get projection(){return this._mtxProj}get position(){const e=P.create();return P.invert(e,this._mtxView),[e[12],e[13],e[14]]}get direction(){const e=F.create();return F.fromMat4(e,this._mtxView),F.transpose(e,e),ee.transformMat3(this._lookDir,[0,0,-1],e),ee.normalize(this._lookDir,this._lookDir),this._lookDir}set near(e){this._near=e,this._updateMatrices()}get near(){return this._near}set far(e){this._far=e,this._updateMatrices()}get far(){return this._far}}class ne extends te{constructor(e,t,n,r,a=.1,s=100){super(),this._left=0,this._right=0,this._top=0,this._bottom=0,this.ortho(e,t,n,r,a,s)}ortho(e,t,n,r,a=.1,s=100){this.left=e,this.right=t,this.top=n,this.bottom=r,P.ortho(this._mtxProj,e,t,r,n,a,s),this._left=e,this._right=t,this._top=n,this._bottom=r,this._near=a,this._far=s}_updateMatrices(){this.ortho(this._left,this._right,this._top,this._bottom,this._near,this._far)}}class re{constructor(e){return this._GL=e||U,this._uniforms={},this._uniformTextures=[],this._fbo,this._clearColor={r:0,g:0,b:0,a:0},this}setClearColor(e=0,t=0,n=0,r=0){return this._clearColor.r=e,this._clearColor.g=t,this._clearColor.b=n,this._clearColor.a=r,this}useProgram(e,t){return this._shader=e instanceof H?e:new H(e,t),this}setMesh(e){return this._mesh=e,this}createMesh(e){return this._mesh=new G(e),this}bufferVertex(e){return this._mesh||(this._mesh=new G),this._mesh.bufferVertex(e),this}bufferTexCoord(e){return this._mesh||(this._mesh=new G),this._mesh.bufferTexCoord(e),this}bufferNormal(e){return this._mesh||(this._mesh=new G),this._mesh.bufferNormal(e),this}bufferIndex(e){return this._mesh||(this._mesh=new G),this._mesh.bufferIndex(e),this}bufferInstance(e,t){return this._mesh?(this._mesh.bufferInstance(e,t),this):(console.warn("Need to create mesh first"),this)}bufferData(e,t){return this._mesh||(this._mesh=new G),this._mesh.bufferData(e,t),this}uniform(e,t,n){const r=e;let a,s;return void 0===n?(s=j(t),a=t):(s=t,a=n),this._uniforms[r]={type:s,value:a},this}uniformTexture(e,t,n){return this.bindTexture(e,t,n)}bindTexture(e,t,n){return void 0!==n?this._uniformTextures[n]={name:e,texture:t}:this._uniformTextures.push({name:e,texture:t}),this}bindFrameBuffer(e){return this._fbo=e,this}draw(){if(this._shader){if(this._mesh){if(this._fbo){const{r:e,g:t,b:n,a:r}=this._clearColor;this._fbo.bind(this._GL),this._GL.clear(e,t,n,r)}this._shader.bind(this._GL);for(const e in this._uniforms){const t=this._uniforms[e];this._shader.uniform(e,t.type,t.value)}return this._uniformTextures.forEach(((e,t)=>{void 0!==e&&(this._shader.uniform(e.name,"int",t),e.texture.bind(t,this._GL))})),this._GL.draw(this._mesh),this._fbo&&this._fbo.unbind(),this}console.warn("No Mesh assigned for draw call")}else console.warn("No GLShader assigned for draw call")}get shader(){return this._shader}get framebuffer(){return this._fbo}}class ae extends re{constructor(e){super(e);const t=this._GL,n=1e3,r=[[-n,0,0],[n,0,0],[0,-n,0],[0,n,0],[0,0,-n],[0,0,n]];this.createMesh(t.LINES).bufferVertex(r).bufferData([[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]],"aColor").bufferIndex([0,1,2,3,4,5]).useProgram("#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec3 aColor;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\n\nout vec3 vColor;\n\nvoid main(void) {\n gl_Position = uProjectionMatrix * uViewMatrix * uModelMatrix * vec4(aVertexPosition, 1.0);\n vColor = aColor;\n}","#version 300 es\nprecision highp float;\n#define GLSLIFY 1\nin vec3 vColor;\nuniform float uOpacity;\nout vec4 oColor;\n\nvoid main(void) {\n oColor = vec4(vColor, uOpacity);\n}"),this.opacity=.75}draw(){this.uniform("uOpacity",this.opacity),super.draw()}}const se=(e,t,n,r="xy")=>{const a=[],s=[],o=[],i=[],u=e/n,l=t/n,c=1/n,h=.5*-e,p=.5*-t;let d=0;for(let e=0;e(new G).bufferData([[-1,-1],[-1,4],[4,-1]],"aPosition",2).bufferIndex([2,1,0]),ie="#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nuniform vec3 uColor;\nuniform float uOpacity;\n\nout vec4 fragColor;\n\nvoid main(void) {\n fragColor = vec4(uColor, uOpacity);\n}",ue=ie,le="#version 300 es\n\nprecision mediump float;\n#define GLSLIFY 1\nin vec2 aPosition;\nout vec2 vTextureCoord;\n\nvoid main(void) {\n gl_Position = vec4(aPosition, 0.0, 1.0);\n vTextureCoord = aPosition * .5 + .5;\n}";class ce extends re{constructor(e){super(e),this.setMesh(((e,t,n=!1)=>{const r=[],a=[],s=[],o=[],i=1/t;let u=0;function l(n,r,a=!1){const s=n/t*Math.PI-.5*Math.PI,o=r/t*Math.PI*2,i=a?1:e,u=[];u[1]=Math.sin(s)*i;const l=Math.cos(s)*i;u[0]=Math.cos(o)*l,u[2]=Math.sin(o)*l;const c=1e4;return u[0]=Math.floor(u[0]*c)/c,u[1]=Math.floor(u[1]*c)/c,u[2]=Math.floor(u[2]*c)/c,u}for(let e=0;e{const t=fe.clone(e);return fe.transformMat4(t,t,this.mtx),t[0]/=t[3],t[1]/=t[3],t[2]/=t[3],[t[0],t[1],t[2]]})),o=.02;s.forEach((e=>{this._dBall.draw(e,[o,o,o],r,a)})),this._lines.forEach((e=>{this._dLine.draw(s[e[0]],s[e[1]],r,a)}))}}class ge{constructor(e,t,n,r={},a=1){this._fbos=[];for(let s=0;sthis._update()))}_update(){this._checkLimit(),this._value+=(this._targetValue-this._value)*this.easing,Math.abs(this._targetValue-this._value)<1e-4&&(this._value=this._targetValue)}setTo(e){this._targetValue=this._value=e}add(e){this._targetValue+=e}limit(e,t){e>t?this.limit(t,e):(this._min=e,this._max=t,this._checkLimit())}_checkLimit(){void 0!==this._min&&this._targetValuethis._max&&(this._targetValue=this._max)}destroy(){ve.Z.removeEF(this._efIndex)}set value(e){this._targetValue=e}get value(){return this._value}get targetValue(){return this._targetValue}}const be=function(e,t){const n=t||{};return e.touches?(n.x=e.touches[0].pageX,n.y=e.touches[0].pageY):(n.x=e.clientX,n.y=e.clientY),n};class _e{#e=!1;#t=!1;#n=!1;#r=!1;#a;#s={};#o={};#i=P.create();#u=P.create();#l=P.create();#c=P.create();#h=ee.create();#p=ee.create();#d=ee.fromValues(0,1,0);radius=new xe(0);rx=new xe(0);ry=new xe(0);#f=0;#m=0;constructor(e,t=5,n=window){this.#a=e,this.radius.setTo(t),this.#p=[0,0,this.radius],this.rx.limit(-Math.PI/2+.01,Math.PI/2-.01),n.addEventListener("mousewheel",this._onWheel),n.addEventListener("DOMMouseScroll",this._onWheel),n.addEventListener("mousedown",this._onDown),n.addEventListener("mousemove",this._onMove),window.addEventListener("mouseup",this._onUp),n.addEventListener("touchstart",this._onDown),n.addEventListener("touchmove",this._onMove),window.addEventListener("touchend",this._onUp),window.addEventListener("keydown",this._onKeyDown),window.addEventListener("keyup",this._onKeyUp),this.update(),ve.Z.addEF(this._loop)}lock(e=!0){this.#e=e,this.#t=e,this.#r=!1}lockZoom(e=!0){this.#t=e}lockRotation(e=!0){this.#e=e}update(){ee.set(this.#p,0,0,this.radius.value),ee.rotateX(this.#p,this.#p,[0,0,0],this.rx.value),ee.rotateY(this.#p,this.#p,[0,0,0],this.ry.value),P.lookAt(this.#i,this.#p,this.#h,this.#d),P.invert(this.#u,this.#i),P.mul(this.#i,this.#i,this.#c),P.mul(this.#i,this.#i,this.#l),this.#a?.setViewMatrix(this.#i)}_onDown=e=>{this.#e||(this.#r=!0,be(e,this.#s),be(e,this.#o),this.#f=this.rx.targetValue,this.#m=this.ry.targetValue,P.identity(this.#l))};_onMove=e=>{if(this.#e)return;if(!this.#r)return;if(be(e,this.#s),e.shiftKey){const e=[this.#s.x-this.#o.x,-(this.#s.y-this.#o.y),0];return ee.transformMat4(e,e,this.#u),ee.scale(e,e,.01),P.identity(this.#l,this.#l),void P.translate(this.#l,this.#l,e)}const t=this.#s.x-this.#o.x;this.ry.value=.01*-t+this.#m;const n=this.#s.y-this.#o.y;this.rx.value=.01*-n+this.#f};_onUp=()=>{this.#r=!1,this.#n&&(P.mul(this.#c,this.#c,this.#l),P.identity(this.#l))};_onWheel=e=>{if(this.#t)return;const t=e.wheelDelta,n=e.detail;let r=0;r=n?t?t/n/40*n>0?1:-1:-n/3:t/120,this.radius.add(2*-r),this.radius.targetValue<0&&(this.radius.value=1e-4)};_onKeyDown=e=>{e.code.indexOf("Shift")>-1&&(this.#n=!0)};_onKeyUp=e=>{"Shift"===e.key&&(P.mul(this.#c,this.#c,this.#l),P.identity(this.#l)),this.#n=!1};_loop=()=>{this.update()}}function Ee(e,t){this.origin=e,this.direction=t;const n=ee.create(),r=ee.create(),a=ee.create(),s=ee.create(),o=ee.create(),i=ee.create(),u=ee.create(),l=ee.create();this.at=function(e){return ee.copy(s,this.direction),ee.scale(s,s,e),ee.add(s,s,this.origin),s},this.lookAt=function(e){ee.sub(this.direction,e,this.origin),ee.normalize(this.origin,this.origin)},this.closestPointToPoint=function(e){const t=ee.create();ee.sub(e,this.origin);const n=ee.dot(t,this.direction);return n<0?ee.clone(this.origin):(ee.copy(t,this.direction),ee.scale(t,t,n),ee.add(t,t,this.origin),t)},this.distanceToPoint=function(e){return Math.sqrt(this.distanceSqToPoint(e))},this.distanceSqToPoint=function(e){const t=ee.create();ee.sub(t,e,this.origin);const n=ee.dot(t,this.direction);return n<0?ee.squaredDistance(this.origin,e):(ee.copy(t,this.direction),ee.scale(t,t,n),ee.add(t,t,this.origin),ee.squaredDistance(t,e))},this.intersectsSphere=function(e,t){return this.distanceToPoint(e)<=t},this.intersectSphere=function(e,t){const n=ee.create();ee.sub(n,e,this.origin);const r=ee.dot(n,this.direction),a=ee.dot(n,n)-r*r,s=t*t;if(a>s)return null;const o=Math.sqrt(s-a),i=r-o,u=r+o;return i<0&&u<0?null:i<0?this.at(u):this.at(i)},this.intersectTriangle=function(e,t,s,c=!0){ee.copy(n,e),ee.copy(r,t),ee.copy(a,s),ee.sub(o,r,n),ee.sub(i,a,n),ee.cross(u,o,i);let h,p=ee.dot(this.direction,u);if(p>0){if(c)return null;h=1}else{if(!(p<0))return null;h=-1,p=-p}ee.sub(l,this.origin,n),ee.cross(i,l,i);const d=h*ee.dot(this.direction,i);if(d<0)return null;ee.cross(o,o,l);const f=h*ee.dot(this.direction,o);if(f<0)return null;if(d+f>p)return null;const m=-h*ee.dot(l,u);return m<0?null:this.at(m/p)}}class Te extends(w()){constructor(e,t,n,r=!1,a=window){super(),this._mesh=e,this._mesh.generateFaces(),this._camera=t,this.faceVertices=e.faces.map((e=>e.vertices)),this.clickTolerance=8,this._ray=new Ee([0,0,0],[0,0,-1]),this._hit=ee.fromValues(-999,-999,-999),this._lastPos,this._firstPos,this.modelMatrix=P.create(),this.resolution=n||[window.innerWidth,window.innerHeight],this._listenerTarget=a,this._skippingMove=r,this._onMoveBind=e=>this._onMove(e),this._onDownBind=e=>this._onDown(e),this._onUpBind=()=>this._onUp(),this.connect()}connect(){this._listenerTarget.addEventListener("mousedown",this._onDownBind),this._listenerTarget.addEventListener("mousemove",this._onMoveBind),this._listenerTarget.addEventListener("mouseup",this._onUpBind)}disconnect(){this._listenerTarget.removeEventListener("mousedown",this._onDownBind),this._listenerTarget.removeEventListener("mousemove",this._onMoveBind),this._listenerTarget.removeEventListener("mouseup",this._onUpBind)}_checkHit(e="onHit"){const t=this._camera;if(!t)return;this.resolution=[window.innerWidth,window.innerHeight];const n=this._lastPos.x/this.resolution[0]*2-1,r=-this._lastPos.y/this.resolution[1]*2+1;let a;t.generateRay([n,r,0],this._ray);const s=ee.create(),o=ee.create(),i=ee.create();let u=0;const l=(e,t)=>{ee.transformMat4(t,e,this.modelMatrix)};for(let e=0;ethis.resize())),this._efIndex=ve.Z.addEF((()=>this._loop()))}stop(){this._isRunning=!1}resume(){this._isRunning=!0}_init(){}_initTextures(){}_initViews(){}update(){}render(){}_loop(){this._isRunning&&(this.update(),this._GL.viewport(0,0,this._GL.width,this._GL.height),this._GL.setMatrices(this.camera),this.render())}resize(){this._GL.setSize(window.innerWidth,window.innerHeight),this.camera.setAspectRatio(this._GL.aspectRatio)}}a(643);var Se=a(619),Me=a(247);let Ae;const Re={init:e=>{Ae=e.map((({id:e,file:t,type:n})=>{const r=t;let a;switch(n){case"jpg":case"png":a=new J(t);break;case"text":a=(e=>{const t=e.split("\n"),n=[],r=[],a=[],s=[],o=[],i=[],u=[];let l,c=0;const h=/v( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,p=/vn( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,d=/vt( +[\d|\.|\+|\-|e|E]+)( +[\d|\.|\+|\-|e|E]+)/,f=/f( +-?\d+)( +-?\d+)( +-?\d+)( +-?\d+)?/,m=/f( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+))?/,g=/f( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))( +(-?\d+)\/(-?\d+)\/(-?\d+))?/,y=/f( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))( +(-?\d+)\/\/(-?\d+))?/;function v(e){const t=parseInt(e);return 3*(t>=0?t-1:t+s.length/3)}function x(e){const t=parseInt(e);return 3*(t>=0?t-1:t+o.length/3)}function b(e){const t=parseInt(e);return 2*(t>=0?t-1:t+i.length/2)}function _(e,t,r){n.push([s[e],s[e+1],s[e+2]]),n.push([s[t],s[t+1],s[t+2]]),n.push([s[r],s[r+1],s[r+2]]),u.push(3*c+0),u.push(3*c+1),u.push(3*c+2),c++}function E(e,t,n){r.push([i[e],i[e+1]]),r.push([i[t],i[t+1]]),r.push([i[n],i[n+1]])}function T(e,t,n){a.push([o[e],o[e+1],o[e+2]]),a.push([o[t],o[t+1],o[t+2]]),a.push([o[n],o[n+1],o[n+2]])}function w(e,t,n,r,a,s,o,i,u,l,c,h){let p,d=v(e),f=v(t),m=v(n);void 0===r?_(d,f,m):(p=v(r),_(d,f,p),_(f,m,p)),void 0!==a&&(d=b(a),f=b(s),m=b(o),void 0===r?E(d,f,m):(p=b(i),E(d,f,p),E(f,m,p))),void 0!==u&&(d=x(u),f=x(l),m=x(c),void 0===r?T(d,f,m):(p=x(h),T(d,f,p),T(f,m,p)))}for(let e=0;e{const t=e.normals.length>0,n=e.coords.length>0;let r;if(e.positions.length>65535){const a=[];let s=0;const o={};for(o.positions=e.positions.concat(),o.coords=e.coords.concat(),o.indices=e.indices.concat(),o.normals=e.normals.concat();e.indices.length>0;){const i=Math.min(65535,e.positions.length),u=e.indices.splice(0,i),l=[],c=[],h=[];let p,d=0;for(let e=0;ed&&(d=u[e]),p=u[e],l.push(o.positions[p]),n&&c.push(o.coords[p]),t&&h.push(o.normals[p]),u[e]-=s;s=d+1,r=new G,r.bufferVertex(l),n&&r.bufferTexCoord(c),r.bufferIndex(u),t&&r.bufferNormal(h),a.push(r)}return a}return r=new G,r.bufferVertex(e.positions),n&&r.bufferTexCoord(e.coords),r.bufferIndex(e.indices),t&&r.bufferNormal(e.normals),r})({positions:n,coords:r,normals:a,indices:u})})(t)}return{id:e,source:r,type:n,file:a}})),console.table(Ae)},get:e=>{const t=Ae.find((t=>t.id===e));return t?t.file:null}};var Ie=a(437);class ke extends re{constructor(){super().setMesh(oe()).useProgram(le,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform float uRatio;\n\nout vec4 oColor;\n\nvoid main(void) {\n vec2 uv = vTextureCoord - .5;\n if(uRatio < 1.0) {\n uv.x *= uRatio;\n } else {\n uv.y /= uRatio;\n }\n uv += .5;\n vec4 color = texture(uMap, uv);\n color.rgb *= .8;\n\n oColor = color;\n}")}draw(){U.disable(U.DEPTH_TEST),this.uniform("uRatio",U.aspectRatio),super.draw(),U.enable(U.DEPTH_TEST)}}class Ce extends re{constructor(){super();const{numParticles:e}=Me.default,t=[],n=[],r=[],a=[],s=[],o=()=>{const e=2*Math.sqrt((0,Se.MX)());return ee.random([0,0,0],e)};for(let i=0;i{const{pos:o,normal:i}=((e,t)=>{const n=2*Math.PI/3*t,r=Math.cos(n),a=Math.sin(n);return{pos:[e,.01*a,.01*r],normal:[0,a,r]}})(e,t);r.push(o),s.push(i),a.push([e/n,t/3])},l=n*n;for(let e=0;e 0.5) discard;\n // shadow\n vec4 shadowCoord = vShadowCoord / vShadowCoord.w;\n\tfloat s = samplePCF3x3(shadowCoord);\n s = mix(s, 1.0, .6);\n\n float d = diffuse(vNormal, uLight, .5);\n vec3 color = vColor * d * s;\n color = smoothstep(vec3(0.0), vec3(1.0), color) * 1.2;\n\n oColor = vec4(color, 1.0);\n}").uniform("uTotal",l).uniform("uNumSets",n)}}class Le extends re{constructor(){super();const e=se(50,50,1,"xz");this.setMesh(e).useProgram("#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec3 aVertexPosition;\nin vec2 aTextureCoord;\nin vec3 aNormal;\n\nuniform mat4 uModelMatrix;\nuniform mat4 uViewMatrix;\nuniform mat4 uProjectionMatrix;\nuniform mat4 uShadowMatrix;\n\nout vec2 vTextureCoord;\nout vec3 vNormal;\nout vec4 vShadowCoord;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, s, -s, c);\n\treturn m * v;\n}\n\nmat4 rotationMatrix(vec3 axis, float angle) {\n axis = normalize(axis);\n float s = sin(angle);\n float c = cos(angle);\n float oc = 1.0 - c;\n \n return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,\n oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,\n oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,\n 0.0, 0.0, 0.0, 1.0);\n}\n\nvec3 rotate(vec3 v, vec3 axis, float angle) {\n\tmat4 m = rotationMatrix(axis, angle);\n\treturn (m * vec4(v, 1.0)).xyz;\n}\n\nvoid main(void) {\n vec3 pos = aVertexPosition;\n pos.y -= 4.0;\n\n vec4 wsPos = uModelMatrix * vec4(pos, 1.0);\n gl_Position = uProjectionMatrix * uViewMatrix * wsPos;\n vTextureCoord = aTextureCoord;\n vNormal = aNormal;\n\n vShadowCoord = uShadowMatrix * wsPos;\n}","#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nin vec4 vShadowCoord;\n\nuniform sampler2D uMap;\nuniform sampler2D uDepthMap;\nout vec4 oColor;\n\nfloat samplePCF3x3( vec4 sc )\n{\n const int s = 2;\n float shadow = 0.0;\n\n float bias = 0.005;\n float threshold = sc.z - bias;\n\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2(-s, s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( 0, s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s,-s) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, 0) ).r);\n shadow += step(threshold, textureProjOffset( uDepthMap, sc, ivec2( s, s) ).r);\n return shadow/9.0;\n}\n\nvoid main(void) {\n // shadow\n vec4 shadowCoord = vShadowCoord / vShadowCoord.w;\n\n\tfloat s = 1.0 -samplePCF3x3(shadowCoord);\n\n if(shadowCoord.x < 0.0 ||shadowCoord.x > 1.0 ||\n shadowCoord.y < 0.0 ||shadowCoord.y > 1.0) {\n s = 0.0;\n }\n\n if(shadowCoord.z > 1.0) {\n s = 0.0;\n }\n\n float d = distance(vTextureCoord, vec2(0.5));\n // s *= smoothstep(0.5, 0.0, d);\n\n oColor = vec4(vec3(0.0), s * 0.1);\n // oColor = vec4(vec3(d), 1.0);\n}")}}class Pe extends re{constructor(){super().setMesh(oe()).useProgram(le,"#version 300 es\n\n#define LUT_FLIP_Y 1\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform sampler2D uAOMap;\nuniform sampler2D uNoiseMap;\nuniform sampler2D uLookupMap;\nuniform sampler2D uBlurMap;\nuniform sampler2D uDepthMap;\nuniform float uRatio;\n\nuniform float uFocus; // Focus distance\nuniform float uNear; // Camera near plane\nuniform float uFar; // Camera far plane\n\nout vec4 oColor;\n\nvec4 lookup(in vec4 textureColor, in sampler2D lookupTable, float strength) {\n #ifndef LUT_NO_CLAMP\n textureColor = clamp(textureColor, 0.0, 1.0);\n #endif\n\n mediump float blueColor = textureColor.b * 63.0;\n\n mediump vec2 quad1;\n quad1.y = floor(floor(blueColor) / 8.0);\n quad1.x = floor(blueColor) - (quad1.y * 8.0);\n\n mediump vec2 quad2;\n quad2.y = floor(ceil(blueColor) / 8.0);\n quad2.x = ceil(blueColor) - (quad2.y * 8.0);\n\n highp vec2 texPos1;\n texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n #ifdef LUT_FLIP_Y\n texPos1.y = 1.0-texPos1.y;\n #endif\n\n highp vec2 texPos2;\n texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r);\n texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g);\n\n #ifdef LUT_FLIP_Y\n texPos2.y = 1.0-texPos2.y;\n #endif\n\n lowp vec4 newColor1 = texture(lookupTable, texPos1);\n lowp vec4 newColor2 = texture(lookupTable, texPos2);\n\n lowp vec4 newColor = mix(newColor1, newColor2, fract(blueColor));\n return mix(textureColor, newColor, strength);\n}\n\nvec4 lookup(in vec4 textureColor, in sampler2D lookupTable) {\n return lookup(textureColor, lookupTable, 1.0);\n}\n\nfloat normalizeDepth(float depth) {\n return (2.0 * uNear) / (uFar + uNear - depth * (uFar - uNear));\n}\n\nvoid main(void) {\n float depth = texture(uDepthMap, vTextureCoord).r;\n float normalizedDepth = normalizeDepth(depth);\n vec4 color = texture(uMap, vTextureCoord);\n vec4 blurredColor = texture(uBlurMap, vTextureCoord);\n\n float t = 0.05;\n // Calculate blur amount based on depth difference\n float blurAmount = smoothstep(uFocus - t, uFocus + t, normalizedDepth);\n color = mix(color, blurredColor, blurAmount);\n\n float ao = texture(uAOMap, vTextureCoord).r;\n ao = mix(ao, 1.0, .2);\n \n color.rgb *= ao;\n\n vec2 uv = vTextureCoord - .5;\n if(uRatio > 1.0) {\n uv.y /= uRatio;\n } else {\n uv.x *= uRatio;\n }\n\n float d = length(uv);\n float v = smoothstep(0.3, 0.8, d);\n d = smoothstep(0.2, .8, d);\n\n float n = texture(uNoiseMap, vTextureCoord).r;\n color.rgb *= mix(1.0 - d * 0.4, 1.0, n);\n\n color.rgb = pow(color.rgb, vec3(1.0/1.6));\n\n // dark bottom right\n uv = vTextureCoord;\n uv.y = 1.0 - uv.y;\n d = length(uv);\n d = smoothstep(0.4, 1.2, d);\n color.rgb -= d * 0.4;\n\n oColor = lookup(color, uLookupMap, 0.35);\n\n vec3 colorAdj = smoothstep(vec3(0.0), vec3(1.0), oColor.rgb);\n oColor.rgb = mix(oColor.rgb, colorAdj, .5);\n\n oColor.rgb *= mix(1.1, 0.5, v);\n // oColor = vec4(vec3(ao), 1.0);\n // oColor = vec4(vec3(blurAmount), 1.0);\n\n // oColor = mix(oColor, blurredColor, step(vTextureCoord.x, .5));\n}")}}class Fe extends re{constructor(){super().setMesh(oe()).useProgram(le,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform sampler2D uPosMap;\nuniform sampler2D uFluidMap;\nuniform sampler2D uDensityMap;\nuniform float uTime;\nuniform float uStrength;\nuniform float uBound;\n\nout vec4 oColor;\n\nvec2 rotate(vec2 v, float a) {\n\tfloat s = sin(a);\n\tfloat c = cos(a);\n\tmat2 m = mat2(c, s, -s, c);\n\treturn m * v;\n}\n\nmat4 rotationMatrix(vec3 axis, float angle) {\n axis = normalize(axis);\n float s = sin(angle);\n float c = cos(angle);\n float oc = 1.0 - c;\n \n return mat4(oc * axis.x * axis.x + c, oc * axis.x * axis.y - axis.z * s, oc * axis.z * axis.x + axis.y * s, 0.0,\n oc * axis.x * axis.y + axis.z * s, oc * axis.y * axis.y + c, oc * axis.y * axis.z - axis.x * s, 0.0,\n oc * axis.z * axis.x - axis.y * s, oc * axis.y * axis.z + axis.x * s, oc * axis.z * axis.z + c, 0.0,\n 0.0, 0.0, 0.0, 1.0);\n}\n\nvec3 rotate(vec3 v, vec3 axis, float angle) {\n\tmat4 m = rotationMatrix(axis, angle);\n\treturn (m * vec4(v, 1.0)).xyz;\n}\n\n// curlNoise.glsl\n\nvec3 mod289(vec3 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\nvec4 mod289(vec4 x) { return x - floor(x * (1.0 / 289.0)) * 289.0; }\n\n// snoise.glsl\nvec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v){\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n \n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n \n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n \n vec3 x1 = x0 - i1 + 1.0 * C.xxx;\n vec3 x2 = x0 - i2 + 2.0 * C.xxx;\n vec3 x3 = x0 - 1. + 3.0 * C.xxx;\n \n i = mod(i, 289.0 );\n vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n float n_ = 1.0/7.0;\n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z *ns.z);\n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ );\n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) );\n}\n\nfloat snoise(float x, float y, float z){\n return snoise(vec3(x, y, z));\n}\n\nvec3 snoiseVec3( vec3 x ){\n\n\tfloat s = snoise(vec3( x ));\n\tfloat s1 = snoise(vec3( x.y - 19.1 , x.z + 33.4 , x.x + 47.2 ));\n\tfloat s2 = snoise(vec3( x.z + 74.2 , x.x - 124.5 , x.y + 99.4 ));\n\tvec3 c = vec3( s , s1 , s2 );\n\treturn c;\n\n}\n\nvec3 curlNoise( vec3 p ){\n\t\n\tconst float e = .1;\n\tvec3 dx = vec3( e , 0.0 , 0.0 );\n\tvec3 dy = vec3( 0.0 , e , 0.0 );\n\tvec3 dz = vec3( 0.0 , 0.0 , e );\n\n\tvec3 p_x0 = snoiseVec3( p - dx );\n\tvec3 p_x1 = snoiseVec3( p + dx );\n\tvec3 p_y0 = snoiseVec3( p - dy );\n\tvec3 p_y1 = snoiseVec3( p + dy );\n\tvec3 p_z0 = snoiseVec3( p - dz );\n\tvec3 p_z1 = snoiseVec3( p + dz );\n\n\tfloat x = p_y1.z - p_y0.z - p_z1.y + p_z0.y;\n\tfloat y = p_z1.x - p_z0.x - p_x1.z + p_x0.z;\n\tfloat z = p_x1.y - p_x0.y - p_y1.x + p_y0.x;\n\n\tconst float divisor = 1.0 / ( 2.0 * e );\n\treturn normalize( vec3( x , y , z ) * divisor );\n\n}\n\nvec2 _normalize(vec2 v) {\n if (length(v) > 0.0) {\n return normalize(v);\n } else {\n return vec2(0.0);\n }\n}\n\n#define PI 3.1415926535897932384626433832795\n#define minY -3.0\n\nvoid main(void) {\n vec3 pos = texture(uPosMap, vTextureCoord).xyz;\n vec3 noise = curlNoise(pos * 0.5 + uTime * 0.15);\n pos += noise * 0.002;\n\n vec2 uv = pos.xy / uBound * .5 + .5;\n vec2 vel = texture(uFluidMap, uv).xy;\n float density = texture(uDensityMap, uv).x;\n density = smoothstep(0.0, 1.0, density);\n density = mix(0.25, 1.0, density);\n\n float dz = abs(pos.z - 2.0);\n dz = smoothstep(3.0, 0.0, dz);\n\n pos.xy += vel * 0.0002 * density * dz * uStrength;\n\n float d = length(pos);\n float maxRadius = 8.0;\n if(d > maxRadius) {\n pos = normalize(pos) * maxRadius;\n }\n\n if(pos.y < minY) {\n pos.y += (minY - pos.y) * 0.1;\n }\n\n oColor = vec4(pos, 1.0);\n}").setClearColor(0,0,0,0)}}class Be extends re{constructor(){super().setMesh(oe()).useProgram(le,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform sampler2D uMap;\nuniform vec2 uPos;\nuniform vec2 uDir;\nuniform float uStrength;\n\nout vec4 oColor;\n\nvoid main(void) {\n vec3 color = texture(uMap, vTextureCoord).rgb;\n\n float d = distance(vTextureCoord, uPos);\n float radius = uStrength * 0.5;\n float t = smoothstep(radius, 0.0, d);\n\n float f = smoothstep(0.0, 1.0, uStrength);\n color.rg += uDir * t * f * 1.5;\n\n color *= .99;\n\n oColor = vec4(color, 1.0);\n}").setClearColor(0,0,0,1)}}let ze,Ue,$e,Ve,je,He,Ge;var We=a(523);class qe{refCount(e){return Ke("refCount")}incRef(e){return Ke("incRef")}timerAvailable(){return!0}time(e){return Ke("time")}read(e){return Ke("read")}readSync(e){return Ke("readSync")}readToGPU(e,t){return Ke("readToGPU")}numDataIds(){return Ke("numDataIds")}disposeData(e,t){return Ke("disposeData")}write(e,t,n){return Ke("write")}move(e,t,n,r,a){return Ke("move")}createTensorFromGPUData(e,t,n){return Ke("createTensorFromGPUData")}memory(){return Ke("memory")}floatPrecision(){return Ke("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return Ke("dispose")}}function Ke(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Xe(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function Ye(e,t,n=""){Xe(Qe(e,t),(()=>n+` Shapes ${e} and ${t} must match`))}function Ze(e){Xe(null!=e,(()=>"The input to the tensor constructor must be a non-null value."))}function Je(e){if(0===e.length)return 1;let t=e[0];for(let n=1;nt)):[].concat(e)).every((e=>e>=-n&&e`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`)),Xe(e.every((e=>et(e))),(()=>`All values in axis param must be integers but got axis ${e}`)),e.map((e=>e<0?n+e:e))}function rt(e,t){let n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);n=new Array(t)}return n}function at(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function st(e){return"string"==typeof e||e instanceof String}function ot(e){return Array.isArray(e)?ot(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":"number"==typeof e?"float32":st(e)?"string":"boolean"==typeof e?"bool":"float32"}function it(e){return!!(e&&e.constructor&&e.call&&e.apply)}function ut(e){const t=e.length;if(t<2)return[];const n=new Array(t-1);n[t-2]=e[t-1];for(let r=t-3;r>=0;--r)n[r]=n[r+1]*e[r+1];return n}function lt(e,t,n,r=!1){const a=new Array;if(1===t.length){const s=t[0]*(r?2:1);for(let t=0;te*t))*(r?2:1);for(let t=0;te*t))*(n?2:1);if(0===r)return[];if(r!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return lt(0,e,t,n)}function ht(e,t){const n=pt(e,t);for(let e=0;e{Xe(Number.isInteger(t)&&t>=0,(()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`))}))}function ft(e){return e&&e.then&&"function"==typeof e.then}const mt="tfjsflags";class gt{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=yt,this.populateURLFlags()}setPlatform(e,t){null!=this.platform&&(vt().getBool("IS_TEST")||vt().getBool("PROD")||console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)),this.platformName=e,this.platform=t}registerFlag(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){const t=this.urlFlags[e];vt().getBool("IS_TEST")||vt().getBool("PROD")||console.warn(`Setting feature override from URL ${e}: ${t}.`),this.set(e,t)}}async getAsync(e){return e in this.flags||(this.flags[e]=await this.evaluateFlag(e)),this.flags[e]}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(ft(t))throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getString(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(null==this.flagRegistry[e])throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(null==this.flagRegistry[e])throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(void 0===this.global||void 0===this.global.location||void 0===this.global.location.search)return;const e=this.getQueryParams(this.global.location.search);mt in e&&e[mt].split(",").forEach((e=>{const[t,n]=e.split(":");this.urlFlags[t]=function(e,t){const n=t.toLowerCase();return"true"===n||"false"===n?"true"===n:""+ +n===n?+n:t}(0,n)}))}}function yt(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,((e,...n)=>(function(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}(t,n[0],n[1]),n.join("=")))),t}function vt(){return bt}let xt,bt=null;function _t(){if(null==xt){let e;if("undefined"!=typeof window)e=window;else if(void 0!==a.g)e=a.g;else if("undefined"!=typeof process)e=process;else{if("undefined"==typeof self)throw new Error("Could not find a global object");e=self}xt=e}return xt}function Et(e,t){const n=function(){const e=_t();return null==e._tfGlobals&&(e._tfGlobals=new Map),e._tfGlobals}();if(n.has(e))return n.get(e);{const r=t();return n.set(e,r),n.get(e)}}const Tt="Cast",wt="Fill",Nt="Identity",St="LinSpace",Mt="Range",At="Tile",Rt="Transpose",It="FromPixels",kt="_FusedMatMul",Ct="FusedConv2D",Ot="FusedDepthwiseConv2D",Dt=Et("kernelRegistry",(()=>new Map)),Lt=Et("gradRegistry",(()=>new Map));function Pt(e,t){const n=function(e,t){return`${t}_${e}`}(e,t);return Dt.get(n)}function Ft(e){return Lt.get(e)}function Bt(e){const t=Dt.entries(),n=[];for(;;){const{done:r,value:a}=t.next();if(r)break;const[s,o]=a,[i]=s.split("_");i===e&&n.push(o)}return n}function zt(...e){vt().getBool("IS_TEST")||vt().getBool("PROD")||console.warn(...e)}function Ut(e){return e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray}var $t=a(141);const Vt=a.n($t)()||$t;function jt(e){return Vt.fromString(e,!0,16)}function Ht(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Kt(e)),vt().getBool("DEBUG")&&function(e,t){for(let n=0;n{r=n()};let s;const o=Gt();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(const e of r)e.dataSync();s=Promise.resolve({kernelMs:Gt()-o})}if(vt().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let t=0;t{Yt(t,n.dtype,e)}))}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then((e=>e.kernelMs)),extraInfo:s.then((e=>null!=e.getExtraProfileInfo?e.getExtraProfileInfo():""))}}logKernelProfile(e){const{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach((e=>{Promise.all([e.data(),r,s]).then((n=>{this.logger.logKernelProfile(t,e,n[0],n[1],a,n[2])}))}))}}function Yt(e,t,n){if("float32"!==t)return!1;for(let t=0;t0?r:""} `}}console.log(`%c${i}\t%c${o}\t%c${u}D ${c}\t%c${l}\t%c${h}\t%c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}const Jt=20,Qt=3,en=7;function tn(e,t,n,r){const a=ut(t),s=function(e,t,n,r){const a=Je(t),s=r[r.length-1],o=new Array(s).fill(0),i=t.length,u="complex64"===n?sn(e):e;if(i>1)for(let e=0;e" "+e)).join("\n")),u.join("\n")}function nn(e,t,n){let r;return r=Array.isArray(e)?`${parseFloat(e[0].toFixed(en))} + ${parseFloat(e[1].toFixed(en))}j`:st(e)?`'${e}'`:"bool"===n?rn(e):parseFloat(e.toFixed(en)).toString(),tt(r,t)}function rn(e){return 0===e?"false":"true"}function an(e,t,n,r,a,s=!0){const o="complex64"===n?2:1,i=t[0],u=t.length;if(0===u)return"complex64"===n?[nn(sn(e)[0],0,n)]:"bool"===n?[rn(e[0])]:[e[0].toString()];if(1===u){if(i>Jt){const t=Qt*o;let r=Array.from(e.slice(0,t)),s=Array.from(e.slice((i-Qt)*o,i*o));return"complex64"===n&&(r=sn(r),s=sn(s)),["["+r.map(((e,t)=>nn(e,a[t],n))).join(", ")+", ..., "+s.map(((e,t)=>nn(e,a[i-Qt+t],n))).join(", ")+"]"]}return["["+("complex64"===n?sn(e):Array.from(e)).map(((e,t)=>nn(e,a[t],n))).join(", ")+"]"]}const l=t.slice(1),c=r.slice(1),h=r[0]*o,p=[];if(i>Jt){for(let t=0;t0?p[0]+d:"");for(let e=1;e`Length of values '${e}' does not match the size inferred by the shape '${this.size}'.`))}if("complex64"===t)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||rt(t,this.size),this.strides=ut(e)}set(e,...t){0===t.length&&(t=[0]),Xe(t.length===this.rank,(()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`));const n=this.locToIndex(t);this.values[n]=e}get(...e){0===e.length&&(e=[0]);let t=0;for(const n of e){if(n<0||n>=this.shape[t]){const t=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(t)}t++}let n=e[e.length-1];for(let t=0;tWt(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),un().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();const e=un().readSync(this.dataId);if("string"===this.dtype)try{return e.map((e=>Wt(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();const e=await un().read(this.dataId);return"string"===this.dtype?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(un().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return ln.print(this,e)}clone(){return this.throwIfDisposed(),ln.clone(this)}toString(e=!1){return tn(this.dataSync(),this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),ln.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),un().makeVariable(this,e,t,n)}}Object.defineProperty(hn,Symbol.hasInstance,{value:e=>!!e&&null!=e.data&&null!=e.dataSync&&null!=e.throwIfDisposed}),Et("Tensor",(()=>hn));class pn extends hn{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r),this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Qe(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);un().disposeTensor(this),this.dataId=e.dataId,un().incRef(this,null)}dispose(){un().disposeVariable(this),this.isDisposedInternal=!0}}var dn,fn,mn,gn,yn;Object.defineProperty(pn,Symbol.hasInstance,{value:e=>e instanceof hn&&null!=e.assign&&e.assign instanceof Function}),function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"}(dn||(dn={})),function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"}(fn||(fn={})),function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"}(mn||(mn={})),function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"}(gn||(gn={})),function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"}(yn||(yn={}));const vn={float32:gn,int32:fn,bool:mn,complex64:yn};function xn(e){return null!=e&&"object"==typeof e&&"texture"in e&&e.texture instanceof WebGLTexture}function bn(e){return"undefined"!=typeof GPUBuffer&&null!=e&&"object"==typeof e&&"buffer"in e&&e.buffer instanceof GPUBuffer}function _n(e,t){if(e.dtype===t.dtype)return[e,t];const n=function(e,t){if("string"===e||"string"===t){if("string"===e&&"string"===t)return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return vn[e][t]}(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function En(e){const t=[];return Tn(e,t,new Set),t}function Tn(e,t,n){if(null==e)return;if(e instanceof hn)return void t.push(e);if(r=e,!Array.isArray(r)&&"object"!=typeof r)return;var r;const a=e;for(const e in a){const r=a[e];n.has(r)||(n.add(r),Tn(r,t,n))}}function wn(e){return null!=e.kernelName}class Nn{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map((e=>e.name))))}}}dispose(){for(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class Sn{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Nn}async ready(){if(null!=this.pendingBackendInit)return this.pendingBackendInit.then((()=>{}));if(null!=this.backendInstance)return;const e=this.getSortedBackends();for(let t=0;t{null!=e.setupFunc&&e.setupFunc(this.backendInstance)}))}disposeRegisteredKernels(e){Bt(e).forEach((t=>{null!=t.disposeFunc&&t.disposeFunc(this.registry[e])}))}initializeBackend(e){const t=this.registryFactory[e];if(null==t)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const n=t.factory();if(!n||n instanceof qe||"function"!=typeof n.then)return this.registry[e]=n,{success:!0,asyncInit:!1};{const t=++this.pendingBackendInitId,r=n.then((n=>!(t(tthis.registryFactory[t].priority-this.registryFactory[e].priority))}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;tthis.startScope(r)),(()=>this.endScope(n)),(()=>(n=t(),n instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n)))}scopedRun(e,t,n){e();try{const e=n();return t(),e}catch(e){throw t(),e}}nextTensorId(){return Sn.nextTensorId++}nextVariableId(){return Sn.nextVariableId++}clone(e){const t=An.runKernel(Nt,{x:e}),n={x:e};return this.addTapeNode(this.state.activeScope.name,n,[t],(e=>({x:()=>{const t={x:e};return An.runKernel(Tt,t,{dtype:"float32"})}})),[],{}),t}runKernel(e,t,n){if(null==this.backendName&&this.backend,null==Pt(e,this.backendName))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){const r=this.backend.numDataIds();let a=0;n.forEach((e=>{a+="complex64"===e.dtype?3:1}));const s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=r-t-a-s;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[];const r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;let o,i;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;const u=wn(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(wn(e)){const{kernelName:t,inputs:a,attrs:s}=e;null==this.backendName&&this.backend;const u=Pt(t,this.backendName);Xe(null!=u,(()=>`Cannot find registered kernel '${t}' for backend '${this.backendName}'`)),o=()=>{const e=this.backend.numDataIds();i=u.kernelFunc({inputs:a,attrs:s,backend:this.backend});const o=Array.isArray(i)?i:[i];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(t,e,o);const l=o.map((e=>null!=e.rank?e:this.makeTensorFromTensorInfo(e)));if(r){const e=this.getTensorsForGradient(t,a,l);n=this.saveTensorsForBackwardMode(e)}return l}}else{const{forwardFunc:t}=e,a=e=>{r&&(n=e.map((e=>this.keep(this.clone(e)))))};o=()=>{const e=this.backend.numDataIds();i=this.tidy((()=>t(this.backend,a)));const n=Array.isArray(i)?i:[i];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(u,e,n),n}}const{inputs:l,attrs:c}=e,h=wn(e)?null:e.backwardsFunc;let p;return this.scopedRun((()=>this.state.kernelDepth++),(()=>this.state.kernelDepth--),(()=>{this.ENV.getBool("DEBUG")||this.state.profiling?(p=this.profiler.profileKernel(u,l,(()=>o())),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(p),t=p.outputs):t=o()})),r&&this.addTapeNode(u,l,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:u,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(l).map((e=>null!=l[e]?l[e].shape:null)),outputShapes:t.map((e=>e.shape)),kernelTimeMs:p.timeMs,extraInfo:p.extraInfo}),Array.isArray(i)?t:t[0]}saveTensorsForBackwardMode(e){const t=e.map((e=>this.keep(this.clone(e))));return t}getTensorsForGradient(e,t,n){const r=Ft(e);if(null!=r){const e=r.inputsToSave||[],a=r.outputsToSave||[];let s;r.saveAllInputs?(Xe(Array.isArray(t),(()=>"saveAllInputs is true, expected inputs to be an array.")),s=Object.keys(t).map((e=>t[e]))):s=e.map((e=>t[e]));const o=n.filter(((e,t)=>a[t]));return s.concat(o)}return[]}makeTensor(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;"string"===n&&st(e[0])&&(a=e.map((e=>function(e,t="utf-8"){return t=t||"utf-8",vt().platform.encode(e,t)}(e))));const s=r.write(a,t,n),o=new hn(t,n,s,this.nextTensorId());if(this.trackTensor(o,r),"string"===n){const e=this.state.tensorInfo.get(s),t=function(e){if(null==e)return 0;let t=0;return e.forEach((e=>t+=e.length)),t}(a);this.state.numBytes+=t-e.bytes,e.bytes=t}return o}makeTensorFromDataId(e,t,n,r){const a={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(a,r)}makeTensorFromTensorInfo(e,t){const{dataId:n,shape:r,dtype:a}=e,s=new hn(r,a,n,this.nextTensorId());return this.trackTensor(s,t),s}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));const a=new pn(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;let n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*at(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof pn||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;const t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){const t=e.size*at(e.dtype);this.state.numBytes-=t}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(const e in this.state.registeredVariables){const t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map((e=>e.totalBytesSnapshot))),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(const e of this.state.activeProfile.kernels)e.kernelTimeMs=await e.kernelTimeMs,e.extraInfo=await e.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&0===this.state.kernelDepth}addTapeNode(e,t,n,r,a,s){const o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},i=Ft(e);null!=i&&(r=i.gradFunc),null!=r&&(o.gradient=e=>(e=e.map(((e,t)=>{if(null==e){const e=n[t],r=pt(e.size,e.dtype);return this.makeTensor(r,e.shape,e.dtype)}return e})),r(e.length>1?e:e[0],a,s))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=En(e),n=new Set(t.map((e=>e.id)));for(let e=0;e{e.kept||e.scopeId!==r.id||this.track(e)}))}gradients(e,t,n,r=!1){if(Xe(t.length>0,(()=>"gradients() received an empty list of xs.")),null!=n&&"float32"!==n.dtype)throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);const a=this.scopedRun((()=>this.startTape()),(()=>this.endTape()),(()=>this.tidy("forward",e)));Xe(a instanceof hn,(()=>"The result y returned by f() must be a tensor."));const s=function(e,t,n){const r={},a={};for(let e=0;er[e.id]=!0)),i=!0,a[s.id]=!0;break}if(i)break}}const s={};s[n.id]=!0;const o={};for(let t=e.length-1;t>=0;t--){const n=e[t],r=n.inputs;for(let e=0;e0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(()=>{const e={};e[a.id]=null==n?function(e){const t=ht(Je(e),"float32");return An.makeTensor(t,e,"float32")}(a.shape):n,function(e,t,n,r){for(let a=t.length-1;a>=0;a--){const s=t[a],o=[];if(s.outputs.forEach((t=>{const n=e[t.id];null!=n?o.push(n):o.push(null)})),null==s.gradient)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);const i=s.gradient(o);for(const t in s.inputs){if(!(t in i))throw new Error(`Cannot backprop through input ${t}. Available gradients found: ${Object.keys(i)}.`);const a=n((()=>i[t]()));if("float32"!==a.dtype)throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${t} must have 'float32' dtype, but has '${a.dtype}'`);const o=s.inputs[t];if(!Qe(a.shape,o.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${t}' has shape '${a.shape}', which does not match the shape of the input '${o.shape}'`);if(null==e[o.id])e[o.id]=a;else{const t=e[o.id];e[o.id]=r(t,a),t.dispose()}}}}(e,s,(e=>this.tidy(e)),Rn);const r=t.map((t=>e[t.id]));return 0===this.state.gradientDepth&&(this.state.activeTape.forEach((e=>{for(const t of e.saved)t.dispose()})),this.state.activeTape=null),{value:a,grads:r}}))}customGrad(e){return Xe(it(e),(()=>"The f passed in customGrad(f) must be a function.")),(...t)=>{let n;Xe(t.every((e=>e instanceof hn)),(()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors"));const r={};return t.forEach(((e,t)=>{r[t]=e})),this.runKernelFunc({forwardFunc:(r,a)=>(n=e(...t,a),Xe(n.value instanceof hn,(()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor")),Xe(it(n.gradFunc),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.")),n.value),backwardsFunc:(e,r)=>{const a=n.gradFunc(e,r),s=Array.isArray(a)?a:[a];Xe(s.length===t.length,(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...).")),Xe(s.every((e=>e instanceof hn)),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."));const o={};return s.forEach(((e,t)=>{o[t]=()=>e})),o},inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){const t=Gt(),n=await this.backend.time(e);return n.wallMs=Gt()-t,n}track(e){return null!=this.state.activeScope&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Nn;for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}function Mn(){const e=_t();if(null==e._tfengine){const t=new gt(e);e._tfengine=new Sn(t)}var t;return t=e._tfengine.ENV,bt=t,un=()=>e._tfengine,e._tfengine}Sn.nextTensorId=0,Sn.nextVariableId=0;const An=Mn();function Rn(e,t){const n={a:e,b:t};return An.runKernel("Add",n)}const In=vt();function kn(e,t){let n=e;if(qt(e))return"string"===t?[]:[e.length];if(xn(e)){const t=e.channels||"RGBA";return[e.height,e.width*t.length]}if(bn(e))return[e.buffer.size/(null==t?4:at(t))];if(!Array.isArray(e))return[];const r=[];for(;Array.isArray(n)||qt(n)&&"string"!==t;)r.push(n.length),n=n[0];return Array.isArray(e)&&vt().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&Cn(e,r,[]),r}function Cn(e,t,n){if(n=n||[],!Array.isArray(e)&&!qt(e))return void Xe(0===t.length,(()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`));Xe(t.length>0,(()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`)),Xe(e.length===t[0],(()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`));const r=t.slice(1);for(let t=0;t=0&&(a=r),On(r,a,t,n),null==e||!qt(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){const r=null==e?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${r}'`)}const s=kn(e,a);qt(e)||Array.isArray(e)||(e=[e]);const o="string"!==a?Ht(e,a):Kt(e,[],!0);return An.makeTensor(o,s,a)}function Ln(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map(((e,a)=>Dn(e,`${t}[${a}]`,n,r)))}In.registerFlag("DEBUG",(()=>!1),(e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")})),In.registerFlag("IS_BROWSER",(()=>"undefined"!=typeof window&&null!=window.document||"undefined"!=typeof WorkerGlobalScope)),In.registerFlag("IS_NODE",(()=>"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node)),In.registerFlag("IS_CHROME",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor))),In.registerFlag("IS_SAFARI",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor))),In.registerFlag("PROD",(()=>!1)),In.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(()=>In.getBool("DEBUG"))),In.registerFlag("DEPRECATION_WARNINGS_ENABLED",(()=>!0)),In.registerFlag("IS_TEST",(()=>!1)),In.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(()=>In.getBool("DEBUG"))),In.registerFlag("WRAP_TO_IMAGEBITMAP",(()=>!1)),In.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(()=>!1)),In.registerFlag("USE_SETTIMEOUTCUSTOM",(()=>!1));const Pn="__op";function Fn(e){const t=Object.keys(e);if(1!==t.length)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0];const r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=Pn;const a=(...e)=>{An.startScope(n);try{const t=r(...e);return ft(t)&&console.error("Cannot return a Promise inside of tidy."),An.endScope(t),t}catch(e){throw An.endScope(null),e}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}const Bn=Fn({complex_:function(e,t){const n=Dn(e,"real","complex"),r=Dn(t,"imag","complex");Ye(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);const a={real:n,imag:r};return An.runKernel("Complex",a)}});function zn(e,t,n,r){if(null==r)r=ot(e);else if("complex64"===r)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(bn(e)||xn(e)){if("float32"!==r&&"int32"!==r)throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${r}.`);return An.backend.createTensorFromGPUData(e,t||n,r)}if(!qt(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=t){dt(t);const e=Je(t),r=Je(n);Xe(e===r,(()=>`Based on the provided shape, [${t}], the tensor should have ${e} values but has ${r}`));for(let e=0;e`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `))}}return qt(e)||Array.isArray(e)||(e=[e]),t=t||n,e="string"!==r?Ht(e,r):Kt(e,[],!0),An.makeTensor(e,t,r)}function Un(e,t,n){return zn(e,t,kn(e,n),n)}const $n={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8};class Vn{static join(e){return new Vn(e).slice()}constructor(e){if(this.shards=[],this.previousShardIndex=0,null==e)return;if(e instanceof Array||(e=[e]),0===(e=e.map((e=>qt(e)?e.buffer:e))).length)return;this.bufferUniformSize=e[0].byteLength;let t=0;for(let n=0;n=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(t){return e=t.end?1:0}if(0===t(this.shards[this.previousShardIndex]))return this.previousShardIndex;const n=function(e,t){let n=0,r=e.length;for(;n<=r;){const a=Math.floor((r-n)/2)+n,s=t(e[a]);if(0===s)return a;s<0?r=a:n=a+1}return-1}(this.shards,t);return-1===n?-1:(this.previousShardIndex=n,this.previousShardIndex)}}const jn=4;async function Hn(e,t){const n=[],r=[],a=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);for(let s=0;s{const t=await i.bytes(),n=t.reduce(((e,t)=>e+t.length),0)+jn*t.length,r=new Uint8Array(n);let a=0;for(let e=0;e{if(t+=e.byteLength,n.push(e.byteLength===e.buffer.byteLength?e:new e.constructor(e)),!(e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${e.constructor.name}`)}));const r=new Uint8Array(t);let a=0;return n.forEach((e=>{r.set(new Uint8Array(e.buffer),a),a+=e.byteLength})),r.buffer}const qn="undefined"!=typeof Buffer&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function Kn(e){return qn?Buffer.byteLength(e,"utf8"):new Blob([e]).size}function Xn(e){return Vn.join(e)}function Yn(e){for(e=e.trim();e.endsWith("/");)e=e.slice(0,e.length-1);const t=e.split("/");return t[t.length-1]}function Zn(e,t){const n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return null!=e.signature&&(n.signature=e.signature),null!=e.userDefinedMetadata&&(n.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(n.modelInitializer=e.modelInitializer),null!=e.initializerSignature&&(n.initializerSignature=e.initializerSignature),null!=e.trainingConfig&&(n.trainingConfig=e.trainingConfig),n}function Jn(e,t,n){const r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(null!=e.trainingConfig&&(r.trainingConfig=e.trainingConfig),null!=e.weightsManifest){if(!t)throw new Error("modelJSON has weightsManifest but weightSpecs is null");if(!n)throw new Error("modelJSON has weightsManifest but weightData is null");r.weightSpecs=t,r.weightData=n}return null!=e.signature&&(r.signature=e.signature),null!=e.userDefinedMetadata&&(r.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(r.modelInitializer=e.modelInitializer),null!=e.initializerSignature&&(r.initializerSignature=e.initializerSignature),r}async function Qn(e,t){let n,r;return null!=e.weightsManifest&&([n,r]=await t(e.weightsManifest)),Jn(e,n,r)}function er(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==e.modelTopology?0:Kn(JSON.stringify(e.modelTopology)),weightSpecsBytes:null==e.weightSpecs?0:Kn(JSON.stringify(e.weightSpecs)),weightDataBytes:null==e.weightData?0:new Vn(e.weightData).byteLength}}function tr(e){const t=[];for(const n of e)t.push(...n.weights);return t}function nr(){const e=function(){const e=e=>{let t=e<<13,n=0;for(;0==(8388608&t);)n-=8388608,t<<=1;return t&=-8388609,n+=947912704,t|n},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let e=1024;e<2048;e++)t[e]=939524096+(e-1024<<13);return t}(),t=function(){const e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}(),n=function(){const e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}();return r=>{const a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let a=0;a>10]+(1023&o)]+t[o>>10];s[a]=i}return new Float32Array(a)}}class rr{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return null==rr.instance&&(rr.instance=new rr),rr.instance}static registerSaveRouter(e){rr.getInstance().saveRouters.push(e)}static registerLoadRouter(e){rr.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return rr.getHandlers(e,"save")}static getLoadHandlers(e,t){return rr.getHandlers(e,"load",t)}static getHandlers(e,t,n){const r=[];return("load"===t?rr.getInstance().loadRouters:rr.getInstance().saveRouters).forEach((t=>{const a=t(e,n);null!==a&&r.push(a)})),r}}const ar=e=>rr.registerSaveRouter(e),sr=e=>rr.registerLoadRouter(e),or=e=>rr.getSaveHandlers(e),ir=(e,t)=>rr.getLoadHandlers(e,t),ur="tensorflowjs",lr="models_store",cr="model_info_store";function hr(){if(!vt().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");const e="undefined"==typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function pr(e){const t=e.result;t.createObjectStore(lr,{keyPath:"modelPath"}),t.createObjectStore(cr,{keyPath:"modelPath"})}class dr{constructor(e){if(this.indexedDB=hr(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise(((e,n)=>{const r=this.indexedDB.open(ur,1);r.onupgradeneeded=()=>pr(r),r.onsuccess=()=>{const a=r.result;if(null==t){const t=a.transaction(lr,"readonly"),r=t.objectStore(lr).get(this.modelPath);r.onsuccess=()=>{if(null==r.result)return a.close(),n(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));e(r.result.modelArtifacts)},r.onerror=e=>(a.close(),n(r.error)),t.oncomplete=()=>a.close()}else{t.weightData=Vn.join(t.weightData);const r=er(t),s=a.transaction(cr,"readwrite");let o,i,u=s.objectStore(cr);try{o=u.put({modelPath:this.modelPath,modelArtifactsInfo:r})}catch(e){return n(e)}o.onsuccess=()=>{i=a.transaction(lr,"readwrite");const o=i.objectStore(lr);let l;try{l=o.put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:r})}catch(e){return n(e)}l.onsuccess=()=>e({modelArtifactsInfo:r}),l.onerror=e=>{u=s.objectStore(cr);const t=u.delete(this.modelPath);t.onsuccess=()=>(a.close(),n(l.error)),t.onerror=e=>(a.close(),n(l.error))}},o.onerror=e=>(a.close(),n(o.error)),s.oncomplete=()=>{null==i?a.close():i.oncomplete=()=>a.close()}}},r.onerror=e=>n(r.error)}))}}dr.URL_SCHEME="indexeddb://";const fr=e=>{return vt().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(dr.URL_SCHEME)?(t=e.slice(dr.URL_SCHEME.length),new dr(t)):null;var t};rr.registerSaveRouter(fr),rr.registerLoadRouter(fr);class mr{constructor(){this.indexedDB=hr()}async listModels(){return new Promise(((e,t)=>{const n=this.indexedDB.open(ur,1);n.onupgradeneeded=()=>pr(n),n.onsuccess=()=>{const r=n.result,a=r.transaction(cr,"readonly"),s=a.objectStore(cr).getAll();s.onsuccess=()=>{const t={};for(const e of s.result)t[e.modelPath]=e.modelArtifactsInfo;e(t)},s.onerror=e=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=e=>t(n.error)}))}async removeModel(e){var t;return e=(t=e).startsWith(dr.URL_SCHEME)?t.slice(dr.URL_SCHEME.length):t,new Promise(((t,n)=>{const r=this.indexedDB.open(ur,1);r.onupgradeneeded=()=>pr(r),r.onsuccess=()=>{const a=r.result,s=a.transaction(cr,"readwrite"),o=s.objectStore(cr),i=o.get(e);let u;i.onsuccess=()=>{if(null==i.result)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{const r=o.delete(e),s=()=>{u=a.transaction(lr,"readwrite");const r=u.objectStore(lr).delete(e);r.onsuccess=()=>t(i.result.modelArtifactsInfo),r.onerror=e=>n(i.error)};r.onsuccess=s,r.onerror=e=>(s(),a.close(),n(i.error))}},i.onerror=e=>(a.close(),n(i.error)),s.oncomplete=()=>{null==u?a.close():u.oncomplete=()=>a.close()}},r.onerror=e=>n(r.error)}))}}const gr="/",yr="tensorflowjs_models",vr="info",xr="model_topology",br="weight_specs",_r="weight_data",Er="model_metadata";function Tr(e){return{info:[yr,e,vr].join(gr),topology:[yr,e,xr].join(gr),weightSpecs:[yr,e,br].join(gr),weightData:[yr,e,_r].join(gr),modelMetadata:[yr,e,Er].join(gr)}}function wr(e){for(const t of Object.values(e))window.localStorage.removeItem(t)}function Nr(e){const t=e.split(gr);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(gr)}class Sr{constructor(e){if(!vt().getBool("IS_BROWSER")||"undefined"==typeof window||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=Tr(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{const t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=er(e),a=Vn.join(e.weightData);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(e){if(qn)return Buffer.from(e).toString("base64");const t=new Uint8Array(e);let n="";for(let e=0,r=t.length;e{return vt().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Sr.URL_SCHEME)?(t=e.slice(Sr.URL_SCHEME.length),new Sr(t)):null;var t};rr.registerSaveRouter(Mr),rr.registerLoadRouter(Mr);class Ar{constructor(){Xe(vt().getBool("IS_BROWSER"),(()=>"Current environment is not a web browser")),Xe("undefined"==typeof window||void 0!==window.localStorage,(()=>"Current browser does not appear to support localStorage")),this.LS=window.localStorage}async listModels(){const e={},t=yr+gr,n=gr+vr;for(let r=0;r"scheme must not be undefined or null.")),e.endsWith(Rr)&&(e=e.slice(0,e.indexOf(Rr))),Xe(e.length>0,(()=>"scheme must not be an empty string."));const n=Ir.getInstance();Xe(null==n.managers[e],(()=>`A model store manager is already registered for scheme '${e}'.`)),n.managers[e]=t}static getManager(e){const t=Ir.getInstance().managers[e];if(null==t)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(Ir.getInstance().managers)}}function kr(e){if(-1===e.indexOf(Rr))throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Ir.getSchemes().join(",")}`);return{scheme:e.split(Rr)[0],path:e.split(Rr)[1]}}async function Cr(e,t,n=!1){Xe(e!==t,(()=>`Old path and new path are the same: '${e}'`));const r=rr.getLoadHandlers(e);Xe(r.length>0,(()=>`Copying failed because no load handler is found for source URL ${e}.`)),Xe(r.length<2,(()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`));const a=r[0],s=rr.getSaveHandlers(t);Xe(s.length>0,(()=>`Copying failed because no save handler is found for destination URL ${t}.`)),Xe(s.length<2,(()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`));const o=s[0],i=kr(e).scheme,u=kr(e).path,l=i===kr(e).scheme,c=await a.load();n&&l&&await Ir.getManager(i).removeModel(u);const h=await o.save(c);return n&&!l&&await Ir.getManager(i).removeModel(u),h.modelArtifactsInfo}async function Or(){const e=Ir.getSchemes(),t={};for(const n of e){const e=await Ir.getManager(n).listModels();for(const r in e)t[n+Rr+r]=e[r]}return t}async function Dr(e){const t=kr(e);return Ir.getManager(t.scheme).removeModel(t.path)}async function Lr(e,t){return Cr(e,t,!1)}async function Pr(e,t){return Cr(e,t,!0)}class Fr{constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}setTimeoutCustom(e,t){"undefined"!=typeof window&&vt().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(e=>{e.source===window&&e.data.name===this.messageName&&(e.stopPropagation(),(0,this.functionRefs[e.data.index])(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0))}),!0))):setTimeout(e,t)}isTypedArray(e){return Ut(e)}}if(vt().get("IS_BROWSER")){vt().setPlatform("browser",new Fr);try{Ir.registerManager(Sr.URL_SCHEME,new Ar)}catch(e){}try{Ir.registerManager(dr.URL_SCHEME,new mr)}catch(e){}}let Br;function zr(e,t="float32",n){return t=t||"float32",dt(e),new on(e,t,n)}vt().get("IS_NODE")&&!vt().get("IS_BROWSER")&&vt().setPlatform("node",new class{constructor(){this.util=a(628),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return null!=vt().global.fetch?vt().global.fetch(e,t):(null==Br&&(Br=a(410)),Br(e,t))}now(){const e=process.hrtime();return 1e3*e[0]+e[1]/1e6}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)}isTypedArray(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)}});const Ur=Fn({cast_:function(e,t){const n=Dn(e,"x","cast");if(!function(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");const r={x:n},a={dtype:t};return An.runKernel(Tt,r,a)}}),$r=Fn({clone_:function(e){const t={x:Dn(e,"x","clone","string_or_numeric")};return An.runKernel(Nt,t)}});function Vr(e,t=!1){console.log(e.toString(t))}function jr(e,t){return An.tidy(e,t)}function Hr(e){En(e).forEach((e=>e.dispose()))}function Gr(e){return An.keep(e)}Mn(),ln={buffer:zr,cast:Ur,clone:$r,print:Vr},cn=function(e){vt().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(e+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")};const Wr=Fn({add_:function(e,t){let n=Dn(e,"a","add"),r=Dn(t,"b","add");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Add",a)}}),qr=Fn({floorDiv_:function(e,t){let n=Dn(e,"a","floorDiv"),r=Dn(t,"b","floorDiv");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("FloorDiv",a)}}),Kr=Fn({div_:function(e,t){let n=Dn(e,"a","div"),r=Dn(t,"b","div");if([n,r]=_n(n,r),"int32"===n.dtype&&"int32"===r.dtype)return qr(n,r);const a={a:n,b:r};return An.runKernel("RealDiv",a,{})}}),Xr=Fn({mul_:function(e,t){let n=Dn(e,"a","mul"),r=Dn(t,"b","mul");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Multiply",a)}}),Yr=Fn({sqrt_:function(e){const t={x:Dn(e,"x","sqrt","float32")};return An.runKernel("Sqrt",t)}}),Zr=Fn({square_:function(e){const t=Dn(e,"x","square");return An.runKernel("Square",{x:t},{})}}),Jr=Fn({zerosLike_:function(e){const t={x:Dn(e,"x","zerosLike")};return An.runKernel("ZerosLike",t)}});function Qr(e){return An.customGrad(e)}function ea(e,t){if((qt(e)&&"string"!==t||Array.isArray(e))&&"complex64"!==t)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===t&&qt(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return zn(e,[],[],t)}const ta=new Map,na=new Map;class ra{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class aa{constructor(){this.classNameMap={}}static getMap(){return null==aa.instance&&(aa.instance=new aa),aa.instance}static register(e){aa.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function sa(e,t,n){Xe(null!=e.className,(()=>"Class being registered does not have the static className property defined.")),Xe("string"==typeof e.className,(()=>"className is required to be a string, but got type "+typeof e.className)),Xe(e.className.length>0,(()=>"Class being registered has an empty-string as its className, which is disallowed.")),void 0===t&&(t="Custom"),void 0===n&&(n=e.className);const r=t+">"+n;return aa.register(e),ta.set(r,e),na.set(e,r),e}class oa extends ra{minimize(e,t=!1,n){const{value:r,grads:a}=this.computeGradients(e,n);if(null!=n){const e=n.map((e=>({name:e.name,tensor:a[e.name]})));this.applyGradients(e)}else this.applyGradients(a);return Hr(a),t?r:(r.dispose(),null)}get iterations(){return null==this.iterations_&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return function(e,t){Xe(it(e),(()=>"The f passed in variableGrads(f) must be a function")),Xe(null==t||Array.isArray(t)&&t.every((e=>e instanceof pn)),(()=>"The varList passed in variableGrads(f, varList) must be an array of variables"));const n=null!=t;if(!n){t=[];for(const e in An.registeredVariables)t.push(An.registeredVariables[e])}const r=n?t.filter((e=>!e.trainable)):null,a=t.length;t=t.filter((e=>e.trainable)),Xe(t.length>0,(()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`));const{value:s,grads:o}=An.gradients(e,t,null,!0);Xe(o.some((e=>null!=e)),(()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().")),Xe(0===s.rank,(()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${s.rank} tensor`));const i={};return t.forEach(((e,t)=>{null!=o[t]&&(i[e.name]=o[t])})),null!=r&&r.forEach((e=>i[e.name]=null)),{value:s,grads:i}}(e,t)}dispose(){null!=this.iterations_&&Hr(this.iterations_)}async saveIterations(){return null==this.iterations_&&(this.iterations_=0),{name:"iter",tensor:ea(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}function ia(e,t,n){dt(e);const r={shape:e,value:t,dtype:n=n||ot(t)};return An.runKernel(wt,{},r)}Object.defineProperty(oa,Symbol.hasInstance,{value:e=>null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients});const ua=Fn({pow_:function(e,t){let n=Dn(e,"base","pow"),r=Dn(t,"exp","pow");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Pow",a)}}),la=Fn({sub_:function(e,t){let n=Dn(e,"a","sub"),r=Dn(t,"b","sub");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Sub",a)}}),ca=Fn({abs_:function(e){const t=Dn(e,"x","abs");if("complex64"===t.dtype){const e={x:t};return An.runKernel("ComplexAbs",e)}{const e={x:t};return An.runKernel("Abs",e)}}});function ha(e,t){const n=Math.max(e.length,t.length),r=new Array(n);for(let a=0;ae.name)):Object.keys(e)).forEach(((t,n)=>{const r=Array.isArray(e)?e[n].tensor:e[t];if(null==r)return;const a=An.registeredVariables[t];jr((()=>{const e=Wr(Xr(this.c,r),a);a.assign(e)}))})),this.incrementIterations()}setLearningRate(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=Gr(ea(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(0!==(e=await this.extractIterations(e)).length)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}const fa=[class extends oa{static get className(){return"Adadelta"}constructor(e,t,n=null){super(),this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],null==n&&(this.epsilon=An.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=An.registeredVariables[t];null==this.accumulatedGrads[n]&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:jr((()=>Jr(r).variable(!1)))}),null==this.accumulatedUpdates[n]&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:jr((()=>Jr(r).variable(!1)))});const a=Array.isArray(e)?e[n].tensor:e[t];if(null==a)return;const s=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;jr((()=>{const e=Wr(Xr(s,this.rho),Xr(Zr(a),1-this.rho)),t=Xr(Kr(Yr(Wr(o,this.epsilon)),Yr(Wr(s,this.epsilon))),a),n=Wr(Xr(o,this.rho),Xr(Zr(t),1-this.rho));s.assign(e),o.assign(n);const i=Wr(Xr(t,-this.learningRate),r);r.assign(i)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedUpdates&&(Hr(this.accumulatedGrads.map((e=>e.variable))),Hr(this.accumulatedUpdates.map((e=>e.variable))))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){const t=(e=await this.extractIterations(e)).length/2;this.accumulatedGrads=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(!1)}))),this.accumulatedUpdates=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(!1)})))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}},class extends oa{static get className(){return"Adagrad"}constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=An.registeredVariables[t];if(null==this.accumulatedGrads[n]){const e=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:jr((()=>ia(r.shape,this.initialAccumulatorValue).variable(e)))}}const a=Array.isArray(e)?e[n].tensor:e[t];if(null==a)return;const s=this.accumulatedGrads[n].variable;jr((()=>{const e=Wr(s,Zr(a));s.assign(e);const t=Wr(Xr(Kr(a,Yr(Wr(e,An.backend.epsilon()))),-this.learningRate),r);r.assign(t)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedGrads&&Hr(this.accumulatedGrads.map((e=>e.variable)))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),this.accumulatedGrads=e.map((e=>({originalName:e.name,variable:e.tensor.variable(!1)})))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}},class extends oa{static get className(){return"Adam"}constructor(e,t,n,r=null){super(),this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],jr((()=>{this.accBeta1=ea(t).variable(),this.accBeta2=ea(n).variable()})),null==r&&(this.epsilon=An.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);jr((()=>{const n=la(1,this.accBeta1),r=la(1,this.accBeta2);t.forEach(((t,a)=>{const s=An.registeredVariables[t];null==this.accumulatedFirstMoment[a]&&(this.accumulatedFirstMoment[a]={originalName:`${t}/m`,variable:jr((()=>Jr(s).variable(!1)))}),null==this.accumulatedSecondMoment[a]&&(this.accumulatedSecondMoment[a]={originalName:`${t}/v`,variable:jr((()=>Jr(s).variable(!1)))});const o=Array.isArray(e)?e[a].tensor:e[t];if(null==o)return;const i=this.accumulatedFirstMoment[a].variable,u=this.accumulatedSecondMoment[a].variable,l=Wr(Xr(i,this.beta1),Xr(o,1-this.beta1)),c=Wr(Xr(u,this.beta2),Xr(Zr(o),1-this.beta2)),h=Kr(l,n),p=Kr(c,r);i.assign(l),u.assign(c);const d=Wr(Xr(Kr(h,Wr(Yr(p),this.epsilon)),-this.learningRate),s);s.assign(d)})),this.accBeta1.assign(Xr(this.accBeta1,this.beta1)),this.accBeta2.assign(Xr(this.accBeta2,this.beta2))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&Hr(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedSecondMoment&&Hr(this.accumulatedSecondMoment.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),jr((()=>{this.accBeta1.assign(ua(this.beta1,this.iterations_+1)),this.accBeta2.assign(ua(this.beta2,this.iterations_+1))}));const t=e.length/2;this.accumulatedFirstMoment=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(!1)}))),this.accumulatedSecondMoment=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(!1)})))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}},class extends oa{static get className(){return"Adamax"}constructor(e,t,n,r=null,a=0){super(),this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],jr((()=>{this.iteration=ea(0).variable(),this.accBeta1=ea(t).variable()})),null==r&&(this.epsilon=An.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);jr((()=>{const n=la(1,this.accBeta1),r=Kr(-this.learningRate,Wr(Xr(this.iteration,this.decay),1));t.forEach(((t,a)=>{const s=An.registeredVariables[t];null==this.accumulatedFirstMoment[a]&&(this.accumulatedFirstMoment[a]={originalName:`${t}/m`,variable:Jr(s).variable(!1)}),null==this.accumulatedWeightedInfNorm[a]&&(this.accumulatedWeightedInfNorm[a]={originalName:`${t}/v`,variable:Jr(s).variable(!1)});const o=Array.isArray(e)?e[a].tensor:e[t];if(null==o)return;const i=this.accumulatedFirstMoment[a].variable,u=this.accumulatedWeightedInfNorm[a].variable,l=Wr(Xr(i,this.beta1),Xr(o,1-this.beta1)),c=Xr(u,this.beta2),h=ca(o),p=pa(c,h);i.assign(l),u.assign(p);const d=Wr(Xr(Kr(r,n),Kr(l,Wr(p,this.epsilon))),s);s.assign(d)})),this.iteration.assign(Wr(this.iteration,1)),this.accBeta1.assign(Xr(this.accBeta1,this.beta1))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&Hr(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedWeightedInfNorm&&Hr(this.accumulatedWeightedInfNorm.map((e=>e.variable)))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}},class extends da{static get className(){return"Momentum"}constructor(e,t,n=!1){super(e),this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=ea(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=An.registeredVariables[t];if(null==this.accumulations[n]){const e=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:jr((()=>Jr(r).variable(e)))}}const a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];null!=s&&jr((()=>{let e;const t=Wr(Xr(this.m,a),s);e=this.useNesterov?Wr(Xr(this.c,Wr(s,Xr(t,this.m))),r):Wr(Xr(this.c,t),r),a.assign(t),r.assign(e)}))})),this.incrementIterations()}dispose(){this.m.dispose(),null!=this.accumulations&&Hr(this.accumulations.map((e=>e.variable)))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),this.accumulations=e.map((e=>({originalName:e.name,variable:e.tensor.variable(!1)})))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}},class extends oa{static get className(){return"RMSProp"}constructor(e,t=.9,n=0,r=null,a=!1){if(super(),this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,null==r&&(this.epsilon=An.backend.epsilon()),null==e)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,n)=>{const r=An.registeredVariables[t],a=!1;null==this.accumulatedMeanSquares[n]&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:jr((()=>Jr(r).variable(a)))}),null==this.accumulatedMoments[n]&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:jr((()=>Jr(r).variable(a)))}),null==this.accumulatedMeanGrads[n]&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:jr((()=>Jr(r).variable(a)))});const s=Array.isArray(e)?e[n].tensor:e[t];if(null==s)return;const o=this.accumulatedMeanSquares[n].variable,i=this.accumulatedMoments[n].variable;jr((()=>{const e=Wr(Xr(o,this.decay),Xr(Zr(s),1-this.decay));if(this.centered){const t=this.accumulatedMeanGrads[n].variable,a=Wr(Xr(t,this.decay),Xr(s,1-this.decay)),u=Kr(Xr(s,this.learningRate),Yr(la(e,Wr(Zr(a),this.epsilon)))),l=Wr(Xr(i,this.momentum),u);o.assign(e),t.assign(a),i.assign(l);const c=la(r,l);r.assign(c)}else{const e=Wr(Xr(o,this.decay),Xr(Zr(s),1-this.decay)),t=Wr(Xr(i,this.momentum),Kr(Xr(s,this.learningRate),Yr(Wr(e,this.epsilon))));o.assign(e),i.assign(t);const n=la(r,t);r.assign(n)}}))})),this.incrementIterations()}dispose(){null!=this.accumulatedMeanSquares&&Hr(this.accumulatedMeanSquares.map((e=>e.variable))),null!=this.accumulatedMeanGrads&&this.centered&&Hr(this.accumulatedMeanGrads.map((e=>e.variable))),null!=this.accumulatedMoments&&Hr(this.accumulatedMoments.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))),this.accumulatedMoments=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((e=>({originalName:e.name,variable:e.tensor.variable(n)}))))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}},da];function ma(e){return new Promise((e=>setTimeout(e))).then(e)}class ga{constructor(e){if(!vt().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(ga.URL_SCHEME)&&(e=e.slice(ga.URL_SCHEME.length)),null!=e&&0!==e.length||(e="model"),this.modelJsonFileName=e+".json",this.weightDataFileName=e+".weights.bin"}async save(e){if("undefined"==typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");const t=Vn.join(e.weightData),n=window.URL.createObjectURL(new Blob([t],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{const t=Zn(e,[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}]),r=window.URL.createObjectURL(new Blob([JSON.stringify(t)],{type:"application/json"})),a=null==this.modelJsonAnchor?document.createElement("a"):this.modelJsonAnchor;if(a.download=this.modelJsonFileName,a.href=r,await ma((()=>a.dispatchEvent(new MouseEvent("click")))),null!=e.weightData){const e=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor;e.download=this.weightDataFileName,e.href=n,await ma((()=>e.dispatchEvent(new MouseEvent("click"))))}return{modelArtifactsInfo:er(e)}}}}ga.URL_SCHEME="downloads://";class ya{constructor(e){if(null==e||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise(((e,t)=>{const n=new FileReader;n.onload=n=>{const r=JSON.parse(n.target.result),a=r.modelTopology;if(null==a)return void t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));if(null==r.weightsManifest)return void t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));if(0===this.weightsFiles.length)return void e({modelTopology:a});const s=Qn(r,(e=>this.loadWeights(e)));e(s)},n.onerror=e=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),n.readAsText(this.jsonFile)}))}loadWeights(e){const t=[],n=[];for(const r of e)t.push(...r.weights),n.push(...r.paths);const r=this.checkManifestAndWeightFiles(e),a=n.map((e=>this.loadWeightsFile(e,r[e])));return Promise.all(a).then((e=>[t,e]))}loadWeightsFile(e,t){return new Promise(((n,r)=>{const a=new FileReader;a.onload=e=>{const t=e.target.result;n(t)},a.onerror=t=>r(`Failed to weights data from file of path '${e}'.`),a.readAsArrayBuffer(t)}))}checkManifestAndWeightFiles(e){const t=[],n=this.weightsFiles.map((e=>Yn(e.name))),r={};for(const a of e)a.paths.forEach((e=>{const a=Yn(e);if(-1!==t.indexOf(a))throw new Error(`Duplicate file basename found in weights manifest: '${a}'`);if(t.push(a),-1===n.indexOf(a))throw new Error(`Weight file with basename '${a}' is not provided.`);r[e]=this.weightsFiles[n.indexOf(a)]}));if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return r}}function va(e){return new ya(e)}function xa(e,t,n,r){!function(e){Xe(null!=e&&Array.isArray(e)&&e.length>0,(()=>"promises must be a none empty array"))}(e),function(e,t){Xe(e>=0&&e<=1,(()=>`Progress fraction must be in range [0, 1], but got startFraction ${e}`)),Xe(t>=0&&t<=1,(()=>`Progress fraction must be in range [0, 1], but got endFraction ${t}`)),Xe(t>=e,(()=>`startFraction must be no more than endFraction, but got startFraction ${e} and endFraction ${t}`))}(n=null==n?0:n,r=null==r?1:r);let a=0;return Promise.all(e.map((s=>(s.then((s=>{const o=n+ ++a/e.length*(r-n);return t(o),s})),s))))}async function ba(e,t){null==t&&(t={});const n=null==t.fetchFunc?vt().platform.fetch:t.fetchFunc,r=e.map((e=>n(e,t.requestInit,{isBinary:!0}))),a=(null==t.onProgress?await Promise.all(r):await xa(r,t.onProgress,0,.5)).map((e=>e.arrayBuffer()));return null==t.onProgress?await Promise.all(a):await xa(a,t.onProgress,.5,1)}async function _a(e,t="",n,r){return Ea((e=>ba(e,{requestInit:r})))(e,t,n)}function Ea(e){return async(t,n="",r)=>{const a=t.map((()=>!1)),s={},o=null!=r?r.map((()=>!1)):[],i=[];if(t.forEach(((e,t)=>{let n=0;e.weights.forEach((e=>{const u="quantization"in e?e.quantization.dtype:e.dtype,l=$n[u]*Je(e.shape),c=()=>{a[t]=!0,null==s[t]&&(s[t]=[]),s[t].push({manifestEntry:e,groupOffset:n,sizeBytes:l})};null!=r?r.forEach(((t,n)=>{t===e.name&&(c(),o[n]=!0)})):c(),i.push(e.name),n+=l}))})),!o.every((e=>e))){const e=r.filter(((e,t)=>!o[t]));throw new Error(`Could not find weights in manifest with names: ${e.join(", ")}. \nManifest JSON has weights with names: ${i.join(", ")}.`)}const u=a.reduce(((e,t,n)=>(t&&e.push(n),e)),[]),l=[];u.forEach((e=>{t[e].paths.forEach((e=>{const t=n+(n.endsWith("/")?"":"/")+e;l.push(t)}))}));const c=await e(l),h={};let p=0;return u.forEach((e=>{const n=t[e].paths.length,r=new Vn(c.slice(p,p+n));s[e].forEach((e=>{const t=Gn(r.slice(e.groupOffset,e.groupOffset+e.sizeBytes),[e.manifestEntry]);for(const e in t)h[e]=t[e]})),p+=n})),h}}rr.registerSaveRouter((e=>vt().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ga.URL_SCHEME)?function(e="model"){return new ga(e)}(e.slice(ga.URL_SCHEME.length)):null));class Ta{constructor(e,t){if(this.DEFAULT_METHOD="POST",null==t&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,null!=t.fetchFunc?(Xe("function"==typeof t.fetchFunc,(()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)")),this.fetch=t.fetchFunc):this.fetch=vt().platform.fetch,Xe(null!=e&&e.length>0,(()=>"URL path for http must not be null, undefined or empty.")),Array.isArray(e)&&Xe(2===e.length,(()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`)),this.path=e,null!=t.requestInit&&null!=t.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");const t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;const n=Zn(e,[{paths:["./model.weights.bin"],weights:e.weightSpecs}]);if(t.body.append("model.json",new Blob([JSON.stringify(n)],{type:"application/json"}),"model.json"),null!=e.weightData){const n=Vn.join(e.weightData);t.body.append("model.weights.bin",new Blob([n],{type:"application/octet-stream"}),"model.weights.bin")}const r=await this.fetch(this.path,t);if(r.ok)return{modelArtifactsInfo:er(e),responses:[r]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${r.status}.`)}async load(){const e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(e){let t=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?t+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":t+=" Please make sure the server is serving valid JSON for this request.",new Error(t)}const n=t.modelTopology,r=t.weightsManifest;if(null==n&&null==r)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return Qn(t,(e=>this.loadWeights(e)))}async loadWeights(e){const t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=function(e){const t=e.lastIndexOf("/"),n=e.lastIndexOf("?");return[e.substring(0,t)+"/",n>t?e.substring(n):""]}(t),a=this.weightPathPrefix||n,s=tr(e),o=[],i=[];for(const t of e)for(const e of t.paths)null!=this.weightUrlConverter?i.push(this.weightUrlConverter(e)):o.push(a+e+r);return this.weightUrlConverter&&o.push(...await Promise.all(i)),[s,await ba(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})]}}function wa(e){return null!=e.match(Ta.URL_SCHEME_REGEX)}Ta.URL_SCHEME_REGEX=/^https?:\/\//;const Na=(e,t)=>{if("undefined"==typeof fetch&&(null==t||null==t.fetchFunc))return null;{let n=!0;if(n=Array.isArray(e)?e.every((e=>wa(e))):wa(e),n)return Sa(e,t)}return null};function Sa(e,t){return new Ta(e,t)}function Ma(e,t){return Sa(e,t)}rr.registerSaveRouter(Na),rr.registerLoadRouter(Na);class Aa{constructor(e){this.modelArtifacts=e}load(){return this.modelArtifacts}}class Ra{constructor(e){this.saveHandler=e}save(e){return this.saveHandler(e)}}class Ia{constructor(e){e.load&&(this.load=()=>Promise.resolve(e.load())),e.save&&(this.save=t=>Promise.resolve(e.save(t)))}}function ka(e,t,n,r){return new Ia(Ca(...arguments))}function Ca(e,t,n,r){return 1===arguments.length?null!=e.modelTopology||null!=e.weightSpecs?new Aa(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Aa({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Aa({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function Oa(e){return new Ra(e)}function Da(e){return new Ra(e)}function La(e,t,n){if(Ze(e),null!=t&&3!==t.length)throw new Error("tensor3d() requires shape to have three numbers");const r=kn(e,n);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return zn(e,t,r,n)}let Pa,Fa=!1;async function Ba(e,t){let n=Dn(e,"img","toPixels");if(!(e instanceof hn)){const e=n;n=Ur(e,"int32"),e.dispose()}!function(e){if(2!==e.rank&&3!==e.rank)throw new Error(`toPixels only supports rank 2 or 3 tensors, got rank ${e.rank}.`);const t=2===e.rank?1:e.shape[2];if(t>4||2===t)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${t}`);if("float32"!==e.dtype&&"int32"!==e.dtype)throw new Error(`Unsupported type for toPixels: ${e.dtype}. Please use float32 or int32 tensors.`)}(n);const[r,a]=n.shape.slice(0,2),s=2===n.rank?1:n.shape[2],o=await n.data(),i="float32"===n.dtype?255:1,u=new Uint8ClampedArray(a*r*4);for(let e=0;e1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${a}.`)}else if("int32"===n.dtype&&(a<0||a>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${a}.`);1===s?(t[0]=a*i,t[1]=a*i,t[2]=a*i):t[r]=a*i}const r=4*e;u[r+0]=Math.round(t[0]),u[r+1]=Math.round(t[1]),u[r+2]=Math.round(t[2]),u[r+3]=Math.round(t[3])}if(null!=t){Fa||null!=Pt("Draw",An.backendName)&&(console.warn("tf.browser.toPixels is not efficient to draw tensor on canvas. Please try tf.browser.draw instead."),Fa=!0),t.width=a,t.height=r;const e=t.getContext("2d"),n=new ImageData(u,a,r);e.putImageData(n,0,0)}return n!==e&&n.dispose(),u}const za=Fn({fromPixels_:function(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==e)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,o=!1,i=!1;if(e.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&e instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement)a=!0;else if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement)s=!0;else if(null!=e.getContext)o=!0;else{if(!("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap))throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);i=!0}if(null!=Pt(It,An.backendName)){const n={pixels:e},r={numChannels:t};return An.runKernel(It,n,r)}const[u,l]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height];let c,h;if(o)c=e.getContext("2d").getImageData(0,0,u,l).data;else if(r||n)c=e.data;else if(s||a||i){if(null==Pa)if("undefined"==typeof document){if("undefined"==typeof OffscreenCanvas||"undefined"==typeof OffscreenCanvasRenderingContext2D)throw new Error("Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.");Pa=new OffscreenCanvas(1,1).getContext("2d")}else Pa=document.createElement("canvas").getContext("2d",{willReadFrequently:!0});Pa.canvas.width=u,Pa.canvas.height=l,Pa.drawImage(e,0,0,u,l),c=Pa.getImageData(0,0,u,l).data}if(4===t)h=new Int32Array(c);else{const e=u*l;h=new Int32Array(e*t);for(let n=0;n"The argument passed to tf.addN() must be a list of tensors")),Xe(e.length>=1,(()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`));const t=e.map(((e,t)=>Dn(e,`tensors${t}`,"addN"))),n=t[0];t.forEach((e=>{if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((e=>{if(!Qe(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));const r=t;return An.runKernel("AddN",r)}}),ja=Fn({all_:function(e,t=null,n=!1){const r={x:Dn(e,"x","all","bool")},a={axis:t,keepDims:n};return An.runKernel("All",r,a)}}),Ha=Fn({any_:function(e,t=null,n=!1){const r={x:Dn(e,"x","any","bool")},a={axis:t,keepDims:n};return An.runKernel("Any",r,a)}}),Ga=Fn({argMax_:function(e,t=0){const n={x:Dn(e,"x","argMax")},r={axis:t};return An.runKernel("ArgMax",n,r)}}),Wa=Fn({argMin_:function(e,t=0){const n={x:Dn(e,"x","argMin")},r={axis:t};return An.runKernel("ArgMin",n,r)}}),qa=Fn({asin_:function(e){const t={x:Dn(e,"x","asin")};return An.runKernel("Asin",t)}}),Ka=Fn({asinh_:function(e){const t={x:Dn(e,"x","asinh")};return An.runKernel("Asinh",t)}}),Xa=Fn({atan_:function(e){const t={x:Dn(e,"x","atan")};return An.runKernel("Atan",t)}}),Ya=Fn({atan2_:function(e,t){let n=Dn(e,"a","atan2"),r=Dn(t,"b","atan2");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Atan2",a)}}),Za=Fn({atanh_:function(e){const t={x:Dn(e,"x","atanh")};return An.runKernel("Atanh",t)}});function Ja(e,t,n,r,a,s,o=!1,i="channelsLast"){let[u,l,c,h]=[-1,-1,-1,-1];if("channelsLast"===i)[u,l,c,h]=e;else{if("channelsFirst"!==i)throw new Error(`Unknown dataFormat ${i}`);[u,h,l,c]=e}const[p,d,,f]=t,[m,g]=Qa(n),[y,v]=Qa(r),x=es(p,y),b=es(d,v),{padInfo:_,outHeight:E,outWidth:T}=function(e,t,n,r,a,s,o,i,u){let l,c,h;if("number"==typeof e){l={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};const a=function(e,t,n,r,a){null==r&&(r=function(e,t,n,r=1){const a=es(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}(e,t,n));const s=e[1];return[ts((e[0]-t+2*r)/n+1,a),ts((s-t+2*r)/n+1,a)]}([t,n],s,r,e,i);c=a[0],h=a[1]}else if("same"===e){c=Math.ceil(t/r),h=Math.ceil(n/a);const e=Math.max(0,(c-1)*r+s-t),i=Math.max(0,(h-1)*a+o-n),u=Math.floor(e/2),p=e-u,d=Math.floor(i/2);l={top:u,bottom:p,left:d,right:i-d,type:"SAME"}}else if("valid"===e)l={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-o+1)/a);else{if("object"!=typeof e)throw Error(`Unknown padding parameter: ${e}`);{const p="channelsLast"===u?e[1][0]:e[2][0],d="channelsLast"===u?e[1][1]:e[2][1],f="channelsLast"===u?e[2][0]:e[3][0],m="channelsLast"===u?e[2][1]:e[3][1];l={top:p,bottom:d,left:f,right:m,type:0===p&&0===d&&0===f&&0===m?"VALID":"EXPLICIT"},c=ts((t-s+p+d)/r+1,i),h=ts((n-o+f+m)/a+1,i)}}return{padInfo:l,outHeight:c,outWidth:h}}(a,l,c,m,g,x,b,s,i),w=o?f*h:f;let N;return"channelsFirst"===i?N=[u,w,E,T]:"channelsLast"===i&&(N=[u,E,T,w]),{batchSize:u,dataFormat:i,inHeight:l,inWidth:c,inChannels:h,outHeight:E,outWidth:T,outChannels:w,padInfo:_,strideHeight:m,strideWidth:g,filterHeight:p,filterWidth:d,effectiveFilterHeight:x,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:v,inShape:e,outShape:N,filterShape:t}}function Qa(e){return"number"==typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function es(e,t){return t<=1?e:e+(e-1)*(t-1)}function ts(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function ns(e){const[t,n,r]=Qa(e);return 1===t&&1===n&&1===r}function rs(e,t){return ns(e)||ns(t)}function as(e){return Qa(e).every((e=>e>0))}function ss(e,t,n){if(null!=n){if("string"==typeof t)throw Error(`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`);if("number"==typeof t)Xe(et(t),(()=>`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`));else{if("object"!=typeof t)throw Error(`Error in ${e}: Unknown padding parameter: ${t}`);t.forEach((t=>{t.forEach((t=>{Xe(et(t),(()=>`Error in ${e}: pad must be an integer when using dimRoundingMode ${n} but got pad ${t}.`))}))}))}}}const os=Fn({reshape_:function(e,t){const n={x:Dn(e,"x","reshape","string_or_numeric")},r={shape:t};return An.runKernel("Reshape",n,r)}}),is=Fn({avgPool_:function(e,t,n,r,a){const s=Dn(e,"x","avgPool","float32");Xe(rs(n,1),(()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '1'`));let o=s,i=!1;3===s.rank&&(i=!0,o=os(s,[1,s.shape[0],s.shape[1],s.shape[2]])),Xe(4===o.rank,(()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`)),ss("avgPool",r,a);const u={x:o},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a};let c=An.runKernel("AvgPool",u,l);return c=Ur(c,s.dtype),i?os(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),us=Fn({avgPool3d_:function(e,t,n,r,a,s="NDHWC"){const o=Dn(e,"x","avgPool3d","float32");let i=o,u=!1;4===o.rank&&(u=!0,i=os(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),Xe(5===i.rank,(()=>`Error in avgPool3d: x must be rank 5 but got rank ${i.rank}.`)),Xe("NDHWC"===s,(()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`)),Xe("number"==typeof n&&n>0||Array.isArray(n)&&n[0]>0&&n[1]>0&&n[2]>0,(()=>`Error in avgPool3d: Stride must be > 0, but got '${n}'`)),ss("avgPool3d",r,a);const l={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s};let h=An.runKernel("AvgPool3D",l,c);return h=Ur(h,i.dtype),u?os(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),ls=Fn({concat_:function(e,t=0){Xe(e.length>=1,(()=>"Pass at least one tensor to concat"));const n=Ln(e,"tensors","concat","string_or_numeric");if("complex64"===n[0].dtype&&n.forEach((e=>{if("complex64"!==e.dtype)throw new Error(`Cannot concatenate complex64 tensors with a tensor\n with dtype ${e.dtype}. `)})),1===n.length)return $r(n[0]);const r=n,a={axis:t};return An.runKernel("Concat",r,a)}}),cs=Fn({matMul_:function(e,t,n=!1,r=!1){let a=Dn(e,"a","matMul"),s=Dn(t,"b","matMul");[a,s]=_n(a,s);const o={a,b:s},i={transposeA:n,transposeB:r};return An.runKernel("BatchMatMul",o,i)}}),hs=Fn({sigmoid_:function(e){const t={x:Dn(e,"x","sigmoid","float32")};return An.runKernel("Sigmoid",t)}}),ps=Fn({slice_:function(e,t,n){const r=Dn(e,"x","slice","string_or_numeric");if(0===r.rank)throw new Error("Slicing scalar is not possible");const a={x:r},s={begin:t,size:n};return An.runKernel("Slice",a,s)}}),ds=Fn({tanh_:function(e){const t={x:Dn(e,"x","tanh","float32")};return An.runKernel("Tanh",t)}}),fs=Fn({basicLSTMCell_:function(e,t,n,r,a,s){const o=Dn(e,"forgetBias","basicLSTMCell"),i=Dn(t,"lstmKernel","basicLSTMCell"),u=Dn(n,"lstmBias","basicLSTMCell"),l=Dn(r,"data","basicLSTMCell"),c=Dn(a,"c","basicLSTMCell"),h=Dn(s,"h","basicLSTMCell"),p=ls([l,h],1),d=cs(p,i),f=Wr(d,u),m=f.shape[0],g=f.shape[1]/4,y=[m,g],v=ps(f,[0,0],y),x=ps(f,[0,g],y),b=ps(f,[0,2*g],y),_=ps(f,[0,3*g],y),E=Wr(Xr(hs(v),ds(x)),Xr(c,hs(Wr(o,b))));return[E,Xr(ds(E),hs(_))]}}),ms=Fn({batchToSpaceND_:function(e,t,n){const r=Dn(e,"x","batchToSpaceND"),a=t.reduce(((e,t)=>e*t));Xe(r.rank>=1+t.length,(()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`)),Xe(n.length===t.length,(()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`)),Xe(r.shape[0]%a==0,(()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`));const s={x:r},o={blockShape:t,crops:n};return An.runKernel("BatchToSpaceND",s,o)}}),gs=Fn({batchNorm_:function(e,t,n,r,a,s){null==s&&(s=.001);const o=Dn(e,"x","batchNorm"),i=Dn(t,"mean","batchNorm"),u=Dn(n,"variance","batchNorm");let l,c;null!=a&&(l=Dn(a,"scale","batchNorm")),null!=r&&(c=Dn(r,"offset","batchNorm")),Xe(i.rank===u.rank,(()=>"Batch normalization gradient requires mean and variance to have equal ranks.")),Xe(null==c||i.rank===c.rank,(()=>"Batch normalization gradient requires mean and offset to have equal ranks.")),Xe(null==l||i.rank===l.rank,(()=>"Batch normalization gradient requires mean and scale to have equal ranks."));const h={x:function(e){let t;return t=0===e.rank||1===e.rank?os(e,[1,1,1,e.size]):2===e.rank?os(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?os(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e,t}(o),scale:l,offset:c,mean:i,variance:u},p={varianceEpsilon:s},d=An.runKernel("FusedBatchNorm",h,p);return os(d,o.shape)}}),ys=Fn({batchNorm2d_:function(e,t,n,r,a,s){const o=Dn(e,"x","batchNorm"),i=Dn(t,"mean","batchNorm"),u=Dn(n,"variance","batchNorm");let l,c;return null!=a&&(l=Dn(a,"scale","batchNorm")),null!=r&&(c=Dn(r,"offset","batchNorm")),Xe(2===o.rank,(()=>`Error in batchNorm2D: x must be rank 2 but got rank ${o.rank}.`)),Xe(2===i.rank||1===i.rank,(()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${i.rank}.`)),Xe(2===u.rank||1===u.rank,(()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${u.rank}.`)),null!=l&&Xe(2===l.rank||1===l.rank,(()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${l.rank}.`)),null!=c&&Xe(2===c.rank||1===c.rank,(()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`)),gs(o,i,u,c,l,s)}}),vs=Fn({batchNorm3d_:function(e,t,n,r,a,s){const o=Dn(e,"x","batchNorm"),i=Dn(t,"mean","batchNorm"),u=Dn(n,"variance","batchNorm");let l,c;return null!=a&&(l=Dn(a,"scale","batchNorm")),null!=r&&(c=Dn(r,"offset","batchNorm")),Xe(3===o.rank,(()=>`Error in batchNorm3D: x must be rank 3 but got rank ${o.rank}.`)),Xe(3===i.rank||1===i.rank,(()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${i.rank}.`)),Xe(3===u.rank||1===u.rank,(()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${u.rank}.`)),null!=l&&Xe(3===l.rank||1===l.rank,(()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${l.rank}.`)),null!=c&&Xe(3===c.rank||1===c.rank,(()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`)),gs(o,i,u,c,l,s)}}),xs=Fn({batchNorm4d_:function(e,t,n,r,a,s){const o=Dn(e,"x","batchNorm"),i=Dn(t,"mean","batchNorm"),u=Dn(n,"variance","batchNorm");let l,c;return null!=a&&(l=Dn(a,"scale","batchNorm")),null!=r&&(c=Dn(r,"offset","batchNorm")),Xe(4===o.rank,(()=>`Error in batchNorm4D: x must be rank 4 but got rank ${o.rank}.`)),Xe(4===i.rank||1===i.rank,(()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${i.rank}.`)),Xe(4===u.rank||1===u.rank,(()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${u.rank}.`)),null!=l&&Xe(4===l.rank||1===l.rank,(()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${l.rank}.`)),null!=c&&Xe(4===c.rank||1===c.rank,(()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`)),gs(o,i,u,c,l,s)}}),bs=Fn({bincount_:function(e,t,n){const r=Dn(e,"x","bincount"),a=Dn(t,"weights","bincount");Xe("int32"===r.dtype,(()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`)),Xe(n>=0,(()=>`size must be non-negative, but got ${n}.`)),Xe(a.size===r.size||0===a.size,(()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`));const s={x:r,weights:a},o={size:n};return An.runKernel("Bincount",s,o)}}),_s=Fn({bitwiseAnd_:function(e,t){const n=Dn(e,"x","bitwiseAnd"),r=Dn(t,"y","bitwiseAnd");if(!Qe(n.shape,r.shape))throw new Error(`BitwiseAnd: Tensors must have the same shape. x: ${n.shape}, y: ${r.shape}`);if("int32"!==n.dtype||"int32"!==r.dtype)throw new Error(`BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ${n.dtype} and type of y: ${r.dtype}`);const a={a:n,b:r};return An.runKernel("BitwiseAnd",a)}}),Es=Fn({broadcastArgs_:function(e,t){const n=Dn(e,"s0","broadcastArgs","int32"),r=Dn(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error(`broadcastArgs(): first input must be a vector (rank=1). Has rank ${n.rank}`);if(1!==r.rank)throw new Error(`broadcastArgs(): second input must be a vector (rank=1). Has rank ${r.rank}`);const a={s0:n,s1:r};return An.runKernel("BroadcastArgs",a)}}),Ts=Fn({broadcastTo_:function(e,t){let n=Dn(e,"broadcastTo","x");const r=n.shape;if(dt(t),t.lengthn.rank){const e=n.shape.slice();for(;e.length=0;e--)if(a[e]===t[e])s[e]=1;else if(1!==n.shape[e])throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(0===s.map(((e,t)=>e>1?t:-1)).filter((e=>e>=0)).length)return $r(n);const o={x:n},i={reps:s};return An.runKernel(At,o,i)}}),ws=Fn({ceil_:function(e){const t={x:Dn(e,"x","ceil","float32")};return An.runKernel("Ceil",t)}}),Ns=Fn({clipByValue_:function(e,t,n){const r=Dn(e,"x","clipByValue");if(Xe(t<=n,(()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`)),t===n)return ia(r.shape,t,r.dtype);const a={x:r},s={clipValueMin:t,clipValueMax:n};return An.runKernel("ClipByValue",a,s)}}),Ss=Fn({concat1d_:function(e){return ls(e,0)}}),Ms=Fn({concat2d_:function(e,t){return ls(e,t)}}),As=Fn({concat3d_:function(e,t){return ls(e,t)}}),Rs=Fn({concat4d_:function(e,t){return ls(e,t)}}),Is=Fn({conv2d_:function(e,t,n,r,a="NHWC",s=[1,1],o){const i=Dn(e,"x","conv2d","float32"),u=Dn(t,"filter","conv2d","float32");let l=i,c=!1;3===i.rank&&(c=!0,l=os(i,[1,i.shape[0],i.shape[1],i.shape[2]])),Xe(4===l.rank,(()=>`Error in conv2d: input must be rank 4, but got rank ${l.rank}.`)),Xe(4===u.rank,(()=>`Error in conv2d: filter must be rank 4, but got rank ${u.rank}.`)),ss("conv2d",r,o);const h="NHWC"===a?l.shape[3]:l.shape[1];Xe(h===u.shape[2],(()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${u.shape[2]}.`)),Xe(rs(n,s),(()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`)),Xe(as(s),(()=>"Error in conv2D: Dilated rates should be larger than 0.")),Xe(as(n),(()=>"Error in conv2D: Strides should be larger than 0."));const p={x:l,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:o},f=An.runKernel("Conv2D",p,d);return c?os(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),ks=Fn({conv1d_:function(e,t,n,r,a="NWC",s=1,o){const i=Dn(e,"x","conv1d"),u=Dn(t,"filter","conv1d");let l=i,c=!1;2===i.rank&&(c=!0,l=os(i,[1,i.shape[0],i.shape[1]])),Xe(3===l.rank,(()=>`Error in conv1d: input must be rank 3, but got rank ${l.rank}.`)),Xe(3===u.rank,(()=>`Error in conv1d: filter must be rank 3, but got rank ${u.rank}.`)),ss("conv1d",r,o),Xe(l.shape[2]===u.shape[1],(()=>`Error in conv1d: depth of input (${l.shape[2]}) must match input depth for filter ${u.shape[1]}.`)),Xe(rs(n,s),(()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`)),Xe(as(s),(()=>"Error in conv1D: Dilated rates should be larger than 0.")),Xe(as(n),(()=>"Error in conv1D: Stride should be larger than 0.")),Xe("NWC"===a,(()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`));const h=os(u,[1,u.shape[0],u.shape[1],u.shape[2]]),p=os(l,[l.shape[0],1,l.shape[1],l.shape[2]]),d=Is(p,h,[1,n],r,"NHWC",[1,s],o);return os(d,c?[d.shape[2],d.shape[3]]:[d.shape[0],d.shape[2],d.shape[3]])}}),Cs=Fn({conv2DBackpropInput_:function(e,t,n,r,a,s="NHWC",o){Xe(e.length===t.rank,(()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`));let i=e,u=t,l=!1;3===t.rank&&(l=!0,u=os(t,[1,t.shape[0],t.shape[1],t.shape[2]]),i=[1,e[0],e[1],e[2]]),Xe(4===i.length,(()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${i.length}.`)),Xe(4===u.rank,(()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${u.rank}`)),Xe(4===n.rank,(()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`));const c="NHWC"===s?i[3]:i[1],h="NHWC"===s?u.shape[3]:u.shape[1];Xe(c===n.shape[2],(()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`)),Xe(h===n.shape[3],(()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`)),ss("conv2dDerInput",a,o);const p={dy:u,filter:n},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:o,inputShape:i},f=An.runKernel("Conv2DBackpropInput",p,d);return l?os(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),Os=Fn({conv2dTranspose_:function(e,t,n,r,a,s){const o=Dn(e,"x","conv2dTranspose"),i=Dn(t,"filter","conv2dTranspose");return Cs(n,o,i,r,a,"NHWC",s)}}),Ds=Fn({conv3d_:function(e,t,n,r,a="NDHWC",s=[1,1,1]){const o=Dn(e,"x","conv3d"),i=Dn(t,"filter","conv3d");let u=o,l=!1;4===o.rank&&(l=!0,u=os(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),Xe(5===u.rank,(()=>`Error in conv3d: input must be rank 5, but got rank ${u.rank}.`)),Xe(5===i.rank,(()=>`Error in conv3d: filter must be rank 5, but got rank ${i.rank}.`)),Xe(u.shape[4]===i.shape[3],(()=>`Error in conv3d: depth of input (${u.shape[4]}) must match input depth for filter ${i.shape[3]}.`)),Xe(rs(n,s),(()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`)),Xe("NDHWC"===a,(()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`)),Xe(as(s),(()=>"Error in conv3D: Dilated rates should be larger than 0.")),Xe(as(n),(()=>"Error in conv3D: Strides should be larger than 0."));const c={x:u,filter:i},h={strides:n,pad:r,dataFormat:a,dilations:s},p=An.runKernel("Conv3D",c,h);return l?os(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}}),Ls=Fn({conv3DBackpropInput_:function(e,t,n,r,a){Xe(e.length===t.rank,(()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`));let s=e,o=t,i=!1;4===t.rank&&(i=!0,o=os(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);const u=s[4],l=o.shape[4];Xe(5===s.length,(()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`)),Xe(5===o.rank,(()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${o.rank}`)),Xe(5===n.rank,(()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`)),Xe(u===n.shape[3],(()=>`Error in conv3dDerInput: depth of input (${u}) must match input depth for filter ${n.shape[3]}.`)),Xe(l===n.shape[4],(()=>`Error in conv3dDerInput: depth of output (${l}) must match output depth for filter ${n.shape[4]}.`));const c={dy:o,filter:n},h={pad:a,strides:r,inputShape:s},p=An.runKernel("Conv3DBackpropInputV2",c,h);return i?os(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}}),Ps=Fn({conv3dTranspose_:function(e,t,n,r,a){const s=Dn(e,"x","conv3dTranspose"),o=Dn(t,"filter","conv3dTranspose");return Ls(n,s,o,r,a)}}),Fs=Fn({cos_:function(e){const t={x:Dn(e,"x","cos","float32")};return An.runKernel("Cos",t)}}),Bs=Fn({cosh_:function(e){const t={x:Dn(e,"x","cosh","float32")};return An.runKernel("Cosh",t)}}),zs=Fn({cumprod_:function(e,t=0,n=!1,r=!1){const a={x:Dn(e,"x","cumprod")},s={axis:t,exclusive:n,reverse:r};return An.runKernel("Cumprod",a,s)}}),Us=Fn({cumsum_:function(e,t=0,n=!1,r=!1){const a={x:Dn(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return An.runKernel("Cumsum",a,s)}}),$s=Fn({denseBincount_:function(e,t,n,r=!1){const a=Dn(e,"x","denseBincount"),s=Dn(t,"weights","denseBincount");Xe("int32"===a.dtype,(()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`)),Xe(a.rank<=2,(()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`)),Xe(n>=0,(()=>`size must be non-negative, but got ${n}.`)),Xe(s.size===a.size||0===s.size,(()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`));const o={x:a,weights:s},i={size:n,binaryOutput:r};return An.runKernel("DenseBincount",o,i)}}),Vs=Fn({depthToSpace_:function(e,t,n="NHWC"){const r=Dn(e,"x","depthToSpace","float32"),a="NHWC"===n?r.shape[1]:r.shape[2],s="NHWC"===n?r.shape[2]:r.shape[3],o="NHWC"===n?r.shape[3]:r.shape[1];Xe(t>1,(()=>`blockSize should be > 1 for depthToSpace, but was: ${t}`)),Xe(a*t>=0,(()=>`Negative dimension size caused by overflow when multiplying\n ${a} and ${t} for depthToSpace with input shape\n ${r.shape}`)),Xe(s*t>=0,(()=>`Negative dimension size caused by overflow when multiplying\n ${s} and ${t} for depthToSpace with input shape\n ${r.shape}`)),Xe(o%(t*t)==0,(()=>`Dimension size must be evenly divisible by ${t*t} but is ${o} for depthToSpace with input shape ${r.shape}`));const i={x:r},u={blockSize:t,dataFormat:n};return An.runKernel("DepthToSpace",i,u)}}),js=Fn({depthwiseConv2d_:function(e,t,n,r,a="NHWC",s=[1,1],o){const i=Dn(e,"x","depthwiseConv2d","float32"),u=Dn(t,"filter","depthwiseConv2d","float32");let l=i,c=!1;3===i.rank&&(c=!0,l=os(i,[1,i.shape[0],i.shape[1],i.shape[2]])),Xe(4===l.rank,(()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${l.rank}.`)),Xe(4===u.rank,(()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${u.rank}.`));const h="NHWC"===a?l.shape[3]:l.shape[1];Xe(h===u.shape[2],(()=>`Error in depthwiseConv2d: number of input channels (${h}) must match the inChannels dimension in filter ${u.shape[2]}.`)),ss("depthwiseConv2d",r,o);const p={x:l,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:o},f=An.runKernel("DepthwiseConv2dNative",p,d);return c?os(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),Hs=Fn({diag_:function(e){const t={x:Dn(e,"x","diag")};return An.runKernel("Diag",t)}}),Gs=Fn({dilation2d_:function(e,t,n,r,a=[1,1],s="NHWC"){const o=Dn(e,"x","dilation2d"),i=Dn(t,"filter","dilation2d");Xe(3===o.rank||4===o.rank,(()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${o.rank}.`)),Xe(3===i.rank,(()=>`Error in dilation2d: filter must be rank 3, but got rank ${i.rank}.`)),Xe("NHWC"===s,(()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`));let u=o,l=!1;3===o.rank&&(u=os(o,[1,o.shape[0],o.shape[1],o.shape[2]]),l=!0),Xe(u.shape[3]===i.shape[2],(()=>`Error in dilation2d: input and filter must have the same depth: ${u.shape[3]} vs ${i.shape[2]}`));const c={x:u,filter:i},h={strides:n,pad:r,dilations:a},p=An.runKernel("Dilation2D",c,h);return l?os(p,[p.shape[1],p.shape[2],p.shape[3]]):p}}),Ws=Fn({equal_:function(e,t){let n=Dn(e,"a","equal","string_or_numeric"),r=Dn(t,"b","equal","string_or_numeric");[n,r]=_n(n,r),ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("Equal",a)}}),qs=Fn({where_:function(e,t,n){const r=Dn(t,"a","where"),a=Dn(n,"b","where"),s=Dn(e,"condition","where","bool"),o=ha(ha(s.shape,r.shape),a.shape),i={condition:Ts(s,o),t:Ts(r,o),e:Ts(a,o)};return An.runKernel("Select",i)}}),Ks=Fn({divNoNan_:function(e,t){let n=Dn(e,"a","div"),r=Dn(t,"b","div");[n,r]=_n(n,r);const a=Kr(n,r),s=Jr(a),o=Ws(r,s);return qs(o,s,a)}}),Xs=Fn({dot_:function(e,t){const n=Dn(e,"t1","dot"),r=Dn(t,"t2","dot");Xe(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`));const a=1===n.rank?n.size:n.shape[1],s=1===r.rank?r.size:r.shape[0];if(Xe(a===s,(()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`)),1===n.rank&&1===r.rank){const e=os(n,[1,-1]),t=os(r,[-1,1]),a=cs(e,t);return os(a,[])}if(1===n.rank&&2===r.rank){const e=os(n,[1,-1]),t=os(r,[r.shape[0],r.shape[1]]),a=cs(e,t);return os(a,[a.size])}if(2===n.rank&&1===r.rank){const e=os(r,[-1,1]),t=cs(n,e);return os(t,[t.size])}{const e=os(r,[r.shape[0],r.shape[1]]);return cs(n,e)}}}),Ys=Fn({einsum_:function(e,...t){const n=t.map(((e,t)=>Dn(e,`tensors${t}`,"einsum"))),r={equation:e};return An.runKernel("Einsum",n,r)}}),Zs=Fn({elu_:function(e){const t={x:Dn(e,"x","elu","float32")};return An.runKernel("Elu",t)}}),Js=Fn({ensureShape_:function(e,t){const n=Dn(e,"x","ensureShape","string_or_numeric");if(!function(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let n=0;n"Input dtype must be `int32` or `float32`.")),"int32"===t.dtype&&(t=Ur(t,"float32"));const n={x:t};return An.runKernel("Erf",n)}});function eo(e,t){return function(e,t,n){const r=e.length+t.length,a=[];let s=0,o=0;for(let i=0;i1)),t)}const to=Fn({max_:function(e,t=null,n=!1){const r={x:Dn(e,"x","max")},a={reductionIndices:t,keepDims:n};return An.runKernel("Max",r,a)}}),no=Fn({min_:function(e,t=null,n=!1){const r={x:Dn(e,"x","min")},a={axis:t,keepDims:n};return An.runKernel("Min",r,a)}}),ro=Fn({sum_:function(e,t=null,n=!1){let r=Dn(e,"x","sum");"bool"===r.dtype&&(r=Ur(r,"int32"));const a={x:r},s={axis:t,keepDims:n};return An.runKernel("Sum",a,s)}});function ao(e,t,n=null){if(0===e.rank)return ca(e);if(1!==e.rank&&null===n)return ao(os(e,[-1]),t,n);if(1===e.rank||"number"==typeof n||Array.isArray(n)&&1===n.length){if(1===t)return ro(ca(e),n);if(t===1/0)return to(ca(e),n);if(t===-1/0)return no(ca(e),n);if("euclidean"===t||2===t)return Yr(ro(ua(ca(e),ea(2,"int32")),n));throw new Error(`Error in norm: invalid ord value: ${t}`)}if(Array.isArray(n)&&2===n.length){if(1===t)return to(ro(ca(e),n[0]),n[1]-1);if(t===1/0)return to(ro(ca(e),n[1]),n[0]);if(t===-1/0)return no(ro(ca(e),n[1]),n[0]);if("fro"===t||"euclidean"===t)return Yr(ro(Zr(e),n));throw new Error(`Error in norm: invalid ord value: ${t}`)}throw new Error(`Error in norm: invalid axis: ${n}`)}const so=Fn({norm_:function(e,t="euclidean",n=null,r=!1){const a=ao(e=Dn(e,"x","norm"),t,n);let s=a.shape;if(r){const t=nt(n,e.shape);s=eo(a.shape,t)}return os(a,s)}}),oo=Fn({euclideanNorm_:function(e,t=null,n=!1){return so(e,"euclidean",t,n)}}),io=Fn({exp_:function(e){const t={x:Dn(e,"x","exp")};return An.runKernel("Exp",t)}}),uo=Fn({expandDims_:function(e,t=0){const n=Dn(e,"x","expandDims","string_or_numeric");Xe(t<=n.rank,(()=>"Axis must be <= rank of the tensor"));const r={input:n},a={dim:t};return An.runKernel("ExpandDims",r,a)}}),lo=Fn({expm1_:function(e){const t={x:Dn(e,"x","expm1")};return An.runKernel("Expm1",t)}}),co=Fn({tile_:function(e,t){const n=Dn(e,"x","tile","string_or_numeric");Xe(n.rank===t.length,(()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`));const r={x:n},a={reps:t};return An.runKernel(At,r,a)}}),ho=Fn({eye_:function(e,t,n,r="float32"){null==t&&(t=e);const a=zr([e,t],r),s=e<=t?e:t;for(let e=0;e`Error in localResponseNormalization: x must be rank 3 or 4 but got\n rank ${s.rank}.`)),Xe(et(t),(()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`));let o=s,i=!1;3===s.rank&&(i=!0,o=os(s,[1,s.shape[0],s.shape[1],s.shape[2]]));const u={x:o},l={depthRadius:t,bias:n,alpha:r,beta:a},c=An.runKernel("LRN",u,l);return i?os(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),So=Fn({log_:function(e){const t={x:Dn(e,"x","log","float32")};return An.runKernel("Log",t)}}),Mo=Fn({log1p_:function(e){const t={x:Dn(e,"x","log1p")};return An.runKernel("Log1p",t)}}),Ao=Fn({neg_:function(e){const t={x:Dn(e,"x","neg")};return An.runKernel("Neg",t)}}),Ro=Fn({softplus_:function(e){const t={x:Dn(e,"x","softplus")};return An.runKernel("Softplus",t)}}),Io=Fn({logSigmoid_:function(e){const t=Dn(e,"x","logSigmoid");return Qr((e=>({value:Ao(Ro(Ao(e))),gradFunc:t=>Xr(t,hs(Ao(e)))})))(t)}}),ko=Fn({logSoftmax_:function(e,t=-1){const n=Dn(e,"logits","logSoftmax");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);const r=Qr(((e,n)=>{const r=to(e,t,!0),a=la(e,r),s=la(Ur(a,"float32"),So(ro(io(a),t,!0)));return n([s]),{value:s,gradFunc:(e,n)=>{const[r]=n,a=io(r);return la(e,Xr(ro(e,t,!0),a))}}}));return r(n)}}),Co=Fn({logSumExp_:function(e,t=null,n=!1){const r=Dn(e,"x","logSumExp"),a=nt(t,r.shape),s=to(r,a,!0),o=la(r,s),i=io(o),u=ro(i,a),l=So(u),c=Wr(os(s,l.shape),l);if(n){const e=eo(c.shape,a);return os(c,e)}return c}}),Oo=Fn({logicalAnd_:function(e,t){const n=Dn(e,"a","logicalAnd","bool"),r=Dn(t,"b","logicalAnd","bool");ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("LogicalAnd",a)}}),Do=Fn({logicalNot_:function(e){const t={x:Dn(e,"x","logicalNot","bool")};return An.runKernel("LogicalNot",t)}}),Lo=Fn({logicalOr_:function(e,t){const n=Dn(e,"a","logicalOr","bool"),r=Dn(t,"b","logicalOr","bool");ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("LogicalOr",a)}}),Po=Fn({logicalXor_:function(e,t){const n=Dn(e,"a","logicalXor","bool"),r=Dn(t,"b","logicalXor","bool");return ha(n.shape,r.shape),Oo(Lo(e,t),Do(Oo(e,t)))}}),Fo=2147483648,Bo=Fn({searchSorted_:function(e,t,n="left"){const r=Dn(e,"sortedSequence","searchSorted"),a=Dn(t,"values","searchSorted"),s=r.shape[r.shape.length-1],o=a.shape[a.shape.length-1],i=os(r,[-1,s]),u=os(a,[-1,o]);if(i.rank<2)throw new Error("Sorted input argument must be at least 2-dimensional");if(i.shape[0]!==u.shape[0])throw new Error("Leading dimension of 'sortedSequence' and 'values' must match.");if(Je(u.shape)>=Fo)throw new Error("values tensor size must less than 2147483648");if(i.shape[1]>=Fo)throw new Error(`trailing dim_size must less than 2147483648 for int32 output type, was ${i.shape[1]}`);const l={sortedSequence:i,values:u},c={side:n};return An.runKernel("SearchSorted",l,c)}});function zo(e,t){return Bo(e,t,"left")}const Uo=Fn({maxPool_:function(e,t,n,r,a){const s=Dn(e,"x","maxPool");let o=s,i=!1;3===s.rank&&(i=!0,o=os(s,[1,s.shape[0],s.shape[1],s.shape[2]])),Xe(4===o.rank,(()=>`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`)),Xe(rs(n,1),(()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '1'`)),ss("maxPool",r,a);const u={x:o},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a},c=An.runKernel("MaxPool",u,l);return i?os(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),$o=Fn({maxPool3d_:function(e,t=[1,1,1],n,r,a,s="NDHWC"){const o=Dn(e,"x","maxPool3d");let i=o,u=!1;4===o.rank&&(u=!0,i=os(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),Xe(5===i.rank,(()=>`Error in maxPool3d: x must be rank 5 but got rank ${i.rank}.`)),Xe("NDHWC"===s,(()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`)),ss("maxPool3d",r,a);const l={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=An.runKernel("MaxPool3D",l,c);return u?os(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),Vo=Fn({maxPoolWithArgmax_:function(e,t,n,r,a=!1){const s={x:Dn(e,"x","maxPoolWithArgmax")},o={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},i=An.runKernel("MaxPoolWithArgmax",s,o);return{result:i[0],indexes:i[1]}}}),jo=Fn({mean_:function(e,t=null,n=!1){const r={x:Dn(e,"x","mean")},a={axis:t,keepDims:n};return An.runKernel("Mean",r,a)}});function Ho(e,t="float32"){if(dt(e),"complex64"===t){const t=Ho(e,"float32"),n=Ho(e,"float32");return Bn(t,n)}const n=pt(Je(e),t);return An.makeTensor(n,e,t)}function Go(e,t="float32"){if(dt(e),"complex64"===t){const t=Go(e,"float32"),n=Ho(e,"float32");return Bn(t,n)}const n=ht(Je(e),t);return An.makeTensor(n,e,t)}function Wo(e,t,{indexing:n="xy"}={}){if("xy"!==n&&"ij"!==n)throw new TypeError(`${n} is not a valid third argument to meshgrid`);if(void 0===e)return[];let r=Dn(e,"x","meshgrid",e instanceof hn?e.dtype:"float32");if(void 0===t)return[r];let a=Dn(t,"y","meshgrid",t instanceof hn?t.dtype:"float32");const s=Je(r.shape),o=Je(a.shape);return"xy"===n?(r=os(r,[1,-1]),a=os(a,[-1,1]),[cs(Go([o,1],r.dtype),r),cs(a,Go([1,s],a.dtype))]):(r=os(r,[-1,1]),a=os(a,[1,-1]),[cs(r,Go([1,o],r.dtype)),cs(Go([s,1],a.dtype),a)])}const qo=Fn({minimum_:function(e,t){let n=Dn(e,"a","minimum"),r=Dn(t,"b","minimum");[n,r]=_n(n,r),"bool"===n.dtype&&(n=Ur(n,"int32"),r=Ur(r,"int32")),ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("Minimum",a)}}),Ko=Fn({mirrorPad_:function(e,t,n){Xe("reflect"===n||"symmetric"===n,(()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`));const r=Dn(e,"x","mirrorPad");if(0===r.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");Xe(t.length===r.rank,(()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`));const a="reflect"===n?1:0;for(let e=0;e"Invalid number of paddings. Must be length of 2 each.")),Xe(t[e][0]>=0&&t[e][0]<=r.shape[e]-a&&t[e][1]>=0&&t[e][1]<=r.shape[e]-a,(()=>`Padding in dimension ${e} cannot be greater than or equal to ${r.shape[e]-a} or less than 0 for input of shape ${r.shape}`));const s={paddings:t,mode:n},o={x:r};return An.runKernel("MirrorPad",o,s)}}),Xo=Fn({mod_:function(e,t){let n=Dn(e,"a","mod"),r=Dn(t,"b","mod");[n,r]=_n(n,r);const a={a:n,b:r};return An.runKernel("Mod",a)}}),Yo=Fn({moments_:function(e,t=null,n=!1){const r=nt(t,(e=Dn(e,"x","moments")).shape),a=jo(e,r,n);let s=a.shape;n||(s=eo(a.shape,r));const o=Zr(la(Ur(e,"float32"),os(a,s)));return{mean:a,variance:jo(o,r,n)}}}),Zo=Fn({multiRNNCell_:function(e,t,n,r){const a=Dn(t,"data","multiRNNCell"),s=Ln(n,"c","multiRNNCell"),o=Ln(r,"h","multiRNNCell");let i=a;const u=[];for(let t=0;t2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${o}`);n=n||Math.random();const i={logits:1===o?os(a,[1,-1]):a},u={numSamples:t,seed:n,normalized:r},l=An.runKernel("Multinomial",i,u);return 1===o?os(l,[l.size]):l}}),Qo=Fn({notEqual_:function(e,t){let n=Dn(e,"a","notEqual","string_or_numeric"),r=Dn(t,"b","notEqual","string_or_numeric");[n,r]=_n(n,r),ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("NotEqual",a)}}),ei=Fn({oneHot_:function(e,t,n=1,r=0,a="int32"){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);const s={indices:Dn(e,"indices","oneHot","int32")},o={dtype:a,depth:t,onValue:n,offValue:r};return An.runKernel("OneHot",s,o)}}),ti=Fn({onesLike_:function(e){const t={x:Dn(e,"x","onesLike")};return An.runKernel("OnesLike",t)}}),ni=Fn({outerProduct_:function(e,t){const n=Dn(e,"v1","outerProduct"),r=Dn(t,"v2","outerProduct");Xe(1===n.rank&&1===r.rank,(()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`));const a=os(n,[-1,1]),s=os(r,[1,-1]);return cs(a,s)}}),ri=Fn({pad_:function(e,t,n=0){const r=Dn(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");const a={paddings:t,constantValue:n},s={x:r};return An.runKernel("PadV2",s,a)}}),ai=Fn({pad1d_:function(e,t,n=0){return Xe(2===t.length,(()=>"Invalid number of paddings. Must be length of 2.")),ri(e,[t],n)}}),si=Fn({pad2d_:function(e,t,n=0){return Xe(2===t.length&&2===t[0].length&&2===t[1].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),ri(e,t,n)}}),oi=Fn({pad3d_:function(e,t,n=0){return Xe(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),ri(e,t,n)}}),ii=Fn({pad4d_:function(e,t,n=0){return Xe(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(()=>"Invalid number of paddings. Must be length of 2 each.")),ri(e,t,n)}}),ui=Fn({spaceToBatchND_:function(e,t,n){const r=Dn(e,"x","spaceToBatchND");Xe(r.rank>=1+t.length,(()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`)),Xe(n.length===t.length,(()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`)),Xe(r.shape.reduce(((e,r,a)=>a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e),!0),(()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`));const a={x:r},s={blockShape:t,paddings:n};return An.runKernel("SpaceToBatchND",a,s)}}),li=Fn({pool_:function(e,t,n,r,a,s,o){null==a&&(a=[1,1]),null==s&&(s=1),0===r&&(r="valid");const i=Dn(e,"x","maxPool");let u=i,l=!1;3===i.rank&&(l=!0,u=os(i,[1,i.shape[0],i.shape[1],i.shape[2]])),Xe(rs(s,a),(()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`));const c=function(e,t,n,r,a,s,o="channelsLast"){const[i,u]=Qa(t);let l;if("channelsLast"===o)l=[i,u,e[3],e[3]];else{if("channelsFirst"!==o)throw new Error(`Unknown dataFormat ${o}`);l=[i,u,e[1],e[1]]}return Ja(e,l,n,r,a,s,!1,o)}(u.shape,t,s,a,r),h=[c.dilationHeight,c.dilationWidth];let p;p="same"===r?function(e,t){const n=e.map(((e,n)=>e+(e-1)*(t[n]-1))).map((e=>e-1)),r=n.map((e=>Math.floor(e/2))),a=n.map(((e,t)=>e-r[t]));return n.map(((e,t)=>[r[t],a[t]]))}([c.filterHeight,c.filterWidth],h):[[0,0],[0,0]];const d=1===h[0]&&1===h[1],[f,m]=function(e,t,n){const r=n.map((e=>e[0])),a=n.map((e=>e[1])),s=e.concat(r,a),o=t.map(((e,t)=>(e-s[t]%e)%e)),i=a.map(((e,t)=>e+o[t]));return[t.map(((e,t)=>[r[t],i[t]])),t.map(((e,t)=>[0,o[t]]))]}([c.inHeight,c.inWidth],h,p),g=d?r:"valid",y=d?u:ui(u,h,f),v=("avg"===n?()=>is(y,t,s,g,o):()=>Uo(y,t,s,g,o))(),x=d?v:ms(v,h,m);return l?os(x,[x.shape[1],x.shape[2],x.shape[3]]):x}}),ci=Fn({prelu_:function(e,t){const n={x:Dn(e,"x","prelu"),alpha:Dn(t,"alpha","prelu")};return An.runKernel("Prelu",n)}}),hi=Fn({prod_:function(e,t=null,n=!1){let r=Dn(e,"x","prod");"bool"===r.dtype&&(r=Ur(r,"int32"));const a={x:r},s={axis:t,keepDims:n};return An.runKernel("Prod",a,s)}}),pi=Fn({raggedGather_:function(e,t,n,r){const a={paramsNestedSplits:e.map(((e,t)=>Dn(e,`tensors${t}`,"raggedGather","int32"))),paramsDenseValues:Dn(t,"paramsDenseValues","raggedGather"),indices:Dn(n,"indices","raggedGather","int32")},s={outputRaggedRank:r},o=An.runKernel("RaggedGather",a,s);return{outputNestedSplits:o.slice(0,o.length-1),outputDenseValues:o[o.length-1]}}}),di=Fn({raggedRange_:function(e,t,n){const r=Dn(e,"starts","raggedRange"),a={starts:r,limits:Dn(t,"limits","raggedRange",r.dtype),deltas:Dn(n,"deltas","raggedRange",r.dtype)},s=An.runKernel("RaggedRange",a);return{rtNestedSplits:s[0],rtDenseValues:s[1]}}}),fi=Fn({raggedTensorToTensor_:function(e,t,n,r,a){const s=Dn(e,"shape","raggedTensorToTensor","int32"),o=Dn(t,"values","raggedTensorToTensor"),i={shape:s,values:o,defaultValue:Dn(n,"defaultValue","raggedTensorToTensor",o.dtype),rowPartitionTensors:r.map(((e,t)=>Dn(e,`tensors${t}`,"raggedTensorToTensor","int32")))},u={rowPartitionTypes:a};return An.runKernel("RaggedTensorToTensor",i,u)}}),mi=Fn({rand_:function(e,t,n){dt(e);const r=Je(e);let a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error(`Unknown data type ${n}`);a=new Uint8Array(r)}for(let e=0;e=1||0===s);const o=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*o,t=this.mean+this.stdDev*a*o,this.truncated&&!this.isValidTruncated(e)||(n=!0)}return this.truncated&&!this.isValidTruncated(t)||(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}}class vi{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;const a=r||Math.random();this.randu=gi.alea(a.toString()),this.randn=new yi(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do{r=this.randn.nextValue(),s=1+this.c*r}while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),anull==this.dtype||"float32"===this.dtype,this.min=e,this.range=t-e,this.dtype=n,null==r&&(r=Math.random()),"number"==typeof r&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=gi.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}}const bi=Fn({randomGamma_:function(e,t,n=1,r="float32",a){if(dt(e),null==n&&(n=1),null==r&&(r="float32"),"float32"!==r&&"int32"!==r)throw new Error(`Unsupported data type ${r}`);const s=new vi(t,n,r,a),o=zr(e,r);for(let e=0;e`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`)),Ii(t,0)}}),Ci=Fn({reverse2d_:function(e,t){const n=Dn(e,"x","reverse");return Xe(2===n.rank,(()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`)),Ii(n,t)}}),Oi=Fn({reverse3d_:function(e,t){const n=Dn(e,"x","reverse");return Xe(3===n.rank,(()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`)),Ii(n,t)}}),Di=Fn({reverse4d_:function(e,t){const n=Dn(e,"x","reverse");return Xe(4===n.rank,(()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`)),Ii(n,t)}}),Li=Fn({round_:function(e){const t={x:Dn(e,"x","round")};return An.runKernel("Round",t)}}),Pi=Fn({rsqrt_:function(e){const t={x:Dn(e,"x","rsqrt","float32")};return An.runKernel("Rsqrt",t)}}),Fi=Fn({selu_:function(e){const t={x:Dn(e,"x","selu")};return An.runKernel("Selu",t)}}),Bi=Fn({separableConv2d_:function(e,t,n,r,a,s=[1,1],o="NHWC"){const i=Dn(e,"x","separableConv2d"),u=Dn(t,"depthwiseFilter","separableConv2d"),l=Dn(n,"pointwiseFilter","separableConv2d");let c=i,h=!1;if(3===i.rank&&(h=!0,c=os(i,[1,i.shape[0],i.shape[1],i.shape[2]])),"NCHW"===o)throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");Xe(4===c.rank,(()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`)),Xe(4===u.rank,(()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${u.rank}.`)),Xe(4===l.rank,(()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${u.rank}.`)),Xe(1===l.shape[0],(()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${l.shape[0]}.`)),Xe(1===l.shape[1],(()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${l.shape[1]}.`));const p=u.shape[2],d=u.shape[3];Xe(l.shape[2]===p*d,(()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${p*d}, but got ${l.shape[2]}.`));const f=js(c,u,r,a,o,s),m=Is(f,l,1,"valid",o);return h?os(m,[m.shape[1],m.shape[2],m.shape[3]]):m}}),zi=async function(e,t){const n=Dn(e,"x","setdiff1d"),r=Dn(t,"y","setdiff1d");Xe(n.dtype===r.dtype,(()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`)),Xe(1===n.rank,(()=>`x should be 1D tensor, but got x (${n.shape}).`)),Xe(1===r.rank,(()=>`y should be 1D tensor, but got y (${r.shape}).`));const a=await n.data(),s=await r.data(),o=new Set(s);let i=0;for(let e=0;e`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`)),ps(r,[t],[n])}}),Hi=Fn({slice2d_:function(e,t,n){const r=Dn(e,"x","slice2d");return Xe(2===r.rank,(()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`)),ps(r,t,n)}}),Gi=Fn({slice3d_:function(e,t,n){const r=Dn(e,"x","slice3d");return Xe(3===r.rank,(()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`)),ps(r,t,n)}}),Wi=Fn({slice4d_:function(e,t,n){const r=Dn(e,"x","slice4d");return Xe(4===r.rank,(()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`)),ps(r,t,n)}}),qi=Fn({softmax_:function(e,t=-1){const n=Dn(e,"logits","softmax","float32");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);const r={logits:n},a={dim:t};return An.runKernel("Softmax",r,a)}}),Ki=Fn({fft_:function(e){Xe("complex64"===e.dtype,(()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`));const t={input:e};return An.runKernel("FFT",t)}}),Xi=Fn({ifft_:function(e){Xe("complex64"===e.dtype,(()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`));const t={input:e};return An.runKernel("IFFT",t)}}),Yi=Fn({irfft_:function(e){const t=e.shape[e.shape.length-1],n=e.size/t;let r;if(t<=2){const a=os(e,[n,t]);r=Xi(a)}else{const a=[n,2*(t-1)],s=os(Si(e),[n,t]),o=os(yo(e),[n,t]),i=Ii(ps(s,[0,1],[n,t-2]),1),u=Xr(Ii(ps(o,[0,1],[n,t-2]),1),ea(-1)),l=ls([s,i],1),c=ls([o,u],1),h=os(Bn(l,c),[a[0],a[1]]);r=Xi(h)}if(r=Si(r),3===e.rank&&0!==e.shape[0]){const t=r,n=e.shape[0];r=os(r,[n,r.shape[0]/n,r.shape[1]]),t.dispose()}return r}}),Zi=Fn({split_:function(e,t,n=0){const r={x:Dn(e,"x","split")},a={numOrSizeSplits:t,axis:n};return An.runKernel("SplitV",r,a)}}),Ji=Fn({rfft_:function(e,t){Xe("float32"===e.dtype,(()=>`The dtype for rfft() must be real value but got ${e.dtype}`));let n=e.shape[e.shape.length-1];const r=e.size/n;let a;if(null!=t&&t0)),s=e.shape.map((e=>e));s[e.shape.length-1]=t,a=ps(e,r,s),n=t}else if(null!=t&&t>n){const r=e.shape.map((e=>e));r[e.shape.length-1]=t-n,a=ls([e,Ho(r)],e.shape.length-1),n=t}else a=e;const s=Jr(a),o=os(Bn(a,s),[r,n]),i=Ki(o),u=Math.floor(n/2)+1,l=Si(i),c=yo(i),h=Zi(l,[u,n-u],l.shape.length-1),p=Zi(c,[u,n-u],c.shape.length-1),d=a.shape.slice();return d[a.shape.length-1]=u,os(Bn(h[0],p[0]),d)}}),Qi=Fn({squaredDifference_:function(e,t){let n=Dn(e,"a","squaredDifference"),r=Dn(t,"b","squaredDifference");[n,r]=_n(n,r),ha(n.shape,r.shape);const a={a:n,b:r};return An.runKernel("SquaredDifference",a,{})}}),eu=Fn({squeeze_:function(e,t){const n=Dn(e,"x","squeeze","string_or_numeric");return os(n,function(e,t){const n=[],r=[],a=null!=t&&Array.isArray(t)&&0===t.length,s=null==t||a?null:nt(t,e).sort();let o=0;for(let t=0;tt)&&1===e[t]&&(n.push(e[t]),r.push(t)),s[o]<=t&&o++}1!==e[t]&&(n.push(e[t]),r.push(t))}return{newShape:n,keptDims:r}}(n.shape,t).newShape)}}),tu=Fn({stack_:function(e,t=0){const n=Ln(e,"tensors","stack","string_or_numeric");Xe(n.length>=1,(()=>"Pass at least one tensor to tf.stack")),n.length>0&&Xe(t<=n[0].rank,(()=>"Axis must be <= rank of the tensor"));const r=n,a={axis:t};return An.runKernel("Pack",r,a)}}),nu=Fn({step_:function(e,t=0){const n={x:Dn(e,"x","step")},r={alpha:t};return An.runKernel("Step",n,r)}}),ru=Fn({stridedSlice_:function(e,t,n,r,a=0,s=0,o=0,i=0,u=0){const l={x:Dn(e,"x","stridedSlice","string_or_numeric")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:o,newAxisMask:i,shrinkAxisMask:u};return An.runKernel("StridedSlice",l,c)}}),au=Fn({tan_:function(e){const t={x:Dn(e,"x","tan","float32")};return An.runKernel("Tan",t)}});function su(e,t){Ze(e);const n=kn(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return zn(e,null,n,t)}function ou(e,t,n){if(Ze(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");const r=kn(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return zn(e,t,r,n)}function iu(e,t,n){if(Ze(e),null!=t&&4!==t.length)throw new Error("tensor4d() requires shape to have four numbers");const r=kn(e,n);if(4!==r.length&&1!==r.length)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return zn(e,t,r,n)}function uu(e,t,n){if(Ze(e),null!=t&&5!==t.length)throw new Error("tensor5d() requires shape to have five numbers");const r=kn(e,n);if(5!==r.length&&1!==r.length)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return zn(e,t,r,n)}function lu(e,t,n){if(Ze(e),null!=t&&6!==t.length)throw new Error("tensor6d() requires shape to have six numbers");const r=kn(e,n);if(6!==r.length&&1!==r.length)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return zn(e,t=t||r,r,n)}function cu(e,t,n){if(t.rank<1)throw new Error(`tf.scatterND() expects the indices to be rank 1 or higher, but the rank was ${t.rank}.`);if(e.rank<1)throw new Error(`tf.scatterND() expects the updates to be rank 1 or higher, but the rank was ${e.rank}.`);if("int32"!==t.dtype)throw new Error(`The dtype of 'indices' should be int32, but got dtype: ${t.dtype}`);if(n.length<1)throw new Error(`Output rank must be greater or equal to 1, but got shape: ${n}`);if(0===n.length){if(0===t.size)throw new Error(`Indices specified for empty output. indices shape: ${t.shape}`);if(0===e.size)throw new Error(`Updates specified for empty output. updates shape: ${e.shape}`)}!function(e,t,n){const r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank= 0 but got ${t}`);if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);const s={x:r},o={k:t,sorted:n},[i,u]=An.runKernel("TopK",s,o);return{values:i,indices:u}}}),du=Fn({truncatedNormal_:function(e,t=0,n=1,r,a){if(dt(e),null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");const s=new yi(t,n,r,!0,a),o=zr(e,r);for(let e=0;e0,(()=>"The input tensor must be at least 1D"));const r={x:n},a={axis:t},[s,o]=An.runKernel("Unique",r,a);return{values:s,indices:o}}}),mu=Fn({unsortedSegmentSum_:function(e,t,n){const r=Dn(e,"x","unsortedSegmentSum"),a=Dn(t,"segmentIds","unsortedSegmentSum","int32");Xe(et(n),(()=>"numSegments must be of dtype int"));const s={x:r,segmentIds:a},o={numSegments:n};return An.runKernel("UnsortedSegmentSum",s,o)}}),gu=Fn({unstack_:function(e,t=0){const n=Dn(e,"x","unstack","string_or_numeric");Xe(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`));const r={value:n},a={axis:t};return An.runKernel("Unpack",r,a)}});function yu(e,t){return Bo(e,t,"right")}function vu(e,t=!0,n,r){return An.makeVariable(e,t,n,r)}const xu=async function(e){const t=Dn(e,"condition","whereAsync","bool"),n=await t.data(),r=function(e,t){const n=[];for(let e=0;e0,(()=>"mask cannot be scalar")),Ye(i.slice(s,s+o),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let u=1;for(let e=s;et)).reverse()),Xe(r.rank===t.length,(()=>`Error in transpose: rank of input ${r.rank} must match length of perm ${t}.`)),t.forEach((e=>{Xe(e>=0&&e"All entries in 'perm' must be between 0 and "+(r.rank-1)+` but got ${t}`))})),r.rank<=1)return r.clone();const a={x:r},s={perm:t};return"complex64"===r.dtype?jr((()=>{let e=Si(r),t=yo(r);return e=An.runKernel(Rt,{x:e},s),t=An.runKernel(Rt,{x:t},s),n&&(t=Ao(t)),Bn(e,t)})):An.runKernel(Rt,a,s)}}),Eu=Fn({movingAverage_:function(e,t,n,r,a=!0){const s=Dn(e,"v","movingAverage"),o=Dn(t,"x","movingAverage"),i=Dn(n,"decay","movingAverage");var u,l;l=o,Xe((u=s).dtype===l.dtype,(()=>`The dtypes of the first(${u.dtype}) and second(${l.dtype}) input must match`)),Xe(Qe(s.shape,o.shape),(()=>"Shape mismatch in v and x"));const c=ea(1),h=la(c,i);let p=Xr(la(o,s),h);if(a){Xe(null!=r,(()=>"When using zeroDebias: true, step is required."));const e=Dn(r,"step","movingAverage");p=Kr(p,la(c,ua(i,e)))}return Wr(s,p)}}),Tu=Fn({scatterND_:function(e,t,n){dt(n);const r=Dn(e,"indices","scatterND","int32"),a=Dn(t,"updates","scatterND");cu(a,r,n);const s={indices:r,updates:a},o={shape:n};return An.runKernel("ScatterNd",s,o)}}),wu=Fn({sparseToDense_:function(e,t,n,r=0){dt(n);const a=Dn(e,"sparseIndices","sparseToDense","int32"),s=Dn(t,"sparseValues","sparseToDense","string_or_numeric"),o=Dn(r,"defaultValue","sparseToDense",s.dtype);!function(e,t,n,r){if("int32"!==e.dtype)throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);const a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);const o=t.size;if(0!==t.rank&&(1!==t.rank||o!==a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,s,n,o);const i={sparseIndices:a,sparseValues:s,defaultValue:o},u={outputShape:n};return An.runKernel("SparseToDense",i,u)}}),Nu=Fn({gatherND_:function(e,t){const n=Dn(t,"indices","gatherND","int32"),r={params:Dn(e,"x","gatherND","string_or_numeric"),indices:n};return An.runKernel("GatherNd",r)}}),Su=Fn({dropout_:function(e,t,n,r){const a=Dn(e,"x","dropout");if(Xe("float32"===a.dtype,(()=>`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`)),Xe(t>=0&&t<1,(()=>`rate must be a float in the range [0, 1), but got ${t}.`)),0===t)return e instanceof hn?a.clone():a;const s=function(e,t){if(null==t)return e.shape.slice();if(Qe(e.shape,t))return t;if(e.shape.length===t.length){const n=[];for(let r=0;r1,(()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`)),Xe(r.rank-1===a.rank,(()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`)),Ye(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");const s=r.shape[r.shape.length-1];Xe(n>0&&n<=s,(()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`));const o=await r.data(),i=await a.data(),[u,l]=[o.length/s,s],c=function(e,t){return rt("bool",t)}(0,u);for(let e=0;et.value-e.value)),c[e]=0;for(let t=0;t`Error in conv2dDerFilter: input must be rank 4, but got shape ${i.shape}.`)),Xe(4===u.rank,(()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${u.shape}.`)),Xe(4===n.length,(()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`));const l="NHWC"===s?i.shape[3]:i.shape[1],c="NHWC"===s?u.shape[3]:u.shape[1];Xe(l===n[2],(()=>`Error in conv2dDerFilter: depth of input ${l}) must match input depth in filter (${n[2]}.`)),Xe(c===n[3],(()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`)),ss("conv2dDerFilter",a,o);const h={x:i,dy:u},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:o,filterShape:n};return An.runKernel("Conv2DBackpropFilter",h,p)}});function ku(e,t,n){if(null==n||"linear"===n)return e;if("relu"===n)return Xr(e,nu(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Cu(e,t){let n=t;const r=function(e,t){const n=[];for(let r=0;r1)&&n.unshift(s)}return n}(e.shape,t.shape);return r.length>0&&(n=ro(n,r)),os(n,e.shape)}function Ou(e,t,n,r){if("linear"===t)return e;if("relu"===t)return Ai(e);if("elu"===t)return Zs(e);if("relu6"===t)return Ri(e);if("prelu"===t)return ci(e,n);if("leakyrelu"===t)return _o(e,r);if("sigmoid"===t)return hs(e);throw new Error(`Unknown fused activation ${t}.`)}const Du=(e,t)=>!(e>0)||"linear"===t,Lu=Fn({fusedConv2d_:function({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:o,bias:i,activation:u="linear",preluActivationWeights:l,leakyreluAlpha:c}){if(u=u||"linear",!1===Du(An.state.gradientDepth,u)){Xe("NHWC"===a,(()=>`Error in fused conv2d: got dataFormat of ${a} but only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear.`));let h=Is(e,t,n,r,a,s,o);return null!=i&&(h=Wr(h,i)),Ou(h,u,l,c)}const h=Dn(e,"x","conv2d","float32"),p=Dn(t,"filter","conv2d","float32");let d=h,f=!1;3===h.rank&&(f=!0,d=os(h,[1,h.shape[0],h.shape[1],h.shape[2]])),Xe(4===d.rank,(()=>`Error in fused conv2d: input must be rank 4, but got rank ${d.rank}.`)),Xe(4===p.rank,(()=>`Error in fused conv2d: filter must be rank 4, but got rank ${p.rank}.`)),ss("fused conv2d",r,o);const m="NHWC"===a?d.shape[3]:d.shape[1];Xe(p.shape[2]===m,(()=>`Error in conv2d: depth of input (${m}) must match input depth for filter ${p.shape[2]}.`)),Xe(rs(n,s),(()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`));const g=Ja(d.shape,p.shape,n,s,r,o);let y,v;if(null!=i&&(y=Dn(i,"bias","fused conv2d"),[y]=_n(y,h),"NHWC"===a?ha(g.outShape,y.shape):(Xe(y.shape.length<=1,(()=>`Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of rank-${y.shape.length}.`)),Xe(0===y.shape.length||y.shape[0]===g.outChannels||1===y.shape[0],(()=>`Error in fused conv2d: bias shape (${y.shape}) is not compatible with the number of output channels (${g.outChannels})`)))),null!=l){const e=l.shape;if(Xe(e.length<=1||3===e.length,(()=>`Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of rank-${e.length}.`)),1===e.length)Xe(1===e[0]||e[0]===g.outChannels,(()=>`Error in fused conv2d: PReLU activation weights (${e}) is not compatible with the number of output channels (${g.outChannels}).`));else if(3===e.length)try{ha(e,g.outShape)}catch(t){const n=`Error in fused conv2d: PReLU activation weights (${e}) is not compatible with the output shape of the conv2d (${g.outShape}).`;throw Error(n)}v=Dn(l,"prelu weights","fused conv2d")}const x=(e,t)=>{Xe("NHWC"===a,(()=>`Error in gradient of fused conv2D: got dataFormat of ${a} but only NHWC is currently supported.`));const[o,i,l,c]=t,h=ku(e,l,u);Xe(ns(s),(()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`));const p=[Cs(i.shape,h,o,n,r),Iu(i,h,o.shape,n,r)];if(null!=c){const e=Cu(c,h);p.push(e)}return p},b={x:d,filter:p,bias:y,preluActivationWeights:v},_={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:o,activation:u,leakyreluAlpha:c};if(null==i){const e=Qr(((e,t,n)=>{let r=An.runKernel(Ct,b,_);return n([t,e,r]),f&&(r=os(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:x}}));return e(d,p)}{const e=Qr(((e,t,n,r)=>{let a=An.runKernel(Ct,b,_);return r([t,e,a,n]),f&&(a=os(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:x}}));return e(d,p,y)}}}),Pu=Fn({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,r,a,s=[1,1],o){let i=e;3===e.rank&&(i=os(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let u=t;3===u.rank&&(u=os(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const l={x:i,dy:u},c={strides:r,pad:a,dimRoundingMode:o,dilations:s,filterShape:n};return An.runKernel("DepthwiseConv2dNativeBackpropFilter",l,c)}}),Fu=Fn({depthwiseConv2dNativeBackpropInput_:function(e,t,n,r,a,s=[1,1],o){let i=t,u=!1;3===t.rank&&(u=!0,i=os(t,[1,t.shape[0],t.shape[1],t.shape[2]]));const l={dy:i,filter:n},c={strides:r,pad:a,dimRoundingMode:o,dilations:s,inputShape:e},h=An.runKernel("DepthwiseConv2dNativeBackpropInput",l,c);return u?os(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),Bu=Fn({fusedDepthwiseConv2d_:function({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:o,bias:i,activation:u="linear",preluActivationWeights:l,leakyreluAlpha:c}){if(!1===Du(An.state.gradientDepth,u)){let h=js(e,t,n,r,a,s,o);return null!=i&&(h=Wr(h,i)),Ou(h,u,l,c)}const h=Dn(e,"x","depthwiseConv2d","float32"),p=Dn(t,"filter","depthwiseConv2d","float32");let d=h,f=!1;3===h.rank&&(f=!0,d=os(h,[1,h.shape[0],h.shape[1],h.shape[2]])),Xe(4===d.rank,(()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${d.rank}.`)),Xe(4===p.rank,(()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${p.rank}.`)),Xe(d.shape[3]===p.shape[2],(()=>`Error in fused depthwiseConv2d: number of input channels (${d.shape[3]}) must match the inChannels dimension in filter ${p.shape[2]}.`)),null==s&&(s=[1,1]),Xe(rs(n,s),(()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`)),ss("fused depthwiseConv2d",r,o);const m=Ja(d.shape,p.shape,n,s,r,o,!0);let g,y;null!=i&&(g=Dn(i,"bias","fused conv2d"),[g]=_n(g,h),ha(m.outShape,g.shape)),null!=l&&(y=Dn(l,"prelu weights","fused depthwiseConv2d"));const v=(e,t)=>{Xe(ns(s),(()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`));const[a,i,l,c]=t,h=ku(e,l,u),p=Fu(i.shape,h,a,n,r,s,o),d=Pu(i,h,a.shape,n,r,s,o);return null!=c?[p,d,Cu(g,h)]:[p,d]},x={x:d,filter:p,bias:g,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:o,activation:u,leakyreluAlpha:c};if(null==i){const e=Qr(((e,t,n)=>{let r=An.runKernel(Ot,x,b);return n([t,e,r]),f&&(r=os(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:v}}));return e(d,p)}{const e=Qr(((e,t,n,r)=>{let a=An.runKernel(Ot,x,b);return r([t,e,a,n]),f&&(a=os(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:v}}));return e(d,p,g)}}}),zu=Fn({fusedMatMul_:function({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:o,leakyreluAlpha:i=.2}){if(!1===Du(An.state.gradientDepth,s)){let u=cs(e,t,n,r);return null!=a&&(u=Wr(u,a)),Ou(u,s,o,i)}let u=Dn(e,"a","fused matMul"),l=Dn(t,"b","fused matMul");[u,l]=_n(u,l);const c=n?u.shape[u.rank-2]:u.shape[u.rank-1],h=r?l.shape[l.rank-1]:l.shape[l.rank-2],p=n?u.shape[u.rank-1]:u.shape[u.rank-2],d=r?l.shape[l.rank-2]:l.shape[l.rank-1],f=u.shape.slice(0,-2),m=l.shape.slice(0,-2),g=Je(f),y=Je(m);Xe(c===h,(()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${u.shape} and ${l.shape} and transposeA=${n} and transposeB=${r} must match.`));const v=ha(u.shape.slice(0,-2),l.shape.slice(0,-2)).concat([p,d]),x=os(u,n?[g,c,p]:[g,p,c]),b=os(l,r?[y,d,h]:[y,h,d]);let _,E;null!=a&&(_=Dn(a,"bias","fused matMul"),[_]=_n(_,u),ha(v,_.shape)),null!=o&&(E=Dn(o,"prelu weights","fused matMul"));const T=(e,t)=>{const[o,i,u,l]=t,c=ku(os(e,u.shape),u,s);let h,p;return n||r?!n&&r?(h=cs(c,i,!1,!1),p=cs(c,o,!0,!1)):n&&!r?(h=cs(i,c,!1,!0),p=cs(o,c,!1,!1)):(h=cs(i,c,!0,!0),p=cs(c,o,!0,!0)):(h=cs(c,i,!1,!0),p=cs(o,c,!0,!1)),null!=a?[h,p,Cu(l,c)]:[h,p]},w={a:x,b,bias:_,preluActivationWeights:E},N={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:i};if(null==a){const e=Qr(((e,t,n)=>{const r=An.runKernel(kt,w,N);return n([e,t,r]),{value:os(r,v),gradFunc:T}}));return e(x,b)}{const e=Qr(((e,t,n,r)=>{const a=An.runKernel(kt,w,N);return r([e,t,a,n]),{value:os(a,v),gradFunc:T}}));return e(x,b,_)}}}),Uu=Fn({hammingWindow_:function(e){return Au(e,.54,.46)}}),$u=Fn({hannWindow_:function(e){return Au(e,.5,.5)}}),Vu=Fn({frame_:function(e,t,n,r=!1,a=0){let s=0;const o=[];for(;s+t<=e.size;)o.push(ps(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${o.rank}.`)),Xe(2===i.rank&&4===i.shape[1],(()=>`Error in cropAndResize: boxes must be have size [${l},4] but had shape ${i.shape}.`)),Xe(1===u.rank&&u.shape[0]===l,(()=>`Error in cropAndResize: boxInd must be have size [${l}] but had shape ${i.shape}.`)),Xe(2===r.length,(()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`)),Xe(r[0]>=1&&r[1]>=1,(()=>`cropSize must be atleast [1,1], but was ${r}`)),Xe("bilinear"===a||"nearest"===a,(()=>`method must be bilinear or nearest, but was ${a}`));const c={image:o,boxes:i,boxInd:u},h={method:a,extrapolationValue:s,cropSize:r};return An.runKernel("CropAndResize",c,h)}}),Gu=Fn({flipLeftRight_:function(e){const t=Dn(e,"image","flipLeftRight","float32");Xe(4===t.rank,(()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`));const n={image:t};return An.runKernel("FlipLeftRight",n,{})}}),Wu=Fn({grayscaleToRGB_:function(e){const t=Dn(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];Xe(t.rank>=2,(()=>`Error in grayscaleToRGB: images must be at least rank 2, but got rank ${t.rank}.`)),Xe(1===r,(()=>`Error in grayscaleToRGB: last dimension of a grayscale image should be size 1, but got size ${r}.`));const a=new Array(t.rank);return a.fill(1,0,n),a[n]=3,co(t,a)}}),qu=Fn({rgbToGrayscale_:function(e){const t=Dn(e,"image","RGBToGrayscale"),n=t.rank-1,r=t.shape[n];Xe(t.rank>=2,(()=>`Error in RGBToGrayscale: images must be at least rank 2, but got rank ${t.rank}.`)),Xe(3===r,(()=>`Error in RGBToGrayscale: last dimension of an RGB image should be size 3, but got size ${r}.`));const a=t.dtype,s=Ur(t,"float32"),o=su([.2989,.587,.114]);let i;switch(t.rank){case 2:i=Ys("ij,j->i",s,o);break;case 3:i=Ys("ijk,k->ij",s,o);break;case 4:i=Ys("ijkl,l->ijk",s,o);break;case 5:i=Ys("ijklm,m->ijkl",s,o);break;case 6:i=Ys("ijklmn,n->ijklm",s,o);break;default:throw new Error("Not a valid tensor rank.")}return i=uo(i,-1),Ur(i,a)}}),Ku=Fn({rotateWithOffset_:function(e,t,n=0,r=.5){const a=Dn(e,"image","rotateWithOffset","float32");Xe(4===a.rank,(()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`));const s={image:a},o={radians:t,fillValue:n,center:r};return An.runKernel("RotateWithOffset",s,o)}});function Xu(e,t,n,r,a,s){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY),null==s&&(s=0);const o=e.shape[0];return n=Math.min(n,o),Xe(0<=r&&r<=1,(()=>`iouThreshold must be in [0, 1], but was '${r}'`)),Xe(2===e.rank,(()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`)),Xe(4===e.shape[1],(()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`)),Xe(1===t.rank,(()=>"scores must be a 1D tensor")),Xe(t.shape[0]===o,(()=>`scores has incompatible shape with boxes. Expected ${o}, but was ${t.shape[0]}`)),Xe(0<=s&&s<=1,(()=>`softNmsSigma must be in [0, 1], but was '${s}'`)),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}const Yu=Fn({nonMaxSuppression_:function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){const s=Dn(e,"boxes","nonMaxSuppression","float32"),o=Dn(t,"scores","nonMaxSuppression","float32"),i=Xu(s,o,n,r,a),u={maxOutputSize:n=i.maxOutputSize,iouThreshold:r=i.iouThreshold,scoreThreshold:a=i.scoreThreshold};return An.runKernel("NonMaxSuppressionV3",{boxes:s,scores:o},u)}});function Zu(e,t,n){const r=function(e,t,n){return function(e,t,n){let r=0,a=e.length,s=0,o=!1;for(;r>>1);const i=n(t,e[s]);i>0?r=s+1:(a=s,o=!i)}return o?r:-r-1}(e,t,n||Ju)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function Ju(e,t){return e>t?1:ea&&l.push({score:t[e],boxIndex:e,suppressBeginIndex:0});l.sort(nl);const c=s>0?-.5/s:0,h=[],p=[];for(;h.length0;){const t=l.pop(),{score:n,boxIndex:s,suppressBeginIndex:o}=t;if(n=o;--n){const o=el(e,s,h[n]);if(o>=r){i=!0;break}if(t.score=t.score*tl(r,c,o),t.score<=a)break}t.suppressBeginIndex=h.length,i||(t.score===n?(h.push(s),p.push(t.score)):t.score>a&&Zu(l,t,nl))}const d=h.length,f=n-d;i&&f>0&&(h.push(...new Array(f).fill(0)),p.push(...new Array(f).fill(0)));const m={selectedIndices:h};return o&&(m.selectedScores=p),u&&(m.validOutputs=d),m}function el(e,t,n){const r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),s=Math.min(r[0],r[2]),o=Math.min(r[1],r[3]),i=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),l=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),p=Math.max(a[1],a[3]),d=(i-s)*(u-o),f=(h-l)*(p-c);if(d<=0||f<=0)return 0;const m=Math.max(s,l),g=Math.max(o,c),y=Math.min(i,h),v=Math.min(u,p),x=Math.max(y-m,0)*Math.max(v-g,0);return x/(d+f-x)}function tl(e,t,n){const r=Math.exp(t*n*n);return n<=e?r:0}function nl(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}const rl=Fn({nonMaxSuppressionWithScore_:function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){const o=Dn(e,"boxes","nonMaxSuppression"),i=Dn(t,"scores","nonMaxSuppression"),u=Xu(o,i,n,r,a,s),l={boxes:o,scores:i},c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:s=u.softNmsSigma},h=An.runKernel("NonMaxSuppressionV5",l,c);return{selectedIndices:h[0],selectedScores:h[1]}}}),al=Fn({nonMaxSuppressionPadded_:function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){const o=Dn(e,"boxes","nonMaxSuppression"),i=Dn(t,"scores","nonMaxSuppression"),u=Xu(o,i,n,r,a,null),l={boxes:o,scores:i},c={maxOutputSize:u.maxOutputSize,iouThreshold:u.iouThreshold,scoreThreshold:u.scoreThreshold,padToMaxOutputSize:s},h=An.runKernel("NonMaxSuppressionV4",l,c);return{selectedIndices:h[0],validOutputs:h[1]}}}),sl=Fn({resizeBilinear_:function(e,t,n=!1,r=!1){const a=Dn(e,"images","resizeBilinear");Xe(3===a.rank||4===a.rank,(()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`)),Xe(2===t.length,(()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`)),Xe(!1===r||!1===n,(()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."));let s=a,o=!1;3===a.rank&&(o=!0,s=os(a,[1,a.shape[0],a.shape[1],a.shape[2]]));const[]=t,i={images:s},u={alignCorners:n,halfPixelCenters:r,size:t},l=An.runKernel("ResizeBilinear",i,u);return o?os(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),ol=Fn({resizeNearestNeighbor_:function(e,t,n=!1,r=!1){const a=Dn(e,"images","resizeNearestNeighbor");Xe(3===a.rank||4===a.rank,(()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`)),Xe(2===t.length,(()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`)),Xe("float32"===a.dtype||"int32"===a.dtype,(()=>"`images` must have `int32` or `float32` as dtype")),Xe(!1===r||!1===n,(()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."));let s=a,o=!1;3===a.rank&&(o=!0,s=os(a,[1,a.shape[0],a.shape[1],a.shape[2]]));const[]=t,i={images:s},u={alignCorners:n,halfPixelCenters:r,size:t},l=An.runKernel("ResizeNearestNeighbor",i,u);return o?os(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),il=Fn({threshold_:function(e,t="binary",n=!1,r=.5){const a=Dn(e,"image","threshold"),s=a.shape[0]*a.shape[1];let o,i,u,l,c=Xr(su([r]),255);if(Xe(3===a.rank,(()=>`Error in threshold: image must be rank 3,but got rank ${a.rank}.`)),Xe(3===a.shape[2]||1===a.shape[2],(()=>`Error in threshold: image color channel must be equal to 3 or 1but got ${a.shape[2]}.`)),Xe("int32"===a.dtype||"float32"===a.dtype,(()=>`Error in dtype: image dtype must be int32 or float32,but got dtype ${a.dtype}.`)),Xe("otsu"===t||"binary"===t,(()=>`Method must be binary or otsu, but was ${t}`)),3===a.shape[2]){[o,i,u]=Zi(a,[1,1,1],-1);const e=Xr(o,.2989),t=Xr(i,.587),n=Xr(u,.114);l=Wr(Wr(e,t),n)}else l=e;"otsu"===t&&(c=function(e,t){let n,r,a,s,o,i,u=su([-1]),l=su([0]),c=su([0]);for(let h=0;h`Error in transform: image must be rank 4,but got rank ${o.rank}.`)),Xe(2===i.rank&&(i.shape[0]===o.shape[0]||1===i.shape[0])&&8===i.shape[1],(()=>"Error in transform: Input transform should be batch x 8 or 1 x 8")),Xe(null==s||2===s.length,(()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`));const u={image:o,transforms:i},l={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return An.runKernel("Transform",u,l)}}),ll=Fn({bandPart_:function(e,t,n){const r=Dn(e,"a","bandPart");Xe(r.rank>=2,(()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`));const a=r.shape,[s,o]=r.shape.slice(-2);let i,u;"number"==typeof t?(Xe(t%1==0,(()=>`bandPart(): numLower must be an integer, got ${t}.`)),Xe(t<=s,(()=>`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`)),i=Dn(t<0?s:t,"numLower","bandPart")):(Xe("int32"===t.dtype,(()=>"bandPart(): numLower's dtype must be an int32.")),i=qs(Eo(t,0),s,qo(t,s))),"number"==typeof n?(Xe(n%1==0,(()=>`bandPart(): numUpper must be an integer, got ${n}.`)),Xe(n<=o,(()=>`bandPart(): numUpper (${n}) must not be greater than the number of columns (${o}).`)),u=Dn(n<0?o:n,"numUpper","bandPart")):(Xe("int32"===n.dtype,(()=>"bandPart(): numUpper's dtype must be an int32.")),u=qs(Eo(n,0),o,qo(n,o)));const l=os(Ni(0,s,1,"int32"),[-1,1]),c=Ni(0,o,1,"int32"),h=la(l,c),p=Oo(To(h,i),go(h,Ao(u))),d=Ho([s,o],r.dtype);return os(tu(gu(os(r,[-1,s,o])).map((e=>qs(p,e,d)))),a)}}),cl=Fn({gramSchmidt_:function(e){let t;if(Array.isArray(e)){t=!1,Xe(null!=e&&e.length>0,(()=>"Gram-Schmidt process: input must not be null, undefined, or empty"));const n=e[0].shape[0];for(let t=1;t`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[t].shape[0]} vs. ${n})`))}else t=!0,e=Zi(e,e.shape[0],0).map((e=>eu(e,[0])));Xe(e.length<=e[0].shape[0],(()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`));const n=[],r=e;for(let t=0;t{let e=r[t];if(t>0)for(let r=0;r{Xe(2===e.shape.length,(()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`));const n=e.shape[0],r=e.shape[1];let a=ho(n),s=$r(e);const o=ou([[1]],[1,1]);let i=$r(o);const u=n>=r?r:n;for(let e=0;e{const t=ps(s,[e,e],[n-e,1]),u=so(t),l=ps(s,[e,e],[1,1]),c=qs(mo(l,0),ou([[-1]]),ou([[1]])),h=la(l,Xr(c,u)),p=Kr(t,h);i=1===p.shape[0]?$r(o):ls([o,ps(p,[1,0],[p.shape[0]-1,p.shape[1]])],0);const d=Ao(Kr(cs(c,h),u)),f=ps(s,[e,0],[n-e,r]),m=Xr(d,i),g=_u(i);if(0===e)s=la(f,cs(m,cs(g,f)));else{const t=la(f,cs(m,cs(g,f)));s=ls([ps(s,[0,0],[e,r]),t],0)}const y=_u(m),v=ps(a,[0,e],[n,a.shape[1]-e]);if(0===e)a=la(v,cs(cs(v,i),y));else{const t=la(v,cs(cs(v,i),y));a=ls([ps(a,[0,0],[n,e]),t],1)}return[i,s,a]})),Hr([t,u,l])}return!t&&n>r&&(a=ps(a,[0,0],[n,r]),s=ps(s,[0,0],[r,r])),[a,s]}))}const pl=Fn({qr_:function(e,t=!1){if(Xe(e.rank>=2,(()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`)),2===e.rank)return hl(e,t);{const n=e.shape.slice(0,e.shape.length-2).reduce(((e,t)=>e*t)),r=gu(os(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];return r.forEach((e=>{const[n,r]=hl(e,t);a.push(n),s.push(r)})),[os(tu(a,0),e.shape),os(tu(s,0),e.shape)]}}});var dl;!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(dl||(dl={}));const fl=Fn({computeWeightedLoss_:function(e,t,n=dl.SUM_BY_NONZERO_WEIGHTS){const r=Dn(e,"losses","computeWeightedLoss");let a=null;null!=t&&(a=Dn(t,"weights","computeWeightedLoss"));const s=null==a?r:Xr(r,a);if(n===dl.NONE)return s;if(n===dl.SUM)return ro(s);if(n===dl.MEAN){if(null==a)return jo(s);{const e=r.size/a.size,t=Kr(ro(s),ro(a));return e>1?Kr(t,ea(e)):t}}if(n===dl.SUM_BY_NONZERO_WEIGHTS){if(null==a)return Kr(ro(s),ea(r.size));{const e=Xr(a,Go(r.shape)),t=Ur(ro(Qo(e,ea(0))),"float32");return Kr(ro(s),t)}}throw Error(`Unknown reduction: ${n}`)}}),ml=Fn({absoluteDifference_:function(e,t,n,r=dl.SUM_BY_NONZERO_WEIGHTS){const a=Dn(e,"labels","absoluteDifference"),s=Dn(t,"predictions","absoluteDifference");let o=null;null!=n&&(o=Dn(n,"weights","absoluteDifference")),Ye(a.shape,s.shape,"Error in absoluteDifference: ");const i=ca(la(a,s));return fl(i,o,r)}}),gl=Fn({cosineDistance_:function(e,t,n,r,a=dl.SUM_BY_NONZERO_WEIGHTS){const s=Dn(e,"labels","cosineDistance"),o=Dn(t,"predictions","cosineDistance");let i=null;null!=r&&(i=Dn(r,"weights","cosineDistance")),Ye(s.shape,o.shape,"Error in cosineDistance: ");const u=ea(1),l=la(u,ro(Xr(s,o),n,!0));return fl(l,i,a)}}),yl=Fn({hingeLoss_:function(e,t,n,r=dl.SUM_BY_NONZERO_WEIGHTS){let a=Dn(e,"labels","hingeLoss");const s=Dn(t,"predictions","hingeLoss");let o=null;null!=n&&(o=Dn(n,"weights","hingeLoss")),Ye(a.shape,s.shape,"Error in hingeLoss: ");const i=ea(1);a=la(Xr(ea(2),a),i);const u=Ai(la(i,Xr(a,s)));return fl(u,o,r)}}),vl=Fn({huberLoss_:function(e,t,n,r=1,a=dl.SUM_BY_NONZERO_WEIGHTS){const s=Dn(e,"labels","huberLoss"),o=Dn(t,"predictions","huberLoss");let i=null;null!=n&&(i=Dn(n,"weights","huberLoss")),Ye(s.shape,o.shape,"Error in huberLoss: ");const u=ea(r),l=ca(la(o,s)),c=qo(l,u),h=la(l,c),p=Wr(Xr(ea(.5),Zr(c)),Xr(u,h));return fl(p,i,a)}}),xl=Fn({logLoss_:function(e,t,n,r=1e-7,a=dl.SUM_BY_NONZERO_WEIGHTS){const s=Dn(e,"labels","logLoss"),o=Dn(t,"predictions","logLoss");let i=null;null!=n&&(i=Dn(n,"weights","logLoss")),Ye(s.shape,o.shape,"Error in logLoss: ");const u=ea(1),l=ea(r),c=Ao(Xr(s,So(Wr(o,l)))),h=Xr(la(u,s),So(Wr(la(u,o),l))),p=la(c,h);return fl(p,i,a)}}),bl=Fn({meanSquaredError_:function(e,t,n,r=dl.SUM_BY_NONZERO_WEIGHTS){const a=Dn(e,"labels","meanSquaredError"),s=Dn(t,"predictions","meanSquaredError");let o=null;null!=n&&(o=Dn(n,"weights","meanSquaredError")),Ye(a.shape,s.shape,"Error in meanSquaredError: ");const i=Qi(a,s);return fl(i,o,r)}}),_l=Fn({sigmoidCrossEntropy_:function(e,t,n,r=0,a=dl.SUM_BY_NONZERO_WEIGHTS){let s=Dn(e,"multiClassLabels","sigmoidCrossEntropy");const o=Dn(t,"logits","sigmoidCrossEntropy");let i=null;if(null!=n&&(i=Dn(n,"weights","sigmoidCrossEntropy")),Ye(s.shape,o.shape,"Error in sigmoidCrossEntropy: "),r>0){const e=ea(r),t=ea(1),n=ea(.5);s=Wr(Xr(s,la(t,e)),Xr(n,e))}const u=function(e,t){const n=Dn(e,"labels","sigmoidCrossEntropyWithLogits"),r=Dn(t,"logits","sigmoidCrossEntropyWithLogits");Ye(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");const a=Ai(r),s=Xr(r,n),o=Mo(io(Ao(ca(r))));return Wr(la(a,s),o)}(s,o);return fl(u,i,a)}}),El=Fn({softmaxCrossEntropy_:function(e,t,n,r=0,a=dl.SUM_BY_NONZERO_WEIGHTS){let s=Dn(e,"onehotLabels","softmaxCrossEntropy");const o=Dn(t,"logits","softmaxCrossEntropy");let i=null;if(null!=n&&(i=Dn(n,"weights","softmaxCrossEntropy")),Ye(s.shape,o.shape,"Error in softmaxCrossEntropy: "),r>0){const e=ea(r),t=ea(1),n=ea(s.shape[1]);s=Wr(Xr(s,la(t,e)),Kr(e,n))}const u=function(e,t,n=-1){if(-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);const r=Qr(((e,t,r)=>{const a=Co(t,[n],!0),s=la(Ur(t,"float32"),a);r([e,s]);const o=Ao(Xr(s,e));return{value:ro(o,[n]),gradFunc:(e,t)=>{const[r,a]=t,s=eo(e.shape,[n]);return[Xr(os(e,s),la(Ur(r,"float32"),io(a))),Xr(os(e,s),la(io(a),Ur(r,"float32")))]}}}));return r(e,t)}(s,o);return fl(u,i,a)}}),Tl=Fn({sparseFillEmptyRows_:function(e,t,n,r){const a=Dn(e,"indices","sparseFillEmptyRows","int32"),s=Dn(t,"values","sparseFillEmptyRows"),o=Dn(n,"denseShape","sparseFillEmptyRows","int32"),i=Dn(r,"defaultValue","sparseFillEmptyRows",s.dtype);if(2!==a.rank)throw new Error(`Indices should be Tensor2D but received shape\n ${a.shape}`);if(1!==s.rank)throw new Error(`Values should be Tensor1D but received shape ${s.shape}`);if(1!==o.rank)throw new Error(`Dense shape should be Tensor1D but received shape ${o.shape}`);if(0!==i.rank)throw new Error(`Default value should be a scalar but received shape ${i.shape}`);const u={indices:a,values:s,denseShape:o,defaultValue:i},l=An.runKernel("SparseFillEmptyRows",u);return{outputIndices:l[0],outputValues:l[1],emptyRowIndicator:l[2],reverseIndexMap:l[3]}}}),wl=Fn({sparseReshape_:function(e,t,n){const r=Dn(e,"inputIndices","sparseReshape","int32"),a=Dn(t,"inputShape","sparseReshape","int32"),s=Dn(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error(`Input indices should be Tensor2D but received shape\n ${r.shape}`);if(1!==a.rank)throw new Error(`Input shape should be Tensor1D but received shape ${a.shape}`);if(1!==s.rank)throw new Error(`New shape should be Tensor1D but received shape ${s.shape}`);const o={inputIndices:r,inputShape:a,newShape:s},i=An.runKernel("SparseReshape",o);return{outputIndices:i[0],outputShape:i[1]}}}),Nl=Fn({sparseSegmentMean_:function(e,t,n){const r=Dn(e,"data","sparseSegmentMean"),a=Dn(t,"indices","sparseSegmentMean","int32"),s=Dn(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error(`Indices should be Tensor1D but received shape\n ${a.shape}`);if(1!==s.rank)throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);const o={data:r,indices:a,segmentIds:s};return An.runKernel("SparseSegmentMean",o)}}),Sl=Fn({sparseSegmentSum_:function(e,t,n){const r=Dn(e,"data","sparseSegmentSum"),a=Dn(t,"indices","sparseSegmentSum","int32"),s=Dn(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error(`Indices should be Tensor1D but received shape\n ${a.shape}`);if(1!==s.rank)throw new Error(`Segment ids should be Tensor1D but received shape\n ${s.shape}`);const o={data:r,indices:a,segmentIds:s};return An.runKernel("SparseSegmentSum",o)}}),Ml=Fn({stringNGrams_:function(e,t,n,r,a,s,o,i){const u=Dn(e,"data","stringNGrams","string");if("string"!==u.dtype)throw new Error("Data must be of datatype string");if(1!==u.shape.length)throw new Error(`Data must be a vector, saw: ${u.shape}`);const l=Dn(t,"dataSplits","stringNGrams");if("int32"!==l.dtype)throw new Error("Data splits must be of datatype int32");const c={separator:n,nGramWidths:r,leftPad:a,rightPad:s,padWidth:o,preserveShortSequences:i},h={data:u,dataSplits:l},p=An.runKernel("StringNGrams",h,c);return{nGrams:p[0],nGramsSplits:p[1]}}}),Al={fft:Ki,ifft:Xi,rfft:Ji,irfft:Yi},Rl={hammingWindow:Uu,hannWindow:$u,frame:Vu,stft:ju},Il={flipLeftRight:Gu,grayscaleToRGB:Wu,resizeNearestNeighbor:ol,resizeBilinear:sl,rgbToGrayscale:qu,rotateWithOffset:Ku,cropAndResize:Hu,nonMaxSuppression:Yu,nonMaxSuppressionAsync:async function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){const s=Dn(e,"boxes","nonMaxSuppressionAsync"),o=Dn(t,"scores","nonMaxSuppressionAsync"),i=Xu(s,o,n,r,a);n=i.maxOutputSize,r=i.iouThreshold,a=i.scoreThreshold;const u=await Promise.all([s.data(),o.data()]),l=u[0],c=u[1],{selectedIndices:h}=function(e,t,n,r,a){return Qu(e,t,n,r,a,0)}(l,c,n,r,a);return s!==e&&s.dispose(),o!==t&&o.dispose(),su(h,"int32")},nonMaxSuppressionWithScore:rl,nonMaxSuppressionWithScoreAsync:async function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){const o=Dn(e,"boxes","nonMaxSuppressionAsync"),i=Dn(t,"scores","nonMaxSuppressionAsync"),u=Xu(o,i,n,r,a,s);n=u.maxOutputSize,r=u.iouThreshold,a=u.scoreThreshold,s=u.softNmsSigma;const l=await Promise.all([o.data(),i.data()]),c=l[0],h=l[1],{selectedIndices:p,selectedScores:d}=function(e,t,n,r,a,s){return Qu(e,t,n,r,a,s,!0)}(c,h,n,r,a,s);return o!==e&&o.dispose(),i!==t&&i.dispose(),{selectedIndices:su(p,"int32"),selectedScores:su(d)}},nonMaxSuppressionPadded:al,nonMaxSuppressionPaddedAsync:async function(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){const o=Dn(e,"boxes","nonMaxSuppressionAsync"),i=Dn(t,"scores","nonMaxSuppressionAsync"),u=Xu(o,i,n,r,a,null),l=u.maxOutputSize,c=u.iouThreshold,h=u.scoreThreshold,[p,d]=await Promise.all([o.data(),i.data()]),{selectedIndices:f,validOutputs:m}=function(e,t,n,r,a,s){return Qu(e,t,n,r,a,0,!1,s,!0)}(p,d,l,c,h,s);return o!==e&&o.dispose(),i!==t&&i.dispose(),{selectedIndices:su(f,"int32"),validOutputs:ea(m,"int32")}},threshold:il,transform:ul},kl={bandPart:ll,gramSchmidt:cl,qr:pl},Cl={absoluteDifference:ml,computeWeightedLoss:fl,cosineDistance:gl,hingeLoss:yl,huberLoss:vl,logLoss:xl,meanSquaredError:bl,sigmoidCrossEntropy:_l,softmaxCrossEntropy:El},Ol={sparseFillEmptyRows:Tl,sparseReshape:wl,sparseSegmentMean:Nl,sparseSegmentSum:Sl},Dl={stringNGrams:Ml,stringSplit:Fn({stringSplit_:function(e,t,n=!0){const r=Dn(e,"input","stringSplit","string"),a=Dn(t,"delimiter","stringSplit","string");if(1!==r.rank)throw new Error(`Input should be Tensor1D but received shape ${r.shape}`);if(0!==a.rank)throw new Error(`Delimiter should be a scalar but received shape ${a.shape}`);const s={skipEmpty:n},o={input:r,delimiter:a},i=An.runKernel("StringSplit",o,s);return{indices:i[0],values:i[1],shape:i[2]}}}),stringToHashBucketFast:Fn({stringToHashBucketFast_:function(e,t){const n=Dn(e,"input","stringToHashBucketFast","string"),r={numBuckets:t};if(t<=0)throw new Error("Number of buckets must be at least 1");const a={input:n};return An.runKernel("StringToHashBucketFast",a,r)}}),staticRegexReplace:Fn({staticRegexReplace_:function(e,t,n,r=!0){const a=Dn(e,"input","staticRegexReplace","string"),s={pattern:t,rewrite:n,replaceGlobal:r};return An.runKernel("StaticRegexReplace",{x:a},s)}})};var Ll,Pl;!function(){for(const e of fa)sa(e)}(),vt().registerFlag("KEEP_INTERMEDIATE_TENSORS",(()=>!1),(e=>{e&&console.warn("Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.")})),function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_QINT16=15]="DT_QINT16",e[e.DT_QUINT16=16]="DT_QUINT16",e[e.DT_UINT16=17]="DT_UINT16",e[e.DT_COMPLEX128=18]="DT_COMPLEX128",e[e.DT_HALF=19]="DT_HALF",e[e.DT_RESOURCE=20]="DT_RESOURCE",e[e.DT_VARIANT=21]="DT_VARIANT",e[e.DT_UINT32=22]="DT_UINT32",e[e.DT_UINT64=23]="DT_UINT64",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF",e[e.DT_QINT16_REF=115]="DT_QINT16_REF",e[e.DT_QUINT16_REF=116]="DT_QUINT16_REF",e[e.DT_UINT16_REF=117]="DT_UINT16_REF",e[e.DT_COMPLEX128_REF=118]="DT_COMPLEX128_REF",e[e.DT_HALF_REF=119]="DT_HALF_REF",e[e.DT_RESOURCE_REF=120]="DT_RESOURCE_REF",e[e.DT_VARIANT_REF=121]="DT_VARIANT_REF",e[e.DT_UINT32_REF=122]="DT_UINT32_REF",e[e.DT_UINT64_REF=123]="DT_UINT64_REF"}(Ll||(Ll={})),function(e){let t;!function(e){e[e.LEGACY=0]="LEGACY",e[e.V1=1]="V1",e[e.V2=2]="V2"}(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))}(Pl||(Pl={}));const Fl={};function Bl(e){return Fl[e]}function zl(e,t,n,r,a){const s=t.inputParams[e];if(s&&void 0!==s.inputIndexStart){const e=s.inputIndexStart,o=0===s.inputIndexEnd?void 0:void 0===s.inputIndexEnd?e+1:s.inputIndexEnd,i=e<0?t.inputNames.length+e:e;if("tensor"===s.type)return Ul(t.inputNames[i],n,r,a);if("tensors"===s.type){const s=t.inputs.slice(e,o);return t.inputNames.slice(e,o).filter(((e,t)=>{var n;return"NoOp"!==(null===(n=s[t])||void 0===n?void 0:n.op)})).map((e=>Ul(e,n,r,a)))}const u=Ul(t.inputNames[i],n,r,a),l=u.dataSync();return"number"===s.type?l[0]:ct(u.shape,l)}const o=t.attrParams[e];return o&&o.value}function Ul(e,t,n,r){const[a,s]=Hl(e,n);if(null!=r){const e=r.getHashTableHandleByName(a);if(null!=e)return e}const o=n.currentContextIds.find((e=>!!t[jl(a,e)]));return void 0!==o?t[jl(a,o)][s]:void 0}function $l(e,t,n){return t[jl(e,n.currentContextId)]}function Vl(e,t){const[n,r,a]=Hl(e,t);return[jl(n,t&&t.currentContextId),r,a]}function jl(e,t){return t?`${e}-${t}`:e}function Hl(e,t){if(""===e)return["",0,void 0];const n=null!=t&&null!=t.parseNodeNameCache;if(n){const n=t.parseNodeNameCache.get(e);if(null!=n)return n}const r=e.split(":");let a;if(1===r.length)a=[e,0,void 0];else{const e=r[0],t=3===r.length?r[1]:void 0;a=[e,Number(r[r.length-1]),t]}return n&&t.parseNodeNameCache.set(e,a),a}function Gl(e,t,n){let r=zl("pad",e,t,n);if("explicit"===r){r=zl("explicitPaddings",e,t,n);const a=[[0,0],[0,0],[0,0],[0,0]];for(let e=0;e<4;e++)a[e][0]=r[2*e],a[e][1]=r[2*e+1];return a}return r}function Wl(e){return e.kept?e:$r(e)}const ql=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Kl=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"IsNan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"IsFinite",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"IsInf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Xl=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcatV2",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListLength",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}]},{tfOpName:"TensorListResize",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"size",type:"number"}]}],Yl=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number",defaultValue:.2}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],Zl=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomStandardNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"RandomUniformInt",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number"},{tfName:"maxval",name:"maxval",type:"number"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],Jl=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Ql=[{tfOpName:"LowerBound",category:"evaluation",inputs:[{start:0,name:"sortedSequence",type:"tensor"},{start:1,name:"values",type:"tensor"}]},{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"UpperBound",category:"evaluation",inputs:[{start:0,name:"sortedSequence",type:"tensor"},{start:1,name:"values",type:"tensor"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],ec=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],tc=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"InitializeTable",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}]},{tfOpName:"InitializeTableV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}]}],nc=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]},{tfOpName:"ImageProjectiveTransformV3",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"transforms",type:"tensor"},{start:2,name:"outputShape",type:"number[]"},{start:3,name:"fillValue",type:"number"}],attrs:[{tfName:"interpolation",name:"interpolation",type:"string"},{tfName:"fill_mode",name:"fillMode",type:"string"}]}],rc=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BitwiseAnd",category:"logical",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}]}],ac=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Einsum",category:"matrices",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"equation",name:"equation",type:"string"},{tfName:"N",name:"n",type:"number",defaultValue:2},{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"MatrixBandPart",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"numLower",type:"tensor"},{start:1,name:"numUpper",type:"tensor"}]}],sc=[{tfOpName:"EuclideanNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",defaultValue:!1}]},{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]}],oc=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cumprod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],ic=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]},{tfOpName:"TensorScatterUpdate",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"values",type:"tensor"}]}],uc=[{tfOpName:"SparseFillEmptyRows",category:"sparse",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"denseShape",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}]},{tfOpName:"SparseReshape",category:"sparse",inputs:[{start:0,name:"inputIndices",type:"tensor"},{start:1,name:"inputShape",type:"tensor"},{start:2,name:"newShape",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SparseSegmentMean",category:"sparse",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"segmentIds",type:"tensor"}]},{tfOpName:"SparseSegmentSum",category:"sparse",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"segmentIds",type:"tensor"}]}],lc=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],cc=[{tfOpName:"StaticRegexReplace",category:"string",inputs:[{start:0,name:"input",type:"tensor"}],attrs:[{tfName:"pattern",name:"pattern",type:"string"},{tfName:"rewrite",name:"rewrite",type:"string"},{tfName:"replace_global",name:"replaceGlobal",type:"bool"}]},{tfOpName:"StringNGrams",category:"string",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"dataSplits",type:"tensor"}],attrs:[{tfName:"separator",name:"separator",type:"string"},{tfName:"ngram_widths",name:"nGramWidths",type:"number[]"},{tfName:"left_pad",name:"leftPad",type:"string"},{tfName:"right_pad",name:"rightPad",type:"string"},{tfName:"pad_width",name:"padWidth",type:"number"},{tfName:"preserve_short_sequences",name:"preserveShortSequences",type:"bool"}],outputs:["ngrams","ngrams_splits"]},{tfOpName:"StringSplit",category:"string",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"delimiter",type:"tensor"}],attrs:[{tfName:"skip_empty",name:"skipEmpty",type:"bool"}],outputs:["indices","values","shape"]},{tfOpName:"StringToHashBucketFast",category:"string",inputs:[{start:0,name:"input",type:"tensor"}],attrs:[{tfName:"num_buckets",name:"numBuckets",type:"number"}]}],hc=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"EnsureShape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]},{tfOpName:"BroadcastArgs",category:"transformation",inputs:[{start:0,name:"s0",type:"tensor"},{start:1,name:"s1",type:"tensor"}],attrs:[]}];class pc{static get Instance(){return this._instance||(this._instance=new this)}constructor(){const e=[].concat(...[n,r,s,o,i,u,l,c,h,p,d,f,m,g,y,v,x,b,_].map((e=>e.json)));this.opMappers=e.reduce(((e,t)=>(e[t.tfOpName]=t,e)),{})}transformGraph(e,t={}){const n=e.node,r=[],a=[],s=[],o=n.reduce(((e,t)=>(e[t.name]=this.mapNode(t),t.op.startsWith("Placeholder")?r.push(e[t.name]):"Const"===t.op?a.push(e[t.name]):null!=t.input&&0!==t.input.length||s.push(e[t.name]),e)),{});let i=[];const u=[];let l={},c={};null!=t&&(l=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));const h=Object.keys(o);h.forEach((e=>{const t=o[e];t.inputNames.forEach(((e,n)=>{const[r,,a]=Vl(e),s=o[r];if(null!=s.outputs){const e=s.outputs.indexOf(a);if(-1!==e){const a=`${r}:${e}`;t.inputNames[n]=a}}t.inputs.push(s),s.children.push(t)}))})),0===Object.keys(c).length?h.forEach((e=>{const t=o[e];0===t.children.length&&u.push(t)})):Object.keys(c).forEach((e=>{const[t]=Vl(e),n=o[t];null!=n&&(n.signatureKey=c[e],u.push(n))})),Object.keys(l).length>0?Object.keys(l).forEach((e=>{const[t]=Vl(e),n=o[t];n&&(n.signatureKey=l[e],i.push(n))})):i=r;let p={};null!=e.library&&null!=e.library.function&&(p=e.library.function.reduce(((e,t)=>(e[t.signature.name]=this.mapFunction(t),e)),{}));const d={nodes:o,inputs:i,outputs:u,weights:a,placeholders:r,signature:t,functions:p};return s.length>0&&(d.initNodes=s),d}mapSignatureEntries(e){return Object.keys(e||{}).reduce(((t,n)=>(t[e[n].name]=n,t)),{})}mapNode(e){const t=Bl(e.op)||this.opMappers[e.op]||{};null==e.attr&&(e.attr={});const n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map((e=>e.startsWith("^")?e.slice(1):e)),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr,outputs:t.outputs};return null!=t.inputs&&(n.inputParams=t.inputs.reduce(((e,t)=>(e[t.name]={type:t.type,inputIndexStart:t.start,inputIndexEnd:t.end},e)),{})),null!=t.attrs&&(n.attrParams=t.attrs.reduce(((t,n)=>{const r=n.type;let a;switch(n.type){case"string":a=fc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=fc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"string[]":a=wc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=wc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number":a=gc(e.attr,n.tfName,n.defaultValue||0),void 0===a&&n.tfDeprecatedName&&(a=gc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number[]":a=Tc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=Tc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool":a=mc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=mc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool[]":a=Sc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=Sc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape":a=Ec(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=Ec(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape[]":a=Nc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=Nc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype":a=xc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=xc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype[]":a=bc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=bc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"func":a=vc(e.attr,n.tfName,n.defaultValue),void 0===a&&n.tfDeprecatedName&&(a=vc(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${n.type} for op: ${e.op}`)}return t[n.name]={value:a,type:r},t}),{})),n}mapFunction(e){const t=e.nodeDef,n=[];let r={};null!=t&&(r=t.reduce(((e,t)=>(e[t.name]=this.mapNode(t),"Const"===t.op&&n.push(e[t.name]),e)),{}));const a=[],s=[];e.signature.inputArg.forEach((e=>{const[t]=Vl(e.name),n={name:t,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:yc(e.type),type:"dtype"}},children:[]};n.signatureKey=e.name,a.push(n),r[t]=n})),Object.keys(r).forEach((e=>{const t=r[e];t.inputNames.forEach(((e,n)=>{const[a,,s]=Vl(e),o=r[a];if(null!=o.outputs){const e=o.outputs.indexOf(s);if(-1!==e){const r=`${a}:${e}`;t.inputNames[n]=r}}t.inputs.push(o),o.children.push(t)}))}));const o=e.ret;e.signature.outputArg.forEach((e=>{const[t,n]=Vl(o[e.name]),a=r[t];null!=a&&(a.defaultOutput=n,s.push(a))}));const i=this.mapArgsToSignature(e);return{nodes:r,inputs:a,outputs:s,weights:n,placeholders:[],signature:i}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce(((e,t)=>(e[t.name]=this.mapArgToTensorInfo(t),e)),{}),outputs:e.signature.outputArg.reduce(((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t)),{})}}mapArgToTensorInfo(e,t){let n=e.name;return null!=t&&(n=t[n]),{name:n,dtype:e.type}}}function dc(e,t){const n=Array.isArray(e)?String.fromCharCode.apply(null,e):function(e){const t=vt().global;if(void 0!==t.atob)return t.atob(e);if("undefined"!=typeof Buffer)return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}(e);return t?n:n.toLowerCase()}function fc(e,t,n,r=!1){const a=e[t];return null!=a?dc(a.s,r):n}function mc(e,t,n){const r=e[t];return r?r.b:n}function gc(e,t,n){const r=e[t]||{},a=null!=r.i?r.i:null!=r.f?r.f:n;return"number"==typeof a?a:parseInt(a,10)}function yc(e){switch("string"==typeof e&&(e=Ll[e]),e){case Ll.DT_FLOAT:case Ll.DT_HALF:return"float32";case Ll.DT_INT32:case Ll.DT_INT64:case Ll.DT_INT8:case Ll.DT_UINT8:return"int32";case Ll.DT_BOOL:return"bool";case Ll.DT_DOUBLE:return"float32";case Ll.DT_STRING:return"string";default:return null}}function vc(e,t,n){const r=e[t];return r&&r.func?r.func.name:n}function xc(e,t,n){const r=e[t];return r&&r.type?yc(r.type):n}function bc(e,t,n){const r=e[t];return r&&r.list&&r.list.type?r.list.type.map((e=>yc(e))):n}function _c(e){if(!e.unknownRank)return null!=e.dim?e.dim.map((e=>"number"==typeof e.size?e.size:parseInt(e.size,10))):[]}function Ec(e,t,n){const r=e[t];return r&&r.shape?_c(r.shape):n}function Tc(e,t,n){const r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map((e=>"number"==typeof e?e:parseInt(e,10))):n}function wc(e,t,n,r=!1){const a=e[t];return a&&a.list&&a.list.s?a.list.s.map((e=>dc(e,r))):n}function Nc(e,t,n){const r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map((e=>_c(e))):n}function Sc(e,t,n){const r=e[t];return r&&r.list&&r.list.b?r.list.b:n}class Mc{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map((e=>this.getInput(e))),null!=e.rawAttrs&&(this.attrs=Object.keys(e.rawAttrs).reduce(((e,t)=>(e[t]=this.getAttr(t),e)),{}))}getInput(e){return Ul(e,this.tensorMap,this.context)}getAttr(e,t){const n=this.node.rawAttrs[e];if(null!=n.tensor)return Ul(e,this.tensorMap,this.context);if(null!=n.i||null!=n.f)return gc(this.node.rawAttrs,e,t);if(null!=n.s)return fc(this.node.rawAttrs,e,t);if(null!=n.b)return mc(this.node.rawAttrs,e,t);if(null!=n.shape)return Ec(this.node.rawAttrs,e,t);if(null!=n.type)return xc(this.node.rawAttrs,e,t);if(null!=n.list){if(null!=n.list.i||null!=n.list.f)return Tc(this.node.rawAttrs,e,t);if(null!=n.list.s)return wc(this.node.rawAttrs,e,t);if(null!=n.list.shape)return Nc(this.node.rawAttrs,e,t);if(null!=n.list.b)return Sc(this.node.rawAttrs,e,t);if(null!=n.list.type)return bc(this.node.rawAttrs,e,t)}return t}}function Ac(e,t,n=""){if("number"!=typeof e&&"number"!=typeof t){Xe(e.length===t.length,(()=>n+` Shapes ${e} and ${t} must match`));for(let r=0;rn+` Shapes ${e} and ${t} must match`))}}}function Rc(e){return"number"!=typeof e&&!e.some((e=>e<0))}function Ic(e,t,n){let r=kc(e,n);const a=!Rc(r);if(a&&0===t.length)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach((e=>{r=kc(e.shape,r)})),!Rc(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function kc(e,t){if("number"==typeof e)return t;if("number"==typeof t)return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);const n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}class Cc{constructor(e,t,n,r,a,s,o){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=o,this.tensors=[],this.closed_=!1,this.idTensor=ea(0),Gr(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach((t=>{null!=e&&e.has(t.tensor.id)||t.tensor.dispose()})),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);const t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map((e=>this.read(e)))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);const n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e},\n because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=t.shape),Ac(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Gr(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach(((e,n)=>this.write(e,t[n])))}gather(e,t){if(t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let t=0;t=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,gu(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0;const r=e.map((e=>(n+=e,n)));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);const a=0===n?0:t.size/n,s=[];jr((()=>{t=os(t,[1,n,a]);for(let n=0;n{if(n!==e.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${e.dtype}`);Ac(t,e.shape,"TensorList shape mismatch: "),Gr(e)})),this.idTensor=ea(0),this.maxNumElements=r,Gr(this.idTensor)}copy(){return new Oc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach((t=>{null!=e&&e.has(t.id)||t.dispose()})),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(-1!==n&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);Ac(e,this.elementShape,"TensorList shape mismatch: ");const r=Ic(this.elementShape,this.tensors,e);return jr((()=>{const e=this.tensors.map((e=>os(e,r)));return tu(e,0)}))}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(0===this.size())throw new Error("Trying to pop from an empty list.");const n=Ic(this.elementShape,this.tensors,e),r=this.tensors.pop();return r.kept=!1,Ac(r.shape,e,"TensorList shape mismatch: "),os(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(Ac(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Gr(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(-1!==this.maxNumElements&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);const t=new Oc([],this.elementShape,this.elementDtype,this.maxNumElements);t.tensors.length=e;for(let n=0;nthis.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(null==this.tensors[e])throw new Error(`element at index ${e} is null.`);Ac(this.tensors[e].shape,t,"TensorList shape mismatch: ");const r=Ic(this.elementShape,this.tensors,t);return os(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||-1!==this.maxNumElements&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);Ac(this.elementShape,t.shape,"TensorList shape mismatch: "),Gr(t),null!=this.tensors[e]&&(this.tensors[e].kept=!1),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);Ac(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());const r=Ic(this.elementShape,this.tensors,n);return 0===e.length?Un([],[0].concat(r)):jr((()=>{const t=e.map((e=>os(this.tensors[e],r)));return tu(t,0)}))}concat(e,t){if(e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);Ac(this.elementShape,t,"TensorList shape mismatch: ");const n=Ic(this.elementShape,this.tensors,t);return 0===this.size()?Un([],[0].concat(n)):jr((()=>{const e=this.tensors.map((e=>os(e,n)));return ls(e,0)}))}}function Dc(e,t,n){const[r,a]=zl("fusedOps",e,t,n),s="biasadd"===r,o=!s,i="prelu"===a,u="fusedbatchnorm"===r,l=zl("numArgs",e,t,n);if(s){if(i&&2!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&s&&1!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(u)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");const c=zl("strides",e,t,n),h=Gl(e,t,n),p=zl("dataFormat",e,t,n).toUpperCase(),d=zl("dilations",e,t,n);let[f,m]=zl("args",e,t,n);return o&&(m=f,f=void 0),{stride:c,pad:h,dataFormat:p,dilations:d,biasArg:f,preluArg:m,activationFunc:a,leakyreluAlpha:zl("leakyreluAlpha",e,t,n)}}function Lc(e,t,n){return{boxes:zl("boxes",e,t,n),scores:zl("scores",e,t,n),maxOutputSize:zl("maxOutputSize",e,t,n),iouThreshold:zl("iouThreshold",e,t,n),scoreThreshold:zl("scoreThreshold",e,t,n),softNmsSigma:zl("softNmsSigma",e,t,n)}}class Pc{get id(){return this.handle.id}constructor(e,t){this.keyDType=e,this.valueDType=t,this.handle=ea(0),this.tensorMap=new Map,Gr(this.handle)}clearAndClose(){this.tensorMap.forEach((e=>e.dispose())),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return ea(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);const n=await e.data();return this.tensorMap.forEach((e=>e.dispose())),this.tensorMap.clear(),jr((()=>{const e=gu(t),r=n.length,a=e.length;Xe(r===a,(()=>`The number of elements doesn't match, keys has ${r} elements, the values has ${a} elements.`));for(let t=0;t{const e=[];for(let r=0;r{switch(e.category){case"arithmetic":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[r.add(zl("a",e,t,n),zl("b",e,t,n))];case"AddN":return[r.addN(zl("tensors",e,t,n))];case"FloorMod":case"Mod":return[r.mod(zl("a",e,t,n),zl("b",e,t,n))];case"Mul":return[r.mul(zl("a",e,t,n),zl("b",e,t,n))];case"RealDiv":case"Div":return[r.div(zl("a",e,t,n),zl("b",e,t,n))];case"DivNoNan":return[r.divNoNan(zl("a",e,t,n),zl("b",e,t,n))];case"FloorDiv":return[r.floorDiv(zl("a",e,t,n),zl("b",e,t,n))];case"Sub":return[r.sub(zl("a",e,t,n),zl("b",e,t,n))];case"Minimum":return[r.minimum(zl("a",e,t,n),zl("b",e,t,n))];case"Maximum":return[r.maximum(zl("a",e,t,n),zl("b",e,t,n))];case"Pow":return[r.pow(zl("a",e,t,n),zl("b",e,t,n))];case"SquaredDifference":return[r.squaredDifference(zl("a",e,t,n),zl("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"basic_math":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"Abs":case"ComplexAbs":return[r.abs(zl("x",e,t,n))];case"Acos":return[r.acos(zl("x",e,t,n))];case"Acosh":return[r.acosh(zl("x",e,t,n))];case"Asin":return[r.asin(zl("x",e,t,n))];case"Asinh":return[r.asinh(zl("x",e,t,n))];case"Atan":return[r.atan(zl("x",e,t,n))];case"Atan2":return[r.atan2(zl("x",e,t,n),zl("y",e,t,n))];case"Atanh":return[r.atanh(zl("x",e,t,n))];case"Ceil":return[r.ceil(zl("x",e,t,n))];case"Complex":return[r.complex(zl("real",e,t,n),zl("imag",e,t,n))];case"Cos":return[r.cos(zl("x",e,t,n))];case"Cosh":return[r.cosh(zl("x",e,t,n))];case"Elu":return[r.elu(zl("x",e,t,n))];case"Erf":return[r.erf(zl("x",e,t,n))];case"Exp":return[r.exp(zl("x",e,t,n))];case"Expm1":return[r.expm1(zl("x",e,t,n))];case"Floor":return[r.floor(zl("x",e,t,n))];case"Log":return[r.log(zl("x",e,t,n))];case"Log1p":return[r.log1p(zl("x",e,t,n))];case"Imag":return[r.imag(zl("x",e,t,n))];case"Neg":return[r.neg(zl("x",e,t,n))];case"Reciprocal":return[r.reciprocal(zl("x",e,t,n))];case"Real":return[r.real(zl("x",e,t,n))];case"Relu":return[r.relu(zl("x",e,t,n))];case"Round":return[r.round(zl("x",e,t,n))];case"Selu":return[r.selu(zl("x",e,t,n))];case"Sigmoid":return[r.sigmoid(zl("x",e,t,n))];case"Sin":return[r.sin(zl("x",e,t,n))];case"Sign":return[r.sign(zl("x",e,t,n))];case"Sinh":return[r.sinh(zl("x",e,t,n))];case"Softplus":return[r.softplus(zl("x",e,t,n))];case"Sqrt":return[r.sqrt(zl("x",e,t,n))];case"Square":return[r.square(zl("x",e,t,n))];case"Tanh":return[r.tanh(zl("x",e,t,n))];case"Tan":return[r.tan(zl("x",e,t,n))];case"ClipByValue":return[r.clipByValue(zl("x",e,t,n),zl("clipValueMin",e,t,n),zl("clipValueMax",e,t,n))];case"Relu6":return[r.relu6(zl("x",e,t,n))];case"Rsqrt":return[r.rsqrt(Ul(e.inputNames[0],t,n))];case"LeakyRelu":return[r.leakyRelu(zl("x",e,t,n),zl("alpha",e,t,n))];case"Prelu":return[r.prelu(zl("x",e,t,n),zl("alpha",e,t,n))];case"IsNan":return[r.isNaN(Ul(e.inputNames[0],t,n))];case"IsInf":return[r.isInf(Ul(e.inputNames[0],t,n))];case"IsFinite":return[r.isFinite(Ul(e.inputNames[0],t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"control":return(async(e,t,n)=>{switch(e.op){case"If":case"StatelessIf":{const r=zl("thenBranch",e,t,n),a=zl("elseBranch",e,t,n),s=zl("cond",e,t,n),o=zl("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(o,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{const r=zl("body",e,t,n),a=zl("cond",e,t,n),s=zl("args",e,t,n),o=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),i=s.map((e=>e.id));let u=await o[0].data();o.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||e.dispose()}));let l=s;for(;u[0];){const e=l;l=await n.functionMap[r].executeFunctionAsync(l,n.tensorArrayMap,n.tensorListMap);const t=l.map((e=>e.id));e.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||-1!==t.indexOf(e.id)||e.dispose()}));const s=await n.functionMap[a].executeFunctionAsync(l,n.tensorArrayMap,n.tensorListMap);u=await s[0].data(),s.forEach((e=>{e.kept||-1!==i.indexOf(e.id)||-1!==t.indexOf(e.id)||e.dispose()}))}return l}case"LoopCond":return[Wl(zl("pred",e,t,n))];case"Switch":{const r=zl("pred",e,t,n);let a=zl("data",e,t,n);return a.kept||(a=Wl(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{const r=e.inputNames.find((e=>void 0!==Ul(e,t,n)));return r?[Wl(Ul(r,t,n))]:void 0}case"Enter":{const r=zl("frameName",e,t,n),a=zl("tensor",e,t,n);return n.enterFrame(r),[Wl(a)]}case"Exit":{const r=zl("tensor",e,t,n);return n.exitFrame(),[Wl(r)]}case"NextIteration":{const r=zl("tensor",e,t,n);return n.nextIteration(),[Wl(r)]}case"TensorArrayV3":{const r=zl("size",e,t,n),a=zl("dtype",e,t,n),s=zl("elementShape",e,t,n),o=zl("dynamicSize",e,t,n),i=zl("clearAfterRead",e,t,n),u=zl("identicalElementShapes",e,t,n),l=zl("name",e,t,n),c=new Cc(l,a,r,s,u,o,i);return n.addTensorArray(c),[c.idTensor,ea(1)]}case"TensorArrayWriteV3":{const r=zl("tensorArrayId",e,t,n),a=zl("index",e,t,n),s=zl("tensor",e,t,n),o=n.getTensorArray(r.id);return o.write(a,s),[o.idTensor]}case"TensorArrayReadV3":{const r=zl("tensorArrayId",e,t,n),a=zl("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{const r=zl("tensorArrayId",e,t,n),a=zl("indices",e,t,n),s=zl("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{const r=zl("tensorArrayId",e,t,n),a=zl("indices",e,t,n),s=zl("tensor",e,t,n),o=n.getTensorArray(r.id);return o.scatter(a,s),[o.idTensor]}case"TensorArrayConcatV3":{const r=zl("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=zl("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{const r=zl("tensorArrayId",e,t,n),a=zl("tensor",e,t,n),s=zl("lengths",e,t,n),o=n.getTensorArray(r.id);return o.split(s,a),[o.idTensor]}case"TensorArraySizeV3":{const r=zl("tensorArrayId",e,t,n);return[ea(n.getTensorArray(r.id).size(),"int32")]}case"TensorArrayCloseV3":{const r=zl("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{const r=zl("tensorListId",e,t,n),a=zl("index",e,t,n),s=zl("tensor",e,t,n),o=n.getTensorList(r.id);return o.setItem(a,s),[o.idTensor]}case"TensorListGetItem":{const r=zl("tensorListId",e,t,n),a=zl("index",e,t,n),s=zl("elementShape",e,t,n),o=zl("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,o)]}case"TensorListScatterV2":case"TensorListScatter":{const r=zl("indices",e,t,n),a=function(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);const a=Math.max(...t);if(null!=r&&-1!==r&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);const s=new Oc([],n,e.dtype,r),o=gu(e,0);return t.forEach(((e,t)=>{s.setItem(e,o[t])})),s}(zl("tensor",e,t,n),r,zl("elementShape",e,t,n),zl("numElements",e,t,n));return n.addTensorList(a),[a.idTensor]}case"TensorListReserve":case"EmptyTensorList":{const r=zl("elementShape",e,t,n),a=zl("elementDType",e,t,n);let s;s="TensorListReserve"===e.op?"numElements":"maxNumElements";const o=zl(s,e,t,n),i=function(e,t,n,r){return new Oc([],e,t,r)}(r,a,0,"TensorListReserve"===e.op?-1:o);return n.addTensorList(i),[i.idTensor]}case"TensorListGather":{const r=zl("tensorListId",e,t,n),a=zl("indices",e,t,n),s=zl("elementShape",e,t,n),o=zl("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,o,s)]}case"TensorListStack":{const r=zl("tensorListId",e,t,n),a=zl("elementShape",e,t,n),s=zl("elementDType",e,t,n),o=zl("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,o)]}case"TensorListFromTensor":{const r=function(e,t,n){const r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);Ac(e.shape.slice(1),t,"TensorList shape mismatch: ");const a=gu(e);return new Oc(a,t,r)}(zl("tensor",e,t,n),zl("elementShape",e,t,n),zl("elementDType",e,t,n));return n.addTensorList(r),[r.idTensor]}case"TensorListConcat":case"TensorListConcatV2":{const r=zl("tensorListId",e,t,n),a=n.getTensorList(r.id),s=zl("dtype",e,t,n),o=zl("elementShape",e,t,n);return[a.concat(s,o)]}case"TensorListPushBack":{const r=zl("tensorListId",e,t,n),a=zl("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{const r=zl("tensorListId",e,t,n),a=zl("elementShape",e,t,n),s=zl("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{const r=zl("tensor",e,t,n),a=zl("elementShape",e,t,n),s=function(e,t,n){let r=0;const a=t.map((e=>(r+=e,r)));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ${r}, and tensor's shape is: ${e.shape}`);const s=kc(e.shape.slice(1),n),o=0===r?0:e.size/r,i=jr((()=>{const n=[];e=os(e,[1,r,o]);for(let r=0;r((e,t,n,r=E)=>{switch(e.op){case"Conv1D":{const a=zl("stride",e,t,n),s=zl("pad",e,t,n),o=zl("dataFormat",e,t,n).toUpperCase(),i=zl("dilation",e,t,n);return[r.conv1d(zl("x",e,t,n),zl("filter",e,t,n),a,s,o,i)]}case"Conv2D":{const a=zl("strides",e,t,n),s=Gl(e,t,n),o=zl("dataFormat",e,t,n).toUpperCase(),i=zl("dilations",e,t,n);return[r.conv2d(zl("x",e,t,n),zl("filter",e,t,n),[a[1],a[2]],s,o,[i[1],i[2]])]}case"_FusedConv2D":{const{stride:a,pad:s,dataFormat:o,dilations:i,biasArg:u,preluArg:l,activationFunc:c,leakyreluAlpha:h}=Dc(e,t,n);return[r.fused.conv2d({x:zl("x",e,t,n),filter:zl("filter",e,t,n),strides:[a[1],a[2]],pad:s,dataFormat:o,dilations:[i[1],i[2]],bias:u,activation:c,preluActivationWeights:l,leakyreluAlpha:h})]}case"FusedDepthwiseConv2dNative":{const{stride:a,pad:s,dataFormat:o,dilations:i,biasArg:u,preluArg:l,activationFunc:c,leakyreluAlpha:h}=Dc(e,t,n);return[r.fused.depthwiseConv2d({x:zl("x",e,t,n),filter:zl("filter",e,t,n),strides:[a[1],a[2]],pad:s,dataFormat:o,dilations:[i[1],i[2]],bias:u,activation:c,preluActivationWeights:l,leakyreluAlpha:h})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{const a=zl("outputShape",e,t,n),s=zl("strides",e,t,n),o=Gl(e,t,n);return[r.conv2dTranspose(zl("x",e,t,n),zl("filter",e,t,n),a,[s[1],s[2]],o)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{const a=zl("strides",e,t,n),s=Gl(e,t,n),o=zl("dilations",e,t,n),i=zl("dataFormat",e,t,n).toUpperCase();return[r.depthwiseConv2d(zl("input",e,t,n),zl("filter",e,t,n),[a[1],a[2]],s,i,[o[1],o[2]])]}case"Conv3D":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("dataFormat",e,t,n).toUpperCase(),i=zl("dilations",e,t,n);return[r.conv3d(zl("x",e,t,n),zl("filter",e,t,n),[a[1],a[2],a[3]],s,o,[i[1],i[2],i[3]])]}case"AvgPool":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("kernelSize",e,t,n);return[r.avgPool(zl("x",e,t,n),[o[1],o[2]],[a[1],a[2]],s)]}case"MaxPool":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("kernelSize",e,t,n);return[r.maxPool(zl("x",e,t,n),[o[1],o[2]],[a[1],a[2]],s)]}case"MaxPoolWithArgmax":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("kernelSize",e,t,n),i=zl("includeBatchInIndex",e,t,n),{result:u,indexes:l}=r.maxPoolWithArgmax(zl("x",e,t,n),[o[1],o[2]],[a[1],a[2]],s,i);return[u,l]}case"AvgPool3D":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("kernelSize",e,t,n);return[r.avgPool3d(zl("x",e,t,n),[o[1],o[2],o[3]],[a[1],a[2],a[3]],s)]}case"MaxPool3D":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("kernelSize",e,t,n);return[r.maxPool3d(zl("x",e,t,n),[o[1],o[2],o[3]],[a[1],a[2],a[3]],s)]}case"Dilation2D":{const a=zl("strides",e,t,n),s=zl("pad",e,t,n),o=zl("dilations",e,t,n),i=a[1],u=a[2],l=o[1],c=o[2];return[r.dilation2d(zl("x",e,t,n),zl("filter",e,t,n),[i,u],s,[l,c],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"creation":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"Fill":{const a=zl("shape",e,t,n),s=zl("dtype",e,t,n),o=zl("value",e,t,n);return[r.fill(a,o,s)]}case"LinSpace":{const a=zl("start",e,t,n),s=zl("stop",e,t,n),o=zl("num",e,t,n);return[r.linspace(a,s,o)]}case"Multinomial":{const a=zl("logits",e,t,n),s=zl("numSamples",e,t,n),o=zl("seed",e,t,n);return[r.multinomial(a,s,o)]}case"OneHot":{const a=zl("indices",e,t,n),s=zl("depth",e,t,n),o=zl("onValue",e,t,n),i=zl("offValue",e,t,n),u=zl("dtype",e,t,n);return[r.oneHot(a,s,o,i,u)]}case"Ones":return[r.ones(zl("shape",e,t,n),zl("dtype",e,t,n))];case"OnesLike":return[r.onesLike(zl("x",e,t,n))];case"RandomStandardNormal":return[r.randomStandardNormal(zl("shape",e,t,n),zl("dtype",e,t,n),zl("seed",e,t,n))];case"RandomUniform":return[r.randomUniform(zl("shape",e,t,n),zl("minval",e,t,n),zl("maxval",e,t,n),zl("dtype",e,t,n))];case"RandomUniformInt":return[r.randomUniformInt(zl("shape",e,t,n),zl("minval",e,t,n),zl("maxval",e,t,n),zl("seed",e,t,n))];case"Range":{const a=zl("start",e,t,n),s=zl("stop",e,t,n),o=zl("step",e,t,n);return[r.range(a,s,o,zl("dtype",e,t,n))]}case"TruncatedNormal":{const a=zl("shape",e,t,n),s=zl("mean",e,t,n),o=zl("stdDev",e,t,n),i=zl("seed",e,t,n);return[r.truncatedNormal(a,s,o,zl("dtype",e,t,n),i)]}case"Zeros":return[r.zeros(zl("shape",e,t,n),zl("dtype",e,t,n))];case"ZerosLike":return[r.zerosLike(zl("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"dynamic":return(async(e,t,n,r,a=E)=>{switch(e.op){case"NonMaxSuppressionV5":{const{boxes:r,scores:s,maxOutputSize:o,iouThreshold:i,scoreThreshold:u,softNmsSigma:l}=Lc(e,t,n),c=await a.image.nonMaxSuppressionWithScoreAsync(r,s,o,i,u,l);return[c.selectedIndices,c.selectedScores]}case"NonMaxSuppressionV4":{const{boxes:r,scores:s,maxOutputSize:o,iouThreshold:i,scoreThreshold:u}=Lc(e,t,n),l=zl("padToMaxOutputSize",e,t,n),c=await a.image.nonMaxSuppressionPaddedAsync(r,s,o,i,u,l);return[c.selectedIndices,c.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{const{boxes:r,scores:s,maxOutputSize:o,iouThreshold:i,scoreThreshold:u}=Lc(e,t,n);return[await a.image.nonMaxSuppressionAsync(r,s,o,i,u)]}case"Where":{const r=a.cast(zl("condition",e,t,n),"bool"),s=[await a.whereAsync(r)];return r.dispose(),s}case"ListDiff":return a.setdiff1dAsync(zl("x",e,t,n),zl("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n);case"evaluation":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"LowerBound":{const a=zl("sortedSequence",e,t,n),s=zl("values",e,t,n);return[r.lowerBound(a,s)]}case"TopKV2":{const a=zl("x",e,t,n),s=zl("k",e,t,n),o=zl("sorted",e,t,n),i=r.topk(a,s,o);return[i.values,i.indices]}case"UpperBound":{const a=zl("sortedSequence",e,t,n),s=zl("values",e,t,n);return[r.upperBound(a,s)]}case"Unique":{const a=zl("x",e,t,n),s=r.unique(a);return[s.values,s.indices]}case"UniqueV2":{const a=zl("x",e,t,n),s=zl("axis",e,t,n),o=r.unique(a,s);return[o.values,o.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"image":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"ResizeBilinear":{const a=zl("images",e,t,n),s=zl("size",e,t,n),o=zl("alignCorners",e,t,n),i=zl("halfPixelCenters",e,t,n);return[r.image.resizeBilinear(a,[s[0],s[1]],o,i)]}case"ResizeNearestNeighbor":{const a=zl("images",e,t,n),s=zl("size",e,t,n),o=zl("alignCorners",e,t,n),i=zl("halfPixelCenters",e,t,n);return[r.image.resizeNearestNeighbor(a,[s[0],s[1]],o,i)]}case"CropAndResize":{const a=zl("image",e,t,n),s=zl("boxes",e,t,n),o=zl("boxInd",e,t,n),i=zl("cropSize",e,t,n),u=zl("method",e,t,n),l=zl("extrapolationValue",e,t,n);return[r.image.cropAndResize(a,s,o,i,u,l)]}case"ImageProjectiveTransformV3":{const a=zl("images",e,t,n),s=zl("transforms",e,t,n),o=zl("outputShape",e,t,n),i=zl("fillValue",e,t,n),u=zl("interpolation",e,t,n),l=zl("fillMode",e,t,n);return[r.image.transform(a,s,u.toLowerCase(),l.toLowerCase(),i,o)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"graph":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":const a=zl("default",e,t,n);return[Ul(e.name,t,n)||a];case"Placeholder":return[Ul(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":case"Snapshot":return[Wl(zl("x",e,t,n))];case"IdentityN":return zl("x",e,t,n).map((e=>Wl(e)));case"Shape":return[r.tensor1d(zl("x",e,t,n).shape,"int32")];case"ShapeN":return zl("x",e,t,n).map((e=>r.tensor1d(e.shape)));case"Size":return[r.scalar(zl("x",e,t,n).size,"int32")];case"Rank":return[r.scalar(zl("x",e,t,n).rank,"int32")];case"NoOp":return[r.scalar(1)];case"Print":const s=zl("x",e,t,n),o=zl("data",e,t,n),i=zl("message",e,t,n),u=zl("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(i);for(let e=0;e((e,t,n,r=E)=>{switch(e.op){case"Equal":return[r.equal(zl("a",e,t,n),zl("b",e,t,n))];case"NotEqual":return[r.notEqual(zl("a",e,t,n),zl("b",e,t,n))];case"Greater":return[r.greater(zl("a",e,t,n),zl("b",e,t,n))];case"GreaterEqual":return[r.greaterEqual(zl("a",e,t,n),zl("b",e,t,n))];case"Less":return[r.less(zl("a",e,t,n),zl("b",e,t,n))];case"LessEqual":return[r.lessEqual(zl("a",e,t,n),zl("b",e,t,n))];case"LogicalAnd":return[r.logicalAnd(zl("a",e,t,n),zl("b",e,t,n))];case"LogicalNot":return[r.logicalNot(zl("a",e,t,n))];case"LogicalOr":return[r.logicalOr(zl("a",e,t,n),zl("b",e,t,n))];case"Select":case"SelectV2":return[r.where(zl("condition",e,t,n),zl("a",e,t,n),zl("b",e,t,n))];case"BitwiseAnd":return[r.bitwiseAnd(zl("a",e,t,n),zl("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"matrices":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[r.matMul(zl("a",e,t,n),zl("b",e,t,n),zl("transposeA",e,t,n),zl("transposeB",e,t,n))];case"Einsum":return[r.einsum(zl("equation",e,t,n),...zl("tensors",e,t,n))];case"Transpose":return[r.transpose(zl("x",e,t,n),zl("perm",e,t,n))];case"_FusedMatMul":const[a,s]=zl("fusedOps",e,t,n),o="biasadd"===a,i="prelu"===s,u=zl("numArgs",e,t,n),l=zl("leakyreluAlpha",e,t,n);if(o){if(i&&2!==u)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&1!==u)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}const[c,h]=zl("args",e,t,n);return[r.fused.matMul({a:zl("a",e,t,n),b:zl("b",e,t,n),transposeA:zl("transposeA",e,t,n),transposeB:zl("transposeB",e,t,n),bias:c,activation:s,preluActivationWeights:h,leakyreluAlpha:l})];case"MatrixBandPart":return[r.linalg.bandPart(zl("a",e,t,n),zl("numLower",e,t,n),zl("numUpper",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"normalization":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"EuclideanNorm":return[r.euclideanNorm(zl("x",e,t,n),zl("axis",e,t,n),zl("keepDims",e,t,n))];case"FusedBatchNorm":case"FusedBatchNormV2":case"FusedBatchNormV3":return[r.batchNorm(zl("x",e,t,n),zl("mean",e,t,n),zl("variance",e,t,n),zl("offset",e,t,n),zl("scale",e,t,n),zl("epsilon",e,t,n))];case"LRN":return[r.localResponseNormalization(zl("x",e,t,n),zl("radius",e,t,n),zl("bias",e,t,n),zl("alpha",e,t,n),zl("beta",e,t,n))];case"Softmax":return[r.softmax(zl("x",e,t,n))];case"LogSoftmax":return[r.logSoftmax(zl("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"ragged":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"RaggedGather":{const{outputNestedSplits:a,outputDenseValues:s}=r.raggedGather(zl("paramsNestedSplits",e,t,n),zl("paramsDenseValues",e,t,n),zl("indices",e,t,n),zl("outputRaggedRank",e,t,n));return a.concat(s)}case"RaggedRange":{const{rtNestedSplits:a,rtDenseValues:s}=r.raggedRange(zl("starts",e,t,n),zl("limits",e,t,n),zl("splits",e,t,n));return[a,s]}case"RaggedTensorToTensor":return[r.raggedTensorToTensor(zl("shape",e,t,n),zl("values",e,t,n),zl("defaultValue",e,t,n),zl("rowPartitionTensors",e,t,n),zl("rowPartitionTypes",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"reduction":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"Max":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.max(zl("x",e,t,n),a,s)]}case"Mean":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.mean(zl("x",e,t,n),a,s)]}case"Min":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.min(zl("x",e,t,n),a,s)]}case"Sum":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.sum(zl("x",e,t,n),a,s)]}case"All":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.all(zl("x",e,t,n),a,s)]}case"Any":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.any(zl("x",e,t,n),a,s)]}case"ArgMax":{const a=zl("axis",e,t,n);return[r.argMax(zl("x",e,t,n),a)]}case"ArgMin":{const a=zl("axis",e,t,n);return[r.argMin(zl("x",e,t,n),a)]}case"Prod":{const a=zl("axis",e,t,n),s=zl("keepDims",e,t,n);return[r.prod(zl("x",e,t,n),a,s)]}case"Cumprod":{const a=zl("axis",e,t,n),s=zl("exclusive",e,t,n),o=zl("reverse",e,t,n);return[r.cumprod(zl("x",e,t,n),a,s,o)]}case"Cumsum":{const a=zl("axis",e,t,n),s=zl("exclusive",e,t,n),o=zl("reverse",e,t,n);return[r.cumsum(zl("x",e,t,n),a,s,o)]}case"Bincount":const a=zl("x",e,t,n),s=zl("weights",e,t,n),o=zl("size",e,t,n);return[r.bincount(a,s,o)];case"DenseBincount":{const a=zl("x",e,t,n),s=zl("weights",e,t,n),o=zl("size",e,t,n),i=zl("binaryOutput",e,t,n);return[r.denseBincount(a,s,o,i)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"slice_join":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"ConcatV2":case"Concat":{const a=zl("n",e,t,n),s=zl("axis",e,t,n);let o=zl("tensors",e,t,n);return o=o.slice(0,a),[r.concat(o,s)]}case"Gather":{const a=zl("x",e,t,n),s=zl("indices",e,t,n);return[r.gather(a,r.cast(s,"int32"),0)]}case"GatherV2":{const a=zl("axis",e,t,n),s=zl("batchDims",e,t,n),o=zl("x",e,t,n),i=zl("indices",e,t,n);return[r.gather(o,r.cast(i,"int32"),a,s)]}case"Reverse":{const a=zl("dims",e,t,n),s=[];for(let e=0;e{const a=zl("axis",e,t,n),s=zl("tensors",e,t,n),o=s[0].shape,i=r.squeeze(s[0]).shape,u=s.map((e=>{const t=Qe(e.shape,o);if(!t&&!Qe(r.squeeze(e).shape,i))throw new Error("the input tensors shape does not match");return t?e:r.reshape(e,o)}));return[r.stack(u,a)]}));case"Unpack":{const a=zl("axis",e,t,n),s=zl("tensor",e,t,n);return r.unstack(s,a)}case"Tile":{const a=zl("reps",e,t,n);return[r.tile(zl("x",e,t,n),a)]}case"Split":case"SplitV":{const a=zl("axis",e,t,n),s=zl("numOrSizeSplits",e,t,n),o=zl("x",e,t,n);return r.split(o,s,a)}case"ScatterNd":{const a=zl("indices",e,t,n),s=zl("values",e,t,n),o=zl("shape",e,t,n);return[r.scatterND(a,s,o)]}case"GatherNd":{const a=zl("x",e,t,n),s=zl("indices",e,t,n);return[r.gatherND(a,s)]}case"SparseToDense":{const a=zl("sparseIndices",e,t,n),s=zl("outputShape",e,t,n),o=zl("sparseValues",e,t,n),i=zl("defaultValue",e,t,n);return[r.sparseToDense(a,o,s,o.dtype===i.dtype?i:r.cast(i,o.dtype))]}case"TensorScatterUpdate":{const a=zl("indices",e,t,n),s=zl("values",e,t,n),o=zl("tensor",e,t,n);return[r.tensorScatterUpdate(o,a,s)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"sparse":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"SparseFillEmptyRows":{const{outputIndices:a,outputValues:s,emptyRowIndicator:o,reverseIndexMap:i}=r.sparse.sparseFillEmptyRows(zl("indices",e,t,n),zl("values",e,t,n),zl("denseShape",e,t,n),zl("defaultValue",e,t,n));return[a,s,o,i]}case"SparseReshape":{const{outputIndices:a,outputShape:s}=r.sparse.sparseReshape(zl("inputIndices",e,t,n),zl("inputShape",e,t,n),zl("newShape",e,t,n));return[a,s]}case"SparseSegmentMean":return[r.sparse.sparseSegmentMean(zl("data",e,t,n),zl("indices",e,t,n),zl("segmentIds",e,t,n))];case"SparseSegmentSum":return[r.sparse.sparseSegmentSum(zl("data",e,t,n),zl("indices",e,t,n),zl("segmentIds",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"spectral":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"FFT":return[r.fft(zl("x",e,t,n))];case"IFFT":return[r.ifft(zl("x",e,t,n))];case"RFFT":return[r.rfft(zl("x",e,t,n))];case"IRFFT":return[r.irfft(zl("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"string":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"StaticRegexReplace":return[r.string.staticRegexReplace(zl("input",e,t,n),zl("pattern",e,t,n),zl("rewrite",e,t,n),zl("replaceGlobal",e,t,n))];case"StringNGrams":{const{nGrams:a,nGramsSplits:s}=r.string.stringNGrams(zl("data",e,t,n),zl("dataSplits",e,t,n),zl("separator",e,t,n),zl("nGramWidths",e,t,n),zl("leftPad",e,t,n),zl("rightPad",e,t,n),zl("padWidth",e,t,n),zl("preserveShortSequences",e,t,n));return[a,s]}case"StringSplit":{const{indices:a,values:s,shape:o}=r.string.stringSplit(zl("input",e,t,n),zl("delimiter",e,t,n),zl("skipEmpty",e,t,n));return[a,s,o]}case"StringToHashBucketFast":return[r.string.stringToHashBucketFast(zl("input",e,t,n),zl("numBuckets",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"transformation":return a((()=>((e,t,n,r=E)=>{switch(e.op){case"Cast":return[r.cast(zl("x",e,t,n),zl("dtype",e,t,n))];case"ExpandDims":{const a=zl("axis",e,t,n);return[r.expandDims(zl("x",e,t,n),a)]}case"Squeeze":{const a=zl("axis",e,t,n);return[r.squeeze(zl("x",e,t,n),a)]}case"Reshape":return[r.reshape(zl("x",e,t,n),zl("shape",e,t,n))];case"EnsureShape":return[r.ensureShape(zl("x",e,t,n),zl("shape",e,t,n))];case"MirrorPad":return[r.mirrorPad(zl("x",e,t,n),zl("padding",e,t,n),zl("mode",e,t,n))];case"PadV2":case"Pad":return[r.pad(zl("x",e,t,n),zl("padding",e,t,n),zl("constantValue",e,t,n))];case"SpaceToBatchND":{const a=zl("blockShape",e,t,n),s=zl("paddings",e,t,n);return[r.spaceToBatchND(zl("x",e,t,n),a,s)]}case"BatchToSpaceND":{const a=zl("blockShape",e,t,n),s=zl("crops",e,t,n);return[r.batchToSpaceND(zl("x",e,t,n),a,s)]}case"DepthToSpace":{const a=zl("blockSize",e,t,n),s=zl("dataFormat",e,t,n).toUpperCase();return[r.depthToSpace(zl("x",e,t,n),a,s)]}case"BroadcastTo":return[r.broadcastTo(zl("x",e,t,n),zl("shape",e,t,n))];case"BroadcastArgs":return[r.broadcastArgs(zl("s0",e,t,n),zl("s1",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n)));case"hash_table":return(async(e,t,n,r)=>{switch(e.op){case"HashTable":case"HashTableV2":{const a=r.getHashTableHandleByName(e.name);if(null!=a)return[a];{const a=zl("keyDType",e,t,n),s=zl("valueDType",e,t,n),o=new Pc(a,s);return r.addHashTable(e.name,o),[o.handle]}}case"InitializeTable":case"InitializeTableV2":case"LookupTableImport":case"LookupTableImportV2":{const a=zl("tableHandle",e,t,n,r),s=zl("keys",e,t,n),o=zl("values",e,t,n),i=r.getHashTableById(a.id);return[await i.import(s,o)]}case"LookupTableFind":case"LookupTableFindV2":{const a=zl("tableHandle",e,t,n,r),s=zl("keys",e,t,n),o=zl("defaultValue",e,t,n),i=r.getHashTableById(a.id);return[await i.find(s,o)]}case"LookupTableSize":case"LookupTableSizeV2":{const a=zl("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}})(e,t,n,r);case"custom":const s=Bl(e.op);if(s&&s.customExecutor)return s.customExecutor(new Mc(e,t,n));throw TypeError(`Custom op ${e.op} is not registered.`);default:throw TypeError(`Unknown op '${e.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return ft(s)?s.then((e=>[].concat(e))):[].concat(s)}class Bc{constructor(e={},t={},n={},r={},a){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.parseNodeNameCache=a,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){const e=[];for(let t=0;t0===e.id&&0===e.iterationId?"":`${e.frameName}-${e.iterationId}`)).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(!(this.contexts&&this.contexts.length>1))throw new Error("Cannot exit frame, the context is empty");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()}nextIteration(){if(!(this.contexts&&this.contexts.length>0))throw new Error("Cannot increase frame iteration, the context is empty");{this.contexts=this.contexts.slice(),this.lastId++;const e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(const t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(const t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}}function zc(e,t,n,r){const a=new Set,s=[];let o=null,i=null;const u=new Set,l=new Set(Object.keys(e).map((e=>Hl(e)[0])));r=r||[];const c=new Set(r.map((e=>Hl(e.name)[0]))),h=[...t];for(;h.length>0;){const e=h.pop();(Hc(e)||Gc(e)||Wc(e))&&null==o&&(o=e,i=o.children.map((e=>e.name)).filter((e=>a.has(e)))),a.add(e.name),null==n[e.name]&&(l.has(e.name)||c.has(e.name)||(0!==e.inputs.length?e.inputs.forEach((e=>{u.has(e.name)||(u.add(e.name),h.push(e))})):s.push(e.name)))}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:o,syncInputs:i}}class Uc extends Error{constructor(e){super(`NodesExecutionOrderError: ${e}`)}}const $c=new Set(["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"]),Vc=new Set(["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"]),jc=new Set(["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"]);function Hc(e){return $c.has(e.op)}function Gc(e){return Vc.has(e.op)}function Wc(e){return jc.has(e.op)}class qc{get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){const t=Object.keys(e).map((t=>e[t].map((e=>e.id))));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map((e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0})))}get outputs(){return this._outputs.map((e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0})))}get inputNodes(){return this._inputs.map((e=>e.signatureKey||e.name))}get outputNodes(){return this._outputs.map((e=>{const t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t}))}get functions(){return Object.keys(this._functions).reduce(((e,t)=>(e[t]=this._functions[t].signature,e)),{})}constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this.parseNodeNameCache=new Map,this._weightMap={},this.SEPARATOR=",",this._functions={},this._functionExecutorMap={},this.keepIntermediateTensors=!1,this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,null!=e.functions&&Object.keys(e.functions).forEach((t=>{this._functionExecutorMap[t]=new qc(e.functions[t],this)}))}getCompilationKey(e,t){const n=e.map((e=>e.name)).sort(),r=t.map((e=>e.name)).sort();return n.join(this.SEPARATOR)+"--"+r.join(this.SEPARATOR)}compile(e,t){const n=zc(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(null!=a)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){const n=t.map((e=>e.name)),a=Object.keys(e);throw new Error(`Cannot compute the outputs [${n}] from the provided inputs [${a}]. Missing the following inputs: [${r}]`)}const o=function(e,t){const{usedNodes:n,inputs:r}=t,a=Object.keys(r).map((e=>Hl(e)[0])).map((t=>e.nodes[t])),s=e.initNodes||[],o=e=>n.has("string"==typeof e?e:e.name);function i(e){return[...new Map(e.map((e=>[e.name,e]))).values()]}const u=i([...a,...e.weights,...s]).filter(o),l=i([...u,...Object.values(e.nodes)]).filter(o),c=new Map(l.map((e=>[e.name,e]))),h={};for(const e of l){h[e.name]=h[e.name]||0;for(const t of e.children)o(t)||(h[t.name]=Number.POSITIVE_INFINITY),h[t.name]=(h[t.name]||0)+1}const p=Object.entries(h).filter((([,e])=>0===e)).map((([e])=>e)),d=[...p];for(;p.length>0;){const e=p.pop(),t=c.get(e);for(const e of t.children.filter(o))0==--h[e.name]&&(d.push(e.name),p.push(e.name))}const f=function(e,t){const n=new Map(e.map((e=>[e.name,e]))),r=t.map((e=>e.name)),a=new Set(r);for(;r.length>0;){const e=r.pop(),t=n.get(e);for(const e of t.children)n.has(e.name)&&!a.has(e.name)&&(a.add(e.name),r.push(e.name))}return e.filter((e=>a.has(e.name)))}(d.map((e=>c.get(e))),u);return function(e,t){const n=new Map(e.map(((e,t)=>[e.name,t]))),r=new Set(t.map((e=>e.name))),a=e=>r.has("string"==typeof e?e:e.name),s=new Set(e.map((e=>e.name))),o=e=>s.has("string"==typeof e?e:e.name);for(const t of e){for(const e of t.children.filter(o)){if(!n.has(e.name))throw new Uc(`Child ${e.name} of node ${t.name} is unreachable.`);if(n.get(t.name)>n.get(e.name))throw new Uc(`Node ${t.name} is scheduled to run after its child ${e.name}.`)}if(!a(t))for(const e of t.inputs){if(!n.has(e.name))throw new Uc(`Input ${e.name} of node ${t.name} is unreachable.`);if(n.get(e.name)>n.get(t.name))throw new Uc(`Node ${t.name} is scheduled to run before its input ${e.name}.`)}}}(f,u),f}(this.graph,n),i=function(e){const t=new Map(e.map(((e,t)=>[e.name,t]))),n=Number.MAX_SAFE_INTEGER,r=e.map(((e,t)=>Hc(e)?n:t)),a=e=>{const n=r[t.get(e.name)];return null==n?-1:n},s=e.map(((e,t)=>e.children.map(a).reduce(((e,t)=>Math.max(e,t)),r[t]))),o=new Map;for(let t=0;tthis.cloneAndKeepTensor(e)));return t}cloneTensorMap(e){return Object.fromEntries(Object.entries(e).map((([e,t])=>[e,this.cloneTensorList(t)])))}execute(e,t){this.disposeIntermediateTensors(),e=this.mapInputs(e);const n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);const r=n.map((e=>this.graph.nodes[Hl(e)[0]])),a=t.map((e=>Hl(e)[0])),s=new Set(a);let o=a.map((e=>this.graph.nodes[e]));0===o.length&&(o=this._outputs);const i=this.getCompilationKey(r,o);let u=this.compiledMap.get(i);null==u&&(u=this.compile(e,o),this.compiledMap.set(i,u));try{this.keepIntermediateTensors=vt().getBool("KEEP_INTERMEDIATE_TENSORS")}catch(e){this.keepIntermediateTensors=!1,console.warn(e.message)}const l={},c={};return jr((()=>{const n=new Bc(this.weightMap,l,c,this.functionExecutorMap,this.parseNodeNameCache),r=Object.assign({},this.weightMap);this.keepIntermediateTensors&&(this.clonedTensorsMap=this.cloneTensorMap(this.weightMap)),Object.keys(e).forEach((t=>{const[a,s]=Hl(t,n),o=[];o[s]=e[t],r[a]=o,this.keepIntermediateTensors&&(this.clonedTensorsMap[a]=this.cloneTensorList(o))}));const a=this.getFrozenTensorIds(r),{orderedNodes:o,nodeLiveUntilMap:i}=u;for(const e of o){if(r[e.name])continue;const t=Fc(e,r,n,this._resourceManager);if(ft(t))throw new Error(`The execution of the op '${e.op}' returned a promise. Please use model.executeAsync() instead.`);r[e.name]=t,this.keepIntermediateTensors&&(this.clonedTensorsMap[e.name]=this.cloneTensorList(t)),this.checkTensorForDisposalWithNodeLiveUntilInfo(e,r,n,a,s,i.get(e.name))}return null==this.parent&&n.dispose(a),t.map((e=>Ul(e,r,n)))}))}getFrozenTensorIds(e){const t=[].concat.apply([],Object.keys(e).map((t=>e[t])).map((e=>e.map((e=>e.id)))));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,o){if(!Hc(t)&&!s.has(e)){for(const r of n[e])null!=r&&(o[r.id]=(o[r.id]||0)+t.children.length);for(const e of t.inputs){if(Hc(e))continue;const t=$l(e.name,n,r);if(null!=t)for(const e of t){if(!e||e.kept||a.has(e.id))continue;const t=o[e.id];1===t?(e.dispose(),delete o[e.id]):null!=t&&o[e.id]--}}}}checkTensorForDisposalWithNodeLiveUntilInfo(e,t,n,r,a,s){function o(e){return Hc(e)||a.has(e.name)}if(!Hc(e)&&null!=s)for(const e of s){if(o(e))continue;const a=$l(e.name,t,n);for(const e of a)!e||e.kept||r.has(e.id)||e.dispose()}}async executeAsync(e,t){return this._executeAsync(e,t)}disposeIntermediateTensors(){this.clonedTensorsMap&&(Object.values(this.clonedTensorsMap).forEach((e=>{for(const t of e)t&&!t.isDisposed&&t.dispose()})),this.clonedTensorsMap=null)}getIntermediateTensors(){return this.clonedTensorsMap}async _executeAsync(e,t,n=!1,r={},a={}){this.disposeIntermediateTensors(),n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));try{this.keepIntermediateTensors=vt().getBool("KEEP_INTERMEDIATE_TENSORS")}catch(e){this.keepIntermediateTensors=!1,console.warn(e.message)}const s=new Bc(this.weightMap,r,a,this.functionExecutorMap,this.parseNodeNameCache);this.keepIntermediateTensors&&(this.clonedTensorsMap=this.cloneTensorMap(this.weightMap));const o=await this.executeWithControlFlow(e,s,t,n),i=t.map((e=>Ul(e,o,s))),u=i.map((e=>e.id)),l=Object.keys(e).map((t=>e[t].id)),c=new Set([...u,...l,...this.weightIds]);return Object.values(o).forEach((e=>{e.forEach((e=>{!e||e.isDisposed||c.has(e.id)||e.dispose()}))})),null==this.parent&&s.dispose(c),i}async executeFunctionAsync(e,t,n){const r=e.reduce(((e,t,n)=>(e[this.inputs[n].name]=t,e)),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){const a=Object.keys(e),s=a.map((e=>this.graph.nodes[Hl(e)[0]])),o=n.map((e=>Hl(e)[0])),i=new Set(o);let u=o.map((e=>this.graph.nodes[e]));0===u.length&&(u=this._outputs);const{usedNodes:l,missingInputs:c,dynamicNode:h,syncInputs:p}=zc(e,u,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map((e=>({node:e,contexts:t.currentContext}))),f=Object.assign({},this.weightMap);Object.keys(e).forEach((t=>{const[n,r]=Hl(t),a=[];a[r]=e[t],f[n]=a}));const m={},g=this.getFrozenTensorIds(f),y={};for(;d.length>0;){const e=this.processStack(s,d,t,f,y,g,i,m,l);await Promise.all(e)}null!=h||r||console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");const v=u.filter((e=>!Hc(e)&&!Ul(e.name,f,t))).map((e=>e.name));if(v.length>0){let e="";throw null!=h&&(e=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${p}]`),new Error(`Cannot compute the outputs [${v}] from the provided inputs [${a}]. Consider providing the following inputs: [${c}]. ${e}`)}return f}processStack(e,t,n,r,a,s,o,i,u){const l=[];for(;t.length>0;){const e=t.pop();n.currentContext=e.contexts;let c="";if("Enter"===e.node.op&&zl("isConstant",e.node,r,n)&&([c]=Vl(e.node.name,n)),null==r[e.node.name]){const h=Fc(e.node,r,n,this._resourceManager);c||([c]=Vl(e.node.name,n));const p=n.currentContext;ft(h)?l.push(h.then((l=>(r[c]=l,this.keepIntermediateTensors&&(this.clonedTensorsMap[c]=this.cloneTensorList(l)),n.currentContext=p,this.checkTensorForDisposal(c,e.node,r,n,s,o,i),this.processChildNodes(e.node,t,n,r,a,u),l)))):(r[c]=h,this.keepIntermediateTensors&&(this.clonedTensorsMap[c]=this.cloneTensorList(h)),this.checkTensorForDisposal(c,e.node,r,n,s,o,i),this.processChildNodes(e.node,t,n,r,a,u))}else this.processChildNodes(e.node,t,n,r,a,u)}return l}processChildNodes(e,t,n,r,a,s){e.children.forEach((e=>{const[o]=Vl(e.name,n);!a[o]&&s.has(e.name)&&("Merge"===e.op?e.inputNames.some((e=>!!Ul(e,r,n)))&&(a[o]=!0,t.push({contexts:n.currentContext,node:e})):e.inputNames.every((e=>!!Ul(e,r,n)))&&(a[o]=!0,t.push({contexts:n.currentContext,node:e})))}))}dispose(){Object.keys(this.weightMap).forEach((e=>this.weightMap[e].forEach((e=>e.dispose()))))}checkInputShapeAndType(e){Object.keys(e).forEach((t=>{const n=e[t],[r]=Hl(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){const e=a.attrParams.shape.value;Xe(e.length===n.shape.length&&n.shape.every(((t,n)=>-1===e[n]||e[n]===t)),(()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${e}], but was [${n.shape}]`))}a.attrParams.dtype&&a.attrParams.dtype.value&&Xe(n.dtype===a.attrParams.dtype.value,(()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`))}))}mapInputs(e){var t,n;const r={};for(const a in e){const s=null===(n=null===(t=this._signature)||void 0===t?void 0:t.inputs)||void 0===n?void 0:n[a];null!=s?r[s.name]=e[a]:r[a]=e[a]}return r}checkInputs(e){const t=Object.keys(e).filter((e=>{const[t]=Hl(e);return null==this.graph.nodes[t]}));if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map((e=>{var t,n;const r=null===(n=null===(t=this._signature)||void 0===t?void 0:t.outputs)||void 0===n?void 0:n[e];return null!=r?r.name:e}),{})}checkOutputs(e){e.forEach((e=>{const[t]=Hl(e);if(!this.graph.nodes[t])throw new Error(`The output '${e}' is not found in the graph`)}))}}class Kc{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(const e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(const e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}}const Xc="?tfjs-format=file",Yc="model.json";class Zc{get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}get modelStructuredOutputKeys(){return this.structuredOutputKeys}constructor(t,n={},r=e){this.modelUrl=t,this.loadOptions=n,this.version="n/a",this.io=r,null==n&&(this.loadOptions={}),this.resourceManager=new Kc}findIOHandler(){const e=this.modelUrl;if(null!=e.load)this.handler=e;else if(null!=this.loadOptions.requestInit)this.handler=this.io.browserHTTPRequest(e,this.loadOptions);else{const t=this.io.getLoadHandlers(e,this.loadOptions);if(0===t.length)t.push(this.io.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}load(){if(this.findIOHandler(),null==this.handler.load)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");const e=this.handler.load();return ft(e)?e.then((e=>this.loadSync(e))):this.loadSync(e)}loadSync(e){this.artifacts=e;const t=this.artifacts.modelTopology;let n=this.artifacts.signature;if(null!=this.artifacts.userDefinedMetadata){const e=this.artifacts.userDefinedMetadata;null!=e.signature&&(n=e.signature),null!=e.structuredOutputKeys&&(this.structuredOutputKeys=e.structuredOutputKeys)}this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;const r=this.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new qc(pc.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,null!=e.modelInitializer&&null!=e.modelInitializer.node){const t=pc.Instance.transformGraph(e.modelInitializer);this.initializer=new qc(t),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializerSignature=e.initializerSignature}return!0}async save(e,t){if("string"==typeof e){const t=this.io.getSaveHandlers(e);if(0===t.length)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(t.length>1)throw new Error(`Found more than one (${t.length}) save handlers for URL '${e}'`);e=t[0]}if(null==e.save)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}addStructuredOutputNames(e){if(this.structuredOutputKeys){const t={};return(e instanceof hn?[e]:e).forEach(((e,n)=>t[this.structuredOutputKeys[n]]=e)),t}return e}predict(e,t){const n=this.execute(e,this.outputNodes);return this.addStructuredOutputNames(n)}async predictAsync(e,t){const n=await this.executeAsync(e,this.outputNodes);return this.addStructuredOutputNames(n)}normalizeInputs(e){var t;if(!(e instanceof hn||Array.isArray(e))){const n=null===(t=this.signature)||void 0===t?void 0:t.inputs;if(null!=n)for(const t in n){const r=n[t];null!=r.resourceId&&(e[t]=this.resourceIdToCapturedInput[r.resourceId])}return e}e=Array.isArray(e)?e:[e];const n=Object.keys(this.resourceIdToCapturedInput).length;if(e.length+n!==this.inputNodes.length)throw new Error(`Input tensor count mismatch, the graph model has ${this.inputNodes.length-n} non-resource placeholders, while there are ${e.length} input tensors provided.`);let r=0;return this.inputNodes.reduce(((t,n)=>{var a,s,o;const i=null===(o=null===(s=null===(a=this.signature)||void 0===a?void 0:a.inputs)||void 0===s?void 0:s[n])||void 0===o?void 0:o.resourceId;return t[n]=null!=i?this.resourceIdToCapturedInput[i]:e[r++],t}),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}executeInitializerGraph(){return null==this.initializer?[]:null==this.initializerSignature?this.initializer.execute({},[]):this.initializer.execute({},Object.keys(this.initializerSignature.outputs))}async executeInitializerGraphAsync(){return null==this.initializer?[]:null==this.initializerSignature?this.initializer.executeAsync({},[]):this.initializer.executeAsync({},Object.keys(this.initializerSignature.outputs))}setResourceIdToCapturedInput(e){if(this.resourceIdToCapturedInput={},this.initializerSignature){const t=this.initializerSignature.outputs,n=Object.keys(t);for(let r=0;r1?n:n[0]}async executeAsync(e,t){null==this.resourceIdToCapturedInput&&this.setResourceIdToCapturedInput(await this.executeInitializerGraphAsync()),e=this.normalizeInputs(e),t=this.normalizeOutputs(t);const n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}getIntermediateTensors(){return this.executor.getIntermediateTensors()}disposeIntermediateTensors(){this.executor.disposeIntermediateTensors()}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce(((t,n)=>(t[n]=[e[n]],t)),{})}dispose(){this.executor.dispose(),this.initializer&&(this.initializer.dispose(),this.resourceIdToCapturedInput&&Hr(this.resourceIdToCapturedInput)),this.resourceManager.dispose()}}async function Jc(t,n={},r=e){if(null==t)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");null==n&&(n={}),n.fromTFHub&&"string"==typeof t&&(t=function(e){return e.endsWith("/")||(e+="/"),`${e}${Yc}${Xc}`}(t));const a=new Zc(t,n,r);return await a.load(),a}var Qc=function(){return Qc=Object.assign||function(e){for(var t,n=1,r=arguments.length;n0&&a[a.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!a||i[1]>a[0]&&i[1]0?a/s:0}function lh(e){return e instanceof hn?{height:e.shape[0],width:e.shape[1]}:{height:e.height,width:e.width}}function ch(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function hh(e){return e instanceof hn?e:za(e)}function ph(e,t){Xe(0!==e.width,(function(){return t+" width cannot be 0."})),Xe(0!==e.height,(function(){return t+" height cannot be 0."}))}function dh(e,t,n){var r=t.outputTensorSize,a=t.keepAspectRatio,s=t.borderMode,o=t.outputTensorFloatRange,i=lh(e),u=function(e,t){return t?{xCenter:t.xCenter*e.width,yCenter:t.yCenter*e.height,width:t.width*e.width,height:t.height*e.height,rotation:t.rotation}:{xCenter:.5*e.width,yCenter:.5*e.height,width:e.width,height:e.height,rotation:0}}(i,n),l=function(e,t,n){if(void 0===n&&(n=!1),!n)return{top:0,left:0,right:0,bottom:0};var r=t.height,a=t.width;ph(t,"targetSize"),ph(e,"roi");var s,o,i=r/a,u=e.height/e.width,l=0,c=0;return i>u?(s=e.width,o=e.width*i,c=(1-u/i)/2):(s=e.height/i,o=e.height,l=(1-i/u)/2),e.width=s,e.height=o,{top:c,left:l,right:l,bottom:c}}(u,r,a),c=function(e,t,n,r){var a=e.width,s=e.height,o=Math.cos(e.rotation),i=Math.sin(e.rotation),u=e.xCenter,l=e.yCenter,c=1/t,h=1/n,p=new Array(16);return p[0]=a*o*1*c,p[1]=-s*i*c,p[2]=0,p[3]=(-.5*a*o*1+.5*s*i+u)*c,p[4]=a*i*1*h,p[5]=s*o*h,p[6]=0,p[7]=(-.5*s*o-.5*a*i*1+l)*h,p[8]=0,p[9]=0,p[10]=a*c,p[11]=0,p[12]=0,p[13]=0,p[14]=0,p[15]=1,function(e){if(16!==e.length)throw new Error("Array length must be 16 but got "+e.length);return[[e[0],e[1],e[2],e[3]],[e[4],e[5],e[6],e[7]],[e[8],e[9],e[10],e[11]],[e[12],e[13],e[14],e[15]]]}(p)}(u,i.width,i.height),h=jr((function(){var t=hh(e),n=ou(function(e,t,n){return ph(n,"inputResolution"),[1/n.width*e[0][0]*t.width,1/n.height*e[0][1]*t.width,e[0][3]*t.width,1/n.width*e[1][0]*t.height,1/n.height*e[1][1]*t.height,e[1][3]*t.height,0,0]}(c,i,r),[1,8]),a="zero"===s?"constant":"nearest",u=Il.transform(uo(Ur(t,"float32")),n,"bilinear",a,0,[r.height,r.width]);return null!=o?function(e,t){var n=function(e,t,n,r){var a=(r-n)/255;return{scale:a,offset:n-0*a}}(0,0,t[0],t[1]);return jr((function(){return Wr(Xr(e,n.scale),n.offset)}))}(u,o):u}));return{imageTensor:h,padding:l,transformationMatrix:c}}function fh(e,t,n,r){return 1===r?.5*(e+t):e+(t-e)*n/(r-1)}function mh(e){return{xCenter:e.xMin+e.width/2,yCenter:e.yMin+e.height/2,width:e.width,height:e.height}}function gh(e,t,n,r){return eh(this,void 0,void 0,(function(){var r,a,s,o,i;return th(this,(function(u){switch(u.label){case 0:return e.sort((function(e,t){return Math.max.apply(Math,t.score)-Math.max.apply(Math,e.score)})),r=ou(e.map((function(e){return[e.locationData.relativeBoundingBox.yMin,e.locationData.relativeBoundingBox.xMin,e.locationData.relativeBoundingBox.yMax,e.locationData.relativeBoundingBox.xMax]}))),a=su(e.map((function(e){return e.score[0]}))),[4,Il.nonMaxSuppressionAsync(r,a,t,n)];case 1:return[4,(s=u.sent()).array()];case 2:return o=u.sent(),i=e.filter((function(e,t){return o.indexOf(t)>-1})),Hr([r,a,s]),[2,i]}}))}))}function yh(e,t){return e.map((function(e){var n=Qc(Qc({},e),{x:e.x*t.width,y:e.y*t.height});return null!=e.z&&(n.z=e.z*t.width),n}))}function vh(e,t,n){return eh(this,void 0,void 0,(function(){var r,a,s,o,i;return th(this,(function(u){switch(u.label){case 0:return r=e[0],a=e[1],s=function(e,t,n){return jr((function(){var r,a,s,o;n.reverseOutputOrder?(a=eu(ps(e,[0,n.boxCoordOffset+0],[-1,1])),r=eu(ps(e,[0,n.boxCoordOffset+1],[-1,1])),o=eu(ps(e,[0,n.boxCoordOffset+2],[-1,1])),s=eu(ps(e,[0,n.boxCoordOffset+3],[-1,1]))):(r=eu(ps(e,[0,n.boxCoordOffset+0],[-1,1])),a=eu(ps(e,[0,n.boxCoordOffset+1],[-1,1])),s=eu(ps(e,[0,n.boxCoordOffset+2],[-1,1])),o=eu(ps(e,[0,n.boxCoordOffset+3],[-1,1]))),a=Wr(Xr(Kr(a,n.xScale),t.w),t.x),r=Wr(Xr(Kr(r,n.yScale),t.h),t.y),n.applyExponentialOnBoxSize?(s=Xr(io(Kr(s,n.hScale)),t.h),o=Xr(io(Kr(o,n.wScale)),t.w)):(s=Xr(Kr(s,n.hScale),t.h),o=Xr(Kr(o,n.wScale),t.h));var i=la(r,Kr(s,2)),u=la(a,Kr(o,2)),l=Wr(r,Kr(s,2)),c=Wr(a,Kr(o,2)),h=ls([os(i,[n.numBoxes,1]),os(u,[n.numBoxes,1]),os(l,[n.numBoxes,1]),os(c,[n.numBoxes,1])],1);if(n.numKeypoints)for(var p=0;p0)for((c=u.locationData).relativeKeypoints=[],h=n.numKeypoints*n.numValuesPerKeypoint,p=0;p1&&(h.y=r?t.inputImageHeight-o[l+1]:o[l+1]),s>2&&(h.z=o[l+2]),s>3&&(h.score=_h(t.visibilityActivation,o[l+3])),i.push(h);for(c=0;c0){var c=i===e.strides.length-1?1:fh(e.minScale,e.maxScale,i+1,e.strides.length);o.push(Math.sqrt(u*c)),s.push(e.interpolatedScaleAspectRatio)}}i++}for(var h=0;h0)d=e.featureMapHeight[n],f=e.featureMapWidth[n];else{var m=e.strides[n];d=Math.ceil(e.inputSizeHeight/m),f=Math.ceil(e.inputSizeWidth/m)}for(var g=0;g=.5?"Left":"Right",[4,Eh(o,Oh)];case 3:return d=v.sent(),[4,Eh(l,Dh)];case 4:return f=v.sent(),m=function(e,t){var n=t.left,r=t.top,a=t.left+t.right,s=t.top+t.bottom;return e.map((function(e){return Qc(Qc({},e),{x:(e.x-n)/(1-a),y:(e.y-r)/(1-s),z:e.z/(1-a)})}))}(d,a),g=function(e,t,n){void 0===n&&(n={ignoreRotation:!1});for(var r=[],a=0,s=e;a-1,r=t.landmarkModelUrl.indexOf("https://tfhub.dev")>-1,[4,Promise.all([Jc(t.detectorModelUrl,{fromTFHub:n}),Jc(t.landmarkModelUrl,{fromTFHub:r})])];case 1:return a=i.sent(),s=a[0],o=a[1],[2,new Lh(s,o,t.maxHands)]}}))}))}(wh||(wh={})).MediaPipeHands="MediaPipeHands";const Fh=[["wrist","thumb_cmc"],["thumb_cmc","thumb_mcp"],["thumb_mcp","thumb_ip"],["thumb_ip","thumb_tip"],["wrist","index_finger_mcp"],["index_finger_mcp","index_finger_pip"],["index_finger_pip","index_finger_dip"],["index_finger_dip","index_finger_tip"],["wrist","middle_finger_mcp"],["middle_finger_mcp","middle_finger_pip"],["middle_finger_pip","middle_finger_dip"],["middle_finger_dip","middle_finger_tip"],["wrist","ring_finger_mcp"],["ring_finger_mcp","ring_finger_pip"],["ring_finger_pip","ring_finger_dip"],["ring_finger_dip","ring_finger_tip"],["wrist","pinky_finger_mcp"],["pinky_finger_mcp","pinky_finger_pip"],["pinky_finger_pip","pinky_finger_dip"],["pinky_finger_dip","pinky_finger_tip"]],Bh="ON_VIDEO_READY";class zh extends(w()){constructor(e=360,t=270,n=1){super(),this.width=e,this.height=t,this.displayScale=n,this.opacity=new xe(.2,.05),this.initHandDetection(),this.decivesList=[],navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices?navigator.mediaDevices.enumerateDevices().then((e=>{this.devices=e.filter((e=>"videoinput"===e.kind)),this.deviceNames=this.devices.map((e=>e.label)),this.deviceIds=this.devices.map((e=>e.deviceId))})).catch((e=>{console.log(`${e.name}: ${e.message}`)})):console.log("enumerateDevices() not supported.")}async initHandDetection(){const e=wh.MediaPipeHands;this.detector=await function(e,t){return eh(this,void 0,void 0,(function(){var n,r;return th(this,(function(a){if(e===wh.MediaPipeHands){if(r=void 0,null!=(n=t)){if("tfjs"===n.runtime)return[2,Ph(n)];if("mediapipe"===n.runtime)return[2,sh(n)];r=n.runtime}throw new Error("Expect modelConfig.runtime to be either 'tfjs' or 'mediapipe', but got "+r)}throw new Error(e+" is not a supported model name.")}))}))}(e,{runtime:"mediapipe",solutionPath:"https://cdn.jsdelivr.net/npm/@mediapipe/hands",modelType:"full"}),this.setupCamera()}async setupCamera(){if(!navigator.mediaDevices||!navigator.mediaDevices.getUserMedia)throw new Error("Browser API navigator.mediaDevices.getUserMedia not available");if(this.video=document.getElementById("video"),!this.video)return void console.error("Video not exist with id : video");const e={audio:!1,video:{facingMode:"user",width:this.width,height:this.height,frameRate:{ideal:60}}},t=await navigator.mediaDevices.getUserMedia(e);this.video.srcObject=t,await new Promise((e=>{this.video.onloadedmetadata=()=>{e(this.video)}})),this.video.play();const n=this.video.videoWidth,r=this.video.videoHeight;this.video.width=n,this.video.height=r,this.canvas=document.createElement("canvas"),this.canvas.width=n,this.canvas.height=r,this.ctx=this.canvas.getContext("2d"),document.body.appendChild(this.canvas),this.video.style.cssText="\n transform: scaleX(-1);\n width: auto;\n height: auto;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 8;\n ",this.canvas.style.cssText="\n transform: scaleX(-1);\n position: absolute;\n bottom: 0;\n left: 0;\n z-index: 9;\n ",this.emit(Bh,{video:this.video,canvas:this.canvas}),this.getHands()}async renderResult(){const{width:e,height:t,ctx:n}=this;n.clearRect(0,0,e,t),this.video.readyState<2&&await new Promise((e=>{this.video.onloadeddata=()=>{e(video)}}));let r=null;const{detector:a}=this;if(null!=a)try{r=await a.estimateHands(this.video,{flipHorizontal:!1})}catch(e){a.dispose(),a=null,alert(e)}n.fillStyle=`rgba(0, 0, 0, ${this.opacity.value})`,n.fillRect(0,0,e,t),r&&r.length>0?(this.opacity.value=.5,n.fillStyle="rgb(255, 114, 0)",r.forEach((({keypoints:e})=>{e.forEach((({x:e,y:t})=>{n.beginPath(),n.arc(e,t,2,0,2*Math.PI),n.fill()})),Fh.forEach((([t,n])=>{const r=e.find((e=>e.name===t)),a=e.find((e=>e.name===n));this.ctx.strokeStyle="rgba(255, 255, 255, .5)",this.ctx.lineWidth=2,this.ctx.beginPath(),this.ctx.moveTo(r.x,r.y),this.ctx.lineTo(a.x,a.y),this.ctx.stroke()}))})),this.emit("ON_HANDS_DETECTED",r)):(this.opacity.value=.2,this.emit("ON_HANDS_LOST"))}async getHands(){await this.renderResult(),requestAnimationFrame((()=>this.getHands()))}async changeDevice(e){const t={audio:!1,video:{facingMode:"user",width:this.width,height:this.height,frameRate:{ideal:60},deviceId:e}},n=await navigator.mediaDevices.getUserMedia(t);this.video.srcObject=n,await new Promise((e=>{this.video.onloadedmetadata=()=>{e(this.video)}})),this.video.play()}set displayScale(e){if(!this.video||!this.canvas)return void setTimeout((()=>{this.displayScale=e}),1e3/60);const{width:t,height:n}=this;this.video.style.width=t*e+"px",this.video.style.height=n*e+"px",this.canvas.style.width=t*e+"px",this.canvas.style.height=n*e+"px"}get deviceId(){return this.video&&this.video.srcObject?this.video.srcObject.getVideoTracks()[0].getSettings().deviceId:null}get deviceName(){const e=this.deviceId;return null===e?null:this.deviceNames[this.deviceIds.indexOf(e)]}}var Uh=a(333),$h=a.n(Uh),Vh=a(287),jh=a.n(Vh),Hh=a(110),Gh=a.n(Hh),Wh=a(639),qh=a.n(Wh),Kh=a(546),Xh=a.n(Kh),Yh=a(389),Zh=a.n(Yh),Jh=a(841),Qh=a.n(Jh);const ep=a(447),tp=class extends Ne{constructor(){super(),this.orbitalControl.radius.value=10,this.orbitalControl.radius.limit(8,11),this.orbitalControl.rx.limit(.2,-1),this.orbitalControl.ry.limit(-1.5,1.5);const{numParticles:e,numSets:t}=Me.default;this._fboPos.bind();for(let n=0;n{};_onHandsDetected=e=>{const{width:t,height:n}=this._handDetection;e.forEach((e=>{const{keypoints:r,handedness:a,score:s}=e;if(s>.8){const e=this[`_hand${a}`],s=this[`_hand${a}Prev`],o=r.find((e=>"wrist"===e.name)),i=1-o.x/t,u=1-o.y/n;if(e[0]>900)e[0]=i,e[1]=u,s[0]=i,s[1]=u;else{Ie.copy(s,e),e[0]=i,e[1]=u;const t=Ie.sub([],e,s);let n=Ie.distance(e,s);n<.05&&(n=(0,Se.CW)(0,.02,n),n=Math.pow(n,1.5),this._fluid.updateFlow(e,t,6*n,2,1))}}}))};_onHandsLost=()=>{this._handLeft=[999,999],this._handLeftPrev=[999,999],this._handRight=[999,999],this._handRightPrev=[999,999]};_init(){this.resize(),this.camera.setPerspective(80*Se.Ag,U.aspectRatio,2,20),this._index=0,this._hit=[999,999,999],this._preHit=[999,999,999];const e=se(16,16,1),t=new Te(e,this.camera);t.on("onHit",(e=>{999===this._preHit[0]?ee.copy(this._preHit,e.hit):ee.copy(this._preHit,this._hit),ee.copy(this._hit,e.hit);let t=this._hit[0]/8*.5+.5,n=this._hit[1]/8*.5+.5;const r=ee.sub([],this._hit,this._preHit),a=[r[0],r[1]],s=Ie.length(a);let o=(0,Se.CW)(0,.3,s);Ie.normalize(a,a);let i=(0,Se.CD)(1,3,o)*Me.default.extreme?1:2;this._fluid.updateFlow([t,n],a,.2*o,i,1)})),t.on("onUp",(e=>{this._hit=[999,999,999],this._preHit=[999,999,999]})),this._seedTime=(0,Se.MX)(1e3),this._lightPosition=[0,10,.1],ee.rotateX(this._lightPosition,this._lightPosition,[0,0,0],.3),this._cameraLight=new ne,this._cameraLight.ortho(-15,15,15,-15,2,20),this._cameraLight.lookAt(this._lightPosition,[0,0,0]),this.mtxShadow=P.create(),P.mul(this.mtxShadow,this._cameraLight.projection,this._cameraLight.view),P.mul(this.mtxShadow,Se.jE,this.mtxShadow)}_initTextures(){this._texturePaper=function(){const e=new Q(2048,2048);return(new re).setMesh(oe()).useProgram(le,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\n\nuniform float uSeed;\nuniform float uRatio;\n\nfloat diffuse(vec3 n, vec3 l) {\n float d = dot(normalize(n), normalize(l));\n return max(d, 0.0);\n}\n\nfloat diffuse(vec3 n, vec3 l, float t) {\n float d = dot(normalize(n), normalize(l));\n return mix(1.0, max(d, 0.0), t);\n}\n\n// snoise.glsl\nvec4 permute(vec4 x) { return mod(((x*34.0)+1.0)*x, 289.0); }\nvec4 taylorInvSqrt(vec4 r) { return 1.79284291400159 - 0.85373472095314 * r; }\n\nfloat snoise(vec3 v){\n const vec2 C = vec2(1.0/6.0, 1.0/3.0) ;\n const vec4 D = vec4(0.0, 0.5, 1.0, 2.0);\n \n vec3 i = floor(v + dot(v, C.yyy) );\n vec3 x0 = v - i + dot(i, C.xxx) ;\n \n vec3 g = step(x0.yzx, x0.xyz);\n vec3 l = 1.0 - g;\n vec3 i1 = min( g.xyz, l.zxy );\n vec3 i2 = max( g.xyz, l.zxy );\n \n vec3 x1 = x0 - i1 + 1.0 * C.xxx;\n vec3 x2 = x0 - i2 + 2.0 * C.xxx;\n vec3 x3 = x0 - 1. + 3.0 * C.xxx;\n \n i = mod(i, 289.0 );\n vec4 p = permute( permute( permute( i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + i.x + vec4(0.0, i1.x, i2.x, 1.0 ));\n \n float n_ = 1.0/7.0;\n vec3 ns = n_ * D.wyz - D.xzx;\n \n vec4 j = p - 49.0 * floor(p * ns.z *ns.z);\n \n vec4 x_ = floor(j * ns.z);\n vec4 y_ = floor(j - 7.0 * x_ );\n \n vec4 x = x_ *ns.x + ns.yyyy;\n vec4 y = y_ *ns.x + ns.yyyy;\n vec4 h = 1.0 - abs(x) - abs(y);\n \n vec4 b0 = vec4( x.xy, y.xy );\n vec4 b1 = vec4( x.zw, y.zw );\n \n vec4 s0 = floor(b0)*2.0 + 1.0;\n vec4 s1 = floor(b1)*2.0 + 1.0;\n vec4 sh = -step(h, vec4(0.0));\n \n vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ;\n vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ;\n \n vec3 p0 = vec3(a0.xy,h.x);\n vec3 p1 = vec3(a0.zw,h.y);\n vec3 p2 = vec3(a1.xy,h.z);\n vec3 p3 = vec3(a1.zw,h.w);\n \n vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3)));\n p0 *= norm.x;\n p1 *= norm.y;\n p2 *= norm.z;\n p3 *= norm.w;\n \n vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);\n m = m * m;\n return 42.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) );\n}\n\nfloat snoise(float x, float y, float z){\n return snoise(vec3(x, y, z));\n}\n\n#define NUM_OCTAVES 5\n\nfloat mod289(float x){return x - floor(x * (1.0 / 289.0)) * 289.0;}\nvec4 mod289(vec4 x){return x - floor(x * (1.0 / 289.0)) * 289.0;}\nvec4 perm(vec4 x){return mod289(((x * 34.0) + 1.0) * x);}\n\nfloat noise(vec3 p){\n vec3 a = floor(p);\n vec3 d = p - a;\n d = d * d * (3.0 - 2.0 * d);\n\n vec4 b = a.xxyy + vec4(0.0, 1.0, 0.0, 1.0);\n vec4 k1 = perm(b.xyxy);\n vec4 k2 = perm(k1.xyxy + b.zzww);\n\n vec4 c = k2 + a.zzzz;\n vec4 k3 = perm(c);\n vec4 k4 = perm(c + 1.0);\n\n vec4 o1 = fract(k3 * (1.0 / 41.0));\n vec4 o2 = fract(k4 * (1.0 / 41.0));\n\n vec4 o3 = o2 * d.z + o1 * (1.0 - d.z);\n vec2 o4 = o3.yw * d.x + o3.xz * (1.0 - d.x);\n\n return o4.y * d.y + o4.x * (1.0 - d.y);\n}\n\nfloat fbm(vec3 x) {\n\tfloat v = 0.0;\n\tfloat a = 0.5;\n\tvec3 shift = vec3(100);\n\tfor (int i = 0; i < NUM_OCTAVES; ++i) {\n\t\tv += a * noise(x);\n\t\tx = x * 2.0 + shift;\n\t\ta *= 0.5;\n\t}\n\treturn v;\n}\n\nout vec4 oColor;\n\nfloat getHeight(vec2 uv) {\n float hScale = 2.0;\n vec3 posNoise = vec3(uv, uSeed);\n\n float t = 1.0;\n float base = smoothstep(-t, t, snoise(posNoise.xzy));\n\n float noiseScale = 4.0;\n t = 0.2;\n\n float nBase = smoothstep(t, 1.0-t, fbm(posNoise * noiseScale * mix(1.0, 1.2, base))) * hScale;\n noiseScale = noiseScale * 12.0;\n float nTop = smoothstep(t, 1.0-t, fbm(posNoise * noiseScale * mix(1.0, 1.2, base))) * hScale;\n return mix(nBase, nTop, 0.2);\n}\n\nvoid main(void) {\n vec2 uv = vTextureCoord;\n uv.y /= uRatio;\n\n vec3 offset = vec3(-1.0, 0.0, 1.0) * 0.001;\n \n\n float s11 = getHeight(uv);\n float s01 = getHeight(uv + offset.xy);\n float s21 = getHeight(uv + offset.zy);\n float s10 = getHeight(uv + offset.yx);\n float s12 = getHeight(uv + offset.yz);\n\n vec2 size = vec2(2.0,0.0);\n\n vec3 va = normalize(vec3(size.xy,s21-s01));\n vec3 vb = normalize(vec3(size.yx,s12-s10));\n // vec3 n = normalize(cross(va,vb) + fbm(vec3(uv, uSeed) * 100.0) * 0.1);\n vec3 n = normalize(cross(va,vb));\n\n vec3 light = vec3(0.3, 0.3, 1.0);\n float d = diffuse(n, light);\n d = mix(d, 1.0, .25);\n \n oColor = vec4(vec3(d), 1.0);\n // gl_FragColor = vec4(n, 1.0);\n}").setClearColor(1,1,1,1).bindFrameBuffer(e).uniform("uSeed",(0,Se.MX)()).uniform("uRatio",1).draw(),e.texture}(),this._textureLookup=Re.get("lookup"),this._textureLookup.minFilter=U.NEAREST,this._textureLookup.magFilter=U.NEAREST;const{numParticles:e,numSets:t}=Me.default,n={minFilter:U.NEAREST,magFilter:U.NEAREST,type:U.FLOAT};this._fbo=new ye(e,e,n,4),this._textureNoise=(Ve||(Ve=new Q(U.width,U.height,{wrapS:U.MIRRORED_REPEAT,wrapT:U.MIRRORED_REPEAT}),je=(0,Se.MX)(1e3),$e=(new re).setMesh(oe()).useProgram(le,"#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 vTextureCoord;\nout vec4 outColor;\n\nuniform vec2 uResolution;\nuniform float uTime;\n\nuint Rand(uint x) {\n x ^= x >> 16;\n x *= 0x7feb352dU;\n x ^= x >> 15;\n x *= 0x846ca68bU;\n x ^= x >> 16;\n return x;\n}\n\nuint HilbertIndex(uvec2 p) {\n uint i = 0u;\n for(uint l = 0x4000u; l > 0u; l >>= 1u) {\n uvec2 r = min(p & l, 1u);\n \n i = (i << 2u) | ((r.x * 3u) ^ r.y); \n p = r.y == 0u ? (0x7FFFu * r.x) ^ p.yx : p;\n }\n return i;\n}\n\nuint ReverseBits(uint x) {\n x = ((x & 0xaaaaaaaau) >> 1) | ((x & 0x55555555u) << 1);\n x = ((x & 0xccccccccu) >> 2) | ((x & 0x33333333u) << 2);\n x = ((x & 0xf0f0f0f0u) >> 4) | ((x & 0x0f0f0f0fu) << 4);\n x = ((x & 0xff00ff00u) >> 8) | ((x & 0x00ff00ffu) << 8);\n return (x >> 16) | (x << 16);\n}\n\n// from: https://psychopath.io/post/2021_01_30_building_a_better_lk_hash\nuint OwenHash(uint x, uint seed) { // seed is any random number\n x ^= x * 0x3d20adeau;\n x += seed;\n x *= (seed >> 16) | 1u;\n x ^= x * 0x05526c56u;\n x ^= x * 0x53a22864u;\n return x;\n}\n\n// adapted from: https://www.shadertoy.com/view/MslGR8\nfloat ReshapeUniformToTriangle(float v) {\n v = v * 2.0 - 1.0;\n v = sign(v) * (1.0 - sqrt(max(0.0, 1.0 - abs(v)))); // [-1, 1], max prevents NaNs\n return v + 0.5; // [-0.5, 1.5]\n}\n\nvoid main() {\n float scale = 10.0;\n uint m = HilbertIndex(uvec2(uResolution * vTextureCoord * scale)); // map pixel coords to hilbert curve index\n m = OwenHash(ReverseBits(m), 0xe7843fbfu); // owen-scramble hilbert index\n m = OwenHash(ReverseBits(m), 0x8d8fb1e0u); // map hilbert index to sobol sequence and owen-scramble\n float mask = float(ReverseBits(m)) / 4294967296.0; // convert to float\n\n outColor = vec4(vec3(mask), 1.0);\n}\n").setClearColor(0,0,0,1).bindFrameBuffer(Ve).uniform("uTime",je).uniform("uResolution",[U.width,U.height])),$e.draw(),je+=.01,Ve.texture);let r=e*t;this._fboPos=new Q(r,r,n),this._fboScrambled=new Q(r,r,n),this._fboRender=new Q(U.width,U.height),r=2048,this._fboShadow=new Q(r,r,{minFilter:U.LINEAR,magFilter:U.LINEAR}),r=1024,this._fboFlow=new ye(r,r,{type:U.FLOAT,minFilter:U.LINEAR,magFilter:U.LINEAR}),this._fboFlow.read.bind(),U.clear(0,0,0,1),this._fboFlow.read.unbind()}_initViews(){this._dAxis=new ae,this._dCopy=new he,this._dBall=new ce,this._dCamera=new me,this._drawBg=new ke,this._drawFloor=new Le,this._drawCompose=new Pe,(new Ce).bindFrameBuffer(this._fbo.read).draw(),this._drawSim=new Oe,this._drawRibbon=new De,this._drawScramble=(new Fe).bindFrameBuffer(this._fboScrambled),this._drawFlowUpdate=new Be}_initPoseDetection(){}update(){this._fluid.update(),this._updateFlow(),this._drawSim.bindFrameBuffer(this._fbo.write).bindTexture("uPosMap",this._fbo.read.getTexture(0),0).bindTexture("uVelMap",this._fbo.read.getTexture(1),1).bindTexture("uExtraMap",this._fbo.read.getTexture(2),2).bindTexture("uDataMap",this._fbo.read.getTexture(3),3).uniform("uTime",ve.Z.getElapsedTime()+this._seedTime).uniform("uSpeed",1).uniform("uTouch",[999,999,999]).uniform("uNoiseScale",1).uniform("uCenter",[0,.5,0]).draw(),this._fbo.swap();const{numParticles:e,numSets:t}=Me.default,n=parseInt(t),r=this._index%n,a=Math.floor(this._index/n);this._index++,this._index>=n*n&&(this._index=0),U.disable(U.DEPTH_TEST),this._fboPos.bind(),U.viewport(r*e,a*e,e,e),this._dCopy.draw(this._fbo.read.getTexture(0)),this._fboPos.unbind(),this._drawScramble.bindFrameBuffer(this._fboScrambled).bindTexture("uPosMap",this._fboPos.texture,0).bindTexture("uFluidMap",this._fluid.velocity,1).bindTexture("uDensityMap",this._fluid.density,2).uniform("uTime",ve.Z.getElapsedTime()+this._seedTime).uniform("uBound",8).uniform("uStrength",Me.default.extreme?10:1).draw(),this._fboPos.bind(),U.clear(0,0,0,0),this._dCopy.draw(this._fboScrambled.texture),this._fboPos.unbind(),U.enable(U.DEPTH_TEST),this._updateShadowMap(),U.setMatrices(this.camera),this._fboRender.bind(),U.clear(0,0,0,0),this._drawBg.bindTexture("uMap",this._texturePaper,0).draw(),this._drawFloor.bindTexture("uDepthMap",this._fboShadow.depthTexture,0).uniform("uShadowMatrix",this.mtxShadow).draw();const s=.02;this._dBall.draw(this._hit,[s,s,s],[.6,.05,0]),this._renderRibbon(!0),this._fboRender.unbind(),this._textureAO=function(e){if(!Ue){const t=1;Ue=new Q(e.width,e.height),ze=(new re).setMesh(oe()).useProgram(le,"#version 300 es\nprecision highp float;\n#define GLSLIFY 1\n\nin vec2 vTextureCoord;\nout vec4 oColor;\n\nuniform sampler2D uDepthMap;\nuniform vec2 uScreenSize;\nuniform float uRadius;\n\n#define uNear 6.0\n#define uFar 15.0\n\nconst float PI = 3.141592657;\n\nconst int samples = 8; //samples on the first ring (4-8)\nconst int rings = 4; //ring count (3-6)\n\nvec2 rand(in vec2 coord) //generating random noise\n{\n\tfloat noiseX = (fract(sin(dot(coord ,vec2(12.9898,78.233))) * 43758.5453));\n\tfloat noiseY = (fract(sin(dot(coord ,vec2(12.9898,78.233)*2.0)) * 43758.5453));\n\treturn vec2(noiseX,noiseY) * 0.001;\n}\n\nfloat readDepth(in vec2 coord)\n{\n\treturn (2.0 * uNear) / (uFar + uNear - texture(uDepthMap, coord ).x * (uFar-uNear)); \n}\n\nfloat compareDepths(in float depth1, in float depth2)\n{\n float aoCap = 1.0;\n float aoMultiplier = 50.0;\n float depthTolerance = 0.000;\n float aorange = 50.0; // units in space the AO effect extends to (this gets divided by the camera far range)\n float maxDepthDifference = 0.05; // Threshold for depth difference\n\n // Calculate depth difference\n float depthDifference = abs(depth1 - depth2);\n\n // Check if the depth difference exceeds the threshold\n // if (depthDifference > maxDepthDifference) {\n // return 0.0; // No AO if the difference is too large\n // }\n\n // Existing depth comparison logic\n float diff = sqrt(clamp(1.0 - (depth1 - depth2) / (aorange / (uFar - uNear)), 0.0, 1.0));\n float ao = min(aoCap, max(0.0, depth1 - depth2 - depthTolerance) * aoMultiplier) * diff;\n\n ao *= smoothstep(maxDepthDifference, maxDepthDifference * 0.5, depthDifference);\n\n return ao;\n}\n\nfloat checkSurroundingDepth(in vec2 coord, float baseDepth, float threshold) {\n float count = 0.0;\n float total = 0.0;\n float range = 0.02; // Range of pixels to check around the current pixel\n\n for (float x = -range; x <= range; x += 0.05) {\n for (float y = -range; y <= range; y += 0.05) {\n float depth = readDepth(coord + vec2(x, y));\n if (abs(depth - baseDepth) > threshold) {\n count += 1.0;\n }\n total += 1.0;\n }\n }\n\n // Return the ratio of nearby different-depth pixels to the total checked pixels\n return count / total;\n}\n\nfloat ssao() {\n float scale = uRadius;\n float textureWidth = uScreenSize.x * scale;\n float textureHeight = uScreenSize.y * scale;\n\n\tfloat depth = readDepth(vTextureCoord);\n\tfloat d;\n\tfloat aspect = textureWidth/textureHeight;\n\tvec2 noise = rand(vTextureCoord * 10.0);\n\n\tfloat w = (1.0 / textureWidth)/clamp(depth,0.05,1.0)+(noise.x*(1.0-noise.x));\n float h = (1.0 / textureHeight)/clamp(depth,0.05,1.0)+(noise.y*(1.0-noise.y));\n \n float pw = 0.0;\n float ph = 0.0;\n\n float ao = 0.0; \n float s = 0.0;\n float fade = 4.0;\n float t = 1.0;\n\n for (int i = 0 ; i < rings; i += 1) {\n \tfade *= 0.25;\n for (int j = 0 ; j < samples*rings; j += 1) {\n \tif (j >= samples*i) break;\n float step = PI*2.0 / (float(samples)*float(i));\n pw = (cos(float(j)*step)*float(i)) * t;\n ph = (sin(float(j)*step)*float(i))*aspect * t;\n d = readDepth( vec2(vTextureCoord.s+pw*w,vTextureCoord.t+ph*h));\n ao += compareDepths(depth,d)*fade; \n s += 1.0*fade;\n }\n }\n\n ao /= s;\n ao = 1.0 - ao;\n float offset = .5;\n ao = offset + (1.0 - offset) * ao;\n ao = pow(ao, 2.0);\n\n\treturn ao;\n}\n\nvoid main() {\n float ao = ssao();\n oColor = vec4(ao, ao, ao, 1.0);\n}\n").setClearColor(0,0,0,1).bindFrameBuffer(Ue).uniform("uScreenSize",[e.width*t,e.height*t]).uniform("uRadius",.15)}return ze.bindTexture("uDepthMap",e,0).draw(),Ue.texture}(this._fboRender.depthTexture),this._textureBlurredRender=function(e){const{width:t,height:n}=U;if(!He){const e=1;He=new ye(t*e,n*e,{minFilter:U.LINEAR,magFilter:U.LINEAR}),Ge=(new re).setMesh(oe()).useProgram(le,"#version 300 es\n\nprecision highp float;\n#define GLSLIFY 1\nin vec2 vTextureCoord;\nuniform sampler2D uMap;\nuniform vec2 uDirection;\nuniform vec2 uResolution;\n\nout vec4 oColor;\n\nvec4 blur9(sampler2D image, vec2 uv, vec2 resolution, vec2 direction) {\n\tvec4 color = vec4(0.0);\n\tvec2 off1 = vec2(1.3846153846) * direction;\n\tvec2 off2 = vec2(3.2307692308) * direction;\n\tcolor += texture(image, uv) * 0.2270270270;\n\tcolor += texture(image, uv + (off1 / resolution)) * 0.3162162162;\n\tcolor += texture(image, uv - (off1 / resolution)) * 0.3162162162;\n\tcolor += texture(image, uv + (off2 / resolution)) * 0.0702702703;\n\tcolor += texture(image, uv - (off2 / resolution)) * 0.0702702703;\n\treturn color;\n}\n\nvoid main(void) {\n oColor = blur9(uMap, vTextureCoord, uResolution, uDirection);\n}").setClearColor(0,0,0,1)}for(let r=0;r<1;r++){const a=1/Math.pow(1.1,r),s=0===r?e:He.read.texture;Ge.bindFrameBuffer(He.write).bindTexture("uMap",s,0).uniform("uDirection",[1,0]).uniform("uResolution",[t*a,n*a]).draw(),He.swap(),Ge.bindFrameBuffer(He.write).bindTexture("uMap",He.read.texture,0).uniform("uDirection",[0,1]).uniform("uResolution",[t*a,n*a]).draw(),He.swap()}return He.read.texture}(this._fboRender.texture)}_updateFlow(){this._drawFlowUpdate.bindFrameBuffer(this._fboFlow.write).bindTexture("uMap",this._fboFlow.read.texture,0).draw(),this._fboFlow.swap()}_updateShadowMap(){this._fboShadow.bind(),U.setMatrices(this._cameraLight),U.clear(0,0,0,0),this._renderRibbon(!1),this._fboShadow.unbind()}_renderRibbon(e=!1){const t=e?this._fboShadow.depthTexture:this._fbo.read.getTexture(0);this._drawRibbon.bindTexture("uPosMap",this._fboScrambled.texture,0).bindTexture("uDepthMap",t,1).uniform("uIndex",this._index).uniform("uLight",this._lightPosition).uniform("uShadowMatrix",this.mtxShadow).uniform("uTime",ve.Z.getElapsedTime()).uniform("uTouch",this._hit).draw()}render(){let e=.1;U.clear(e,e,e,1),U.setMatrices(this.camera),U.disable(U.DEPTH_TEST);const{near:t,far:n}=this.camera;let r=(this.orbitalControl.radius.value+3.2-t)/(n-t);if(this._drawCompose.bindTexture("uMap",this._fboRender.texture,0).bindTexture("uAOMap",this._textureAO,1).bindTexture("uNoiseMap",this._textureNoise,2).bindTexture("uLookupMap",this._textureLookup,3).bindTexture("uBlurMap",this._textureBlurredRender,4).bindTexture("uDepthMap",this._fboRender.depthTexture,5).uniform("uFocus",r).uniform("uRatio",U.aspectRatio).uniform("uNear",t).uniform("uFar",n).draw(),this._handLeft){e=.05;let t=2*this._handLeft[0]-1,n=2*this._handLeft[1]-1;this._dBall.draw([8*t,8*n,0],[e,e,e],[1,0,0]),t=2*this._handRight[0]-1,n=2*this._handRight[1]-1,this._dBall.draw([8*t,8*n,0],[e,e,e],[1,0,0])}}resize(){const{innerWidth:e,innerHeight:t}=window;U.setSize(1.5*e,1.5*t),this.camera?.setAspectRatio?.(U.aspectRatio),this._fboRender=new Q(U.width,U.height),console.log(U.aspectRatio,.8)}},np=[{id:"lookup",url:"assets/lookup.png",type:"png"}];var rp=a(370),ap=a.n(rp);let sp,op,ip;var up;String.prototype.replaceAll=function(e,t){return this.replace(new RegExp(e,"g"),t)},window.addEventListener("keydown",(e=>{if(83===e.keyCode&&(e.metaKey||e.ctrlKey)){e.preventDefault();const t=(()=>{const e=new Date;return`${e.getFullYear()}.${e.getMonth()+1}.${e.getDate()}-${e.getHours()}.${e.getMinutes()}.${e.getSeconds()}`})();((e,t)=>{var n=document.createElement("a"),r=(e=>{for(var t=e.split(","),n=t[0].match(/:(.*?);/)[1],r=atob(t[1]),a=r.length,s=new Uint8Array(a);a--;)s[a]=r.charCodeAt(a);return new Blob([s],{type:n})})(e.toDataURL({format:"png",multiplier:4})),a=URL.createObjectURL(r);n.download=`${t}.png`,n.href=a,n.click()})(document.querySelector("#main-canvas"),t)}})),new Promise(((e,t)=>{const n=document.body.querySelector(".Loading-Bar");console.log("Load Assets",np),np.length>0?(document.body.classList.add("isLoading"),new(ap())({assets:np}).on("error",(e=>{console.log("Error :",e)})).on("progress",(e=>{n&&(n.style.width=100*e+"%")})).on("complete",(t=>{n&&(n.style.width="100%"),Re.init(t),setTimeout((()=>{document.body.classList.remove("isLoading"),e(up)}),500)})).start()):e(up)})).then((function(){a.e(891).then(a.bind(a,891)).then((({default:e})=>{e.init(),(()=>{ip=document.createElement("canvas"),ip.id="main-canvas",document.body.appendChild(ip),U.init(ip,{alpha:!1,preserveDrawingBuffer:!0});const{gl:e}=U;"drawingBufferColorSpace"in e&&(e.drawingBufferColorSpace="display-p3",console.log("Drawing Buffer Color Space:",e.drawingBufferColorSpace)),op=new tp,sp=document.querySelector("#main-canvas"),document.addEventListener("keydown",(function(e){"f"===e.key&&sp&&(document.fullscreenElement?document.exitFullscreen():sp.requestFullscreen())}))})(),Promise.all([a.e(296),a.e(437)]).then(a.bind(a,824)).then((({default:e})=>{e(op)}))}))}),Se.H)})()})(); \ No newline at end of file diff --git a/experiments/ribbon02/dist/bundle.js.LICENSE.txt b/experiments/ribbon02/dist/bundle.js.LICENSE.txt index b5fb7739..2901c2f7 100644 --- a/experiments/ribbon02/dist/bundle.js.LICENSE.txt +++ b/experiments/ribbon02/dist/bundle.js.LICENSE.txt @@ -3,3 +3,242 @@ object-assign (c) Sindre Sorhus @license MIT */ + +/** + * @license + * Copyright 2023 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2017 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2018 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ============================================================================= + */ + +/** + * @license + * Copyright 2019 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2020 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2020 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2021 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2021 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2022 Google LLC. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2022 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2022 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the 'License'); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an 'AS IS' BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2023 Google LLC. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +/** + * @license + * Copyright 2023 Google LLC. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ diff --git a/experiments/ribbon02/dist/index.html b/experiments/ribbon02/dist/index.html index f769a7d6..6c5e3ce5 100644 --- a/experiments/ribbon02/dist/index.html +++ b/experiments/ribbon02/dist/index.html @@ -1 +1 @@ -Sketches | Floating Ribbons \ No newline at end of file +Sketches | Floating Ribbons \ No newline at end of file diff --git a/experiments/ribbon02/dist/lib/tfjs-backend-webgl.js b/experiments/ribbon02/dist/lib/tfjs-backend-webgl.js index 99e6d21d..4ecd3689 100644 --- a/experiments/ribbon02/dist/lib/tfjs-backend-webgl.js +++ b/experiments/ribbon02/dist/lib/tfjs-backend-webgl.js @@ -1,2 +1,2 @@ /*! For license information please see tfjs-backend-webgl.js.LICENSE.txt */ -!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{},e.tf)}(this,(function(e,n){"use strict";var t=function(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,n}(n),a=function(e,n){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])},a(e,n)};function r(e,n,t,a){return new(t||(t=Promise))((function(r,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,c)}s((a=a.apply(e,n||[])).next())}))}function o(e,n){var t,a,r,o,i={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=1,a&&(r=2&o[0]?a.return:o[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,o[1])).done)return r;switch(a=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return i.label++,{value:o[1],done:!1};case 5:i.label++,a=o[1],o=[0];continue;case 7:o=i.ops.pop(),i.trys.pop();continue;default:if(!((r=(r=i.trys).length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function c(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var a,r,o=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(e){r={error:e}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}return i}function s(e,n,t){if(t||2===arguments.length)for(var a,r=0,o=n.length;ra||t>a){r="[".concat(e,"x").concat(t,"]");var o="[".concat(a,"x").concat(a,"]");throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+o+".")}}function B(e){return K(e,(function(){return e.createFramebuffer()}),"Unable to create WebGLFramebuffer.")}function V(e,n,t,a,r,o,i){var c=e.getAttribLocation(n,t);return-1!==c&&(C(e,(function(){return e.bindBuffer(e.ARRAY_BUFFER,a)})),C(e,(function(){return e.vertexAttribPointer(c,r,e.FLOAT,!1,o,i)})),C(e,(function(){return e.enableVertexAttribArray(c)})),!0)}function W(e,n,t){q(e,t),C(e,(function(){return e.activeTexture(e.TEXTURE0+t)})),C(e,(function(){return e.bindTexture(e.TEXTURE_2D,n)}))}function U(e,n,t){return K(e,(function(){return e.getUniformLocation(n,t)}),'uniform "'+t+'" not present in program.')}function M(e,n,t){return e.getUniformLocation(n,t)}function G(e,n,t,a){C(e,(function(){return W(e,n,a)})),C(e,(function(){return e.uniform1i(t,a)}))}function z(e,n,t){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)})),C(e,(function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0)}))}function X(e,n){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)})),C(e,(function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)}))}function H(e){var n=e.checkFramebufferStatus(e.FRAMEBUFFER);if(n!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+j(e,n))}function j(e,n){switch(n){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error ".concat(n)}}function K(e,n,t){var a=C(e,(function(){return n()}));if(null==a)throw new Error(t);return a}function q(e,n){var t=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,a=n+e.TEXTURE0;if(at){var r="[gl.TEXTURE0, gl.TEXTURE".concat(t,"]");throw new Error("textureUnit must be in ".concat(r,"."))}}function Y(e,t){return void 0===t&&(t=2),n.util.sizeFromShape(e.slice(0,e.length-t))}function Q(e){if(0===e.length)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Z(e){var n=[1,1,1];return 0===e.length||1===e.length&&1===e[0]||(n=s([Y(e)],c(Q(e)),!1)),n}function J(e,t){var a;void 0===t&&(t=!1);var r=n.env().getNumber("WEBGL_MAX_TEXTURE_SIZE"),o=n.env().getNumber("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE");if(o===1/0&&n.env().getBool("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE")&&(o=r/2),t&&(r*=2,o*=2,1===(e=e.map((function(t,a){return a>=e.length-2?n.util.nearestLargerEven(e[a]):e[a]}))).length&&(e=[2,e[0]])),2!==e.length){var i=n.util.squeezeShape(e);e=i.newShape}var u=n.util.sizeFromShape(e),l=null;e.length<=1&&u<=r?l=[1,u]:2===e.length&&e[0]<=r&&e[1]<=r?l=e:3===e.length&&e[0]*e[1]<=r&&e[2]<=r?l=[e[0]*e[1],e[2]]:3===e.length&&e[0]<=r&&e[1]*e[2]<=r?l=[e[0],e[1]*e[2]]:4===e.length&&e[0]*e[1]*e[2]<=r&&e[3]<=r?l=[e[0]*e[1]*e[2],e[3]]:4===e.length&&e[0]<=r&&e[1]*e[2]*e[3]<=r&&(l=[e[0],e[1]*e[2]*e[3]]);var d=null!=l&&Math.max.apply(Math,s([],c(l),!1))>o&&Math.min.apply(Math,s([],c(l),!1))<=(t?2:1)&&Math.min.apply(Math,s([],c(l),!1))>0;if(null==l||d)if(t){var p=Y(e),h=2,f=2;e.length&&(h=(a=c(Q(e),2))[0],f=a[1]),u=p*(h/2)*(f/2),l=n.util.sizeToSquarishShape(u).map((function(e){return 2*e}))}else l=n.util.sizeToSquarishShape(u);return l}function $(e){return e%2==0}function ee(e,t){if(e=e.slice(-2),t=t.slice(-2),n.util.arraysEqual(e,t))return!0;if(!e.length||!t.length)return!0;if(0===e[0]||0===e[1]||0===t[0]||0===t[1])return!0;if(e.length!==t.length){var a=e[e.length-1],r=t[t.length-1];if(a===r)return!0;if($(a)&&$(r)&&(1===e[0]||1===t[0]))return!0}return e[1]===t[1]&&$(e[0])&&$(t[0])}function ne(e){if(null==R){var n=x(e);R=n.getParameter(n.MAX_TEXTURE_SIZE)}return R}function te(e){if(null==T){var n=x(e);T=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,T)}function ae(e){if(0===e)return 0;var n=x(e);return re(n,"EXT_disjoint_timer_query_webgl2")&&2===e?2:re(n,"EXT_disjoint_timer_query")?1:0}function re(e,n){return null!=e.getExtension(n)}function oe(e){try{if(null!=x(e))return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function ie(e){if(0===e)return!1;var n=x(e);if(1===e){if(!re(n,"OES_texture_float"))return!1}else if(!re(n,"EXT_color_buffer_float"))return!1;return se(n)}function ce(e){if(0===e)return!1;var n=x(e);if(1!==e){if(re(n,"EXT_color_buffer_float"))return se(n);var t="EXT_color_buffer_half_float";if(re(n,t)){var a=n.getExtension(t);return function(e,n){var t=b(e,n),a=e.createTexture();e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,t.internalFormatHalfFloat,1,1,0,t.textureFormatFloat,t.textureTypeHalfFloat,null);var r=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,r),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,a,0);var o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(a),e.deleteFramebuffer(r),o}(n,a)}return!1}return!!re(n,"OES_texture_float")&&!!re(n,"WEBGL_color_buffer_float")&&se(n)}function se(e){var n=b(e),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,n.internalFormatFloat,1,1,0,n.textureFormatFloat,n.textureTypeFloat,null);var a=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,a),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);var r=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(t),e.deleteFramebuffer(a),r}function ue(e){return 2===e&&null!=x(e).fenceSync}function le(e,t){Array.isArray(e)||(e=[e]),e.forEach((function(e){null!=e&&n.util.assert("complex64"!==e.dtype,(function(){return"".concat(t," does not support complex64 tensors ")+"in the WebGL backend."}))}))}var de={__proto__:null,assertNotComplex:le,bindCanvasToFramebuffer:function(e){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),C(e,(function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)})),C(e,(function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)}))},bindColorTextureToFramebuffer:z,bindTextureToProgramUniformSampler:G,bindTextureUnit:W,bindVertexBufferToProgramAttribute:V,callAndCheck:C,canBeRepresented:y,createFragmentShader:k,createFramebuffer:B,createProgram:A,createStaticIndexBuffer:D,createStaticVertexBuffer:F,createTexture:P,createVertexShader:S,getBatchDim:Y,getExtensionOrThrow:I,getFramebufferErrorMessage:j,getMaxTexturesInShader:te,getNumChannels:function(){return 2===n.env().getNumber("WEBGL_VERSION")?1:4},getProgramUniformLocation:M,getProgramUniformLocationOrThrow:U,getRowsCols:Q,getShapeAs3D:Z,getTextureShapeFromLogicalShape:J,getWebGLDisjointQueryTimerVersion:ae,getWebGLErrorMessage:w,getWebGLMaxTextureSize:ne,hasExtension:re,isCapableOfRenderingToFloatTexture:ie,isDownloadFloatTextureEnabled:ce,isReshapeFree:ee,isWebGLFenceEnabled:ue,isWebGLVersionEnabled:oe,linkProgram:_,logShaderSourceAndInfoLog:E,resetMaxTextureSize:function(){R=null},resetMaxTexturesInShader:function(){T=null},unbindColorTextureFromFramebuffer:X,unbindTextureUnit:function(e,n){q(e,n),C(e,(function(){return e.activeTexture(e.TEXTURE0+n)})),C(e,(function(){return e.bindTexture(e.TEXTURE_2D,null)}))},validateFramebuffer:H,validateProgram:O,validateTextureSize:L},pe=n.env();function he(){var e,t,a,r,o,i,c,s,u,l;return 2===n.env().getNumber("WEBGL_VERSION")?(e="#version 300 es",t="in",a="out",r="in",o="texture",i="outputColor",c="out vec4 outputColor;",s=n.env().getBool("WEBGL2_ISNAN_CUSTOM")?"\n bool isnan_custom(float val) {\n uint floatToUint = floatBitsToUint(val);\n return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ":"",u="",l="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(e="",t="attribute",a="varying",r="varying",o="texture2D",i="gl_FragColor",c="",s="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",u="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",l="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:e,attribute:t,varyingVs:a,varyingFs:r,texture2D:o,output:i,defineOutput:c,defineSpecialNaN:s,defineSpecialInf:u,defineRound:l}}function fe(e,t,a){void 0===a&&(a="index");var r=n.util.computeStrides(t);return r.map((function(n,t){var o="int ".concat(e[t]," = ").concat(a," / ").concat(n),i=t===r.length-1?"int ".concat(e[t+1]," = ").concat(a," - ").concat(e[t]," * ").concat(n):"index -= ".concat(e[t]," * ").concat(n);return"".concat(o,"; ").concat(i,";")})).join("")}function xe(e,t,a){void 0===a&&(a="index");var r=n.util.computeStrides(t);return r.map((function(n,t){var o="int ".concat(e[t]," = ").concat(a," / outShapeStrides[").concat(t,"]"),i=t===r.length-1?"int ".concat(e[t+1]," = ").concat(a," - ").concat(e[t]," * outShapeStrides[").concat(t,"]"):"index -= ".concat(e[t]," * outShapeStrides[").concat(t,"]");return"".concat(o,"; ").concat(i,";")})).join("")}function ve(e){var t=n.util.computeStrides(e).map((function(e){return e.toString()}));return"\n int getFlatIndex(ivec3 coords) {\n return coords.x * ".concat(t[0]," + coords.y * ").concat(t[1]," + coords.z;\n }\n")}pe.registerFlag("HAS_WEBGL",(function(){return pe.getNumber("WEBGL_VERSION")>0})),pe.registerFlag("WEBGL_VERSION",(function(){return oe(2)?2:oe(1)?1:0})),pe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",(function(){return!1})),pe.registerFlag("WEBGL_BUFFER_SUPPORTED",(function(){return 2===pe.get("WEBGL_VERSION")})),pe.registerFlag("WEBGL_CPU_FORWARD",(function(){return!0})),pe.registerFlag("WEBGL_FORCE_F16_TEXTURES",(function(){return!1})),pe.registerFlag("WEBGL_PACK",(function(){return pe.getBool("HAS_WEBGL")})),pe.registerFlag("WEBGL_PACK_NORMALIZATION",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_CLIP",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_DEPTHWISECONV",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_REDUCE",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_LAZILY_UNPACK",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_CONV_IM2COL",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_CONV2DTRANSPOSE",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(function(){return ne(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(function(){return te(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(function(){var e=pe.getNumber("WEBGL_VERSION");return 0===e?0:ae(e)})),pe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(function(){return pe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!n.device_util.isMobile()})),pe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(function(){return ie(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(function(){return!pe.getBool("WEBGL_FORCE_F16_TEXTURES")&&pe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")})),pe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(function(){return ce(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_FENCE_API_ENABLED",(function(){return ue(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(function(){return pe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0})),pe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",(function(){return-1}),(function(e){if("number"!=typeof e)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be a number but "+"got ".concat(e,"."));if(e<0&&-1!==e)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never "+"delete) or at least 0, but got ".concat(e,"."))})),pe.registerFlag("WEBGL_FLUSH_THRESHOLD",(function(){return n.device_util.isMobile()?1:-1}),(function(e){if("number"!=typeof e)throw new Error("WEBGL_FLUSH_THRESHOLD must be a number but got "+"".concat(e,"."));if(e<0&&-1!==e)throw new Error("WEBGL_FLUSH_THRESHOLD must be -1 (indicating never "+"manual flush) or at least 0, but got ".concat(e,"."))})),pe.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",(function(){return 128})),pe.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",(function(){return!1})),pe.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",(function(){return 1e5})),pe.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",(function(){return 128})),pe.registerFlag("WEBGL_EXP_CONV",(function(){return!1})),pe.registerFlag("SOFTWARE_WEBGL_ENABLED",(function(){return pe.getBool("IS_TEST")})),pe.registerFlag("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE",(function(){return 1/0})),pe.registerFlag("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE",(function(){return!1})),pe.registerFlag("WEBGL2_ISNAN_CUSTOM",(function(){return!1})),pe.registerFlag("ENGINE_COMPILE_ONLY",(function(){return!1}));var ge="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n",me=n.backend_util.getBroadcastDims;function be(e,t,a){var r=[];if(e.forEach((function(e){var t=n.util.sizeFromShape(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform?r.push("uniform float ".concat(e.name).concat(t>1?"[".concat(t,"]"):"",";")):(r.push("uniform sampler2D ".concat(e.name,";")),r.push("uniform int offset".concat(e.name,";"))),a.enableShapeUniforms){switch(Ee(a.packedInputs,e.shapeInfo.logicalShape,e.shapeInfo.texShape).uniformShape.length){case 1:r.push("uniform int ".concat(e.name,"Shape;"));break;case 2:r.push("uniform ivec2 ".concat(e.name,"Shape;"));break;case 3:r.push("uniform ivec3 ".concat(e.name,"Shape;"));break;case 4:r.push("uniform ivec4 ".concat(e.name,"Shape;"))}r.push("uniform ivec2 ".concat(e.name,"TexShape;"))}})),a.enableShapeUniforms){switch(t.logicalShape.length){case 1:r.push("uniform int outShape;");break;case 2:r.push("uniform ivec2 outShape;"),r.push("uniform int outShapeStrides;");break;case 3:r.push("uniform ivec3 outShape;"),r.push("uniform ivec2 outShapeStrides;");break;case 4:r.push("uniform ivec4 outShape;"),r.push("uniform ivec3 outShapeStrides;")}r.push("uniform ivec2 outTexShape;")}a.customUniforms&&a.customUniforms.forEach((function(e){r.push("uniform ".concat(e.type," ").concat(e.name).concat(e.arrayIndex?"[".concat(e.arrayIndex,"]"):"",";"))}));var o,i,c=r.join("\n"),s=e.map((function(e){return function(e,t,a,r){void 0===a&&(a=!1);var o="";o+=a?ye(e,r):Ce(e,r);var i=e.shapeInfo.logicalShape,c=t.logicalShape;return i.length<=c.length&&(o+=a?function(e,t){var a,r,o=e.name,i=o.charAt(0).toUpperCase()+o.slice(1),c="get"+i+"AtOutCoords",s=e.shapeInfo.logicalShape.length,u=t.logicalShape.length,l=me(e.shapeInfo.logicalShape,t.logicalShape),d=Ne(u),p=u-s,h=["x","y","z","w","u","v"];a=0===s?"":u<2&&l.length>=1?"coords = 0;":l.map((function(e){return"coords.".concat(h[e+p]," = 0;")})).join("\n"),r=u<2&&s>0?"coords":e.shapeInfo.logicalShape.map((function(e,n){return"coords.".concat(h[n+p])})).join(", ");var f="return outputValue;",x=1===n.util.sizeFromShape(e.shapeInfo.logicalShape),v=1===n.util.sizeFromShape(t.logicalShape);if(1!==s||x||v){if(x&&!v)f=1===u?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(l.length){var g=s-2,m=s-1;l.indexOf(g)>-1&&l.indexOf(m)>-1?f="return vec4(outputValue.x);":l.indexOf(g)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":l.indexOf(m)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);")}}else f="\n return vec4(outputValue.xy, outputValue.xy);\n ";return"\n vec4 ".concat(c,"() {\n ").concat(d," coords = getOutputCoords();\n ").concat(a,"\n vec4 outputValue = get").concat(i,"(").concat(r,");\n ").concat(f,"\n }\n ")}(e,t):function(e,t){var a=e.name,r=a.charAt(0).toUpperCase()+a.slice(1),o="get"+r+"AtOutCoords",i=t.texShape,c=e.shapeInfo.texShape,s=e.shapeInfo.logicalShape.length,u=t.logicalShape.length;if(!e.shapeInfo.isUniform&&s===u&&null==e.shapeInfo.flatOffset&&n.util.arraysEqual(c,i))return"\n float ".concat(o,"() {\n return sampleTexture(").concat(a,", resultUV);\n }\n ");var l,d,p=Ne(u),h=me(e.shapeInfo.logicalShape,t.logicalShape),f=u-s,x=["x","y","z","w","u","v"];return l=0===s?"":u<2&&h.length>=1?"coords = 0;":h.map((function(e){return"coords.".concat(x[e+f]," = 0;")})).join("\n"),d=u<2&&s>0?"coords":e.shapeInfo.logicalShape.map((function(e,n){return"coords.".concat(x[n+f])})).join(", "),"\n float ".concat(o,"() {\n ").concat(p," coords = getOutputCoords();\n ").concat(l,"\n return get").concat(r,"(").concat(d,");\n }\n ")}(e,t)),o}(e,t,a.packedInputs,a.enableShapeUniforms)})).join("\n"),u=t.texShape,l=he(),d=function(e){return"\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ".concat(e.texture2D,"(textureSampler, uv).r;\n }\n ")}(l),p=function(e){return"".concat(e.version,"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ").concat(e.varyingFs," vec2 resultUV;\n ").concat(e.defineOutput,"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ").concat(e.defineSpecialNaN,"\n ").concat(e.defineSpecialInf,"\n ").concat(e.defineRound,"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ").concat(we,"\n ").concat(Ie,"\n ").concat(Se,"\n ")}(l);return t.isPacked?(o=function(e,t,a){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,n,t){var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)];return 1===a[0]?t?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * ceil(float(outTexShape[1]) / 2.0));\n }\n ":"\n int getOutputCoords() {\n return 2 * int(resultUV.x * ".concat(a[1],".0);\n }\n "):1===a[1]?t?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * ceil(float(outTexShape[0]) / 2.0));\n }\n ":"\n int getOutputCoords() {\n return 2 * int(resultUV.y * ".concat(a[0],".0);\n }\n "):t?"\n int getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n return 2 * (resTexRC.x * packedTexShape[1] + resTexRC.y);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(a[0],", ").concat(a[1],"));\n return 2 * (resTexRC.x * ").concat(a[1]," + resTexRC.y);\n }\n ")}(0,t,a);case 2:return function(e,t,a){var r=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(n.util.arraysEqual(e,t))return a?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n return 2 * ivec2(resultUV.yx * vec2(packedTexShape[0], packedTexShape[1]));\n }\n ":"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(".concat(r[0],", ").concat(r[1],"));\n }\n ");var o=Math.ceil(e[1]/2);return a?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec2(r, c);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(r[0],", ").concat(r[1],"));\n\n int index = resTexRC.x * ").concat(r[1]," + resTexRC.y;\n int r = 2 * (index / ").concat(o,");\n int c = imod(index, ").concat(o,") * 2;\n\n return ivec2(r, c);\n }\n ")}(e,t,a);case 3:return function(e,n,t){if(t)return"\n ivec3 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec3(b, r, c);\n }\n ";var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)],r=Math.ceil(e[2]/2),o=r*Math.ceil(e[1]/2);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(a[0],", ").concat(a[1],"));\n int index = resTexRC.x * ").concat(a[1]," + resTexRC.y;\n\n int b = index / ").concat(o,";\n index -= b * ").concat(o,";\n\n int r = 2 * (index / ").concat(r,");\n int c = imod(index, ").concat(r,") * 2;\n\n return ivec3(b, r, c);\n }\n ")}(e,t,a);default:return function(e,n,t){if(t)return"\n ivec4 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int texelsInLogicalRow = int(ceil(float(outShape[3]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatchN = texelsInBatch * outShape[1];\n\n int b2 = index / texelsInBatchN;\n index -= b2 * texelsInBatchN;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec4(b2, b, r, c);\n }\n ";for(var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)],r=Math.ceil(e[e.length-1]/2),o=r*Math.ceil(e[e.length-2]/2),i=o,c="",s="b, r, c",u=2;u1&&!n.util.arraysEqual(t,a)&&o.length0?(t=this.beginQuery(),this.endQuery(),a=function(){return r.isQueryAvailable(t,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):a=function(){return!0};return{query:t,isFencePassed:a}},e.prototype.downloadMatrixFromPackedTexture=function(e,n,t){var a=this;return this.downloadMatrixDriver(e,(function(){return ln(a.gl,n,t)}))},e.prototype.createProgram=function(e){var n=this;this.throwIfDisposed();var t=this.gl;null==this.vertexShader&&(this.vertexShader=Ge(t));var a=A(t);C(t,(function(){return t.attachShader(a,n.vertexShader)})),C(t,(function(){return t.attachShader(a,e)})),_(t,a);var r=Object.assign(a,{vao:this.createVertexArray()});return this.debug&&O(t,r),r},e.prototype.buildVao=function(e){var n=this;this.setProgram(e),this.bindVertexArray(e.vao);var t=this.gl;C(t,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.indexBuffer)})),tn(t,e,this.vertexBuffer)},e.prototype.deleteProgram=function(e){var n=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&(C(this.gl,(function(){return n.gl.deleteProgram(e)})),this.deleteVertexArray(e.vao))},e.prototype.setProgram=function(e){var n=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.debug&&O(this.gl,this.program),C(this.gl,(function(){return n.gl.useProgram(e)}))},e.prototype.getUniformLocation=function(e,n,t){return void 0===t&&(t=!0),this.throwIfDisposed(),t?U(this.gl,e,n):M(this.gl,e,n)},e.prototype.getAttributeLocation=function(e,n){var t=this;return this.throwIfDisposed(),C(this.gl,(function(){return t.gl.getAttribLocation(e,n)}))},e.prototype.getUniformLocationNoThrow=function(e,n){return this.throwIfDisposed(),this.gl.getUniformLocation(e,n)},e.prototype.setInputMatrixTexture=function(e,n,t){this.throwIfDisposed(),this.throwIfNoProgram(),G(this.gl,e,n,t)},e.prototype.setOutputMatrixTexture=function(e,n,t){this.setOutputMatrixTextureDriver(e,t,n)},e.prototype.setOutputPackedMatrixTexture=function(e,n,t){this.throwIfDisposed();var a=c(m(n,t),2),r=a[0],o=a[1];this.setOutputMatrixTextureDriver(e,r,o)},e.prototype.setOutputMatrixWriteRegion=function(e,n,t,a){this.setOutputMatrixWriteRegionDriver(t,e,a,n)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,n,t,a){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&O(this.gl,this.program),H(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;if(this.debug){var n=this.getVertexArray();console.assert(n===this.program.vao,"VAO changed between setProgram and executeProgram!"),this.debugValidate()}C(e,(function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}))},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),C(this.gl,(function(){return e.gl.finish()}))},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=I(this.gl,2===n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),a=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,a),a}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},e.prototype.endQuery=function(){if(2!==n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,a=this.getQueryTimerExtensionWebGL2();t.endQuery(a.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return r(this,void 0,void 0,(function(){var t=this;return o(this,(function(a){switch(a.label){case 0:return[4,n.util.repeatedTry((function(){return t.disposed||t.isQueryAvailable(e,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}))];case 1:return a.sent(),[2,this.getQueryTime(e,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}}))}))},e.prototype.getQueryTime=function(e,n){if(0===n)return null;if(2===n){var t=this.gl;return t.getQueryParameter(e,t.QUERY_RESULT)/1e6}var a=this.getQueryTimerExtensionWebGL1();return a.getQueryObjectEXT(e,a.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,n){if(0===n)return!0;if(2===n){var t=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=t.getQueryParameter(e,t.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint}return r=(a=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,a.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint},e.prototype.pollFence=function(e){var n=this;return new Promise((function(t){n.addItemToPoll((function(){return e.isFencePassed()}),(function(){return t()}))}))},e.prototype.pollItems=function(){for(var e=function(e){for(var n=0;n1)){var r=void 0;"setTimeoutCustom"in n.env().platform&&(r=n.env().platform.setTimeoutCustom.bind(n.env().platform)),n.util.repeatedTry((function(){return a.pollItems(),0===a.itemsToPoll.length}),(function(){return 0}),null,r)}},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),z(this.gl,e,this.framebuffer),this.debug&&H(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(z(this.gl,this.outputTexture,this.framebuffer),this.debug&&H(this.gl)):X(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,n){this.bindTextureToFrameBuffer(e);var t=n();return this.unbindTextureToFrameBuffer(),t},e.prototype.setOutputMatrixTextureDriver=function(e,n,t){this.throwIfDisposed();var a=this.gl;z(a,e,this.framebuffer),this.debug&&H(a),this.outputTexture=e,C(a,(function(){return a.viewport(0,0,n,t)})),C(a,(function(){return a.scissor(0,0,n,t)}))},e.prototype.setOutputMatrixWriteRegionDriver=function(e,n,t,a){var r=this;this.throwIfDisposed(),C(this.gl,(function(){return r.gl.scissor(e,n,t,a)}))},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function hn(e){return function(t,a,r,o,i){var c=n.backend_util.assertAndGetBroadcastShape(t,a),s=c.length,u=n.util.computeStrides(c),l=n.util.sizeFromShape(c),d=n.util.getTypedArrayFromDType(i,l),p=t.length,h=a.length,f=n.util.computeStrides(t),x=n.util.computeStrides(a),v=n.backend_util.getBroadcastDims(t,c),g=n.backend_util.getBroadcastDims(a,c);if(v.length+g.length===0)for(var m=0;mn?1:0})),In=hn((function(e,n){return e>=n?1:0})),Sn=hn((function(e,n){return et&&(t=r)}return t},e.getMaxWidthValueRowID=function(e){var n=e.length;if(0===n)return 0;for(var t=0,a=e[0],r=0,o=1;o0&&o.length!==e[r-1])throw new Error("Invalid row split size.");return o},e.prototype.calculateOutputIndexValueRowID=function(e,n,t,a){var r=e.length,o=[];if(0===r)return[];var i=0,c=e[0];if(c>=n.length)throw new Error("Got currentValueRowId=".concat(c,", which is not less than ").concat(n.length));var s=n[c];o.push(s);for(var u=1;u=0&&(++i=n.length)throw new Error("Got nextValueRowId=".concat(l," which is not less than ").concat(n.length));s=n[l]}o.push(s)}if(o.length!==e.length)throw new Error("Invalid row ids.");return o},e.prototype.calculateOutputIndex=function(e,n,t,a){var r=this.getRowPartitionTensor(e),o=this.getRowPartitionTypeByDimension(e);switch(o){case Dn.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(r,n,t,a);case Dn.ROW_SPLITS:if(r.length-1>n.length)throw new Error("Row partition size is greater than output size: ".concat(r.length-1," > ").concat(n.length));return this.calculateOutputIndexRowSplit(r,n,t,a);default:throw new Error("Unsupported partition type: ".concat(Dn[o]))}},e.prototype.getFirstDimensionSize=function(){var e=this.rowPartitionValues[0];if(0===this.rowPartitionTypes.length)throw new Error("No row_partition_types given.");var n=this.rowPartitionTypes[0];switch(n){case Dn.FIRST_DIM_SIZE:return e[0];case Dn.VALUE_ROWIDS:throw new Error("Cannot handle VALUE_ROWIDS in first dimension.");case Dn.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error("Cannot handle type ".concat(Dn[n]))}},e.prototype.compute=function(){if(this.rowPartitionValues[0].length<=0)throw new Error("Invalid first partition input. Tensor requires at least one element.");var e=this.getFirstDimensionSize(),t=this.calculateOutputSize(e),a=new Array(this.raggedRank+1);a[a.length-1]=1;for(var r=a.length-2;r>=0;--r)a[r]=a[r+1]*t[r+1];var o=Bn(t,!1),i=n.util.getArrayFromDType(this.valuesDType,n.util.sizeFromShape(o));if(a[0]*t[0]>0){var c=this.calculateFirstParentOutputIndex(e,a[0],t[0]);for(r=1;r<=this.raggedRank;++r)c=this.calculateOutputIndex(r-1,c,a[r],t[r]);this.setOutput(this.raggedRank,c,i,o)}return[o,i]},e.prototype.setOutput=function(e,t,a,r){if(0!==a.length){var o=this.values,i=a,c=r.slice();c=c.slice(e+1);var s=n.util.sizeFromShape(c),u=t.length,l=this.defaultValue;if(l.length!==s&&1!==l.length){var d=this.defaultValueShape;n.tidy((function(){var e=n.reshape(l,d),t=n.broadcastTo(e,c);l=t.dataSync()}))}for(var p=0,h=0,f=0,x=0;x<=u;++x){var v=x=u){var m=a.length;v=Math.floor(m/s)}if(v>f)if(1===this.defaultValue.length)i.subarray(f*s,v*s).fill(this.defaultValue[0]),f=v;else for(;v>f;)Ln(i.slice(f*s),l,s),++f;v<0?(p=x+1,h=f):(p=x,f=(h=f)+1)}else++f}}},e}();function Ln(e,n,t){for(var a=0;a= 0"));if(s<-1)throw new Error("Dimension ".concat(s," must be >= -1"));s=-1}r.push(s)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(a=o.return)&&a.call(o)}finally{if(t)throw t.error}}return r}var Vn=vn((function(e){return 1/Math.sqrt(e)})),Wn=vn((function(e){return 1/(1+Math.exp(-e))})),Un=vn((function(e){return Math.sqrt(e)})),Mn=vn((function(e,n){var t=n.pattern,a=n.replaceGlobal,r=n.rewrite;return e.replace(new RegExp(t,a?"g":""),r)})),Gn=function(){function e(e,t,a,r,o,i){this.separator=n.util.encodeString(e),this.nGramWidths=t,this.leftPad=n.util.encodeString(a),this.rightPad=n.util.encodeString(r),this.padWidth=o,this.preserveShort=i}return e.prototype.getPadWidth=function(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)},e.prototype.getNumNGrams=function(e,n){var t=this.getPadWidth(n);return Math.max(0,e+2*t-n+1)},e.prototype.createNGrams=function(e,n,t,a,r,o){for(var i=function(i){var s=c.getPadWidth(o),u=Math.max(0,s-i),l=Math.max(0,s-(r-(i+1))),d=o-(u+l),p=n+(u>0?0:i-s),h=0;h+=u*c.leftPad.length;for(var f=0;f0)for(g(e[p+d-1]),f=0;f0){var i=t[0];if(0!==i)throw new Error("First split value must be 0, got ".concat(i));for(var c=1;c=i;if(!(s=s&&t[c]<=r))throw new Error("Invalid split value ".concat(t[c],", must be in [").concat(i,", ").concat(r,"]"));i=t[c]}if(i!==r)throw new Error("Last split value must be data size. Expected ".concat(r,", got ").concat(i))}var u=o-1,l=n.util.getArrayFromDType("int32",o);if(0===r||0===o){var d=new Array(r);for(c=0;c<=u;++c)l[c]=0;return[d,l]}l[0]=0;var p=function(e){var n=t[e]-t[e-1],r=0;h.nGramWidths.forEach((function(e){r+=a.getNumNGrams(n,e)})),h.preserveShort&&n>0&&0===r&&(r=1),l[e]=l[e-1]+r},h=this;for(c=1;c<=u;++c)p(c);var f=new Array(l[u]),x=function(n){var r=t[n],o=l[n];if(v.nGramWidths.forEach((function(i){var c=t[n+1]-t[n],s=a.getNumNGrams(c,i);a.createNGrams(e,r,f,o,s,i),o+=s})),v.preserveShort&&o===l[n]){var i=t[n+1]-t[n];if(0===i)return"continue";var c=i+2*v.padWidth;v.createNGrams(e,r,f,o,1,c)}},v=this;for(c=0;ca;){if(r-a>600){var o=r-a+1,i=t-a+1,c=Math.log(o),s=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*s*(o-s)/o)*Math.sign(i-o/2);jn(e,t,Math.max(a,Math.floor(t-i*s/o+u)),Math.min(r,Math.floor(t+(o-i)*s/o+u)))}var l=e[t],d=a,p=r;for(n.util.swap(e,a,t),Hn(e[r],l)>0&&n.util.swap(e,a,r);d0;)p-=1}0===Hn(e[a],l)?n.util.swap(e,a,p):(p+=1,n.util.swap(e,p,r)),p<=t&&(a=p+1),t<=p&&(r=p-1)}}var Kn=fn,qn=function(e,t,a,r,o){for(var i=n.util.sizeFromShape(r),c=n.util.makeZerosTypedArray(o,a),s=0;s=o||(c[u]+=i>0?t[s]:1)}return c},Yn=function(e,t,a,r){void 0===r&&(r=!1);for(var o=e.shape[0],i=e.shape[1],c=n.buffer([o,a],t.dtype),s=0;s=a||(r?c.set(1,s,l):t.size>0?c.set(c.get(s,l)+t.get(s,u),s,l):c.set(c.get(s,l)+1,s,l))}return c},Qn=xn,Zn=gn,Jn=mn,$n=bn,et=Cn,nt=yn,tt=function(e,t,a,r,o,i,u,l,d){for(var p=n.buffer([r,i],a),h=0;h=d/i)throw new Error("Invalid indices: ".concat(f," does not index into ").concat(l));for(var m=0;m=a){var o=n.util.indexToLoc(r,t.length,n.util.computeStrides(t)).join(",");throw new Error("indices[".concat(o,"] = ").concat(e," is not in [0, ").concat(a,")"))}}))}(i,c,t[0][0]-1),0===r.length)throw new Error("params.rank must be nonzero");var u=function(e,n,t,a){var r=[],o=0,i=n.length-1+t.length,c=new Array(i).fill(null).map((function(){return[0]}));!function(e,n){for(var t=0;tr)throw new Error("Ragged splits must not point past values");for(var o=1;oa[o])throw new Error("Ragged splits must be sorted in ascending order")}}(t,a);for(var s=1,u=0;u=0)for(var v=c[x],g=v[v.length-1]-f[p],m=p;m1)throw new Error("starts must be a scalar or vector");if(o.length>1)throw new Error("limits must be a scalar or vector");if(c.length>1)throw new Error("deltas must be a scalar or vector");var s=0===t.length,u=0===o.length,l=0===c.length,d=[];s||d.push(t[0]),u||d.push(o[0]),l||d.push(c[0]);for(var p=1;p0&&gv)m=0;else if((m=Math.ceil(Math.abs((g-v)/S)))>Fn)throw new Error("Requires ((limit - start) / delta) <= ".concat(Fn));f[x+1]=f[x]+m}var b=f[h],C=n.util.getArrayFromDType(a,b),y=0;for(x=0;x1)return n.util.makeZerosTypedArray(0,r);var o=Math.abs(Math.ceil((t-e)/a)),i=n.util.makeZerosTypedArray(o,r);t=u)throw new Error(n.backend_util.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(v,m,u));++x[m],h=h&&m>=f,f=m}for(var g=!0,m=0;m0&&(x[m]+=x[m-1])}if(g&&h){var C=e,y=r;for(v=0;v0)for(v[x-1]=1,p=x-2;p>=0;--p)v[p]=v[p+1]*r[p+1];var g=[];if(s>0)for(g[s-1]=1,p=s-2;p>=0;--p)g[p]=g[p+1]*u[p+1];for(var m=n.util.getArrayFromDType(a,c*s),b=0;b0?o[s-1]+1:0;if(d<0)throw new Error(n.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());var p=t.slice();p[0]=d;var h=p.reduce((function(e,n){return e*n}),1),f=n.util.getArrayFromDType(a,h);if(0===s)return d>0&&f.fill(c),[f,p];if(d<=0)throw new Error(n.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());for(var x=0,v=1,g=0,m=o[x];;){var b=0;if(v=b)throw new Error(n.backend_util.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(m<0||m>=d)throw new Error(n.backend_util.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(m,d));m>g&&f.fill(c,g*l,m*l);for(var C=x;C=u[0])throw new Error(n.backend_util.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(C,r[C],u[0]));for(var w=0;ws)break}return g ".concat(this.enableShapeUniforms?"outShape":this.outputShape[0]);for(var n="",t=this.rank-2;t= ").concat(this.enableShapeUniforms?"outShape[".concat(t,"]"):this.outputShape[t]),t= ").concat(t,";\n bool rEdge = rp1 >= ").concat(a,";\n ")},e.prototype.getOutput=function(e){var n=this.getSourceCoordsArr(e);if(1===this.rank){var t=this.enableShapeUniforms?"outShape":this.outputShape[0];return"getA(rc), (rc + 1 >= ".concat(t," ? 0. : getA(rc + 1)), 0, 0")}return"getA(".concat(n[0],"),\n cEdge ? 0. : getA(").concat(n[1],"),\n rEdge ? 0. : getA(").concat(n[2],"),\n rEdge || cEdge ? 0. : getA(").concat(n[3],")")},e}(),Dt=function(e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"inputShape",type:"ivec3"}],this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length);for(var t,a,r,o="",i=0;i<4;i++){var c="thisRC = rc;";i%2==1&&(c+="thisRC.z += 1;"),i>1&&(c+="thisRC.y += 1;"),o+="\n ".concat(c,"\n ").concat(i>0?"if(thisRC.y < rows && thisRC.z < cols){":"","\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[").concat(i,"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n ").concat(i>0?"}":"","\n ")}this.userCode="\n ".concat((t=n,a=this.enableShapeUniforms,r=a?function(e,n,t){void 0===t&&(t="index");var a=function(e,n){var t=e.length,a=e.map((function(e){return"".concat(n,"[").concat(e,"]")})),r=new Array(t-1);r[t-2]=a[t-1];for(var o=t-3;o>=0;--o)r[o]="(".concat(r[o+1]," * ").concat(a[o+1],")");return r}(e.map((function(e,n){return n})),"inputShape");return a.map((function(n,r){var o="int ".concat(e[r]," = ").concat(t," / ").concat(a[r]),i=r===a.length-1?"int ".concat(e[r+1]," = ").concat(t," - ").concat(e[r]," * ").concat(a[r]):"index -= ".concat(e[r]," * ").concat(a[r]);return"".concat(o,"; ").concat(i,";")})).join("")}(["r","c","d"]):fe(["r","c","d"],t),"\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n ".concat(r,"\n return ivec3(r, c, d);\n }\n ")),"\n ").concat(this.enableShapeUniforms?"\n int getFlatIndex(ivec3 coords) {\n return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z;\n }\n":ve(e),"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = ").concat(this.enableShapeUniforms?"outShape[1]":e[1],";\n int cols = ").concat(this.enableShapeUniforms?"outShape[2]":e[2],";\n\n ").concat(o,"\n\n setOutput(result);\n }\n ")},Pt=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.usedTextures={},this.logEnabled=!1}return e.prototype.acquireTexture=function(e,n,t){var a=Bt(n,t),r=Vt(e,a,t);r in this.freeTextures||(this.freeTextures[r]=[]),r in this.usedTextures||(this.usedTextures[r]=[]);var o,i=Lt(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,t);if(this.freeTextures[r].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=i,this.log();var c=this.freeTextures[r].pop();return this.usedTextures[r].push(c),c}return a===d.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===d.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===d.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===d.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===d.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[r].push(o),this.numUsedTextures++,this._numBytesAllocated+=i,this.log(),o},e.prototype.releaseTexture=function(e,t,a,r){if(null!=this.freeTextures){var o=Bt(a,r),i=Vt(t,o,r);i in this.freeTextures||(this.freeTextures[i]=[]);var c=Lt(t,o,this.gpgpu.gl,this.gpgpu.textureConfig,r),s=n.env().getNumber("WEBGL_DELETE_TEXTURE_THRESHOLD");-1!==s&&this._numBytesAllocated>s?(this.gpgpu.deleteMatrixTexture(e.texture),this._numBytesAllocated-=c):(this.freeTextures[i].push(e),this.numFreeTextures++,this._numBytesFree+=c),this.numUsedTextures--;var u=this.usedTextures[i],l=u&&u.indexOf(e);if(null==l||l<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u[l]=u[u.length-1],u.pop(),this.log()}},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used","".concat(this.numFreeTextures," / ").concat(this.numUsedTextures),"(".concat(e,")"));var n=this._numBytesFree/this._numBytesAllocated;console.log("Bytes allocated: ".concat(this._numBytesAllocated)),console.log("Bytes unused: ".concat(this._numBytesFree," (").concat(Math.round(100*n),"%)"))}},Object.defineProperty(e.prototype,"numBytesAllocated",{get:function(){return this._numBytesAllocated},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"numBytesFree",{get:function(){return this._numBytesFree},enumerable:!1,configurable:!0}),e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var n in this.freeTextures)this.freeTextures[n].forEach((function(n){e.gpgpu.deleteMatrixTexture(n.texture)}));for(var n in this.usedTextures)this.usedTextures[n].forEach((function(n){e.gpgpu.deleteMatrixTexture(n.texture)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}},e}();function Lt(e,n,t,a,r){var o,i=function(e,n){switch(e){case d.PACKED_2X2_FLOAT32:return Je(n);case d.PACKED_2X2_FLOAT16:return en(n);case d.UNPACKED_FLOAT32:return je(n);case d.UNPACKED_FLOAT16:return qe(n);case d.PACKED_4X1_UNSIGNED_BYTE:return Qe(n);default:throw new Error("Unknown physical texture type ".concat(e))}}(n,a);if(r){var s=c(m(e[0],e[1]),2);o=s[0]*s[1]}else{var u=c(v(e[0],e[1]),2);o=u[0]*u[1]}var l=function(e,n){var t=e;if(n===t.R32F)return 4;if(n===t.R16F)return 2;if(n===t.RGBA32F)return 16;if(n===e.RGBA)return 16;if(n===t.RGBA16F)return 8;if(n===t.RGBA8)return 4;throw new Error("Unknown internal format ".concat(n))}(t,i);return o*l}function Bt(e,t){if(e===l.UPLOAD)return d.PACKED_2X2_FLOAT32;if(e===l.RENDER||null==e)return function(e){return n.env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?d.PACKED_2X2_FLOAT32:d.UNPACKED_FLOAT32:e?d.PACKED_2X2_FLOAT16:d.UNPACKED_FLOAT16}(t);if(e===l.DOWNLOAD||e===l.PIXELS)return d.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type ".concat(e))}function Vt(e,n,t){return"".concat(e[0],"_").concat(e[1],"_").concat(n,"_").concat(t)}var Wt=function(e,n){this.variableNames=["A"],this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n float unaryOperation(float x) {\n ".concat(n,"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n ")},Ut="return abs(x);",Mt="return x;",Gt=function(e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n vec4 unaryOperation(vec4 x) {\n ".concat(n,"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n ")},zt=function(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length);var n=e.length,t=Ot("rc",n),a=Ne(n),r=function(e,n){if(1===e)return"rc";for(var t="",a=0;a0},t.prototype.time=function(e){var t=this.activeTimers,a=[],i=!1;null==this.programTimersStack?(this.programTimersStack=a,i=!0):this.activeTimers.push(a),this.activeTimers=a,e();var c=n.util.flatten(this.activeTimers.map((function(e){return e.query}))).filter((function(e){return null!=e})),s=n.util.flatten(this.activeTimers.map((function(e){return e.name}))).filter((function(e){return null!=e}));this.activeTimers=t,i&&(this.programTimersStack=null);var u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};return r(this,void 0,void 0,(function(){var e;return o(this,(function(t){switch(t.label){case 0:return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[4,Promise.all(c)]:[3,2];case 1:return e=t.sent(),u.kernelMs=n.util.sum(e),u.getExtraProfileInfo=function(){return e.map((function(e,n){return{name:s[n],ms:e}})).map((function(e){return"".concat(e.name,": ").concat(e.ms)})).join(", ")},[3,3];case 2:u.kernelMs={error:"WebGL query timers are not supported in this environment."},t.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}}))}))},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}},t.prototype.startTimer=function(){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:n.util.now(),endMs:null}},t.prototype.endTimer=function(e){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=n.util.now(),e)},t.prototype.getQueryTime=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(a){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]}))}))},t.prototype.disposeData=function(e,n){if(void 0===n&&(n=!1),this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(n?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!n&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);var t=this.texData.get(e).complexTensorInfos;return null!=t&&(this.disposeData(t.real.dataId,n),this.disposeData(t.imag.dataId,n)),this.texData.delete(e),!0},t.prototype.releaseGPUData=function(e){var n=this.texData.get(e),t=n.texture,a=n.dtype,r=n.texShape,o=n.usage,i=n.isPacked,c=n.slice,s=c&&c.origDataId||e,u=this.dataRefCount.get(s);u>1?this.dataRefCount.set(s,u-1):(this.dataRefCount.delete(s),null!=t&&(this.numBytesInGPU-=this.computeBytes(r,a),this.textureManager.releaseTexture(t,r,o,i)));var l=this.texData.get(e);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture.texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.shouldExecuteOnCPU=function(e,t){var a=this;return void 0===t&&(t=jt),n.env().getBool("WEBGL_CPU_FORWARD")&&e.every((function(e){return null==a.texData.get(e.dataId).texture&&n.util.sizeFromShape(e.shape)0&&n.util.isString(a[0])){var o=a.map((function(e){return n.util.encodeString(e)}));r=this.write(o,e,t)}else r=this.write(a,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}},t.prototype.makeOutput=function(e,t,a){return n.engine().makeTensorFromTensorInfo(this.makeTensorInfo(e,t,a),this)},t.prototype.unpackTensor=function(e){var n=new zt(e.shape);return this.runWebGLProgram(n,[e],e.dtype)},t.prototype.packTensor=function(e){var n=new Ft(e.shape);return this.runWebGLProgram(n,[e],e.dtype,null,!0)},t.prototype.packedReshape=function(e,n){var t=s([Y(e.shape)],c(Q(e.shape)),!1),a={dtype:e.dtype,shape:t,dataId:e.dataId},r=s([Y(n)],c(Q(n)),!1),o=new Dt(r,t),i=[t],u=this.runWebGLProgram(o,[a],e.dtype,i,!0);return{dataId:u.dataId,shape:n,dtype:u.dtype}},t.prototype.decode=function(e,t){var a=this.texData.get(e),r=a.isPacked,o=a.shape,i=a.dtype;if(null!=t){var c=n.util.sizeFromShape(o),s=t[0]*t[1]*4;n.util.assert(c<=s,(function(){return"customTexShape is too small. Row * Column * 4 should be equal or larger than the size of the tensor data."}))}var u,l=Z(o);u=r?new Le(l):new Pe(l);var d=[null!=t?t:g(l)];return{dtype:i,shape:o,dataId:this.runWebGLProgram(u,[{shape:l,dtype:i,dataId:e}],i,d,!0,t).dataId}},t.prototype.runWebGLProgram=function(e,t,a,r,o,i){var c=this;void 0===o&&(o=!1);var s=this.makeTensorInfo(e.outputShape,a),l=this.texData.get(s.dataId);if(e.packedOutput&&(l.isPacked=!0),e.outPackingScheme===u.DENSE){var d=null!=i?i:g(e.outputShape);l.texShape=d.map((function(e){return 2*e}))}if(null!=e.outTexUsage&&(l.usage=e.outTexUsage),0===n.util.sizeFromShape(s.shape))return l.values=n.util.getTypedArrayFromDType(s.dtype,0),s;var p=[],h=t.map((function(t){if("complex64"===t.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var a=c.texData.get(t.dataId);if(null==a.texture){if(!e.packedInputs&&n.util.sizeFromShape(t.shape)<=n.env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:t.shape,texData:null,isUniform:!0,uniformValues:a.values};e.packedInputs&&(a.isPacked=!0,a.shape=t.shape)}if(c.uploadToGPU(t.dataId),!!a.isPacked!=!!e.packedInputs)t=a.isPacked?c.unpackTensor(t):c.packTensor(t),p.push(t),a=c.texData.get(t.dataId);else if(a.isPacked&&!ee(a.shape,t.shape)){var r=t,o=t.shape;t.shape=a.shape,t=c.packedReshape(t,o),p.push(t),a=c.texData.get(t.dataId),r.shape=o}return{shape:t.shape,texData:a,isUniform:!1}}));this.uploadToGPU(s.dataId);var f,x={shape:s.shape,texData:l,isUniform:!1},v=function(e,t,a){var r="";t.concat(a).forEach((function(t){var o=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0;if(e.enableShapeUniforms&&!t.isUniform){var i=t.texData.texShape,c=Ee(e.packedInputs,t.shape,i),s=c.useSqueezeShape,u=c.uniformShape,l=c.keptDims,d="",p="",h="";if(1===u.length&&e.packedInputs){var f=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];d="".concat(f[0]>1,"_").concat(f[1]>1)}else if(2!==u.length||e.packedInputs){if(u.length>2&&!e.packedInputs){var x=n.util.computeStrides(u);h="".concat(x[0]===i[1],"_").concat(x[x.length-1]===i[1])}}else p="".concat(u[0]>1,"_").concat(u[1]>1);var v=t.shape.length,g=2===u.length&&n.util.arraysEqual(t.shape,i),m=1===n.util.sizeFromShape(t.shape),b=n.backend_util.getBroadcastDims(t.shape,a.shape),C=!e.packedInputs&&v===a.shape.length&&n.util.arraysEqual(i,a.texData.texShape),y=e.packedInputs||u.length>2?"":"".concat(i[0]>1,"_").concat(i[1]>1);r+="".concat(v,"_").concat(C,"_").concat(s?l:"","_").concat(u.length,"_").concat(m,"_").concat(b,"_").concat(g,"_").concat(d,"_").concat(p,"_").concat(h,"_").concat(y,"_").concat(o)}else{var w=t.isUniform?"uniform":t.texData.texShape;r+="".concat(t.shape,"_").concat(w,"_").concat(o)}}));var o=e.userCode;return e.constructor.name+"_"+r+"_"+o+"".concat(n.env().getNumber("WEBGL_VERSION"))}(e,h,x),m=this.getAndSaveBinary(v,(function(){return function(e,t,a,r){var o=a.map((function(e,n){var a={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.isPacked,flatOffset:null};return null!=e.texData&&null!=e.texData.slice&&e.texData.slice.flatOffset>0&&(a.flatOffset=e.texData.slice.flatOffset),{name:t.variableNames[n],shapeInfo:a}})),i=o.map((function(e){return e.shapeInfo})),c={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},s=be(o,c,t),u=k(e.gl,s),l=e.createProgram(u);return n.env().get("ENGINE_COMPILE_ONLY")?{program:t,fragmentShader:u,source:s,webGLProgram:l,inShapeInfos:i,outShapeInfo:c,variablesLocations:null,customUniformLocations:null,infLoc:null,nanLoc:null,outShapeLocation:null,outShapeStridesLocation:null,outTexShapeLocation:null}:(e.buildVao(l),Object.assign({program:t,fragmentShader:u,source:s,webGLProgram:l,inShapeInfos:i,outShapeInfo:c},Oe(e,t,l)))}(c.gpgpu,e,h,x)})),b=null!=this.activeTimers;b&&(f=this.startTimer()),n.env().get("ENGINE_COMPILE_ONLY")||function(e,t,a,r,o){t.program.enableShapeUniforms||(Fe(t.inShapeInfos,a),Fe([t.outShapeInfo],[r]));var i=r.texData.texture,c=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(i.texture,c[0],c[1]):e.setOutputMatrixTexture(i.texture,c[0],c[1]),e.setProgram(t.webGLProgram),e.bindVertexArray(t.webGLProgram.vao),1===n.env().getNumber("WEBGL_VERSION")&&null!==t.infLoc&&e.gl.uniform1f(t.infLoc,1/0),null!==t.nanLoc&&e.gl.uniform1f(t.nanLoc,NaN);for(var s=0;s0){var y=n.util.now();y-this.lastGlFlushTime>C&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=y)}if(!n.env().getBool("WEBGL_LAZILY_UNPACK")&&l.isPacked&&!1===o){var w=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),w}return s},t.prototype.compileAndRun=function(e,n,t,a,r){return void 0===r&&(r=!1),t=t||n[0].dtype,this.runWebGLProgram(e,n,t,a,r)},t.prototype.getAndSaveBinary=function(e,n){return e in this.binaryCache||(this.binaryCache[e]=n()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;this.disposed||(n.env().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach((function(n){e.gpgpu.deleteProgram(e.binaryCache[n].webGLProgram),delete e.binaryCache[n]})),this.textureManager.dispose(),null!=this.canvas&&"undefined"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},t.prototype.floatPrecision=function(){var e=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=n.tidy((function(){if(!n.env().get("WEBGL_RENDER_FLOAT32_ENABLED")){var t=n.env().getBool("DEBUG");n.env().set("DEBUG",!1);var a=e.abs(n.scalar(1e-8)).dataSync()[0];if(n.env().set("DEBUG",t),a>0)return 32}return 16}))),this.floatPrecisionValue},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.uploadToGPU=function(e){var t,a=this.texData.get(e),r=a.shape,o=a.dtype,i=a.values,s=a.texture,u=a.usage,d=a.isPacked;if(null==s){var p,h=null!=this.activeTimers;h&&(p=n.util.now());var f=a.texShape;if(null==f&&(f=J(r,d),a.texShape=f),null!=i){var x,v=Z(r),g=f[1],b=f[0],C=i instanceof Uint8Array||i instanceof Uint8ClampedArray;!d&&C||(g=(t=c(m(f[0],f[1]),2))[0],b=t[1]),x=d?new Me(v,C):new Ue(v,C);var y=C?[b,g]:f,w=this.makeTensorInfo(y,o),I=this.texData.get(w.dataId);I.usage=C?l.PIXELS:l.UPLOAD,I.texShape=y,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(w.dataId),g,b,i);var S=[[b,g]],k=this.runWebGLProgram(x,[w],o,S,!0),R=this.texData.get(k.dataId);a.texShape=R.texShape,a.isPacked=R.isPacked,a.usage=R.usage,n.env().get("ENGINE_COMPILE_ONLY")?this.disposeData(k.dataId):(a.texture=R.texture,a.values=null,this.texData.delete(k.dataId)),this.disposeIntermediateTensorInfo(w),h&&(this.uploadWaitMs+=n.util.now()-p)}else{var T=this.acquireTexture(f,u,o,d);a.texture=T}}},t.prototype.convertAndCacheOnCPU=function(e,n){var t=this.texData.get(e),a=t.dtype;return null!=n&&(t.values=function(e,n){if("float32"===n||"complex64"===n)return e;if("int32"===n||"bool"===n){for(var t="int32"===n?new Int32Array(e.length):new Uint8Array(e.length),a=0;a1024*this.numMBBeforeWarning*1024){var r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: ".concat(r," MB, ")+"most likely due to a memory leak")}return this.textureManager.acquireTexture(e,n,a)},t.prototype.computeBytes=function(e,t){return e[0]*e[1]*n.util.bytesPerElement(t)},t.prototype.checkCompileCompletion=function(){var e,n;try{for(var t=i(Object.entries(this.binaryCache)),a=t.next();!a.done;a=t.next()){var r=c(a.value,2)[1];this.checkCompletion_(r)}}catch(n){e={error:n}}finally{try{a&&!a.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}},t.prototype.checkCompileCompletionAsync=function(){return r(this,void 0,void 0,(function(){var e,n,t,a,r,s,u,l,d,p,h,f,x,v=this;return o(this,(function(o){if(e=[],this.gpgpu.parallelCompilationExtension){try{for(n=i(Object.entries(this.binaryCache)),t=n.next();!t.done;t=n.next())a=c(t.value,2),d=a[1],e.push(this.checkCompletionAsync_(d))}catch(e){p={error:e}}finally{try{t&&!t.done&&(h=n.return)&&h.call(n)}finally{if(p)throw p.error}}return[2,Promise.all(e)]}r=function(n){var t=new Promise((function(e){try{v.checkCompletion_(n),e(!0)}catch(e){throw e}}));e.push(t)};try{for(s=i(Object.entries(this.binaryCache)),u=s.next();!u.done;u=s.next())l=c(u.value,2),d=l[1],r(d)}catch(e){f={error:e}}finally{try{u&&!u.done&&(x=s.return)&&x.call(s)}finally{if(f)throw f.error}}return[2,Promise.all(e)]}))}))},t.prototype.checkCompletionAsync_=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.parallelCompilationExtension.COMPLETION_STATUS_KHR)?[2,this.checkCompletion_(e)]:[3,1];case 1:return[4,n.nextFrame()];case 2:return t.sent(),[2,this.checkCompletionAsync_(e)]}}))}))},t.prototype.checkCompletion_=function(e){if(!1===this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.gl.LINK_STATUS)){if(console.log(this.gpgpu.gl.getProgramInfoLog(e.webGLProgram)),!1===this.gpgpu.gl.getShaderParameter(e.fragmentShader,this.gpgpu.gl.COMPILE_STATUS))throw E(e.source,this.gpgpu.gl.getShaderInfoLog(e.fragmentShader)),new Error("Failed to compile fragment shader.");throw new Error("Failed to link vertex and fragment shaders.")}return!0},t.prototype.getUniformLocations=function(){var e,n;try{for(var t=i(Object.values(this.binaryCache)),a=t.next();!a.done;a=t.next()){var r=a.value;this.gpgpu.buildVao(r.webGLProgram);var o=Oe(this.gpgpu,r.program,r.webGLProgram),c=o.variablesLocations,s=o.customUniformLocations,u=o.infLoc,l=o.nanLoc,d=o.outShapeLocation,p=o.outShapeStridesLocation,h=o.outTexShapeLocation;r.variablesLocations=c,r.customUniformLocations=s,r.infLoc=u,r.nanLoc=l,r.outShapeLocation=d,r.outShapeStridesLocation=p,r.outTexShapeLocation=h}}catch(n){e={error:n}}finally{try{a&&!a.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}},t.prototype.createTensorFromGPUData=function(e,t,a){e.channels=e.channels||"RGBA";var r=e.texture,o=e.height,i=e.width,c=e.channels,s=n.engine().backend;if(!s.gpgpu.gl.isTexture(r))throw new Error("The texture is invalid. Also, please make sure the texture and the TFJS WebGL backend are using the same canvas. If you want to use your own custom canvas, you have to create and use the custom TFJS WebGL backend created from the canvas through 'new tf.MathBackendWebGL(customCanvas)'.");var u=s.writeTexture(r,t,a,o,i,c);return n.engine().makeTensorFromDataId(u,t,a,s)},t}(n.KernelBackend);function qt(){n.env().set("WEBGL_FORCE_F16_TEXTURES",!0)}Kt.nextDataId=0,n.device_util.isBrowser()&&n.registerBackend("webgl",(function(){return new Kt}),2);var Yt={forceHalfFloat:qt},Qt=function(e,t,a){this.variableNames=["A","B"],this.outputShape=n.backend_util.assertAndGetBroadcastShape(t,a),this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n float binaryOperation(float a, float b) {\n ".concat(e,"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n ")},Zt="\n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n",Jt=function(e,t,a,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n.backend_util.assertAndGetBroadcastShape(t,a);var o=this.outputShape.length;this.enableShapeUniforms=De(o);var i="";if(r)if(0===o||1===n.util.sizeFromShape(this.outputShape))i="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else{var c=Ne(o);if(i="\n ".concat(c," coords = getOutputCoords();\n "),1===o)this.enableShapeUniforms?i+="\n result.y = (coords + 1) >= outShape ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ":i+="\n result.y = (coords + 1) >= ".concat(this.outputShape[0]," ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ");else{var s=Ot("coords",o);this.enableShapeUniforms?i+="\n bool nextRowOutOfBounds =\n (".concat(s[o-2]," + 1) >= outShape[").concat(o," - 2];\n bool nextColOutOfBounds =\n (").concat(s[o-1]," + 1) >= outShape[").concat(o," - 1];\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n "):i+="\n bool nextRowOutOfBounds =\n (".concat(s[o-2]," + 1) >= ").concat(this.outputShape[o-2],";\n bool nextColOutOfBounds =\n (").concat(s[o-1]," + 1) >= ").concat(this.outputShape[o-1],";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n ")}}this.userCode="\n vec4 binaryOperation(vec4 a, vec4 b) {\n ".concat(e,"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n ").concat(i,"\n\n setOutput(result);\n }\n ")};function $t(e){var n=e.inputs,t=e.backend,a=n.x;return t.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var ea={kernelName:n.Identity,backendName:"webgl",kernelFunc:$t};function na(e){var n=e.inputs,t=e.backend,a=n.real,r=n.imag,o=t.makeTensorInfo(a.shape,"complex64"),i=t.texData.get(o.dataId),c=$t({inputs:{x:a},backend:t}),s=$t({inputs:{x:r},backend:t});return i.complexTensorInfos={real:c,imag:s},o}var ta={kernelName:n.Complex,backendName:"webgl",kernelFunc:na},aa="return (a < 0.) ? b * a : a;",ra="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",oa={kernelName:n.LeakyRelu,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.alpha,c=a.makeTensorInfo([],"float32",n.util.createScalarValue(i,"float32")),s=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Jt(ra,o.shape,c.shape):new Qt(aa,o.shape,c.shape),u=a.runWebGLProgram(s,[o,c],"float32");return a.disposeIntermediateTensorInfo(c),u}},ia="return (a < 0.) ? b * a : a;",ca="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",sa={kernelName:n.Prelu,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.x,o=t.alpha,i=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Jt(ca,r.shape,o.shape):new Qt(ia,r.shape,o.shape);return a.runWebGLProgram(i,[r,o],"float32")}};function ua(e){var t=e.opSnippet,a=e.packedOpSnippet,r=e.cpuKernelImpl,o=e.dtype;return function(e){var i,c=e.inputs,s=e.backend,u=c.x,l=s,d=o||u.dtype;if(l.shouldExecuteOnCPU([u])&&null!=r){var p=l.texData.get(u.dataId),h=r(p.values,d);return l.makeTensorInfo(u.shape,d,h)}return i=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&null!=a?new Gt(u.shape,a):new Wt(u.shape,t),l.runWebGLProgram(i,[u],d)}}function la(e){var t=e.opSnippet,a=e.packedOpSnippet,r=e.checkOutOfBounds,o=void 0!==r&&r,i=e.supportsComplex,s=void 0!==i&&i,u=e.cpuKernelImpl,l=e.dtype;return function(e){var r=e.inputs,i=e.backend,d=r.a,p=r.b,h=i;if(s&&"complex64"===d.dtype){var f=h.texData.get(d.dataId),x=h.texData.get(p.dataId),v=c([[f.complexTensorInfos.real,x.complexTensorInfos.real],[f.complexTensorInfos.imag,x.complexTensorInfos.imag]].map((function(e){var a=c(e,2),r=a[0],o=a[1],i={dataId:r.dataId,dtype:r.dtype,shape:d.shape},s={dataId:o.dataId,dtype:o.dtype,shape:p.shape},u=new Qt(t,d.shape,p.shape);return h.runWebGLProgram(u,[i,s],n.upcastType(r.dtype,o.dtype))})),2),g=v[0],m=v[1],b=na({inputs:{real:g,imag:m},backend:h});return h.disposeIntermediateTensorInfo(g),h.disposeIntermediateTensorInfo(m),b}var C,y=l||n.upcastType(d.dtype,p.dtype);if(("string"===d.dtype||"string"===p.dtype||h.shouldExecuteOnCPU([d,p]))&&null!=u){var w=h.texData.get(d.dataId).values,I=h.texData.get(p.dataId).values,S="string"===d.dtype?n.backend_util.fromUint8ToStringArray(w):w,k="string"===d.dtype?n.backend_util.fromUint8ToStringArray(I):I,R=c(u(d.shape,p.shape,S,k,y),2),T=R[0],N=R[1],E=h.makeTensorInfo(N,y);return h.texData.get(E.dataId).values=T,E}return C=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&null!=a?new Jt(a,d.shape,p.shape,o):new Qt(t,d.shape,p.shape),h.runWebGLProgram(C,[d,p],y)}}function da(e,n){if(void 0===n&&(n=!1),"linear"===e)return"return x;";if("relu"===e)return n?"\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":"if (isnan(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n";if("elu"===e)return n?"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n":"return (x >= 0.0) ? x : (exp(x) - 1.0);";if("relu6"===e)return n?"\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":"if (isnan(x)) return x;\n return (x < 0.0) ? 0.0 : min(6.0, x);\n";if("prelu"===e)return n?ca:ia;if("leakyrelu"===e)return n?ra:aa;if("sigmoid"===e)return"return 1.0 / (1.0 + exp(-1.0 * x));";throw new Error("Activation ".concat(e," has not been implemented for the WebGL backend."))}var pa=function(e,n,t,a,r,o,i,c,s){void 0===a&&(a=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===i&&(i=null),void 0===c&&(c=!1),void 0===s&&(s=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.enableShapeUniforms=De(this.outputShape.length);var u=a?e[1]:e[2],l=Math.ceil(u/2),d=a?"i * 2, rc.y":"rc.y, i * 2",p=r?"rc.z, i * 2":"i * 2, rc.z",h=a?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],x="",v="";i&&(x=c?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ".concat(i,"\n }"):s?"vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ".concat(i,"\n }"):"vec4 activation(vec4 x) {\n ".concat(i,"\n }"),v="result = activation(result);");var g=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),c&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha");var m="rc.x",b="rc.x";e[0]0&&(d="\n if (inIdx < 0 || inIdx >= ".concat(o,") {\n return 0.0;\n }\n ")),this.userCode="\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ".concat(d,"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ").concat(a,";\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ").concat(c,"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ").concat(u,"\n }\n\n int inIdx = inOffset + ").concat(c,";\n if (").concat(1===s,") {\n vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0);\n\n ").concat(u,"\n } else if (").concat(2===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1), 0.0, 0.0);\n\n ").concat(u,"\n } else if (").concat(3===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2), 0.0);\n\n ").concat(u,"\n }\n setOutput(sumValue);\n }\n ")},Ca=function(e,n){this.variableNames=["x"];var t=e.windowSize,a=e.batchSize,r=e.inSize,o=e.outSize;this.outputShape=[a,o];var i="0.0",c="";"prod"===n?i="1.0":"min"===n?(i="1.0 / 1e-20",c="min"):"max"===n&&(i="-1.0 / 1e-20",c="max");var s="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===n?s="sumValue":"prod"===n?s="prodValue":"all"===n?s="allValue":"any"===n&&(s="anyValue");var u=4*Math.floor(t/4),l=t%4,d="\n if (".concat("sum"===n,") {\n sumValue += dot(values, ones);\n } else if (").concat("prod"===n,") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = ").concat(c,"(values, minMaxValue);\n if (").concat("min"===n," || ").concat("max"===n,") {\n minMaxValue = ").concat(c,"(values, minMaxValue);\n bvec4 isNaN = isnan(values);\n if (isNaN.r || isNaN.g || isNaN.b || isNaN.a) {\n minMaxValue = vec4(NAN);\n }\n }\n }\n "),p="vec4";"all"===n?(i="1.0",d="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===n&&(i="0.0",d="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";r%t>0&&(h="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return initializationValue;\n }\n ")),this.userCode="\n const float initializationValue = ".concat(i,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ").concat(h,"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ").concat(t,";\n\n vec4 minMaxValue = vec4(").concat(i,");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < ").concat(u,"; i += 4) {\n int inIdx = inOffset + i;\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ").concat(d,"\n }\n\n int inIdx = inOffset + ").concat(u,";\n if (").concat(1===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(d,"\n } else if (").concat(2===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n ").concat(d,"\n } else if (").concat(3===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n ").concat(d,"\n }\n setOutput(").concat(s,");\n }\n ")};function ya(e,t,a,r){for(var o=function(e){for(var t=[];0===t.length||1!==t[t.length-1].outSize;){var a=t.length?t[t.length-1].outSize:e[1],r=n.backend_util.computeOptimalWindowSize(a);t.push({inSize:a,windowSize:r,outSize:Math.ceil(a/r)})}return t}(e.shape),i=e,c=0;c6)throw Error("Transpose for rank ".concat(n," is not yet supported"));for(var t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],a=new Array(n),r=0;r6)throw Error("Packed transpose for rank ".concat(this.rank," is not yet supported."));var r=Ne(this.rank),o=_t("rc",this.rank),i=new Array(this.rank);for(a=0;a1e3&&!1===(B||V||W||null!=U)){var M=O,G=F;c&&(M=Ta({inputs:{x:O},backend:u,attrs:{perm:[0,2,1]}}),D.push(M)),s&&(G=Ta({inputs:{x:F},backend:u,attrs:{perm:[0,2,1]}}),D.push(G));var z=1===I,X=M;1!==I&&(X=ga({inputs:{x:M},backend:u,attrs:{shape:[P,L,1]}}),D.push(X));var H=1===I?2:1,j=G;z&&(j=ga({inputs:{x:G},backend:u,attrs:{shape:[P,1,L]}}),D.push(j));var K=xa({inputs:{a:X,b:j},backend:u});E=ka({inputs:{x:K},backend:u,attrs:{axis:H,keepDims:!0}}),D.push(K)}else{var q=n.upcastType(r.dtype,o.dtype),Y=new pa(A,_,[P,w,I],c,s,B,U,V,W),Q=[O,F];if(null!=d&&Q.push(d),V&&Q.push(h),W){var Z=u.makeTensorInfo([],"float32",n.util.createScalarValue(x,"float32"));Q.push(Z),D.push(Z)}E=u.runWebGLProgram(Y,Q,q)}var J=ga({inputs:{x:E},backend:u,attrs:{shape:N}});D.push(E);try{for(var $=i(D),ee=$.next();!ee.done;ee=$.next()){var ne=ee.value;u.disposeIntermediateTensorInfo(ne)}}catch(e){t={error:e}}finally{try{ee&&!ee.done&&(a=$.return)&&a.call($)}finally{if(t)throw t.error}}return J}var Aa={kernelName:n._FusedMatMul,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.a,o=n.b,i=n.bias,c=n.preluActivationWeights,s=a.transposeA,u=a.transposeB,l=a.activation;return Ea({a:r,b:o,transposeA:s,transposeB:u,backend:t,bias:i,preluActivationWeights:c,leakyreluAlpha:a.leakyreluAlpha,activation:l})}},_a="return abs(x);",Oa={kernelName:n.Abs,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.x;if(r.shouldExecuteOnCPU([o])&&"complex64"!==o.dtype){var i=r.texData.get(o.dataId),c=mt(i.values);return r.makeTensorInfo(o.shape,o.dtype,c)}return t=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Gt(o.shape,_a):new Wt(o.shape,_a),r.runWebGLProgram(t,[o],o.dtype)}},Fa=ua({opSnippet:"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n"}),Da={kernelName:n.Acos,backendName:"webgl",kernelFunc:Fa},Pa=ua({opSnippet:"if (isnan(x)) return x;\n if (x < 1.0) return NAN;\nreturn log(x + sqrt(x * x - 1.0));"}),La={kernelName:n.Acosh,backendName:"webgl",kernelFunc:Pa},Ba="return a + b;",Va=la({opSnippet:Ba,packedOpSnippet:Ba,supportsComplex:!0,cpuKernelImpl:Kn}),Wa={kernelName:n.Add,backendName:"webgl",kernelFunc:Va},Ua=function(e,n){this.outputShape=[],this.outputShape=e,this.variableNames=n.map((function(e,n){return"T".concat(n)}));var t=[];this.variableNames.forEach((function(e){t.push("float v".concat(e," = get").concat(e,"AtOutCoords();"))}));var a=this.variableNames.map((function(e){return"v".concat(e)})).join(" + ");this.userCode="\n void main() {\n ".concat(t.join("\n "),"\n\n float result = ").concat(a,";\n setOutput(result);\n }\n ")},Ma=function(e,n){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=n.map((function(e,n){return"T".concat(n)}));var t=[];this.variableNames.forEach((function(e){t.push("vec4 v".concat(e," = get").concat(e,"AtOutCoords();"))}));var a=this.variableNames.map((function(e){return"v".concat(e)})).join(" + ");this.userCode="\n void main() {\n ".concat(t.join("\n "),"\n\n vec4 result = ").concat(a,";\n setOutput(result);\n }\n ")},Ga={kernelName:n.AddN,backendName:"webgl",kernelFunc:function e(t){var a=t.inputs,r=t.backend,o=a;if(1===o.length)return $t({inputs:{x:o[0]},backend:r});if(o.length>n.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var i=Math.floor(o.length/2),c=e({inputs:o.slice(0,i),backend:r}),s=e({inputs:o.slice(i),backend:r});return e({inputs:[c,s],backend:r})}var u=o.map((function(e){return e.dtype})).reduce((function(e,t){return n.upcastType(e,t)})),l=o.map((function(e){return e.shape})),d=n.env().getBool("WEBGL_PACK")?new Ma(o[0].shape,l):new Ua(o[0].shape,l);return r.runWebGLProgram(d,o,u)}},za={kernelName:n.All,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=o;null!=p&&(h=Ta({inputs:{x:o},backend:a,attrs:{perm:p}}),d=n.backend_util.getInnerMostAxes(d.length,u)),n.backend_util.assertAxesAreInnerMostDims("all",d,u);var f,x=c(n.backend_util.computeOutAndReduceShapes(h.shape,d),2),v=x[0],g=x[1],m=ga({inputs:{x:h},backend:a,attrs:{shape:[-1,n.util.sizeFromShape(g)]}}),b=ya(m,m.dtype,"all",a);return f=ga(s?{inputs:{x:b},backend:a,attrs:{shape:n.backend_util.expandShapeToKeepDim(v,l)}}:{inputs:{x:b},backend:a,attrs:{shape:v}}),a.disposeIntermediateTensorInfo(m),a.disposeIntermediateTensorInfo(b),null!=p&&a.disposeIntermediateTensorInfo(h),f}},Xa={kernelName:n.Any,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=o;null!=p&&(h=Ta({inputs:{x:o},backend:a,attrs:{perm:p}}),d=n.backend_util.getInnerMostAxes(d.length,u)),n.backend_util.assertAxesAreInnerMostDims("any",d,u);var f,x=c(n.backend_util.computeOutAndReduceShapes(h.shape,d),2),v=x[0],g=x[1],m=ga({inputs:{x:h},backend:a,attrs:{shape:[-1,n.util.sizeFromShape(g)]}}),b=ya(m,m.dtype,"any",a);return f=ga(s?{inputs:{x:b},backend:a,attrs:{shape:n.backend_util.expandShapeToKeepDim(v,l)}}:{inputs:{x:b},backend:a,attrs:{shape:v}}),a.disposeIntermediateTensorInfo(m),a.disposeIntermediateTensorInfo(b),null!=p&&a.disposeIntermediateTensorInfo(h),f}},Ha=function(e,n,t){this.variableNames=["A"];var a=e.windowSize,r=e.batchSize,o=e.outSize;t||this.variableNames.push("bestIndicesA"),this.outputShape=[r,o];var i="max"===n?">":"<",c=t?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ".concat(a,";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < ").concat(a,"; i++) {\n int inIdx = ").concat(c,";\n float candidate = getA(batch, inIdx);\n if (candidate ").concat(i," bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n ")},ja=function(e,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,n.util.assert(e.length>2,(function(){return"Packed arg".concat(a.charAt(0).toUpperCase()+a.slice(1)," supports only inputs with rank above 2.")}));var o=e[e.length-1],i=Math.ceil(o/t);this.outputShape=e.slice(0,-1),i>1&&this.outputShape.push(i),r||this.variableNames.push("bestIndicesA");var c,s,u=this.outputShape,l=u.length,d=Ne(l),p=Ot("coords",l);if(1===i){var h=Ne(s=l+1);c="\n ".concat(h," sourceLocR = ").concat(h,"(").concat(p.join(),", 0);\n ++").concat(p[l-1],";\n ").concat(h," sourceLocG = ").concat(h,"(").concat(p.join(),", 0);\n ++").concat(p[l-2],";\n ").concat(h," sourceLocA = ").concat(h,"(").concat(p.join(),", 0);\n --").concat(p[l-1],";\n ").concat(h," sourceLocB = ").concat(h,"(").concat(p.join(),", 0);\n --").concat(p[l-2],";")}else s=l,c="\n ".concat(d," sourceLocR = coords;\n ++").concat(p[l-1],";\n ").concat(d," sourceLocG = coords;\n ++").concat(p[l-2],";\n ").concat(d," sourceLocA = coords;\n --").concat(p[l-1],";\n ").concat(d," sourceLocB = coords;\n --").concat(p[l-2],";");var f=["x","y","z","w","u","v"].slice(0,s),x="."+f[s-1],v=f.map((function(e){return"int "+e})),g=Ot("sourceLocR",s-1).concat("inIdx.r"),m=Ot("sourceLocG",s-1).concat("inIdx.g"),b=Ot("sourceLocB",s-1).concat("inIdx.b"),C=Ot("sourceLocA",s-1).concat("inIdx.a"),y="max"===a?"greaterThan":"lessThan",w=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel(".concat(g.join(),"),\n getBestIndicesAChannel(").concat(m.join(),"),\n getBestIndicesAChannel(").concat(b.join(),"),\n getBestIndicesAChannel(").concat(C.join(),")));"),I="vec4(\n getAChannel(".concat(g.join(),"),\n hasNextCol ? getAChannel(").concat(m.join(),") : 0.,\n hasNextRow ? getAChannel(").concat(b.join(),") : 0.,\n hasNextRow && hasNextCol ? getAChannel(").concat(C.join(),") : 0.)"),S=r?"":"\n float getBestIndicesAChannel(".concat(v.join(),") {\n return getChannel(getBestIndicesA(").concat(f.join(),"),\n vec2(").concat(f.slice(-2).join(),"));\n }");this.userCode="\n float getAChannel(".concat(v.join(),") {\n return getChannel(getA(").concat(f.join(),"),\n vec2(").concat(f.slice(-2).join(),"));\n }\n ").concat(S,"\n void main() {\n ").concat(d," coords = getOutputCoords();\n bool hasNextCol = ").concat(p[l-1]," < ").concat(u[l-1]-1,";\n bool hasNextRow = ").concat(p[l-2]," < ").concat(u[l-2]-1,";\n ").concat(c,"\n ivec4 srcIdx = ivec4(sourceLocR").concat(x,", sourceLocG").concat(x,",\n sourceLocB").concat(x,", sourceLocA").concat(x,") * ").concat(t,";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = ").concat(I,";\n\n for (int i = 0; i < ").concat(t,"; i++) {\n inIdx = srcIdx;\n ").concat(w,"\n vec4 candidate = ").concat(I,";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4(").concat(y,"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n ")};function Ka(e,t,a,r){void 0===r&&(r=null);var o=t.shape[0],i=t.shape[1];null!=r&&(o=r.shape[0],i=r.shape[1]);var c=n.backend_util.computeOptimalWindowSize(i),s={windowSize:c,inSize:i,batchSize:o,outSize:Math.ceil(i/c)},u=new Ha(s,a,null==r),l=[t];null!=r&&l.push(r);var d=e.runWebGLProgram(u,l,"int32");if(1===d.shape[1])return d;var p=Ka(e,t,a,d);return e.disposeIntermediateTensorInfo(d),p}function qa(e,t,a,r){void 0===r&&(r=null);var o=null!=r?r.shape:t.shape,i=o[o.length-1],c=n.backend_util.computeOptimalWindowSize(i),s=new ja(o,c,a,null==r),u=null==r?[t]:[t,r],l=e.runWebGLProgram(s,u,"int32");if(l.shape.length===t.shape.length){var d=qa(e,t,a,l);return e.disposeIntermediateTensorInfo(l),d}return l}function Ya(e,t,a,r){var o=[a];if(n.backend_util.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),o,t.shape.length),!n.env().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){var i=[],s=e.texData.get(t.dataId),u=t;null!==s&&s.isPacked&&(u=e.unpackTensor(t),i.push(u));var l=c(n.backend_util.computeOutAndReduceShapes(u.shape,o),2),d=l[0],p=l[1],h=n.util.sizeFromShape(p),f=ga({inputs:{x:u},backend:e,attrs:{shape:[-1,h]}});i.push(f);var x=Ka(e,f,r);i.push(x);var v=ga({inputs:{x},backend:e,attrs:{shape:d}});return i.forEach((function(n){return e.disposeIntermediateTensorInfo(n)})),v}return qa(e,t,r)}var Qa={kernelName:n.ArgMax,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,c=n.util.parseAxisParam(i,o.shape),s=n.backend_util.getAxesPermutation(c,o.shape.length),u=o,l=[];null!=s&&(u=Ta({inputs:{x:o},backend:a,attrs:{perm:s}}),l.push(u),c=n.backend_util.getInnerMostAxes(c.length,u.shape.length)),n.backend_util.assertAxesAreInnerMostDims("argMax",[c[0]],u.shape.length);var d=Ya(a,u,c[0],"max");return l.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),d}},Za={kernelName:n.ArgMin,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,c=n.util.parseAxisParam(i,o.shape),s=n.backend_util.getAxesPermutation(c,o.shape.length),u=o,l=[];null!=s&&(u=Ta({inputs:{x:o},backend:a,attrs:{perm:s}}),l.push(u),c=n.backend_util.getInnerMostAxes(c.length,u.shape.length)),n.backend_util.assertAxesAreInnerMostDims("argMin",[c[0]],u.shape.length);var d=Ya(a,u,c[0],"min");return l.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),d}},Ja=ua({opSnippet:"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n"}),$a={kernelName:n.Asin,backendName:"webgl",kernelFunc:Ja},er=ua({opSnippet:"if (isnan(x)) return x;return log(x + sqrt(x * x + 1.0));"}),nr={kernelName:n.Asinh,backendName:"webgl",kernelFunc:er},tr=ua({opSnippet:"if (isnan(x)) return x;\n return atan(x);\n"}),ar={kernelName:n.Atan,backendName:"webgl",kernelFunc:tr},rr=la({opSnippet:"\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",packedOpSnippet:"\n vec4 result = atan(a, b);\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n \n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n\n return result;\n"}),or={kernelName:n.Atan2,backendName:"webgl",kernelFunc:rr},ir=ua({opSnippet:"if (isnan(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\nreturn (log(1.0 + x) - log(1.0 - x)) / 2.0;"}),cr={kernelName:n.Atanh,backendName:"webgl",kernelFunc:ir},sr=function(e,n,t,a,r){if(void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x"],"avg"===n&&t)throw new Error("Cannot compute positions for average pool.");var o=e.filterWidth,i=e.strideHeight,c=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=e.padInfo.top,h=e.padInfo.left;this.outputShape=e.outShape;var f="avg"===n,x="((batch * ".concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + d"),v="(xR * ".concat(e.inWidth," + xC) * ").concat(e.inChannels," + d"),g="0.0";if(f||(g="-1.0 / 1e-20"),t)this.userCode="\n const ivec2 strides = ivec2(".concat(i,", ").concat(c,");\n const ivec2 pads = ivec2(").concat(p,", ").concat(h,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < ").concat(l,";\n wR += ").concat(s,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(d,";\n wC += ").concat(u,") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ").concat(">="," currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ").concat(a?r?x:v:"wR * ".concat(d," + wC"),";\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ");else{var m="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===n&&(m="avgValue / max(count, 1.0)");var b=4*Math.floor(o/4),C=o%4,y="\n if (".concat(f,") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ").concat("max","(values, minMaxValue);\n }\n ");this.userCode="\n const ivec2 strides = ivec2(".concat(i,", ").concat(c,");\n const ivec2 pads = ivec2(").concat(p,", ").concat(h,");\n const float initializationValue = ").concat(g,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4(").concat(g,");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < ").concat(l,";\n wR += ").concat(s,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(b,"; wC += 4) {\n int xC = xCCorner + wC * ").concat(u,";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n getValue(batch, xR, xC + 2 * ").concat(u,", d),\n getValue(batch, xR, xC + 3 * ").concat(u,", d)\n );\n\n ").concat(y,"\n }\n\n int xC = xCCorner + ").concat(b,";\n if (").concat(1===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(y,"\n } else if (").concat(2===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n initializationValue,\n initializationValue\n );\n\n ").concat(y,"\n } else if (").concat(3===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n getValue(batch, xR, xC + 2 * ").concat(u,", d),\n initializationValue\n );\n\n ").concat(y,"\n }\n }\n setOutput(").concat(m,");\n }\n ")}},ur=function(e,n,t,a,r){if(void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x"],"avg"===n&&t)throw new Error("Cannot compute positions for average pool.");var o=e.filterWidth,i=e.strideDepth,c=e.strideHeight,s=e.strideWidth,u=e.dilationDepth,l=e.dilationHeight,d=e.dilationWidth,p=e.effectiveFilterDepth,h=e.effectiveFilterHeight,f=e.effectiveFilterWidth,x=e.padInfo.front,v=e.padInfo.top,g=e.padInfo.left;this.outputShape=e.outShape;var m="avg"===n,b="0.0";if(m||(b="-1.0 / 1e-20"),t)this.userCode="\n const ivec3 strides =\n ivec3(".concat(i,", ").concat(c,", ").concat(s,");\n const ivec3 pads = ivec3(").concat(x,", ").concat(v,", ").concat(g,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < ").concat(p,";\n wD += ").concat(u,") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(h,";\n wR += ").concat(l,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(f,";\n wC += ").concat(d,") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ").concat(">="," currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ").concat(a?r?"(((batch * ".concat(e.inDepth," + xD) * ").concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + ch"):"((xD * ".concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + ch"):"wD * ".concat(h," * ").concat(f," +\n wR * ").concat(f," + wC"),";\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ");else{var C="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===n&&(C="avgValue / max(count, 1.0)");var y=4*Math.floor(o/4),w=o%4,I="\n if (".concat(m,") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ").concat("max","(values, minMaxValue);\n }\n ");this.userCode="\n const ivec3 strides =\n ivec3(".concat(i,", ").concat(c,", ").concat(s,");\n const ivec3 pads = ivec3(").concat(x,", ").concat(v,", ").concat(g,");\n const float initializationValue = ").concat(b,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4(").concat(b,");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < ").concat(p,";\n wD += ").concat(u,") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(h,";\n wR += ").concat(l,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(y,"; wC += 4) {\n int xC = xCCorner + wC * ").concat(d,";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 2 * ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 3 * ").concat(d,", ch)\n );\n\n ").concat(I,"\n }\n\n int xC = xCCorner + ").concat(y,";\n if (").concat(1===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(I,"\n } else if (").concat(2===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n initializationValue,\n initializationValue\n );\n\n ").concat(I,"\n } else if (").concat(3===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 2 * ").concat(d,", ch),\n initializationValue\n );\n\n ").concat(I,"\n }\n }\n }\n setOutput(").concat(C,");\n }\n ")}},lr={kernelName:n.AvgPool,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x;le(o,"avgPool");var i=r.filterSize,c=r.strides,s=r.pad,u=r.dimRoundingMode;n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(c,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(c," and dilations '").concat(1,"'")}));var l=n.backend_util.computePool2DInfo(o.shape,i,c,1,s,u);if(1===l.filterWidth&&1===l.filterHeight&&n.util.arraysEqual(l.inShape,l.outShape))return $t({inputs:{x:o},backend:a});var d=new sr(l,"avg",!1);return a.runWebGLProgram(d,[o],"float32")}},dr={kernelName:n.AvgPool3D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.filterSize,c=r.strides,s=r.pad,u=r.dimRoundingMode,l=r.dataFormat,d=n.backend_util.computePool3DInfo(o.shape,i,c,[1,1,1],s,u,l),p=new ur(d,"avg",!1);return a.runWebGLProgram(p,[o],"float32")}},pr=function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o=e.dilationHeight,i=e.dilationWidth,c=e.effectiveFilterHeight,s=e.effectiveFilterWidth,u=c-1-e.padInfo.top,l=s-1-e.padInfo.left,d=1/(n*t);this.userCode="\n const ivec2 pads = ivec2(".concat(u,", ").concat(l,");\n const float avgMultiplier = float(").concat(d,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(c,";\n wR += ").concat(o,") {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(s,";\n wC+= ").concat(i,") {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n ")},hr=function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var n=e.filterDepth,t=e.filterHeight,a=e.filterWidth,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterDepth,d=e.effectiveFilterHeight,p=e.effectiveFilterWidth,h=l-1-e.padInfo.front,f=d-1-e.padInfo.top,x=p-1-e.padInfo.left,v=1/(n*t*a);this.userCode="\n const ivec3 pads = ivec3(".concat(h,", ").concat(f,", ").concat(x,");\n const float avgMultiplier = float(").concat(v,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ").concat(l,";\n wD += ").concat(c,") {\n float dyD = float(dyDCorner + wD) / ").concat(r,".0;\n\n if (dyD < 0.0 || dyD >= ").concat(e.outDepth,".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ").concat(d,";\n wR += ").concat(s,") {\n float dyR = float(dyRCorner + wR) / ").concat(o,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(p,";\n wC += ").concat(u,") {\n float dyC = float(dyCCorner + wC) / ").concat(i,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},fr={kernelName:n.AvgPool3DGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=r.filterSize,s=r.strides,u=r.pad,l=r.dimRoundingMode,d=n.backend_util.computePool3DInfo(i.shape,c,s,[1,1,1],u,l),p=new hr(d);return a.runWebGLProgram(p,[o],i.dtype)}},xr={kernelName:n.AvgPoolGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=i;le([o,i],"avgPoolGrad");var s=r.filterSize,u=r.strides,l=r.pad,d=n.backend_util.computePool2DInfo(c.shape,s,u,1,l),p=new pr(d);return a.runWebGLProgram(p,[o],c.dtype)}},vr={kernelName:n.BatchMatMul,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs;return Ea({a:n.a,b:n.b,transposeA:a.transposeA,transposeB:a.transposeB,backend:t})}},gr=function(e,t,a,r,o,i){this.outputShape=[],this.variableNames=["x","mean","variance"],n.backend_util.assertAndGetBroadcastShape(e,t),n.backend_util.assertAndGetBroadcastShape(e,a);var c="0.0";null!=r&&(n.backend_util.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),c="getOffsetAtOutCoords()");var s="1.0";null!=o&&(n.backend_util.assertAndGetBroadcastShape(e,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=e,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = ".concat(c,";\n float scale = ").concat(s,";\n float inv = scale * inversesqrt(variance + float(").concat(i,"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n ")},mr=function(e,t,a,r,o,i){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],n.backend_util.assertAndGetBroadcastShape(e,t),n.backend_util.assertAndGetBroadcastShape(e,a);var c="vec4(0.0)";null!=r&&(n.backend_util.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),c="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(n.backend_util.assertAndGetBroadcastShape(e,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=e,this.userCode="\n void main() {\n vec4 offset = ".concat(c,";\n vec4 scale = ").concat(s,";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4(").concat(i,"));\n\n setOutput((x - mean) * inv + offset);\n }\n ")},br={kernelName:n.FusedBatchNorm,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.mean,c=t.variance,s=t.offset,u=t.scale;n.util.assert(i.shape.length===c.shape.length,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),n.util.assert(null==s||i.shape.length===s.shape.length,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),n.util.assert(null==u||i.shape.length===u.shape.length,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var l=r.varianceEpsilon;null==l&&(l=.001);var d=[o,i,c],p=null;null!=s&&(p=s.shape,d.push(s));var h=null;null!=u&&(h=u.shape,d.push(u));var f=n.env().getBool("WEBGL_PACK_NORMALIZATION")?new mr(o.shape,i.shape,c.shape,p,h,l):new gr(o.shape,i.shape,c.shape,p,h,l);return a.runWebGLProgram(f,d,d[0].dtype)}},Cr=function(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var n=Ne(this.rank);this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];var t,a=function(e){if(1===e)return"sourceLoc";if(e<=6)return yr.slice(0,e).map((function(e){return"sourceLoc."+e})).join(",");throw Error("Slicing for rank ".concat(e," is not yet supported"))}(this.rank),r=e.map((function(e,n){return"sourceLoc.".concat(yr[n]," = start[").concat(n,"] + coords.").concat(yr[n],";")}));t="\n ".concat(n," sourceLoc;\n ").concat(n," coords = getOutputCoords();\n ").concat(r.join("\n"),"\n "),this.userCode="\n void main() {\n ".concat(t,"\n setOutput(getSource(").concat(a,"));\n }\n ")},yr=["x","y","z","w","u","v"],wr=function(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length,this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];var n=Ne(this.rank),t=Ot("coords",this.rank),a=Ot("sourceLoc",this.rank),r=1===this.rank?"sourceLoc":"vec2(".concat(a.slice(-2).join(),")"),o="getChannel(getSource(".concat(a.join(),"), ").concat(r,")"),i="\n result.x = ".concat(o,";\n if (++").concat(t[this.rank-1]," < ").concat(e[this.rank-1],") {\n ++").concat(a[this.rank-1],";\n result.y = ").concat(o,";\n --").concat(a[this.rank-1],";\n }\n "),c=1===this.rank?"":"\n --".concat(t[this.rank-1],";\n if (++").concat(t[this.rank-2]," < ").concat(e[this.rank-2],") {\n ++").concat(a[this.rank-2],";\n result.z = ").concat(o,";\n if (++").concat(t[this.rank-1]," < ").concat(e[this.rank-1],") {\n ++").concat(a[this.rank-1],";\n result.w = ").concat(o,";\n }\n }\n "),s=this.rank<=4?"sourceLoc = coords +\n ".concat(n,"(").concat(e.map((function(e,n){return"start[".concat(n,"]")})).join(),");"):e.map((function(e,n){return"".concat(a[n]," = ").concat(t[n]," + start[").concat(n,"];")})).join("\n");this.userCode="\n void main() {\n ".concat(n," coords = getOutputCoords();\n ").concat(n," sourceLoc;\n ").concat(s,"\n vec4 result = vec4(0.);\n ").concat(i,"\n ").concat(c,"\n setOutput(result);\n }\n ")};function Ir(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.begin,s=r.size,u=c(n.slice_util.parseSliceParams(o,i,s),2),l=u[0],d=u[1];if(n.slice_util.assertParamsValid(o,l,d),0===n.util.sizeFromShape(d))return a.makeTensorInfo(d,o.dtype,[]);if(a.shouldExecuteOnCPU([o])||"string"===o.dtype){var p=a.texData.get(o.dataId),h=bt(p.values,l,d,o.shape,o.dtype);return a.makeTensorInfo(d,o.dtype,h)}var f=a.texData.get(o.dataId).isPacked,x=n.slice_util.isSliceContinous(o.shape,l,d);if(f||!x){var v=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new wr(d):new Cr(d),g=[l];return a.runWebGLProgram(v,[o],o.dtype,g)}return a.uploadToGPU(o.dataId),function(e,t,a,r){var o=r.texData.get(e.dataId),i=r.makeTensorInfo(a,e.dtype),c=r.texData.get(i.dataId);Object.assign(c,o),c.refCount=1,c.shape=a,c.dtype=e.dtype;var s=n.slice_util.computeFlatOffset(t,n.util.computeStrides(e.shape));o.slice&&(s+=o.slice.flatOffset),c.slice={flatOffset:s,origDataId:o.slice&&o.slice.origDataId||e.dataId};var u=r.dataRefCount.get(c.slice.origDataId)||1;return r.dataRefCount.set(c.slice.origDataId,u+1),i}(o,l,d,a)}var Sr={kernelName:n.Slice,backendName:"webgl",kernelFunc:Ir},kr={kernelName:n.BatchToSpaceND,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.blockShape,c=r.crops;n.util.assert(o.shape.length<=4,(function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"}));var s=i.reduce((function(e,n){return e*n})),u=n.backend_util.getReshaped(o.shape,i,s),l=n.backend_util.getPermuted(u.length,i.length),d=n.backend_util.getReshapedPermuted(o.shape,i,s),p=n.backend_util.getSliceBeginCoords(c,i.length),h=n.backend_util.getSliceSize(d,c,i.length),f=[],x=ga({inputs:{x:o},backend:a,attrs:{shape:u}}),v=Ta({inputs:{x},backend:a,attrs:{perm:l}}),g=ga({inputs:{x:v},backend:a,attrs:{shape:d}}),m=Ir({inputs:{x:g},backend:a,attrs:{begin:p,size:h}});return f.push(x),f.push(v),f.push(g),f.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),m}},Rr={kernelName:n.Bincount,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.weights,i=a.size,c=t.readSync(r.dataId),s=t.readSync(o.dataId),u=qn(c,s,o.dtype,o.shape,i);return t.makeTensorInfo([i],o.dtype,u)}},Tr={kernelName:n.BitwiseAnd,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.a,i=a.b,s=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),u=n.env().getNumber("WEBGL_VERSION");if(r.shouldExecuteOnCPU([o,i])||1===u){var l=r.texData.get(o.dataId).values,d=r.texData.get(i.dataId).values,p=c(Qn(o.shape,i.shape,l,d,o.dtype),2),h=p[0],f=p[1],x=r.makeTensorInfo(f,o.dtype);return r.texData.get(x.dataId).values=h,x}return t=s?new Jt("\n int r = int(a.r) & int(b.r);\n int g = int(a.g) & int(b.g);\n int rb = int(a.b) & int(b.b);\n int ra = int(a.a) & int(b.a);\n return vec4(r, g, rb, ra);\n",o.shape,i.shape,!1):new Qt("\n return float(int(a.r) & int(b.r));\n",o.shape,i.shape),r.runWebGLProgram(t,[o,i],o.dtype)}},Nr={kernelName:n.BroadcastArgs,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.s0,o=t.s1,i=a.readSync(r.dataId),c=a.readSync(o.dataId),s=n.backend_util.assertAndGetBroadcastShape(Array.from(i),Array.from(c));return a.makeTensorInfo([s.length],"int32",Int32Array.from(s))}},Er=la({opSnippet:"return float(a != b);",cpuKernelImpl:pt,dtype:"bool"}),Ar={kernelName:n.NotEqual,backendName:"webgl",kernelFunc:Er};function _r(e){var n=e.inputs,t=e.backend,a=n.input;return $t({inputs:{x:t.texData.get(a.dataId).complexTensorInfos.real},backend:t})}var Or={kernelName:n.Real,backendName:"webgl",kernelFunc:_r},Fr={kernelName:n.Cast,backendName:"webgl",kernelFunc:function e(a){var r=a.inputs,o=a.backend,i=a.attrs,s=r.x,u=i.dtype;if("complex64"===u){if("complex64"===s.dtype)return $t({inputs:{x:s},backend:o});var l=t.zeros(s.shape),d=e({inputs:{x:s},backend:o,attrs:{dtype:"float32"}}),p=na({inputs:{real:d,imag:l},backend:o});return l.dispose(),o.disposeIntermediateTensorInfo(d),p}if("complex64"===s.dtype){var h=_r({inputs:{input:s},backend:o});return p=e({inputs:{x:h},backend:o,attrs:{dtype:u}}),o.disposeIntermediateTensorInfo(h),p}if(!n.util.hasEncodingLoss(s.dtype,u))return{dataId:(p=$t({inputs:{x:s},backend:o})).dataId,shape:p.shape,dtype:u};if(o.shouldExecuteOnCPU([s])){var f=c(function(e,t,a,r){if("int32"===r)return[t,"int32",Int32Array.from(e)];if("bool"===r){var o=n.util.toTypedArray([0],a),i=c(hn((function(e,n){return e!==n?1:0}))(t,[],e,o,"bool"),2),s=i[0];return[i[1],"bool",s]}throw new Error("Error in Cast: failed to cast ".concat(a," to ").concat(r))}(o.texData.get(s.dataId).values,s.shape,s.dtype,u),3),x=f[0],v=f[1],g=f[2];return o.makeTensorInfo(x,v,g)}if("int32"===u)return function(e,n){var t=new Wt(e.shape,"return float(int(x));"),a=n.runWebGLProgram(t,[e],"int32");return{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}(s,o);if("bool"===u){var m=o.makeTensorInfo([],"bool",n.util.getTypedArrayFromDType("bool",1));return p=Er({inputs:{a:s,b:m},backend:o}),o.disposeIntermediateTensorInfo(m),p}throw new Error("Error in Cast: failed to cast ".concat(s.dtype," to ").concat(u))}},Dr="return ceil(x);",Pr=ua({opSnippet:Dr,packedOpSnippet:Dr,cpuKernelImpl:Zn}),Lr={kernelName:n.Ceil,backendName:"webgl",kernelFunc:Pr},Br=function(e){this.variableNames=["A"],this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "},Vr=function(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "},Wr={kernelName:n.ClipByValue,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=o.clipValueMin,s=o.clipValueMax;t=n.env().getBool("WEBGL_PACK_CLIP")?new Vr(i.shape):new Br(i.shape);var u=[[c],[s]];return r.runWebGLProgram(t,[i],i.dtype,u)}},Ur=function(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "};function Mr(e,n){return{dataId:n.dataId,dtype:n.dtype,shape:e.shape}}var Gr={kernelName:n.ComplexAbs,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=n.x,r=t.texData.get(a.dataId),o=new Ur(a.shape),i=[Mr(a,r.complexTensorInfos.real),Mr(a,r.complexTensorInfos.imag)];return t.runWebGLProgram(o,i,i[0].dtype)}},zr=function(e){this.outputShape=[],this.outputShape=n.backend_util.computeOutShape(e,1),this.variableNames=e.map((function(e,n){return"T".concat(n)}));var t=new Array(e.length-1);t[0]=e[0][1];for(var a=1;a= ").concat(s[u-1],") {\n return getChannel(\n getT").concat(u,"(").concat(Hr(c,l,f),"),\n vec2(").concat(Hr(d,l,f),"));\n }")}var x=s.length,v=s[s.length-1];h+="\n return getChannel(\n getT".concat(x,"(").concat(Hr(c,l,v),"),\n vec2(").concat(Hr(d,l,v),"));"),this.userCode="\n float getValue(".concat(c.map((function(e){return"int "+e})),") {\n ").concat(h,"\n }\n\n void main() {\n ").concat(o," coords = getOutputCoords();\n vec4 result = vec4(getValue(").concat(i,"), 0., 0., 0.);\n\n ").concat(i[r-1]," = ").concat(i[r-1]," + 1;\n if (").concat(i[r-1]," < ").concat(a[r-1],") {\n result.g = getValue(").concat(i,");\n }\n\n ").concat(i[r-2]," = ").concat(i[r-2]," + 1;\n if (").concat(i[r-2]," < ").concat(a[r-2],") {\n result.a = getValue(").concat(i,");\n }\n\n ").concat(i[r-1]," = ").concat(i[r-1]," - 1;\n if (").concat(i[r-2]," < ").concat(a[r-2]," &&\n ").concat(i[r-1]," < ").concat(a[r-1],") {\n result.b = getValue(").concat(i,");\n }\n setOutput(result);\n }\n ")};function Hr(e,n,t){var a=e.indexOf(n);return e.map((function(e,n){return n===a?"".concat(e," - ").concat(t):e})).join()}function jr(e){var n=e.inputs,t=e.backend,a=n.input;return $t({inputs:{x:t.texData.get(a.dataId).complexTensorInfos.imag},backend:t})}var Kr={kernelName:n.Imag,backendName:"webgl",kernelFunc:jr};function qr(e,t,a){var r,o,c=e[0].dtype;if("complex64"===c){var s=e.map((function(e){return _r({inputs:{input:e},backend:a})})),u=e.map((function(e){return jr({inputs:{input:e},backend:a})})),l=qr(s,t,a),d=qr(u,t,a),p=na({inputs:{real:l,imag:d},backend:a});return s.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),u.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),a.disposeIntermediateTensorInfo(l),a.disposeIntermediateTensorInfo(d),p}var h=a.shouldExecuteOnCPU(e);if("string"===c&&(h=!0),h){var f=e.map((function(e){var r=n.util.sizeFromShape(e.shape.slice(t));return ga({inputs:{x:e},backend:a,attrs:{shape:[-1,r]}})})),x=f.map((function(e){return{vals:a.readSync(e.dataId),shape:e.shape}})),v=n.backend_util.computeOutShape(f.map((function(e){return e.shape})),1),g=function(e,t,a,r){var o=n.util.getArrayFromDType(a,n.util.sizeFromShape(t));if(r&&"string"!==a){var i=0;e.forEach((function(e){var t=n.util.sizeFromShape(e.shape);o.set(e.vals,i),i+=t}))}else{var c=0;e.forEach((function(e){for(var r="string"===a?n.backend_util.fromUint8ToStringArray(e.vals):e.vals,i=0,s=0;s0})),y=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&C[0].shape.length>1;if(1===C.length){var w=y?new Wt(e[0].shape,Mt):new Gt(e[0].shape,Mt);return a.runWebGLProgram(w,e,c)}var I=n.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER");if(C.length>I){for(var S=[],k=0;k0}));return 1===s.length?$t({inputs:{x:s[0]},backend:a}):qr(s,o,a)}var Qr={kernelName:n.Concat,backendName:"webgl",kernelFunc:Yr},Zr=function(e,n,t,a,r){void 0===n&&(n=!1),void 0===t&&(t=null),void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=e.outShape;var o=e.padInfo.top,i=e.padInfo.left,c=e.strideHeight,s=e.strideWidth,u=e.dilationHeight,l=e.dilationWidth,d=e.filterHeight,p=e.filterWidth,h=4*Math.floor(e.inChannels/4),f=e.inChannels%4,x="channelsLast"===e.dataFormat,v=x?1:2,g=x?2:3,m=x?3:1,b="",C="";t&&(b=a?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ".concat(t,"\n }"):r?"float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ".concat(t,"\n }"):"\n float activation(float x) {\n ".concat(t,"\n }\n "),C="result = activation(result);");var y=n?"result += getBiasAtOutCoords();":"";n&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode="\n ".concat(b,"\n\n const ivec2 strides = ivec2(").concat(c,", ").concat(s,");\n const ivec2 pads = ivec2(").concat(o,", ").concat(i,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[").concat(m,"];\n\n ivec2 xRCCorner =\n ivec2(coords[").concat(v,"], coords[").concat(g,"]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(d,"; wR++) {\n int xR = xRCorner + wR * ").concat(u,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(p,"; wC++) {\n int xC = xCCorner + wC * ").concat(l,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n for (int d1 = 0; d1 < ").concat(h,"; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if (").concat(x,") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if (").concat(1===f,") {\n\n if (").concat(x,") {\n dotProd +=\n getX(batch, xR, xC, ").concat(h,") *\n getW(wR, wC, ").concat(h,", d2);\n } else {\n dotProd +=\n getX(batch, ").concat(h,", xR, xC) *\n getW(wR, wC, ").concat(h,", d2);\n }\n\n } else if (").concat(2===f,") {\n vec2 wValues = vec2(\n getW(wR, wC, ").concat(h,", d2),\n getW(wR, wC, ").concat(h," + 1, d2)\n );\n\n if (").concat(x,") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, ").concat(h,"),\n getX(batch, xR, xC, ").concat(h," + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, ").concat(h,", xR, xC),\n getX(batch, ").concat(h," + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if (").concat(3===f,") {\n vec3 wValues = vec3(\n getW(wR, wC, ").concat(h,", d2),\n getW(wR, wC, ").concat(h," + 1, d2),\n getW(wR, wC, ").concat(h," + 2, d2)\n );\n\n if (").concat(x,") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, ").concat(h,"),\n getX(batch, xR, xC, ").concat(h," + 1),\n getX(batch, xR, xC, ").concat(h," + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, ").concat(h,", xR, xC),\n getX(batch, ").concat(h," + 1, xR, xC),\n getX(batch, ").concat(h," + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n ").concat(y,"\n ").concat(C,"\n setOutput(result);\n }\n ")},Jr=function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var n=e.padInfo.front,t=e.padInfo.top,a=e.padInfo.left,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterDepth,d=e.filterHeight,p=e.filterWidth,h=4*Math.floor(e.inChannels/4),f=e.inChannels%4;this.userCode="\n const ivec3 strides = ivec3(".concat(r,", ").concat(o,", ").concat(i,");\n const ivec3 pads = ivec3(").concat(n,", ").concat(t,", ").concat(a,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < ").concat(l,"; wF++) {\n int xF = xFCorner + wF * ").concat(c,";\n\n if (xF < 0 || xF >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(d,"; wR++) {\n int xR = xRCorner + wR * ").concat(s,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(p,"; wC++) {\n int xC = xCCorner + wC * ").concat(u,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n for (int d1 = 0; d1 < ").concat(h,"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if (").concat(1===f,") {\n dotProd +=\n getX(batch, xF, xR, xC, ").concat(h,") *\n getW(wF, wR, wC, ").concat(h,", d2);\n } else if (").concat(2===f,") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, ").concat(h,"),\n getX(batch, xF, xR, xC, ").concat(h," + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, ").concat(h,", d2),\n getW(wF, wR, wC, ").concat(h," + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if (").concat(3===f,") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, ").concat(h,"),\n getX(batch, xF, xR, xC, ").concat(h," + 1),\n getX(batch, xF, xR, xC, ").concat(h," + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, ").concat(h,", d2),\n getW(wF, wR, wC, ").concat(h," + 1, d2),\n getW(wF, wR, wC, ").concat(h," + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},$r=function(e,t,a,r,o){void 0===t&&(t=!1),void 0===a&&(a=null),void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);for(var i=e.padInfo.left,c=e.strideWidth,s=e.dilationWidth,u=e.filterHeight,l=e.filterWidth,d=l,p="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;",h=0;h=0 && xR < inDims[0]) {\n ";for(var f=0;f<(d+1)/2;f++){var x=2*f;if(p+="\n xC = xCCorner + ".concat(x*s,";\n "),1===c){if(x= 0 && xCOffset < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n "),p+=1===s&&x>0?"\n xC".concat(x," = vec4(xTexelC").concat(x-2,".zw, xTexelC").concat(x,".xy);\n "):"\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC".concat(x," = vec4(previous.zw, xTexelC").concat(x,".xy);\n } else {\n xC").concat(x," = vec4(0.0, 0.0, xTexelC").concat(x,".xy);\n }\n ")):p+="\n if (xC >= 0 && xC < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n xC").concat(x," = xTexelC").concat(x,";\n "),x+1= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n "),p+=s>1?"\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC".concat(x+1," = vec4(previous.zw, xTexelC").concat(x+1,".xy);\n } else {\n xC").concat(x+1," = vec4(0.0, 0.0, xTexelC").concat(x+1,".xy);\n }\n "):"\n xC".concat(x+1," = vec4(xTexelC").concat(x,".zw, xTexelC").concat(x+1,".xy);\n ")):p+=1===v?"\n xC".concat(x+1," = xTexelC").concat(x,";\n "):"\n xCOffset = xC + ".concat(v,";\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x+1," = xTexelC").concat(x+1,";\n ")}}else x= 0 && xCOffset < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x," = vec4(xTexelC").concat(x,".zw, xTexelC").concat(x+1,".zw);\n "),x+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC".concat(x+1," = vec4(xTexelC").concat(x+1,".xy, final.xy);\n "))):(p+="\n if(xC >= 0 && xC < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x," = vec4(\n xTexelC").concat(x,".xy, xTexelC").concat(x+1,".xy);\n "),x+1= 0) {\n // Use custom imod instead mod. On Intel GPU, mod may generate\n // unexpected value.\n // https://github.com/tensorflow/tfjs/issues/5447\n offsetX = imod(blockIndex, outWidth) * stride[1] - pad[1];\n d1 = offsetX + dilation[1] * (imod(pos, itemsPerBlockRow) /\n inChannels);\n\n if(d1 < inputShape[").concat(i,"] && d1 >= 0) {\n\n ch = imod(pos, inChannels);\n\n if (").concat(r,") {\n innerDims = vec2(d1, ch);\n result[").concat(2*u+l,"] = getChannel(\n getA(rc.x, d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result[").concat(2*u+l,"] = getChannel(\n getA(rc.x, ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ");this.userCode="\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n ".concat(s,"\n\n ").concat(a.output," = result;\n }\n ")};function no(e,n){var t=e.length;return t>=3?s(s([],c(e.slice(0,-3)),!1),n?[e[t-3]*e[t-2],e[t-1]]:[e[t-3],e[t-2]*e[t-1]],!1):!n&&1===t&&e[0]>1?[e[0],1]:null}function to(e){var t,a,r,o=e.x,c=e.filter,s=e.convInfo,u=e.backend,l=e.bias,d=void 0===l?null:l,p=e.preluActivationWeights,h=void 0===p?null:p,f=e.leakyreluAlpha,x=void 0===f?0:f,v=e.activation,g=void 0===v?null:v,m=o.shape,b=u.texData.get(o.dataId),C=s.inChannels,y=m[0]*m[1]*m[2],w=s.outChannels,I="channelsLast"===s.dataFormat,S=[];if(null!=h&&null!=(k=no(h.shape,I))&&(h=ga({inputs:{x:h},backend:u,attrs:{shape:k}}),S.push(h)),null!=d&&null!=(k=no(d.shape,I))&&(d=ga({inputs:{x:d},backend:u,attrs:{shape:k}}),S.push(d)),(1!==y&&1!==w||!(C>1e3))&&b.isPacked&&I&&null!=b.texture&&m[2]%2!=0&&n.util.arraysEqual(b.shape.slice(-3),m.slice(-3))){var k=m[0]*m[1]*(m[2]+1),R={dataId:o.dataId,shape:[1,k,s.inChannels],dtype:o.dtype},T=b.shape;b.shape=b.shape.slice(),b.shape[b.shape.length-2]++,n.util.assert(ee(b.shape,R.shape),(function(){return"packed reshape ".concat(b.shape," to ").concat(R.shape," isn't free")}));var N=ga({inputs:{x:c},backend:u,attrs:{shape:[1,s.inChannels,s.outChannels]}});S.push(N);var E=Ea({a:R,b:N,backend:u,transposeA:!1,transposeB:!1,bias:d,activation:g,preluActivationWeights:h,leakyreluAlpha:x}),A=u.texData.get(E.dataId);n.util.assert(A.isPacked,(function(){return"batchMatMul result is expected to be packed"})),b.shape=T,A.shape=s.outShape,(r=$t({inputs:{x:E},backend:u})).shape=s.outShape,S.push(E)}else{var _=s.outHeight*s.outWidth,O=ga({inputs:{x:o},backend:u,attrs:{shape:I?[s.batchSize,_,s.inChannels]:[s.batchSize,s.inChannels,_]}}),F=(N=ga({inputs:{x:c},backend:u,attrs:{shape:[1,s.inChannels,s.outChannels]}}),Ea({a:I?O:N,b:I?N:O,transposeA:!I,transposeB:!1,backend:u,bias:d,activation:g,preluActivationWeights:h,leakyreluAlpha:x}));r=ga({inputs:{x:F},backend:u,attrs:{shape:s.outShape}}),S.push(O),S.push(N),S.push(F)}try{for(var D=i(S),P=D.next();!P.done;P=D.next()){var L=P.value;u.disposeIntermediateTensorInfo(L)}}catch(e){t={error:e}}finally{try{P&&!P.done&&(a=D.return)&&a.call(D)}finally{if(t)throw t.error}}return r}function ao(e){var t,a,r,o=e.x,c=e.filter,s=e.convInfo,u=e.backend,l=e.bias,d=void 0===l?null:l,p=e.preluActivationWeights,h=void 0===p?null:p,f=e.leakyreluAlpha,x=void 0===f?0:f,v=e.activation,g=void 0===v?null:v,m=s.filterWidth,b=s.filterHeight,C=s.inChannels,y=s.outWidth,w=s.outHeight,I="channelsLast"===s.dataFormat,S=m*b*C,k=w*y,R=[s.batchSize,S,k],T=[];null!=h&&null!=(r=no(h.shape,I))&&(h=ga({inputs:{x:h},backend:u,attrs:{shape:r}}),T.push(h)),null!=d&&null!=(r=no(d.shape,I))&&(d=ga({inputs:{x:d},backend:u,attrs:{shape:r}}),T.push(d));var N=ga({inputs:{x:c},backend:u,attrs:{shape:[1,S,n.util.sizeFromShape(c.shape)/S]}});T.push(N);var E=new eo(R,s),A=[o.shape,[s.padInfo.top,s.padInfo.left],[s.strideHeight,s.strideWidth],[s.dilationHeight,s.dilationWidth],[s.inChannels],[s.filterWidth*s.inChannels],[s.outWidth]],_=u.runWebGLProgram(E,[o],"float32",A),O=ga({inputs:{x:_},backend:u,attrs:{shape:R}});T.push(_),T.push(O);var F=null!=d,D=null!=h,P="leakyrelu"===g,L=g?da(g,!0):null,B=new pa(I?O.shape:N.shape,I?N.shape:O.shape,I?[s.batchSize,k,s.outChannels]:[s.batchSize,s.outChannels,k],!0,!1,F,L,D,P),V=I?[O,N]:[N,O];if(d&&V.push(d),D&&V.push(h),P){var W=u.makeTensorInfo([],"float32",n.util.createScalarValue(x,"float32"));V.push(W),T.push(W)}var U=u.runWebGLProgram(B,V,"float32"),M=ga({inputs:{x:U},backend:u,attrs:{shape:s.outShape}});T.push(U);try{for(var G=i(T),z=G.next();!z.done;z=G.next()){var X=z.value;u.disposeIntermediateTensorInfo(X)}}catch(e){t={error:e}}finally{try{z&&!z.done&&(a=G.return)&&a.call(G)}finally{if(t)throw t.error}}return M}var ro,oo={kernelName:n.Conv2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=o.strides,u=o.pad,l=o.dataFormat,d=o.dilations,p=o.dimRoundingMode,h=n.backend_util.convertConv2DDataFormat(l),f=n.backend_util.computeConv2DInfo(i.shape,c.shape,s,d,u,p,!1,h);if(1!==f.filterHeight||1!==f.filterWidth||1!==f.dilationHeight||1!==f.dilationWidth||1!==f.strideHeight||1!==f.strideWidth||"SAME"!==f.padInfo.type&&"VALID"!==f.padInfo.type)if(f.strideWidth<=2&&"channelsLast"===h&&n.env().getBool("WEBGL_EXP_CONV")){var x=new $r(f),v=[[f.padInfo.top,f.padInfo.left],[f.strideHeight,f.strideWidth],[f.dilationHeight,f.dilationWidth],[f.inHeight,f.inWidth]];t=r.runWebGLProgram(x,[i,c],"float32",v)}else n.env().getBool("WEBGL_CONV_IM2COL")?t=ao({x:i,filter:c,convInfo:f,backend:r}):(x=new Zr(f),t=r.runWebGLProgram(x,[i,c],"float32"));else t=to({x:i,filter:c,convInfo:f,backend:r});var g=ga({inputs:{x:t},backend:r,attrs:{shape:f.outShape}});return r.disposeIntermediateTensorInfo(t),g}},io=function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var n=e.strideHeight,t=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,o="channelsLast"===e.dataFormat;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < ".concat(e.batchSize,"; b++) {\n for (int yR = 0; yR < ").concat(e.outHeight,"; yR++) {\n int xR = wR + yR * ").concat(n," - ").concat(a,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(t," - ").concat(r,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n ").concat(o?"float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);":"float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);","\n }\n }\n }\n setOutput(dotProd);\n }\n ")},co=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o="channelsLast"===e.dataFormat,i=n-1-e.padInfo.top,c=t-1-e.padInfo.left,s=o?1:2,u=o?2:3,l=o?3:1;this.userCode="\n const ivec2 pads = ivec2(".concat(i,", ").concat(c,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[").concat(l,"];\n\n ivec2 dyCorner = ivec2(coords[").concat(s,"], coords[").concat(u,"]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(t," - 1 - wC;\n\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2++) {\n\n if (").concat(o,") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n ")},so=function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var n=e.strideDepth,t=e.strideHeight,a=e.strideWidth,r=e.padInfo.front,o=e.padInfo.top,i=e.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < ".concat(e.batchSize,"; b++) {\n for (int yF = 0; yF < ").concat(e.outDepth,"; yF++) {\n int xF = wF + yF * ").concat(n," - ").concat(r,";\n\n if (xF < 0 || xF >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int yR = 0; yR < ").concat(e.outHeight,"; yR++) {\n int xR = wR + yR * ").concat(t," - ").concat(o,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(a," - ").concat(i,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},uo=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterDepth,t=e.filterHeight,a=e.filterWidth,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=n-1-e.padInfo.front,s=t-1-e.padInfo.top,u=a-1-e.padInfo.left;this.userCode="\n const ivec3 pads = ivec3(".concat(c,", ").concat(s,", ").concat(u,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < ").concat(n,"; wF++) {\n float dyF = float(dyFCorner + wF) / ").concat(r,".0;\n\n if (dyF < 0.0 || dyF >= ").concat(e.outDepth,".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = ").concat(n," - 1 - wF;\n\n for (int wR = 0; wR < ").concat(t,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(o,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(t," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(a,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(i,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(a," - 1 - wC;\n\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},lo={kernelName:n.Conv2DBackpropFilter,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.pad,u=r.dataFormat,l=r.dimRoundingMode,d=r.filterShape,p=n.backend_util.convertConv2DDataFormat(u),h=n.backend_util.computeConv2DInfo(o.shape,d,c,1,s,l,!1,p),f=new io(h);return a.runWebGLProgram(f,[o,i],"float32")}},po=function(e){this.variableNames=["dy","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"strides",type:"vec2"}],this.outputShape=e.inShape,this.enableShapeUniforms=De(this.outputShape.length);var n=e.filterHeight,t=e.filterWidth,a=n-1-e.padInfo.top,r=t-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2(".concat(a,", ").concat(r,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = ivec2(coords[1], coords[2]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n vec4 result = vec4(0.);\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / strides[0];\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n int wCPerm = ").concat(t," - 1 - wC;\n\n float dyC = float(dyCCorner + wC) / strides[1];\n bool idyCVal = (dyC >= 0.0) && (dyC < ").concat(e.outWidth,".0)\n && (fract(dyC) == 0.0);\n int idyC = int(dyC);\n\n float dyC2 = float(dyCCorner + wC + 1) / strides[1];\n bool idyCVal2 = (dyC2 >= 0.0) && (dyC2 < ").concat(e.outWidth,".0)\n && (fract(dyC2) == 0.0);\n int idyC2 = int(dyC2);\n\n if (idyCVal && idyCVal2) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec4 dySample2 = (idyC / 2 == idyC2 / 2) ?\n dySample : getDy(batch, idyR, idyC2, d2);\n\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n\n dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample2.xy : dySample2.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal2) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC2, d2);\n vec2 dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n }\n }\n }\n setOutput(result);\n }\n ")},ho={kernelName:n.Conv2DBackpropInput,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.inputShape,s=r.strides,u=r.pad,l=r.dataFormat,d=r.dimRoundingMode,p=n.backend_util.convertConv2DDataFormat(l),h=n.backend_util.computeConv2DInfo(c,i.shape,s,1,u,d,!1,p);if(n.env().getBool("WEBGL_PACK_CONV2DTRANSPOSE")&&"channelsLast"===p){var f=[[h.strideHeight,h.strideWidth]],x=new po(h);return a.runWebGLProgram(x,[o,i],"float32",f)}return x=new co(h),a.runWebGLProgram(x,[o,i],"float32")}},fo={kernelName:n.Conv3D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.filter,c=r.strides,s=r.pad,u=r.dilations,l=n.backend_util.computeConv3DInfo(o.shape,i.shape,c,u,s),d=new Jr(l);return a.runWebGLProgram(d,[o,i],"float32")}},xo={kernelName:n.Conv3DBackpropFilterV2,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.pad,u=r.filterShape,l=n.backend_util.computeConv3DInfo(o.shape,u,c,1,s),d=new so(l);return a.runWebGLProgram(d,[o,i],"float32")}},vo={kernelName:n.Conv3DBackpropInputV2,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.pad,s=r.strides,u=r.inputShape,l=n.backend_util.computeConv3DInfo(u,i.shape,s,1,c),d=new uo(l);return a.runWebGLProgram(d,[o,i],"float32")}},go=ua({opSnippet:"if (isnan(x)) return x;\n return cos(x);\n",packedOpSnippet:"\n vec4 result = cos(x);\n bvec4 isNaN = isnan(x);\n ".concat(Zt,"\n return result;\n")}),mo={kernelName:n.Cos,backendName:"webgl",kernelFunc:go},bo=ua({opSnippet:"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n"}),Co={kernelName:n.Cosh,backendName:"webgl",kernelFunc:bo},yo=function(e,n,t,a,r){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3],d=c(n,1)[0],p=c(t,2),h=p[0],f=p[1];this.outputShape=[d,h,f,l];var x="bilinear"===a?1:0,v=c(["".concat(s-1,".0"),"".concat(u-1,".0")],2),g=v[0],m=v[1],b=c(h>1?["".concat((s-1)/(h-1)),"(y2-y1) * height_ratio","y1*".concat(g," + float(y)*(height_scale)")]:["0.0","0.0","0.5 * (y1+y2) * ".concat(g)],3),C=b[0],y=b[1],w=b[2],I=c(f>1?["".concat((u-1)/(f-1)),"(x2-x1) * width_ratio","x1*".concat(m," + float(x)*(width_scale)")]:["0.0","0.0","0.5 * (x1+x2) * ".concat(m)],3),S=I[0],k=I[1],R=I[2];this.userCode="\n const float height_ratio = float(".concat(C,");\n const float width_ratio = float(").concat(S,");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= ").concat(i,") {\n return;\n }\n\n float height_scale = ").concat(y,";\n float width_scale = ").concat(k,";\n\n float in_y = ").concat(w,";\n if( in_y < 0.0 || in_y > ").concat(g," ) {\n setOutput(float(").concat(r,"));\n return;\n }\n float in_x = ").concat(R,";\n if( in_x < 0.0 || in_x > ").concat(m," ) {\n setOutput(float(").concat(r,"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if(").concat(x," == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n ")},wo={kernelName:n.CropAndResize,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.image,o=n.boxes,i=n.boxInd,c=a.cropSize,s=a.method,u=a.extrapolationValue,l=new yo(r.shape,o.shape,c,s,u);return t.runWebGLProgram(l,[r,o,i],"float32")}};!function(e){e.Prod="*",e.Sum="+"}(ro||(ro={}));var Io=function(e,n,t,a){this.op=e,this.outputShape=n,this.variableNames=["x"],this.customUniforms=[{name:"index",type:"float"}];var r=this.outputShape.length,o=this.op===ro.Prod?"1.0":"0.0",i=t?o:"getX(".concat(So(r,"coords",this.op),")"),c=this.outputShape[this.outputShape.length-1],s="",u="";t?(s=a?"end != ".concat(c-1):"end != 0",u=a?"end + 1":"end - 1"):(s=a?"end + pow2 < ".concat(c):"end >= pow2",u=a?"end + pow2":"end - pow2"),this.userCode="\n void main() {\n ".concat(Ne(r)," coords = getOutputCoords();\n int end = ").concat(ko(r,"coords",this.op),";\n float val = ").concat(i,";\n int pow2 = int(pow(2.0, index));\n if (").concat(s,") {\n int idx = ").concat(u,";\n ").concat(ko(r,"coords",this.op)," = idx;\n val ").concat(this.op,"= getX(").concat(So(r,"coords",this.op),");\n }\n setOutput(val);\n }\n ")};function So(e,n,t){if(1===e)return"".concat(n);if(2===e)return"".concat(n,".x, ").concat(n,".y");if(3===e)return"".concat(n,".x, ").concat(n,".y, ").concat(n,".z");if(4===e)return"".concat(n,".x, ").concat(n,".y, ").concat(n,".z, ").concat(n,".w");throw new Error("Cumulative ".concat(t," for rank ").concat(e," is not yet supported"))}function ko(e,n,t){if(1===e)return"".concat(n);if(2===e)return"".concat(n,".y");if(3===e)return"".concat(n,".z");if(4===e)return"".concat(n,".w");throw new Error("Cumulative ".concat(t," for rank ").concat(e," is not yet supported"))}function Ro(e,t,a,r,o,i){var c=t.shape.length,s=n.backend_util.getAxesPermutation([r],c),u=t;null!=s&&(u=Ta({inputs:{x:t},backend:a,attrs:{perm:s}}));var l=n.backend_util.getInnerMostAxes(1,c)[0];if(l!==c-1)throw new Error("WebGL cumprod shader expects an inner-most axis=".concat(t.shape.length-1," ")+"but got axis=".concat(r));for(var d=u.shape[l],p=$t({inputs:{x:u},backend:a}),h=0;h<=Math.ceil(Math.log2(d))-1;h++){var f=new Io(e,u.shape,!1,i),x=[[h]],v=p;p=a.runWebGLProgram(f,[p],p.dtype,x),a.disposeIntermediateTensorInfo(v)}if(o&&(f=new Io(e,u.shape,o,i),v=p,p=a.runWebGLProgram(f,[p],p.dtype),a.disposeIntermediateTensorInfo(v)),null!=s){var g=Ta({inputs:{x:p},backend:a,attrs:{perm:n.backend_util.getUndoAxesPermutation(s)}});return a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(u),g}return p}var To={kernelName:n.Cumprod,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.axis,i=a.exclusive,c=a.reverse;return Ro(ro.Prod,r,t,o,i,c)}},No={kernelName:n.Cumsum,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.axis,i=a.exclusive,c=a.reverse;return Ro(ro.Sum,r,t,o,i,c)}},Eo={kernelName:n.DenseBincount,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.weights,i=a.size,c=a.binaryOutput;if(1===r.shape.length){var s=t.readSync(r.dataId),u=t.readSync(o.dataId),l=qn(s,u,o.dtype,o.shape,i);return t.makeTensorInfo([i],o.dtype,l)}if(2===r.shape.length){var d=t.bufferSync(r),p=t.bufferSync(o),h=Yn(d,p,i,c);return t.makeTensorInfo(h.shape,o.dtype,h.values)}throw new Error("Error in denseBincount: input must be at most rank 2, but got rank"+"".concat(r.shape.length,"."))}},Ao=function(){function e(e,n,t){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=n,this.dataFormat=t,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = ".concat(this.getHeightCoordString(),";\n int w = ").concat(this.getWidthCoordString(),";\n int d = ").concat(this.getDepthCoordString(),";\n\n int in_h = h / ").concat(n,";\n int offset_h = imod(h, ").concat(n,");\n int in_w = w / ").concat(n,";\n int offset_w = imod(w, ").concat(n,");\n int offset_d = (offset_h * ").concat(n," + offset_w) *\n ").concat(this.getOutputDepthSize(),";\n int in_d = d + offset_d;\n\n float result = ").concat(this.getInputSamplingString(),";\n setOutput(result);\n }\n ")}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}(),_o={kernelName:n.DepthToSpace,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.blockSize,i=a.dataFormat,c=r.shape[0],s=("NHWC"===i?r.shape[1]:r.shape[2])*o,u=("NHWC"===i?r.shape[2]:r.shape[3])*o,l=("NHWC"===i?r.shape[3]:r.shape[1])/(o*o),d=new Ao("NHWC"===i?[c,s,u,l]:[c,l,s,u],o,i);return t.runWebGLProgram(d,[r],r.dtype)}},Oo=function(e,n,t,a,r){void 0===n&&(n=!1),void 0===t&&(t=null),void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x","W"],this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);var o=e.filterHeight,i=e.filterWidth,c=e.outChannels/e.inChannels,s="",u="";t&&(s=a?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ".concat(t,"\n }"):r?"float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ".concat(t,"\n }"):"\n float activation(float x) {\n ".concat(t,"\n }\n "),u="result = activation(result);");var l=n?"result += getBiasAtOutCoords();":"";n&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode="\n ".concat(s,"\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / ").concat(c,";\n int q = d2 - d1 * ").concat(c,";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < ").concat(o,"; wR++) {\n int xR = xRCorner + wR * dilations[0];\n\n if (xR < 0 || xR >= inDims[0]) {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(i,"; wC++) {\n int xC = xCCorner + wC * dilations[1];\n\n if (xC < 0 || xC >= inDims[1]) {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n ").concat(l,"\n ").concat(u,"\n setOutput(result);\n }\n ")},Fo=function(e,t,a,r,o){void 0===t&&(t=!1),void 0===a&&(a=null),void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);for(var i=e.outChannels/e.inChannels,c=e.padInfo.left,s=e.strideWidth,u=e.dilationWidth,l=e.filterHeight,d=e.filterWidth,p=d,h="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;",f=0;f=0 && xR < inDims[0]) {\n ";for(var x=0;x<(p+1)/2;x++){var v=2*x;if(h+="\n xC = xCCorner + ".concat(v*u,";\n "),1===s){if(v= 0 && xCOffset < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n "),h+=1===u&&v>0?"\n xC".concat(v," = vec4(xTexelC").concat(v-2,".zw, xTexelC").concat(v,".xy);\n "):"\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC".concat(v," = vec4(previous.zw, xTexelC").concat(v,".xy);\n } else {\n xC").concat(v," = vec4(0.0, 0.0, xTexelC").concat(v,".xy);\n }\n ")):h+="\n if (xC >= 0 && xC < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n xC").concat(v," = xTexelC").concat(v,";\n "),v+1= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n "),h+=u>1?"\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC".concat(v+1," = vec4(previous.zw, xTexelC").concat(v+1,".xy);\n } else {\n xC").concat(v+1," = vec4(0.0, 0.0, xTexelC").concat(v+1,".xy);\n }\n "):"\n xC".concat(v+1," = vec4(xTexelC").concat(v,".zw, xTexelC").concat(v+1,".xy);\n ")):h+=1===g?"\n xC".concat(v+1," = xTexelC").concat(v,";\n "):"\n xCOffset = xC + ".concat(g,";\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v+1," = xTexelC").concat(v+1,";\n ")}}else v= 0 && xCOffset < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v," = vec4(xTexelC").concat(v,".zw, xTexelC").concat(v+1,".zw);\n "),v+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC".concat(v+1," = vec4(xTexelC").concat(v+1,".xy, final.xy);\n "))):(h+="\n if(xC >= 0 && xC < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v," = vec4(\n xTexelC").concat(v,".xy, xTexelC").concat(v+1,".xy);\n "),v+1= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(t," - ").concat(r,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n ")},Lo=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o=n-1-e.padInfo.top,i=t-1-e.padInfo.left,c=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2(".concat(o,", ").concat(i,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(t," - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < ").concat(c,"; dm++) {\n int d2 = d1 * ").concat(c," + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},Bo={kernelName:n.DepthwiseConv2dNativeBackpropFilter,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.dilations,u=r.pad,l=r.dimRoundingMode,d=r.filterShape,p=n.backend_util.computeConv2DInfo(o.shape,d,c,s,u,l,!0),h=new Po(p);return a.runWebGLProgram(h,[o,i],"float32")}},Vo={kernelName:n.DepthwiseConv2dNativeBackpropInput,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.strides,s=r.dilations,u=r.pad,l=r.dimRoundingMode,d=r.inputShape,p=n.backend_util.computeConv2DInfo(d,i.shape,c,s,u,l,!0),h=new Lo(p);return a.runWebGLProgram(h,[o,i],"float32")}},Wo=function(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "},Uo={kernelName:n.Diag,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.x,o=s(s([],c(r.shape),!1),c(r.shape),!1),i=n.util.sizeFromShape(r.shape),u=ga({inputs:{x:r},backend:a,attrs:{shape:[i]}}),l=new Wo(i),d=a.runWebGLProgram(l,[u],u.dtype),p=ga({inputs:{x:d},backend:a,attrs:{shape:o}});return a.disposeIntermediateTensorInfo(u),a.disposeIntermediateTensorInfo(d),p}},Mo=function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var n=e.inHeight,t=e.inWidth,a=e.padInfo,r=e.strideHeight,o=e.strideWidth,i=e.filterHeight,c=e.filterWidth,s=e.dilationHeight,u=e.dilationWidth,l=a.top,d=a.left;this.userCode="\n const ivec2 strides = ivec2(".concat(r,", ").concat(o,");\n const ivec2 pads = ivec2(").concat(l,", ").concat(d,");\n const float neg_infinity = -3.4e38;\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.w;\n ivec2 outTopLeftCorner =\n coords.yz * strides - pads;\n int hBeg = outTopLeftCorner.x;\n int wBeg = outTopLeftCorner.y;\n\n float curVal = neg_infinity;\n for (int h = 0; h < ").concat(i,"; h++) {\n int hIn = hBeg + h * ").concat(s,";\n\n if (hIn >= 0 && hIn < ").concat(n,") {\n for (int w = 0; w < ").concat(c,"; w++) {\n int wIn = wBeg + w * ").concat(u,";\n\n if (wIn >= 0 && wIn < ").concat(t,") {\n float xVal = getX(batch, hIn, wIn, d1);\n float wVal = getW(h, w, d1);\n\n float val = xVal + wVal;\n if (val > curVal) {\n curVal = val;\n }\n }\n }\n }\n }\n\n float result = curVal;\n setOutput(result);\n }\n ")},Go={kernelName:n.Dilation2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=o.strides,u=o.pad,l=o.dilations,d=n.backend_util.computeDilation2DInfo(i.shape,c.shape,s,u,"NHWC",l),p=new Mo(d),h=ga({inputs:{x:t=r.runWebGLProgram(p,[i,c],"float32")},backend:r,attrs:{shape:d.outShape}});return r.disposeIntermediateTensorInfo(t),h}},zo={kernelName:n.Einsum,backendName:"webgl",kernelFunc:function(e){var t,a,r,o,c=e.inputs,s=e.backend,u=e.attrs.equation,l=c,d=n.backend_util.decodeEinsumEquation(u,l.length),p=d.allDims,h=d.summedDims,f=d.idDims;n.backend_util.checkEinsumDimSizes(p.length,f,l);for(var x=n.backend_util.getEinsumComputePath(h,f),v=x.path,g=x.steps,m=g.length,b=null,C=p.length,y=[],w=0;w=0&&(b=ka({inputs:{x:b},backend:s,attrs:{axis:v[w]-(p.length-C),keepDims:!1}}),y.push(b)),C--)}try{for(var O=i(y),F=O.next();!F.done;F=O.next()){var D=F.value;D!==b&&s.disposeIntermediateTensorInfo(D)}}catch(e){r={error:e}}finally{try{F&&!F.done&&(o=O.return)&&o.call(O)}finally{if(r)throw r.error}}return b}},Xo=ua({opSnippet:"return (x >= 0.0) ? x : (exp(x) - 1.0);",packedOpSnippet:"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n"}),Ho={kernelName:n.Elu,backendName:"webgl",kernelFunc:Xo},jo={kernelName:n.EluGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.dy,o=t.y,i=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new Jt("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",r.shape,o.shape):new Qt("return (b >= 0.0) ? a : a * (b + 1.0);",r.shape,o.shape);return a.runWebGLProgram(i,[r,o],r.dtype)}},Ko=la({opSnippet:"return float(a == b);",packedOpSnippet:"\n return vec4(equal(a, b));\n",dtype:"bool",cpuKernelImpl:Jn}),qo={kernelName:n.Equal,backendName:"webgl",kernelFunc:Ko},Yo=ua({opSnippet:'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = '.concat(n.backend_util.ERF_P,";\n float a1 = ").concat(n.backend_util.ERF_A1,";\n float a2 = ").concat(n.backend_util.ERF_A2,";\n float a3 = ").concat(n.backend_util.ERF_A3,";\n float a4 = ").concat(n.backend_util.ERF_A4,";\n float a5 = ").concat(n.backend_util.ERF_A5,";\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n")}),Qo={kernelName:n.Erf,backendName:"webgl",kernelFunc:Yo},Zo=ua({opSnippet:"if (isnan(x)) return x;\n return exp(x);\n",packedOpSnippet:"\n vec4 result = exp(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:$n,dtype:"float32"}),Jo={kernelName:n.Exp,backendName:"webgl",kernelFunc:Zo};function $o(e){var t=e.inputs,a=e.attrs,r=e.backend,o=a.dim,i=t.input,c=i.shape.length,s=i.shape.slice(),u=o;return o<0&&(n.util.assert(-(c+1)<=o,(function(){return"Axis must be in the interval [".concat(-(c+1),", ").concat(c,"]")})),u=c+o+1),s.splice(u,0,1),ga({inputs:{x:i},backend:r,attrs:{shape:s}})}var ei={kernelName:n.ExpandDims,backendName:"webgl",kernelFunc:$o},ni="return exp(x) - 1.0;",ti=ua({opSnippet:ni,packedOpSnippet:ni,cpuKernelImpl:et}),ai={kernelName:n.Expm1,backendName:"webgl",kernelFunc:ti},ri=function(e,n,t){this.variableNames=["real","imag"];var a=n[1];this.outputShape=n;var r,o=t?"2.0 * ".concat(Math.PI):"-2.0 * ".concat(Math.PI),i=t?"".concat(a,".0"):"1.0";if("real"===e)r="return real * expR - imag * expI;";else{if("imag"!==e)throw new Error('FFT component must be either "real" or "imag", got '.concat(e,"."));r="return real * expI + imag * expR;"}this.userCode="\n const float exponentMultiplier = ".concat(o,";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n ").concat(r,"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float(").concat(a,");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < ").concat(a,"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / ").concat(i,";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n ")};function oi(e,t,a){var r=a.texData.get(e.dataId),o=n.util.sizeFromShape(e.shape),i=e.shape[e.shape.length-1],c=ga({inputs:{x:e},backend:a,attrs:{shape:[o/i,i]}}),s=c.shape,u=new ri("real",s,t),l=new ri("imag",s,t),d=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:s},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:s}],p=a.runWebGLProgram(u,d,"float32"),h=a.runWebGLProgram(l,d,"float32"),f=na({inputs:{real:p,imag:h},backend:a});a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(h);var x=ga({inputs:{x:f},backend:a,attrs:{shape:e.shape}});return a.disposeIntermediateTensorInfo(c),a.disposeIntermediateTensorInfo(f),x}var ii={kernelName:n.FFT,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend;return oi(n.input,!1,t)}},ci=function(e,n){this.outputShape=[],this.customUniforms=[{name:"value",type:"float"}],this.variableNames=["x"],this.outputShape=e,this.userCode="\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "};function si(e){var t=e.backend,a=e.attrs,r=a.shape,o=a.value,i=a.dtype;if("string"===(i=i||n.util.inferDtype(o))){var c=n.util.getArrayFromDType(i,n.util.sizeFromShape(r));return c.fill(o),t.makeTensorInfo(r,i,c)}var s=new ci(r,o),u=[[o]];return t.runWebGLProgram(s,[],i,u)}var ui,li={kernelName:n.Fill,backendName:"webgl",kernelFunc:si},di=function(e){this.variableNames=["Image"],this.outputShape=[];var n=e[2];this.outputShape=e,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n\n int coordX = ".concat(n," - x - 1;\n float outputValue;\n if(coordX >= 0 && coordX < ").concat(n,") {\n outputValue = getImage(coords[0], coords[1], coordX, coords[3]);\n } else {\n outputValue = getImage(coords[0], coords[1], coords[2], coords[3]);\n }\n setOutput(outputValue);\n }\n ")},pi={kernelName:n.FlipLeftRight,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=n.image,r=t,o=new di(a.shape);return r.runWebGLProgram(o,[a],a.dtype)}},hi="return floor(x);",fi=ua({opSnippet:hi,packedOpSnippet:hi,cpuKernelImpl:nt}),xi={kernelName:n.Floor,backendName:"webgl",kernelFunc:fi},vi=la({opSnippet:"\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",packedOpSnippet:"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n",dtype:"int32"}),gi={kernelName:n.FloorDiv,backendName:"webgl",kernelFunc:vi},mi=function(e){this.variableNames=["A"];var n=he(),t=c(e,2),a=t[0],r=t[1];this.outputShape=e,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(".concat(r,".0, ").concat(a,".0);\n\n vec4 values = ").concat(n.texture2D,"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n ")},bi=function(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var n=he(),t=c(e,2),a=t[0],r=t[1];this.outputShape=e,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(".concat(r,".0, ").concat(a,".0);\n vec4 values = ").concat(n.texture2D,"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n ").concat(n.output," = result;\n }\n ")},Ci={kernelName:n.FromPixels,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.pixels,i=r.numChannels,s="undefined"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,u="undefined"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,d=c(s?[o.videoWidth,o.videoHeight]:[o.width,o.height],2),p=d[0],h=d[1],f=[h,p],x=[h,p,i];if(u||s){var v=n.env().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");null!=ui&&v===yi||(yi=v,ui=document.createElement("canvas").getContext("2d",{willReadFrequently:yi})),ui.canvas.width=p,ui.canvas.height=h,ui.drawImage(o,0,0,p,h),o=ui.canvas}var g=a.makeTensorInfo(f,"int32");a.texData.get(g.dataId).usage=l.PIXELS,a.gpgpu.uploadPixelDataToTexture(a.getTexture(g.dataId),o);var m=n.env().getBool("WEBGL_PACK")?new bi(x):new mi(x),b=a.runWebGLProgram(m,[g],"int32");return a.disposeData(g.dataId),b}},yi=n.env().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU"),wi={kernelName:n.FusedConv2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=a.bias,u=a.preluActivationWeights,l=o.strides,d=o.pad,p=o.dataFormat,h=o.dilations,f=o.dimRoundingMode,x=o.activation,v=o.leakyreluAlpha,g=n.backend_util.convertConv2DDataFormat(p),m=n.backend_util.computeConv2DInfo(i.shape,c.shape,l,h,d,f,!1,g),b=[],C=null!=s,y=null!=u,w="leakyrelu"===x,I=function(){var e=[i,c],t=function(e,n){if("NCHW"===n&&1===e.shape.length&&1!==e.shape[0]){var t=ga({inputs:{x:e},backend:r,attrs:{shape:[e.shape[0],1,1]}});return b.push(t),t}return e};if(C&&e.push(t(s,p)),y&&e.push(t(u,p)),w){var a=r.makeTensorInfo([],"float32",n.util.createScalarValue(v,"float32"));e.push(a),b.push(a)}return e};if(1!==m.filterHeight||1!==m.filterWidth||1!==m.dilationHeight||1!==m.dilationWidth||1!==m.strideHeight||1!==m.strideWidth||"SAME"!==m.padInfo.type&&"VALID"!==m.padInfo.type)if(m.strideWidth<=2&&"channelsLast"===g&&n.env().getBool("WEBGL_EXP_CONV")){var S=x?da(x,!0):null,k=new $r(m,C,S,y,w),R=[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]],T=I();t=r.runWebGLProgram(k,T,"float32",R)}else if(n.env().getBool("WEBGL_CONV_IM2COL"))t=ao({x:i,filter:c,convInfo:m,backend:r,bias:s,activation:x,preluActivationWeights:u,leakyreluAlpha:v});else{S=x?da(x,!1):null,k=new Zr(m,C,S,y,w);var N=I();t=r.runWebGLProgram(k,N,"float32")}else t=to({x:i,filter:c,convInfo:m,backend:r,bias:s,activation:x,preluActivationWeights:u,leakyreluAlpha:v});var E=ga({inputs:{x:t},backend:r,attrs:{shape:m.outShape}});return b.push(t),b.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),E}},Ii={kernelName:n.FusedDepthwiseConv2D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.filter,c=t.bias,s=t.preluActivationWeights,u=r.strides,l=r.pad,d=r.dilations,p=r.dimRoundingMode,h=r.activation,f=r.leakyreluAlpha,x=[],v=d;null==v&&(v=[1,1]),n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(u,v),(function(){return"Error in depthwiseConv2d: Either strides or dilations must be "+"1. Got strides ".concat(u," and dilations '").concat(v,"'")}));var g,m=n.backend_util.computeConv2DInfo(o.shape,i.shape,u,v,l,p,!0),b=n.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&m.strideWidth<=2&&m.outChannels/m.inChannels==1,C=h?da(h,b):null,y=[o,i],w=null!=c,I=null!=s,S="leakyrelu"===h;if(w&&y.push(c),I&&y.push(s),S){var k=a.makeTensorInfo([],"float32",n.util.createScalarValue(f,"float32"));y.push(k),x.push(k)}g=b?new Fo(m,w,C,I,S):new Oo(m,w,C,I,S);var R=[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]],T=a.runWebGLProgram(g,y,"float32",R);return x.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),T}},Si=function(e,n,t,a){this.sliceDim=e,this.strides=n,this.paramsShape=a,this.variableNames=["x","indices"],this.outputShape=t;for(var r=Ne(t.length),o="\n int index;",i=0;i= ").concat(this.paramsShape[i],";\n flattenIndex += index * ").concat(this.strides[i],";");this.userCode="\n void main() {\n ".concat(r," coords = getOutputCoords();\n int flattenIndex = 0;\n bool out_of_bounds = false;\n\n ").concat(o,"\n\n setOutput(out_of_bounds ? 0.0 : getX(flattenIndex, coords[1]));\n }\n ")},ki={kernelName:n.GatherNd,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.params,o=t.indices,i=o.shape,s=i[i.length-1],u=n.util.sizeFromShape(r.shape),l=c(n.backend_util.prepareAndValidate(r,o),4),d=l[0],p=l[1],h=l[2],f=l[3],x=ga({inputs:{x:o},backend:a,attrs:{shape:[p,s]}}),v=ga({inputs:{x:r},backend:a,attrs:{shape:[n.util.sizeFromShape(r.shape)/h,h]}});if(a.shouldExecuteOnCPU([r,o])||"string"===r.dtype){var g=a.readSync(o.dataId),m=a.bufferSync(r),b=tt(g,m,r.dtype,p,s,h,f,r.shape,u);return a.makeTensorInfo(d,r.dtype,b.values)}var C=new Si(s,f,[p,h],r.shape),y=a.runWebGLProgram(C,[v,x],v.dtype),w=ga({inputs:{x:y},backend:a,attrs:{shape:d}});return a.disposeIntermediateTensorInfo(x),a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(y),w}},Ri=function(e,n){this.variableNames=["A","indices"],this.outputShape=n,this.rank=n.length;var t=Ne(this.rank),a=function(e,n){for(var t=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],r=0;r= 0) && (index < ").concat(e[2],") ? 1.0 : 0.0;\n setOutput(inBounds * getA(").concat(a,"));\n }\n ")};function Ti(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.indices,c=r.axis,s=r.batchDims,u=n.util.parseAxisParam(c,o.shape)[0];if(n.env().get("DEBUG"))for(var l=a.readSync(i.dataId),d=o.shape[u],p=function(e){var t=l[e];n.util.assert(t<=d-1&&t>=0,(function(){return"GatherV2: the index value ".concat(t," is not in [0, ").concat(d-1,"]")}))},h=0;h b);",packedOpSnippet:"\n return vec4(greaterThan(a, b));\n",cpuKernelImpl:at,dtype:"bool"}),Ai={kernelName:n.Greater,backendName:"webgl",kernelFunc:Ei},_i=la({opSnippet:"return float(a >= b);",packedOpSnippet:"\n return vec4(greaterThanEqual(a, b));\n",dtype:"bool",cpuKernelImpl:rt}),Oi={kernelName:n.GreaterEqual,backendName:"webgl",kernelFunc:_i},Fi={kernelName:n.IFFT,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend;return oi(n.input,!0,t)}},Di=ua({opSnippet:"return float(!isnan(x) && !isinf(x));",dtype:"bool"}),Pi={kernelName:n.IsFinite,backendName:"webgl",kernelFunc:Di},Li=ua({opSnippet:"return float(isinf(x));",dtype:"bool"}),Bi={kernelName:n.IsInf,backendName:"webgl",kernelFunc:Li},Vi=ua({opSnippet:"return float(isnan(x));",dtype:"bool"}),Wi={kernelName:n.IsNan,backendName:"webgl",kernelFunc:Vi},Ui=la({opSnippet:"return float(a < b);",packedOpSnippet:"\n return vec4(lessThan(a, b));\n",cpuKernelImpl:ot,dtype:"bool"}),Mi={kernelName:n.Less,backendName:"webgl",kernelFunc:Ui},Gi=la({opSnippet:"return float(a <= b);",packedOpSnippet:"\n return vec4(lessThanEqual(a, b));\n",cpuKernelImpl:it,dtype:"bool"}),zi={kernelName:n.LessEqual,backendName:"webgl",kernelFunc:Gi},Xi={kernelName:n.LinSpace,backendName:"webgl",kernelFunc:function(e){var n=e.backend,t=e.attrs,a=t.start,r=t.stop,o=t.num,i=ct(a,r,o);return n.makeTensorInfo([i.length],"float32",i)}},Hi=ua({opSnippet:"if (isnan(x)) return x;\n return x < 0.0 ? 0./0. : log(x);\n",packedOpSnippet:"\n vec4 result = log(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : (x.r < 0.0 ? 0./0. : result.r);\n result.g = isNaN.g ? x.g : (x.g < 0.0 ? 0./0. : result.g);\n result.b = isNaN.b ? x.b : (x.b < 0.0 ? 0./0. : result.b);\n result.a = isNaN.a ? x.a : (x.a < 0.0 ? 0./0. : result.a);\n return result;\n",cpuKernelImpl:st}),ji={kernelName:n.Log,backendName:"webgl",kernelFunc:Hi},Ki=ua({opSnippet:"if (isnan(x)) return x;\n return log(1.0 + x);\n"}),qi={kernelName:n.Log1p,backendName:"webgl",kernelFunc:Ki},Yi=la({opSnippet:"return float(a >= 1.0 && b >= 1.0);",packedOpSnippet:"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n",dtype:"bool"}),Qi={kernelName:n.LogicalAnd,backendName:"webgl",kernelFunc:Yi},Zi=ua({opSnippet:"return float(!(x >= 1.0));"}),Ji={kernelName:n.LogicalNot,backendName:"webgl",kernelFunc:Zi},$i=la({opSnippet:"return float(a >= 1.0 || b >= 1.0);",packedOpSnippet:"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n",dtype:"bool"}),ec={kernelName:n.LogicalOr,backendName:"webgl",kernelFunc:$i},nc=function(e,n,t,a,r){this.variableNames=["x"],this.outputShape=[];var o,i=n,c=e[3]-1;this.outputShape=e;var s="float(".concat(t,") + float(").concat(a,") * sum");o=.5===r?"inversesqrt(".concat(s,")"):1===r?"1.0/(".concat(s,")"):"exp(log(".concat(s,") * float(-").concat(r,"));"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -".concat(i,"; j <= ").concat(i,"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= ").concat(c,") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * ").concat(o,";\n setOutput(val);\n }\n ")},tc=function(e,n,t,a,r){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var o,i=n,c=e[3]-1;this.outputShape=e;var s="float(".concat(t,") + float(").concat(a,") * sum");o=.5===r?"inversesqrt(".concat(s,")"):1===r?"1.0/(".concat(s,")"):"exp(log(".concat(s,") * float(-").concat(r,"));"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < ".concat(this.outputShape[3],";\n bool hasNextRow = c < ").concat(this.outputShape[2],";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - ").concat(i,";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - ").concat(i,"; j <= ").concat(i,"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2(").concat(c,"));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * ").concat(o,";\n setOutput(result);\n }\n ")},ac={kernelName:n.LRN,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.depthRadius,c=r.bias,s=r.alpha,u=r.beta,l=n.env().getBool("WEBGL_PACK_NORMALIZATION")?new tc(o.shape,i,c,s,u):new nc(o.shape,i,c,s,u);return a.runWebGLProgram(l,[o],o.dtype)}},rc=function(e,n,t,a,r){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=n,this.bias=t,this.alpha=a,this.beta=r,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < ".concat(this.depth,"; ++d) {\n int depthBegin = int(max(0.0, float(d - ").concat(n,")));\n int depthEnd = int(min(float(").concat(this.depth,"),\n float(d + ").concat(n," + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = ").concat(this.depth,";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float(").concat(a,") * norm + float(").concat(t,");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float(").concat(a,")\n * float(").concat(r,")\n * getInputImage(b, r, c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * ").concat(r,");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n ")},oc={kernelName:n.LRNGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.y,i=n.dy,c=a.depthRadius,s=a.bias,u=a.alpha,l=a.beta,d=new rc(r.shape,c,s,u,l);return t.runWebGLProgram(d,[r,o,i],r.dtype)}};function ic(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.reductionIndices,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=null!=p,f=a.shouldExecuteOnCPU([o]),x=o;if(h){if(f){for(var v=a.texData.get(x.dataId).values,g=new Array(u),m=0;ms)&&(s=l)}o[i]=s}return o}(v=a.texData.get(x.dataId).values,n.util.sizeFromShape(I),S,o.dtype);C=a.makeTensorInfo(S,o.dtype),a.texData.get(C.dataId).values=k}else C=function(e,t,a,r){var o=n.util.sizeFromShape(t),i=ga({inputs:{x:e},attrs:{shape:[n.util.sizeFromShape(e.shape)/o,o]},backend:r}),c=ya(i,e.dtype,"max",r),s=ga({inputs:{x:c},attrs:{shape:a},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(c),s}(x,I,S,a);return h&&a.disposeIntermediateTensorInfo(x),C}var cc={kernelName:n.Max,backendName:"webgl",kernelFunc:ic},sc=la({opSnippet:"\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return max(a, b);\n",packedOpSnippet:"\n vec4 result = vec4(max(a, b));\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n \n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n\n return result;\n",cpuKernelImpl:ut}),uc={kernelName:n.Maximum,backendName:"webgl",kernelFunc:sc},lc={kernelName:n.MaxPool,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x;le(o,"maxPool");var i=r.filterSize,c=r.strides,s=r.pad,u=r.dimRoundingMode;n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(c,1),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(c," and dilations '").concat(1,"'")}));var l=n.backend_util.computePool2DInfo(o.shape,i,c,1,s,u);if(1===l.filterWidth&&1===l.filterHeight&&n.util.arraysEqual(l.inShape,l.outShape))return $t({inputs:{x:o},backend:a});var d=new sr(l,"max",!1);return a.runWebGLProgram(d,[o],o.dtype)}},dc={kernelName:n.MaxPool3D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.filterSize,c=r.strides,s=r.pad,u=r.dataFormat,l=r.dimRoundingMode,d=n.backend_util.computePool3DInfo(o.shape,i,c,[1,1,1],s,l,u),p=new ur(d,"max",!1);return a.runWebGLProgram(p,[o],o.dtype)}},pc=function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var n=e.strideHeight,t=e.strideWidth,a=e.dilationHeight,r=e.effectiveFilterHeight,o=e.effectiveFilterWidth,i=r-1-e.padInfo.top,c=o-1-e.padInfo.left,s=r*o-1;this.userCode="\n const ivec2 pads = ivec2(".concat(i,", ").concat(c,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(r,";\n wR += ").concat(a,") {\n float dyR = float(dyRCorner + wR) / ").concat(n,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(o,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(t,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = ").concat(s," - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * ").concat(o," + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n ")},hc=function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var n=e.strideDepth,t=e.strideHeight,a=e.strideWidth,r=e.dilationDepth,o=e.dilationHeight,i=e.dilationWidth,c=e.effectiveFilterDepth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=c-1-e.padInfo.front,d=s-1-e.padInfo.top,p=u-1-e.padInfo.left,h=c*s*u-1;this.userCode="\n const ivec3 pads = ivec3(".concat(l,", ").concat(d,", ").concat(p,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ").concat(c,";\n wD += ").concat(r,") {\n float dyD = float(dyDCorner + wD) / ").concat(n,".0;\n\n if (dyD < 0.0 || dyD >= ").concat(e.outDepth,".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ").concat(s,";\n wR += ").concat(o,") {\n float dyR = float(dyRCorner + wR) / ").concat(t,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(u,";\n wC += ").concat(i,") {\n float dyC = float(dyCCorner + wC) / ").concat(a,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = ").concat(h," -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * ").concat(s," * ").concat(u," +\n wR * ").concat(u," + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},fc={kernelName:n.MaxPool3DGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=r.filterSize,s=r.strides,u=r.pad,l=r.dimRoundingMode,d=n.backend_util.computePool3DInfo(i.shape,c,s,[1,1,1],u,l),p=new ur(d,"max",!0),h=a.runWebGLProgram(p,[i],i.dtype),f=new hc(d),x=a.runWebGLProgram(f,[o,h],i.dtype);return a.disposeIntermediateTensorInfo(h),x}},xc={kernelName:n.MaxPoolGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=i;le([i,t.output],"maxPoolGrad");var s=r.filterSize,u=r.strides,l=r.pad,d=r.dimRoundingMode,p=n.backend_util.computePool2DInfo(c.shape,s,u,1,l,d),h=new sr(p,"max",!0),f=a.runWebGLProgram(h,[c],c.dtype),x=new pc(p),v=a.runWebGLProgram(x,[o,f],c.dtype);return a.disposeIntermediateTensorInfo(f),v}},vc={kernelName:n.MaxPoolWithArgmax,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.attrs,r=e.backend,o=t.x,i=a.filterSize,s=a.strides,u=a.pad,l=a.includeBatchInIndex,d=r;n.util.assert(4===o.shape.length,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(o.shape.length,".")}));var p=[1,1];n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(s,p),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(s," and dilations '").concat(p,"'")}));var h=n.backend_util.computePool2DInfo(o.shape,i,s,p,u),f=c(function(e,n,t,a){var r=new sr(t,"max",!1),o=a.runWebGLProgram(r,[e],"float32");return r=new sr(t,"max",!0,!0,n),[o,a.runWebGLProgram(r,[e],"float32")]}(o,l,h,d),2);return[f[0],f[1]]}},gc={kernelName:n.Mean,backendName:"webgl",kernelFunc:function(e){var t,a,r=e.inputs,o=e.attrs,s=e.backend,u=r.x,l=o.keepDims,d=o.axis,p=s,h=u.shape.length,f=n.util.parseAxisParam(d,u.shape),x=f,v=n.backend_util.getAxesPermutation(x,h),g=null!=v,m=p.shouldExecuteOnCPU([u]),b=[],C=u;if(g){if(m){for(var y=p.texData.get(C.dataId).values,w=new Array(h),I=0;I= end[i]) {\n outC[i] = (end[i] - 1) * 2 - outC[i] + ").concat(s,";\n }\n }\n ").concat(r," coords = outC - start;\n setOutput(getX(").concat(c,"));\n }\n "):"\n int start = ".concat(o,";\n int end = ").concat(i,";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start) {\n outC = start * 2 - outC - ").concat(s,";\n } else if(outC >= end) {\n outC = (end - 1) * 2 - outC + ").concat(s,";\n }\n setOutput(getX(outC - start));\n }\n ")},wc=function(e,n,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=Ot("rc",a),s=Ot("source",a),u="".concat(c[a-1]," < ").concat(this.outputShape[a-1]),l=1===a?"source":"vec2(".concat(s.slice(-2).join(),")"),d="reflect"===t?0:1,p="";if(1===a){var h="\n ".concat(r," source = rc;\n if (source < start) {\n source = start * 2 - source - ").concat(d,";\n } else if (source >= end) {\n source = (end - 1) * 2 - source + ").concat(d,";\n }\n source -= start;\n ");p="\n ".concat(r," rc = outputLoc;\n ").concat(h,"\n result[0] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[1] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n ")}else h="\n ".concat(r," source = rc;\n ").concat(r," lt = ").concat(r,"(lessThan(source, start));\n ").concat(r," gte = ").concat(r,"(greaterThanEqual(source, end));\n ").concat(r," orig = 1 - (lt + gte);\n source = orig * source +\n lt * (start * 2 - source - ").concat(d,") +\n gte * ((end - 1) * 2 - source + ").concat(d,");\n source -= start;\n "),p="\n ".concat(r," rc = outputLoc;\n ").concat(h,"\n result[0] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[1] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n rc = outputLoc;\n ").concat(c[a-2]," += 1;\n if(").concat(c[a-2]," < ").concat(this.outputShape[a-2],") {\n ").concat(h,"\n result[2] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[3] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n }\n ");this.userCode="\n const ".concat(r," start = ").concat(r,"(").concat(o,");\n const ").concat(r," end = ").concat(r,"(").concat(i,");\n\n void main() {\n ").concat(r," outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n ").concat(p,"\n setOutput(result);\n }\n ")},Ic={kernelName:n.MirrorPad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.paddings,c=r.mode,s=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new wc(o.shape,i,c):new yc(o.shape,i,c);return a.runWebGLProgram(s,[o],o.dtype)}},Sc=la({opSnippet:"if (b == 0.0) return NAN;\n return mod(a, b);",packedOpSnippet:"\n vec4 result = mod(a, b);\n bvec4 isNaN = equal(b, vec4(0.0));\n \n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n\n return result;\n"}),kc={kernelName:n.Mod,backendName:"webgl",kernelFunc:Sc},Rc=function(e,n,t){this.variableNames=["probs"],this.customUniforms=[{name:"seed",type:"float"}],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < ".concat(n-1,"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float(").concat(n-1,"));\n }\n ")},Tc=la({opSnippet:"\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",packedOpSnippet:"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n",checkOutOfBounds:!0}),Nc={kernelName:n.RealDiv,backendName:"webgl",kernelFunc:Tc},Ec="return a - b;",Ac=la({opSnippet:Ec,packedOpSnippet:Ec,supportsComplex:!0,cpuKernelImpl:Nt}),_c={kernelName:n.Sub,backendName:"webgl",kernelFunc:Ac};function Oc(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.logits,i=r.dim,c=n.util.parseAxisParam([i],o.shape),s=ic({inputs:{x:o},backend:a,attrs:{reductionIndices:c,keepDims:!1}}),u=n.backend_util.expandShapeToKeepDim(s.shape,c),l=ga({inputs:{x:s},backend:a,attrs:{shape:u}}),d=Ac({inputs:{a:o,b:l},backend:a}),p=Zo({inputs:{x:d},backend:a}),h=ka({inputs:{x:p},backend:a,attrs:{axis:c,keepDims:!1}}),f=ga({inputs:{x:h},backend:a,attrs:{shape:u}}),x=Tc({inputs:{a:p,b:f},backend:a});return a.disposeIntermediateTensorInfo(s),a.disposeIntermediateTensorInfo(l),a.disposeIntermediateTensorInfo(d),a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(h),a.disposeIntermediateTensorInfo(f),x}var Fc={kernelName:n.Softmax,backendName:"webgl",kernelFunc:Oc},Dc={kernelName:n.Multinomial,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.logits,o=a.numSamples,i=a.seed,c=a.normalized,s=c?r:Oc({inputs:{logits:r},backend:t,attrs:{dim:r.shape.length-1}}),u=s.shape[0],l=s.shape[1],d=new Rc(u,l,o),p=[[i]],h=t.runWebGLProgram(d,[s],"int32",p);return c||t.disposeIntermediateTensorInfo(s),h}},Pc={kernelName:n.Neg,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.x;if(r.shouldExecuteOnCPU([o])){var i=c(function(e,t,a){var r=n.util.createScalarValue(-1,a);return En([],t,r,e,a)}(r.texData.get(o.dataId).values,o.shape,o.dtype),2),s=i[0],u=i[1];return r.makeTensorInfo(u,o.dtype,s)}return t=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Gt(o.shape,"\n vec4 result = -x;\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"):new Wt(o.shape,"if (isnan(x)) return x;\n return -x;\n"),r.runWebGLProgram(t,[o],o.dtype)}},Lc=n.kernel_impls.nonMaxSuppressionV3Impl,Bc={kernelName:n.NonMaxSuppressionV3,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=a.readSync(o.dataId),d=a.readSync(i.dataId),p=Lc(l,d,c,s,u).selectedIndices;return a.makeTensorInfo([p.length],"int32",new Int32Array(p))}},Vc=n.kernel_impls.nonMaxSuppressionV4Impl,Wc={kernelName:n.NonMaxSuppressionV4,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=r.padToMaxOutputSize,d=a.readSync(o.dataId),p=a.readSync(i.dataId),h=Vc(d,p,c,s,u,l),f=h.selectedIndices,x=h.validOutputs;return[a.makeTensorInfo([f.length],"int32",new Int32Array(f)),a.makeTensorInfo([],"int32",new Int32Array([x]))]}},Uc=n.kernel_impls.nonMaxSuppressionV5Impl,Mc={kernelName:n.NonMaxSuppressionV5,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=r.softNmsSigma,d=a.readSync(o.dataId),p=a.readSync(i.dataId),h=Uc(d,p,c,s,u,l),f=h.selectedIndices,x=h.selectedScores;return[a.makeTensorInfo([f.length],"int32",new Int32Array(f)),a.makeTensorInfo([x.length],"float32",new Float32Array(x))]}},Gc=function(e,n,t,a){this.variableNames=["indices"],this.outputShape=[e,n],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float(".concat(a,"), float(").concat(t,"),\n float(index == coords.y)));\n }\n ")},zc={kernelName:n.OneHot,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.indices,i=r.dtype,u=r.depth,l=r.onValue,d=r.offValue,p=n.util.sizeFromShape(o.shape),h=new Gc(p,u,l,d),f=ga({inputs:{x:o},backend:a,attrs:{shape:[p]}}),x=a.runWebGLProgram(h,[f],i);a.disposeIntermediateTensorInfo(f);var v=ga({inputs:{x},backend:a,attrs:{shape:s(s([],c(o.shape),!1),[u],!1)}});return a.disposeIntermediateTensorInfo(x),v}};function Xc(e){var n=e.inputs,t=e.backend,a=n.x;if("complex64"===a.dtype){var r=_r({inputs:{input:a},backend:t}),o=Xc({inputs:{x:r},backend:t}),i=jr({inputs:{input:a},backend:t}),c=Xc({inputs:{x:i},backend:t}),s=na({inputs:{real:o,imag:c},backend:t});return t.disposeIntermediateTensorInfo(r),t.disposeIntermediateTensorInfo(o),t.disposeIntermediateTensorInfo(i),t.disposeIntermediateTensorInfo(c),s}return si({attrs:{shape:a.shape,dtype:a.dtype,value:"string"===a.dtype?"":0},backend:t})}var Hc={kernelName:n.ZerosLike,backendName:"webgl",kernelFunc:Xc},jc={kernelName:n.OnesLike,backendName:"webgl",kernelFunc:function e(n){var t=n.inputs,a=n.backend,r=t.x;if("string"===r.dtype)throw new Error("onesLike is not supported under string dtype");if("complex64"===r.dtype){var o=_r({inputs:{input:r},backend:a}),i=e({inputs:{x:o},backend:a}),c=jr({inputs:{input:r},backend:a}),s=Xc({inputs:{x:c},backend:a}),u=na({inputs:{real:i,imag:s},backend:a});return a.disposeIntermediateTensorInfo(o),a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(c),a.disposeIntermediateTensorInfo(s),u}return si({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:a})}},Kc={kernelName:n.Pack,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs.axis;if(1===t.length)return $o({inputs:{input:t[0]},backend:a,attrs:{dim:r}});var o=t[0].shape,i=t[0].dtype;t.forEach((function(e){n.util.assertShapesMatch(o,e.shape,"All tensors passed to stack must have matching shapes"),n.util.assert(i===e.dtype,(function(){return"All tensors passed to stack must have matching dtypes"}))}));var c=[],s=Yr({inputs:t.map((function(e){var n=$o({inputs:{input:e},backend:a,attrs:{dim:r}});return c.push(n),n})),backend:a,attrs:{axis:r}});return c.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),s}},qc=function(e,n,t){this.variableNames=["x"],this.customUniforms=[{name:"value",type:"float"}],this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a);this.userCode=1!==a?"\n ".concat(r," start = ").concat(r,"(").concat(o,");\n ").concat(r," end = ").concat(r,"(").concat(i,");\n\n void main() {\n ").concat(r," outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(value);\n } else {\n ").concat(r," coords = outC - start;\n setOutput(getX(").concat(c,"));\n }\n }\n "):"\n int start = ".concat(o,";\n int end = ").concat(i,";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(value);\n } else {\n setOutput(getX(outC - start));\n }\n }\n ")},Yc=function(e,n,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"value",type:"float"}],this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));for(var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=Ot("rc",a),s=Ot("source",a),u="".concat(c[a-1]," < ").concat(this.outputShape[a-1]),l=1===a?"source":"vec2(".concat(s.slice(-2).join(),")"),d=["".concat(r," rc = outputLoc;"),"".concat(c[a-1]," += 1;\n if(").concat(u,") {\n "),1===a?"":"}\n rc = outputLoc;\n ".concat(c[a-2]," += 1;\n if(").concat(c[a-2]," < ").concat(this.outputShape[a-2],") {"),1===a?"":" ".concat(c[a-1]," += 1;\n if(").concat(u,") {")],p=1===a?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",h="",f=0,x=1===a?2:4;f1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t];d=r?"(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],");\n const vec2 inputShapeRC = vec2(").concat(s,".0, ").concat(u,".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ").concat(d,";\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0)));\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n ")},hs=function(e,n,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t];d=r?"(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],",\n ").concat(p[1]/h[1],");\n const vec3 inputShapeRC = vec3(").concat(s,".0, ").concat(u,".0,\n ").concat(u,".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ").concat(d,";\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0)));\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ").concat(l-1,";\n bool hasNextRow = coords.z < ").concat(t-1,";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n ")},fs={kernelName:n.ResizeBilinear,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.images,i=r.alignCorners,s=r.halfPixelCenters,u=c(r.size,2),l=u[0],d=u[1],p=n.env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new hs(o.shape,l,d,i,s):new ps(o.shape,l,d,i,s);return a.runWebGLProgram(p,[o],"float32")}},xs=function(e,n,t){this.variableNames=["dy"],this.outputShape=[],this.outputShape=n;var a=c(n,3),r=a[1],o=a[2],i=c(e,3),s=i[1],u=i[2],l=[t&&s>1?r-1:r,t&&u>1?o-1:o],d=[t&&s>1?s-1:s,t&&u>1?u-1:u],p=l[0]/d[0],h=l[1]/d[1],f=1/p,x=1/h,v=2*Math.ceil(f)+2,g=2*Math.ceil(x)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(".concat(p,");\n const float widthScale = float(").concat(h,");\n\n const float invHeightScale = float(").concat(f,");\n const float invWidthScale = float(").concat(x,");\n\n const int winHeight = int(").concat(v,");\n const int winWidth = int(").concat(g,");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ").concat(s,") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ").concat(u,") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), ").concat(r-1,".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), ").concat(o-1,".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ")},vs={kernelName:n.ResizeBilinearGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.images,o=n.dy,i=a.alignCorners,c=new xs(o.shape,r.shape,i);return t.runWebGLProgram(c,[o],o.dtype)}},gs=function(e,n,t,a,r){this.variableNames=["A"],this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t],f=a?"0.5":"0.0";d=r?"max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],");\n const vec2 inputShapeRC = vec2(").concat(s,".0, ").concat(u,".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ").concat(d,";\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ").concat(f,")));\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n ")},ms=function(e,n,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t],f=a?"0.5":"0.0";d=r?"max((vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC, vec3(0.0))":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],",\n ").concat(p[1]/h[1],");\n const vec3 inputShapeRC = vec3(").concat(s,".0, ").concat(u,".0,\n ").concat(u,".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ").concat(d,";\n\n // Compute the coordinators of nearest neighbor point.\n ivec3 sourceNearestRC = ivec3(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ").concat(f,")));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ").concat(l-1,";\n bool hasNextRow = coords.z < ").concat(t-1,";\n\n vec4 newValue = vec4(\n getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d),\n hasNextCol ? getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d + 1) : 0.0);\n\n setOutput(newValue);\n }\n ")},bs={kernelName:n.ResizeNearestNeighbor,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.images,i=r.alignCorners,s=r.halfPixelCenters,u=c(r.size,2),l=u[0],d=u[1],p=n.env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new ms(o.shape,l,d,i,s):new gs(o.shape,l,d,i,s);return a.runWebGLProgram(p,[o],o.dtype)}},Cs=function(e,n,t){this.variableNames=["dy"],this.outputShape=[],this.outputShape=n;var a=c(n,3),r=a[1],o=a[2],i=c(e,3),s=i[1],u=i[2],l=[t&&s>1?r-1:r,t&&u>1?o-1:o],d=[t&&s>1?s-1:s,t&&u>1?u-1:u],p=l[0]/d[0],h=l[1]/d[1],f=1/p,x=1/h,v=2*Math.ceil(f)+2,g=2*Math.ceil(x)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(".concat(p,");\n const float widthScale = float(").concat(h,");\n\n const float invHeightScale = float(").concat(f,");\n const float invWidthScale = float(").concat(x,");\n\n const int winHeight = int(").concat(v,");\n const int winWidth = int(").concat(g,");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ").concat(s,") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ").concat(u,") {\n continue;\n }\n\n float sourceFracRow =\n float(").concat(l[0],") *\n (float(dyR) / float(").concat(d[0],"));\n\n float sourceFracCol =\n float(").concat(l[1],") *\n (float(dyC) / float(").concat(d[1],"));\n\n int sourceNearestRow = int(min(\n float(int(").concat(r,") - 1),\n ").concat(t," ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int(").concat(o,") - 1),\n ").concat(t," ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ")},ys={kernelName:n.ResizeNearestNeighborGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.images,o=n.dy,i=a.alignCorners,c=new Cs(o.shape,r.shape,i);return t.runWebGLProgram(c,[o],o.dtype)}},ws=function(e,n){this.variableNames=["x"];var t=e.length;if(t>4)throw new Error("WebGL backend: Reverse of rank-".concat(t," tensor is not yet supported"));if(this.outputShape=e,1!==t){var a=e.map((function(t,a){return function(t){return-1!==n.indexOf(t)&&1!==e[t]?"".concat(e[t]," - coords[").concat(t,"] - 1"):"coords[".concat(t,"]")}(a)})).join(","),r=Ne(t);this.userCode="\n void main() {\n ".concat(r," coords = getOutputCoords();\n setOutput(getX(").concat(a,"));\n }\n ")}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX(".concat(e[0]," - coord - 1));\n }\n ")},Is=function(e,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var t=e.length;if(t>4)throw new Error("WebGL backend: Reverse of rank-".concat(t," tensor is not yet supported"));this.outputShape=e;var a=Ot("rc",t),r="".concat(a[t-1]," + 1 < ").concat(this.outputShape[t-1]),o="".concat(a[t-2]," + 1 < ").concat(this.outputShape[t-2]),i=Ne(t);function c(t){var a=e.map((function(a,r){return function(t,a){return-1!==n.indexOf(t)&&1!==e[t]?"".concat(e[t]," - ").concat(a[t]," - 1"):"".concat(a[t])}(r,t)})),r=a.join(","),o=a.slice(-2).join(",");return"getChannel(getX(".concat(r,"), vec2(").concat(o,"))")}this.userCode=1===t?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX(".concat(e[0]," - rc - 1),\n ").concat(e[0]," - rc - 1);\n if(").concat(r,"){\n result.g = getChannel(getX(").concat(e[0]," - (rc + 1) - 1),\n ").concat(e[0]," - (rc + 1) - 1);\n }\n setOutput(result);\n }\n "):"\n void main() {\n ".concat(i," rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = ").concat(function(e){return c(e)}(a.slice()),";\n if(").concat(r,"){\n result.g = ").concat(function(e){return e[t-1]="("+e[t-1]+" + 1)",c(e)}(a.slice()),";\n }\n if(").concat(o,") {\n result.b = ").concat(function(e){return e[t-2]="("+e[t-2]+" + 1)",c(e)}(a.slice()),";\n if(").concat(r,") {\n result.a = ").concat(function(e){return e[t-1]="("+e[t-1]+" + 1)",e[t-2]="("+e[t-2]+" + 1)",c(e)}(a.slice()),";\n }\n }\n setOutput(result);\n }\n ")},Ss={kernelName:n.Reverse,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.dims,c=o.shape.length,s=n.util.parseAxisParam(i,o.shape);if(0===c)return $t({inputs:{x:o},backend:a});var u=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Is(o.shape,s):new ws(o.shape,s);return a.runWebGLProgram(u,[o],o.dtype)}},ks=function(e,n){this.variableNames=["Image"],this.outputShape=[],this.customUniforms=[{name:"params",type:"vec4"}];var t,a=e[1],r=e[2];this.outputShape=e,t="number"==typeof n?"float outputValue = ".concat(n.toFixed(2),";"):"\n vec3 fill = vec3(".concat(n.join(","),");\n float outputValue = fill[coords[3]];"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n int y = coords[1];\n float coordXFloat = (float(x) - params[0]) * params[3] -\n (float(y) - params[1]) * params[2];\n float coordYFloat = (float(x) - params[0]) * params[2] +\n (float(y) - params[1]) * params[3];\n int coordX = int(round(coordXFloat + params[0]));\n int coordY = int(round(coordYFloat + params[1]));\n ".concat(t,"\n if(coordX >= 0 && coordX < ").concat(r," && coordY >= 0 && coordY < ").concat(a,") {\n outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n }\n setOutput(outputValue);\n }\n ")},Rs={kernelName:n.RotateWithOffset,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.attrs,r=e.backend,o=t.image,i=a.radians,s=a.fillValue,u=a.center,l=r,d=new ks(o.shape,s),p=c(n.backend_util.getImageCenter(u,o.shape[1],o.shape[2]),2),h=[[p[0],p[1],Math.sin(i),Math.cos(i)]];return l.runWebGLProgram(d,[o],o.dtype,h)}},Ts=ua({opSnippet:"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n"}),Ns={kernelName:n.Round,backendName:"webgl",kernelFunc:Ts},Es=ua({opSnippet:"return inversesqrt(x);",cpuKernelImpl:vt}),As={kernelName:n.Rsqrt,backendName:"webgl",kernelFunc:Es},_s=function(e,n,t,a,r,o,i,c){void 0===c&&(c=!1),this.variableNames=["updates","indices","defaultValue"],this.outputShape=o;var s=Ne(r.length),u=Ne(o.length),l="";1===t?l="i":2===t&&(l="i, j");var d="getIndices(".concat(l,")"),p="";1===a?p="i":2===a&&(p="i, coords[1]");var h="getUpdates(".concat(p,")"),f="";c&&(f="coords[0], coords[1]");var x="getDefaultValue(".concat(f,")"),v=n>1?"strides[j]":"strides";this.userCode="\n ".concat(s," strides = ").concat(s,"(").concat(r,");\n\n void main() {\n ").concat(u," coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < ").concat(e,"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < ").concat(n,"; j++) {\n int index = round(").concat(d,");\n flattenedIndex += index * ").concat(v,";\n }\n if (flattenedIndex == coords[0]) {\n sum += ").concat(h,";\n found = true;\n }\n }\n setOutput(mix(").concat(x,", sum, float(found)));\n }\n ")},Os=function(e,n,t,a,r,o,i,c){void 0===c&&(c=!1),this.variableNames=["updates","indices","defaultValue"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=o;var s=Ne(r.length),u=Ne(o.length),l="";1===t?l="i":2===t&&(l="i, j");var d="getIndices(".concat(l,")"),p="";1===a?p="i":2===a&&(p="i, coords[1]");var h="getUpdates(".concat(p,")"),f="";c&&(f="coords[0], coords[1]");var x="getDefaultValue(".concat(f,")"),v=n>1?"strides[j]":"strides",g=n>1?"strides[j + 1]":"strides";this.userCode="\n ".concat(s," strides = ").concat(s,"(").concat(r,");\n\n void main() {\n ").concat(u," coords = getOutputCoords();\n vec4 sum = vec4(0.);\n vec4 found = vec4(0.);\n for (int i = 0; i < ").concat(e,"; i+=2) {\n ivec2 flattenedIndex = ivec2(0);\n for (int j = 0; j < ").concat(n,"; j+=2) {\n ivec4 index = round(").concat(d,");\n flattenedIndex += index.xz * ").concat(v,";\n if (j + 1 < ").concat(n,") {\n flattenedIndex += index.yw * ").concat(g,";\n }\n }\n if (flattenedIndex[0] == coords[0] || flattenedIndex[1] == coords[0] ||\n flattenedIndex[0] == coords[0] + 1 || flattenedIndex[1] == coords[0] + 1) {\n vec4 updVals = ").concat(h,";\n if (flattenedIndex[0] == coords[0]) {\n sum.xy += updVals.xy;\n found.xy = vec2(1.);\n } else if (flattenedIndex[0] == coords[0] + 1) {\n sum.zw += updVals.xy;\n found.zw = vec2(1.);\n }\n if (flattenedIndex[1] == coords[0]) {\n sum.xy += updVals.zw;\n found.xy = vec2(1.);\n } else if (flattenedIndex[1] == coords[0] + 1) {\n sum.zw += updVals.zw;\n found.zw = vec2(1.);\n }\n }\n }\n setOutput(mix(").concat(x,", sum, found));\n }\n ")},Fs={kernelName:n.ScatterNd,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.indices,i=t.updates,c=r.shape,s=n.backend_util.calculateShapes(i,o,c),u=s.sliceRank,l=s.numUpdates,d=s.sliceSize,p=s.strides,h=s.outputSize,f=[h/d,d];if(0===h)return a.makeTensorInfo(c,o.dtype);var x,v=ga({inputs:{x:o},backend:a,attrs:{shape:[l,u]}}),g=ga({inputs:{x:i},backend:a,attrs:{shape:[l,d]}}),m=a.makeTensorInfo([],"float32",new Float32Array([0]));x=n.env().getBool("WEBGL_PACK")?new Os(l,u,v.shape.length,g.shape.length,p,f):new _s(l,u,v.shape.length,g.shape.length,p,f);var b=a.runWebGLProgram(x,[g,v,m],g.dtype),C=ga({inputs:{x:b},backend:a,attrs:{shape:c}});return a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(g),a.disposeIntermediateTensorInfo(b),a.disposeIntermediateTensorInfo(m),C}},Ds=function(e,t,a,r){this.variableNames=["sortedSequence","values"],this.customUniforms=[{name:"numInputs",type:"int"}],this.outputShape=[e,a];var o="for (int i = 0; i < ".concat(Math.ceil(Math.log2(t+1)),"; ++i) { if (left >= right) break;"),i=2===n.env().getNumber("WEBGL_VERSION")?"while (left < right) {":o,c="left"===r?"<":"<=";this.userCode="\n int findBound(int batch, float value) {\n int left = 0;\n int right = numInputs;\n int mid;\n ".concat(i,"\n mid = (left + right) / 2;\n if (getSortedSequence(batch, mid) ").concat(c," value) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n return right;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int valueIndex = coords[1];\n\n float value = getValues(batch, valueIndex);\n\n setOutput(float(findBound(batch, value)));\n }\n ")},Ps={kernelName:n.SearchSorted,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.sortedSequence,o=n.values,i=a.side,c=new Ds(r.shape[0],r.shape[1],o.shape[1],i),s=[[r.shape[1]]];return t.runWebGLProgram(c,[r,o],"int32",s)}},Ls=function(e,n,t){var a,r;if(this.variableNames=["c","a","b"],this.outputShape=n,t>4)throw Error("Where for rank ".concat(t," is not yet supported"));if(1===t)r="resRC",a="resRC";else{for(var o=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],c=[],s=0;s= 1.0) {\n setOutput(getA(").concat(r,"));\n } else {\n setOutput(getB(").concat(r,"));\n }\n }\n ")},Bs={kernelName:n.Select,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.condition,o=t.t,i=t.e,c=new Ls(r.shape.length,o.shape,o.shape.length);return a.runWebGLProgram(c,[r,o,i],n.upcastType(o.dtype,i.dtype))}},Vs=ua({opSnippet:"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = ".concat(n.backend_util.SELU_SCALEALPHA,";\n float scale = ").concat(n.backend_util.SELU_SCALE,";\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n")}),Ws={kernelName:n.Selu,backendName:"webgl",kernelFunc:Vs},Us=ua({opSnippet:"if (isnan(x)) return x;\n return 1.0 / (1.0 + exp(-1.0 * x));\n",packedOpSnippet:"\n vec4 result = 1.0 / (1.0 + exp(-1.0 * x));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:gt}),Ms={kernelName:n.Sigmoid,backendName:"webgl",kernelFunc:Us},Gs=ua({opSnippet:"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n"}),zs={kernelName:n.Sign,backendName:"webgl",kernelFunc:Gs},Xs=ua({opSnippet:"if (isnan(x)) return x;\n return sin(x);\n",packedOpSnippet:"\n vec4 result = sin(x);\n bvec4 isNaN = isnan(x);\n ".concat(Zt,"\n return result;\n")}),Hs={kernelName:n.Sin,backendName:"webgl",kernelFunc:Xs},js=ua({opSnippet:"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n"}),Ks={kernelName:n.Sinh,backendName:"webgl",kernelFunc:js},qs=ua({opSnippet:"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n"}),Ys={kernelName:n.Softplus,backendName:"webgl",kernelFunc:qs},Qs={kernelName:n.SpaceToBatchND,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.blockShape,u=r.paddings;n.util.assert(o.shape.length<=4,(function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"}));var l=i.reduce((function(e,n){return e*n})),d=[[0,0]];d.push.apply(d,s([],c(u),!1));for(var p=1+i.length;p=r/o)throw new Error("Invalid indices: ".concat(v," does not index into ").concat(a));for(var C=0;C 0.0 ? 1.0 : float(".concat(t.alpha,");\n "),i=new Wt(r.shape,o);return a.runWebGLProgram(i,[r],r.dtype)}},hu=function(e,n,t){this.variableNames=["x"],this.outputShape=t;var a=t.length,r=Ne(t.length),o=Ne(t.length),i="";if(1===a)i="coords * strides + begin";else{var c=0;i=t.map((function(e,n){return c++,1===t.length?"coords * strides[".concat(n,"] + begin[").concat(n,"]"):"coords[".concat(c-1,"] * strides[").concat(n,"] + begin[").concat(n,"]")})).join(",")}this.userCode="\n ".concat(r," begin = ").concat(r,"(").concat(e,");\n ").concat(r," strides = ").concat(r,"(").concat(n,");\n\n void main() {\n ").concat(o," coords = getOutputCoords();\n setOutput(getX(").concat(i,"));\n }\n ")},fu={kernelName:n.StridedSlice,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=o.begin,s=o.end,u=o.strides,l=o.beginMask,d=o.endMask,p=o.ellipsisMask,h=o.newAxisMask,f=o.shrinkAxisMask,x=n.slice_util.sliceInfo(i.shape,c,s,u,l,d,p,h,f),v=x.finalShapeSparse,g=x.finalShape,m=x.isIdentity,b=x.sliceDim0,C=x.isSimpleSlice,y=x.begin,w=x.end,I=x.strides;if(m)t=ga({inputs:{x:i},backend:r,attrs:{shape:g}});else if(b||C){n.util.assert(i.shape.length>=1,(function(){return"Input must have rank at least 1, got: ".concat(i.shape.length)}));var S=n.slice_util.computeOutShape(y,w,I),k=Ir({inputs:{x:i},backend:r,attrs:{begin:y,size:S}});t=ga({inputs:{x:k},backend:r,attrs:{shape:g}}),r.disposeIntermediateTensorInfo(k)}else if(r.shouldExecuteOnCPU([i])){var R=r.readSync(i.dataId),T=n.buffer(i.shape,i.dtype,R),N=kt(v,T,I,y);t=r.makeTensorInfo(g,i.dtype,N.values)}else{var E=new hu(y,I,v);t=r.runWebGLProgram(E,[i],i.dtype)}var A=ga({inputs:{x:t},backend:r,attrs:{shape:g}});return r.disposeIntermediateTensorInfo(t),A}},xu={kernelName:n.StringNGrams,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=a.separator,o=a.nGramWidths,i=a.leftPad,s=a.rightPad,u=a.padWidth,l=a.preserveShortSequences,d=n.data,p=n.dataSplits,h=c(function(e,n,t,a,r,o,i,c){return new Gn(t,a,r,o,i,c).compute(e,n)}(t.readSync(d.dataId),t.readSync(p.dataId),r,o,i,s,u,l),2),f=h[0],x=h[1];return[t.makeTensorInfo([f.length],"string",f),t.makeTensorInfo(p.shape,"int32",x)]}},vu={kernelName:n.StringSplit,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs.skipEmpty,r=n.input,o=n.delimiter;if("string"!==r.dtype)throw new Error("Input must be of datatype string");if(1!==r.shape.length)throw new Error("Input must be a vector, got shape: ".concat(r.shape));if(0!==o.shape.length)throw new Error("Delimiter must be a scalar, got shape: ".concat(o.shape));var i=t.readSync(r.dataId),s=t.readSync(o.dataId)[0],u=c(Rt(i,s,a),3),l=u[0],d=u[1],p=u[2],h=d.length;return[t.makeTensorInfo([h,2],"int32",l),t.makeTensorInfo([h],"string",d),t.makeTensorInfo([2],"int32",new Int32Array(p))]}},gu={kernelName:n.StringToHashBucketFast,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs.numBuckets,r=n.input;if("string"!==r.dtype)throw new Error("Input must be of datatype string");if(a<=0)throw new Error("Number of buckets must be at least 1");var o=t.readSync(r.dataId),i=Tt(o,a);return t.makeTensorInfo(r.shape,"int32",i)}},mu=ua({opSnippet:"return tan(x);"}),bu={kernelName:n.Tan,backendName:"webgl",kernelFunc:mu},Cu=ua({opSnippet:"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n"}),yu={kernelName:n.Tanh,backendName:"webgl",kernelFunc:Cu},wu={kernelName:n.TensorScatterUpdate,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend;e.attrs;var r=t.tensor,o=t.indices,i=t.updates,c=n.backend_util.calculateShapes(i,o,r.shape),s=c.sliceRank,u=c.numUpdates,l=c.sliceSize,d=c.strides,p=c.outputSize,h=[p/l,l];if(0===p)return a.makeTensorInfo(r.shape,o.dtype);var f=ga({inputs:{x:o},backend:a,attrs:{shape:[u,s]}}),x=ga({inputs:{x:i},backend:a,attrs:{shape:[u,l]}}),v=ga({inputs:{x:r},backend:a,attrs:{shape:h}}),g=new _s(u,s,f.shape.length,x.shape.length,d,h,!1,!0),m=a.runWebGLProgram(g,[x,f,v],v.dtype),b=ga({inputs:{x:m},backend:a,attrs:{shape:r.shape}});return a.disposeIntermediateTensorInfo(f),a.disposeIntermediateTensorInfo(x),a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(m),b}},Iu=function(e,n){this.variableNames=["A"];for(var t=new Array(e.length),a=0;a5)throw Error("Tile for rank ".concat(n," is not yet supported"));if(1===n)return"imod(resRC, ".concat(e[0],")");for(var t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],a=[],r=0;r5){var c=a.readSync(o.dataId),s="string"===o.dtype?c.map((function(e){return n.util.decodeString(e)})):c,u=function(e,t){for(var a=new Array(e.rank),r=0;r= dir;\n bool isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n if (reverse == isGreater) { // Elements in opposite order of direction\n int iTemp = i0;\n i0 = i1;\n i1 = iTemp;\n }\n if (isFirstInPair) {\n setOutput(float(i0));\n } else {\n setOutput(float(i1));\n }\n }\n "},Tu=function(e){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"k",type:"int"}],this.outputShape=e,this.userCode="\n void main() {\n // Takes max of indices (0, k), (1, k + 1), (2, k + 2) ...\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // The output size is half of the previous size.\n // If the previous sequence is | | | | _ _ _ _ | | | | _ _ _ _ (k=4),\n // we only need to output the indices at positions |, the indices at\n // positions _ can be thrown away, see Figure5(b) After Phase 2\n // (Merge phase) in the Bitonic Top K paper referenced above.\n // For example, the paper shows we only need to output the orange bars.\n // The output sequence should look like this | | | | | | | |.\n // Because the sequence is halved, to map the output index back\n // to the previous sequence to find the corresponding value,\n // we need to double the index. When we double the index,\n // we basically interpolate a position, so 2i looks like\n // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k position\n // of each 2k positions by - elemIdx % k. E.g. for output at\n // index 4,5,6,7, we want to get the corresponding element at\n // original index 8,9,10,11, for output at index 8,9,10,11,\n // we want to get the corresponding element at original index\n // 16,17,18,19, so on and so forth.\n\n int i = elemIdx < k ? elemIdx : (elemIdx * 2 - imod(elemIdx, k));\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + k : int(getIndices(batch, i + k));\n\n float x0 = getX(batch, i0);\n float x1 = i1 < n ? getX(batch, i1) : x0;\n\n setOutput(x0 >= x1 ? float(i0) : float(i1));\n }\n "};function Nu(e,n){null!==n&&e.disposeIntermediateTensorInfo(n)}function Eu(e){for(var n=1;nl){var h=c(function(e,t,a,r,o){for(var i=t[t.length-1],s=c([e.length/i,i],2),u=s[0],l=s[1],d=n.util.getTypedArrayFromDType(a,u*r),p=n.util.getTypedArrayFromDType("int32",u*r),h=function(n){var t=n*l,a=e.subarray(t,t+l),i=new Array(a.length);a.forEach((function(e,n){return i[n]={value:e,index:n}})),r=1;N/=2)k(T,N,[b,w]);for(var E=w;E>y;E/=2){var A=S(),_=new Tu([b,E/2]),O=[[p],[null===I?1:0],[y]],F=I;for(I=a.runWebGLProgram(_,A,"int32",O),Nu(a,F),T=2*(R=y/2),N=R;N>=1;N/=2)k(T,N,I.shape)}var D=I;I=Ir({inputs:{x:I},backend:a,attrs:{begin:0,size:[b,i]}}),Nu(a,D);var P=Ti({inputs:{x:C,indices:I},backend:a,attrs:{axis:1,batchDims:1}});Nu(a,C);var L=d.slice(0,-1);L.push(i),D=I,I=ga({inputs:{x:I},attrs:{shape:L},backend:a}),Nu(a,D);var B=P;return P=ga({inputs:{x:P},attrs:{shape:L},backend:a}),Nu(a,B),[P,I]}},Fu=function(e,n,t,a,r,o){this.variableNames=["Image","Transforms"],this.outputShape=o;var i,c="nearest"===t?1:2;switch(a){case"constant":default:i=1;break;case"reflect":i=2;break;case"wrap":i=3;break;case"nearest":i=4}this.userCode="\n float mapCoord(float outCoord, float len) {\n float inCoord = outCoord;\n if(".concat(i," == 2) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n if (inCoord < sz2) {\n inCoord = sz2 * float(int(float(-inCoord / sz2))) +\n inCoord;\n }\n inCoord = inCoord < -len ? inCoord + sz2 : -inCoord - 1.0;\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n inCoord -= sz2 * float(int(float(inCoord / sz2)));\n if (inCoord >= len) {\n inCoord = sz2 - inCoord - 1.0;\n }\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (").concat(i," == 3) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord += len * (float(int(float(-inCoord / sz))) + 1.0);\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord -= len * float(int(float(inCoord / sz)));\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (").concat(i," == 4) {\n return clamp(outCoord, 0.0, len - 1.0);\n } else {\n return outCoord;\n }\n }\n\n float readWithFillValue(int batch, int coordY, int coordX,\n int channel) {\n float outputValue;\n if (0 <= coordY && coordY < ").concat(e," && 0 <= coordX && coordX < ").concat(n,") {\n outputValue = getImage(batch, coordY, coordX, channel);\n } else {\n outputValue = float(").concat(r,");\n }\n return outputValue;\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n float outputValue;\n int batch = coords[0];\n int x = coords[2];\n int y = coords[1];\n int channel = coords[3];\n float xf = float(x);\n float yf = float(y);\n float a1 = getTransforms(batch, 0);\n float a2 = getTransforms(batch, 1);\n float a3 = getTransforms(batch, 2);\n float b1 = getTransforms(batch, 3);\n float b2 = getTransforms(batch, 4);\n float b3 = getTransforms(batch, 5);\n float c1 = getTransforms(batch, 6);\n float c2 = getTransforms(batch, 7);\n float projection = c1 * xf + c2 * yf + 1.0;\n if (projection == 0.0) {\n outputValue = float(").concat(r,");\n } else {\n float inX = (a1 * xf + a2 * yf + a3) / projection;\n float inY = (b1 * xf + b2 * yf + b3) / projection;\n float mapX = mapCoord(inX, float(").concat(n,"));\n float mapY = mapCoord(inY, float(").concat(e,"));\n\n if (").concat(c," == 1) {\n int coordY = int(round(mapY));\n int coordX = int(round(mapX));\n outputValue = readWithFillValue(batch, coordY, coordX,\n channel);\n } else {\n float yFloor = floor(mapY);\n float xFloor = floor(mapX);\n float yCeil = yFloor + 1.0;\n float xCeil = xFloor + 1.0;\n float valueYFloor = (xCeil - mapX) *\n readWithFillValue(batch, int(yFloor), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yFloor), int(xCeil), channel);\n float valueYCeil = (xCeil - mapX) *\n readWithFillValue(batch, int(yCeil), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yCeil), int(xCeil), channel);\n outputValue = (yCeil - mapY) * valueYFloor +\n (mapY - yFloor) * valueYCeil;\n }\n }\n setOutput(outputValue);\n }\n ")},Du={kernelName:n.Transform,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.image,o=n.transforms,i=a.interpolation,s=a.fillMode,u=a.fillValue,l=a.outputShape,d=c(r.shape,4),p=d[0],h=d[1],f=d[2],x=d[3],v=c(null!=l?l:[h,f],2),g=v[0],m=v[1],b=new Fu(h,f,i,s,u,[p,g,m,x]);return t.runWebGLProgram(b,[r,o],"float32")}},Pu={kernelName:n.Unique,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.attrs,a=e.backend,r=t.axis,o=n.x;le(o,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");var i=a.readSync(o.dataId),c=At(i,r,o.shape,o.dtype),s=c.outputValues,u=c.outputShape,l=c.indices;return[a.makeTensorInfo(u,o.dtype,s),a.makeTensorInfo([l.length],"int32",l)]}},Lu={kernelName:n.Unpack,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.value,o=a.axis;o<0&&(o+=r.shape.length);for(var i=r,c=i.shape.length,s=r.shape[o],u=new Array(c-1),l=0,d=0;d0&&(l="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return initializationValue;\n }\n "));var d="";r%t>0&&(d="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return -1.0;\n }\n ")),this.userCode="\n const float initializationValue = ".concat("0.0",";\n\n float getValue(int batch, int inIdx) {\n ").concat(l,"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n ").concat(d,"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n ").concat(o,")) * float(").concat(t,"));\n int currentSeg = int(mod(float(outIdx), float(").concat(o,")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ").concat(c,"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n ").concat(u,"\n }\n\n int inIdx = inOffset + ").concat(c,";\n if (").concat(1===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n ").concat(u,"\n } else if (").concat(2===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n ").concat(u,"\n } else if (").concat(3===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n ").concat(u,"\n }\n setOutput(").concat("sumValue",");\n }\n ")},Vu=[Aa,Oa,Da,La,Wa,Ga,za,Xa,Qa,Za,$a,nr,ar,or,cr,lr,dr,fr,xr,vr,br,kr,Rr,Tr,Nr,Fr,Lr,Wr,ta,Gr,Qr,oo,lo,ho,fo,xo,vo,mo,Co,wo,To,No,Eo,_o,Do,Bo,Vo,Uo,Go,zo,Ho,jo,qo,Qo,Jo,ei,ai,ii,li,pi,xi,gi,Ci,wi,Ii,ki,Ni,Ai,Oi,ea,Fi,Kr,Pi,Bi,Wi,oa,Mi,zi,Xi,ji,qi,Qi,Ji,ec,ac,oc,cc,uc,lc,dc,fc,xc,vc,gc,mc,Cc,Ic,kc,Dc,va,Pc,Bc,Wc,Mc,Ar,zc,jc,Kc,Zc,$c,sa,es,ns,ts,as,os,Or,Nc,cs,us,ds,ma,fs,vs,bs,ys,Ss,Rs,Ns,As,Fs,Ps,Bs,Ws,Ms,zs,Hs,Ks,Sr,Fc,Ys,Qs,Zs,Js,$s,eu,nu,tu,ou,cu,lu,du,pu,fu,xu,vu,gu,_c,Ra,bu,yu,wu,ku,Ou,Du,Na,Pu,Lu,{kernelName:n.UnsortedSegmentSum,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.segmentIds,c=r.numSegments,s=o.shape.length,u=[],l=0,d=n.backend_util.getAxesPermutation([l],s),p=o;null!=d&&(p=Ta({inputs:{x:o},backend:a,attrs:{perm:d}}),u.push(p),l=n.backend_util.getInnerMostAxes(1,s)[0]);var h=n.backend_util.segment_util.computeOutShape(p.shape,l,c),f=n.util.sizeFromShape([p.shape[l]]),x=ga({inputs:{x:p},backend:a,attrs:{shape:[-1,f]}});u.push(x);var v=n.sumOutType(o.dtype),g=function(e,t,r,o,i){var c=e.shape[0],s=e.shape[1],l=n.backend_util.segment_util.segOpComputeOptimalWindowSize(s,i),d=new Bu({windowSize:l,inSize:s,batchSize:c,numSegments:i},t),p=a.compileAndRun(d,[e,r],o);if(u.push(p),p.shape[1]===i)return p;var h=rs({backend:a,attrs:{start:0,stop:i,step:1,dtype:"float32"}}),f=Su({inputs:{x:h},backend:a,attrs:{reps:[s/l]}});return u.push(h),u.push(f),g(p,t,f,o,i)},m=ga({inputs:{x:g(x,"unsortedSegmentSum",i,v,c)},backend:a,attrs:{shape:h}}),b=m;if(null!=d){u.push(m);var C=n.backend_util.getUndoAxesPermutation(d);b=Ta({inputs:{x:b},backend:a,attrs:{perm:C}})}return u.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),b}},Hc];try{for(var Wu=i(Vu),Uu=Wu.next();!Uu.done;Uu=Wu.next()){var Mu=Uu.value;n.registerKernel(Mu)}}catch(e){Au={error:e}}finally{try{Uu&&!Uu.done&&(_u=Wu.return)&&_u.call(Wu)}finally{if(Au)throw Au.error}}e.GPGPUContext=pn,e.MathBackendWebGL=Kt,e.forceHalfFloat=qt,e.gpgpu_util=dn,e.setWebGLContext=f,e.version_webgl="4.14.0",e.webgl=Yt,e.webgl_util=de})); \ No newline at end of file +!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{},e.tf)}(this,(function(e,n){"use strict";var t=function(e){var n=Object.create(null);return e&&Object.keys(e).forEach((function(t){if("default"!==t){var a=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,a.get?a:{enumerable:!0,get:function(){return e[t]}})}})),n.default=e,n}(n),a=function(e,n){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])},a(e,n)};function r(e,n,t,a){return new(t||(t=Promise))((function(r,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(e){var n;e.done?r(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,c)}s((a=a.apply(e,n||[])).next())}))}function o(e,n){var t,a,r,o,i={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(o){return function(c){return function(o){if(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=1,a&&(r=2&o[0]?a.return:o[0]?a.throw||((r=a.return)&&r.call(a),0):a.next)&&!(r=r.call(a,o[1])).done)return r;switch(a=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return i.label++,{value:o[1],done:!1};case 5:i.label++,a=o[1],o=[0];continue;case 7:o=i.ops.pop(),i.trys.pop();continue;default:if(!((r=(r=i.trys).length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[a++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function c(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var a,r,o=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(a=o.next()).done;)i.push(a.value)}catch(e){r={error:e}}finally{try{a&&!a.done&&(t=o.return)&&t.call(o)}finally{if(r)throw r.error}}return i}function s(e,n,t){if(t||2===arguments.length)for(var a,r=0,o=n.length;ra||t>a){r="[".concat(e,"x").concat(t,"]");var o="[".concat(a,"x").concat(a,"]");throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+o+".")}}function B(e){return K(e,(function(){return e.createFramebuffer()}),"Unable to create WebGLFramebuffer.")}function V(e,n,t,a,r,o,i){var c=e.getAttribLocation(n,t);return-1!==c&&(C(e,(function(){return e.bindBuffer(e.ARRAY_BUFFER,a)})),C(e,(function(){return e.vertexAttribPointer(c,r,e.FLOAT,!1,o,i)})),C(e,(function(){return e.enableVertexAttribArray(c)})),!0)}function W(e,n,t){q(e,t),C(e,(function(){return e.activeTexture(e.TEXTURE0+t)})),C(e,(function(){return e.bindTexture(e.TEXTURE_2D,n)}))}function U(e,n,t){return K(e,(function(){return e.getUniformLocation(n,t)}),'uniform "'+t+'" not present in program.')}function M(e,n,t){return e.getUniformLocation(n,t)}function G(e,n,t,a){C(e,(function(){return W(e,n,a)})),C(e,(function(){return e.uniform1i(t,a)}))}function z(e,n,t){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,t)})),C(e,(function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0)}))}function X(e,n){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,n)})),C(e,(function(){return e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0)}))}function H(e){var n=e.checkFramebufferStatus(e.FRAMEBUFFER);if(n!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+j(e,n))}function j(e,n){switch(n){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error ".concat(n)}}function K(e,n,t){var a=C(e,(function(){return n()}));if(null==a)throw new Error(t);return a}function q(e,n){var t=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,a=n+e.TEXTURE0;if(at){var r="[gl.TEXTURE0, gl.TEXTURE".concat(t,"]");throw new Error("textureUnit must be in ".concat(r,"."))}}function Y(e,t){return void 0===t&&(t=2),n.util.sizeFromShape(e.slice(0,e.length-t))}function Q(e){if(0===e.length)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Z(e){var n=[1,1,1];return 0===e.length||1===e.length&&1===e[0]||(n=s([Y(e)],c(Q(e)),!1)),n}function J(e,t){var a;void 0===t&&(t=!1);var r=n.env().getNumber("WEBGL_MAX_TEXTURE_SIZE"),o=n.env().getNumber("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE");if(o===1/0&&n.env().getBool("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE")&&(o=r/2),t&&(r*=2,o*=2,1===(e=e.map((function(t,a){return a>=e.length-2?n.util.nearestLargerEven(e[a]):e[a]}))).length&&(e=[2,e[0]])),2!==e.length){var i=n.util.squeezeShape(e);e=i.newShape}var u=n.util.sizeFromShape(e),l=null;e.length<=1&&u<=r?l=[1,u]:2===e.length&&e[0]<=r&&e[1]<=r?l=e:3===e.length&&e[0]*e[1]<=r&&e[2]<=r?l=[e[0]*e[1],e[2]]:3===e.length&&e[0]<=r&&e[1]*e[2]<=r?l=[e[0],e[1]*e[2]]:4===e.length&&e[0]*e[1]*e[2]<=r&&e[3]<=r?l=[e[0]*e[1]*e[2],e[3]]:4===e.length&&e[0]<=r&&e[1]*e[2]*e[3]<=r&&(l=[e[0],e[1]*e[2]*e[3]]);var d=null!=l&&Math.max.apply(Math,s([],c(l),!1))>o&&Math.min.apply(Math,s([],c(l),!1))<=(t?2:1)&&Math.min.apply(Math,s([],c(l),!1))>0;if(null==l||d)if(t){var p=Y(e),h=2,f=2;e.length&&(h=(a=c(Q(e),2))[0],f=a[1]),u=p*(h/2)*(f/2),l=n.util.sizeToSquarishShape(u).map((function(e){return 2*e}))}else l=n.util.sizeToSquarishShape(u);return l}function $(e){return e%2==0}function ee(e,t){if(e=e.slice(-2),t=t.slice(-2),n.util.arraysEqual(e,t))return!0;if(!e.length||!t.length)return!0;if(0===e[0]||0===e[1]||0===t[0]||0===t[1])return!0;if(e.length!==t.length){var a=e[e.length-1],r=t[t.length-1];if(a===r)return!0;if($(a)&&$(r)&&(1===e[0]||1===t[0]))return!0}return e[1]===t[1]&&$(e[0])&&$(t[0])}function ne(e){if(null==R){var n=x(e);R=n.getParameter(n.MAX_TEXTURE_SIZE)}return R}function te(e){if(null==T){var n=x(e);T=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,T)}function ae(e){if(0===e)return 0;var n=x(e);return re(n,"EXT_disjoint_timer_query_webgl2")&&2===e?2:re(n,"EXT_disjoint_timer_query")?1:0}function re(e,n){return null!=e.getExtension(n)}function oe(e){try{if(null!=x(e))return!0}catch(e){return console.log("Error when getting WebGL context: ",e),!1}return!1}function ie(e){if(0===e)return!1;var n=x(e);if(1===e){if(!re(n,"OES_texture_float"))return!1}else if(!re(n,"EXT_color_buffer_float"))return!1;return se(n)}function ce(e){if(0===e)return!1;var n=x(e);if(1!==e){if(re(n,"EXT_color_buffer_float"))return se(n);var t="EXT_color_buffer_half_float";if(re(n,t)){var a=n.getExtension(t);return function(e,n){var t=b(e,n),a=e.createTexture();e.bindTexture(e.TEXTURE_2D,a),e.texImage2D(e.TEXTURE_2D,0,t.internalFormatHalfFloat,1,1,0,t.textureFormatFloat,t.textureTypeHalfFloat,null);var r=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,r),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,a,0);var o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(a),e.deleteFramebuffer(r),o}(n,a)}return!1}return!!re(n,"OES_texture_float")&&!!re(n,"WEBGL_color_buffer_float")&&se(n)}function se(e){var n=b(e),t=e.createTexture();e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,n.internalFormatFloat,1,1,0,n.textureFormatFloat,n.textureTypeFloat,null);var a=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,a),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0);var r=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(t),e.deleteFramebuffer(a),r}function ue(e){return 2===e&&null!=x(e).fenceSync}function le(e,t){Array.isArray(e)||(e=[e]),e.forEach((function(e){null!=e&&n.util.assert("complex64"!==e.dtype,(function(){return"".concat(t," does not support complex64 tensors ")+"in the WebGL backend."}))}))}var de={__proto__:null,assertNotComplex:le,bindCanvasToFramebuffer:function(e){C(e,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),C(e,(function(){return e.viewport(0,0,e.canvas.width,e.canvas.height)})),C(e,(function(){return e.scissor(0,0,e.canvas.width,e.canvas.height)}))},bindColorTextureToFramebuffer:z,bindTextureToProgramUniformSampler:G,bindTextureUnit:W,bindVertexBufferToProgramAttribute:V,callAndCheck:C,canBeRepresented:y,createFragmentShader:k,createFramebuffer:B,createProgram:A,createStaticIndexBuffer:D,createStaticVertexBuffer:F,createTexture:P,createVertexShader:S,getBatchDim:Y,getExtensionOrThrow:I,getFramebufferErrorMessage:j,getMaxTexturesInShader:te,getNumChannels:function(){return 2===n.env().getNumber("WEBGL_VERSION")?1:4},getProgramUniformLocation:M,getProgramUniformLocationOrThrow:U,getRowsCols:Q,getShapeAs3D:Z,getTextureShapeFromLogicalShape:J,getWebGLDisjointQueryTimerVersion:ae,getWebGLErrorMessage:w,getWebGLMaxTextureSize:ne,hasExtension:re,isCapableOfRenderingToFloatTexture:ie,isDownloadFloatTextureEnabled:ce,isReshapeFree:ee,isWebGLFenceEnabled:ue,isWebGLVersionEnabled:oe,linkProgram:_,logShaderSourceAndInfoLog:E,resetMaxTextureSize:function(){R=null},resetMaxTexturesInShader:function(){T=null},unbindColorTextureFromFramebuffer:X,unbindTextureUnit:function(e,n){q(e,n),C(e,(function(){return e.activeTexture(e.TEXTURE0+n)})),C(e,(function(){return e.bindTexture(e.TEXTURE_2D,null)}))},validateFramebuffer:H,validateProgram:O,validateTextureSize:L},pe=n.env();function he(){var e,t,a,r,o,i,c,s,u,l;return 2===n.env().getNumber("WEBGL_VERSION")?(e="#version 300 es",t="in",a="out",r="in",o="texture",i="outputColor",c="out vec4 outputColor;",s=n.env().getBool("WEBGL2_ISNAN_CUSTOM")?"\n bool isnan_custom(float val) {\n uint floatToUint = floatBitsToUint(val);\n return (floatToUint & 0x7fffffffu) > 0x7f800000u;\n }\n\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan_custom(val.x),\n isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));\n }\n\n #define isnan(value) isnan_custom(value)\n ":"",u="",l="\n #define round(value) newRound(value)\n int newRound(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 newRound(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "):(e="",t="attribute",a="varying",r="varying",o="texture2D",i="gl_FragColor",c="",s="\n #define isnan(value) isnan_custom(value)\n bool isnan_custom(float val) {\n return (val > 0. || val < 1. || val == 0.) ? false : true;\n }\n bvec4 isnan_custom(vec4 val) {\n return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));\n }\n ",u="\n uniform float INFINITY;\n\n bool isinf(float val) {\n return abs(val) == INFINITY;\n }\n bvec4 isinf(vec4 val) {\n return equal(abs(val), vec4(INFINITY));\n }\n ",l="\n int round(float value) {\n return int(floor(value + 0.5));\n }\n\n ivec4 round(vec4 value) {\n return ivec4(floor(value + vec4(0.5)));\n }\n "),{version:e,attribute:t,varyingVs:a,varyingFs:r,texture2D:o,output:i,defineOutput:c,defineSpecialNaN:s,defineSpecialInf:u,defineRound:l}}function fe(e,t,a){void 0===a&&(a="index");var r=n.util.computeStrides(t);return r.map((function(n,t){var o="int ".concat(e[t]," = ").concat(a," / ").concat(n),i=t===r.length-1?"int ".concat(e[t+1]," = ").concat(a," - ").concat(e[t]," * ").concat(n):"index -= ".concat(e[t]," * ").concat(n);return"".concat(o,"; ").concat(i,";")})).join("")}function xe(e,t,a){void 0===a&&(a="index");var r=n.util.computeStrides(t);return r.map((function(n,t){var o="int ".concat(e[t]," = ").concat(a," / outShapeStrides[").concat(t,"]"),i=t===r.length-1?"int ".concat(e[t+1]," = ").concat(a," - ").concat(e[t]," * outShapeStrides[").concat(t,"]"):"index -= ".concat(e[t]," * outShapeStrides[").concat(t,"]");return"".concat(o,"; ").concat(i,";")})).join("")}function ve(e){var t=n.util.computeStrides(e).map((function(e){return e.toString()}));return"\n int getFlatIndex(ivec3 coords) {\n return coords.x * ".concat(t[0]," + coords.y * ").concat(t[1]," + coords.z;\n }\n")}pe.registerFlag("HAS_WEBGL",(function(){return pe.getNumber("WEBGL_VERSION")>0})),pe.registerFlag("WEBGL_VERSION",(function(){return oe(2)?2:oe(1)?1:0})),pe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",(function(){return!1})),pe.registerFlag("WEBGL_BUFFER_SUPPORTED",(function(){return 2===pe.get("WEBGL_VERSION")})),pe.registerFlag("WEBGL_CPU_FORWARD",(function(){return!0})),pe.registerFlag("WEBGL_FORCE_F16_TEXTURES",(function(){return!1})),pe.registerFlag("WEBGL_PACK",(function(){return pe.getBool("HAS_WEBGL")})),pe.registerFlag("WEBGL_PACK_NORMALIZATION",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_CLIP",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_DEPTHWISECONV",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_REDUCE",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_LAZILY_UNPACK",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_CONV_IM2COL",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_PACK_CONV2DTRANSPOSE",(function(){return pe.getBool("WEBGL_PACK")})),pe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(function(){return ne(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(function(){return te(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(function(){var e=pe.getNumber("WEBGL_VERSION");return 0===e?0:ae(e)})),pe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(function(){return pe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!n.device_util.isMobile()})),pe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(function(){return ie(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(function(){return!pe.getBool("WEBGL_FORCE_F16_TEXTURES")&&pe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")})),pe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(function(){return ce(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_FENCE_API_ENABLED",(function(){return ue(pe.getNumber("WEBGL_VERSION"))})),pe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(function(){return pe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0})),pe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",(function(){return-1}),(function(e){if("number"!=typeof e)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be a number but "+"got ".concat(e,"."));if(e<0&&-1!==e)throw new Error("WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never "+"delete) or at least 0, but got ".concat(e,"."))})),pe.registerFlag("WEBGL_FLUSH_THRESHOLD",(function(){return n.device_util.isMobile()?1:-1}),(function(e){if("number"!=typeof e)throw new Error("WEBGL_FLUSH_THRESHOLD must be a number but got "+"".concat(e,"."));if(e<0&&-1!==e)throw new Error("WEBGL_FLUSH_THRESHOLD must be -1 (indicating never "+"manual flush) or at least 0, but got ".concat(e,"."))})),pe.registerFlag("CPU_HANDOFF_SIZE_THRESHOLD",(function(){return 128})),pe.registerFlag("WEBGL_USE_SHAPES_UNIFORMS",(function(){return!1})),pe.registerFlag("TOPK_LAST_DIM_CPU_HANDOFF_SIZE_THRESHOLD",(function(){return 1e5})),pe.registerFlag("TOPK_K_CPU_HANDOFF_THRESHOLD",(function(){return 128})),pe.registerFlag("WEBGL_EXP_CONV",(function(){return!1})),pe.registerFlag("SOFTWARE_WEBGL_ENABLED",(function(){return pe.getBool("IS_TEST")})),pe.registerFlag("WEBGL_MAX_SIZE_FOR_NARROW_TEXTURE",(function(){return 1/0})),pe.registerFlag("WEBGL_AUTO_SQUARIFY_NARROW_TEXTURE_SHAPE",(function(){return!1})),pe.registerFlag("WEBGL2_ISNAN_CUSTOM",(function(){return!1})),pe.registerFlag("ENGINE_COMPILE_ONLY",(function(){return!1}));var ge="\n const float FLOAT_MAX = 1.70141184e38;\n const float FLOAT_MIN = 1.17549435e-38;\n\n lowp vec4 encode_float(highp float v) {\n if (isnan(v)) {\n return vec4(255, 255, 255, 255);\n }\n\n highp float av = abs(v);\n\n if(av < FLOAT_MIN) {\n return vec4(0.0, 0.0, 0.0, 0.0);\n } else if(v > FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;\n } else if(v < -FLOAT_MAX) {\n return vec4(0.0, 0.0, 128.0, 255.0) / 255.0;\n }\n\n highp vec4 c = vec4(0,0,0,0);\n\n highp float e = floor(log2(av));\n highp float m = exp2(fract(log2(av))) - 1.0;\n\n c[2] = floor(128.0 * m);\n m -= c[2] / 128.0;\n c[1] = floor(32768.0 * m);\n m -= c[1] / 32768.0;\n c[0] = floor(8388608.0 * m);\n\n highp float ebias = e + 127.0;\n c[3] = floor(ebias / 2.0);\n ebias -= c[3] * 2.0;\n c[2] += floor(ebias) * 128.0;\n\n c[3] += 128.0 * step(0.0, -v);\n\n return c / 255.0;\n }\n",me=n.backend_util.getBroadcastDims;function be(e,t,a){var r=[];if(e.forEach((function(e){var t=n.util.sizeFromShape(e.shapeInfo.logicalShape);if(e.shapeInfo.isUniform?r.push("uniform float ".concat(e.name).concat(t>1?"[".concat(t,"]"):"",";")):(r.push("uniform sampler2D ".concat(e.name,";")),r.push("uniform int offset".concat(e.name,";"))),a.enableShapeUniforms){switch(Ee(a.packedInputs,e.shapeInfo.logicalShape,e.shapeInfo.texShape).uniformShape.length){case 1:r.push("uniform int ".concat(e.name,"Shape;"));break;case 2:r.push("uniform ivec2 ".concat(e.name,"Shape;"));break;case 3:r.push("uniform ivec3 ".concat(e.name,"Shape;"));break;case 4:r.push("uniform ivec4 ".concat(e.name,"Shape;"))}r.push("uniform ivec2 ".concat(e.name,"TexShape;"))}})),a.enableShapeUniforms){switch(t.logicalShape.length){case 1:r.push("uniform int outShape;");break;case 2:r.push("uniform ivec2 outShape;"),r.push("uniform int outShapeStrides;");break;case 3:r.push("uniform ivec3 outShape;"),r.push("uniform ivec2 outShapeStrides;");break;case 4:r.push("uniform ivec4 outShape;"),r.push("uniform ivec3 outShapeStrides;")}r.push("uniform ivec2 outTexShape;")}a.customUniforms&&a.customUniforms.forEach((function(e){r.push("uniform ".concat(e.type," ").concat(e.name).concat(e.arrayIndex?"[".concat(e.arrayIndex,"]"):"",";"))}));var o,i,c=r.join("\n"),s=e.map((function(e){return function(e,t,a,r){void 0===a&&(a=!1);var o="";o+=a?ye(e,r):Ce(e,r);var i=e.shapeInfo.logicalShape,c=t.logicalShape;return i.length<=c.length&&(o+=a?function(e,t){var a,r,o=e.name,i=o.charAt(0).toUpperCase()+o.slice(1),c="get"+i+"AtOutCoords",s=e.shapeInfo.logicalShape.length,u=t.logicalShape.length,l=me(e.shapeInfo.logicalShape,t.logicalShape),d=Ne(u),p=u-s,h=["x","y","z","w","u","v"];a=0===s?"":u<2&&l.length>=1?"coords = 0;":l.map((function(e){return"coords.".concat(h[e+p]," = 0;")})).join("\n"),r=u<2&&s>0?"coords":e.shapeInfo.logicalShape.map((function(e,n){return"coords.".concat(h[n+p])})).join(", ");var f="return outputValue;",x=1===n.util.sizeFromShape(e.shapeInfo.logicalShape),v=1===n.util.sizeFromShape(t.logicalShape);if(1!==s||x||v){if(x&&!v)f=1===u?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(l.length){var g=s-2,m=s-1;l.indexOf(g)>-1&&l.indexOf(m)>-1?f="return vec4(outputValue.x);":l.indexOf(g)>-1?f="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":l.indexOf(m)>-1&&(f="return vec4(outputValue.xx, outputValue.zz);")}}else f="\n return vec4(outputValue.xy, outputValue.xy);\n ";return"\n vec4 ".concat(c,"() {\n ").concat(d," coords = getOutputCoords();\n ").concat(a,"\n vec4 outputValue = get").concat(i,"(").concat(r,");\n ").concat(f,"\n }\n ")}(e,t):function(e,t){var a=e.name,r=a.charAt(0).toUpperCase()+a.slice(1),o="get"+r+"AtOutCoords",i=t.texShape,c=e.shapeInfo.texShape,s=e.shapeInfo.logicalShape.length,u=t.logicalShape.length;if(!e.shapeInfo.isUniform&&s===u&&null==e.shapeInfo.flatOffset&&n.util.arraysEqual(c,i))return"\n float ".concat(o,"() {\n return sampleTexture(").concat(a,", resultUV);\n }\n ");var l,d,p=Ne(u),h=me(e.shapeInfo.logicalShape,t.logicalShape),f=u-s,x=["x","y","z","w","u","v"];return l=0===s?"":u<2&&h.length>=1?"coords = 0;":h.map((function(e){return"coords.".concat(x[e+f]," = 0;")})).join("\n"),d=u<2&&s>0?"coords":e.shapeInfo.logicalShape.map((function(e,n){return"coords.".concat(x[n+f])})).join(", "),"\n float ".concat(o,"() {\n ").concat(p," coords = getOutputCoords();\n ").concat(l,"\n return get").concat(r,"(").concat(d,");\n }\n ")}(e,t)),o}(e,t,a.packedInputs,a.enableShapeUniforms)})).join("\n"),u=t.texShape,l=he(),d=function(e){return"\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return ".concat(e.texture2D,"(textureSampler, uv).r;\n }\n ")}(l),p=function(e){return"".concat(e.version,"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n ").concat(e.varyingFs," vec2 resultUV;\n ").concat(e.defineOutput,"\n const vec2 halfCR = vec2(0.5, 0.5);\n\n struct ivec5\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n };\n\n struct ivec6\n {\n int x;\n int y;\n int z;\n int w;\n int u;\n int v;\n };\n\n uniform float NAN;\n ").concat(e.defineSpecialNaN,"\n ").concat(e.defineSpecialInf,"\n ").concat(e.defineRound,"\n\n int imod(int x, int y) {\n return x - y * (x / y);\n }\n\n int idiv(int a, int b, float sign) {\n int res = a / b;\n int mod = imod(a, b);\n if (sign < 0. && mod != 0) {\n res -= 1;\n }\n return res;\n }\n\n //Based on the work of Dave Hoskins\n //https://www.shadertoy.com/view/4djSRW\n #define HASHSCALE1 443.8975\n float random(float seed){\n vec2 p = resultUV * seed;\n vec3 p3 = fract(vec3(p.xyx) * HASHSCALE1);\n p3 += dot(p3, p3.yzx + 19.19);\n return fract((p3.x + p3.y) * p3.z);\n }\n\n ").concat(we,"\n ").concat(Ie,"\n ").concat(Se,"\n ")}(l);return t.isPacked?(o=function(e,t,a){switch(e.length){case 0:return"\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(e,n,t){var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)];return 1===a[0]?t?"\n int getOutputCoords() {\n return 2 * int(resultUV.x * ceil(float(outTexShape[1]) / 2.0));\n }\n ":"\n int getOutputCoords() {\n return 2 * int(resultUV.x * ".concat(a[1],".0);\n }\n "):1===a[1]?t?"\n int getOutputCoords() {\n return 2 * int(resultUV.y * ceil(float(outTexShape[0]) / 2.0));\n }\n ":"\n int getOutputCoords() {\n return 2 * int(resultUV.y * ".concat(a[0],".0);\n }\n "):t?"\n int getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n return 2 * (resTexRC.x * packedTexShape[1] + resTexRC.y);\n }\n ":"\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(a[0],", ").concat(a[1],"));\n return 2 * (resTexRC.x * ").concat(a[1]," + resTexRC.y);\n }\n ")}(0,t,a);case 2:return function(e,t,a){var r=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];if(n.util.arraysEqual(e,t))return a?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n return 2 * ivec2(resultUV.yx * vec2(packedTexShape[0], packedTexShape[1]));\n }\n ":"\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2(".concat(r[0],", ").concat(r[1],"));\n }\n ");var o=Math.ceil(e[1]/2);return a?"\n ivec2 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec2(r, c);\n }\n ":"\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(r[0],", ").concat(r[1],"));\n\n int index = resTexRC.x * ").concat(r[1]," + resTexRC.y;\n int r = 2 * (index / ").concat(o,");\n int c = imod(index, ").concat(o,") * 2;\n\n return ivec2(r, c);\n }\n ")}(e,t,a);case 3:return function(e,n,t){if(t)return"\n ivec3 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n int texelsInLogicalRow = int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec3(b, r, c);\n }\n ";var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)],r=Math.ceil(e[2]/2),o=r*Math.ceil(e[1]/2);return"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(".concat(a[0],", ").concat(a[1],"));\n int index = resTexRC.x * ").concat(a[1]," + resTexRC.y;\n\n int b = index / ").concat(o,";\n index -= b * ").concat(o,";\n\n int r = 2 * (index / ").concat(r,");\n int c = imod(index, ").concat(r,") * 2;\n\n return ivec3(b, r, c);\n }\n ")}(e,t,a);default:return function(e,n,t){if(t)return"\n ivec4 getOutputCoords() {\n ivec2 packedTexShape = ivec2(ceil(float(outTexShape[0]) / 2.0), ceil(float(outTexShape[1]) / 2.0));\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2(packedTexShape[0], packedTexShape[1]));\n int index = resTexRC.x * packedTexShape[1] + resTexRC.y;\n\n int texelsInLogicalRow = int(ceil(float(outShape[3]) / 2.0));\n int texelsInBatch = texelsInLogicalRow * int(ceil(float(outShape[2]) / 2.0));\n int texelsInBatchN = texelsInBatch * outShape[1];\n\n int b2 = index / texelsInBatchN;\n index -= b2 * texelsInBatchN;\n\n int b = index / texelsInBatch;\n index -= b * texelsInBatch;\n\n int r = 2 * (index / texelsInLogicalRow);\n int c = imod(index, texelsInLogicalRow) * 2;\n\n return ivec4(b2, b, r, c);\n }\n ";for(var a=[Math.ceil(n[0]/2),Math.ceil(n[1]/2)],r=Math.ceil(e[e.length-1]/2),o=r*Math.ceil(e[e.length-2]/2),i=o,c="",s="b, r, c",u=2;u1&&!n.util.arraysEqual(t,a)&&o.length0?(t=this.beginQuery(),this.endQuery(),a=function(){return r.isQueryAvailable(t,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):a=function(){return!0};return{query:t,isFencePassed:a}},e.prototype.downloadMatrixFromPackedTexture=function(e,n,t){var a=this;return this.downloadMatrixDriver(e,(function(){return ln(a.gl,n,t)}))},e.prototype.createProgram=function(e){var n=this;this.throwIfDisposed();var t=this.gl;null==this.vertexShader&&(this.vertexShader=Ge(t));var a=A(t);C(t,(function(){return t.attachShader(a,n.vertexShader)})),C(t,(function(){return t.attachShader(a,e)})),_(t,a);var r=Object.assign(a,{vao:this.createVertexArray()});return this.debug&&O(t,r),r},e.prototype.buildVao=function(e){var n=this;this.setProgram(e),this.bindVertexArray(e.vao);var t=this.gl;C(t,(function(){return t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,n.indexBuffer)})),tn(t,e,this.vertexBuffer)},e.prototype.deleteProgram=function(e){var n=this;this.throwIfDisposed(),e===this.program&&(this.program=null),null!=e&&(C(this.gl,(function(){return n.gl.deleteProgram(e)})),this.deleteVertexArray(e.vao))},e.prototype.setProgram=function(e){var n=this;this.throwIfDisposed(),this.program=e,null!=this.program&&this.debug&&O(this.gl,this.program),C(this.gl,(function(){return n.gl.useProgram(e)}))},e.prototype.getUniformLocation=function(e,n,t){return void 0===t&&(t=!0),this.throwIfDisposed(),t?U(this.gl,e,n):M(this.gl,e,n)},e.prototype.getAttributeLocation=function(e,n){var t=this;return this.throwIfDisposed(),C(this.gl,(function(){return t.gl.getAttribLocation(e,n)}))},e.prototype.getUniformLocationNoThrow=function(e,n){return this.throwIfDisposed(),this.gl.getUniformLocation(e,n)},e.prototype.setInputMatrixTexture=function(e,n,t){this.throwIfDisposed(),this.throwIfNoProgram(),G(this.gl,e,n,t)},e.prototype.setOutputMatrixTexture=function(e,n,t){this.setOutputMatrixTextureDriver(e,t,n)},e.prototype.setOutputPackedMatrixTexture=function(e,n,t){this.throwIfDisposed();var a=c(m(n,t),2),r=a[0],o=a[1];this.setOutputMatrixTextureDriver(e,r,o)},e.prototype.setOutputMatrixWriteRegion=function(e,n,t,a){this.setOutputMatrixWriteRegionDriver(t,e,a,n)},e.prototype.setOutputPackedMatrixWriteRegion=function(e,n,t,a){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},e.prototype.debugValidate=function(){null!=this.program&&O(this.gl,this.program),H(this.gl)},e.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var e=this.gl;if(this.debug){var n=this.getVertexArray();console.assert(n===this.program.vao,"VAO changed between setProgram and executeProgram!"),this.debugValidate()}C(e,(function(){return e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0)}))},e.prototype.blockUntilAllProgramsCompleted=function(){var e=this;this.throwIfDisposed(),C(this.gl,(function(){return e.gl.finish()}))},e.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=I(this.gl,2===n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},e.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},e.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},e.prototype.beginQuery=function(){if(2===n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.gl,t=this.getQueryTimerExtensionWebGL2(),a=e.createQuery();return e.beginQuery(t.TIME_ELAPSED_EXT,a),a}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},e.prototype.endQuery=function(){if(2!==n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}else{var t=this.gl,a=this.getQueryTimerExtensionWebGL2();t.endQuery(a.TIME_ELAPSED_EXT)}},e.prototype.waitForQueryAndGetTime=function(e){return r(this,void 0,void 0,(function(){var t=this;return o(this,(function(a){switch(a.label){case 0:return[4,n.util.repeatedTry((function(){return t.disposed||t.isQueryAvailable(e,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}))];case 1:return a.sent(),[2,this.getQueryTime(e,n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}}))}))},e.prototype.getQueryTime=function(e,n){if(0===n)return null;if(2===n){var t=this.gl;return t.getQueryParameter(e,t.QUERY_RESULT)/1e6}var a=this.getQueryTimerExtensionWebGL1();return a.getQueryObjectEXT(e,a.QUERY_RESULT_EXT)/1e6},e.prototype.isQueryAvailable=function(e,n){if(0===n)return!0;if(2===n){var t=this.gl,a=this.getQueryTimerExtensionWebGL2(),r=t.getQueryParameter(e,t.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint}return r=(a=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(e,a.QUERY_RESULT_AVAILABLE_EXT),null==this.disjoint&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),r&&!this.disjoint},e.prototype.pollFence=function(e){var n=this;return new Promise((function(t){n.addItemToPoll((function(){return e.isFencePassed()}),(function(){return t()}))}))},e.prototype.pollItems=function(){for(var e=function(e){for(var n=0;n1)){var r=void 0;"setTimeoutCustom"in n.env().platform&&(r=n.env().platform.setTimeoutCustom.bind(n.env().platform)),n.util.repeatedTry((function(){return a.pollItems(),0===a.itemsToPoll.length}),(function(){return 0}),null,r)}},e.prototype.bindTextureToFrameBuffer=function(e){this.throwIfDisposed(),z(this.gl,e,this.framebuffer),this.debug&&H(this.gl)},e.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(z(this.gl,this.outputTexture,this.framebuffer),this.debug&&H(this.gl)):X(this.gl,this.framebuffer)},e.prototype.downloadMatrixDriver=function(e,n){this.bindTextureToFrameBuffer(e);var t=n();return this.unbindTextureToFrameBuffer(),t},e.prototype.setOutputMatrixTextureDriver=function(e,n,t){this.throwIfDisposed();var a=this.gl;z(a,e,this.framebuffer),this.debug&&H(a),this.outputTexture=e,C(a,(function(){return a.viewport(0,0,n,t)})),C(a,(function(){return a.scissor(0,0,n,t)}))},e.prototype.setOutputMatrixWriteRegionDriver=function(e,n,t,a){var r=this;this.throwIfDisposed(),C(this.gl,(function(){return r.gl.scissor(e,n,t,a)}))},e.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},e.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},e}();function hn(e){return function(t,a,r,o,i){var c=n.backend_util.assertAndGetBroadcastShape(t,a),s=c.length,u=n.util.computeStrides(c),l=n.util.sizeFromShape(c),d=n.util.getTypedArrayFromDType(i,l),p=t.length,h=a.length,f=n.util.computeStrides(t),x=n.util.computeStrides(a),v=n.backend_util.getBroadcastDims(t,c),g=n.backend_util.getBroadcastDims(a,c);if(v.length+g.length===0)for(var m=0;mn?1:0})),In=hn((function(e,n){return e>=n?1:0})),Sn=hn((function(e,n){return et&&(t=r)}return t},e.getMaxWidthValueRowID=function(e){var n=e.length;if(0===n)return 0;for(var t=0,a=e[0],r=0,o=1;o0&&o.length!==e[r-1])throw new Error("Invalid row split size.");return o},e.prototype.calculateOutputIndexValueRowID=function(e,n,t,a){var r=e.length,o=[];if(0===r)return[];var i=0,c=e[0];if(c>=n.length)throw new Error("Got currentValueRowId=".concat(c,", which is not less than ").concat(n.length));var s=n[c];o.push(s);for(var u=1;u=0&&(++i=n.length)throw new Error("Got nextValueRowId=".concat(l," which is not less than ").concat(n.length));s=n[l]}o.push(s)}if(o.length!==e.length)throw new Error("Invalid row ids.");return o},e.prototype.calculateOutputIndex=function(e,n,t,a){var r=this.getRowPartitionTensor(e),o=this.getRowPartitionTypeByDimension(e);switch(o){case Dn.VALUE_ROWIDS:return this.calculateOutputIndexValueRowID(r,n,t,a);case Dn.ROW_SPLITS:if(r.length-1>n.length)throw new Error("Row partition size is greater than output size: ".concat(r.length-1," > ").concat(n.length));return this.calculateOutputIndexRowSplit(r,n,t,a);default:throw new Error("Unsupported partition type: ".concat(Dn[o]))}},e.prototype.getFirstDimensionSize=function(){var e=this.rowPartitionValues[0];if(0===this.rowPartitionTypes.length)throw new Error("No row_partition_types given.");var n=this.rowPartitionTypes[0];switch(n){case Dn.FIRST_DIM_SIZE:return e[0];case Dn.VALUE_ROWIDS:throw new Error("Cannot handle VALUE_ROWIDS in first dimension.");case Dn.ROW_SPLITS:return this.rowPartitionValuesShapes[0][0]-1;default:throw new Error("Cannot handle type ".concat(Dn[n]))}},e.prototype.compute=function(){if(this.rowPartitionValues[0].length<=0)throw new Error("Invalid first partition input. Tensor requires at least one element.");var e=this.getFirstDimensionSize(),t=this.calculateOutputSize(e),a=new Array(this.raggedRank+1);a[a.length-1]=1;for(var r=a.length-2;r>=0;--r)a[r]=a[r+1]*t[r+1];var o=Bn(t,!1),i=n.util.getArrayFromDType(this.valuesDType,n.util.sizeFromShape(o));if(a[0]*t[0]>0){var c=this.calculateFirstParentOutputIndex(e,a[0],t[0]);for(r=1;r<=this.raggedRank;++r)c=this.calculateOutputIndex(r-1,c,a[r],t[r]);this.setOutput(this.raggedRank,c,i,o)}return[o,i]},e.prototype.setOutput=function(e,t,a,r){if(0!==a.length){var o=this.values,i=a,c=r.slice();c=c.slice(e+1);var s=n.util.sizeFromShape(c),u=t.length,l=this.defaultValue;if(l.length!==s&&1!==l.length){var d=this.defaultValueShape;n.tidy((function(){var e=n.reshape(l,d),t=n.broadcastTo(e,c);l=t.dataSync()}))}for(var p=0,h=0,f=0,x=0;x<=u;++x){var v=x=u){var m=a.length;v=Math.floor(m/s)}if(v>f)if(1===this.defaultValue.length)i.subarray(f*s,v*s).fill(this.defaultValue[0]),f=v;else for(;v>f;)Ln(i.slice(f*s),l,s),++f;v<0?(p=x+1,h=f):(p=x,f=(h=f)+1)}else++f}}},e}();function Ln(e,n,t){for(var a=0;a= 0"));if(s<-1)throw new Error("Dimension ".concat(s," must be >= -1"));s=-1}r.push(s)}}catch(e){t={error:e}}finally{try{c&&!c.done&&(a=o.return)&&a.call(o)}finally{if(t)throw t.error}}return r}var Vn=vn((function(e){return 1/Math.sqrt(e)})),Wn=vn((function(e){return 1/(1+Math.exp(-e))})),Un=vn((function(e){return Math.sqrt(e)})),Mn=vn((function(e,n){var t=n.pattern,a=n.replaceGlobal,r=n.rewrite;return e.replace(new RegExp(t,a?"g":""),r)})),Gn=function(){function e(e,t,a,r,o,i){this.separator=n.util.encodeString(e),this.nGramWidths=t,this.leftPad=n.util.encodeString(a),this.rightPad=n.util.encodeString(r),this.padWidth=o,this.preserveShort=i}return e.prototype.getPadWidth=function(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)},e.prototype.getNumNGrams=function(e,n){var t=this.getPadWidth(n);return Math.max(0,e+2*t-n+1)},e.prototype.createNGrams=function(e,n,t,a,r,o){for(var i=function(i){var s=c.getPadWidth(o),u=Math.max(0,s-i),l=Math.max(0,s-(r-(i+1))),d=o-(u+l),p=n+(u>0?0:i-s),h=0;h+=u*c.leftPad.length;for(var f=0;f0)for(g(e[p+d-1]),f=0;f0){var i=t[0];if(0!==i)throw new Error("First split value must be 0, got ".concat(i));for(var c=1;c=i;if(!(s=s&&t[c]<=r))throw new Error("Invalid split value ".concat(t[c],", must be in [").concat(i,", ").concat(r,"]"));i=t[c]}if(i!==r)throw new Error("Last split value must be data size. Expected ".concat(r,", got ").concat(i))}var u=o-1,l=n.util.getArrayFromDType("int32",o);if(0===r||0===o){var d=new Array(r);for(c=0;c<=u;++c)l[c]=0;return[d,l]}l[0]=0;var p=function(e){var n=t[e]-t[e-1],r=0;h.nGramWidths.forEach((function(e){r+=a.getNumNGrams(n,e)})),h.preserveShort&&n>0&&0===r&&(r=1),l[e]=l[e-1]+r},h=this;for(c=1;c<=u;++c)p(c);var f=new Array(l[u]),x=function(n){var r=t[n],o=l[n];if(v.nGramWidths.forEach((function(i){var c=t[n+1]-t[n],s=a.getNumNGrams(c,i);a.createNGrams(e,r,f,o,s,i),o+=s})),v.preserveShort&&o===l[n]){var i=t[n+1]-t[n];if(0===i)return"continue";var c=i+2*v.padWidth;v.createNGrams(e,r,f,o,1,c)}},v=this;for(c=0;ca;){if(r-a>600){var o=r-a+1,i=t-a+1,c=Math.log(o),s=.5*Math.exp(2*c/3),u=.5*Math.sqrt(c*s*(o-s)/o)*Math.sign(i-o/2);jn(e,t,Math.max(a,Math.floor(t-i*s/o+u)),Math.min(r,Math.floor(t+(o-i)*s/o+u)))}var l=e[t],d=a,p=r;for(n.util.swap(e,a,t),Hn(e[r],l)>0&&n.util.swap(e,a,r);d0;)p-=1}0===Hn(e[a],l)?n.util.swap(e,a,p):(p+=1,n.util.swap(e,p,r)),p<=t&&(a=p+1),t<=p&&(r=p-1)}}var Kn=fn,qn=function(e,t,a,r,o){for(var i=n.util.sizeFromShape(r),c=n.util.makeZerosTypedArray(o,a),s=0;s=o||(c[u]+=i>0?t[s]:1)}return c},Yn=function(e,t,a,r){void 0===r&&(r=!1);for(var o=e.shape[0],i=e.shape[1],c=n.buffer([o,a],t.dtype),s=0;s=a||(r?c.set(1,s,l):t.size>0?c.set(c.get(s,l)+t.get(s,u),s,l):c.set(c.get(s,l)+1,s,l))}return c},Qn=xn,Zn=gn,Jn=function(e,t,a,r){var o=n.util.getArrayFromDType(a,n.util.sizeFromShape(t));if(r&&"string"!==a){var i=0;e.forEach((function(e){var t=n.util.sizeFromShape(e.shape);o.set(e.vals,i),i+=t}))}else{var c=0;e.forEach((function(e){for(var r="string"===a?n.backend_util.fromUint8ToStringArray(e.vals):e.vals,i=0,s=0;s=d/i)throw new Error("Invalid indices: ".concat(f," does not index into ").concat(l));for(var m=0;ms)&&(s=l)}o[i]=s}return o},dt=Tn,pt=Nn,ht=En,ft=An,xt=function(e,t,a,r,o,i,c,s){if(0===e.length)throw new Error("paramsNestedSplits must be non empty");if(0===t[0].length)throw new Error("Split tensors must not be scalars");if(function(e,t,a){e.forEach((function(e,r){if(e<0||e>=a){var o=n.util.indexToLoc(r,t.length,n.util.computeStrides(t)).join(",");throw new Error("indices[".concat(o,"] = ").concat(e," is not in [0, ").concat(a,")"))}}))}(i,c,t[0][0]-1),0===r.length)throw new Error("params.rank must be nonzero");var u=function(e,n,t,a){var r=[],o=0,i=n.length-1+t.length,c=new Array(i).fill(null).map((function(){return[0]}));!function(e,n){for(var t=0;tr)throw new Error("Ragged splits must not point past values");for(var o=1;oa[o])throw new Error("Ragged splits must be sorted in ascending order")}}(t,a);for(var s=1,u=0;u=0)for(var v=c[x],g=v[v.length-1]-f[p],m=p;m1)throw new Error("starts must be a scalar or vector");if(o.length>1)throw new Error("limits must be a scalar or vector");if(c.length>1)throw new Error("deltas must be a scalar or vector");var s=0===t.length,u=0===o.length,l=0===c.length,d=[];s||d.push(t[0]),u||d.push(o[0]),l||d.push(c[0]);for(var p=1;p0&&gv)m=0;else if((m=Math.ceil(Math.abs((g-v)/S)))>Fn)throw new Error("Requires ((limit - start) / delta) <= ".concat(Fn));f[x+1]=f[x]+m}var b=f[h],C=n.util.getArrayFromDType(a,b),y=0;for(x=0;x1)return n.util.makeZerosTypedArray(0,r);var o=Math.abs(Math.ceil((t-e)/a)),i=n.util.makeZerosTypedArray(o,r);t=u)throw new Error(n.backend_util.getSparseFillEmptyRowsOutOfRangeIndexErrorMessage(v,m,u));++x[m],h=h&&m>=f,f=m}for(var g=!0,m=0;m0&&(x[m]+=x[m-1])}if(g&&h){var C=e,y=r;for(v=0;v0)for(v[x-1]=1,p=x-2;p>=0;--p)v[p]=v[p+1]*r[p+1];var g=[];if(s>0)for(g[s-1]=1,p=s-2;p>=0;--p)g[p]=g[p+1]*u[p+1];for(var m=n.util.getArrayFromDType(a,c*s),b=0;b0?o[s-1]+1:0;if(d<0)throw new Error(n.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());var p=t.slice();p[0]=d;var h=p.reduce((function(e,n){return e*n}),1),f=n.util.getArrayFromDType(a,h);if(0===s)return d>0&&f.fill(c),[f,p];if(d<=0)throw new Error(n.backend_util.getSparseSegmentReductionNegativeSegmentIdsErrorMessage());for(var x=0,v=1,g=0,m=o[x];;){var b=0;if(v=b)throw new Error(n.backend_util.getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage())}if(m<0||m>=d)throw new Error(n.backend_util.getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage(m,d));m>g&&f.fill(c,g*l,m*l);for(var C=x;C=u[0])throw new Error(n.backend_util.getSparseSegmentReductionIndicesOutOfRangeErrorMessage(C,r[C],u[0]));for(var w=0;ws)break}return g ".concat(this.enableShapeUniforms?"outShape":this.outputShape[0]);for(var n="",t=this.rank-2;t= ").concat(this.enableShapeUniforms?"outShape[".concat(t,"]"):this.outputShape[t]),t= ").concat(t,";\n bool rEdge = rp1 >= ").concat(a,";\n ")},e.prototype.getOutput=function(e){var n=this.getSourceCoordsArr(e);if(1===this.rank){var t=this.enableShapeUniforms?"outShape":this.outputShape[0];return"getA(rc), (rc + 1 >= ".concat(t," ? 0. : getA(rc + 1)), 0, 0")}return"getA(".concat(n[0],"),\n cEdge ? 0. : getA(").concat(n[1],"),\n rEdge ? 0. : getA(").concat(n[2],"),\n rEdge || cEdge ? 0. : getA(").concat(n[3],")")},e}(),Lt=function(e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"inputShape",type:"ivec3"}],this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length);for(var t,a,r,o="",i=0;i<4;i++){var c="thisRC = rc;";i%2==1&&(c+="thisRC.z += 1;"),i>1&&(c+="thisRC.y += 1;"),o+="\n ".concat(c,"\n ").concat(i>0?"if(thisRC.y < rows && thisRC.z < cols){":"","\n int flatIndex = getFlatIndex(thisRC);\n\n ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);\n vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));\n\n result[").concat(i,"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n ").concat(i>0?"}":"","\n ")}this.userCode="\n ".concat((t=n,a=this.enableShapeUniforms,r=a?function(e,n,t){void 0===t&&(t="index");var a=function(e,n){var t=e.length,a=e.map((function(e){return"".concat(n,"[").concat(e,"]")})),r=new Array(t-1);r[t-2]=a[t-1];for(var o=t-3;o>=0;--o)r[o]="(".concat(r[o+1]," * ").concat(a[o+1],")");return r}(e.map((function(e,n){return n})),"inputShape");return a.map((function(n,r){var o="int ".concat(e[r]," = ").concat(t," / ").concat(a[r]),i=r===a.length-1?"int ".concat(e[r+1]," = ").concat(t," - ").concat(e[r]," * ").concat(a[r]):"index -= ".concat(e[r]," * ").concat(a[r]);return"".concat(o,"; ").concat(i,";")})).join("")}(["r","c","d"]):fe(["r","c","d"],t),"\n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n ".concat(r,"\n return ivec3(r, c, d);\n }\n ")),"\n ").concat(this.enableShapeUniforms?"\n int getFlatIndex(ivec3 coords) {\n return coords.x * outShapeStrides[0] + coords.y * outShapeStrides[1] + coords.z;\n }\n":ve(e),"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = ").concat(this.enableShapeUniforms?"outShape[1]":e[1],";\n int cols = ").concat(this.enableShapeUniforms?"outShape[2]":e[2],";\n\n ").concat(o,"\n\n setOutput(result);\n }\n ")},Bt=function(){function e(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.usedTextures={},this.logEnabled=!1}return e.prototype.acquireTexture=function(e,n,t){var a=Wt(n,t),r=Ut(e,a,t);r in this.freeTextures||(this.freeTextures[r]=[]),r in this.usedTextures||(this.usedTextures[r]=[]);var o,i=Vt(e,a,this.gpgpu.gl,this.gpgpu.textureConfig,t);if(this.freeTextures[r].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=i,this.log();var c=this.freeTextures[r].pop();return this.usedTextures[r].push(c),c}return a===d.PACKED_2X2_FLOAT32?o=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):a===d.PACKED_2X2_FLOAT16?o=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):a===d.UNPACKED_FLOAT32?o=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):a===d.UNPACKED_FLOAT16?o=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):a===d.PACKED_4X1_UNSIGNED_BYTE&&(o=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[r].push(o),this.numUsedTextures++,this._numBytesAllocated+=i,this.log(),o},e.prototype.releaseTexture=function(e,t,a,r){if(null!=this.freeTextures){var o=Wt(a,r),i=Ut(t,o,r);i in this.freeTextures||(this.freeTextures[i]=[]);var c=Vt(t,o,this.gpgpu.gl,this.gpgpu.textureConfig,r),s=n.env().getNumber("WEBGL_DELETE_TEXTURE_THRESHOLD");-1!==s&&this._numBytesAllocated>s?(this.gpgpu.deleteMatrixTexture(e.texture),this._numBytesAllocated-=c):(this.freeTextures[i].push(e),this.numFreeTextures++,this._numBytesFree+=c),this.numUsedTextures--;var u=this.usedTextures[i],l=u&&u.indexOf(e);if(null==l||l<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u[l]=u[u.length-1],u.pop(),this.log()}},e.prototype.log=function(){if(this.logEnabled){var e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used","".concat(this.numFreeTextures," / ").concat(this.numUsedTextures),"(".concat(e,")"));var n=this._numBytesFree/this._numBytesAllocated;console.log("Bytes allocated: ".concat(this._numBytesAllocated)),console.log("Bytes unused: ".concat(this._numBytesFree," (").concat(Math.round(100*n),"%)"))}},Object.defineProperty(e.prototype,"numBytesAllocated",{get:function(){return this._numBytesAllocated},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"numBytesFree",{get:function(){return this._numBytesFree},enumerable:!1,configurable:!0}),e.prototype.getNumUsedTextures=function(){return this.numUsedTextures},e.prototype.getNumFreeTextures=function(){return this.numFreeTextures},e.prototype.dispose=function(){var e=this;if(null!=this.freeTextures){for(var n in this.freeTextures)this.freeTextures[n].forEach((function(n){e.gpgpu.deleteMatrixTexture(n.texture)}));for(var n in this.usedTextures)this.usedTextures[n].forEach((function(n){e.gpgpu.deleteMatrixTexture(n.texture)}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}},e}();function Vt(e,n,t,a,r){var o,i=function(e,n){switch(e){case d.PACKED_2X2_FLOAT32:return Je(n);case d.PACKED_2X2_FLOAT16:return en(n);case d.UNPACKED_FLOAT32:return je(n);case d.UNPACKED_FLOAT16:return qe(n);case d.PACKED_4X1_UNSIGNED_BYTE:return Qe(n);default:throw new Error("Unknown physical texture type ".concat(e))}}(n,a);if(r){var s=c(m(e[0],e[1]),2);o=s[0]*s[1]}else{var u=c(v(e[0],e[1]),2);o=u[0]*u[1]}var l=function(e,n){var t=e;if(n===t.R32F)return 4;if(n===t.R16F)return 2;if(n===t.RGBA32F)return 16;if(n===e.RGBA)return 16;if(n===t.RGBA16F)return 8;if(n===t.RGBA8)return 4;throw new Error("Unknown internal format ".concat(n))}(t,i);return o*l}function Wt(e,t){if(e===l.UPLOAD)return d.PACKED_2X2_FLOAT32;if(e===l.RENDER||null==e)return function(e){return n.env().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?d.PACKED_2X2_FLOAT32:d.UNPACKED_FLOAT32:e?d.PACKED_2X2_FLOAT16:d.UNPACKED_FLOAT16}(t);if(e===l.DOWNLOAD||e===l.PIXELS)return d.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type ".concat(e))}function Ut(e,n,t){return"".concat(e[0],"_").concat(e[1],"_").concat(n,"_").concat(t)}var Mt=function(e,n){this.variableNames=["A"],this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n float unaryOperation(float x) {\n ".concat(n,"\n }\n\n void main() {\n float x = getAAtOutCoords();\n float y = unaryOperation(x);\n\n setOutput(y);\n }\n ")},Gt="return abs(x);",zt="return x;",Xt=function(e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n vec4 unaryOperation(vec4 x) {\n ".concat(n,"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n ")},Ht=function(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e,this.enableShapeUniforms=De(this.outputShape.length);var n=e.length,t=Dt("rc",n),a=Ne(n),r=function(e,n){if(1===e)return"rc";for(var t="",a=0;a0},t.prototype.time=function(e){var t=this.activeTimers,a=[],i=!1;null==this.programTimersStack?(this.programTimersStack=a,i=!0):this.activeTimers.push(a),this.activeTimers=a,e();var c=n.util.flatten(this.activeTimers.map((function(e){return e.query}))).filter((function(e){return null!=e})),s=n.util.flatten(this.activeTimers.map((function(e){return e.name}))).filter((function(e){return null!=e}));this.activeTimers=t,i&&(this.programTimersStack=null);var u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};return r(this,void 0,void 0,(function(){var e;return o(this,(function(t){switch(t.label){case 0:return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[4,Promise.all(c)]:[3,2];case 1:return e=t.sent(),u.kernelMs=n.util.sum(e),u.getExtraProfileInfo=function(){return e.map((function(e,n){return{name:s[n],ms:e}})).map((function(e){return"".concat(e.name,": ").concat(e.ms)})).join(", ")},[3,3];case 2:u.kernelMs={error:"WebGL query timers are not supported in this environment."},t.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}}))}))},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}},t.prototype.startTimer=function(){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:n.util.now(),endMs:null}},t.prototype.endTimer=function(e){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=n.util.now(),e)},t.prototype.getQueryTime=function(e){return r(this,void 0,void 0,(function(){var t;return o(this,(function(a){return n.env().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(t=e).endMs-t.startMs]}))}))},t.prototype.disposeData=function(e,n){if(void 0===n&&(n=!1),this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(n?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!n&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);var t=this.texData.get(e).complexTensorInfos;return null!=t&&(this.disposeData(t.real.dataId,n),this.disposeData(t.imag.dataId,n)),this.texData.delete(e),!0},t.prototype.releaseGPUData=function(e){var n=this.texData.get(e),t=n.texture,a=n.dtype,r=n.texShape,o=n.usage,i=n.isPacked,c=n.slice,s=c&&c.origDataId||e,u=this.dataRefCount.get(s);u>1?this.dataRefCount.set(s,u-1):(this.dataRefCount.delete(s),null!=t&&(this.numBytesInGPU-=this.computeBytes(r,a),this.textureManager.releaseTexture(t,r,o,i)));var l=this.texData.get(e);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture.texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.shouldExecuteOnCPU=function(e,t){var a=this;return void 0===t&&(t=qt),n.env().getBool("WEBGL_CPU_FORWARD")&&e.every((function(e){return null==a.texData.get(e.dataId).texture&&n.util.sizeFromShape(e.shape)0&&n.util.isString(a[0])){var o=a.map((function(e){return n.util.encodeString(e)}));r=this.write(o,e,t)}else r=this.write(a,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}},t.prototype.makeOutput=function(e,t,a){return n.engine().makeTensorFromTensorInfo(this.makeTensorInfo(e,t,a),this)},t.prototype.unpackTensor=function(e){var n=new Ht(e.shape);return this.runWebGLProgram(n,[e],e.dtype)},t.prototype.packTensor=function(e){var n=new Pt(e.shape);return this.runWebGLProgram(n,[e],e.dtype,null,!0)},t.prototype.packedReshape=function(e,n){var t=s([Y(e.shape)],c(Q(e.shape)),!1),a={dtype:e.dtype,shape:t,dataId:e.dataId},r=s([Y(n)],c(Q(n)),!1),o=new Lt(r,t),i=[t],u=this.runWebGLProgram(o,[a],e.dtype,i,!0);return{dataId:u.dataId,shape:n,dtype:u.dtype}},t.prototype.decode=function(e,t){var a=this.texData.get(e),r=a.isPacked,o=a.shape,i=a.dtype;if(null!=t){var c=n.util.sizeFromShape(o),s=t[0]*t[1]*4;n.util.assert(c<=s,(function(){return"customTexShape is too small. Row * Column * 4 should be equal or larger than the size of the tensor data."}))}var u,l=Z(o);u=r?new Le(l):new Pe(l);var d=[null!=t?t:g(l)];return{dtype:i,shape:o,dataId:this.runWebGLProgram(u,[{shape:l,dtype:i,dataId:e}],i,d,!0,t).dataId}},t.prototype.runWebGLProgram=function(e,t,a,r,o,i){var c=this;void 0===o&&(o=!1);var s=this.makeTensorInfo(e.outputShape,a),l=this.texData.get(s.dataId);if(e.packedOutput&&(l.isPacked=!0),e.outPackingScheme===u.DENSE){var d=null!=i?i:g(e.outputShape);l.texShape=d.map((function(e){return 2*e}))}if(null!=e.outTexUsage&&(l.usage=e.outTexUsage),0===n.util.sizeFromShape(s.shape))return l.values=n.util.getTypedArrayFromDType(s.dtype,0),s;var p=[],h=t.map((function(t){if("complex64"===t.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var a=c.texData.get(t.dataId);if(null==a.texture){if(!e.packedInputs&&n.util.sizeFromShape(t.shape)<=n.env().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:t.shape,texData:null,isUniform:!0,uniformValues:a.values};e.packedInputs&&(a.isPacked=!0,a.shape=t.shape)}if(c.uploadToGPU(t.dataId),!!a.isPacked!=!!e.packedInputs)t=a.isPacked?c.unpackTensor(t):c.packTensor(t),p.push(t),a=c.texData.get(t.dataId);else if(a.isPacked&&!ee(a.shape,t.shape)){var r=t,o=t.shape;t.shape=a.shape,t=c.packedReshape(t,o),p.push(t),a=c.texData.get(t.dataId),r.shape=o}return{shape:t.shape,texData:a,isUniform:!1}}));this.uploadToGPU(s.dataId);var f,x={shape:s.shape,texData:l,isUniform:!1},v=function(e,t,a){var r="";t.concat(a).forEach((function(t){var o=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0;if(e.enableShapeUniforms&&!t.isUniform){var i=t.texData.texShape,c=Ee(e.packedInputs,t.shape,i),s=c.useSqueezeShape,u=c.uniformShape,l=c.keptDims,d="",p="",h="";if(1===u.length&&e.packedInputs){var f=[Math.ceil(i[0]/2),Math.ceil(i[1]/2)];d="".concat(f[0]>1,"_").concat(f[1]>1)}else if(2!==u.length||e.packedInputs){if(u.length>2&&!e.packedInputs){var x=n.util.computeStrides(u);h="".concat(x[0]===i[1],"_").concat(x[x.length-1]===i[1])}}else p="".concat(u[0]>1,"_").concat(u[1]>1);var v=t.shape.length,g=2===u.length&&n.util.arraysEqual(t.shape,i),m=1===n.util.sizeFromShape(t.shape),b=n.backend_util.getBroadcastDims(t.shape,a.shape),C=!e.packedInputs&&v===a.shape.length&&n.util.arraysEqual(i,a.texData.texShape),y=e.packedInputs||u.length>2?"":"".concat(i[0]>1,"_").concat(i[1]>1);r+="".concat(v,"_").concat(C,"_").concat(s?l:"","_").concat(u.length,"_").concat(m,"_").concat(b,"_").concat(g,"_").concat(d,"_").concat(p,"_").concat(h,"_").concat(y,"_").concat(o)}else{var w=t.isUniform?"uniform":t.texData.texShape;r+="".concat(t.shape,"_").concat(w,"_").concat(o)}}));var o=e.userCode;return e.constructor.name+"_"+r+"_"+o+"".concat(n.env().getNumber("WEBGL_VERSION"))}(e,h,x),m=this.getAndSaveBinary(v,(function(){return function(e,t,a,r){var o=a.map((function(e,n){var a={logicalShape:e.shape,texShape:e.isUniform?null:e.texData.texShape,isUniform:e.isUniform,isPacked:!e.isUniform&&e.texData.isPacked,flatOffset:null};return null!=e.texData&&null!=e.texData.slice&&e.texData.slice.flatOffset>0&&(a.flatOffset=e.texData.slice.flatOffset),{name:t.variableNames[n],shapeInfo:a}})),i=o.map((function(e){return e.shapeInfo})),c={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},s=be(o,c,t),u=k(e.gl,s),l=e.createProgram(u);return n.env().get("ENGINE_COMPILE_ONLY")?{program:t,fragmentShader:u,source:s,webGLProgram:l,inShapeInfos:i,outShapeInfo:c,variablesLocations:null,customUniformLocations:null,infLoc:null,nanLoc:null,outShapeLocation:null,outShapeStridesLocation:null,outTexShapeLocation:null}:(e.buildVao(l),Object.assign({program:t,fragmentShader:u,source:s,webGLProgram:l,inShapeInfos:i,outShapeInfo:c},Oe(e,t,l)))}(c.gpgpu,e,h,x)})),b=null!=this.activeTimers;b&&(f=this.startTimer()),n.env().get("ENGINE_COMPILE_ONLY")||function(e,t,a,r,o){t.program.enableShapeUniforms||(Fe(t.inShapeInfos,a),Fe([t.outShapeInfo],[r]));var i=r.texData.texture,c=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(i.texture,c[0],c[1]):e.setOutputMatrixTexture(i.texture,c[0],c[1]),e.setProgram(t.webGLProgram),e.bindVertexArray(t.webGLProgram.vao),1===n.env().getNumber("WEBGL_VERSION")&&null!==t.infLoc&&e.gl.uniform1f(t.infLoc,1/0),null!==t.nanLoc&&e.gl.uniform1f(t.nanLoc,NaN);for(var s=0;s0){var y=n.util.now();y-this.lastGlFlushTime>C&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=y)}if(!n.env().getBool("WEBGL_LAZILY_UNPACK")&&l.isPacked&&!1===o){var w=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),w}return s},t.prototype.compileAndRun=function(e,n,t,a,r){return void 0===r&&(r=!1),t=t||n[0].dtype,this.runWebGLProgram(e,n,t,a,r)},t.prototype.getAndSaveBinary=function(e,n){return e in this.binaryCache||(this.binaryCache[e]=n()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;this.disposed||(n.env().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach((function(n){e.gpgpu.deleteProgram(e.binaryCache[n].webGLProgram),delete e.binaryCache[n]})),this.textureManager.dispose(),null!=this.canvas&&"undefined"!=typeof HTMLCanvasElement&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},t.prototype.floatPrecision=function(){var e=this;return null==this.floatPrecisionValue&&(this.floatPrecisionValue=n.tidy((function(){if(!n.env().get("WEBGL_RENDER_FLOAT32_ENABLED")){var t=n.env().getBool("DEBUG");n.env().set("DEBUG",!1);var a=e.abs(n.scalar(1e-8)).dataSync()[0];if(n.env().set("DEBUG",t),a>0)return 32}return 16}))),this.floatPrecisionValue},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.uploadToGPU=function(e){var t,a=this.texData.get(e),r=a.shape,o=a.dtype,i=a.values,s=a.texture,u=a.usage,d=a.isPacked;if(null==s){var p,h=null!=this.activeTimers;h&&(p=n.util.now());var f=a.texShape;if(null==f&&(f=J(r,d),a.texShape=f),null!=i){var x,v=Z(r),g=f[1],b=f[0],C=i instanceof Uint8Array||i instanceof Uint8ClampedArray;!d&&C||(g=(t=c(m(f[0],f[1]),2))[0],b=t[1]),x=d?new Me(v,C):new Ue(v,C);var y=C?[b,g]:f,w=this.makeTensorInfo(y,o),I=this.texData.get(w.dataId);I.usage=C?l.PIXELS:l.UPLOAD,I.texShape=y,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(w.dataId),g,b,i);var S=[[b,g]],k=this.runWebGLProgram(x,[w],o,S,!0),R=this.texData.get(k.dataId);a.texShape=R.texShape,a.isPacked=R.isPacked,a.usage=R.usage,n.env().get("ENGINE_COMPILE_ONLY")?this.disposeData(k.dataId):(a.texture=R.texture,a.values=null,this.texData.delete(k.dataId)),this.disposeIntermediateTensorInfo(w),h&&(this.uploadWaitMs+=n.util.now()-p)}else{var T=this.acquireTexture(f,u,o,d);a.texture=T}}},t.prototype.convertAndCacheOnCPU=function(e,n){var t=this.texData.get(e),a=t.dtype;return null!=n&&(t.values=function(e,n){if("float32"===n||"complex64"===n)return e;if("int32"===n||"bool"===n){for(var t="int32"===n?new Int32Array(e.length):new Uint8Array(e.length),a=0;a1024*this.numMBBeforeWarning*1024){var r=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: ".concat(r," MB, ")+"most likely due to a memory leak")}return this.textureManager.acquireTexture(e,n,a)},t.prototype.computeBytes=function(e,t){return e[0]*e[1]*n.util.bytesPerElement(t)},t.prototype.checkCompileCompletion=function(){var e,n;try{for(var t=i(Object.entries(this.binaryCache)),a=t.next();!a.done;a=t.next()){var r=c(a.value,2)[1];this.checkCompletion_(r)}}catch(n){e={error:n}}finally{try{a&&!a.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}},t.prototype.checkCompileCompletionAsync=function(){return r(this,void 0,void 0,(function(){var e,n,t,a,r,s,u,l,d,p,h,f,x,v=this;return o(this,(function(o){if(e=[],this.gpgpu.parallelCompilationExtension){try{for(n=i(Object.entries(this.binaryCache)),t=n.next();!t.done;t=n.next())a=c(t.value,2),d=a[1],e.push(this.checkCompletionAsync_(d))}catch(e){p={error:e}}finally{try{t&&!t.done&&(h=n.return)&&h.call(n)}finally{if(p)throw p.error}}return[2,Promise.all(e)]}r=function(n){var t=new Promise((function(e){try{v.checkCompletion_(n),e(!0)}catch(e){throw e}}));e.push(t)};try{for(s=i(Object.entries(this.binaryCache)),u=s.next();!u.done;u=s.next())l=c(u.value,2),d=l[1],r(d)}catch(e){f={error:e}}finally{try{u&&!u.done&&(x=s.return)&&x.call(s)}finally{if(f)throw f.error}}return[2,Promise.all(e)]}))}))},t.prototype.checkCompletionAsync_=function(e){return r(this,void 0,void 0,(function(){return o(this,(function(t){switch(t.label){case 0:return this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.parallelCompilationExtension.COMPLETION_STATUS_KHR)?[2,this.checkCompletion_(e)]:[3,1];case 1:return[4,n.nextFrame()];case 2:return t.sent(),[2,this.checkCompletionAsync_(e)]}}))}))},t.prototype.checkCompletion_=function(e){if(!1===this.gpgpu.gl.getProgramParameter(e.webGLProgram,this.gpgpu.gl.LINK_STATUS)){if(console.log(this.gpgpu.gl.getProgramInfoLog(e.webGLProgram)),!1===this.gpgpu.gl.getShaderParameter(e.fragmentShader,this.gpgpu.gl.COMPILE_STATUS))throw E(e.source,this.gpgpu.gl.getShaderInfoLog(e.fragmentShader)),new Error("Failed to compile fragment shader.");throw new Error("Failed to link vertex and fragment shaders.")}return!0},t.prototype.getUniformLocations=function(){var e,n;try{for(var t=i(Object.values(this.binaryCache)),a=t.next();!a.done;a=t.next()){var r=a.value;this.gpgpu.buildVao(r.webGLProgram);var o=Oe(this.gpgpu,r.program,r.webGLProgram),c=o.variablesLocations,s=o.customUniformLocations,u=o.infLoc,l=o.nanLoc,d=o.outShapeLocation,p=o.outShapeStridesLocation,h=o.outTexShapeLocation;r.variablesLocations=c,r.customUniformLocations=s,r.infLoc=u,r.nanLoc=l,r.outShapeLocation=d,r.outShapeStridesLocation=p,r.outTexShapeLocation=h}}catch(n){e={error:n}}finally{try{a&&!a.done&&(n=t.return)&&n.call(t)}finally{if(e)throw e.error}}},t.prototype.createTensorFromGPUData=function(e,t,a){e.channels=e.channels||"RGBA";var r=e.texture,o=e.height,i=e.width,c=e.channels,s=n.engine().backend;if(!s.gpgpu.gl.isTexture(r))throw new Error("The texture is invalid. Also, please make sure the texture and the TFJS WebGL backend are using the same canvas. If you want to use your own custom canvas, you have to create and use the custom TFJS WebGL backend created from the canvas through 'new tf.MathBackendWebGL(customCanvas)'.");var u=s.writeTexture(r,t,a,o,i,c);return n.engine().makeTensorFromDataId(u,t,a,s)},t}(n.KernelBackend);function Qt(){n.env().set("WEBGL_FORCE_F16_TEXTURES",!0)}Yt.nextDataId=0,n.device_util.isBrowser()&&n.registerBackend("webgl",(function(){return new Yt}),2);var Zt={forceHalfFloat:Qt},Jt=function(e,t,a){this.variableNames=["A","B"],this.outputShape=n.backend_util.assertAndGetBroadcastShape(t,a),this.enableShapeUniforms=De(this.outputShape.length),this.userCode="\n float binaryOperation(float a, float b) {\n ".concat(e,"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n ")},$t="\n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n",ea=function(e,t,a,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n.backend_util.assertAndGetBroadcastShape(t,a);var o=this.outputShape.length;this.enableShapeUniforms=De(o);var i="";if(r)if(0===o||1===n.util.sizeFromShape(this.outputShape))i="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else{var c=Ne(o);if(i="\n ".concat(c," coords = getOutputCoords();\n "),1===o)this.enableShapeUniforms?i+="\n result.y = (coords + 1) >= outShape ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ":i+="\n result.y = (coords + 1) >= ".concat(this.outputShape[0]," ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ");else{var s=Dt("coords",o);this.enableShapeUniforms?i+="\n bool nextRowOutOfBounds =\n (".concat(s[o-2]," + 1) >= outShape[").concat(o," - 2];\n bool nextColOutOfBounds =\n (").concat(s[o-1]," + 1) >= outShape[").concat(o," - 1];\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n "):i+="\n bool nextRowOutOfBounds =\n (".concat(s[o-2]," + 1) >= ").concat(this.outputShape[o-2],";\n bool nextColOutOfBounds =\n (").concat(s[o-1]," + 1) >= ").concat(this.outputShape[o-1],";\n result.y = nextColOutOfBounds ? 0. : result.y;\n result.z = nextRowOutOfBounds ? 0. : result.z;\n result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;\n ")}}this.userCode="\n vec4 binaryOperation(vec4 a, vec4 b) {\n ".concat(e,"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n ").concat(i,"\n\n setOutput(result);\n }\n ")};function na(e){var n=e.inputs,t=e.backend,a=n.x;return t.incRef(a.dataId),{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}var ta={kernelName:n.Identity,backendName:"webgl",kernelFunc:na};function aa(e){var n=e.inputs,t=e.backend,a=n.real,r=n.imag,o=t.makeTensorInfo(a.shape,"complex64"),i=t.texData.get(o.dataId),c=na({inputs:{x:a},backend:t}),s=na({inputs:{x:r},backend:t});return i.complexTensorInfos={real:c,imag:s},o}var ra={kernelName:n.Complex,backendName:"webgl",kernelFunc:aa},oa="return (a < 0.) ? b * a : a;",ia="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",ca={kernelName:n.LeakyRelu,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.alpha,c=a.makeTensorInfo([],"float32",n.util.createScalarValue(i,"float32")),s=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ea(ia,o.shape,c.shape):new Jt(oa,o.shape,c.shape),u=a.runWebGLProgram(s,[o,c],"float32");return a.disposeIntermediateTensorInfo(c),u}},sa="return (a < 0.) ? b * a : a;",ua="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",la={kernelName:n.Prelu,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.x,o=t.alpha,i=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ea(ua,r.shape,o.shape):new Jt(sa,r.shape,o.shape);return a.runWebGLProgram(i,[r,o],"float32")}};function da(e){var t=e.opSnippet,a=e.packedOpSnippet,r=e.cpuKernelImpl,o=e.dtype;return function(e){var i,c=e.inputs,s=e.backend,u=c.x,l=s,d=o||u.dtype;if(l.shouldExecuteOnCPU([u])&&null!=r){var p=l.texData.get(u.dataId),h=r(p.values,d);return l.makeTensorInfo(u.shape,d,h)}return i=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&null!=a?new Xt(u.shape,a):new Mt(u.shape,t),l.runWebGLProgram(i,[u],d)}}function pa(e){var t=e.opSnippet,a=e.packedOpSnippet,r=e.checkOutOfBounds,o=void 0!==r&&r,i=e.supportsComplex,s=void 0!==i&&i,u=e.cpuKernelImpl,l=e.dtype;return function(e){var r=e.inputs,i=e.backend,d=r.a,p=r.b,h=i;if(s&&"complex64"===d.dtype){var f=h.texData.get(d.dataId),x=h.texData.get(p.dataId),v=c([[f.complexTensorInfos.real,x.complexTensorInfos.real],[f.complexTensorInfos.imag,x.complexTensorInfos.imag]].map((function(e){var a=c(e,2),r=a[0],o=a[1],i={dataId:r.dataId,dtype:r.dtype,shape:d.shape},s={dataId:o.dataId,dtype:o.dtype,shape:p.shape},u=new Jt(t,d.shape,p.shape);return h.runWebGLProgram(u,[i,s],n.upcastType(r.dtype,o.dtype))})),2),g=v[0],m=v[1],b=aa({inputs:{real:g,imag:m},backend:h});return h.disposeIntermediateTensorInfo(g),h.disposeIntermediateTensorInfo(m),b}var C,y=l||n.upcastType(d.dtype,p.dtype);if(("string"===d.dtype||"string"===p.dtype||h.shouldExecuteOnCPU([d,p]))&&null!=u){var w=h.texData.get(d.dataId).values,I=h.texData.get(p.dataId).values,S="string"===d.dtype?n.backend_util.fromUint8ToStringArray(w):w,k="string"===d.dtype?n.backend_util.fromUint8ToStringArray(I):I,R=c(u(d.shape,p.shape,S,k,y),2),T=R[0],N=R[1],E=h.makeTensorInfo(N,y);return h.texData.get(E.dataId).values=T,E}return C=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&null!=a?new ea(a,d.shape,p.shape,o):new Jt(t,d.shape,p.shape),h.runWebGLProgram(C,[d,p],y)}}function ha(e,n){if(void 0===n&&(n=!1),"linear"===e)return"return x;";if("relu"===e)return n?"\n vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":"if (isnan(x)) return x;\n return (x < 0.0) ? 0.0 : x;\n";if("elu"===e)return n?"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n":"return (x >= 0.0) ? x : (exp(x) - 1.0);";if("relu6"===e)return n?"\n vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n":"if (isnan(x)) return x;\n return (x < 0.0) ? 0.0 : min(6.0, x);\n";if("prelu"===e)return n?ua:sa;if("leakyrelu"===e)return n?ia:oa;if("sigmoid"===e)return"return 1.0 / (1.0 + exp(-1.0 * x));";throw new Error("Activation ".concat(e," has not been implemented for the WebGL backend."))}var fa=function(e,n,t,a,r,o,i,c,s){void 0===a&&(a=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===i&&(i=null),void 0===c&&(c=!1),void 0===s&&(s=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.enableShapeUniforms=De(this.outputShape.length);var u=a?e[1]:e[2],l=Math.ceil(u/2),d=a?"i * 2, rc.y":"rc.y, i * 2",p=r?"rc.z, i * 2":"i * 2, rc.z",h=a?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],x="",v="";i&&(x=c?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n ".concat(i,"\n }"):s?"vec4 activation(vec4 a) {\n vec4 b = getLeakyreluAlphaAtOutCoords();\n ".concat(i,"\n }"):"vec4 activation(vec4 x) {\n ".concat(i,"\n }"),v="result = activation(result);");var g=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),c&&this.variableNames.push("preluActivationWeights"),s&&this.variableNames.push("leakyreluAlpha");var m="rc.x",b="rc.x";e[0]0&&(d="\n if (inIdx < 0 || inIdx >= ".concat(o,") {\n return 0.0;\n }\n ")),this.userCode="\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ".concat(d,"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ").concat(a,";\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ").concat(c,"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ").concat(u,"\n }\n\n int inIdx = inOffset + ").concat(c,";\n if (").concat(1===s,") {\n vec4 values = vec4(getValue(batch, inIdx), 0.0, 0.0, 0.0);\n\n ").concat(u,"\n } else if (").concat(2===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1), 0.0, 0.0);\n\n ").concat(u,"\n } else if (").concat(3===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2), 0.0);\n\n ").concat(u,"\n }\n setOutput(sumValue);\n }\n ")},Sa=function(e,n){this.variableNames=["x"];var t=e.windowSize,a=e.batchSize,r=e.inSize,o=e.outSize;this.outputShape=[a,o];var i="0.0",c="";"prod"===n?i="1.0":"min"===n?(i="1.0 / 1e-20",c="min"):"max"===n&&(i="-1.0 / 1e-20",c="max");var s="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===n?s="sumValue":"prod"===n?s="prodValue":"all"===n?s="allValue":"any"===n&&(s="anyValue");var u=4*Math.floor(t/4),l=t%4,d="\n if (".concat("sum"===n,") {\n sumValue += dot(values, ones);\n } else if (").concat("prod"===n,") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = ").concat(c,"(values, minMaxValue);\n if (").concat("min"===n," || ").concat("max"===n,") {\n minMaxValue = ").concat(c,"(values, minMaxValue);\n bvec4 isNaN = isnan(values);\n if (isNaN.r || isNaN.g || isNaN.b || isNaN.a) {\n minMaxValue = vec4(NAN);\n }\n }\n }\n "),p="vec4";"all"===n?(i="1.0",d="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",p="bvec4"):"any"===n&&(i="0.0",d="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",p="bvec4");var h="";r%t>0&&(h="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return initializationValue;\n }\n ")),this.userCode="\n const float initializationValue = ".concat(i,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n ").concat(h,"\n return getX(batch, inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ").concat(t,";\n\n vec4 minMaxValue = vec4(").concat(i,");\n float prodValue = 1.0;\n float sumValue = 0.0;\n float allValue = 1.0;\n float anyValue = 0.0;\n\n for (int i = 0; i < ").concat(u,"; i += 4) {\n int inIdx = inOffset + i;\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n ").concat(d,"\n }\n\n int inIdx = inOffset + ").concat(u,";\n if (").concat(1===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(d,"\n } else if (").concat(2===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n ").concat(d,"\n } else if (").concat(3===l,") {\n ").concat(p," values = ").concat(p,"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n ").concat(d,"\n }\n setOutput(").concat(s,");\n }\n ")};function ka(e,t,a,r){for(var o=function(e){for(var t=[];0===t.length||1!==t[t.length-1].outSize;){var a=t.length?t[t.length-1].outSize:e[1],r=n.backend_util.computeOptimalWindowSize(a);t.push({inSize:a,windowSize:r,outSize:Math.ceil(a/r)})}return t}(e.shape),i=e,c=0;c6)throw Error("Transpose for rank ".concat(n," is not yet supported"));for(var t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],a=new Array(n),r=0;r6)throw Error("Packed transpose for rank ".concat(this.rank," is not yet supported."));var r=Ne(this.rank),o=Ft("rc",this.rank),i=new Array(this.rank);for(a=0;a1e3&&!1===(B||V||W||null!=U)){var M=O,G=F;c&&(M=_a({inputs:{x:O},backend:u,attrs:{perm:[0,2,1]}}),D.push(M)),s&&(G=_a({inputs:{x:F},backend:u,attrs:{perm:[0,2,1]}}),D.push(G));var z=1===I,X=M;1!==I&&(X=ya({inputs:{x:M},backend:u,attrs:{shape:[P,L,1]}}),D.push(X));var H=1===I?2:1,j=G;z&&(j=ya({inputs:{x:G},backend:u,attrs:{shape:[P,1,L]}}),D.push(j));var K=ba({inputs:{a:X,b:j},backend:u});E=Ea({inputs:{x:K},backend:u,attrs:{axis:H,keepDims:!0}}),D.push(K)}else{var q=n.upcastType(r.dtype,o.dtype),Y=new fa(A,_,[P,w,I],c,s,B,U,V,W),Q=[O,F];if(null!=d&&Q.push(d),V&&Q.push(h),W){var Z=u.makeTensorInfo([],"float32",n.util.createScalarValue(x,"float32"));Q.push(Z),D.push(Z)}E=u.runWebGLProgram(Y,Q,q)}var J=ya({inputs:{x:E},backend:u,attrs:{shape:N}});D.push(E);try{for(var $=i(D),ee=$.next();!ee.done;ee=$.next()){var ne=ee.value;u.disposeIntermediateTensorInfo(ne)}}catch(e){t={error:e}}finally{try{ee&&!ee.done&&(a=$.return)&&a.call($)}finally{if(t)throw t.error}}return J}var Da={kernelName:n._FusedMatMul,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.a,o=n.b,i=n.bias,c=n.preluActivationWeights,s=a.transposeA,u=a.transposeB,l=a.activation;return Fa({a:r,b:o,transposeA:s,transposeB:u,backend:t,bias:i,preluActivationWeights:c,leakyreluAlpha:a.leakyreluAlpha,activation:l})}},Pa="return abs(x);",La={kernelName:n.Abs,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.x;if(r.shouldExecuteOnCPU([o])&&"complex64"!==o.dtype){var i=r.texData.get(o.dataId),c=Ct(i.values);return r.makeTensorInfo(o.shape,o.dtype,c)}return t=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Xt(o.shape,Pa):new Mt(o.shape,Pa),r.runWebGLProgram(t,[o],o.dtype)}},Ba=da({opSnippet:"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n"}),Va={kernelName:n.Acos,backendName:"webgl",kernelFunc:Ba},Wa=da({opSnippet:"if (isnan(x)) return x;\n if (x < 1.0) return NAN;\nreturn log(x + sqrt(x * x - 1.0));"}),Ua={kernelName:n.Acosh,backendName:"webgl",kernelFunc:Wa},Ma="return a + b;",Ga=pa({opSnippet:Ma,packedOpSnippet:Ma,supportsComplex:!0,cpuKernelImpl:Kn}),za={kernelName:n.Add,backendName:"webgl",kernelFunc:Ga},Xa=function(e,n){this.outputShape=[],this.outputShape=e,this.variableNames=n.map((function(e,n){return"T".concat(n)}));var t=[];this.variableNames.forEach((function(e){t.push("float v".concat(e," = get").concat(e,"AtOutCoords();"))}));var a=this.variableNames.map((function(e){return"v".concat(e)})).join(" + ");this.userCode="\n void main() {\n ".concat(t.join("\n "),"\n\n float result = ").concat(a,";\n setOutput(result);\n }\n ")},Ha=function(e,n){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=n.map((function(e,n){return"T".concat(n)}));var t=[];this.variableNames.forEach((function(e){t.push("vec4 v".concat(e," = get").concat(e,"AtOutCoords();"))}));var a=this.variableNames.map((function(e){return"v".concat(e)})).join(" + ");this.userCode="\n void main() {\n ".concat(t.join("\n "),"\n\n vec4 result = ").concat(a,";\n setOutput(result);\n }\n ")},ja={kernelName:n.AddN,backendName:"webgl",kernelFunc:function e(t){var a=t.inputs,r=t.backend,o=a;if(1===o.length)return na({inputs:{x:o[0]},backend:r});if(o.length>n.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var i=Math.floor(o.length/2),c=e({inputs:o.slice(0,i),backend:r}),s=e({inputs:o.slice(i),backend:r});return e({inputs:[c,s],backend:r})}var u=o.map((function(e){return e.dtype})).reduce((function(e,t){return n.upcastType(e,t)})),l=o.map((function(e){return e.shape})),d=n.env().getBool("WEBGL_PACK")?new Ha(o[0].shape,l):new Xa(o[0].shape,l);return r.runWebGLProgram(d,o,u)}},Ka={kernelName:n.All,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=o;null!=p&&(h=_a({inputs:{x:o},backend:a,attrs:{perm:p}}),d=n.backend_util.getInnerMostAxes(d.length,u)),n.backend_util.assertAxesAreInnerMostDims("all",d,u);var f,x=c(n.backend_util.computeOutAndReduceShapes(h.shape,d),2),v=x[0],g=x[1],m=ya({inputs:{x:h},backend:a,attrs:{shape:[-1,n.util.sizeFromShape(g)]}}),b=ka(m,m.dtype,"all",a);return f=ya(s?{inputs:{x:b},backend:a,attrs:{shape:n.backend_util.expandShapeToKeepDim(v,l)}}:{inputs:{x:b},backend:a,attrs:{shape:v}}),a.disposeIntermediateTensorInfo(m),a.disposeIntermediateTensorInfo(b),null!=p&&a.disposeIntermediateTensorInfo(h),f}},qa={kernelName:n.Any,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=o;null!=p&&(h=_a({inputs:{x:o},backend:a,attrs:{perm:p}}),d=n.backend_util.getInnerMostAxes(d.length,u)),n.backend_util.assertAxesAreInnerMostDims("any",d,u);var f,x=c(n.backend_util.computeOutAndReduceShapes(h.shape,d),2),v=x[0],g=x[1],m=ya({inputs:{x:h},backend:a,attrs:{shape:[-1,n.util.sizeFromShape(g)]}}),b=ka(m,m.dtype,"any",a);return f=ya(s?{inputs:{x:b},backend:a,attrs:{shape:n.backend_util.expandShapeToKeepDim(v,l)}}:{inputs:{x:b},backend:a,attrs:{shape:v}}),a.disposeIntermediateTensorInfo(m),a.disposeIntermediateTensorInfo(b),null!=p&&a.disposeIntermediateTensorInfo(h),f}},Ya=function(e,n,t){this.variableNames=["A"];var a=e.windowSize,r=e.batchSize,o=e.outSize;t||this.variableNames.push("bestIndicesA"),this.outputShape=[r,o];var i="max"===n?">":"<",c=t?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = outIdx * ".concat(a,";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < ").concat(a,"; i++) {\n int inIdx = ").concat(c,";\n float candidate = getA(batch, inIdx);\n if (candidate ").concat(i," bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n ")},Qa=function(e,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,n.util.assert(e.length>2,(function(){return"Packed arg".concat(a.charAt(0).toUpperCase()+a.slice(1)," supports only inputs with rank above 2.")}));var o=e[e.length-1],i=Math.ceil(o/t);this.outputShape=e.slice(0,-1),i>1&&this.outputShape.push(i),r||this.variableNames.push("bestIndicesA");var c,s,u=this.outputShape,l=u.length,d=Ne(l),p=Dt("coords",l);if(1===i){var h=Ne(s=l+1);c="\n ".concat(h," sourceLocR = ").concat(h,"(").concat(p.join(),", 0);\n ++").concat(p[l-1],";\n ").concat(h," sourceLocG = ").concat(h,"(").concat(p.join(),", 0);\n ++").concat(p[l-2],";\n ").concat(h," sourceLocA = ").concat(h,"(").concat(p.join(),", 0);\n --").concat(p[l-1],";\n ").concat(h," sourceLocB = ").concat(h,"(").concat(p.join(),", 0);\n --").concat(p[l-2],";")}else s=l,c="\n ".concat(d," sourceLocR = coords;\n ++").concat(p[l-1],";\n ").concat(d," sourceLocG = coords;\n ++").concat(p[l-2],";\n ").concat(d," sourceLocA = coords;\n --").concat(p[l-1],";\n ").concat(d," sourceLocB = coords;\n --").concat(p[l-2],";");var f=["x","y","z","w","u","v"].slice(0,s),x="."+f[s-1],v=f.map((function(e){return"int "+e})),g=Dt("sourceLocR",s-1).concat("inIdx.r"),m=Dt("sourceLocG",s-1).concat("inIdx.g"),b=Dt("sourceLocB",s-1).concat("inIdx.b"),C=Dt("sourceLocA",s-1).concat("inIdx.a"),y="max"===a?"greaterThan":"lessThan",w=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel(".concat(g.join(),"),\n getBestIndicesAChannel(").concat(m.join(),"),\n getBestIndicesAChannel(").concat(b.join(),"),\n getBestIndicesAChannel(").concat(C.join(),")));"),I="vec4(\n getAChannel(".concat(g.join(),"),\n hasNextCol ? getAChannel(").concat(m.join(),") : 0.,\n hasNextRow ? getAChannel(").concat(b.join(),") : 0.,\n hasNextRow && hasNextCol ? getAChannel(").concat(C.join(),") : 0.)"),S=r?"":"\n float getBestIndicesAChannel(".concat(v.join(),") {\n return getChannel(getBestIndicesA(").concat(f.join(),"),\n vec2(").concat(f.slice(-2).join(),"));\n }");this.userCode="\n float getAChannel(".concat(v.join(),") {\n return getChannel(getA(").concat(f.join(),"),\n vec2(").concat(f.slice(-2).join(),"));\n }\n ").concat(S,"\n void main() {\n ").concat(d," coords = getOutputCoords();\n bool hasNextCol = ").concat(p[l-1]," < ").concat(u[l-1]-1,";\n bool hasNextRow = ").concat(p[l-2]," < ").concat(u[l-2]-1,";\n ").concat(c,"\n ivec4 srcIdx = ivec4(sourceLocR").concat(x,", sourceLocG").concat(x,",\n sourceLocB").concat(x,", sourceLocA").concat(x,") * ").concat(t,";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = ").concat(I,";\n\n for (int i = 0; i < ").concat(t,"; i++) {\n inIdx = srcIdx;\n ").concat(w,"\n vec4 candidate = ").concat(I,";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4(").concat(y,"(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));\n\n bestValue = vec4(replace.x ? candidate.x : bestValue.x,\n replace.y ? candidate.y : bestValue.y,\n replace.z ? candidate.z : bestValue.z,\n replace.w ? candidate.w : bestValue.w);\n bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));\n srcIdx++;\n }\n setOutput(bestIndex);\n }\n ")};function Za(e,t,a,r){void 0===r&&(r=null);var o=t.shape[0],i=t.shape[1];null!=r&&(o=r.shape[0],i=r.shape[1]);var c=n.backend_util.computeOptimalWindowSize(i),s={windowSize:c,inSize:i,batchSize:o,outSize:Math.ceil(i/c)},u=new Ya(s,a,null==r),l=[t];null!=r&&l.push(r);var d=e.runWebGLProgram(u,l,"int32");if(1===d.shape[1])return d;var p=Za(e,t,a,d);return e.disposeIntermediateTensorInfo(d),p}function Ja(e,t,a,r){void 0===r&&(r=null);var o=null!=r?r.shape:t.shape,i=o[o.length-1],c=n.backend_util.computeOptimalWindowSize(i),s=new Qa(o,c,a,null==r),u=null==r?[t]:[t,r],l=e.runWebGLProgram(s,u,"int32");if(l.shape.length===t.shape.length){var d=Ja(e,t,a,l);return e.disposeIntermediateTensorInfo(l),d}return l}function $a(e,t,a,r){var o=[a];if(n.backend_util.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),o,t.shape.length),!n.env().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){var i=[],s=e.texData.get(t.dataId),u=t;null!==s&&s.isPacked&&(u=e.unpackTensor(t),i.push(u));var l=c(n.backend_util.computeOutAndReduceShapes(u.shape,o),2),d=l[0],p=l[1],h=n.util.sizeFromShape(p),f=ya({inputs:{x:u},backend:e,attrs:{shape:[-1,h]}});i.push(f);var x=Za(e,f,r);i.push(x);var v=ya({inputs:{x},backend:e,attrs:{shape:d}});return i.forEach((function(n){return e.disposeIntermediateTensorInfo(n)})),v}return Ja(e,t,r)}var er={kernelName:n.ArgMax,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,c=n.util.parseAxisParam(i,o.shape),s=n.backend_util.getAxesPermutation(c,o.shape.length),u=o,l=[];null!=s&&(u=_a({inputs:{x:o},backend:a,attrs:{perm:s}}),l.push(u),c=n.backend_util.getInnerMostAxes(c.length,u.shape.length)),n.backend_util.assertAxesAreInnerMostDims("argMax",[c[0]],u.shape.length);var d=$a(a,u,c[0],"max");return l.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),d}},nr={kernelName:n.ArgMin,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.axis,c=n.util.parseAxisParam(i,o.shape),s=n.backend_util.getAxesPermutation(c,o.shape.length),u=o,l=[];null!=s&&(u=_a({inputs:{x:o},backend:a,attrs:{perm:s}}),l.push(u),c=n.backend_util.getInnerMostAxes(c.length,u.shape.length)),n.backend_util.assertAxesAreInnerMostDims("argMin",[c[0]],u.shape.length);var d=$a(a,u,c[0],"min");return l.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),d}},tr=da({opSnippet:"if (isnan(x)) return x;\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n"}),ar={kernelName:n.Asin,backendName:"webgl",kernelFunc:tr},rr=da({opSnippet:"if (isnan(x)) return x;return log(x + sqrt(x * x + 1.0));"}),or={kernelName:n.Asinh,backendName:"webgl",kernelFunc:rr},ir=da({opSnippet:"if (isnan(x)) return x;\n return atan(x);\n"}),cr={kernelName:n.Atan,backendName:"webgl",kernelFunc:ir},sr=pa({opSnippet:"\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",packedOpSnippet:"\n vec4 result = atan(a, b);\n bvec4 isNaNA = isnan(a);\n bvec4 isNaNB = isnan(b);\n bvec4 isNaN = bvec4(isNaNA.x || isNaNB.x, isNaNA.y || isNaNB.y, isNaNA.z || isNaNB.z, isNaNA.w || isNaNB.w);\n \n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n\n return result;\n"}),ur={kernelName:n.Atan2,backendName:"webgl",kernelFunc:sr},lr=da({opSnippet:"if (isnan(x)) return x;\n if ((x < -1.0) || (x > 1.0)) return NAN;\nreturn (log(1.0 + x) - log(1.0 - x)) / 2.0;"}),dr={kernelName:n.Atanh,backendName:"webgl",kernelFunc:lr},pr=function(e,n,t,a,r){if(void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x"],"avg"===n&&t)throw new Error("Cannot compute positions for average pool.");var o=e.filterWidth,i=e.strideHeight,c=e.strideWidth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=e.padInfo.top,h=e.padInfo.left;this.outputShape=e.outShape;var f="avg"===n,x="((batch * ".concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + d"),v="(xR * ".concat(e.inWidth," + xC) * ").concat(e.inChannels," + d"),g="0.0";if(f||(g="-1.0 / 1e-20"),t)this.userCode="\n const ivec2 strides = ivec2(".concat(i,", ").concat(c,");\n const ivec2 pads = ivec2(").concat(p,", ").concat(h,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n float avgValue = 0.0;\n\n for (int wR = 0; wR < ").concat(l,";\n wR += ").concat(s,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(d,";\n wC += ").concat(u,") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float value = getX(batch, xR, xC, d);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ").concat(">="," currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ").concat(a?r?x:v:"wR * ".concat(d," + wC"),";\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ");else{var m="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===n&&(m="avgValue / max(count, 1.0)");var b=4*Math.floor(o/4),C=o%4,y="\n if (".concat(f,") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ").concat("max","(values, minMaxValue);\n }\n ");this.userCode="\n const ivec2 strides = ivec2(".concat(i,", ").concat(c,");\n const ivec2 pads = ivec2(").concat(p,", ").concat(h,");\n const float initializationValue = ").concat(g,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xR, int xC, int d) {\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xR, xC, d);\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d = coords[3];\n\n ivec2 xRCCorner = coords.yz * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // max/min x(?, ?, d) to get y(yR, yC, d).\n // ? = to be determined\n vec4 minMaxValue = vec4(").concat(g,");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < ").concat(l,";\n wR += ").concat(s,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(b,"; wC += 4) {\n int xC = xCCorner + wC * ").concat(u,";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n getValue(batch, xR, xC + 2 * ").concat(u,", d),\n getValue(batch, xR, xC + 3 * ").concat(u,", d)\n );\n\n ").concat(y,"\n }\n\n int xC = xCCorner + ").concat(b,";\n if (").concat(1===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(y,"\n } else if (").concat(2===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n initializationValue,\n initializationValue\n );\n\n ").concat(y,"\n } else if (").concat(3===C,") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + ").concat(u,", d),\n getValue(batch, xR, xC + 2 * ").concat(u,", d),\n initializationValue\n );\n\n ").concat(y,"\n }\n }\n setOutput(").concat(m,");\n }\n ")}},hr=function(e,n,t,a,r){if(void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x"],"avg"===n&&t)throw new Error("Cannot compute positions for average pool.");var o=e.filterWidth,i=e.strideDepth,c=e.strideHeight,s=e.strideWidth,u=e.dilationDepth,l=e.dilationHeight,d=e.dilationWidth,p=e.effectiveFilterDepth,h=e.effectiveFilterHeight,f=e.effectiveFilterWidth,x=e.padInfo.front,v=e.padInfo.top,g=e.padInfo.left;this.outputShape=e.outShape;var m="avg"===n,b="0.0";if(m||(b="-1.0 / 1e-20"),t)this.userCode="\n const ivec3 strides =\n ivec3(".concat(i,", ").concat(c,", ").concat(s,");\n const ivec3 pads = ivec3(").concat(x,", ").concat(v,", ").concat(g,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).\n // ? = to be determined\n float minMaxValue = 0.0;\n float minMaxValueFound = 0.0;\n int minMaxPosition = 0;\n\n for (int wD = 0; wD < ").concat(p,";\n wD += ").concat(u,") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(h,";\n wR += ").concat(l,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(f,";\n wC += ").concat(d,") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float value = getX(batch, xD, xR, xC, ch);\n\n // If a min / max value has already been found, use it. If not,\n // use the current value.\n float currMinMaxValue = mix(\n value, minMaxValue, minMaxValueFound);\n if (value ").concat(">="," currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = ").concat(a?r?"(((batch * ".concat(e.inDepth," + xD) * ").concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + ch"):"((xD * ".concat(e.inHeight," + xR) * ").concat(e.inWidth," + xC) * ").concat(e.inChannels," + ch"):"wD * ".concat(h," * ").concat(f," +\n wR * ").concat(f," + wC"),";\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ");else{var C="".concat(n,"(").concat(n,"(").concat(n,"(")+"minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===n&&(C="avgValue / max(count, 1.0)");var y=4*Math.floor(o/4),w=o%4,I="\n if (".concat(m,") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = ").concat("max","(values, minMaxValue);\n }\n ");this.userCode="\n const ivec3 strides =\n ivec3(".concat(i,", ").concat(c,", ").concat(s,");\n const ivec3 pads = ivec3(").concat(x,", ").concat(v,", ").concat(g,");\n const float initializationValue = ").concat(b,";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float count = 0.0;\n\n float getValue(int batch, int xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n return initializationValue;\n }\n count += 1.0;\n return getX(batch, xD, xR, xC, ch);\n }\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xDCorner = xCorner.x;\n int xRCorner = xCorner.y;\n int xCCorner = xCorner.z;\n\n // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).\n // ? = to be determined\n vec4 minMaxValue = vec4(").concat(b,");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < ").concat(p,";\n wD += ").concat(u,") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(h,";\n wR += ").concat(l,") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(y,"; wC += 4) {\n int xC = xCCorner + wC * ").concat(d,";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 2 * ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 3 * ").concat(d,", ch)\n );\n\n ").concat(I,"\n }\n\n int xC = xCCorner + ").concat(y,";\n if (").concat(1===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n ").concat(I,"\n } else if (").concat(2===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n initializationValue,\n initializationValue\n );\n\n ").concat(I,"\n } else if (").concat(3===w,") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + ").concat(d,", ch),\n getValue(batch, xD, xR, xC + 2 * ").concat(d,", ch),\n initializationValue\n );\n\n ").concat(I,"\n }\n }\n }\n setOutput(").concat(C,");\n }\n ")}},fr={kernelName:n.AvgPool,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x;le(o,"avgPool");var i=r.filterSize,c=r.strides,s=r.pad,u=r.dimRoundingMode;n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(c,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(c," and dilations '").concat(1,"'")}));var l=n.backend_util.computePool2DInfo(o.shape,i,c,1,s,u);if(1===l.filterWidth&&1===l.filterHeight&&n.util.arraysEqual(l.inShape,l.outShape))return na({inputs:{x:o},backend:a});var d=new pr(l,"avg",!1);return a.runWebGLProgram(d,[o],"float32")}},xr={kernelName:n.AvgPool3D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.filterSize,c=r.strides,s=r.pad,u=r.dimRoundingMode,l=r.dataFormat,d=n.backend_util.computePool3DInfo(o.shape,i,c,[1,1,1],s,u,l),p=new hr(d,"avg",!1);return a.runWebGLProgram(p,[o],"float32")}},vr=function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o=e.dilationHeight,i=e.dilationWidth,c=e.effectiveFilterHeight,s=e.effectiveFilterWidth,u=c-1-e.padInfo.top,l=s-1-e.padInfo.left,d=1/(n*t);this.userCode="\n const ivec2 pads = ivec2(".concat(u,", ").concat(l,");\n const float avgMultiplier = float(").concat(d,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n\n ivec2 dyRCCorner = coords.yz - pads;\n int dyRCorner = dyRCCorner.x;\n int dyCCorner = dyRCCorner.y;\n\n // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(c,";\n wR += ").concat(o,") {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(s,";\n wC+= ").concat(i,") {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n setOutput(dotProd);\n }\n ")},gr=function(e){this.variableNames=["dy"],this.outputShape=e.inShape;var n=e.filterDepth,t=e.filterHeight,a=e.filterWidth,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.effectiveFilterDepth,d=e.effectiveFilterHeight,p=e.effectiveFilterWidth,h=l-1-e.padInfo.front,f=d-1-e.padInfo.top,x=p-1-e.padInfo.left,v=1/(n*t*a);this.userCode="\n const ivec3 pads = ivec3(".concat(h,", ").concat(f,", ").concat(x,");\n const float avgMultiplier = float(").concat(v,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ").concat(l,";\n wD += ").concat(c,") {\n float dyD = float(dyDCorner + wD) / ").concat(r,".0;\n\n if (dyD < 0.0 || dyD >= ").concat(e.outDepth,".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ").concat(d,";\n wR += ").concat(s,") {\n float dyR = float(dyRCorner + wR) / ").concat(o,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(p,";\n wC += ").concat(u,") {\n float dyC = float(dyCCorner + wC) / ").concat(i,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n\n dotProd += dyValue * avgMultiplier;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},mr={kernelName:n.AvgPool3DGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=r.filterSize,s=r.strides,u=r.pad,l=r.dimRoundingMode,d=n.backend_util.computePool3DInfo(i.shape,c,s,[1,1,1],u,l),p=new gr(d);return a.runWebGLProgram(p,[o],i.dtype)}},br={kernelName:n.AvgPoolGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=i;le([o,i],"avgPoolGrad");var s=r.filterSize,u=r.strides,l=r.pad,d=n.backend_util.computePool2DInfo(c.shape,s,u,1,l),p=new vr(d);return a.runWebGLProgram(p,[o],c.dtype)}},Cr={kernelName:n.BatchMatMul,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs;return Fa({a:n.a,b:n.b,transposeA:a.transposeA,transposeB:a.transposeB,backend:t})}},yr=function(e,t,a,r,o,i){this.outputShape=[],this.variableNames=["x","mean","variance"],n.backend_util.assertAndGetBroadcastShape(e,t),n.backend_util.assertAndGetBroadcastShape(e,a);var c="0.0";null!=r&&(n.backend_util.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),c="getOffsetAtOutCoords()");var s="1.0";null!=o&&(n.backend_util.assertAndGetBroadcastShape(e,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=e,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = ".concat(c,";\n float scale = ").concat(s,";\n float inv = scale * inversesqrt(variance + float(").concat(i,"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n ")},wr=function(e,t,a,r,o,i){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],n.backend_util.assertAndGetBroadcastShape(e,t),n.backend_util.assertAndGetBroadcastShape(e,a);var c="vec4(0.0)";null!=r&&(n.backend_util.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),c="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(n.backend_util.assertAndGetBroadcastShape(e,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=e,this.userCode="\n void main() {\n vec4 offset = ".concat(c,";\n vec4 scale = ").concat(s,";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4(").concat(i,"));\n\n setOutput((x - mean) * inv + offset);\n }\n ")},Ir={kernelName:n.FusedBatchNorm,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.mean,c=t.variance,s=t.offset,u=t.scale;n.util.assert(i.shape.length===c.shape.length,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),n.util.assert(null==s||i.shape.length===s.shape.length,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),n.util.assert(null==u||i.shape.length===u.shape.length,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var l=r.varianceEpsilon;null==l&&(l=.001);var d=[o,i,c],p=null;null!=s&&(p=s.shape,d.push(s));var h=null;null!=u&&(h=u.shape,d.push(u));var f=n.env().getBool("WEBGL_PACK_NORMALIZATION")?new wr(o.shape,i.shape,c.shape,p,h,l):new yr(o.shape,i.shape,c.shape,p,h,l);return a.runWebGLProgram(f,d,d[0].dtype)}},Sr=function(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;var n=Ne(this.rank);this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];var t,a=function(e){if(1===e)return"sourceLoc";if(e<=6)return kr.slice(0,e).map((function(e){return"sourceLoc."+e})).join(",");throw Error("Slicing for rank ".concat(e," is not yet supported"))}(this.rank),r=e.map((function(e,n){return"sourceLoc.".concat(kr[n]," = start[").concat(n,"] + coords.").concat(kr[n],";")}));t="\n ".concat(n," sourceLoc;\n ").concat(n," coords = getOutputCoords();\n ").concat(r.join("\n"),"\n "),this.userCode="\n void main() {\n ".concat(t,"\n setOutput(getSource(").concat(a,"));\n }\n ")},kr=["x","y","z","w","u","v"],Rr=function(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length,this.customUniforms=[{name:"start",arrayIndex:this.rank,type:"int"}];var n=Ne(this.rank),t=Dt("coords",this.rank),a=Dt("sourceLoc",this.rank),r=1===this.rank?"sourceLoc":"vec2(".concat(a.slice(-2).join(),")"),o="getChannel(getSource(".concat(a.join(),"), ").concat(r,")"),i="\n result.x = ".concat(o,";\n if (++").concat(t[this.rank-1]," < ").concat(e[this.rank-1],") {\n ++").concat(a[this.rank-1],";\n result.y = ").concat(o,";\n --").concat(a[this.rank-1],";\n }\n "),c=1===this.rank?"":"\n --".concat(t[this.rank-1],";\n if (++").concat(t[this.rank-2]," < ").concat(e[this.rank-2],") {\n ++").concat(a[this.rank-2],";\n result.z = ").concat(o,";\n if (++").concat(t[this.rank-1]," < ").concat(e[this.rank-1],") {\n ++").concat(a[this.rank-1],";\n result.w = ").concat(o,";\n }\n }\n "),s=this.rank<=4?"sourceLoc = coords +\n ".concat(n,"(").concat(e.map((function(e,n){return"start[".concat(n,"]")})).join(),");"):e.map((function(e,n){return"".concat(a[n]," = ").concat(t[n]," + start[").concat(n,"];")})).join("\n");this.userCode="\n void main() {\n ".concat(n," coords = getOutputCoords();\n ").concat(n," sourceLoc;\n ").concat(s,"\n vec4 result = vec4(0.);\n ").concat(i,"\n ").concat(c,"\n setOutput(result);\n }\n ")};function Tr(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.begin,s=r.size,u=c(n.slice_util.parseSliceParams(o,i,s),2),l=u[0],d=u[1];if(n.slice_util.assertParamsValid(o,l,d),0===n.util.sizeFromShape(d))return a.makeTensorInfo(d,o.dtype,[]);if(a.shouldExecuteOnCPU([o])||"string"===o.dtype){var p=a.texData.get(o.dataId),h=yt(p.values,l,d,o.shape,o.dtype);return a.makeTensorInfo(d,o.dtype,h)}var f=a.texData.get(o.dataId).isPacked,x=n.slice_util.isSliceContinous(o.shape,l,d);if(f||!x){var v=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Rr(d):new Sr(d),g=[l];return a.runWebGLProgram(v,[o],o.dtype,g)}return a.uploadToGPU(o.dataId),function(e,t,a,r){var o=r.texData.get(e.dataId),i=r.makeTensorInfo(a,e.dtype),c=r.texData.get(i.dataId);Object.assign(c,o),c.refCount=1,c.shape=a,c.dtype=e.dtype;var s=n.slice_util.computeFlatOffset(t,n.util.computeStrides(e.shape));o.slice&&(s+=o.slice.flatOffset),c.slice={flatOffset:s,origDataId:o.slice&&o.slice.origDataId||e.dataId};var u=r.dataRefCount.get(c.slice.origDataId)||1;return r.dataRefCount.set(c.slice.origDataId,u+1),i}(o,l,d,a)}var Nr={kernelName:n.Slice,backendName:"webgl",kernelFunc:Tr},Er={kernelName:n.BatchToSpaceND,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.blockShape,c=r.crops;n.util.assert(o.shape.length<=4,(function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"}));var s=i.reduce((function(e,n){return e*n})),u=n.backend_util.getReshaped(o.shape,i,s),l=n.backend_util.getPermuted(u.length,i.length),d=n.backend_util.getReshapedPermuted(o.shape,i,s),p=n.backend_util.getSliceBeginCoords(c,i.length),h=n.backend_util.getSliceSize(d,c,i.length),f=[],x=ya({inputs:{x:o},backend:a,attrs:{shape:u}}),v=_a({inputs:{x},backend:a,attrs:{perm:l}}),g=ya({inputs:{x:v},backend:a,attrs:{shape:d}}),m=Tr({inputs:{x:g},backend:a,attrs:{begin:p,size:h}});return f.push(x),f.push(v),f.push(g),f.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),m}},Ar={kernelName:n.Bincount,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.weights,i=a.size,c=t.readSync(r.dataId),s=t.readSync(o.dataId),u=qn(c,s,o.dtype,o.shape,i);return t.makeTensorInfo([i],o.dtype,u)}},_r={kernelName:n.BitwiseAnd,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.a,i=a.b,s=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS"),u=n.env().getNumber("WEBGL_VERSION");if(r.shouldExecuteOnCPU([o,i])||1===u){var l=r.texData.get(o.dataId).values,d=r.texData.get(i.dataId).values,p=c(Qn(o.shape,i.shape,l,d,o.dtype),2),h=p[0],f=p[1],x=r.makeTensorInfo(f,o.dtype);return r.texData.get(x.dataId).values=h,x}return t=s?new ea("\n int r = int(a.r) & int(b.r);\n int g = int(a.g) & int(b.g);\n int rb = int(a.b) & int(b.b);\n int ra = int(a.a) & int(b.a);\n return vec4(r, g, rb, ra);\n",o.shape,i.shape,!1):new Jt("\n return float(int(a.r) & int(b.r));\n",o.shape,i.shape),r.runWebGLProgram(t,[o,i],o.dtype)}},Or={kernelName:n.BroadcastArgs,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.s0,o=t.s1,i=a.readSync(r.dataId),c=a.readSync(o.dataId),s=n.backend_util.assertAndGetBroadcastShape(Array.from(i),Array.from(c));return a.makeTensorInfo([s.length],"int32",Int32Array.from(s))}},Fr=pa({opSnippet:"return float(a != b);",cpuKernelImpl:ft,dtype:"bool"}),Dr={kernelName:n.NotEqual,backendName:"webgl",kernelFunc:Fr};function Pr(e){var n=e.inputs,t=e.backend,a=n.input;return na({inputs:{x:t.texData.get(a.dataId).complexTensorInfos.real},backend:t})}var Lr={kernelName:n.Real,backendName:"webgl",kernelFunc:Pr},Br={kernelName:n.Cast,backendName:"webgl",kernelFunc:function e(a){var r=a.inputs,o=a.backend,i=a.attrs,s=r.x,u=i.dtype;if("complex64"===u){if("complex64"===s.dtype)return na({inputs:{x:s},backend:o});var l=t.zeros(s.shape),d=e({inputs:{x:s},backend:o,attrs:{dtype:"float32"}}),p=aa({inputs:{real:d,imag:l},backend:o});return l.dispose(),o.disposeIntermediateTensorInfo(d),p}if("complex64"===s.dtype){var h=Pr({inputs:{input:s},backend:o});return p=e({inputs:{x:h},backend:o,attrs:{dtype:u}}),o.disposeIntermediateTensorInfo(h),p}if(!n.util.hasEncodingLoss(s.dtype,u))return{dataId:(p=na({inputs:{x:s},backend:o})).dataId,shape:p.shape,dtype:u};if(o.shouldExecuteOnCPU([s])){var f=c(function(e,t,a,r){if("int32"===r)return[t,"int32",Int32Array.from(e)];if("bool"===r){var o=n.util.toTypedArray([0],a),i=c(hn((function(e,n){return e!==n?1:0}))(t,[],e,o,"bool"),2),s=i[0];return[i[1],"bool",s]}throw new Error("Error in Cast: failed to cast ".concat(a," to ").concat(r))}(o.texData.get(s.dataId).values,s.shape,s.dtype,u),3),x=f[0],v=f[1],g=f[2];return o.makeTensorInfo(x,v,g)}if("int32"===u)return function(e,n){var t=new Mt(e.shape,"return float(int(x));"),a=n.runWebGLProgram(t,[e],"int32");return{dataId:a.dataId,shape:a.shape,dtype:a.dtype}}(s,o);if("bool"===u){var m=o.makeTensorInfo([],"bool",n.util.getTypedArrayFromDType("bool",1));return p=Fr({inputs:{a:s,b:m},backend:o}),o.disposeIntermediateTensorInfo(m),p}throw new Error("Error in Cast: failed to cast ".concat(s.dtype," to ").concat(u))}},Vr="return ceil(x);",Wr=da({opSnippet:Vr,packedOpSnippet:Vr,cpuKernelImpl:Zn}),Ur={kernelName:n.Ceil,backendName:"webgl",kernelFunc:Wr},Mr=function(e){this.variableNames=["A"],this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n\n void main() {\n float value = getAAtOutCoords();\n if (isnan(value)) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, minVal, maxVal));\n }\n "},Gr=function(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"minVal",type:"float"},{name:"maxVal",type:"float"}],this.outputShape=e,this.userCode="\n void main() {\n vec4 value = getAAtOutCoords();\n\n if (any(isnan(value))) {\n setOutput(value);\n return;\n }\n\n setOutput(clamp(value, vec4(minVal), vec4(maxVal)));\n }\n "},zr={kernelName:n.ClipByValue,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=o.clipValueMin,s=o.clipValueMax;t=n.env().getBool("WEBGL_PACK_CLIP")?new Gr(i.shape):new Mr(i.shape);var u=[[c],[s]];return r.runWebGLProgram(t,[i],i.dtype,u)}},Xr=function(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode="\n void main() {\n float re = abs(getRealAtOutCoords());\n float im = abs(getImagAtOutCoords());\n float mx = max(re, im);\n\n // sadly the length function in glsl is not underflow-safe\n // (at least not on Intel GPUs). So the safe solution is\n // to ensure underflow-safety in all cases.\n setOutput(\n mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))\n );\n }\n "};function Hr(e,n){return{dataId:n.dataId,dtype:n.dtype,shape:e.shape}}var jr={kernelName:n.ComplexAbs,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=n.x,r=t.texData.get(a.dataId),o=new Xr(a.shape),i=[Hr(a,r.complexTensorInfos.real),Hr(a,r.complexTensorInfos.imag)];return t.runWebGLProgram(o,i,i[0].dtype)}},Kr=function(e){this.outputShape=[],this.outputShape=n.backend_util.computeOutShape(e,1),this.variableNames=e.map((function(e,n){return"T".concat(n)}));var t=new Array(e.length-1);t[0]=e[0][1];for(var a=1;a= ").concat(s[u-1],") {\n return getChannel(\n getT").concat(u,"(").concat(Yr(c,l,f),"),\n vec2(").concat(Yr(d,l,f),"));\n }")}var x=s.length,v=s[s.length-1];h+="\n return getChannel(\n getT".concat(x,"(").concat(Yr(c,l,v),"),\n vec2(").concat(Yr(d,l,v),"));"),this.userCode="\n float getValue(".concat(c.map((function(e){return"int "+e})),") {\n ").concat(h,"\n }\n\n void main() {\n ").concat(o," coords = getOutputCoords();\n vec4 result = vec4(getValue(").concat(i,"), 0., 0., 0.);\n\n ").concat(i[r-1]," = ").concat(i[r-1]," + 1;\n if (").concat(i[r-1]," < ").concat(a[r-1],") {\n result.g = getValue(").concat(i,");\n }\n\n ").concat(i[r-2]," = ").concat(i[r-2]," + 1;\n if (").concat(i[r-2]," < ").concat(a[r-2],") {\n result.a = getValue(").concat(i,");\n }\n\n ").concat(i[r-1]," = ").concat(i[r-1]," - 1;\n if (").concat(i[r-2]," < ").concat(a[r-2]," &&\n ").concat(i[r-1]," < ").concat(a[r-1],") {\n result.b = getValue(").concat(i,");\n }\n setOutput(result);\n }\n ")};function Yr(e,n,t){var a=e.indexOf(n);return e.map((function(e,n){return n===a?"".concat(e," - ").concat(t):e})).join()}function Qr(e){var n=e.inputs,t=e.backend,a=n.input;return na({inputs:{x:t.texData.get(a.dataId).complexTensorInfos.imag},backend:t})}var Zr={kernelName:n.Imag,backendName:"webgl",kernelFunc:Qr};function Jr(e,t,a){var r,o,c=e[0].dtype;if("complex64"===c){var s=e.map((function(e){return Pr({inputs:{input:e},backend:a})})),u=e.map((function(e){return Qr({inputs:{input:e},backend:a})})),l=Jr(s,t,a),d=Jr(u,t,a),p=aa({inputs:{real:l,imag:d},backend:a});return s.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),u.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),a.disposeIntermediateTensorInfo(l),a.disposeIntermediateTensorInfo(d),p}var h=a.shouldExecuteOnCPU(e);if("string"===c&&(h=!0),h){var f=e.map((function(e){var r=n.util.sizeFromShape(e.shape.slice(t));return ya({inputs:{x:e},backend:a,attrs:{shape:[-1,r]}})})),x=f.map((function(e){return{vals:a.readSync(e.dataId),shape:e.shape}})),v=n.backend_util.computeOutShape(f.map((function(e){return e.shape})),1),g=1===f[0].shape[0],m=Jn(x,v,c,g),b=n.backend_util.computeOutShape(e.map((function(e){return e.shape})),t),C=a.makeTensorInfo(b,c,m);return f.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),C}var y=e.filter((function(e){return n.util.sizeFromShape(e.shape)>0})),w=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&y[0].shape.length>1;if(1===y.length){var I=w?new Mt(e[0].shape,zt):new Xt(e[0].shape,zt);return a.runWebGLProgram(I,e,c)}var S=n.env().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER");if(y.length>S){for(var k=[],R=0;R0}));return 1===s.length?na({inputs:{x:s[0]},backend:a}):Jr(s,o,a)}var eo={kernelName:n.Concat,backendName:"webgl",kernelFunc:$r},no=function(e,n,t,a,r){void 0===n&&(n=!1),void 0===t&&(t=null),void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=e.outShape;var o=e.padInfo.top,i=e.padInfo.left,c=e.strideHeight,s=e.strideWidth,u=e.dilationHeight,l=e.dilationWidth,d=e.filterHeight,p=e.filterWidth,h=4*Math.floor(e.inChannels/4),f=e.inChannels%4,x="channelsLast"===e.dataFormat,v=x?1:2,g=x?2:3,m=x?3:1,b="",C="";t&&(b=a?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ".concat(t,"\n }"):r?"float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ".concat(t,"\n }"):"\n float activation(float x) {\n ".concat(t,"\n }\n "),C="result = activation(result);");var y=n?"result += getBiasAtOutCoords();":"";n&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode="\n ".concat(b,"\n\n const ivec2 strides = ivec2(").concat(c,", ").concat(s,");\n const ivec2 pads = ivec2(").concat(o,", ").concat(i,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords[").concat(m,"];\n\n ivec2 xRCCorner =\n ivec2(coords[").concat(v,"], coords[").concat(g,"]) * strides - pads;\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(d,"; wR++) {\n int xR = xRCorner + wR * ").concat(u,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(p,"; wC++) {\n int xC = xCCorner + wC * ").concat(l,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n for (int d1 = 0; d1 < ").concat(h,"; d1 += 4) {\n vec4 wValues = vec4(\n getW(wR, wC, d1, d2),\n getW(wR, wC, d1 + 1, d2),\n getW(wR, wC, d1 + 2, d2),\n getW(wR, wC, d1 + 3, d2)\n );\n\n if (").concat(x,") {\n vec4 xValues = vec4(\n getX(batch, xR, xC, d1),\n getX(batch, xR, xC, d1 + 1),\n getX(batch, xR, xC, d1 + 2),\n getX(batch, xR, xC, d1 + 3)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec4 xValues = vec4(\n getX(batch, d1, xR, xC),\n getX(batch, d1 + 1, xR, xC),\n getX(batch, d1 + 2, xR, xC),\n getX(batch, d1 + 3, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n\n if (").concat(1===f,") {\n\n if (").concat(x,") {\n dotProd +=\n getX(batch, xR, xC, ").concat(h,") *\n getW(wR, wC, ").concat(h,", d2);\n } else {\n dotProd +=\n getX(batch, ").concat(h,", xR, xC) *\n getW(wR, wC, ").concat(h,", d2);\n }\n\n } else if (").concat(2===f,") {\n vec2 wValues = vec2(\n getW(wR, wC, ").concat(h,", d2),\n getW(wR, wC, ").concat(h," + 1, d2)\n );\n\n if (").concat(x,") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, ").concat(h,"),\n getX(batch, xR, xC, ").concat(h," + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, ").concat(h,", xR, xC),\n getX(batch, ").concat(h," + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if (").concat(3===f,") {\n vec3 wValues = vec3(\n getW(wR, wC, ").concat(h,", d2),\n getW(wR, wC, ").concat(h," + 1, d2),\n getW(wR, wC, ").concat(h," + 2, d2)\n );\n\n if (").concat(x,") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, ").concat(h,"),\n getX(batch, xR, xC, ").concat(h," + 1),\n getX(batch, xR, xC, ").concat(h," + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, ").concat(h,", xR, xC),\n getX(batch, ").concat(h," + 1, xR, xC),\n getX(batch, ").concat(h," + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n ").concat(y,"\n ").concat(C,"\n setOutput(result);\n }\n ")},to=function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var n=e.padInfo.front,t=e.padInfo.top,a=e.padInfo.left,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,l=e.filterDepth,d=e.filterHeight,p=e.filterWidth,h=4*Math.floor(e.inChannels/4),f=e.inChannels%4;this.userCode="\n const ivec3 strides = ivec3(".concat(r,", ").concat(o,", ").concat(i,");\n const ivec3 pads = ivec3(").concat(n,", ").concat(t,", ").concat(a,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d2 = coords.u;\n\n ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;\n int xFCorner = xFRCCorner.x;\n int xRCorner = xFRCCorner.y;\n int xCCorner = xFRCCorner.z;\n\n // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get\n // y(yF, yR, yC, d2). ? = to be determined. : = across all\n // values in that axis.\n float dotProd = 0.0;\n for (int wF = 0; wF < ").concat(l,"; wF++) {\n int xF = xFCorner + wF * ").concat(c,";\n\n if (xF < 0 || xF >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int wR = 0; wR < ").concat(d,"; wR++) {\n int xR = xRCorner + wR * ").concat(s,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(p,"; wC++) {\n int xC = xCCorner + wC * ").concat(u,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n for (int d1 = 0; d1 < ").concat(h,"; d1 += 4) {\n vec4 xValues = vec4(\n getX(batch, xF, xR, xC, d1),\n getX(batch, xF, xR, xC, d1 + 1),\n getX(batch, xF, xR, xC, d1 + 2),\n getX(batch, xF, xR, xC, d1 + 3)\n );\n vec4 wValues = vec4(\n getW(wF, wR, wC, d1, d2),\n getW(wF, wR, wC, d1 + 1, d2),\n getW(wF, wR, wC, d1 + 2, d2),\n getW(wF, wR, wC, d1 + 3, d2)\n );\n\n dotProd += dot(xValues, wValues);\n }\n\n if (").concat(1===f,") {\n dotProd +=\n getX(batch, xF, xR, xC, ").concat(h,") *\n getW(wF, wR, wC, ").concat(h,", d2);\n } else if (").concat(2===f,") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, ").concat(h,"),\n getX(batch, xF, xR, xC, ").concat(h," + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, ").concat(h,", d2),\n getW(wF, wR, wC, ").concat(h," + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if (").concat(3===f,") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, ").concat(h,"),\n getX(batch, xF, xR, xC, ").concat(h," + 1),\n getX(batch, xF, xR, xC, ").concat(h," + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, ").concat(h,", d2),\n getW(wF, wR, wC, ").concat(h," + 1, d2),\n getW(wF, wR, wC, ").concat(h," + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},ao=function(e,t,a,r,o){void 0===t&&(t=!1),void 0===a&&(a=null),void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);for(var i=e.padInfo.left,c=e.strideWidth,s=e.dilationWidth,u=e.filterHeight,l=e.filterWidth,d=l,p="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;",h=0;h=0 && xR < inDims[0]) {\n ";for(var f=0;f<(d+1)/2;f++){var x=2*f;if(p+="\n xC = xCCorner + ".concat(x*s,";\n "),1===c){if(x= 0 && xCOffset < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n "),p+=1===s&&x>0?"\n xC".concat(x," = vec4(xTexelC").concat(x-2,".zw, xTexelC").concat(x,".xy);\n "):"\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC".concat(x," = vec4(previous.zw, xTexelC").concat(x,".xy);\n } else {\n xC").concat(x," = vec4(0.0, 0.0, xTexelC").concat(x,".xy);\n }\n ")):p+="\n if (xC >= 0 && xC < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n xC").concat(x," = xTexelC").concat(x,";\n "),x+1= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n "),p+=s>1?"\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC".concat(x+1," = vec4(previous.zw, xTexelC").concat(x+1,".xy);\n } else {\n xC").concat(x+1," = vec4(0.0, 0.0, xTexelC").concat(x+1,".xy);\n }\n "):"\n xC".concat(x+1," = vec4(xTexelC").concat(x,".zw, xTexelC").concat(x+1,".xy);\n ")):p+=1===v?"\n xC".concat(x+1," = xTexelC").concat(x,";\n "):"\n xCOffset = xC + ".concat(v,";\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x+1," = xTexelC").concat(x+1,";\n ")}}else x= 0 && xCOffset < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.0);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x," = vec4(xTexelC").concat(x,".zw, xTexelC").concat(x+1,".zw);\n "),x+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC".concat(x+1," = vec4(xTexelC").concat(x+1,".xy, final.xy);\n "))):(p+="\n if(xC >= 0 && xC < inDims[1] && xTexelC".concat(x,"Ready == 0) {\n xTexelC").concat(x," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(x,".zw = vec2(0.0);\n }\n xTexelC").concat(x,"Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(x+1,"Ready == 0) {\n xTexelC").concat(x+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(x+1,".zw = vec2(0.);\n }\n xTexelC").concat(x+1,"Ready = 1;\n }\n\n xC").concat(x," = vec4(\n xTexelC").concat(x,".xy, xTexelC").concat(x+1,".xy);\n "),x+1= 0) {\n // Use custom imod instead mod. On Intel GPU, mod may generate\n // unexpected value.\n // https://github.com/tensorflow/tfjs/issues/5447\n offsetX = imod(blockIndex, outWidth) * stride[1] - pad[1];\n d1 = offsetX + dilation[1] * (imod(pos, itemsPerBlockRow) /\n inChannels);\n\n if(d1 < inputShape[").concat(i,"] && d1 >= 0) {\n\n ch = imod(pos, inChannels);\n\n if (").concat(r,") {\n innerDims = vec2(d1, ch);\n result[").concat(2*u+l,"] = getChannel(\n getA(rc.x, d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result[").concat(2*u+l,"] = getChannel(\n getA(rc.x, ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ");this.userCode="\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n ".concat(s,"\n\n ").concat(a.output," = result;\n }\n ")};function oo(e,n){var t=e.length;return t>=3?s(s([],c(e.slice(0,-3)),!1),n?[e[t-3]*e[t-2],e[t-1]]:[e[t-3],e[t-2]*e[t-1]],!1):!n&&1===t&&e[0]>1?[e[0],1]:null}function io(e){var t,a,r,o=e.x,c=e.filter,s=e.convInfo,u=e.backend,l=e.bias,d=void 0===l?null:l,p=e.preluActivationWeights,h=void 0===p?null:p,f=e.leakyreluAlpha,x=void 0===f?0:f,v=e.activation,g=void 0===v?null:v,m=o.shape,b=u.texData.get(o.dataId),C=s.inChannels,y=m[0]*m[1]*m[2],w=s.outChannels,I="channelsLast"===s.dataFormat,S=[];if(null!=h&&null!=(k=oo(h.shape,I))&&(h=ya({inputs:{x:h},backend:u,attrs:{shape:k}}),S.push(h)),null!=d&&null!=(k=oo(d.shape,I))&&(d=ya({inputs:{x:d},backend:u,attrs:{shape:k}}),S.push(d)),(1!==y&&1!==w||!(C>1e3))&&b.isPacked&&I&&null!=b.texture&&m[2]%2!=0&&n.util.arraysEqual(b.shape.slice(-3),m.slice(-3))){var k=m[0]*m[1]*(m[2]+1),R={dataId:o.dataId,shape:[1,k,s.inChannels],dtype:o.dtype},T=b.shape;b.shape=b.shape.slice(),b.shape[b.shape.length-2]++,n.util.assert(ee(b.shape,R.shape),(function(){return"packed reshape ".concat(b.shape," to ").concat(R.shape," isn't free")}));var N=ya({inputs:{x:c},backend:u,attrs:{shape:[1,s.inChannels,s.outChannels]}});S.push(N);var E=Fa({a:R,b:N,backend:u,transposeA:!1,transposeB:!1,bias:d,activation:g,preluActivationWeights:h,leakyreluAlpha:x}),A=u.texData.get(E.dataId);n.util.assert(A.isPacked,(function(){return"batchMatMul result is expected to be packed"})),b.shape=T,A.shape=s.outShape,(r=na({inputs:{x:E},backend:u})).shape=s.outShape,S.push(E)}else{var _=s.outHeight*s.outWidth,O=ya({inputs:{x:o},backend:u,attrs:{shape:I?[s.batchSize,_,s.inChannels]:[s.batchSize,s.inChannels,_]}}),F=(N=ya({inputs:{x:c},backend:u,attrs:{shape:[1,s.inChannels,s.outChannels]}}),Fa({a:I?O:N,b:I?N:O,transposeA:!I,transposeB:!1,backend:u,bias:d,activation:g,preluActivationWeights:h,leakyreluAlpha:x}));r=ya({inputs:{x:F},backend:u,attrs:{shape:s.outShape}}),S.push(O),S.push(N),S.push(F)}try{for(var D=i(S),P=D.next();!P.done;P=D.next()){var L=P.value;u.disposeIntermediateTensorInfo(L)}}catch(e){t={error:e}}finally{try{P&&!P.done&&(a=D.return)&&a.call(D)}finally{if(t)throw t.error}}return r}function co(e){var t,a,r,o=e.x,c=e.filter,s=e.convInfo,u=e.backend,l=e.bias,d=void 0===l?null:l,p=e.preluActivationWeights,h=void 0===p?null:p,f=e.leakyreluAlpha,x=void 0===f?0:f,v=e.activation,g=void 0===v?null:v,m=s.filterWidth,b=s.filterHeight,C=s.inChannels,y=s.outWidth,w=s.outHeight,I="channelsLast"===s.dataFormat,S=m*b*C,k=w*y,R=[s.batchSize,S,k],T=[];null!=h&&null!=(r=oo(h.shape,I))&&(h=ya({inputs:{x:h},backend:u,attrs:{shape:r}}),T.push(h)),null!=d&&null!=(r=oo(d.shape,I))&&(d=ya({inputs:{x:d},backend:u,attrs:{shape:r}}),T.push(d));var N=ya({inputs:{x:c},backend:u,attrs:{shape:[1,S,n.util.sizeFromShape(c.shape)/S]}});T.push(N);var E=new ro(R,s),A=[o.shape,[s.padInfo.top,s.padInfo.left],[s.strideHeight,s.strideWidth],[s.dilationHeight,s.dilationWidth],[s.inChannels],[s.filterWidth*s.inChannels],[s.outWidth]],_=u.runWebGLProgram(E,[o],"float32",A),O=ya({inputs:{x:_},backend:u,attrs:{shape:R}});T.push(_),T.push(O);var F=null!=d,D=null!=h,P="leakyrelu"===g,L=g?ha(g,!0):null,B=new fa(I?O.shape:N.shape,I?N.shape:O.shape,I?[s.batchSize,k,s.outChannels]:[s.batchSize,s.outChannels,k],!0,!1,F,L,D,P),V=I?[O,N]:[N,O];if(d&&V.push(d),D&&V.push(h),P){var W=u.makeTensorInfo([],"float32",n.util.createScalarValue(x,"float32"));V.push(W),T.push(W)}var U=u.runWebGLProgram(B,V,"float32"),M=ya({inputs:{x:U},backend:u,attrs:{shape:s.outShape}});T.push(U);try{for(var G=i(T),z=G.next();!z.done;z=G.next()){var X=z.value;u.disposeIntermediateTensorInfo(X)}}catch(e){t={error:e}}finally{try{z&&!z.done&&(a=G.return)&&a.call(G)}finally{if(t)throw t.error}}return M}var so,uo={kernelName:n.Conv2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=o.strides,u=o.pad,l=o.dataFormat,d=o.dilations,p=o.dimRoundingMode,h=n.backend_util.convertConv2DDataFormat(l),f=n.backend_util.computeConv2DInfo(i.shape,c.shape,s,d,u,p,!1,h);if(1!==f.filterHeight||1!==f.filterWidth||1!==f.dilationHeight||1!==f.dilationWidth||1!==f.strideHeight||1!==f.strideWidth||"SAME"!==f.padInfo.type&&"VALID"!==f.padInfo.type)if(f.strideWidth<=2&&"channelsLast"===h&&n.env().getBool("WEBGL_EXP_CONV")){var x=new ao(f),v=[[f.padInfo.top,f.padInfo.left],[f.strideHeight,f.strideWidth],[f.dilationHeight,f.dilationWidth],[f.inHeight,f.inWidth]];t=r.runWebGLProgram(x,[i,c],"float32",v)}else n.env().getBool("WEBGL_CONV_IM2COL")?t=co({x:i,filter:c,convInfo:f,backend:r}):(x=new no(f),t=r.runWebGLProgram(x,[i,c],"float32"));else t=io({x:i,filter:c,convInfo:f,backend:r});var g=ya({inputs:{x:t},backend:r,attrs:{shape:f.outShape}});return r.disposeIntermediateTensorInfo(t),g}},lo=function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var n=e.strideHeight,t=e.strideWidth,a=e.padInfo.top,r=e.padInfo.left,o="channelsLast"===e.dataFormat;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int wR = coords.x;\n int wC = coords.y;\n int d1 = coords.z;\n int d2 = coords.w;\n\n // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int b = 0; b < ".concat(e.batchSize,"; b++) {\n for (int yR = 0; yR < ").concat(e.outHeight,"; yR++) {\n int xR = wR + yR * ").concat(n," - ").concat(a,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(t," - ").concat(r,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n ").concat(o?"float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);":"float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);","\n }\n }\n }\n setOutput(dotProd);\n }\n ")},po=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o="channelsLast"===e.dataFormat,i=n-1-e.padInfo.top,c=t-1-e.padInfo.left,s=o?1:2,u=o?2:3,l=o?3:1;this.userCode="\n const ivec2 pads = ivec2(".concat(i,", ").concat(c,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[").concat(l,"];\n\n ivec2 dyCorner = ivec2(coords[").concat(s,"], coords[").concat(u,"]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(t," - 1 - wC;\n\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2++) {\n\n if (").concat(o,") {\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n } else {\n float xValue = getDy(batch, d2, idyR, idyC);\n float wValue = getW(wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n ")},ho=function(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;var n=e.strideDepth,t=e.strideHeight,a=e.strideWidth,r=e.padInfo.front,o=e.padInfo.top,i=e.padInfo.left;this.userCode="\n void main() {\n ivec5 coords = getOutputCoords();\n int wF = coords.x;\n int wR = coords.y;\n int wC = coords.z;\n int d1 = coords.w;\n int d2 = coords.u;\n\n float dotProd = 0.0;\n\n for (int b = 0; b < ".concat(e.batchSize,"; b++) {\n for (int yF = 0; yF < ").concat(e.outDepth,"; yF++) {\n int xF = wF + yF * ").concat(n," - ").concat(r,";\n\n if (xF < 0 || xF >= ").concat(e.inDepth,") {\n continue;\n }\n\n for (int yR = 0; yR < ").concat(e.outHeight,"; yR++) {\n int xR = wR + yR * ").concat(t," - ").concat(o,";\n\n if (xR < 0 || xR >= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(a," - ").concat(i,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float dyValue = getDy(b, yF, yR, yC, d2);\n float xValue = getX(b, xF, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},fo=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterDepth,t=e.filterHeight,a=e.filterWidth,r=e.strideDepth,o=e.strideHeight,i=e.strideWidth,c=n-1-e.padInfo.front,s=t-1-e.padInfo.top,u=a-1-e.padInfo.left;this.userCode="\n const ivec3 pads = ivec3(".concat(c,", ").concat(s,", ").concat(u,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.u;\n\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyFCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n float dotProd = 0.0;\n for (int wF = 0; wF < ").concat(n,"; wF++) {\n float dyF = float(dyFCorner + wF) / ").concat(r,".0;\n\n if (dyF < 0.0 || dyF >= ").concat(e.outDepth,".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = ").concat(n," - 1 - wF;\n\n for (int wR = 0; wR < ").concat(t,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(o,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(t," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(a,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(i,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(a," - 1 - wC;\n\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2++) {\n float xValue = getDy(batch, idyF, idyR, idyC, d2);\n float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);\n dotProd += xValue * wValue;\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ")},xo={kernelName:n.Conv2DBackpropFilter,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.pad,u=r.dataFormat,l=r.dimRoundingMode,d=r.filterShape,p=n.backend_util.convertConv2DDataFormat(u),h=n.backend_util.computeConv2DInfo(o.shape,d,c,1,s,l,!1,p),f=new lo(h);return a.runWebGLProgram(f,[o,i],"float32")}},vo=function(e){this.variableNames=["dy","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"strides",type:"vec2"}],this.outputShape=e.inShape,this.enableShapeUniforms=De(this.outputShape.length);var n=e.filterHeight,t=e.filterWidth,a=n-1-e.padInfo.top,r=t-1-e.padInfo.left;this.userCode="\n const ivec2 pads = ivec2(".concat(a,", ").concat(r,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n\n ivec2 dyCorner = ivec2(coords[1], coords[2]) - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n vec4 result = vec4(0.);\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / strides[0];\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n int wCPerm = ").concat(t," - 1 - wC;\n\n float dyC = float(dyCCorner + wC) / strides[1];\n bool idyCVal = (dyC >= 0.0) && (dyC < ").concat(e.outWidth,".0)\n && (fract(dyC) == 0.0);\n int idyC = int(dyC);\n\n float dyC2 = float(dyCCorner + wC + 1) / strides[1];\n bool idyCVal2 = (dyC2 >= 0.0) && (dyC2 < ").concat(e.outWidth,".0)\n && (fract(dyC2) == 0.0);\n int idyC2 = int(dyC2);\n\n if (idyCVal && idyCVal2) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec4 dySample2 = (idyC / 2 == idyC2 / 2) ?\n dySample : getDy(batch, idyR, idyC2, d2);\n\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n\n dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample2.xy : dySample2.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC, d2);\n vec2 dyValue = mod(float(idyC), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.xy += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n } else if (idyCVal2) {\n for (int d2 = 0; d2 < ").concat(e.outChannels,"; d2 += 2) {\n vec4 wValue = getW(wRPerm, wCPerm, d1, d2);\n vec4 dySample = getDy(batch, idyR, idyC2, d2);\n vec2 dyValue = mod(float(idyC2), 2.) == 0. ?\n dySample.xy : dySample.zw;\n result.zw += vec2(dot(dyValue, wValue.xy),\n dot(dyValue, wValue.zw));\n }\n }\n }\n }\n setOutput(result);\n }\n ")},go={kernelName:n.Conv2DBackpropInput,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.inputShape,s=r.strides,u=r.pad,l=r.dataFormat,d=r.dimRoundingMode,p=n.backend_util.convertConv2DDataFormat(l),h=n.backend_util.computeConv2DInfo(c,i.shape,s,1,u,d,!1,p);if(n.env().getBool("WEBGL_PACK_CONV2DTRANSPOSE")&&"channelsLast"===p){var f=[[h.strideHeight,h.strideWidth]],x=new vo(h);return a.runWebGLProgram(x,[o,i],"float32",f)}return x=new po(h),a.runWebGLProgram(x,[o,i],"float32")}},mo={kernelName:n.Conv3D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.filter,c=r.strides,s=r.pad,u=r.dilations,l=n.backend_util.computeConv3DInfo(o.shape,i.shape,c,u,s),d=new to(l);return a.runWebGLProgram(d,[o,i],"float32")}},bo={kernelName:n.Conv3DBackpropFilterV2,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.pad,u=r.filterShape,l=n.backend_util.computeConv3DInfo(o.shape,u,c,1,s),d=new ho(l);return a.runWebGLProgram(d,[o,i],"float32")}},Co={kernelName:n.Conv3DBackpropInputV2,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.pad,s=r.strides,u=r.inputShape,l=n.backend_util.computeConv3DInfo(u,i.shape,s,1,c),d=new fo(l);return a.runWebGLProgram(d,[o,i],"float32")}},yo=da({opSnippet:"if (isnan(x)) return x;\n return cos(x);\n",packedOpSnippet:"\n vec4 result = cos(x);\n bvec4 isNaN = isnan(x);\n ".concat($t,"\n return result;\n")}),wo={kernelName:n.Cos,backendName:"webgl",kernelFunc:yo},Io=da({opSnippet:"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n"}),So={kernelName:n.Cosh,backendName:"webgl",kernelFunc:Io},ko=function(e,n,t,a,r){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3],d=c(n,1)[0],p=c(t,2),h=p[0],f=p[1];this.outputShape=[d,h,f,l];var x="bilinear"===a?1:0,v=c(["".concat(s-1,".0"),"".concat(u-1,".0")],2),g=v[0],m=v[1],b=c(h>1?["".concat((s-1)/(h-1)),"(y2-y1) * height_ratio","y1*".concat(g," + float(y)*(height_scale)")]:["0.0","0.0","0.5 * (y1+y2) * ".concat(g)],3),C=b[0],y=b[1],w=b[2],I=c(f>1?["".concat((u-1)/(f-1)),"(x2-x1) * width_ratio","x1*".concat(m," + float(x)*(width_scale)")]:["0.0","0.0","0.5 * (x1+x2) * ".concat(m)],3),S=I[0],k=I[1],R=I[2];this.userCode="\n const float height_ratio = float(".concat(C,");\n const float width_ratio = float(").concat(S,");\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int y = coords[1];\n int x = coords[2];\n int d = coords[3];\n\n // get box vals\n float y1 = getBoxes(b,0);\n float x1 = getBoxes(b,1);\n float y2 = getBoxes(b,2);\n float x2 = getBoxes(b,3);\n\n // get image in batch index\n int bInd = round(getBoxInd(b));\n if(bInd < 0 || bInd >= ").concat(i,") {\n return;\n }\n\n float height_scale = ").concat(y,";\n float width_scale = ").concat(k,";\n\n float in_y = ").concat(w,";\n if( in_y < 0.0 || in_y > ").concat(g," ) {\n setOutput(float(").concat(r,"));\n return;\n }\n float in_x = ").concat(R,";\n if( in_x < 0.0 || in_x > ").concat(m," ) {\n setOutput(float(").concat(r,"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if(").concat(x," == 1) {\n // Compute the four integer indices.\n ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);\n ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));\n\n float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);\n float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);\n float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);\n float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);\n\n vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);\n\n float top = topLeft + (topRight - topLeft) * fracCR.x;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;\n float newValue = top + (bottom - top) * fracCR.y;\n setOutput(newValue);\n } else {\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestCR = ivec2(floor(\n sourceFracIndexCR + vec2(0.5,0.5)));\n float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);\n setOutput(newValue);\n }\n }\n ")},Ro={kernelName:n.CropAndResize,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.image,o=n.boxes,i=n.boxInd,c=a.cropSize,s=a.method,u=a.extrapolationValue,l=new ko(r.shape,o.shape,c,s,u);return t.runWebGLProgram(l,[r,o,i],"float32")}};!function(e){e.Prod="*",e.Sum="+"}(so||(so={}));var To=function(e,n,t,a){this.op=e,this.outputShape=n,this.variableNames=["x"],this.customUniforms=[{name:"index",type:"float"}];var r=this.outputShape.length,o=this.op===so.Prod?"1.0":"0.0",i=t?o:"getX(".concat(No(r,"coords",this.op),")"),c=this.outputShape[this.outputShape.length-1],s="",u="";t?(s=a?"end != ".concat(c-1):"end != 0",u=a?"end + 1":"end - 1"):(s=a?"end + pow2 < ".concat(c):"end >= pow2",u=a?"end + pow2":"end - pow2"),this.userCode="\n void main() {\n ".concat(Ne(r)," coords = getOutputCoords();\n int end = ").concat(Eo(r,"coords",this.op),";\n float val = ").concat(i,";\n int pow2 = int(pow(2.0, index));\n if (").concat(s,") {\n int idx = ").concat(u,";\n ").concat(Eo(r,"coords",this.op)," = idx;\n val ").concat(this.op,"= getX(").concat(No(r,"coords",this.op),");\n }\n setOutput(val);\n }\n ")};function No(e,n,t){if(1===e)return"".concat(n);if(2===e)return"".concat(n,".x, ").concat(n,".y");if(3===e)return"".concat(n,".x, ").concat(n,".y, ").concat(n,".z");if(4===e)return"".concat(n,".x, ").concat(n,".y, ").concat(n,".z, ").concat(n,".w");throw new Error("Cumulative ".concat(t," for rank ").concat(e," is not yet supported"))}function Eo(e,n,t){if(1===e)return"".concat(n);if(2===e)return"".concat(n,".y");if(3===e)return"".concat(n,".z");if(4===e)return"".concat(n,".w");throw new Error("Cumulative ".concat(t," for rank ").concat(e," is not yet supported"))}function Ao(e,t,a,r,o,i){var c=t.shape.length,s=n.backend_util.getAxesPermutation([r],c),u=t;null!=s&&(u=_a({inputs:{x:t},backend:a,attrs:{perm:s}}));var l=n.backend_util.getInnerMostAxes(1,c)[0];if(l!==c-1)throw new Error("WebGL cumprod shader expects an inner-most axis=".concat(t.shape.length-1," ")+"but got axis=".concat(r));for(var d=u.shape[l],p=na({inputs:{x:u},backend:a}),h=0;h<=Math.ceil(Math.log2(d))-1;h++){var f=new To(e,u.shape,!1,i),x=[[h]],v=p;p=a.runWebGLProgram(f,[p],p.dtype,x),a.disposeIntermediateTensorInfo(v)}if(o&&(f=new To(e,u.shape,o,i),v=p,p=a.runWebGLProgram(f,[p],p.dtype),a.disposeIntermediateTensorInfo(v)),null!=s){var g=_a({inputs:{x:p},backend:a,attrs:{perm:n.backend_util.getUndoAxesPermutation(s)}});return a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(u),g}return p}var _o={kernelName:n.Cumprod,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.axis,i=a.exclusive,c=a.reverse;return Ao(so.Prod,r,t,o,i,c)}},Oo={kernelName:n.Cumsum,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.axis,i=a.exclusive,c=a.reverse;return Ao(so.Sum,r,t,o,i,c)}},Fo={kernelName:n.DenseBincount,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.weights,i=a.size,c=a.binaryOutput;if(1===r.shape.length){var s=t.readSync(r.dataId),u=t.readSync(o.dataId),l=qn(s,u,o.dtype,o.shape,i);return t.makeTensorInfo([i],o.dtype,l)}if(2===r.shape.length){var d=t.bufferSync(r),p=t.bufferSync(o),h=Yn(d,p,i,c);return t.makeTensorInfo(h.shape,o.dtype,h.values)}throw new Error("Error in denseBincount: input must be at most rank 2, but got rank"+"".concat(r.shape.length,"."))}},Do=function(){function e(e,n,t){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=n,this.dataFormat=t,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = ".concat(this.getHeightCoordString(),";\n int w = ").concat(this.getWidthCoordString(),";\n int d = ").concat(this.getDepthCoordString(),";\n\n int in_h = h / ").concat(n,";\n int offset_h = imod(h, ").concat(n,");\n int in_w = w / ").concat(n,";\n int offset_w = imod(w, ").concat(n,");\n int offset_d = (offset_h * ").concat(n," + offset_w) *\n ").concat(this.getOutputDepthSize(),";\n int in_d = d + offset_d;\n\n float result = ").concat(this.getInputSamplingString(),";\n setOutput(result);\n }\n ")}return e.prototype.getHeightCoordString=function(){return"NHWC"===this.dataFormat?"coords[1]":"coords[2]"},e.prototype.getWidthCoordString=function(){return"NHWC"===this.dataFormat?"coords[2]":"coords[3]"},e.prototype.getDepthCoordString=function(){return"NHWC"===this.dataFormat?"coords[3]":"coords[1]"},e.prototype.getOutputDepthSize=function(){return"NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},e.prototype.getInputSamplingString=function(){return"NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},e}(),Po={kernelName:n.DepthToSpace,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=a.blockSize,i=a.dataFormat,c=r.shape[0],s=("NHWC"===i?r.shape[1]:r.shape[2])*o,u=("NHWC"===i?r.shape[2]:r.shape[3])*o,l=("NHWC"===i?r.shape[3]:r.shape[1])/(o*o),d=new Do("NHWC"===i?[c,s,u,l]:[c,l,s,u],o,i);return t.runWebGLProgram(d,[r],r.dtype)}},Lo=function(e,n,t,a,r){void 0===n&&(n=!1),void 0===t&&(t=null),void 0===a&&(a=!1),void 0===r&&(r=!1),this.variableNames=["x","W"],this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);var o=e.filterHeight,i=e.filterWidth,c=e.outChannels/e.inChannels,s="",u="";t&&(s=a?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n ".concat(t,"\n }"):r?"float activation(float a) {\n float b = getLeakyreluAlphaAtOutCoords();\n ".concat(t,"\n }"):"\n float activation(float x) {\n ".concat(t,"\n }\n "),u="result = activation(result);");var l=n?"result += getBiasAtOutCoords();":"";n&&this.variableNames.push("bias"),a&&this.variableNames.push("preluActivationWeights"),r&&this.variableNames.push("leakyreluAlpha"),this.userCode="\n ".concat(s,"\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n ivec2 xRCCorner = coords.yz * strides - pads;\n int d2 = coords.w;\n int d1 = d2 / ").concat(c,";\n int q = d2 - d1 * ").concat(c,";\n\n int xRCorner = xRCCorner.x;\n int xCCorner = xRCCorner.y;\n\n // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.\n for (int wR = 0; wR < ").concat(o,"; wR++) {\n int xR = xRCorner + wR * dilations[0];\n\n if (xR < 0 || xR >= inDims[0]) {\n continue;\n }\n\n for (int wC = 0; wC < ").concat(i,"; wC++) {\n int xC = xCCorner + wC * dilations[1];\n\n if (xC < 0 || xC >= inDims[1]) {\n continue;\n }\n\n float xVal = getX(batch, xR, xC, d1);\n float wVal = getW(wR, wC, d1, q);\n dotProd += xVal * wVal;\n }\n }\n\n float result = dotProd;\n ").concat(l,"\n ").concat(u,"\n setOutput(result);\n }\n ")},Bo=function(e,t,a,r,o){void 0===t&&(t=!1),void 0===a&&(a=null),void 0===r&&(r=!1),void 0===o&&(o=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"pads",type:"ivec2"},{name:"strides",type:"ivec2"},{name:"dilations",type:"ivec2"},{name:"inDims",type:"ivec2"}],this.outputShape=e.outShape,this.enableShapeUniforms=De(this.outputShape.length);for(var i=e.outChannels/e.inChannels,c=e.padInfo.left,s=e.strideWidth,u=e.dilationWidth,l=e.filterHeight,d=e.filterWidth,p=d,h="\n int xR; int xC; int xCOffset;\n vec4 wTexel; vec4 previous; vec4 final;",f=0;f=0 && xR < inDims[0]) {\n ";for(var x=0;x<(p+1)/2;x++){var v=2*x;if(h+="\n xC = xCCorner + ".concat(v*u,";\n "),1===s){if(v= 0 && xCOffset < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n "),h+=1===u&&v>0?"\n xC".concat(v," = vec4(xTexelC").concat(v-2,".zw, xTexelC").concat(v,".xy);\n "):"\n xCOffset = xC + 1 - 2;\n\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n previous.zw = vec2(0.0);\n }\n\n xC".concat(v," = vec4(previous.zw, xTexelC").concat(v,".xy);\n } else {\n xC").concat(v," = vec4(0.0, 0.0, xTexelC").concat(v,".xy);\n }\n ")):h+="\n if (xC >= 0 && xC < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n xC").concat(v," = xTexelC").concat(v,";\n "),v+1= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n "),h+=u>1?"\n xCOffset -= 2;\n if (xCOffset >= 0 && xCOffset < inDims[1]) {\n previous = getX(batch, xR, xCOffset, d1);\n xC".concat(v+1," = vec4(previous.zw, xTexelC").concat(v+1,".xy);\n } else {\n xC").concat(v+1," = vec4(0.0, 0.0, xTexelC").concat(v+1,".xy);\n }\n "):"\n xC".concat(v+1," = vec4(xTexelC").concat(v,".zw, xTexelC").concat(v+1,".xy);\n ")):h+=1===g?"\n xC".concat(v+1," = xTexelC").concat(v,";\n "):"\n xCOffset = xC + ".concat(g,";\n\n if (xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v+1," = xTexelC").concat(v+1,";\n ")}}else v= 0 && xCOffset < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xCOffset, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n if(xC + 1 >= 0 && xC + 1 < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xC + 1, d1);\n // Need to manually clear unused channels in case\n // we're reading from recycled texture.\n if (xC + 2 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.0);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v," = vec4(xTexelC").concat(v,".zw, xTexelC").concat(v+1,".zw);\n "),v+1= 0 && xCOffset < inDims[1]) {\n final = getX(batch, xR, xCOffset, d1);\n }\n xC".concat(v+1," = vec4(xTexelC").concat(v+1,".xy, final.xy);\n "))):(h+="\n if(xC >= 0 && xC < inDims[1] && xTexelC".concat(v,"Ready == 0) {\n xTexelC").concat(v," = getX(batch, xR, xC, d1);\n if (xC + 1 >= inDims[1]) {\n xTexelC").concat(v,".zw = vec2(0.0);\n }\n xTexelC").concat(v,"Ready = 1;\n }\n\n xCOffset = xC + strides[1];\n if(xCOffset >= 0 && xCOffset < inDims[1] && xTexelC").concat(v+1,"Ready == 0) {\n xTexelC").concat(v+1," = getX(batch, xR, xCOffset, d1);\n if (xCOffset + 1 >= inDims[1]) {\n xTexelC").concat(v+1,".zw = vec2(0.);\n }\n xTexelC").concat(v+1,"Ready = 1;\n }\n\n xC").concat(v," = vec4(\n xTexelC").concat(v,".xy, xTexelC").concat(v+1,".xy);\n "),v+1= ").concat(e.inHeight,") {\n continue;\n }\n\n for (int yC = 0; yC < ").concat(e.outWidth,"; yC++) {\n int xC = wC + yC * ").concat(t," - ").concat(r,";\n\n if (xC < 0 || xC >= ").concat(e.inWidth,") {\n continue;\n }\n\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n }\n }\n }\n setOutput(dotProd);\n }\n ")},Uo=function(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;var n=e.filterHeight,t=e.filterWidth,a=e.strideHeight,r=e.strideWidth,o=n-1-e.padInfo.top,i=t-1-e.padInfo.left,c=e.outChannels/e.inChannels;this.userCode="\n const ivec2 pads = ivec2(".concat(o,", ").concat(i,");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords[3];\n ivec2 dyCorner = coords.yz - pads;\n int dyRCorner = dyCorner.x;\n int dyCCorner = dyCorner.y;\n\n float dotProd = 0.0;\n\n for (int wR = 0; wR < ").concat(n,"; wR++) {\n float dyR = float(dyRCorner + wR) / ").concat(a,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = ").concat(n," - 1 - wR;\n\n for (int wC = 0; wC < ").concat(t,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(r,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = ").concat(t," - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < ").concat(c,"; dm++) {\n int d2 = d1 * ").concat(c," + dm;\n float xValue = getDy(batch, idyR, idyC, d2);\n float wValue = getW(wRPerm, wCPerm, d1, dm);\n dotProd += xValue * wValue;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},Mo={kernelName:n.DepthwiseConv2dNativeBackpropFilter,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.dy,c=r.strides,s=r.dilations,u=r.pad,l=r.dimRoundingMode,d=r.filterShape,p=n.backend_util.computeConv2DInfo(o.shape,d,c,s,u,l,!0),h=new Wo(p);return a.runWebGLProgram(h,[o,i],"float32")}},Go={kernelName:n.DepthwiseConv2dNativeBackpropInput,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.filter,c=r.strides,s=r.dilations,u=r.pad,l=r.dimRoundingMode,d=r.inputShape,p=n.backend_util.computeConv2DInfo(d,i.shape,c,s,u,l,!0),h=new Uo(p);return a.runWebGLProgram(h,[o,i],"float32")}},zo=function(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;\n setOutput(val);\n }\n "},Xo={kernelName:n.Diag,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.x,o=s(s([],c(r.shape),!1),c(r.shape),!1),i=n.util.sizeFromShape(r.shape),u=ya({inputs:{x:r},backend:a,attrs:{shape:[i]}}),l=new zo(i),d=a.runWebGLProgram(l,[u],u.dtype),p=ya({inputs:{x:d},backend:a,attrs:{shape:o}});return a.disposeIntermediateTensorInfo(u),a.disposeIntermediateTensorInfo(d),p}},Ho=function(e){this.variableNames=["x","W"],this.outputShape=e.outShape;var n=e.inHeight,t=e.inWidth,a=e.padInfo,r=e.strideHeight,o=e.strideWidth,i=e.filterHeight,c=e.filterWidth,s=e.dilationHeight,u=e.dilationWidth,l=a.top,d=a.left;this.userCode="\n const ivec2 strides = ivec2(".concat(r,", ").concat(o,");\n const ivec2 pads = ivec2(").concat(l,", ").concat(d,");\n const float neg_infinity = -3.4e38;\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords.x;\n int d1 = coords.w;\n ivec2 outTopLeftCorner =\n coords.yz * strides - pads;\n int hBeg = outTopLeftCorner.x;\n int wBeg = outTopLeftCorner.y;\n\n float curVal = neg_infinity;\n for (int h = 0; h < ").concat(i,"; h++) {\n int hIn = hBeg + h * ").concat(s,";\n\n if (hIn >= 0 && hIn < ").concat(n,") {\n for (int w = 0; w < ").concat(c,"; w++) {\n int wIn = wBeg + w * ").concat(u,";\n\n if (wIn >= 0 && wIn < ").concat(t,") {\n float xVal = getX(batch, hIn, wIn, d1);\n float wVal = getW(h, w, d1);\n\n float val = xVal + wVal;\n if (val > curVal) {\n curVal = val;\n }\n }\n }\n }\n }\n\n float result = curVal;\n setOutput(result);\n }\n ")},jo={kernelName:n.Dilation2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=o.strides,u=o.pad,l=o.dilations,d=n.backend_util.computeDilation2DInfo(i.shape,c.shape,s,u,"NHWC",l),p=new Ho(d),h=ya({inputs:{x:t=r.runWebGLProgram(p,[i,c],"float32")},backend:r,attrs:{shape:d.outShape}});return r.disposeIntermediateTensorInfo(t),h}},Ko={kernelName:n.Einsum,backendName:"webgl",kernelFunc:function(e){var t,a,r,o,c=e.inputs,s=e.backend,u=e.attrs.equation,l=c,d=n.backend_util.decodeEinsumEquation(u,l.length),p=d.allDims,h=d.summedDims,f=d.idDims;n.backend_util.checkEinsumDimSizes(p.length,f,l);for(var x=n.backend_util.getEinsumComputePath(h,f),v=x.path,g=x.steps,m=g.length,b=null,C=p.length,y=[],w=0;w=0&&(b=Ea({inputs:{x:b},backend:s,attrs:{axis:v[w]-(p.length-C),keepDims:!1}}),y.push(b)),C--)}try{for(var O=i(y),F=O.next();!F.done;F=O.next()){var D=F.value;D!==b&&s.disposeIntermediateTensorInfo(D)}}catch(e){r={error:e}}finally{try{F&&!F.done&&(o=O.return)&&o.call(O)}finally{if(r)throw r.error}}return b}},qo=da({opSnippet:"return (x >= 0.0) ? x : (exp(x) - 1.0);",packedOpSnippet:"\n vec4 result;\n\n result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);\n result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);\n result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);\n result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);\n\n return result;\n"}),Yo={kernelName:n.Elu,backendName:"webgl",kernelFunc:qo},Qo={kernelName:n.EluGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.dy,o=t.y,i=n.env().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new ea("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",r.shape,o.shape):new Jt("return (b >= 0.0) ? a : a * (b + 1.0);",r.shape,o.shape);return a.runWebGLProgram(i,[r,o],r.dtype)}},Zo=pa({opSnippet:"return float(a == b);",packedOpSnippet:"\n return vec4(equal(a, b));\n",dtype:"bool",cpuKernelImpl:$n}),Jo={kernelName:n.Equal,backendName:"webgl",kernelFunc:Zo},$o=da({opSnippet:'\n // Error function is calculated approximately with elementary function.\n // See "Handbook of Mathematical Functions with Formulas,\n // Graphs, and Mathematical Tables", Abramowitz and Stegun.\n float p = '.concat(n.backend_util.ERF_P,";\n float a1 = ").concat(n.backend_util.ERF_A1,";\n float a2 = ").concat(n.backend_util.ERF_A2,";\n float a3 = ").concat(n.backend_util.ERF_A3,";\n float a4 = ").concat(n.backend_util.ERF_A4,";\n float a5 = ").concat(n.backend_util.ERF_A5,";\n\n float sign = sign(x);\n x = abs(x);\n float t = 1.0 / (1.0 + p * x);\n return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));\n")}),ei={kernelName:n.Erf,backendName:"webgl",kernelFunc:$o},ni=da({opSnippet:"if (isnan(x)) return x;\n return exp(x);\n",packedOpSnippet:"\n vec4 result = exp(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:et,dtype:"float32"}),ti={kernelName:n.Exp,backendName:"webgl",kernelFunc:ni};function ai(e){var t=e.inputs,a=e.attrs,r=e.backend,o=a.dim,i=t.input,c=i.shape.length,s=i.shape.slice(),u=o;return o<0&&(n.util.assert(-(c+1)<=o,(function(){return"Axis must be in the interval [".concat(-(c+1),", ").concat(c,"]")})),u=c+o+1),s.splice(u,0,1),ya({inputs:{x:i},backend:r,attrs:{shape:s}})}var ri={kernelName:n.ExpandDims,backendName:"webgl",kernelFunc:ai},oi="return exp(x) - 1.0;",ii=da({opSnippet:oi,packedOpSnippet:oi,cpuKernelImpl:nt}),ci={kernelName:n.Expm1,backendName:"webgl",kernelFunc:ii},si=function(e,n,t){this.variableNames=["real","imag"];var a=n[1];this.outputShape=n;var r,o=t?"2.0 * ".concat(Math.PI):"-2.0 * ".concat(Math.PI),i=t?"".concat(a,".0"):"1.0";if("real"===e)r="return real * expR - imag * expI;";else{if("imag"!==e)throw new Error('FFT component must be either "real" or "imag", got '.concat(e,"."));r="return real * expI + imag * expR;"}this.userCode="\n const float exponentMultiplier = ".concat(o,";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n ").concat(r,"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float(").concat(a,");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < ").concat(a,"; i++) {\n // x = (-2|2 * PI / N) * index * i;\n float x = exponentMultiplierTimesIndexRatio * float(i);\n float expR = cos(x);\n float expI = sin(x);\n float real = getReal(batch, i);\n float imag = getImag(batch, i);\n\n result +=\n unaryOpComplex(real, expR, imag, expI) / ").concat(i,";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n ")};function ui(e,t,a){var r=a.texData.get(e.dataId),o=n.util.sizeFromShape(e.shape),i=e.shape[e.shape.length-1],c=ya({inputs:{x:e},backend:a,attrs:{shape:[o/i,i]}}),s=c.shape,u=new si("real",s,t),l=new si("imag",s,t),d=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:s},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:s}],p=a.runWebGLProgram(u,d,"float32"),h=a.runWebGLProgram(l,d,"float32"),f=aa({inputs:{real:p,imag:h},backend:a});a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(h);var x=ya({inputs:{x:f},backend:a,attrs:{shape:e.shape}});return a.disposeIntermediateTensorInfo(c),a.disposeIntermediateTensorInfo(f),x}var li={kernelName:n.FFT,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend;return ui(n.input,!1,t)}},di=function(e,n){this.outputShape=[],this.customUniforms=[{name:"value",type:"float"}],this.variableNames=["x"],this.outputShape=e,this.userCode="\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n "};function pi(e){var t=e.backend,a=e.attrs,r=a.shape,o=a.value,i=a.dtype;if("string"===(i=i||n.util.inferDtype(o))){var c=n.util.getArrayFromDType(i,n.util.sizeFromShape(r));return c.fill(o),t.makeTensorInfo(r,i,c)}var s=new di(r,o),u=[[o]];return t.runWebGLProgram(s,[],i,u)}var hi,fi={kernelName:n.Fill,backendName:"webgl",kernelFunc:pi},xi=function(e){this.variableNames=["Image"],this.outputShape=[];var n=e[2];this.outputShape=e,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n\n int coordX = ".concat(n," - x - 1;\n float outputValue;\n if(coordX >= 0 && coordX < ").concat(n,") {\n outputValue = getImage(coords[0], coords[1], coordX, coords[3]);\n } else {\n outputValue = getImage(coords[0], coords[1], coords[2], coords[3]);\n }\n setOutput(outputValue);\n }\n ")},vi={kernelName:n.FlipLeftRight,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=n.image,r=t,o=new xi(a.shape);return r.runWebGLProgram(o,[a],a.dtype)}},gi="return floor(x);",mi=da({opSnippet:gi,packedOpSnippet:gi,cpuKernelImpl:tt}),bi={kernelName:n.Floor,backendName:"webgl",kernelFunc:mi},Ci=pa({opSnippet:"\n float s = sign(a) * sign(b);\n int ia = round(a);\n int ib = round(b);\n if (ib != 0) {\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n return float(idiv(ia, ib, s));\n } else {\n return NAN;\n }\n",packedOpSnippet:"\n ivec4 ia = round(a);\n ivec4 ib = round(b);\n bvec4 cond = notEqual(ib, ivec4(0));\n ivec4 result = ivec4(0);\n vec4 s = sign(a) * sign(b);\n\n // Windows (D3D) wants guaranteed non-zero int division at compile-time.\n if (cond[0]) {\n result[0] = idiv(ia[0], ib[0], s[0]);\n }\n if (cond[1]) {\n result[1] = idiv(ia[1], ib[1], s[1]);\n }\n if (cond[2]) {\n result[2] = idiv(ia[2], ib[2], s[2]);\n }\n if (cond[3]) {\n result[3] = idiv(ia[3], ib[3], s[3]);\n }\n return vec4(result);\n",dtype:"int32"}),yi={kernelName:n.FloorDiv,backendName:"webgl",kernelFunc:Ci},wi=function(e){this.variableNames=["A"];var n=he(),t=c(e,2),a=t[0],r=t[1];this.outputShape=e,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n vec2 uv = (vec2(texC, texR) + halfCR) / vec2(".concat(r,".0, ").concat(a,".0);\n\n vec4 values = ").concat(n.texture2D,"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n setOutput(floor(value * 255.0 + 0.5));\n }\n ")},Ii=function(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var n=he(),t=c(e,2),a=t[0],r=t[1];this.outputShape=e,this.userCode="\n void main() {\n ivec3 coords = getOutputCoords();\n int texR = coords[0];\n int texC = coords[1];\n int depth = coords[2];\n\n vec4 result = vec4(0.);\n\n for(int row=0; row<=1; row++) {\n for(int col=0; col<=1; col++) {\n texC = coords[1] + row;\n depth = coords[2] + col;\n\n vec2 uv = (vec2(texC, texR) + halfCR) /\n vec2(".concat(r,".0, ").concat(a,".0);\n vec4 values = ").concat(n.texture2D,"(A, uv);\n float value;\n if (depth == 0) {\n value = values.r;\n } else if (depth == 1) {\n value = values.g;\n } else if (depth == 2) {\n value = values.b;\n } else if (depth == 3) {\n value = values.a;\n }\n\n result[row * 2 + col] = floor(value * 255.0 + 0.5);\n }\n }\n\n ").concat(n.output," = result;\n }\n ")},Si={kernelName:n.FromPixels,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.pixels,i=r.numChannels,s="undefined"!=typeof HTMLVideoElement&&o instanceof HTMLVideoElement,u="undefined"!=typeof HTMLImageElement&&o instanceof HTMLImageElement,d=c(s?[o.videoWidth,o.videoHeight]:[o.width,o.height],2),p=d[0],h=d[1],f=[h,p],x=[h,p,i];if(u||s){var v=n.env().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU");null!=hi&&v===ki||(ki=v,hi=document.createElement("canvas").getContext("2d",{willReadFrequently:ki})),hi.canvas.width=p,hi.canvas.height=h,hi.drawImage(o,0,0,p,h),o=hi.canvas}var g=a.makeTensorInfo(f,"int32");a.texData.get(g.dataId).usage=l.PIXELS,a.gpgpu.uploadPixelDataToTexture(a.getTexture(g.dataId),o);var m=n.env().getBool("WEBGL_PACK")?new Ii(x):new wi(x),b=a.runWebGLProgram(m,[g],"int32");return a.disposeData(g.dataId),b}},ki=n.env().getBool("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU"),Ri={kernelName:n.FusedConv2D,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=a.filter,s=a.bias,u=a.preluActivationWeights,l=o.strides,d=o.pad,p=o.dataFormat,h=o.dilations,f=o.dimRoundingMode,x=o.activation,v=o.leakyreluAlpha,g=n.backend_util.convertConv2DDataFormat(p),m=n.backend_util.computeConv2DInfo(i.shape,c.shape,l,h,d,f,!1,g),b=[],C=null!=s,y=null!=u,w="leakyrelu"===x,I=function(){var e=[i,c],t=function(e,n){if("NCHW"===n&&1===e.shape.length&&1!==e.shape[0]){var t=ya({inputs:{x:e},backend:r,attrs:{shape:[e.shape[0],1,1]}});return b.push(t),t}return e};if(C&&e.push(t(s,p)),y&&e.push(t(u,p)),w){var a=r.makeTensorInfo([],"float32",n.util.createScalarValue(v,"float32"));e.push(a),b.push(a)}return e};if(1!==m.filterHeight||1!==m.filterWidth||1!==m.dilationHeight||1!==m.dilationWidth||1!==m.strideHeight||1!==m.strideWidth||"SAME"!==m.padInfo.type&&"VALID"!==m.padInfo.type)if(m.strideWidth<=2&&"channelsLast"===g&&n.env().getBool("WEBGL_EXP_CONV")){var S=x?ha(x,!0):null,k=new ao(m,C,S,y,w),R=[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]],T=I();t=r.runWebGLProgram(k,T,"float32",R)}else if(n.env().getBool("WEBGL_CONV_IM2COL"))t=co({x:i,filter:c,convInfo:m,backend:r,bias:s,activation:x,preluActivationWeights:u,leakyreluAlpha:v});else{S=x?ha(x,!1):null,k=new no(m,C,S,y,w);var N=I();t=r.runWebGLProgram(k,N,"float32")}else t=io({x:i,filter:c,convInfo:m,backend:r,bias:s,activation:x,preluActivationWeights:u,leakyreluAlpha:v});var E=ya({inputs:{x:t},backend:r,attrs:{shape:m.outShape}});return b.push(t),b.forEach((function(e){return r.disposeIntermediateTensorInfo(e)})),E}},Ti={kernelName:n.FusedDepthwiseConv2D,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.filter,c=t.bias,s=t.preluActivationWeights,u=r.strides,l=r.pad,d=r.dilations,p=r.dimRoundingMode,h=r.activation,f=r.leakyreluAlpha,x=[],v=d;null==v&&(v=[1,1]),n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(u,v),(function(){return"Error in depthwiseConv2d: Either strides or dilations must be "+"1. Got strides ".concat(u," and dilations '").concat(v,"'")}));var g,m=n.backend_util.computeConv2DInfo(o.shape,i.shape,u,v,l,p,!0),b=n.env().getBool("WEBGL_PACK_DEPTHWISECONV")&&m.strideWidth<=2&&m.outChannels/m.inChannels==1,C=h?ha(h,b):null,y=[o,i],w=null!=c,I=null!=s,S="leakyrelu"===h;if(w&&y.push(c),I&&y.push(s),S){var k=a.makeTensorInfo([],"float32",n.util.createScalarValue(f,"float32"));y.push(k),x.push(k)}g=b?new Bo(m,w,C,I,S):new Lo(m,w,C,I,S);var R=[[m.padInfo.top,m.padInfo.left],[m.strideHeight,m.strideWidth],[m.dilationHeight,m.dilationWidth],[m.inHeight,m.inWidth]],T=a.runWebGLProgram(g,y,"float32",R);return x.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),T}},Ni=function(e,n,t,a){this.sliceDim=e,this.strides=n,this.paramsShape=a,this.variableNames=["x","indices"],this.outputShape=t;for(var r=Ne(t.length),o="\n int index;",i=0;i= ").concat(this.paramsShape[i],";\n flattenIndex += index * ").concat(this.strides[i],";");this.userCode="\n void main() {\n ".concat(r," coords = getOutputCoords();\n int flattenIndex = 0;\n bool out_of_bounds = false;\n\n ").concat(o,"\n\n setOutput(out_of_bounds ? 0.0 : getX(flattenIndex, coords[1]));\n }\n ")},Ei={kernelName:n.GatherNd,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.params,o=t.indices,i=o.shape,s=i[i.length-1],u=n.util.sizeFromShape(r.shape),l=c(n.backend_util.prepareAndValidate(r,o),4),d=l[0],p=l[1],h=l[2],f=l[3],x=ya({inputs:{x:o},backend:a,attrs:{shape:[p,s]}}),v=ya({inputs:{x:r},backend:a,attrs:{shape:[n.util.sizeFromShape(r.shape)/h,h]}});if(a.shouldExecuteOnCPU([r,o])||"string"===r.dtype){var g=a.readSync(o.dataId),m=a.bufferSync(r),b=at(g,m,r.dtype,p,s,h,f,r.shape,u);return a.makeTensorInfo(d,r.dtype,b.values)}var C=new Ni(s,f,[p,h],r.shape),y=a.runWebGLProgram(C,[v,x],v.dtype),w=ya({inputs:{x:y},backend:a,attrs:{shape:d}});return a.disposeIntermediateTensorInfo(x),a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(y),w}},Ai=function(e,n){this.variableNames=["A","indices"],this.outputShape=n,this.rank=n.length;var t=Ne(this.rank),a=function(e,n){for(var t=["resRC.x","resRC.y","resRC.z","resRC.w"],a=[],r=0;r= 0) && (index < ").concat(e[2],") ? 1.0 : 0.0;\n setOutput(inBounds * getA(").concat(a,"));\n }\n ")};function _i(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.indices,c=r.axis,s=r.batchDims,u=n.util.parseAxisParam(c,o.shape)[0];if(n.env().get("DEBUG"))for(var l=a.readSync(i.dataId),d=o.shape[u],p=function(e){var t=l[e];n.util.assert(t<=d-1&&t>=0,(function(){return"GatherV2: the index value ".concat(t," is not in [0, ").concat(d-1,"]")}))},h=0;h b);",packedOpSnippet:"\n return vec4(greaterThan(a, b));\n",cpuKernelImpl:rt,dtype:"bool"}),Di={kernelName:n.Greater,backendName:"webgl",kernelFunc:Fi},Pi=pa({opSnippet:"return float(a >= b);",packedOpSnippet:"\n return vec4(greaterThanEqual(a, b));\n",dtype:"bool",cpuKernelImpl:ot}),Li={kernelName:n.GreaterEqual,backendName:"webgl",kernelFunc:Pi},Bi={kernelName:n.IFFT,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend;return ui(n.input,!0,t)}},Vi=da({opSnippet:"return float(!isnan(x) && !isinf(x));",dtype:"bool"}),Wi={kernelName:n.IsFinite,backendName:"webgl",kernelFunc:Vi},Ui=da({opSnippet:"return float(isinf(x));",dtype:"bool"}),Mi={kernelName:n.IsInf,backendName:"webgl",kernelFunc:Ui},Gi=da({opSnippet:"return float(isnan(x));",dtype:"bool"}),zi={kernelName:n.IsNan,backendName:"webgl",kernelFunc:Gi},Xi=pa({opSnippet:"return float(a < b);",packedOpSnippet:"\n return vec4(lessThan(a, b));\n",cpuKernelImpl:it,dtype:"bool"}),Hi={kernelName:n.Less,backendName:"webgl",kernelFunc:Xi},ji=pa({opSnippet:"return float(a <= b);",packedOpSnippet:"\n return vec4(lessThanEqual(a, b));\n",cpuKernelImpl:ct,dtype:"bool"}),Ki={kernelName:n.LessEqual,backendName:"webgl",kernelFunc:ji},qi={kernelName:n.LinSpace,backendName:"webgl",kernelFunc:function(e){var n=e.backend,t=e.attrs,a=t.start,r=t.stop,o=t.num,i=st(a,r,o);return n.makeTensorInfo([i.length],"float32",i)}},Yi=da({opSnippet:"if (isnan(x)) return x;\n return x < 0.0 ? 0./0. : log(x);\n",packedOpSnippet:"\n vec4 result = log(x);\n bvec4 isNaN = isnan(x);\n result.r = isNaN.r ? x.r : (x.r < 0.0 ? 0./0. : result.r);\n result.g = isNaN.g ? x.g : (x.g < 0.0 ? 0./0. : result.g);\n result.b = isNaN.b ? x.b : (x.b < 0.0 ? 0./0. : result.b);\n result.a = isNaN.a ? x.a : (x.a < 0.0 ? 0./0. : result.a);\n return result;\n",cpuKernelImpl:ut}),Qi={kernelName:n.Log,backendName:"webgl",kernelFunc:Yi},Zi=da({opSnippet:"if (isnan(x)) return x;\n return log(1.0 + x);\n"}),Ji={kernelName:n.Log1p,backendName:"webgl",kernelFunc:Zi},$i=pa({opSnippet:"return float(a >= 1.0 && b >= 1.0);",packedOpSnippet:"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n",dtype:"bool"}),ec={kernelName:n.LogicalAnd,backendName:"webgl",kernelFunc:$i},nc=da({opSnippet:"return float(!(x >= 1.0));"}),tc={kernelName:n.LogicalNot,backendName:"webgl",kernelFunc:nc},ac=pa({opSnippet:"return float(a >= 1.0 || b >= 1.0);",packedOpSnippet:"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n",dtype:"bool"}),rc={kernelName:n.LogicalOr,backendName:"webgl",kernelFunc:ac},oc=function(e,n,t,a,r){this.variableNames=["x"],this.outputShape=[];var o,i=n,c=e[3]-1;this.outputShape=e;var s="float(".concat(t,") + float(").concat(a,") * sum");o=.5===r?"inversesqrt(".concat(s,")"):1===r?"1.0/(".concat(s,")"):"exp(log(".concat(s,") * float(-").concat(r,"));"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n int d = coords[3];\n float x = getX(b, r, c, d);\n float sum = 0.0;\n for (int j = -".concat(i,"; j <= ").concat(i,"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= ").concat(c,") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * ").concat(o,";\n setOutput(val);\n }\n ")},ic=function(e,n,t,a,r){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var o,i=n,c=e[3]-1;this.outputShape=e;var s="float(".concat(t,") + float(").concat(a,") * sum");o=.5===r?"inversesqrt(".concat(s,")"):1===r?"1.0/(".concat(s,")"):"exp(log(".concat(s,") * float(-").concat(r,"));"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords.x;\n int r = coords.y;\n int c = coords.z;\n int d = coords.w;\n\n bool hasNextCol = d < ".concat(this.outputShape[3],";\n bool hasNextRow = c < ").concat(this.outputShape[2],";\n\n vec4 sum = vec4(0.);\n vec4 xFragAtOutputCoords = getX(b, r, c, d);\n\n vec4 xAtOutputCoords = vec4(\n getChannel(xFragAtOutputCoords, vec2(c, d)),\n hasNextCol ?\n getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,\n hasNextRow ?\n getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,\n (hasNextRow && hasNextCol) ?\n getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0\n );\n\n int firstChannel = d - ").concat(i,";\n vec2 cache = vec2(0.);\n if(firstChannel >= 0){\n vec4 firstChannelFrag = getX(b, r, c, firstChannel);\n cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));\n if(hasNextRow){\n cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));\n }\n }\n\n ivec2 depth = ivec2(d, d + 1);\n for (int j = - ").concat(i,"; j <= ").concat(i,"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2(").concat(c,"));\n\n bool depthInRange = aboveLowerBound.x && belowUpperBound.x;\n bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;\n\n if(depthInRange || depthPlusOneInRange){\n vec4 z = vec4(0.);\n vec4 xFragAtCurrentDepth;\n z.xz = cache.xy;\n if(depthPlusOneInRange && hasNextCol){\n xFragAtCurrentDepth = idx.y != d ?\n getX(b, r, c, idx.y) : xFragAtOutputCoords;\n z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));\n if(hasNextRow){\n z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));\n }\n }\n cache.xy = z.yw;\n sum += z * z;\n }\n }\n vec4 result = xAtOutputCoords * ").concat(o,";\n setOutput(result);\n }\n ")},cc={kernelName:n.LRN,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.depthRadius,c=r.bias,s=r.alpha,u=r.beta,l=n.env().getBool("WEBGL_PACK_NORMALIZATION")?new ic(o.shape,i,c,s,u):new oc(o.shape,i,c,s,u);return a.runWebGLProgram(l,[o],o.dtype)}},sc=function(e,n,t,a,r){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=n,this.bias=t,this.alpha=a,this.beta=r,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int r = coords[1];\n int c = coords[2];\n\n float result = 0.0;\n for (int d = 0; d < ".concat(this.depth,"; ++d) {\n int depthBegin = int(max(0.0, float(d - ").concat(n,")));\n int depthEnd = int(min(float(").concat(this.depth,"),\n float(d + ").concat(n," + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = ").concat(this.depth,";\n\n float norm = 0.0;\n for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd) {\n norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);\n }\n else {\n break;\n }\n }\n\n norm = float(").concat(a,") * norm + float(").concat(t,");\n\n for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){\n if (k < depthBegin){\n continue;\n }\n else if (k >= depthBegin && k < depthEnd){\n float dyi = -2.0 * float(").concat(a,")\n * float(").concat(r,")\n * getInputImage(b, r, c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * ").concat(r,");\n }\n if (k == coords[3]) {\n dyi *= getDy(b, r, c, d);\n result += dyi;\n }\n }\n else {\n break;\n }\n }\n }\n setOutput(result);\n }\n ")},uc={kernelName:n.LRNGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.x,o=n.y,i=n.dy,c=a.depthRadius,s=a.bias,u=a.alpha,l=a.beta,d=new sc(r.shape,c,s,u,l);return t.runWebGLProgram(d,[r,o,i],r.dtype)}};function lc(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.reductionIndices,s=r.keepDims,u=o.shape.length,l=n.util.parseAxisParam(i,o.shape),d=l,p=n.backend_util.getAxesPermutation(d,u),h=null!=p,f=a.shouldExecuteOnCPU([o]),x=o;if(h){if(f){for(var v=a.texData.get(x.dataId).values,g=new Array(u),m=0;m= ").concat(e.outHeight,".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(o,"; wC++) {\n float dyC = float(dyCCorner + wC) / ").concat(t,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(b, idyR, idyC, d);\n int maxPosValue = ").concat(s," - int(getMaxPos(b, idyR, idyC, d));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue = wR * ").concat(o," + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n ")},gc=function(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;var n=e.strideDepth,t=e.strideHeight,a=e.strideWidth,r=e.dilationDepth,o=e.dilationHeight,i=e.dilationWidth,c=e.effectiveFilterDepth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,l=c-1-e.padInfo.front,d=s-1-e.padInfo.top,p=u-1-e.padInfo.left,h=c*s*u-1;this.userCode="\n const ivec3 pads = ivec3(".concat(l,", ").concat(d,", ").concat(p,");\n\n void main() {\n ivec5 coords = getOutputCoords();\n int batch = coords.x;\n int ch = coords.u;\n\n ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;\n int dyDCorner = dyCorner.x;\n int dyRCorner = dyCorner.y;\n int dyCCorner = dyCorner.z;\n\n // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get\n // dx(xD, xR, xC, ch).\n // ? = to be determined. : = across all values in that axis.\n float dotProd = 0.0;\n\n for (int wD = 0; wD < ").concat(c,";\n wD += ").concat(r,") {\n float dyD = float(dyDCorner + wD) / ").concat(n,".0;\n\n if (dyD < 0.0 || dyD >= ").concat(e.outDepth,".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < ").concat(s,";\n wR += ").concat(o,") {\n float dyR = float(dyRCorner + wR) / ").concat(t,".0;\n\n if (dyR < 0.0 || dyR >= ").concat(e.outHeight,".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < ").concat(u,";\n wC += ").concat(i,") {\n float dyC = float(dyCCorner + wC) / ").concat(a,".0;\n\n if (dyC < 0.0 || dyC >= ").concat(e.outWidth,".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n float dyValue = getDy(batch, idyD, idyR, idyC, ch);\n int maxPosValue = ").concat(h," -\n int(getMaxPos(batch, idyD, idyR, idyC, ch));\n\n // Get the current value, check it against the value from the\n // position matrix.\n int curPosValue =\n wD * ").concat(s," * ").concat(u," +\n wR * ").concat(u," + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n ")},mc={kernelName:n.MaxPool3DGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=r.filterSize,s=r.strides,u=r.pad,l=r.dimRoundingMode,d=n.backend_util.computePool3DInfo(i.shape,c,s,[1,1,1],u,l),p=new hr(d,"max",!0),h=a.runWebGLProgram(p,[i],i.dtype),f=new gc(d),x=a.runWebGLProgram(f,[o,h],i.dtype);return a.disposeIntermediateTensorInfo(h),x}},bc={kernelName:n.MaxPoolGrad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.dy,i=t.input,c=i;le([i,t.output],"maxPoolGrad");var s=r.filterSize,u=r.strides,l=r.pad,d=r.dimRoundingMode,p=n.backend_util.computePool2DInfo(c.shape,s,u,1,l,d),h=new pr(p,"max",!0),f=a.runWebGLProgram(h,[c],c.dtype),x=new vc(p),v=a.runWebGLProgram(x,[o,f],c.dtype);return a.disposeIntermediateTensorInfo(f),v}},Cc={kernelName:n.MaxPoolWithArgmax,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.attrs,r=e.backend,o=t.x,i=a.filterSize,s=a.strides,u=a.pad,l=a.includeBatchInIndex,d=r;n.util.assert(4===o.shape.length,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(o.shape.length,".")}));var p=[1,1];n.util.assert(n.backend_util.eitherStridesOrDilationsAreOne(s,p),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(s," and dilations '").concat(p,"'")}));var h=n.backend_util.computePool2DInfo(o.shape,i,s,p,u),f=c(function(e,n,t,a){var r=new pr(t,"max",!1),o=a.runWebGLProgram(r,[e],"float32");return r=new pr(t,"max",!0,!0,n),[o,a.runWebGLProgram(r,[e],"float32")]}(o,l,h,d),2);return[f[0],f[1]]}},yc={kernelName:n.Mean,backendName:"webgl",kernelFunc:function(e){var t,a,r=e.inputs,o=e.attrs,s=e.backend,u=r.x,l=o.keepDims,d=o.axis,p=s,h=u.shape.length,f=n.util.parseAxisParam(d,u.shape),x=f,v=n.backend_util.getAxesPermutation(x,h),g=null!=v,m=p.shouldExecuteOnCPU([u]),b=[],C=u;if(g){if(m){for(var y=p.texData.get(C.dataId).values,w=new Array(h),I=0;I= end[i]) {\n outC[i] = (end[i] - 1) * 2 - outC[i] + ").concat(s,";\n }\n }\n ").concat(r," coords = outC - start;\n setOutput(getX(").concat(c,"));\n }\n "):"\n int start = ".concat(o,";\n int end = ").concat(i,";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start) {\n outC = start * 2 - outC - ").concat(s,";\n } else if(outC >= end) {\n outC = (end - 1) * 2 - outC + ").concat(s,";\n }\n setOutput(getX(outC - start));\n }\n ")},Rc=function(e,n,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=Dt("rc",a),s=Dt("source",a),u="".concat(c[a-1]," < ").concat(this.outputShape[a-1]),l=1===a?"source":"vec2(".concat(s.slice(-2).join(),")"),d="reflect"===t?0:1,p="";if(1===a){var h="\n ".concat(r," source = rc;\n if (source < start) {\n source = start * 2 - source - ").concat(d,";\n } else if (source >= end) {\n source = (end - 1) * 2 - source + ").concat(d,";\n }\n source -= start;\n ");p="\n ".concat(r," rc = outputLoc;\n ").concat(h,"\n result[0] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[1] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n ")}else h="\n ".concat(r," source = rc;\n ").concat(r," lt = ").concat(r,"(lessThan(source, start));\n ").concat(r," gte = ").concat(r,"(greaterThanEqual(source, end));\n ").concat(r," orig = 1 - (lt + gte);\n source = orig * source +\n lt * (start * 2 - source - ").concat(d,") +\n gte * ((end - 1) * 2 - source + ").concat(d,");\n source -= start;\n "),p="\n ".concat(r," rc = outputLoc;\n ").concat(h,"\n result[0] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[1] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n rc = outputLoc;\n ").concat(c[a-2]," += 1;\n if(").concat(c[a-2]," < ").concat(this.outputShape[a-2],") {\n ").concat(h,"\n result[2] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n ").concat(c[a-1]," += 1;\n if(").concat(u,") {\n ").concat(h,"\n result[3] = getChannel(getX(").concat(s.join(),"), ").concat(l,");\n }\n }\n ");this.userCode="\n const ".concat(r," start = ").concat(r,"(").concat(o,");\n const ").concat(r," end = ").concat(r,"(").concat(i,");\n\n void main() {\n ").concat(r," outputLoc = getOutputCoords();\n vec4 result = vec4(0.);\n ").concat(p,"\n setOutput(result);\n }\n ")},Tc={kernelName:n.MirrorPad,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.paddings,c=r.mode,s=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Rc(o.shape,i,c):new kc(o.shape,i,c);return a.runWebGLProgram(s,[o],o.dtype)}},Nc=pa({opSnippet:"if (b == 0.0) return NAN;\n return mod(a, b);",packedOpSnippet:"\n vec4 result = mod(a, b);\n bvec4 isNaN = equal(b, vec4(0.0));\n \n result.r = isNaN.r ? NAN : result.r;\n result.g = isNaN.g ? NAN : result.g;\n result.b = isNaN.b ? NAN : result.b;\n result.a = isNaN.a ? NAN : result.a;\n\n return result;\n"}),Ec={kernelName:n.Mod,backendName:"webgl",kernelFunc:Nc},Ac=function(e,n,t){this.variableNames=["probs"],this.customUniforms=[{name:"seed",type:"float"}],this.outputShape=[e,t],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n\n float r = random(seed);\n float cdf = 0.0;\n\n for (int i = 0; i < ".concat(n-1,"; i++) {\n cdf += getProbs(batch, i);\n\n if (r < cdf) {\n setOutput(float(i));\n return;\n }\n }\n\n // If no other event happened, last event happened.\n setOutput(float(").concat(n-1,"));\n }\n ")},_c=pa({opSnippet:"\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",packedOpSnippet:"\n // vec4 one = vec4(equal(a, b));\n // return one + (vec4(1.0) - one) * a / b;\n vec4 result = a / b;\n if(a.x == b.x) {\n result.x = 1.;\n }\n if(a.y == b.y) {\n result.y = 1.;\n }\n if(a.z == b.z) {\n result.z = 1.;\n }\n if(a.w == b.w) {\n result.w = 1.;\n }\n\n return result;\n",checkOutOfBounds:!0}),Oc={kernelName:n.RealDiv,backendName:"webgl",kernelFunc:_c},Fc="return a - b;",Dc=pa({opSnippet:Fc,packedOpSnippet:Fc,supportsComplex:!0,cpuKernelImpl:At}),Pc={kernelName:n.Sub,backendName:"webgl",kernelFunc:Dc};function Lc(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.logits,i=r.dim,c=n.util.parseAxisParam([i],o.shape),s=lc({inputs:{x:o},backend:a,attrs:{reductionIndices:c,keepDims:!1}}),u=n.backend_util.expandShapeToKeepDim(s.shape,c),l=ya({inputs:{x:s},backend:a,attrs:{shape:u}}),d=Dc({inputs:{a:o,b:l},backend:a}),p=ni({inputs:{x:d},backend:a}),h=Ea({inputs:{x:p},backend:a,attrs:{axis:c,keepDims:!1}}),f=ya({inputs:{x:h},backend:a,attrs:{shape:u}}),x=_c({inputs:{a:p,b:f},backend:a});return a.disposeIntermediateTensorInfo(s),a.disposeIntermediateTensorInfo(l),a.disposeIntermediateTensorInfo(d),a.disposeIntermediateTensorInfo(p),a.disposeIntermediateTensorInfo(h),a.disposeIntermediateTensorInfo(f),x}var Bc={kernelName:n.Softmax,backendName:"webgl",kernelFunc:Lc},Vc={kernelName:n.Multinomial,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.logits,o=a.numSamples,i=a.seed,c=a.normalized,s=c?r:Lc({inputs:{logits:r},backend:t,attrs:{dim:r.shape.length-1}}),u=s.shape[0],l=s.shape[1],d=new Ac(u,l,o),p=[[i]],h=t.runWebGLProgram(d,[s],"int32",p);return c||t.disposeIntermediateTensorInfo(s),h}},Wc={kernelName:n.Neg,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=a.x;if(r.shouldExecuteOnCPU([o])){var i=c(function(e,t,a){var r=n.util.createScalarValue(-1,a);return En([],t,r,e,a)}(r.texData.get(o.dataId).values,o.shape,o.dtype),2),s=i[0],u=i[1];return r.makeTensorInfo(u,o.dtype,s)}return t=n.env().getBool("WEBGL_PACK_UNARY_OPERATIONS")?new Xt(o.shape,"\n vec4 result = -x;\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n"):new Mt(o.shape,"if (isnan(x)) return x;\n return -x;\n"),r.runWebGLProgram(t,[o],o.dtype)}},Uc=n.kernel_impls.nonMaxSuppressionV3Impl,Mc={kernelName:n.NonMaxSuppressionV3,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=a.readSync(o.dataId),d=a.readSync(i.dataId),p=Uc(l,d,c,s,u).selectedIndices;return a.makeTensorInfo([p.length],"int32",new Int32Array(p))}},Gc=n.kernel_impls.nonMaxSuppressionV4Impl,zc={kernelName:n.NonMaxSuppressionV4,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=r.padToMaxOutputSize,d=a.readSync(o.dataId),p=a.readSync(i.dataId),h=Gc(d,p,c,s,u,l),f=h.selectedIndices,x=h.validOutputs;return[a.makeTensorInfo([f.length],"int32",new Int32Array(f)),a.makeTensorInfo([],"int32",new Int32Array([x]))]}},Xc=n.kernel_impls.nonMaxSuppressionV5Impl,Hc={kernelName:n.NonMaxSuppressionV5,backendName:"webgl",kernelFunc:function(e){n.backend_util.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var t=e.inputs,a=e.backend,r=e.attrs,o=t.boxes,i=t.scores,c=r.maxOutputSize,s=r.iouThreshold,u=r.scoreThreshold,l=r.softNmsSigma,d=a.readSync(o.dataId),p=a.readSync(i.dataId),h=Xc(d,p,c,s,u,l),f=h.selectedIndices,x=h.selectedScores;return[a.makeTensorInfo([f.length],"int32",new Int32Array(f)),a.makeTensorInfo([x.length],"float32",new Float32Array(x))]}},jc=function(e,n,t,a){this.variableNames=["indices"],this.outputShape=[e,n],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float(".concat(a,"), float(").concat(t,"),\n float(index == coords.y)));\n }\n ")},Kc={kernelName:n.OneHot,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.indices,i=r.dtype,u=r.depth,l=r.onValue,d=r.offValue,p=n.util.sizeFromShape(o.shape),h=new jc(p,u,l,d),f=ya({inputs:{x:o},backend:a,attrs:{shape:[p]}}),x=a.runWebGLProgram(h,[f],i);a.disposeIntermediateTensorInfo(f);var v=ya({inputs:{x},backend:a,attrs:{shape:s(s([],c(o.shape),!1),[u],!1)}});return a.disposeIntermediateTensorInfo(x),v}};function qc(e){var n=e.inputs,t=e.backend,a=n.x;if("complex64"===a.dtype){var r=Pr({inputs:{input:a},backend:t}),o=qc({inputs:{x:r},backend:t}),i=Qr({inputs:{input:a},backend:t}),c=qc({inputs:{x:i},backend:t}),s=aa({inputs:{real:o,imag:c},backend:t});return t.disposeIntermediateTensorInfo(r),t.disposeIntermediateTensorInfo(o),t.disposeIntermediateTensorInfo(i),t.disposeIntermediateTensorInfo(c),s}return pi({attrs:{shape:a.shape,dtype:a.dtype,value:"string"===a.dtype?"":0},backend:t})}var Yc={kernelName:n.ZerosLike,backendName:"webgl",kernelFunc:qc},Qc={kernelName:n.OnesLike,backendName:"webgl",kernelFunc:function e(n){var t=n.inputs,a=n.backend,r=t.x;if("string"===r.dtype)throw new Error("onesLike is not supported under string dtype");if("complex64"===r.dtype){var o=Pr({inputs:{input:r},backend:a}),i=e({inputs:{x:o},backend:a}),c=Qr({inputs:{input:r},backend:a}),s=qc({inputs:{x:c},backend:a}),u=aa({inputs:{real:i,imag:s},backend:a});return a.disposeIntermediateTensorInfo(o),a.disposeIntermediateTensorInfo(i),a.disposeIntermediateTensorInfo(c),a.disposeIntermediateTensorInfo(s),u}return pi({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:a})}},Zc={kernelName:n.Pack,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs.axis;if(1===t.length)return ai({inputs:{input:t[0]},backend:a,attrs:{dim:r}});var o=t[0].shape,i=t[0].dtype;t.forEach((function(e){n.util.assertShapesMatch(o,e.shape,"All tensors passed to stack must have matching shapes"),n.util.assert(i===e.dtype,(function(){return"All tensors passed to stack must have matching dtypes"}))}));var c=[],s=$r({inputs:t.map((function(e){var n=ai({inputs:{input:e},backend:a,attrs:{dim:r}});return c.push(n),n})),backend:a,attrs:{axis:r}});return c.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),s}},Jc=function(e,n,t){this.variableNames=["x"],this.customUniforms=[{name:"value",type:"float"}],this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,a);this.userCode=1!==a?"\n ".concat(r," start = ").concat(r,"(").concat(o,");\n ").concat(r," end = ").concat(r,"(").concat(i,");\n\n void main() {\n ").concat(r," outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(value);\n } else {\n ").concat(r," coords = outC - start;\n setOutput(getX(").concat(c,"));\n }\n }\n "):"\n int start = ".concat(o,";\n int end = ").concat(i,";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(value);\n } else {\n setOutput(getX(outC - start));\n }\n }\n ")},$c=function(e,n,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.customUniforms=[{name:"value",type:"float"}],this.outputShape=n.map((function(n,t){return n[0]+e[t]+n[1]}));for(var a=e.length,r=Ne(a),o=n.map((function(e){return e[0]})).join(","),i=n.map((function(n,t){return n[0]+e[t]})).join(","),c=Dt("rc",a),s=Dt("source",a),u="".concat(c[a-1]," < ").concat(this.outputShape[a-1]),l=1===a?"source":"vec2(".concat(s.slice(-2).join(),")"),d=["".concat(r," rc = outputLoc;"),"".concat(c[a-1]," += 1;\n if(").concat(u,") {\n "),1===a?"":"}\n rc = outputLoc;\n ".concat(c[a-2]," += 1;\n if(").concat(c[a-2]," < ").concat(this.outputShape[a-2],") {"),1===a?"":" ".concat(c[a-1]," += 1;\n if(").concat(u,") {")],p=1===a?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",h="",f=0,x=1===a?2:4;f1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t];d=r?"(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],");\n const vec2 inputShapeRC = vec2(").concat(s,".0, ").concat(u,".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ").concat(d,";\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(max(sourceFracIndexRC, vec2(0.0)));\n ivec2 sourceCeilRC = ivec2(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);\n float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);\n float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);\n float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);\n\n vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);\n\n float top = topLeft + (topRight - topLeft) * fracRC.y;\n float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;\n float newValue = top + (bottom - top) * fracRC.x;\n\n setOutput(newValue);\n }\n ")},gs=function(e,n,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t];d=r?"(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],",\n ").concat(p[1]/h[1],");\n const vec3 inputShapeRC = vec3(").concat(s,".0, ").concat(u,".0,\n ").concat(u,".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ").concat(d,";\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(max(sourceFracIndexRC, vec3(0.0)));\n ivec3 sourceCeilRC = ivec3(\n min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ").concat(l-1,";\n bool hasNextRow = coords.z < ").concat(t-1,";\n\n // In parallel, construct four corners for all four components in\n // packed 2x2 cell.\n vec4 topLeft = vec4(\n getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 bottomLeft = vec4(\n getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);\n\n vec4 topRight = vec4(\n getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec4 bottomRight = vec4(\n getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),\n hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);\n\n vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);\n\n vec4 top = mix(topLeft, topRight, fracRC.yyzz);\n vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);\n vec4 newValue = mix(top, bottom, fracRC.x);\n\n setOutput(newValue);\n }\n ")},ms={kernelName:n.ResizeBilinear,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.images,i=r.alignCorners,s=r.halfPixelCenters,u=c(r.size,2),l=u[0],d=u[1],p=n.env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new gs(o.shape,l,d,i,s):new vs(o.shape,l,d,i,s);return a.runWebGLProgram(p,[o],"float32")}},bs=function(e,n,t){this.variableNames=["dy"],this.outputShape=[],this.outputShape=n;var a=c(n,3),r=a[1],o=a[2],i=c(e,3),s=i[1],u=i[2],l=[t&&s>1?r-1:r,t&&u>1?o-1:o],d=[t&&s>1?s-1:s,t&&u>1?u-1:u],p=l[0]/d[0],h=l[1]/d[1],f=1/p,x=1/h,v=2*Math.ceil(f)+2,g=2*Math.ceil(x)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(".concat(p,");\n const float widthScale = float(").concat(h,");\n\n const float invHeightScale = float(").concat(f,");\n const float invWidthScale = float(").concat(x,");\n\n const int winHeight = int(").concat(v,");\n const int winWidth = int(").concat(g,");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(startRLerp - float(winHeight / 2));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(startCLerp - float(winWidth / 2));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ").concat(s,") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ").concat(u,") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), ").concat(r-1,".0));\n float dxRLerp = dxR - float(topDxRIndex);\n float inverseDxRLerp = 1.0 - dxRLerp;\n\n float dxC = float(dyC) * widthScale;\n int leftDxCIndex = int(floor(dxC));\n int rightDxCIndex = int(min(ceil(dxC), ").concat(o-1,".0));\n float dxCLerp = dxC - float(leftDxCIndex);\n float inverseDxCLerp = 1.0 - dxCLerp;\n\n if (r == topDxRIndex && c == leftDxCIndex) {\n // topLeft\n accumulator +=\n getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;\n }\n\n if (r == topDxRIndex && c == rightDxCIndex) {\n // topRight\n accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;\n }\n\n if (r == bottomDxRIndex && c == leftDxCIndex) {\n // bottomLeft\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;\n }\n\n if (r == bottomDxRIndex && c == rightDxCIndex) {\n // bottomRight\n accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ")},Cs={kernelName:n.ResizeBilinearGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.images,o=n.dy,i=a.alignCorners,c=new bs(o.shape,r.shape,i);return t.runWebGLProgram(c,[o],o.dtype)}},ys=function(e,n,t,a,r){this.variableNames=["A"],this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t],f=a?"0.5":"0.0";d=r?"max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":"vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],");\n const vec2 inputShapeRC = vec2(").concat(s,".0, ").concat(u,".0);\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n ivec2 yRC = coords.yz;\n\n // Fractional source index.\n vec2 sourceFracIndexRC = ").concat(d,";\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ").concat(f,")));\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n ")},ws=function(e,n,t,a,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=c(e,4),i=o[0],s=o[1],u=o[2],l=o[3];this.outputShape=[i,n,t,l];var d,p=[a&&n>1?s-1:s,a&&t>1?u-1:u],h=[a&&n>1?n-1:n,a&&t>1?t-1:t],f=a?"0.5":"0.0";d=r?"max((vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC, vec3(0.0))":"vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n ".concat(p[0]/h[0],",\n ").concat(p[1]/h[1],",\n ").concat(p[1]/h[1],");\n const vec3 inputShapeRC = vec3(").concat(s,".0, ").concat(u,".0,\n ").concat(u,".0);\n\n float getAValue(int b, int r, int c, int d) {\n return getChannel(getA(b, r, c, d), vec2(c, d));\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n // Calculate values for next column in yRC.z.\n ivec3 yRC = coords.yzz + ivec3(0, 0, 1);\n\n // Fractional source index.\n vec3 sourceFracIndexRC = ").concat(d,";\n\n // Compute the coordinators of nearest neighbor point.\n ivec3 sourceNearestRC = ivec3(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + ").concat(f,")));\n\n // Should we calculate next column and row elements in 2x2 packed cell.\n bool hasNextCol = d < ").concat(l-1,";\n bool hasNextRow = coords.z < ").concat(t-1,";\n\n vec4 newValue = vec4(\n getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d),\n hasNextCol ? getAValue(b, sourceNearestRC.x, sourceNearestRC.y, d + 1)\n : 0.0,\n hasNextRow ? getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d)\n : 0.0,\n (hasNextRow && hasNextCol) ?\n getAValue(b, sourceNearestRC.x, sourceNearestRC.z, d + 1) : 0.0);\n\n setOutput(newValue);\n }\n ")},Is={kernelName:n.ResizeNearestNeighbor,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.images,i=r.alignCorners,s=r.halfPixelCenters,u=c(r.size,2),l=u[0],d=u[1],p=n.env().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new ws(o.shape,l,d,i,s):new ys(o.shape,l,d,i,s);return a.runWebGLProgram(p,[o],o.dtype)}},Ss=function(e,n,t){this.variableNames=["dy"],this.outputShape=[],this.outputShape=n;var a=c(n,3),r=a[1],o=a[2],i=c(e,3),s=i[1],u=i[2],l=[t&&s>1?r-1:r,t&&u>1?o-1:o],d=[t&&s>1?s-1:s,t&&u>1?u-1:u],p=l[0]/d[0],h=l[1]/d[1],f=1/p,x=1/h,v=2*Math.ceil(f)+2,g=2*Math.ceil(x)+2;this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int d = coords[3];\n int r = coords[1];\n int c = coords[2];\n\n float accumulator = 0.0;\n\n const float heightScale = float(".concat(p,");\n const float widthScale = float(").concat(h,");\n\n const float invHeightScale = float(").concat(f,");\n const float invWidthScale = float(").concat(x,");\n\n const int winHeight = int(").concat(v,");\n const int winWidth = int(").concat(g,");\n\n // Compute bounds for where in dy we will look\n float startRLerp = floor(float(r) * invHeightScale);\n int startDyR = int(floor(startRLerp - float(winHeight / 2)));\n\n float startCLerp = floor(float(c) * invWidthScale);\n int startDyC = int(floor(startCLerp - float(winWidth / 2)));\n\n // Loop over dy\n for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {\n int dyR = dyROffset + startDyR;\n\n // Guard against the window exceeding the bounds of dy\n if (dyR < 0 || dyR >= ").concat(s,") {\n continue;\n }\n\n for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {\n int dyC = dyCOffset + startDyC;\n\n // Guard against the window exceeding the bounds of dy\n if (dyC < 0 || dyC >= ").concat(u,") {\n continue;\n }\n\n float sourceFracRow =\n float(").concat(l[0],") *\n (float(dyR) / float(").concat(d[0],"));\n\n float sourceFracCol =\n float(").concat(l[1],") *\n (float(dyC) / float(").concat(d[1],"));\n\n int sourceNearestRow = int(min(\n float(int(").concat(r,") - 1),\n ").concat(t," ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int(").concat(o,") - 1),\n ").concat(t," ? float(round(sourceFracCol)) :\n float(floor(sourceFracCol))));\n\n if (r == sourceNearestRow && c == sourceNearestCol) {\n accumulator += getDy(b, dyR, dyC, d);\n }\n }\n }\n // End loop over dy\n\n setOutput(accumulator);\n }\n ")},ks={kernelName:n.ResizeNearestNeighborGrad,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.images,o=n.dy,i=a.alignCorners,c=new Ss(o.shape,r.shape,i);return t.runWebGLProgram(c,[o],o.dtype)}},Rs=function(e,n){this.variableNames=["x"];var t=e.length;if(t>4)throw new Error("WebGL backend: Reverse of rank-".concat(t," tensor is not yet supported"));if(this.outputShape=e,1!==t){var a=e.map((function(t,a){return function(t){return-1!==n.indexOf(t)&&1!==e[t]?"".concat(e[t]," - coords[").concat(t,"] - 1"):"coords[".concat(t,"]")}(a)})).join(","),r=Ne(t);this.userCode="\n void main() {\n ".concat(r," coords = getOutputCoords();\n setOutput(getX(").concat(a,"));\n }\n ")}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX(".concat(e[0]," - coord - 1));\n }\n ")},Ts=function(e,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var t=e.length;if(t>4)throw new Error("WebGL backend: Reverse of rank-".concat(t," tensor is not yet supported"));this.outputShape=e;var a=Dt("rc",t),r="".concat(a[t-1]," + 1 < ").concat(this.outputShape[t-1]),o="".concat(a[t-2]," + 1 < ").concat(this.outputShape[t-2]),i=Ne(t);function c(t){var a=e.map((function(a,r){return function(t,a){return-1!==n.indexOf(t)&&1!==e[t]?"".concat(e[t]," - ").concat(a[t]," - 1"):"".concat(a[t])}(r,t)})),r=a.join(","),o=a.slice(-2).join(",");return"getChannel(getX(".concat(r,"), vec2(").concat(o,"))")}this.userCode=1===t?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX(".concat(e[0]," - rc - 1),\n ").concat(e[0]," - rc - 1);\n if(").concat(r,"){\n result.g = getChannel(getX(").concat(e[0]," - (rc + 1) - 1),\n ").concat(e[0]," - (rc + 1) - 1);\n }\n setOutput(result);\n }\n "):"\n void main() {\n ".concat(i," rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = ").concat(function(e){return c(e)}(a.slice()),";\n if(").concat(r,"){\n result.g = ").concat(function(e){return e[t-1]="("+e[t-1]+" + 1)",c(e)}(a.slice()),";\n }\n if(").concat(o,") {\n result.b = ").concat(function(e){return e[t-2]="("+e[t-2]+" + 1)",c(e)}(a.slice()),";\n if(").concat(r,") {\n result.a = ").concat(function(e){return e[t-1]="("+e[t-1]+" + 1)",e[t-2]="("+e[t-2]+" + 1)",c(e)}(a.slice()),";\n }\n }\n setOutput(result);\n }\n ")},Ns={kernelName:n.Reverse,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.dims,c=o.shape.length,s=n.util.parseAxisParam(i,o.shape);if(0===c)return na({inputs:{x:o},backend:a});var u=n.env().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Ts(o.shape,s):new Rs(o.shape,s);return a.runWebGLProgram(u,[o],o.dtype)}},Es=function(e,n){this.variableNames=["Image"],this.outputShape=[],this.customUniforms=[{name:"params",type:"vec4"}];var t,a=e[1],r=e[2];this.outputShape=e,t="number"==typeof n?"float outputValue = ".concat(n.toFixed(2),";"):"\n vec3 fill = vec3(".concat(n.join(","),");\n float outputValue = fill[coords[3]];"),this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int x = coords[2];\n int y = coords[1];\n float coordXFloat = (float(x) - params[0]) * params[3] -\n (float(y) - params[1]) * params[2];\n float coordYFloat = (float(x) - params[0]) * params[2] +\n (float(y) - params[1]) * params[3];\n int coordX = int(round(coordXFloat + params[0]));\n int coordY = int(round(coordYFloat + params[1]));\n ".concat(t,"\n if(coordX >= 0 && coordX < ").concat(r," && coordY >= 0 && coordY < ").concat(a,") {\n outputValue = getImage(coords[0], coordY, coordX, coords[3]);\n }\n setOutput(outputValue);\n }\n ")},As={kernelName:n.RotateWithOffset,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.attrs,r=e.backend,o=t.image,i=a.radians,s=a.fillValue,u=a.center,l=r,d=new Es(o.shape,s),p=c(n.backend_util.getImageCenter(u,o.shape[1],o.shape[2]),2),h=[[p[0],p[1],Math.sin(i),Math.cos(i)]];return l.runWebGLProgram(d,[o],o.dtype,h)}},_s=da({opSnippet:"\n // OpenGL ES does not support round function.\n // The algorithm is based on banker's rounding.\n float base = floor(x);\n if ((x - base) < 0.5) {\n return floor(x);\n } else if ((x - base) > 0.5) {\n return ceil(x);\n } else {\n if (mod(base, 2.0) == 0.0) {\n return base;\n } else {\n return base + 1.0;\n }\n }\n"}),Os={kernelName:n.Round,backendName:"webgl",kernelFunc:_s},Fs=da({opSnippet:"return inversesqrt(x);",cpuKernelImpl:mt}),Ds={kernelName:n.Rsqrt,backendName:"webgl",kernelFunc:Fs},Ps=function(e,n,t,a,r,o,i,c){void 0===c&&(c=!1),this.variableNames=["updates","indices","defaultValue"],this.outputShape=o;var s=Ne(r.length),u=Ne(o.length),l="";1===t?l="i":2===t&&(l="i, j");var d="getIndices(".concat(l,")"),p="";1===a?p="i":2===a&&(p="i, coords[1]");var h="getUpdates(".concat(p,")"),f="";c&&(f="coords[0], coords[1]");var x="getDefaultValue(".concat(f,")"),v=n>1?"strides[j]":"strides";this.userCode="\n ".concat(s," strides = ").concat(s,"(").concat(r,");\n\n void main() {\n ").concat(u," coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < ").concat(e,"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < ").concat(n,"; j++) {\n int index = round(").concat(d,");\n flattenedIndex += index * ").concat(v,";\n }\n if (flattenedIndex == coords[0]) {\n sum += ").concat(h,";\n found = true;\n }\n }\n setOutput(mix(").concat(x,", sum, float(found)));\n }\n ")},Ls=function(e,n,t,a,r,o,i,c){void 0===c&&(c=!1),this.variableNames=["updates","indices","defaultValue"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=o;var s=Ne(r.length),u=Ne(o.length),l="";1===t?l="i":2===t&&(l="i, j");var d="getIndices(".concat(l,")"),p="";1===a?p="i":2===a&&(p="i, coords[1]");var h="getUpdates(".concat(p,")"),f="";c&&(f="coords[0], coords[1]");var x="getDefaultValue(".concat(f,")"),v=n>1?"strides[j]":"strides",g=n>1?"strides[j + 1]":"strides";this.userCode="\n ".concat(s," strides = ").concat(s,"(").concat(r,");\n\n void main() {\n ").concat(u," coords = getOutputCoords();\n vec4 sum = vec4(0.);\n vec4 found = vec4(0.);\n for (int i = 0; i < ").concat(e,"; i+=2) {\n ivec2 flattenedIndex = ivec2(0);\n for (int j = 0; j < ").concat(n,"; j+=2) {\n ivec4 index = round(").concat(d,");\n flattenedIndex += index.xz * ").concat(v,";\n if (j + 1 < ").concat(n,") {\n flattenedIndex += index.yw * ").concat(g,";\n }\n }\n if (flattenedIndex[0] == coords[0] || flattenedIndex[1] == coords[0] ||\n flattenedIndex[0] == coords[0] + 1 || flattenedIndex[1] == coords[0] + 1) {\n vec4 updVals = ").concat(h,";\n if (flattenedIndex[0] == coords[0]) {\n sum.xy += updVals.xy;\n found.xy = vec2(1.);\n } else if (flattenedIndex[0] == coords[0] + 1) {\n sum.zw += updVals.xy;\n found.zw = vec2(1.);\n }\n if (flattenedIndex[1] == coords[0]) {\n sum.xy += updVals.zw;\n found.xy = vec2(1.);\n } else if (flattenedIndex[1] == coords[0] + 1) {\n sum.zw += updVals.zw;\n found.zw = vec2(1.);\n }\n }\n }\n setOutput(mix(").concat(x,", sum, found));\n }\n ")},Bs={kernelName:n.ScatterNd,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.indices,i=t.updates,c=r.shape,s=n.backend_util.calculateShapes(i,o,c),u=s.sliceRank,l=s.numUpdates,d=s.sliceSize,p=s.strides,h=s.outputSize,f=[h/d,d];if(0===h)return a.makeTensorInfo(c,o.dtype);var x,v=ya({inputs:{x:o},backend:a,attrs:{shape:[l,u]}}),g=ya({inputs:{x:i},backend:a,attrs:{shape:[l,d]}}),m=a.makeTensorInfo([],"float32",new Float32Array([0]));x=n.env().getBool("WEBGL_PACK")?new Ls(l,u,v.shape.length,g.shape.length,p,f):new Ps(l,u,v.shape.length,g.shape.length,p,f);var b=a.runWebGLProgram(x,[g,v,m],g.dtype),C=ya({inputs:{x:b},backend:a,attrs:{shape:c}});return a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(g),a.disposeIntermediateTensorInfo(b),a.disposeIntermediateTensorInfo(m),C}},Vs=function(e,t,a,r){this.variableNames=["sortedSequence","values"],this.customUniforms=[{name:"numInputs",type:"int"}],this.outputShape=[e,a];var o="for (int i = 0; i < ".concat(Math.ceil(Math.log2(t+1)),"; ++i) { if (left >= right) break;"),i=2===n.env().getNumber("WEBGL_VERSION")?"while (left < right) {":o,c="left"===r?"<":"<=";this.userCode="\n int findBound(int batch, float value) {\n int left = 0;\n int right = numInputs;\n int mid;\n ".concat(i,"\n mid = (left + right) / 2;\n if (getSortedSequence(batch, mid) ").concat(c," value) {\n left = mid + 1;\n } else {\n right = mid;\n }\n }\n return right;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int valueIndex = coords[1];\n\n float value = getValues(batch, valueIndex);\n\n setOutput(float(findBound(batch, value)));\n }\n ")},Ws={kernelName:n.SearchSorted,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.sortedSequence,o=n.values,i=a.side,c=new Vs(r.shape[0],r.shape[1],o.shape[1],i),s=[[r.shape[1]]];return t.runWebGLProgram(c,[r,o],"int32",s)}},Us=function(e,n,t){var a,r;if(this.variableNames=["c","a","b"],this.outputShape=n,t>4)throw Error("Where for rank ".concat(t," is not yet supported"));if(1===t)r="resRC",a="resRC";else{for(var o=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],c=[],s=0;s= 1.0) {\n setOutput(getA(").concat(r,"));\n } else {\n setOutput(getB(").concat(r,"));\n }\n }\n ")},Ms={kernelName:n.Select,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=t.condition,o=t.t,i=t.e,c=new Us(r.shape.length,o.shape,o.shape.length);return a.runWebGLProgram(c,[r,o,i],n.upcastType(o.dtype,i.dtype))}},Gs=da({opSnippet:"\n // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.\n // see: https://arxiv.org/abs/1706.02515\n float scaleAlpha = ".concat(n.backend_util.SELU_SCALEALPHA,";\n float scale = ").concat(n.backend_util.SELU_SCALE,";\n return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n")}),zs={kernelName:n.Selu,backendName:"webgl",kernelFunc:Gs},Xs=da({opSnippet:"if (isnan(x)) return x;\n return 1.0 / (1.0 + exp(-1.0 * x));\n",packedOpSnippet:"\n vec4 result = 1.0 / (1.0 + exp(-1.0 * x));\n bvec4 isNaN = isnan(x);\n\n result.r = isNaN.r ? x.r : result.r;\n result.g = isNaN.g ? x.g : result.g;\n result.b = isNaN.b ? x.b : result.b;\n result.a = isNaN.a ? x.a : result.a;\n\n return result;\n",cpuKernelImpl:bt}),Hs={kernelName:n.Sigmoid,backendName:"webgl",kernelFunc:Xs},js=da({opSnippet:"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n"}),Ks={kernelName:n.Sign,backendName:"webgl",kernelFunc:js},qs=da({opSnippet:"if (isnan(x)) return x;\n return sin(x);\n",packedOpSnippet:"\n vec4 result = sin(x);\n bvec4 isNaN = isnan(x);\n ".concat($t,"\n return result;\n")}),Ys={kernelName:n.Sin,backendName:"webgl",kernelFunc:qs},Qs=da({opSnippet:"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n"}),Zs={kernelName:n.Sinh,backendName:"webgl",kernelFunc:Qs},Js=da({opSnippet:"\n float epsilon = 1.1920928955078125e-7;\n float threshold = log(epsilon) + 2.0;\n\n bool too_large = x > -threshold;\n bool too_small = x < threshold;\n\n float result;\n float exp_x = exp(x);\n\n if (too_large){\n result = x;\n }\n else if (too_small){\n result = exp_x;\n }\n else{\n result = log(exp_x + 1.0);\n }\n return result;\n"}),$s={kernelName:n.Softplus,backendName:"webgl",kernelFunc:Js},eu={kernelName:n.SpaceToBatchND,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=r.blockShape,u=r.paddings;n.util.assert(o.shape.length<=4,(function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"}));var l=i.reduce((function(e,n){return e*n})),d=[[0,0]];d.push.apply(d,s([],c(u),!1));for(var p=1+i.length;p=r/o)throw new Error("Invalid indices: ".concat(v," does not index into ").concat(a));for(var C=0;C 0.0 ? 1.0 : float(".concat(t.alpha,");\n "),i=new Mt(r.shape,o);return a.runWebGLProgram(i,[r],r.dtype)}},gu=function(e,n,t){this.variableNames=["x"],this.outputShape=t;var a=t.length,r=Ne(t.length),o=Ne(t.length),i="";if(1===a)i="coords * strides + begin";else{var c=0;i=t.map((function(e,n){return c++,1===t.length?"coords * strides[".concat(n,"] + begin[").concat(n,"]"):"coords[".concat(c-1,"] * strides[").concat(n,"] + begin[").concat(n,"]")})).join(",")}this.userCode="\n ".concat(r," begin = ").concat(r,"(").concat(e,");\n ").concat(r," strides = ").concat(r,"(").concat(n,");\n\n void main() {\n ").concat(o," coords = getOutputCoords();\n setOutput(getX(").concat(i,"));\n }\n ")},mu={kernelName:n.StridedSlice,backendName:"webgl",kernelFunc:function(e){var t,a=e.inputs,r=e.backend,o=e.attrs,i=a.x,c=o.begin,s=o.end,u=o.strides,l=o.beginMask,d=o.endMask,p=o.ellipsisMask,h=o.newAxisMask,f=o.shrinkAxisMask,x=n.slice_util.sliceInfo(i.shape,c,s,u,l,d,p,h,f),v=x.finalShapeSparse,g=x.finalShape,m=x.isIdentity,b=x.sliceDim0,C=x.isSimpleSlice,y=x.begin,w=x.end,I=x.strides;if(m)t=ya({inputs:{x:i},backend:r,attrs:{shape:g}});else if(b||C){n.util.assert(i.shape.length>=1,(function(){return"Input must have rank at least 1, got: ".concat(i.shape.length)}));var S=n.slice_util.computeOutShape(y,w,I),k=Tr({inputs:{x:i},backend:r,attrs:{begin:y,size:S}});t=ya({inputs:{x:k},backend:r,attrs:{shape:g}}),r.disposeIntermediateTensorInfo(k)}else if(r.shouldExecuteOnCPU([i])){var R=r.readSync(i.dataId),T=n.buffer(i.shape,i.dtype,R),N=Tt(v,T,I,y);t=r.makeTensorInfo(g,i.dtype,N.values)}else{var E=new gu(y,I,v);t=r.runWebGLProgram(E,[i],i.dtype)}var A=ya({inputs:{x:t},backend:r,attrs:{shape:g}});return r.disposeIntermediateTensorInfo(t),A}},bu={kernelName:n.StringNGrams,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=a.separator,o=a.nGramWidths,i=a.leftPad,s=a.rightPad,u=a.padWidth,l=a.preserveShortSequences,d=n.data,p=n.dataSplits,h=c(function(e,n,t,a,r,o,i,c){return new Gn(t,a,r,o,i,c).compute(e,n)}(t.readSync(d.dataId),t.readSync(p.dataId),r,o,i,s,u,l),2),f=h[0],x=h[1];return[t.makeTensorInfo([f.length],"string",f),t.makeTensorInfo(p.shape,"int32",x)]}},Cu={kernelName:n.StringSplit,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs.skipEmpty,r=n.input,o=n.delimiter;if("string"!==r.dtype)throw new Error("Input must be of datatype string");if(1!==r.shape.length)throw new Error("Input must be a vector, got shape: ".concat(r.shape));if(0!==o.shape.length)throw new Error("Delimiter must be a scalar, got shape: ".concat(o.shape));var i=t.readSync(r.dataId),s=t.readSync(o.dataId)[0],u=c(Nt(i,s,a),3),l=u[0],d=u[1],p=u[2],h=d.length;return[t.makeTensorInfo([h,2],"int32",l),t.makeTensorInfo([h],"string",d),t.makeTensorInfo([2],"int32",new Int32Array(p))]}},yu={kernelName:n.StringToHashBucketFast,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs.numBuckets,r=n.input;if("string"!==r.dtype)throw new Error("Input must be of datatype string");if(a<=0)throw new Error("Number of buckets must be at least 1");var o=t.readSync(r.dataId),i=Et(o,a);return t.makeTensorInfo(r.shape,"int32",i)}},wu=da({opSnippet:"return tan(x);"}),Iu={kernelName:n.Tan,backendName:"webgl",kernelFunc:wu},Su=da({opSnippet:"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n"}),ku={kernelName:n.Tanh,backendName:"webgl",kernelFunc:Su},Ru={kernelName:n.TensorScatterUpdate,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend;e.attrs;var r=t.tensor,o=t.indices,i=t.updates,c=n.backend_util.calculateShapes(i,o,r.shape),s=c.sliceRank,u=c.numUpdates,l=c.sliceSize,d=c.strides,p=c.outputSize,h=[p/l,l];if(0===p)return a.makeTensorInfo(r.shape,o.dtype);var f=ya({inputs:{x:o},backend:a,attrs:{shape:[u,s]}}),x=ya({inputs:{x:i},backend:a,attrs:{shape:[u,l]}}),v=ya({inputs:{x:r},backend:a,attrs:{shape:h}}),g=new Ps(u,s,f.shape.length,x.shape.length,d,h,!1,!0),m=a.runWebGLProgram(g,[x,f,v],v.dtype),b=ya({inputs:{x:m},backend:a,attrs:{shape:r.shape}});return a.disposeIntermediateTensorInfo(f),a.disposeIntermediateTensorInfo(x),a.disposeIntermediateTensorInfo(v),a.disposeIntermediateTensorInfo(m),b}},Tu=function(e,n){this.variableNames=["A"];for(var t=new Array(e.length),a=0;a5)throw Error("Tile for rank ".concat(n," is not yet supported"));if(1===n)return"imod(resRC, ".concat(e[0],")");for(var t=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],a=[],r=0;r5){var c=a.readSync(o.dataId),s="string"===o.dtype?c.map((function(e){return n.util.decodeString(e)})):c,u=function(e,t){for(var a=new Array(e.rank),r=0;r= dir;\n bool isGreater = x0 > x1 || (x0 == x1 && i1 > i0);\n if (reverse == isGreater) { // Elements in opposite order of direction\n int iTemp = i0;\n i0 = i1;\n i1 = iTemp;\n }\n if (isFirstInPair) {\n setOutput(float(i0));\n } else {\n setOutput(float(i1));\n }\n }\n "},_u=function(e){this.variableNames=["x","indices"],this.customUniforms=[{name:"n",type:"int"},{name:"firstPass",type:"int"},{name:"k",type:"int"}],this.outputShape=e,this.userCode="\n void main() {\n // Takes max of indices (0, k), (1, k + 1), (2, k + 2) ...\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int elemIdx = coords[1];\n\n // The output size is half of the previous size.\n // If the previous sequence is | | | | _ _ _ _ | | | | _ _ _ _ (k=4),\n // we only need to output the indices at positions |, the indices at\n // positions _ can be thrown away, see Figure5(b) After Phase 2\n // (Merge phase) in the Bitonic Top K paper referenced above.\n // For example, the paper shows we only need to output the orange bars.\n // The output sequence should look like this | | | | | | | |.\n // Because the sequence is halved, to map the output index back\n // to the previous sequence to find the corresponding value,\n // we need to double the index. When we double the index,\n // we basically interpolate a position, so 2i looks like\n // | _ | _ | _ | _ | _ | _ | _. We move the | to the first k position\n // of each 2k positions by - elemIdx % k. E.g. for output at\n // index 4,5,6,7, we want to get the corresponding element at\n // original index 8,9,10,11, for output at index 8,9,10,11,\n // we want to get the corresponding element at original index\n // 16,17,18,19, so on and so forth.\n\n int i = elemIdx < k ? elemIdx : (elemIdx * 2 - imod(elemIdx, k));\n int i0 = firstPass == 1 ? i : int(getIndices(batch, i));\n int i1 = firstPass == 1 ? i + k : int(getIndices(batch, i + k));\n\n float x0 = getX(batch, i0);\n float x1 = i1 < n ? getX(batch, i1) : x0;\n\n setOutput(x0 >= x1 ? float(i0) : float(i1));\n }\n "};function Ou(e,n){null!==n&&e.disposeIntermediateTensorInfo(n)}function Fu(e){for(var n=1;nl){var h=c(function(e,t,a,r,o){for(var i=t[t.length-1],s=c([e.length/i,i],2),u=s[0],l=s[1],d=n.util.getTypedArrayFromDType(a,u*r),p=n.util.getTypedArrayFromDType("int32",u*r),h=function(n){var t=n*l,a=e.subarray(t,t+l),i=new Array(a.length);a.forEach((function(e,n){return i[n]={value:e,index:n}})),r=1;N/=2)k(T,N,[b,w]);for(var E=w;E>y;E/=2){var A=S(),_=new _u([b,E/2]),O=[[p],[null===I?1:0],[y]],F=I;for(I=a.runWebGLProgram(_,A,"int32",O),Ou(a,F),T=2*(R=y/2),N=R;N>=1;N/=2)k(T,N,I.shape)}var D=I;I=Tr({inputs:{x:I},backend:a,attrs:{begin:0,size:[b,i]}}),Ou(a,D);var P=_i({inputs:{x:C,indices:I},backend:a,attrs:{axis:1,batchDims:1}});Ou(a,C);var L=d.slice(0,-1);L.push(i),D=I,I=ya({inputs:{x:I},attrs:{shape:L},backend:a}),Ou(a,D);var B=P;return P=ya({inputs:{x:P},attrs:{shape:L},backend:a}),Ou(a,B),[P,I]}},Bu=function(e,n,t,a,r,o){this.variableNames=["Image","Transforms"],this.outputShape=o;var i,c="nearest"===t?1:2;switch(a){case"constant":default:i=1;break;case"reflect":i=2;break;case"wrap":i=3;break;case"nearest":i=4}this.userCode="\n float mapCoord(float outCoord, float len) {\n float inCoord = outCoord;\n if(".concat(i," == 2) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n if (inCoord < sz2) {\n inCoord = sz2 * float(int(float(-inCoord / sz2))) +\n inCoord;\n }\n inCoord = inCoord < -len ? inCoord + sz2 : -inCoord - 1.0;\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz2 = 2.0 * len;\n inCoord -= sz2 * float(int(float(inCoord / sz2)));\n if (inCoord >= len) {\n inCoord = sz2 - inCoord - 1.0;\n }\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (").concat(i," == 3) {\n if (inCoord < 0.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord += len * (float(int(float(-inCoord / sz))) + 1.0);\n }\n } else if (inCoord > len - 1.0) {\n if (len <= 1.0) {\n inCoord = 0.0;\n } else {\n float sz = len - 1.0;\n inCoord -= len * float(int(float(inCoord / sz)));\n }\n }\n return clamp(inCoord, 0.0, len - 1.0);\n } else if (").concat(i," == 4) {\n return clamp(outCoord, 0.0, len - 1.0);\n } else {\n return outCoord;\n }\n }\n\n float readWithFillValue(int batch, int coordY, int coordX,\n int channel) {\n float outputValue;\n if (0 <= coordY && coordY < ").concat(e," && 0 <= coordX && coordX < ").concat(n,") {\n outputValue = getImage(batch, coordY, coordX, channel);\n } else {\n outputValue = float(").concat(r,");\n }\n return outputValue;\n }\n\n void main() {\n ivec4 coords = getOutputCoords();\n float outputValue;\n int batch = coords[0];\n int x = coords[2];\n int y = coords[1];\n int channel = coords[3];\n float xf = float(x);\n float yf = float(y);\n float a1 = getTransforms(batch, 0);\n float a2 = getTransforms(batch, 1);\n float a3 = getTransforms(batch, 2);\n float b1 = getTransforms(batch, 3);\n float b2 = getTransforms(batch, 4);\n float b3 = getTransforms(batch, 5);\n float c1 = getTransforms(batch, 6);\n float c2 = getTransforms(batch, 7);\n float projection = c1 * xf + c2 * yf + 1.0;\n if (projection == 0.0) {\n outputValue = float(").concat(r,");\n } else {\n float inX = (a1 * xf + a2 * yf + a3) / projection;\n float inY = (b1 * xf + b2 * yf + b3) / projection;\n float mapX = mapCoord(inX, float(").concat(n,"));\n float mapY = mapCoord(inY, float(").concat(e,"));\n\n if (").concat(c," == 1) {\n int coordY = int(round(mapY));\n int coordX = int(round(mapX));\n outputValue = readWithFillValue(batch, coordY, coordX,\n channel);\n } else {\n float yFloor = floor(mapY);\n float xFloor = floor(mapX);\n float yCeil = yFloor + 1.0;\n float xCeil = xFloor + 1.0;\n float valueYFloor = (xCeil - mapX) *\n readWithFillValue(batch, int(yFloor), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yFloor), int(xCeil), channel);\n float valueYCeil = (xCeil - mapX) *\n readWithFillValue(batch, int(yCeil), int(xFloor), channel) +\n (mapX - xFloor) *\n readWithFillValue(batch, int(yCeil), int(xCeil), channel);\n outputValue = (yCeil - mapY) * valueYFloor +\n (mapY - yFloor) * valueYCeil;\n }\n }\n setOutput(outputValue);\n }\n ")},Vu={kernelName:n.Transform,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.image,o=n.transforms,i=a.interpolation,s=a.fillMode,u=a.fillValue,l=a.outputShape,d=c(r.shape,4),p=d[0],h=d[1],f=d[2],x=d[3],v=c(null!=l?l:[h,f],2),g=v[0],m=v[1],b=new Bu(h,f,i,s,u,[p,g,m,x]);return t.runWebGLProgram(b,[r,o],"float32")}},Wu={kernelName:n.Unique,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.attrs,a=e.backend,r=t.axis,o=n.x;le(o,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");var i=a.readSync(o.dataId),c=Ot(i,r,o.shape,o.dtype),s=c.outputValues,u=c.outputShape,l=c.indices;return[a.makeTensorInfo(u,o.dtype,s),a.makeTensorInfo([l.length],"int32",l)]}},Uu={kernelName:n.Unpack,backendName:"webgl",kernelFunc:function(e){var n=e.inputs,t=e.backend,a=e.attrs,r=n.value,o=a.axis;o<0&&(o+=r.shape.length);for(var i=r,c=i.shape.length,s=r.shape[o],u=new Array(c-1),l=0,d=0;d0&&(l="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return initializationValue;\n }\n "));var d="";r%t>0&&(d="\n if (inIdx < 0 || inIdx >= ".concat(r,") {\n return -1.0;\n }\n ")),this.userCode="\n const float initializationValue = ".concat("0.0",";\n\n float getValue(int batch, int inIdx) {\n ").concat(l,"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n ").concat(d,"\n return getSegmentIds(inIdx);\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n int batch = coords[0];\n int outIdx = coords[1];\n int inOffset = int(floor(float(outIdx) / float(\n ").concat(o,")) * float(").concat(t,"));\n int currentSeg = int(mod(float(outIdx), float(").concat(o,")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < ").concat(c,"; i += 4) {\n int inIdx = inOffset + i;\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0\n );\n\n ").concat(u,"\n }\n\n int inIdx = inOffset + ").concat(c,";\n if (").concat(1===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n int inIdxSeg = int(getSegmentIdAtIndex(inIdx));\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n 0,\n 0,\n 0\n );\n\n ").concat(u,"\n } else if (").concat(2===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n 0,\n 0\n );\n\n ").concat(u,"\n } else if (").concat(3===s,") {\n vec4 values = vec4(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n vec4 segFilter = vec4(\n int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,\n int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,\n 0\n );\n\n ").concat(u,"\n }\n setOutput(").concat("sumValue",");\n }\n ")},Gu=[Da,La,Va,Ua,za,ja,Ka,qa,er,nr,ar,or,cr,ur,dr,fr,xr,mr,br,Cr,Ir,Er,Ar,_r,Or,Br,Ur,zr,ra,jr,eo,uo,xo,go,mo,bo,Co,wo,So,Ro,_o,Oo,Fo,Po,Vo,Mo,Go,Xo,jo,Ko,Yo,Qo,Jo,ei,ti,ri,ci,li,fi,vi,bi,yi,Si,Ri,Ti,Ei,Oi,Di,Li,ta,Bi,Zr,Wi,Mi,zi,ca,Hi,Ki,qi,Qi,Ji,ec,tc,rc,cc,uc,dc,hc,fc,xc,mc,bc,Cc,yc,wc,Sc,Tc,Ec,Vc,Ca,Wc,Mc,zc,Hc,Dr,Kc,Qc,Zc,ns,as,la,rs,os,is,cs,us,Lr,Oc,ds,hs,xs,wa,ms,Cs,Is,ks,Ns,As,Os,Ds,Bs,Ws,Ms,zs,Hs,Ks,Ys,Zs,Nr,Bc,$s,eu,nu,tu,au,ru,ou,iu,uu,du,fu,xu,vu,mu,bu,Cu,yu,Pc,Aa,Iu,ku,Ru,Eu,Lu,Vu,Oa,Wu,Uu,{kernelName:n.UnsortedSegmentSum,backendName:"webgl",kernelFunc:function(e){var t=e.inputs,a=e.backend,r=e.attrs,o=t.x,i=t.segmentIds,c=r.numSegments,s=o.shape.length,u=[],l=0,d=n.backend_util.getAxesPermutation([l],s),p=o;null!=d&&(p=_a({inputs:{x:o},backend:a,attrs:{perm:d}}),u.push(p),l=n.backend_util.getInnerMostAxes(1,s)[0]);var h=n.backend_util.segment_util.computeOutShape(p.shape,l,c),f=n.util.sizeFromShape([p.shape[l]]),x=ya({inputs:{x:p},backend:a,attrs:{shape:[-1,f]}});u.push(x);var v=n.sumOutType(o.dtype),g=function(e,t,r,o,i){var c=e.shape[0],s=e.shape[1],l=n.backend_util.segment_util.segOpComputeOptimalWindowSize(s,i),d=new Mu({windowSize:l,inSize:s,batchSize:c,numSegments:i},t),p=a.compileAndRun(d,[e,r],o);if(u.push(p),p.shape[1]===i)return p;var h=ss({backend:a,attrs:{start:0,stop:i,step:1,dtype:"float32"}}),f=Nu({inputs:{x:h},backend:a,attrs:{reps:[s/l]}});return u.push(h),u.push(f),g(p,t,f,o,i)},m=ya({inputs:{x:g(x,"unsortedSegmentSum",i,v,c)},backend:a,attrs:{shape:h}}),b=m;if(null!=d){u.push(m);var C=n.backend_util.getUndoAxesPermutation(d);b=_a({inputs:{x:b},backend:a,attrs:{perm:C}})}return u.forEach((function(e){return a.disposeIntermediateTensorInfo(e)})),b}},Yc];try{for(var zu=i(Gu),Xu=zu.next();!Xu.done;Xu=zu.next()){var Hu=Xu.value;n.registerKernel(Hu)}}catch(e){Du={error:e}}finally{try{Xu&&!Xu.done&&(Pu=zu.return)&&Pu.call(zu)}finally{if(Du)throw Du.error}}e.GPGPUContext=pn,e.MathBackendWebGL=Yt,e.forceHalfFloat=Qt,e.gpgpu_util=dn,e.setWebGLContext=f,e.version_webgl="4.14.0",e.webgl=Zt,e.webgl_util=de})); \ No newline at end of file diff --git a/experiments/ribbon02/dist/lib/tfjs-converter.js b/experiments/ribbon02/dist/lib/tfjs-converter.js index 0b17c85a..9e420de0 100644 --- a/experiments/ribbon02/dist/lib/tfjs-converter.js +++ b/experiments/ribbon02/dist/lib/tfjs-converter.js @@ -1,2 +1,2 @@ /*! For license information please see tfjs-converter.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{},e.tf)}(this,(function(e,t){"use strict";var n=function(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,t}(t);t.env().registerFlag("KEEP_INTERMEDIATE_TENSORS",(function(){return!1}),(function(e){e&&console.warn("Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.")}));var r,a,o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},o(e,t)};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function i(e,t,n,r){return new(n||(n=Promise))((function(a,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function i(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,i)}u((r=r.apply(e,t||[])).next())}))}function u(e,t){var n,r,a,o,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function i(o){return function(i){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(a=2&o[0]?r.return:o[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;switch(r=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((a=(a=s.trys).length>0&&a[a.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function c(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return s}function l(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a0?Object.keys(l).forEach((function(e){var t=c(g(e),1)[0],n=i[t];n&&(n.signatureKey=l[e],u.push(n))})):u=a;var f={};null!=e.library&&null!=e.library.function&&(f=e.library.function.reduce((function(e,t){return e[t.signature.name]=n.mapFunction(t),e}),{}));var m={nodes:i,inputs:u,outputs:p,weights:o,placeholders:a,signature:t,functions:f};return s.length>0&&(m.initNodes=s),m},e.prototype.mapSignatureEntries=function(e){return Object.keys(e||{}).reduce((function(t,n){return t[e[n].name]=n,t}),{})},e.prototype.mapNode=function(e){var t=h(e.op)||this.opMappers[e.op]||{};null==e.attr&&(e.attr={});var n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map((function(e){return e.startsWith("^")?e.slice(1):e})),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr,outputs:t.outputs};return null!=t.inputs&&(n.inputParams=t.inputs.reduce((function(e,t){return e[t.name]={type:t.type,inputIndexStart:t.start,inputIndexEnd:t.end},e}),{})),null!=t.attrs&&(n.attrParams=t.attrs.reduce((function(t,n){var r=n.type,a=void 0;switch(n.type){case"string":void 0===(a=q(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=q(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"string[]":void 0===(a=$(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=$(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number":void 0===(a=G(e.attr,n.tfName,n.defaultValue||0))&&n.tfDeprecatedName&&(a=G(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number[]":void 0===(a=J(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=J(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool":void 0===(a=U(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=U(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool[]":void 0===(a=te(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=te(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape":void 0===(a=X(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=X(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape[]":void 0===(a=ee(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=ee(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype":void 0===(a=Z(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=Z(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype[]":void 0===(a=Q(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=Q(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"func":void 0===(a=H(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=H(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error("Unsupported param type: ".concat(n.type," for op: ").concat(e.op))}return t[n.name]={value:a,type:r},t}),{})),n},e.prototype.mapFunction=function(e){var t=this,n=e.nodeDef,r=[],a={};null!=n&&(a=n.reduce((function(e,n){return e[n.name]=t.mapNode(n),"Const"===n.op&&r.push(e[n.name]),e}),{}));var o=[],s=[];e.signature.inputArg.forEach((function(e){var t=c(g(e.name),1)[0],n={name:t,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:W(e.type),type:"dtype"}},children:[]};n.signatureKey=e.name,o.push(n),a[t]=n})),Object.keys(a).forEach((function(e){var t=a[e];t.inputNames.forEach((function(e,n){var r=c(g(e),3),o=r[0],s=r[2],i=a[o];if(null!=i.outputs){var u=i.outputs.indexOf(s);if(-1!==u){var p="".concat(o,":").concat(u);t.inputNames[n]=p}}t.inputs.push(i),i.children.push(t)}))}));var i=e.ret;e.signature.outputArg.forEach((function(e){var t=c(g(i[e.name]),2),n=t[0],r=t[1],o=a[n];null!=o&&(o.defaultOutput=r,s.push(o))}));var u=this.mapArgsToSignature(e);return{nodes:a,inputs:o,outputs:s,weights:r,placeholders:[],signature:u}},e.prototype.mapArgsToSignature=function(e){var t=this;return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((function(e,n){return e[n.name]=t.mapArgToTensorInfo(n),e}),{}),outputs:e.signature.outputArg.reduce((function(n,r){return n[r.name]=t.mapArgToTensorInfo(r,e.ret),n}),{})}},e.prototype.mapArgToTensorInfo=function(e,t){var n=e.name;return null!=t&&(n=t[n]),{name:n,dtype:e.type}},e}();function j(e,n){var r=Array.isArray(e)?String.fromCharCode.apply(null,e):function(e){var n=t.env().global;if(void 0!==n.atob)return n.atob(e);if("undefined"!=typeof Buffer)return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}(e);return n?r:r.toLowerCase()}function q(e,t,n,r){void 0===r&&(r=!1);var a=e[t];return null!=a?j(a.s,r):n}function U(e,t,n){var r=e[t];return r?r.b:n}function G(e,t,n){var r=e[t]||{},a=null!=r.i?r.i:null!=r.f?r.f:n;return"number"==typeof a?a:parseInt(a,10)}function W(e){switch("string"==typeof e&&(e=r[e]),e){case r.DT_FLOAT:case r.DT_HALF:return"float32";case r.DT_INT32:case r.DT_INT64:case r.DT_INT8:case r.DT_UINT8:return"int32";case r.DT_BOOL:return"bool";case r.DT_DOUBLE:return"float32";case r.DT_STRING:return"string";default:return null}}function H(e,t,n){var r=e[t];return r&&r.func?r.func.name:n}function Z(e,t,n){var r=e[t];return r&&r.type?W(r.type):n}function Q(e,t,n){var r=e[t];return r&&r.list&&r.list.type?r.list.type.map((function(e){return W(e)})):n}function Y(e){if(!e.unknownRank)return null!=e.dim?e.dim.map((function(e){return"number"==typeof e.size?e.size:parseInt(e.size,10)})):[]}function X(e,t,n){var r=e[t];return r&&r.shape?Y(r.shape):n}function J(e,t,n){var r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map((function(e){return"number"==typeof e?e:parseInt(e,10)})):n}function $(e,t,n,r){void 0===r&&(r=!1);var a=e[t];return a&&a.list&&a.list.s?a.list.s.map((function(e){return j(e,r)})):n}function ee(e,t,n){var r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map((function(e){return Y(e)})):n}function te(e,t,n){var r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var ne=function(){function e(e,t,n){var r=this;this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map((function(e){return r.getInput(e)})),null!=e.rawAttrs&&(this.attrs=Object.keys(e.rawAttrs).reduce((function(e,t){return e[t]=r.getAttr(t),e}),{}))}return e.prototype.getInput=function(e){return m(e,this.tensorMap,this.context)},e.prototype.getAttr=function(e,t){var n=this.node.rawAttrs[e];if(null!=n.tensor)return m(e,this.tensorMap,this.context);if(null!=n.i||null!=n.f)return G(this.node.rawAttrs,e,t);if(null!=n.s)return q(this.node.rawAttrs,e,t);if(null!=n.b)return U(this.node.rawAttrs,e,t);if(null!=n.shape)return X(this.node.rawAttrs,e,t);if(null!=n.type)return Z(this.node.rawAttrs,e,t);if(null!=n.list){if(null!=n.list.i||null!=n.list.f)return J(this.node.rawAttrs,e,t);if(null!=n.list.s)return $(this.node.rawAttrs,e,t);if(null!=n.list.shape)return ee(this.node.rawAttrs,e,t);if(null!=n.list.b)return te(this.node.rawAttrs,e,t);if(null!=n.list.type)return Q(this.node.rawAttrs,e,t)}return t},e}(),re=function(){function e(){}return e.prototype.refCount=function(e){return ae("refCount")},e.prototype.incRef=function(e){return ae("incRef")},e.prototype.timerAvailable=function(){return!0},e.prototype.time=function(e){return ae("time")},e.prototype.read=function(e){return ae("read")},e.prototype.readSync=function(e){return ae("readSync")},e.prototype.readToGPU=function(e,t){return ae("readToGPU")},e.prototype.numDataIds=function(){return ae("numDataIds")},e.prototype.disposeData=function(e,t){return ae("disposeData")},e.prototype.write=function(e,t,n){return ae("write")},e.prototype.move=function(e,t,n,r,a){return ae("move")},e.prototype.createTensorFromGPUData=function(e,t,n){return ae("createTensorFromGPUData")},e.prototype.memory=function(){return ae("memory")},e.prototype.floatPrecision=function(){return ae("floatPrecision")},e.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},e.prototype.dispose=function(){return ae("dispose")},e}();function ae(e){throw new Error("'".concat(e,"' not yet implemented or not found in the registry. ")+"This kernel may not be supported by the tfjs backend you have chosen")}function oe(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function se(e,t,n){void 0===n&&(n=""),oe(pe(e,t),(function(){return n+" Shapes ".concat(e," and ").concat(t," must match")}))}function ie(e){oe(null!=e,(function(){return"The input to the tensor constructor must be a non-null value."}))}function ue(e){if(0===e.length)return 1;for(var t=e[0],n=1;n=-n&&e=0;--r)n[r]=n[r+1]*e[r+1];return n}function be(e,t,n,r){void 0===r&&(r=!1);var a=new Array;if(1===t.length)for(var o=t[0]*(r?2:1),s=0;s=0,(function(){return"Tensor must have a shape comprised of positive integers but got "+"shape [".concat(e,"].")}))}))}function Te(e){return e&&e.then&&"function"==typeof e.then}var Se=function(){function e(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=_e,this.populateURLFlags()}return e.prototype.setPlatform=function(e,t){null!=this.platform&&(Ie().getBool("IS_TEST")||Ie().getBool("PROD")||console.warn("Platform ".concat(this.platformName," has already been set. ")+"Overwriting the platform with ".concat(e,"."))),this.platformName=e,this.platform=t},e.prototype.registerFlag=function(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){var r=this.urlFlags[e];Ie().getBool("IS_TEST")||Ie().getBool("PROD")||console.warn("Setting feature override from URL ".concat(e,": ").concat(r,".")),this.set(e,r)}},e.prototype.getAsync=function(e){return i(this,void 0,void 0,(function(){var t,n;return u(this,(function(r){switch(r.label){case 0:return e in this.flags?[2,this.flags[e]]:(t=this.flags,n=e,[4,this.evaluateFlag(e)]);case 1:return t[n]=r.sent(),[2,this.flags[e]]}}))}))},e.prototype.get=function(e){if(e in this.flags)return this.flags[e];var t=this.evaluateFlag(e);if(Te(t))throw new Error("Flag ".concat(e," cannot be synchronously evaluated. ")+"Please use getAsync() instead.");return this.flags[e]=t,this.flags[e]},e.prototype.getNumber=function(e){return this.get(e)},e.prototype.getBool=function(e){return this.get(e)},e.prototype.getString=function(e){return this.get(e)},e.prototype.getFlags=function(){return this.flags},Object.defineProperty(e.prototype,"features",{get:function(){return this.flags},enumerable:!1,configurable:!0}),e.prototype.set=function(e,t){if(null==this.flagRegistry[e])throw new Error("Cannot set flag ".concat(e," as it has not been registered."));this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)},e.prototype.evaluateFlag=function(e){if(null==this.flagRegistry[e])throw new Error("Cannot evaluate flag '".concat(e,"': no evaluation function found."));return this.flagRegistry[e].evaluationFn()},e.prototype.setFlags=function(e){this.flags=Object.assign({},e)},e.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},e.prototype.populateURLFlags=function(){var e=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var t=this.getQueryParams(this.global.location.search);"tfjsflags"in t&&t.tfjsflags.split(",").forEach((function(t){var n=c(t.split(":"),2),r=n[0],a=n[1];e.urlFlags[r]=function(e,t){var n=t.toLowerCase();return"true"===n||"false"===n?"true"===n:"".concat(+n)===n?+n:t}(0,a)}))}},e}();function _e(e){var t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(e){for(var n=[],r=1;r>>=0)&&e<256)&&(r=$e[e])?r:(n=nt(e,(0|e)<0?-1:0,!0),a&&($e[e]=n),n):(a=-128<=(e|=0)&&e<128)&&(r=Je[e])?r:(n=nt(e,e<0?-1:0,!1),a&&(Je[e]=n),n)}function tt(e,t){if(isNaN(e))return t?lt:ct;if(t){if(e<0)return lt;if(e>=it)return yt}else{if(e<=-ut)return gt;if(e+1>=ut)return mt}return e<0?tt(-e,t).neg():nt(e%st|0,e/st|0,t)}function nt(e,t,n){return new Ye(e,t,n)}Ye.fromInt=et,Ye.fromNumber=tt,Ye.fromBits=nt;var rt=Math.pow;function at(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return ct;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return at(e.substring(1),t,n).neg();for(var a=tt(rt(n,8)),o=ct,s=0;s>>0:this.low},vt.toNumber=function(){return this.unsigned?(this.high>>>0)*st+(this.low>>>0):this.high*st+(this.low>>>0)},vt.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((o=i).isZero())return u+s;for(;u.length<6;)u="0"+u;s=""+u+s}},vt.getHighBits=function(){return this.high},vt.getHighBitsUnsigned=function(){return this.high>>>0},vt.getLowBits=function(){return this.low},vt.getLowBitsUnsigned=function(){return this.low>>>0},vt.getNumBitsAbs=function(){if(this.isNegative())return this.eq(gt)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},vt.isOdd=function(){return 1==(1&this.low)},vt.isEven=function(){return 0==(1&this.low)},vt.equals=function(e){return Xe(e)||(e=ot(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},vt.eq=vt.equals,vt.notEquals=function(e){return!this.eq(e)},vt.neq=vt.notEquals,vt.ne=vt.notEquals,vt.lessThan=function(e){return this.comp(e)<0},vt.lt=vt.lessThan,vt.lessThanOrEqual=function(e){return this.comp(e)<=0},vt.lte=vt.lessThanOrEqual,vt.le=vt.lessThanOrEqual,vt.greaterThan=function(e){return this.comp(e)>0},vt.gt=vt.greaterThan,vt.greaterThanOrEqual=function(e){return this.comp(e)>=0},vt.gte=vt.greaterThanOrEqual,vt.ge=vt.greaterThanOrEqual,vt.compare=function(e){if(Xe(e)||(e=ot(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},vt.comp=vt.compare,vt.negate=function(){return!this.unsigned&&this.eq(gt)?gt:this.not().add(dt)},vt.neg=vt.negate,vt.add=function(e){Xe(e)||(e=ot(e));var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,i=e.low>>>16,u=0,p=0,c=0,l=0;return c+=(l+=a+(65535&e.low))>>>16,p+=(c+=r+i)>>>16,u+=(p+=n+s)>>>16,u+=t+o,nt((c&=65535)<<16|(l&=65535),(u&=65535)<<16|(p&=65535),this.unsigned)},vt.subtract=function(e){return Xe(e)||(e=ot(e)),this.add(e.neg())},vt.sub=vt.subtract,vt.multiply=function(e){if(this.isZero())return ct;if(Xe(e)||(e=ot(e)),Qe)return nt(Qe.mul(this.low,this.high,e.low,e.high),Qe.get_high(),this.unsigned);if(e.isZero())return ct;if(this.eq(gt))return e.isOdd()?gt:ct;if(e.eq(gt))return this.isOdd()?gt:ct;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(pt)&&e.lt(pt))return tt(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,i=e.low>>>16,u=65535&e.low,p=0,c=0,l=0,d=0;return l+=(d+=a*u)>>>16,c+=(l+=r*u)>>>16,l&=65535,c+=(l+=a*i)>>>16,p+=(c+=n*u)>>>16,c&=65535,p+=(c+=r*i)>>>16,c&=65535,p+=(c+=a*s)>>>16,p+=t*u+n*i+r*s+a*o,nt((l&=65535)<<16|(d&=65535),(p&=65535)<<16|(c&=65535),this.unsigned)},vt.mul=vt.multiply,vt.divide=function(e){if(Xe(e)||(e=ot(e)),e.isZero())throw Error("division by zero");var t,n,r;if(Qe)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?nt((this.unsigned?Qe.div_u:Qe.div_s)(this.low,this.high,e.low,e.high),Qe.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?lt:ct;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return lt;if(e.gt(this.shru(1)))return ht;r=lt}else{if(this.eq(gt))return e.eq(dt)||e.eq(ft)?gt:e.eq(gt)?dt:(t=this.shr(1).div(e).shl(1)).eq(ct)?e.isNegative()?dt:ft:(n=this.sub(e.mul(t)),r=t.add(n.div(e)));if(e.eq(gt))return this.unsigned?lt:ct;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=ct}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:rt(2,a-48),s=tt(t),i=s.mul(e);i.isNegative()||i.gt(n);)i=(s=tt(t-=o,this.unsigned)).mul(e);s.isZero()&&(s=dt),r=r.add(s),n=n.sub(i)}return r},vt.div=vt.divide,vt.modulo=function(e){return Xe(e)||(e=ot(e)),Qe?nt((this.unsigned?Qe.rem_u:Qe.rem_s)(this.low,this.high,e.low,e.high),Qe.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},vt.mod=vt.modulo,vt.rem=vt.modulo,vt.not=function(){return nt(~this.low,~this.high,this.unsigned)},vt.and=function(e){return Xe(e)||(e=ot(e)),nt(this.low&e.low,this.high&e.high,this.unsigned)},vt.or=function(e){return Xe(e)||(e=ot(e)),nt(this.low|e.low,this.high|e.high,this.unsigned)},vt.xor=function(e){return Xe(e)||(e=ot(e)),nt(this.low^e.low,this.high^e.high,this.unsigned)},vt.shiftLeft=function(e){return Xe(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?nt(this.low<>>32-e,this.unsigned):nt(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):nt(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},vt.shr=vt.shiftRight,vt.shiftRightUnsigned=function(e){if(Xe(e)&&(e=e.toInt()),0==(e&=63))return this;var t=this.high;return e<32?nt(this.low>>>e|t<<32-e,t>>>e,this.unsigned):nt(32===e?t:t>>>e-32,0,this.unsigned)},vt.shru=vt.shiftRightUnsigned,vt.shr_u=vt.shiftRightUnsigned,vt.toSigned=function(){return this.unsigned?nt(this.low,this.high,!1):this},vt.toUnsigned=function(){return this.unsigned?this:nt(this.low,this.high,!0)},vt.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},vt.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},vt.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},Ye.fromBytes=function(e,t,n){return n?Ye.fromBytesLE(e,t):Ye.fromBytesBE(e,t)},Ye.fromBytesLE=function(e,t){return new Ye(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},Ye.fromBytesBE=function(e,t){return new Ye(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};var bt=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(Ze),xt=bt||function(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),e}({__proto__:null,default:bt},[Ze]);function Nt(e){return xt.fromString(e,!0,16)}function wt(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=_t(e)),Ie().getBool("DEBUG")&&function(e,t){for(var n=0;n0?f:""," ")}}console.log("%c".concat(i,"\t%c").concat(s,"\t%c").concat(u,"D ").concat(c,"\t%c").concat(p,"\t%c").concat(l,"\t%c").concat(o),"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},e}();function Ot(e,t,n,r){var a=ve(t),o=function(e,t,n,r){var a=ue(t),o=r[r.length-1],s=new Array(o).fill(0),i=t.length,u="complex64"===n?Ct(e):e;if(i>1)for(var p=0;p20){var p=3*s,d=Array.from(e.slice(0,p)),h=Array.from(e.slice((i-3)*s,i*s));return"complex64"===n&&(d=Ct(d),h=Ct(h)),["["+d.map((function(e,t){return Dt(e,a[t],n)})).join(", ")+", ..., "+h.map((function(e,t){return Dt(e,a[i-3+t],n)})).join(", ")+"]"]}return["["+("complex64"===n?Ct(e):Array.from(e)).map((function(e,t){return Dt(e,a[t],n)})).join(", ")+"]"]}var f=t.slice(1),m=r.slice(1),y=r[0]*s,g=[];if(i>20){for(var v=0;v<3;v++){var b=(x=v*y)+y;g.push.apply(g,l([],c(Mt(e.slice(x,b),f,n,m,a,!1)),!1))}for(g.push("..."),v=i-3;v0?g[0]+N:""),v=1;v=this.shape[a]){var u="Requested out of range element at ".concat(n,". ")+" Buffer shape=".concat(this.shape);throw new Error(u)}a++}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}for(var c=n[n.length-1],l=0;l0)throw new Error("Backend '".concat(this.backendName,"' has an internal memory leak ")+"(".concat(s," data ids) after running '").concat(e,"'"))},e.prototype.runKernelFunc=function(e){var t,n,r,a=this,o=[],s=this.isTapeOn(),i=this.state.numBytes,u=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;var p=Xt(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(Xt(e)){var c=e.kernelName,l=e.inputs,d=e.attrs;null==this.backendName&&this.backend;var h=Ue(c,this.backendName);oe(null!=h,(function(){return"Cannot find registered kernel '".concat(c,"' for backend '").concat(a.backendName,"'")})),n=function(){var e=a.backend.numDataIds();r=h.kernelFunc({inputs:l,attrs:d,backend:a.backend});var t=Array.isArray(r)?r:[r];a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(c,e,t);var n=t.map((function(e){return null!=e.rank?e:a.makeTensorFromTensorInfo(e)}));if(s){var i=a.getTensorsForGradient(c,l,n);o=a.saveTensorsForBackwardMode(i)}return n}}else{var f=e.forwardFunc,m=function(e){s&&(o=e.map((function(e){return a.keep(a.clone(e))})))};n=function(){var e=a.backend.numDataIds();r=a.tidy((function(){return f(a.backend,m)}));var t=Array.isArray(r)?r:[r];return a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(p,e,t),t}}var y,g=e.inputs,v=e.attrs,b=Xt(e)?null:e.backwardsFunc;return this.scopedRun((function(){return a.state.kernelDepth++}),(function(){return a.state.kernelDepth--}),(function(){a.ENV.getBool("DEBUG")||a.state.profiling?(y=a.profiler.profileKernel(p,g,(function(){return n()})),a.ENV.getBool("DEBUG")&&a.profiler.logKernelProfile(y),t=y.outputs):t=n()})),s&&this.addTapeNode(p,g,t,b,o,v),this.state.profiling&&this.state.activeProfile.kernels.push({name:p,bytesAdded:this.state.numBytes-i,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-u,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(g).map((function(e){return null!=g[e]?g[e].shape:null})),outputShapes:t.map((function(e){return e.shape})),kernelTimeMs:y.timeMs,extraInfo:y.extraInfo}),Array.isArray(r)?t:t[0]},e.prototype.saveTensorsForBackwardMode=function(e){var t=this;return e.map((function(e){return t.keep(t.clone(e))}))},e.prototype.getTensorsForGradient=function(e,t,n){var r=Ge(e);if(null!=r){var a=r.inputsToSave||[],o=r.outputsToSave||[],s=void 0;r.saveAllInputs?(oe(Array.isArray(t),(function(){return"saveAllInputs is true, expected inputs to be an array."})),s=Object.keys(t).map((function(e){return t[e]}))):s=a.map((function(e){return t[e]}));var i=n.filter((function(e,t){return o[t]}));return s.concat(i)}return[]},e.prototype.makeTensor=function(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var a=e;"string"===n&&me(e[0])&&(a=e.map((function(e){return t=e,void 0===n&&(n="utf-8"),n=n||"utf-8",Ie().platform.encode(t,n);var t,n})));var o=r.write(a,t,n),s=new Vt(t,n,o,this.nextTensorId());if(this.trackTensor(s,r),"string"===n){var i=this.state.tensorInfo.get(o),u=function(e){if(null==e)return 0;var t=0;return e.forEach((function(e){return t+=e.length})),t}(a);this.state.numBytes+=u-i.bytes,i.bytes=u}return s},e.prototype.makeTensorFromDataId=function(e,t,n,r){var a={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(a,r)},e.prototype.makeTensorFromTensorInfo=function(e,t){var n=e.dataId,r=e.shape,a=e.dtype,o=new Vt(r,a,n,this.nextTensorId());return this.trackTensor(o,t),o},e.prototype.makeVariable=function(e,t,n,r){void 0===t&&(t=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));var a=new Ut(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error("Variable with name ".concat(a.name," was already registered"));return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},e.prototype.trackTensor=function(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;var n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*fe(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Ut||this.track(e)},e.prototype.incRef=function(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)},e.prototype.removeDataId=function(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)},e.prototype.disposeTensor=function(e){if(this.state.tensorInfo.has(e.dataId)){var t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){var n=e.size*fe(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}},e.prototype.disposeVariables=function(){for(var e in this.state.registeredVariables){var t=this.state.registeredVariables[e];this.disposeVariable(t)}},e.prototype.disposeVariable=function(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]},e.prototype.memory=function(){var e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e},e.prototype.profile=function(e){return i(this,void 0,void 0,(function(){var t,n,r,a,o,s,i,d,h,f,m;return u(this,(function(u){switch(u.label){case 0:return this.state.profiling=!0,t=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,e()];case 1:r.result=u.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,l([],c(this.state.activeProfile.kernels.map((function(e){return e.totalBytesSnapshot}))),!1)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n,u.label=2;case 2:u.trys.push([2,8,9,10]),a=p(this.state.activeProfile.kernels),o=a.next(),u.label=3;case 3:return o.done?[3,7]:(s=o.value,i=s,[4,s.kernelTimeMs]);case 4:return i.kernelTimeMs=u.sent(),d=s,[4,s.extraInfo];case 5:d.extraInfo=u.sent(),u.label=6;case 6:return o=a.next(),[3,3];case 7:return[3,10];case 8:return h=u.sent(),f={error:h},[3,10];case 9:try{o&&!o.done&&(m=a.return)&&m.call(a)}finally{if(f)throw f.error}return[7];case 10:return[2,this.state.activeProfile]}}))}))},e.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},e.prototype.addTapeNode=function(e,t,n,r,a,o){var s=this,i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},u=Ge(e);null!=u&&(r=u.gradFunc),null!=r&&(i.gradient=function(e){return e=e.map((function(e,t){if(null==e){var r=n[t],a=we(r.size,r.dtype);return s.makeTensor(a,r.shape,r.dtype)}return e})),r(e.length>1?e:e[0],a,o)}),this.state.activeTape.push(i)},e.prototype.keep=function(e){return e.kept=!0,e},e.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},e.prototype.endTape=function(){this.state.gradientDepth--},e.prototype.startScope=function(e){var t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t},e.prototype.endScope=function(e){for(var t=this,n=Qt(e),r=new Set(n.map((function(e){return e.id}))),a=0;a0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '".concat(n.dtype,"'"));var o=this.scopedRun((function(){return a.startTape()}),(function(){return a.endTape()}),(function(){return a.tidy("forward",e)}));oe(o instanceof Vt,(function(){return"The result y returned by f() must be a tensor."}));var s=function(e,t,n){for(var r={},a={},o=0;o=0;o--)for(s=(f=e[o]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var e,r,i={};i[o.id]=null==n?(r=Ne(ue(e=o.shape),"float32"),en.makeTensor(r,e,"float32")):n,function(e,t,n,r){for(var a=function(a){var o=t[a],s=[];if(o.outputs.forEach((function(t){var n=e[t.id];null!=n?s.push(n):s.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found "+"for ".concat(o.kernelName,"."));var i=o.gradient(s),u=function(t){if(!(t in i))throw new Error("Cannot backprop through input ".concat(t,". ")+"Available gradients found: ".concat(Object.keys(i),"."));var a=n((function(){return i[t]()}));if("float32"!==a.dtype)throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"".concat(t," must have 'float32' dtype, but has '").concat(a.dtype,"'"));var s=o.inputs[t];if(!pe(a.shape,s.shape))throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"'".concat(t,"' has shape '").concat(a.shape,"', which does not match ")+"the shape of the input '".concat(s.shape,"'"));if(null==e[s.id])e[s.id]=a;else{var u=e[s.id];e[s.id]=r(u,a),u.dispose()}};for(var p in o.inputs)u(p)},o=t.length-1;o>=0;o--)a(o)}(i,s,(function(e){return a.tidy(e)}),tn);var u=t.map((function(e){return i[e.id]}));return 0===a.state.gradientDepth&&(a.state.activeTape.forEach((function(e){var t,n;try{for(var r=p(e.saved),a=r.next();!a.done;a=r.next())a.value.dispose()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}})),a.state.activeTape=null),{value:o,grads:u}}))},e.prototype.customGrad=function(e){var t=this;return oe(ge(e),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],a=0;a0,(function(){return"Element arr[".concat(n.join("]["),"] should be a primitive, ")+"but is an array of ".concat(e.length," elements")})),oe(e.length===t[0],(function(){return"Element arr[".concat(n.join("]["),"] should have ").concat(t[0]," ")+"elements, but has ".concat(e.length," elements")}));for(var r=t.slice(1),a=0;a=0&&(a=r),an(r,a,t,n),null==e||!St(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){var o=null==e?"null":e.constructor.name;throw new Error("Argument '".concat(t,"' passed to '").concat(n,"' must be a ")+"Tensor or TensorLike, but got '".concat(o,"'"))}var s=nn(e,a);St(e)||Array.isArray(e)||(e=[e]);var i="string"!==a?wt(e,a):_t(e,[],!0);return en.makeTensor(i,s,a)}function sn(e,t,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(e))throw new Error("Argument ".concat(t," passed to ").concat(n," must be a ")+"`Tensor[]` or `TensorLike[]`");return e.map((function(e,a){return on(e,"".concat(t,"[").concat(a,"]"),n,r)}))}var un="__op";function pn(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+"".concat(t.length," keys."));var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=un;var a=function(){for(var e=[],t=0;t=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+"".concat(e.length)}));var t=e.map((function(e,t){return on(e,"tensors".concat(t),"addN")})),n=t[0];t.forEach((function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((function(e){if(!pe(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=t;return en.runKernel("AddN",r)}}),mn=pn({all_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:on(e,"x","all","bool")},a={axis:t,keepDims:n};return en.runKernel("All",r,a)}}),yn=pn({any_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:on(e,"x","any","bool")},a={axis:t,keepDims:n};return en.runKernel("Any",r,a)}}),gn=pn({argMax_:function(e,t){void 0===t&&(t=0);var n={x:on(e,"x","argMax")},r={axis:t};return en.runKernel("ArgMax",n,r)}}),vn=pn({argMin_:function(e,t){void 0===t&&(t=0);var n={x:on(e,"x","argMin")},r={axis:t};return en.runKernel("ArgMin",n,r)}}),bn=pn({asin_:function(e){var t={x:on(e,"x","asin")};return en.runKernel("Asin",t)}}),xn=pn({asinh_:function(e){var t={x:on(e,"x","asinh")};return en.runKernel("Asinh",t)}}),Nn=pn({atan_:function(e){var t={x:on(e,"x","atan")};return en.runKernel("Atan",t)}}),wn=pn({atan2_:function(e,t){var n,r=on(e,"a","atan2"),a=on(t,"b","atan2"),o={a:r=(n=c(Zt(r,a),2))[0],b:a=n[1]};return en.runKernel("Atan2",o)}}),kn=pn({atanh_:function(e){var t={x:on(e,"x","atanh")};return en.runKernel("Atanh",t)}}),Tn=pn({cast_:function(e,t){var n=on(e,"x","cast");if(!function(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}(t))throw new Error("Failed to cast to unknown dtype ".concat(t));if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={x:n},a={dtype:t};return en.runKernel(Ce,r,a)}});function Sn(e,t,n,r,a,o,s,i){var u,p;void 0===s&&(s=!1),void 0===i&&(i="channelsLast");var l=c([-1,-1,-1,-1],4),d=l[0],h=l[1],f=l[2],m=l[3];if("channelsLast"===i)d=(u=c(e,4))[0],h=u[1],f=u[2],m=u[3];else{if("channelsFirst"!==i)throw new Error("Unknown dataFormat ".concat(i));d=(p=c(e,4))[0],m=p[1],h=p[2],f=p[3]}var y,g=c(t,4),v=g[0],b=g[1],x=g[3],N=c(_n(n),2),w=N[0],k=N[1],T=c(_n(r),2),S=T[0],_=T[1],E=En(v,S),I=En(b,_),O=function(e,t,n,r,a,o,s,i,u){var p,c,l;if("number"==typeof e){p={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};var d=function(e,t,n,r,a){null==r&&(r=function(e,t,n,r){void 0===r&&(r=1);var a=En(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}(e,t,n));var o=e[1];return[In((e[0]-t+2*r)/n+1,a),In((o-t+2*r)/n+1,a)]}([t,n],o,r,e,i);c=d[0],l=d[1]}else if("same"===e){c=Math.ceil(t/r),l=Math.ceil(n/a);var h=Math.max(0,(c-1)*r+o-t),f=Math.max(0,(l-1)*a+s-n);p={top:m=Math.floor(h/2),bottom:y=h-m,left:g=Math.floor(f/2),right:v=f-g,type:"SAME"}}else if("valid"===e)p={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-o+1)/r),l=Math.ceil((n-s+1)/a);else{if("object"!=typeof e)throw Error("Unknown padding parameter: ".concat(e));var m,y,g,v;p={top:m="channelsLast"===u?e[1][0]:e[2][0],bottom:y="channelsLast"===u?e[1][1]:e[2][1],left:g="channelsLast"===u?e[2][0]:e[3][0],right:v="channelsLast"===u?e[2][1]:e[3][1],type:0===m&&0===y&&0===g&&0===v?"VALID":"EXPLICIT"},c=In((t-o+m+y)/r+1,i),l=In((n-s+g+v)/a+1,i)}return{padInfo:p,outHeight:c,outWidth:l}}(a,h,f,w,k,E,I,o,i),D=O.padInfo,A=O.outHeight,M=O.outWidth,C=s?x*m:x;return"channelsFirst"===i?y=[d,C,A,M]:"channelsLast"===i&&(y=[d,A,M,C]),{batchSize:d,dataFormat:i,inHeight:h,inWidth:f,inChannels:m,outHeight:A,outWidth:M,outChannels:C,padInfo:D,strideHeight:w,strideWidth:k,filterHeight:v,filterWidth:b,effectiveFilterHeight:E,effectiveFilterWidth:I,dilationHeight:S,dilationWidth:_,inShape:e,outShape:y,filterShape:t}}function _n(e){return"number"==typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function En(e,t){return t<=1?e:e+(e-1)*(t-1)}function In(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error("Unknown roundingMode ".concat(t))}}function On(e){var t=c(_n(e),3),n=t[0],r=t[1],a=t[2];return 1===n&&1===r&&1===a}function Dn(e,t){return On(e)||On(t)}function An(e){return _n(e).every((function(e){return e>0}))}function Mn(e,t,n){if(null!=n){if("string"==typeof t)throw Error("Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,"."));if("number"==typeof t)oe(ce(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}));else{if("object"!=typeof t)throw Error("Error in ".concat(e,": Unknown padding parameter: ").concat(t));t.forEach((function(t){t.forEach((function(t){oe(ce(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}))}))}))}}}var Cn=pn({reshape_:function(e,t){var n={x:on(e,"x","reshape","string_or_numeric")},r={shape:t};return en.runKernel("Reshape",n,r)}}),Fn=pn({avgPool_:function(e,t,n,r,a){var o=on(e,"x","avgPool","float32");oe(Dn(n,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")}));var s=o,i=!1;3===o.rank&&(i=!0,s=Cn(o,[1,o.shape[0],o.shape[1],o.shape[2]])),oe(4===s.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank ".concat(s.rank,".")})),Mn("avgPool",r,a);var u={x:s},p={filterSize:t,strides:n,pad:r,dimRoundingMode:a},c=en.runKernel("AvgPool",u,p);return c=Tn(c,o.dtype),i?Cn(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),Rn=pn({avgPool3d_:function(e,t,n,r,a,o){void 0===o&&(o="NDHWC");var s=on(e,"x","avgPool3d","float32"),i=s,u=!1;4===s.rank&&(u=!0,i=Cn(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===i.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank ".concat(i.rank,".")})),oe("NDHWC"===o,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),oe("number"==typeof n&&n>0||Array.isArray(n)&&n[0]>0&&n[1]>0&&n[2]>0,(function(){return"Error in avgPool3d: Stride must be > 0, but got '".concat(n,"'")})),Mn("avgPool3d",r,a);var p={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},l=en.runKernel("AvgPool3D",p,c);return l=Tn(l,i.dtype),u?Cn(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}}),zn=pn({clone_:function(e){var t={x:on(e,"x","clone","string_or_numeric")};return en.runKernel(Re,t)}}),Vn=pn({concat_:function(e,t){void 0===t&&(t=0),oe(e.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=sn(e,"tensors","concat","string_or_numeric");if("complex64"===n[0].dtype&&n.forEach((function(e){if("complex64"!==e.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype ".concat(e.dtype,". "))})),1===n.length)return zn(n[0]);var r=n,a={axis:t};return en.runKernel("Concat",r,a)}}),Ln=pn({matMul_:function(e,t,n,r){var a;void 0===n&&(n=!1),void 0===r&&(r=!1);var o=on(e,"a","matMul"),s=on(t,"b","matMul"),i={a:o=(a=c(Zt(o,s),2))[0],b:s=a[1]},u={transposeA:n,transposeB:r};return en.runKernel("BatchMatMul",i,u)}}),Pn=pn({mul_:function(e,t){var n,r=on(e,"a","mul"),a=on(t,"b","mul"),o={a:r=(n=c(Zt(r,a),2))[0],b:a=n[1]};return en.runKernel("Multiply",o)}}),Bn=pn({sigmoid_:function(e){var t={x:on(e,"x","sigmoid","float32")};return en.runKernel("Sigmoid",t)}}),Kn=pn({slice_:function(e,t,n){var r=on(e,"x","slice","string_or_numeric");if(0===r.rank)throw new Error("Slicing scalar is not possible");var a={x:r},o={begin:t,size:n};return en.runKernel("Slice",a,o)}}),jn=pn({tanh_:function(e){var t={x:on(e,"x","tanh","float32")};return en.runKernel("Tanh",t)}}),qn=pn({basicLSTMCell_:function(e,t,n,r,a,o){var s=on(e,"forgetBias","basicLSTMCell"),i=on(t,"lstmKernel","basicLSTMCell"),u=on(n,"lstmBias","basicLSTMCell"),p=on(r,"data","basicLSTMCell"),c=on(a,"c","basicLSTMCell"),l=on(o,"h","basicLSTMCell"),d=Vn([p,l],1),h=Ln(d,i),f=hn(h,u),m=f.shape[0],y=f.shape[1]/4,g=[m,y],v=Kn(f,[0,0],g),b=Kn(f,[0,y],g),x=Kn(f,[0,2*y],g),N=Kn(f,[0,3*y],g),w=hn(Pn(Bn(v),jn(b)),Pn(c,Bn(hn(s,x))));return[w,Pn(jn(w),Bn(N))]}}),Un=pn({batchToSpaceND_:function(e,t,n){var r=on(e,"x","batchToSpaceND"),a=t.reduce((function(e,t){return e*t}));oe(r.rank>=1+t.length,(function(){return"input rank is ".concat(r.rank," but should be > than blockShape.length ").concat(t.length)})),oe(n.length===t.length,(function(){return"crops.length is ".concat(n.length," but should be equal to blockShape.length ").concat(t.length)})),oe(r.shape[0]%a==0,(function(){return"input tensor batch is ".concat(r.shape[0]," but is not divisible by the product of ")+"the elements of blockShape ".concat(t.join(" * ")," === ").concat(a)}));var o={x:r},s={blockShape:t,crops:n};return en.runKernel("BatchToSpaceND",o,s)}}),Gn=pn({batchNorm_:function(e,t,n,r,a,o){null==o&&(o=.001);var s,i,u=on(e,"x","batchNorm"),p=on(t,"mean","batchNorm"),c=on(n,"variance","batchNorm");null!=a&&(s=on(a,"scale","batchNorm")),null!=r&&(i=on(r,"offset","batchNorm")),oe(p.rank===c.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),oe(null==i||p.rank===i.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),oe(null==s||p.rank===s.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var l=function(e){return 0===e.rank||1===e.rank?Cn(e,[1,1,1,e.size]):2===e.rank?Cn(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?Cn(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}(u),d={x:l,scale:s,offset:i,mean:p,variance:c},h={varianceEpsilon:o},f=en.runKernel("FusedBatchNorm",d,h);return Cn(f,u.shape)}}),Wn=pn({batchNorm2d_:function(e,t,n,r,a,o){var s,i,u=on(e,"x","batchNorm"),p=on(t,"mean","batchNorm"),c=on(n,"variance","batchNorm");return null!=a&&(s=on(a,"scale","batchNorm")),null!=r&&(i=on(r,"offset","batchNorm")),oe(2===u.rank,(function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+"".concat(u.rank,".")})),oe(2===p.rank||1===p.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(2===i.rank||1===i.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+"but got rank ".concat(i.rank,".")})),Gn(u,p,c,i,s,o)}}),Hn=pn({batchNorm3d_:function(e,t,n,r,a,o){var s,i,u=on(e,"x","batchNorm"),p=on(t,"mean","batchNorm"),c=on(n,"variance","batchNorm");return null!=a&&(s=on(a,"scale","batchNorm")),null!=r&&(i=on(r,"offset","batchNorm")),oe(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+"".concat(u.rank,".")})),oe(3===p.rank||1===p.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(3===i.rank||1===i.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+"but got rank ".concat(i.rank,".")})),Gn(u,p,c,i,s,o)}}),Zn=pn({batchNorm4d_:function(e,t,n,r,a,o){var s,i,u=on(e,"x","batchNorm"),p=on(t,"mean","batchNorm"),c=on(n,"variance","batchNorm");return null!=a&&(s=on(a,"scale","batchNorm")),null!=r&&(i=on(r,"offset","batchNorm")),oe(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+"".concat(u.rank,".")})),oe(4===p.rank||1===p.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(4===i.rank||1===i.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+"but got rank ".concat(i.rank,".")})),Gn(u,p,c,i,s,o)}}),Qn=pn({bincount_:function(e,t,n){var r=on(e,"x","bincount"),a=on(t,"weights","bincount");oe("int32"===r.dtype,(function(){return"Error in bincount: input "+"dtype must be int32, but got ".concat(r.dtype)})),oe(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),oe(a.size===r.size||0===a.size,(function(){return"Error in bincount: weights must have the same size as input or"+"0-length, but got input shape: ".concat(r.shape,", weights shape: ")+"".concat(a.shape,".")}));var o={x:r,weights:a},s={size:n};return en.runKernel("Bincount",o,s)}}),Yn=pn({bitwiseAnd_:function(e,t){var n=on(e,"x","bitwiseAnd"),r=on(t,"y","bitwiseAnd");if(!pe(n.shape,r.shape))throw new Error("BitwiseAnd: Tensors must have the same shape. x: ".concat(n.shape,", y: ").concat(r.shape));if("int32"!==n.dtype||"int32"!==r.dtype)throw new Error("BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ".concat(n.dtype," and type of y: ").concat(r.dtype));var a={a:n,b:r};return en.runKernel("BitwiseAnd",a)}}),Xn=pn({broadcastArgs_:function(e,t){var n=on(e,"s0","broadcastArgs","int32"),r=on(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error("broadcastArgs(): first input must be a vector (rank=1). "+"Has rank ".concat(n.rank));if(1!==r.rank)throw new Error("broadcastArgs(): second input must be a vector (rank=1). "+"Has rank ".concat(r.rank));var a={s0:n,s1:r};return en.runKernel("BroadcastArgs",a)}}),Jn=pn({broadcastTo_:function(e,t){var n=on(e,"broadcastTo","x"),r=n.shape;if(ke(t),t.lengthn.rank){for(var a=n.shape.slice();a.length=0;i--)if(o[i]===t[i])s[i]=1;else if(1!==n.shape[i])throw new Error("broadcastTo(): [".concat(r,"] cannot be broadcast to [").concat(t,"]."));var u=s.map((function(e,t){return e>1?t:-1})).filter((function(e){return e>=0}));if(0===u.length)return zn(n);var p={x:n},c={reps:s};return en.runKernel(ze,p,c)}});function $n(e,t,n){return void 0===t&&(t="float32"),t=t||"float32",ke(e),new Ft(e,t,n)}var er=pn({ceil_:function(e){var t={x:on(e,"x","ceil","float32")};return en.runKernel("Ceil",t)}});function tr(e,t,n){ke(e);var r={shape:e,value:t,dtype:n=n||ye(t)};return en.runKernel("Fill",{},r)}var nr=pn({clipByValue_:function(e,t,n){var r=on(e,"x","clipByValue");if(oe(t<=n,(function(){return"Error in clip: min (".concat(t,") must be ")+"less than or equal to max (".concat(n,").")})),t===n)return tr(r.shape,t,r.dtype);var a={x:r},o={clipValueMin:t,clipValueMax:n};return en.runKernel("ClipByValue",a,o)}}),rr=pn({complex_:function(e,t){var n=on(e,"real","complex"),r=on(t,"imag","complex");se(n.shape,r.shape,"real and imag shapes, ".concat(n.shape," and ").concat(r.shape,", ")+"must match in call to tf.complex().");var a={real:n,imag:r};return en.runKernel("Complex",a)}}),ar=pn({concat1d_:function(e){return Vn(e,0)}}),or=pn({concat2d_:function(e,t){return Vn(e,t)}}),sr=pn({concat3d_:function(e,t){return Vn(e,t)}}),ir=pn({concat4d_:function(e,t){return Vn(e,t)}}),ur=pn({conv2d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var i=on(e,"x","conv2d","float32"),u=on(t,"filter","conv2d","float32"),p=i,c=!1;3===i.rank&&(c=!0,p=Cn(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(4===p.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank ".concat(p.rank,".")})),oe(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")})),Mn("conv2d",r,s);var l="NHWC"===a?p.shape[3]:p.shape[1];oe(l===u.shape[2],(function(){return"Error in conv2d: depth of input (".concat(l,") must match ")+"input depth for filter ".concat(u.shape[2],".")})),oe(Dn(n,o),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),oe(An(o),(function(){return"Error in conv2D: Dilated rates should be larger than 0."})),oe(An(n),(function(){return"Error in conv2D: Strides should be larger than 0."}));var d={x:p,filter:u},h={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:s},f=en.runKernel("Conv2D",d,h);return c?Cn(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),pr=pn({conv1d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NWC"),void 0===o&&(o=1);var i=on(e,"x","conv1d"),u=on(t,"filter","conv1d"),p=i,c=!1;2===i.rank&&(c=!0,p=Cn(i,[1,i.shape[0],i.shape[1]])),oe(3===p.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank ".concat(p.rank,".")})),oe(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+"".concat(u.rank,".")})),Mn("conv1d",r,s),oe(p.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input (".concat(p.shape[2],") must match ")+"input depth for filter ".concat(u.shape[1],".")})),oe(Dn(n,o),(function(){return"Error in conv1D: Either stride or dilation must be 1. "+"Got stride ".concat(n," and dilation '").concat(o,"'")})),oe(An(o),(function(){return"Error in conv1D: Dilated rates should be larger than 0."})),oe(An(n),(function(){return"Error in conv1D: Stride should be larger than 0."})),oe("NWC"===a,(function(){return"Error in conv1d: got dataFormat of ".concat(a," but only NWC is currently supported.")}));var l=Cn(u,[1,u.shape[0],u.shape[1],u.shape[2]]),d=Cn(p,[p.shape[0],1,p.shape[1],p.shape[2]]),h=ur(d,l,[1,n],r,"NHWC",[1,o],s);return Cn(h,c?[h.shape[2],h.shape[3]]:[h.shape[0],h.shape[2],h.shape[3]])}}),cr=pn({conv2DBackpropInput_:function(e,t,n,r,a,o,s){void 0===o&&(o="NHWC"),oe(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var i=e,u=t,p=!1;3===t.rank&&(p=!0,u=Cn(t,[1,t.shape[0],t.shape[1],t.shape[2]]),i=[1,e[0],e[1],e[2]]),oe(4===i.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+"".concat(i.length,".")})),oe(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+"rank ".concat(u.rank)})),oe(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+"rank ".concat(n.rank)}));var c="NHWC"===o?i[3]:i[1],l="NHWC"===o?u.shape[3]:u.shape[1];oe(c===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input (".concat(c,") must ")+"match input depth for filter ".concat(n.shape[2],".")})),oe(l===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output (".concat(l,") must ")+"match output depth for filter ".concat(n.shape[3],".")})),Mn("conv2dDerInput",a,s);var d={dy:u,filter:n},h={strides:r,pad:a,dataFormat:o,dimRoundingMode:s,inputShape:i},f=en.runKernel("Conv2DBackpropInput",d,h);return p?Cn(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),lr=pn({conv2dTranspose_:function(e,t,n,r,a,o){var s=on(e,"x","conv2dTranspose"),i=on(t,"filter","conv2dTranspose");return cr(n,s,i,r,a,"NHWC",o)}}),dr=pn({conv3d_:function(e,t,n,r,a,o){void 0===a&&(a="NDHWC"),void 0===o&&(o=[1,1,1]);var s=on(e,"x","conv3d"),i=on(t,"filter","conv3d"),u=s,p=!1;4===s.rank&&(p=!0,u=Cn(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank ".concat(u.rank,".")})),oe(5===i.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+"".concat(i.rank,".")})),oe(u.shape[4]===i.shape[3],(function(){return"Error in conv3d: depth of input (".concat(u.shape[4],") must match ")+"input depth for filter ".concat(i.shape[3],".")})),oe(Dn(n,o),(function(){return"Error in conv3D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),oe("NDHWC"===a,(function(){return"Error in conv3d: got dataFormat of ".concat(a," but only NDHWC is currently supported.")})),oe(An(o),(function(){return"Error in conv3D: Dilated rates should be larger than 0."})),oe(An(n),(function(){return"Error in conv3D: Strides should be larger than 0."}));var c={x:u,filter:i},l={strides:n,pad:r,dataFormat:a,dilations:o},d=en.runKernel("Conv3D",c,l);return p?Cn(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),hr=pn({conv3DBackpropInput_:function(e,t,n,r,a){oe(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var o=e,s=t,i=!1;4===t.rank&&(i=!0,s=Cn(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),o=[1,e[0],e[1],e[2],e[3]]);var u=o[4],p=s.shape[4];oe(5===o.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+"".concat(o.length,".")})),oe(5===s.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+"rank ".concat(s.rank)})),oe(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+"rank ".concat(n.rank)})),oe(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input (".concat(u,") must ")+"match input depth for filter ".concat(n.shape[3],".")})),oe(p===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output (".concat(p,") must ")+"match output depth for filter ".concat(n.shape[4],".")}));var c={dy:s,filter:n},l={pad:a,strides:r,inputShape:o},d=en.runKernel("Conv3DBackpropInputV2",c,l);return i?Cn(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),fr=pn({conv3dTranspose_:function(e,t,n,r,a){var o=on(e,"x","conv3dTranspose"),s=on(t,"filter","conv3dTranspose");return hr(n,o,s,r,a)}}),mr=pn({cos_:function(e){var t={x:on(e,"x","cos","float32")};return en.runKernel("Cos",t)}}),yr=pn({cosh_:function(e){var t={x:on(e,"x","cosh","float32")};return en.runKernel("Cosh",t)}}),gr=pn({cumprod_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:on(e,"x","cumprod")},o={axis:t,exclusive:n,reverse:r};return en.runKernel("Cumprod",a,o)}}),vr=pn({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:on(e,"x","cumsum")},o={axis:t,exclusive:n,reverse:r};return en.runKernel("Cumsum",a,o)}}),br=pn({denseBincount_:function(e,t,n,r){void 0===r&&(r=!1);var a=on(e,"x","denseBincount"),o=on(t,"weights","denseBincount");oe("int32"===a.dtype,(function(){return"Error in denseBincount: input "+"dtype must be int32, but got ".concat(a.dtype)})),oe(a.rank<=2,(function(){return"Error in denseBincount: input must be at most rank 2, but got "+"rank ".concat(a.rank,".")})),oe(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),oe(o.size===a.size||0===o.size,(function(){return"Error in denseBincount: weights must have the same shape as x or "+"0-length, but got x shape: ".concat(a.shape,", weights shape: ")+"".concat(o.shape,".")}));var s={x:a,weights:o},i={size:n,binaryOutput:r};return en.runKernel("DenseBincount",s,i)}}),xr=pn({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=on(e,"x","depthToSpace","float32"),a="NHWC"===n?r.shape[1]:r.shape[2],o="NHWC"===n?r.shape[2]:r.shape[3],s="NHWC"===n?r.shape[3]:r.shape[1];oe(t>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: ".concat(t)})),oe(a*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(a," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),oe(o*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(o," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),oe(s%(t*t)==0,(function(){return"Dimension size must be evenly divisible by ".concat(t*t," but is ").concat(s," for depthToSpace with input shape ").concat(r.shape)}));var i={x:r},u={blockSize:t,dataFormat:n};return en.runKernel("DepthToSpace",i,u)}}),Nr=pn({depthwiseConv2d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var i=on(e,"x","depthwiseConv2d","float32"),u=on(t,"filter","depthwiseConv2d","float32"),p=i,c=!1;3===i.rank&&(c=!0,p=Cn(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(4===p.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(p.rank,".")})),oe(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")}));var l="NHWC"===a?p.shape[3]:p.shape[1];oe(l===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels "+"(".concat(l,") must match the inChannels dimension in ")+"filter ".concat(u.shape[2],".")})),Mn("depthwiseConv2d",r,s);var d={x:p,filter:u},h={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:s},f=en.runKernel("DepthwiseConv2dNative",d,h);return c?Cn(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),wr=pn({diag_:function(e){var t={x:on(e,"x","diag")};return en.runKernel("Diag",t)}}),kr=pn({dilation2d_:function(e,t,n,r,a,o){void 0===a&&(a=[1,1]),void 0===o&&(o="NHWC");var s=on(e,"x","dilation2d"),i=on(t,"filter","dilation2d");oe(3===s.rank||4===s.rank,(function(){return"Error in dilation2d: input must be rank 3 or 4, but got rank "+"".concat(s.rank,".")})),oe(3===i.rank,(function(){return"Error in dilation2d: filter must be rank 3, but got rank "+"".concat(i.rank,".")})),oe("NHWC"===o,(function(){return"Error in dilation2d: Only NHWC is currently supported, "+"but got dataFormat of ".concat(o)}));var u=s,p=!1;3===s.rank&&(u=Cn(s,[1,s.shape[0],s.shape[1],s.shape[2]]),p=!0),oe(u.shape[3]===i.shape[2],(function(){return"Error in dilation2d: input and filter must have the same depth: ".concat(u.shape[3]," vs ").concat(i.shape[2])}));var c={x:u,filter:i},l={strides:n,pad:r,dilations:a},d=en.runKernel("Dilation2D",c,l);return p?Cn(d,[d.shape[1],d.shape[2],d.shape[3]]):d}}),Tr=pn({floorDiv_:function(e,t){var n,r=on(e,"a","floorDiv"),a=on(t,"b","floorDiv"),o={a:r=(n=c(Zt(r,a),2))[0],b:a=n[1]};return en.runKernel("FloorDiv",o)}}),Sr=pn({div_:function(e,t){var n,r=on(e,"a","div"),a=on(t,"b","div");if(r=(n=c(Zt(r,a),2))[0],a=n[1],"int32"===r.dtype&&"int32"===a.dtype)return Tr(r,a);var o={a:r,b:a};return en.runKernel("RealDiv",o,{})}});function _r(e,t){for(var n=Math.max(e.length,t.length),r=new Array(n),a=0;a=Ta)throw new Error("values tensor size must less than ".concat(Ta));if(i.shape[1]>=Ta)throw new Error("trailing dim_size must less than ".concat(Ta," for int32 output type, was ").concat(i.shape[1]));var p={sortedSequence:i,values:u},c={side:n};return en.runKernel("SearchSorted",p,c)}}),_a=pn({maxPool_:function(e,t,n,r,a){var o=on(e,"x","maxPool"),s=o,i=!1;3===o.rank&&(i=!0,s=Cn(o,[1,o.shape[0],o.shape[1],o.shape[2]])),oe(4===s.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(s.rank,".")})),oe(Dn(n,1),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")})),Mn("maxPool",r,a);var u={x:s},p={filterSize:t,strides:n,pad:r,dimRoundingMode:a},c=en.runKernel("MaxPool",u,p);return i?Cn(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),Ea=pn({maxPool3d_:function(e,t,n,r,a,o){void 0===t&&(t=[1,1,1]),void 0===o&&(o="NDHWC");var s=on(e,"x","maxPool3d"),i=s,u=!1;4===s.rank&&(u=!0,i=Cn(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===i.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank ".concat(i.rank,".")})),oe("NDHWC"===o,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),Mn("maxPool3d",r,a);var p={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},l=en.runKernel("MaxPool3D",p,c);return u?Cn(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}}),Ia=pn({maxPoolWithArgmax_:function(e,t,n,r,a){void 0===a&&(a=!1);var o={x:on(e,"x","maxPoolWithArgmax")},s={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},i=en.runKernel("MaxPoolWithArgmax",o,s);return{result:i[0],indexes:i[1]}}}),Oa=pn({maximum_:function(e,t){var n,r=on(e,"a","maximum"),a=on(t,"b","maximum");r=(n=c(Zt(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=Tn(r,"int32"),a=Tn(a,"int32")),_r(r.shape,a.shape);var o={a:r,b:a};return en.runKernel("Maximum",o)}}),Da=pn({mean_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:on(e,"x","mean")},a={axis:t,keepDims:n};return en.runKernel("Mean",r,a)}});function Aa(e,t){if(void 0===t&&(t="float32"),ke(e),"complex64"===t){var n=Aa(e,"float32"),r=Aa(e,"float32");return rr(n,r)}var a=we(ue(e),t);return en.makeTensor(a,e,t)}function Ma(e,t){if(void 0===t&&(t="float32"),ke(e),"complex64"===t){var n=Ma(e,"float32"),r=Aa(e,"float32");return rr(n,r)}var a=Ne(ue(e),t);return en.makeTensor(a,e,t)}var Ca=pn({minimum_:function(e,t){var n,r=on(e,"a","minimum"),a=on(t,"b","minimum");r=(n=c(Zt(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=Tn(r,"int32"),a=Tn(a,"int32")),_r(r.shape,a.shape);var o={a:r,b:a};return en.runKernel("Minimum",o)}}),Fa=pn({mirrorPad_:function(e,t,n){oe("reflect"===n||"symmetric"===n,(function(){return"Invalid mode. Mode must be either reflect or symmetric. "+"Got ".concat(n,".")}));var r=on(e,"x","mirrorPad");if(0===r.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");oe(t.length===r.rank,(function(){return"Padding doesn't match input. Must be ".concat(r.rank,". ")+"Got ".concat(t.length,".")}));for(var a="reflect"===n?1:0,o=function(e){oe(2===t[e].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),oe(t[e][0]>=0&&t[e][0]<=r.shape[e]-a&&t[e][1]>=0&&t[e][1]<=r.shape[e]-a,(function(){return"Padding in dimension ".concat(e," cannot be greater than or equal ")+"to ".concat(r.shape[e]-a," or less than 0 for input of ")+"shape ".concat(r.shape)}))},s=0;s2)throw new Error("Rank of probabilities must be 1 or 2, but is ".concat(s));n=n||Math.random();var i={logits:1===s?Cn(a,[1,-1]):a},u={numSamples:t,seed:n,normalized:r},p=en.runKernel("Multinomial",i,u);return 1===s?Cn(p,[p.size]):p}}),Pa=pn({notEqual_:function(e,t){var n,r=on(e,"a","notEqual","string_or_numeric"),a=on(t,"b","notEqual","string_or_numeric");r=(n=c(Zt(r,a),2))[0],a=n[1],_r(r.shape,a.shape);var o={a:r,b:a};return en.runKernel("NotEqual",o)}}),Ba=pn({oneHot_:function(e,t,n,r,a){if(void 0===n&&(n=1),void 0===r&&(r=0),void 0===a&&(a="int32"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is ".concat(t));var o={indices:on(e,"indices","oneHot","int32")},s={dtype:a,depth:t,onValue:n,offValue:r};return en.runKernel("OneHot",o,s)}}),Ka=pn({onesLike_:function(e){var t={x:on(e,"x","onesLike")};return en.runKernel("OnesLike",t)}}),ja=pn({outerProduct_:function(e,t){var n=on(e,"v1","outerProduct"),r=on(t,"v2","outerProduct");oe(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+"".concat(n.rank," and ").concat(r.rank,".")}));var a=Cn(n,[-1,1]),o=Cn(r,[1,-1]);return Ln(a,o)}}),qa=pn({pad_:function(e,t,n){void 0===n&&(n=0);var r=on(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a={paddings:t,constantValue:n},o={x:r};return en.runKernel("PadV2",o,a)}}),Ua=pn({pad1d_:function(e,t,n){return void 0===n&&(n=0),oe(2===t.length,(function(){return"Invalid number of paddings. Must be length of 2."})),qa(e,[t],n)}}),Ga=pn({pad2d_:function(e,t,n){return void 0===n&&(n=0),oe(2===t.length&&2===t[0].length&&2===t[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qa(e,t,n)}}),Wa=pn({pad3d_:function(e,t,n){return void 0===n&&(n=0),oe(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qa(e,t,n)}}),Ha=pn({pad4d_:function(e,t,n){return void 0===n&&(n=0),oe(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),qa(e,t,n)}}),Za=pn({spaceToBatchND_:function(e,t,n){var r=on(e,"x","spaceToBatchND");oe(r.rank>=1+t.length,(function(){return"input rank ".concat(r.rank," should be > than [blockShape] ").concat(t.length)})),oe(n.length===t.length,(function(){return"paddings.shape[0] ".concat(n.length," must be equal to [blockShape] ").concat(t.length)})),oe(r.shape.reduce((function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e}),!0),(function(){return"input spatial dimensions ".concat(r.shape.slice(1)," with paddings ").concat(n.toString()," must be divisible by blockShapes ").concat(t.toString())}));var a={x:r},o={blockShape:t,paddings:n};return en.runKernel("SpaceToBatchND",a,o)}}),Qa=pn({pool_:function(e,t,n,r,a,o,s){null==a&&(a=[1,1]),null==o&&(o=1),0===r&&(r="valid");var i=on(e,"x","maxPool"),u=i,p=!1;3===i.rank&&(p=!0,u=Cn(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(Dn(o,a),(function(){return"Error in pool: Either strides or dilations must be 1. "+"Got strides ".concat(o," and dilations '").concat(a,"'")}));var l,d=function(e,t,n,r,a,o,s){void 0===s&&(s="channelsLast");var i,u=c(_n(t),2),p=u[0],l=u[1];if("channelsLast"===s)i=[p,l,e[3],e[3]];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));i=[p,l,e[1],e[1]]}return Sn(e,i,n,r,a,void 0,!1,s)}(u.shape,t,o,a,r),h=[d.dilationHeight,d.dilationWidth];l="same"===r?function(e,t){var n=e.map((function(e,n){return e+(e-1)*(t[n]-1)})).map((function(e){return e-1})),r=n.map((function(e){return Math.floor(e/2)})),a=n.map((function(e,t){return e-r[t]}));return n.map((function(e,t){return[r[t],a[t]]}))}([d.filterHeight,d.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],m=c(function(e,t,n){var r=n.map((function(e){return e[0]})),a=n.map((function(e){return e[1]})),o=e.concat(r,a),s=t.map((function(e,t){return(e-o[t]%e)%e})),i=a.map((function(e,t){return e+s[t]}));return[t.map((function(e,t){return[r[t],i[t]]})),t.map((function(e,t){return[0,s[t]]}))]}([d.inHeight,d.inWidth],h,l),2),y=m[0],g=m[1],v=f?r:"valid",b=f?u:Za(u,h,y),x=("avg"===n?function(){return Fn(b,t,o,v,s)}:function(){return _a(b,t,o,v,s)})(),N=f?x:Un(x,h,g);return p?Cn(N,[N.shape[1],N.shape[2],N.shape[3]]):N}}),Ya=pn({prelu_:function(e,t){var n={x:on(e,"x","prelu"),alpha:on(t,"alpha","prelu")};return en.runKernel("Prelu",n)}}),Xa=pn({prod_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=on(e,"x","prod");"bool"===r.dtype&&(r=Tn(r,"int32"));var a={x:r},o={axis:t,keepDims:n};return en.runKernel("Prod",a,o)}}),Ja=pn({raggedGather_:function(e,t,n,r){var a={paramsNestedSplits:e.map((function(e,t){return on(e,"tensors".concat(t),"raggedGather","int32")})),paramsDenseValues:on(t,"paramsDenseValues","raggedGather"),indices:on(n,"indices","raggedGather","int32")},o={outputRaggedRank:r},s=en.runKernel("RaggedGather",a,o);return{outputNestedSplits:s.slice(0,s.length-1),outputDenseValues:s[s.length-1]}}}),$a=pn({raggedRange_:function(e,t,n){var r=on(e,"starts","raggedRange"),a={starts:r,limits:on(t,"limits","raggedRange",r.dtype),deltas:on(n,"deltas","raggedRange",r.dtype)},o=en.runKernel("RaggedRange",a);return{rtNestedSplits:o[0],rtDenseValues:o[1]}}}),eo=pn({raggedTensorToTensor_:function(e,t,n,r,a){var o=on(e,"shape","raggedTensorToTensor","int32"),s=on(t,"values","raggedTensorToTensor"),i={shape:o,values:s,defaultValue:on(n,"defaultValue","raggedTensorToTensor",s.dtype),rowPartitionTensors:r.map((function(e,t){return on(e,"tensors".concat(t),"raggedTensorToTensor","int32")}))},u={rowPartitionTypes:a};return en.runKernel("RaggedTensorToTensor",i,u)}}),to=pn({rand_:function(e,t,n){ke(e);var r=ue(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type ".concat(n));a=new Uint8Array(r)}for(var o=0;o>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function a(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function o(e,t){var n=new r(e),o=t&&t.state,s=n.next;return s.int32=function(){return 4294967296*n.next()|0},s.double=function(){return s()+11102230246251565e-32*(2097152*s()|0)},s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.alea=o}(0,e)}(no);var ro=no.exports,ao={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xor128=o}(0,e)}(ao);var oo=ao.exports,so={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}function a(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function o(e,t){var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xorwow=o}(0,e)}(so);var io=so.exports,uo={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}function a(e,t){return t.x=e.x.slice(),t.i=e.i,t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&(o.x&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xorshift7=o}(0,e)}(uo);var po=uo.exports,co={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,o=t.i;return t.w=r=r+1640531527|0,n=a[o+34&127],e=a[o=o+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[o]=n^e,t.i=o,n+(r^r>>>16)|0},function(e,t){var n,r,a,o,s,i=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,o=-32;o>>15,r^=r<<4,r^=r>>>13,o>=0&&(s=s+1640531527|0,a=0==(n=i[127&o]^=r+s)?a+1:0);for(a>=128&&(i[127&(t&&t.length||0)]=-1),a=127,o=512;o>0;--o)r=i[a+34&127],n=i[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,i[a]=r^n;e.w=s,e.X=i,e.i=a}(t,e)}function a(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&(o.X&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xor4096=o}(0,e)}(co);var lo=co.exports,ho={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.tychei=o}(0,e)}(ho);var fo=ho.exports,mo={exports:{}},yo=function(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];n.push.apply(n,arguments);var r=Function.bind.apply(t,n);return new r}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}({__proto__:null,default:{}});!function(e){!function(t,n,r){var a,o=256,s=r.pow(o,6),i=r.pow(2,52),u=2*i,p=255;function c(e,p,c){var y=[],g=f(h((p=1==p?{entropy:!0}:p||{}).entropy?[e,m(n)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(t.crypto||t.msCrypto).getRandomValues(e)),m(e)}catch(e){var r=t.navigator,s=r&&r.plugins;return[+new Date,t,s,t.screen,m(n)]}}():e,3),y),v=new l(y),b=function(){for(var e=v.g(6),t=s,n=0;e=u;)e/=2,t/=2,n>>>=1;return(e+n)/t};return b.int32=function(){return 0|v.g(4)},b.quick=function(){return v.g(4)/4294967296},b.double=b,f(m(v.S),n),(p.pass||c||function(e,t,n,a){return a&&(a.S&&d(a,v),e.state=function(){return d(v,{})}),n?(r.random=e,t):e})(b,g,"global"in p?p.global:this==r,p.state)}function l(e){var t,n=e.length,r=this,a=0,s=r.i=r.j=0,i=r.S=[];for(n||(e=[n++]);a=1||0===s);var i=Math.sqrt(-2*Math.log(s)/s);t=this.mean+this.stdDev*a*i,n=this.mean+this.stdDev*o*i,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}(),_o=function(){function e(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;var a=r||Math.random();this.randu=To.alea(a.toString()),this.randn=new So(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}return e.prototype.nextValue=function(){for(var e,t,n,r,a,o;;){do{r=this.randn.nextValue(),o=1+this.c*r}while(o<=0);if(o*=o*o,t=1-.331*(e=r*r)*e,n=.5*e+this.d*(1-o+Math.log(o)),(a=this.randu())r){var i=e.shape.map((function(e){return e}));i[e.shape.length-1]=t-r,n=Vn([e,Aa(i)],e.shape.length-1),r=t}else n=e;var u=Or(n),p=Cn(rr(n,u),[a,r]),c=ts(p),l=Math.floor(r/2)+1,d=Fo(c),h=ra(c),f=as(d,[l,r-l],d.shape.length-1),m=as(h,[l,r-l],h.shape.length-1),y=n.shape.slice();return y[n.shape.length-1]=l,Cn(rr(f[0],m[0]),y)}}),ss=pn({squaredDifference_:function(e,t){var n,r=on(e,"a","squaredDifference"),a=on(t,"b","squaredDifference");r=(n=c(Zt(r,a),2))[0],a=n[1],_r(r.shape,a.shape);var o={a:r,b:a};return en.runKernel("SquaredDifference",o,{})}}),is=pn({squeeze_:function(e,t){var n=on(e,"x","squeeze","string_or_numeric");return Cn(n,function(e,t){for(var n=[],r=[],a=null!=t&&Array.isArray(t)&&0===t.length,o=null==t||a?null:de(t,e).sort(),s=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),o[s]<=i&&s++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}(n.shape,t).newShape)}}),us=pn({stack_:function(e,t){void 0===t&&(t=0);var n=sn(e,"tensors","stack","string_or_numeric");oe(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),n.length>0&&oe(t<=n[0].rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n,a={axis:t};return en.runKernel("Pack",r,a)}}),ps=pn({step_:function(e,t){void 0===t&&(t=0);var n={x:on(e,"x","step")},r={alpha:t};return en.runKernel("Step",n,r)}}),cs=pn({stridedSlice_:function(e,t,n,r,a,o,s,i,u){void 0===a&&(a=0),void 0===o&&(o=0),void 0===s&&(s=0),void 0===i&&(i=0),void 0===u&&(u=0);var p={x:on(e,"x","stridedSlice","string_or_numeric")},c={begin:t,end:n,strides:r,beginMask:a,endMask:o,ellipsisMask:s,newAxisMask:i,shrinkAxisMask:u};return en.runKernel("StridedSlice",p,c)}}),ls=pn({tan_:function(e){var t={x:on(e,"x","tan","float32")};return en.runKernel("Tan",t)}});function ds(e,t,n){return Br(e,t,nn(e,n),n)}function hs(e,t){ie(e);var n=nn(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Br(e,null,n,t)}function fs(e,t,n){if(ie(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");var r=nn(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Br(e,t,r,n)}function ms(e,t,n){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher,"+" but the rank was ".concat(t.rank,"."));if(e.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher,"+" but the rank was ".concat(e.rank,"."));if("int32"!==t.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: ".concat(t.dtype));if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: ".concat(n));if(0===n.length){if(0===t.size)throw new Error("Indices specified for empty output. indices shape: ".concat(t.shape));if(0===e.size)throw new Error("Updates specified for empty output. updates shape: ".concat(e.shape))}!function(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + "+"shape[sliceDim:], got updates.shape: ".concat(n.shape)+", indices.shape: ".concat(t.shape,", shape: ").concat(e)+", sliceDim: ".concat(r,", and batchDim: ").concat(a,".");if(n.rank= 0 but got ".concat(t));if(t>a)throw new Error("'k' passed to topk() must be <= the last dimension (".concat(a,") ")+"but got ".concat(t));var o={x:r},s={k:t,sorted:n},i=c(en.runKernel("TopK",o,s),2);return{values:i[0],indices:i[1]}}}),vs=pn({truncatedNormal_:function(e,t,n,r,a){if(void 0===t&&(t=0),void 0===n&&(n=1),ke(e),null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");for(var o=new So(t,n,r,!0,a),s=$n(e,r),i=0;i0,(function(){return"The input tensor must be at least 1D"}));var r={x:n},a={axis:t},o=c(en.runKernel("Unique",r,a),2);return{values:o[0],indices:o[1]}}}),xs=pn({unsortedSegmentSum_:function(e,t,n){var r=on(e,"x","unsortedSegmentSum"),a=on(t,"segmentIds","unsortedSegmentSum","int32");oe(ce(n),(function(){return"numSegments must be of dtype int"}));var o={x:r,segmentIds:a},s={numSegments:n};return en.runKernel("UnsortedSegmentSum",o,s)}}),Ns=pn({unstack_:function(e,t){void 0===t&&(t=0);var n=on(e,"x","unstack","string_or_numeric");oe(t>=-n.shape.length&&t=0&&e2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+" but got shape ".concat(e.shape,"."));var a=e.rank>0?e.shape[0]:1,o=e.rank>1?e.shape[1]:1;if(n.length!==o)throw new Error("outputShape has incorrect number of elements:,"+" ".concat(n.length,", should be: ").concat(o,"."));var s=t.size;if(0!==t.rank&&(1!==t.rank||s!==a))throw new Error("sparseValues has incorrect shape "+"".concat(t.shape,", should be [] or [").concat(a,"]"));if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,o,n,s);var i={sparseIndices:a,sparseValues:o,defaultValue:s},u={outputShape:n};return en.runKernel("SparseToDense",i,u)}}),Es=pn({gatherND_:function(e,t){var n=on(t,"indices","gatherND","int32"),r={params:on(e,"x","gatherND","string_or_numeric"),indices:n};return en.runKernel("GatherNd",r)}}),Is=pn({dropout_:function(e,t,n,r){var a=on(e,"x","dropout");if(oe("float32"===a.dtype,(function(){return"x has to be a floating point tensor since it's going to be "+"scaled, but got a ".concat(a.dtype," tensor instead.")})),oe(t>=0&&t<1,(function(){return"rate must be a float in the range [0, 1), but got ".concat(t,".")})),0===t)return e instanceof Vt?a.clone():a;var o=function(e,t){if(null==t)return e.shape.slice();if(pe(e.shape,t))return t;if(e.shape.length===t.length){for(var n=[],r=0;r1)&&n.unshift(o)}return n}(e.shape,t.shape);return r.length>0&&(n=Ur(n,r)),Cn(n,e.shape)}function Fs(e,t,n,r){if("linear"===t)return e;if("relu"===t)return zo(e);if("elu"===t)return Cr(e);if("relu6"===t)return Vo(e);if("prelu"===t)return Ya(e,n);if("leakyrelu"===t)return ia(e,r);if("sigmoid"===t)return Bn(e);throw new Error("Unknown fused activation ".concat(t,"."))}var Rs=function(e,t){return!(e>0)||"linear"===t},zs=pn({fusedConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,i=void 0===s?"NHWC":s,u=e.dilations,p=void 0===u?[1,1]:u,l=e.dimRoundingMode,d=e.bias,h=e.activation,f=void 0===h?"linear":h,m=e.preluActivationWeights,y=e.leakyreluAlpha;if(f=f||"linear",!1===Rs(en.state.gradientDepth,f)){oe("NHWC"===i,(function(){return"Error in fused conv2d: got dataFormat of ".concat(i," but ")+"only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear."}));var g=ur(n,r,a,o,i,p,l);return null!=d&&(g=hn(g,d)),Fs(g,f,m,y)}var v=on(n,"x","conv2d","float32"),b=on(r,"filter","conv2d","float32"),x=v,N=!1;3===v.rank&&(N=!0,x=Cn(v,[1,v.shape[0],v.shape[1],v.shape[2]])),oe(4===x.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+"".concat(x.rank,".")})),oe(4===b.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+"".concat(b.rank,".")})),Mn("fused conv2d",o,l);var w="NHWC"===i?x.shape[3]:x.shape[1];oe(b.shape[2]===w,(function(){return"Error in conv2d: depth of input (".concat(w,") must match ")+"input depth for filter ".concat(b.shape[2],".")})),oe(Dn(a,p),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(a," and dilations '").concat(p,"'")}));var k,T,S=Sn(x.shape,b.shape,a,p,o,l);if(null!=d&&(t=c(Zt(k=on(d,"bias","fused conv2d"),v),1),k=t[0],"NHWC"===i?_r(S.outShape,k.shape):(oe(k.shape.length<=1,(function(){return"Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of "+"rank-".concat(k.shape.length,".")})),oe(0===k.shape.length||k.shape[0]===S.outChannels||1===k.shape[0],(function(){return"Error in fused conv2d: bias shape (".concat(k.shape,") is not ")+"compatible with the number of output channels "+"(".concat(S.outChannels,")")})))),null!=m){var _=m.shape;if(oe(_.length<=1||3===_.length,(function(){return"Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of "+"rank-".concat(_.length,".")})),1===_.length)oe(1===_[0]||_[0]===S.outChannels,(function(){return"Error in fused conv2d: PReLU activation weights "+"(".concat(_,") is not compatible with the number of output ")+"channels (".concat(S.outChannels,").")}));else if(3===_.length)try{_r(_,S.outShape)}catch(e){var E="Error in fused conv2d: PReLU activation weights (".concat(_,") ")+"is not compatible with the output shape of the conv2d "+"(".concat(S.outShape,").");throw Error(E)}T=on(m,"prelu weights","fused conv2d")}var I=function(e,t){oe("NHWC"===i,(function(){return"Error in gradient of fused conv2D: got dataFormat of ".concat(i," but only NHWC is currently supported.")}));var n=c(t,4),r=n[0],s=n[1],u=n[2],l=n[3],d=Ms(e,u,f);oe(On(p),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+"are not yet supported in gradients. Got dilations '".concat(p,"'")}));var h=[cr(s.shape,d,r,a,o),As(s,d,r.shape,a,o)];if(null!=l){var m=Cs(l,d);h.push(m)}return h},O={x,filter:b,bias:k,preluActivationWeights:T},D={strides:a,pad:o,dataFormat:i,dilations:p,dimRoundingMode:l,activation:f,leakyreluAlpha:y};if(null==d){var A=ha((function(e,t,n){var r=en.runKernel(Pe,O,D);return n([t,e,r]),N&&(r=Cn(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:I}}));return A(x,b)}var M=ha((function(e,t,n,r){var a=en.runKernel(Pe,O,D);return r([t,e,a,n]),N&&(a=Cn(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:I}}));return M(x,b,k)}}),Vs=pn({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,r,a,o,s){void 0===o&&(o=[1,1]);var i=e;3===e.rank&&(i=Cn(e,[1,e.shape[0],e.shape[1],e.shape[2]]));var u=t;3===u.rank&&(u=Cn(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var p={x:i,dy:u},c={strides:r,pad:a,dimRoundingMode:s,dilations:o,filterShape:n};return en.runKernel("DepthwiseConv2dNativeBackpropFilter",p,c)}}),Ls=pn({depthwiseConv2dNativeBackpropInput_:function(e,t,n,r,a,o,s){void 0===o&&(o=[1,1]);var i=t,u=!1;3===t.rank&&(u=!0,i=Cn(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var p={dy:i,filter:n},c={strides:r,pad:a,dimRoundingMode:s,dilations:o,inputShape:e},l=en.runKernel("DepthwiseConv2dNativeBackpropInput",p,c);return u?Cn(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Ps=pn({fusedDepthwiseConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,i=void 0===s?"NHWC":s,u=e.dilations,p=void 0===u?[1,1]:u,l=e.dimRoundingMode,d=e.bias,h=e.activation,f=void 0===h?"linear":h,m=e.preluActivationWeights,y=e.leakyreluAlpha;if(!1===Rs(en.state.gradientDepth,f)){var g=Nr(n,r,a,o,i,p,l);return null!=d&&(g=hn(g,d)),Fs(g,f,m,y)}var v=on(n,"x","depthwiseConv2d","float32"),b=on(r,"filter","depthwiseConv2d","float32"),x=v,N=!1;3===v.rank&&(N=!0,x=Cn(v,[1,v.shape[0],v.shape[1],v.shape[2]])),oe(4===x.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(x.rank,".")})),oe(4===b.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+"but got rank ".concat(b.rank,".")})),oe(x.shape[3]===b.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels "+"(".concat(x.shape[3],") must match the inChannels dimension in ")+"filter ".concat(b.shape[2],".")})),null==p&&(p=[1,1]),oe(Dn(a,p),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+"be 1. Got strides ".concat(a," and dilations '").concat(p,"'")})),Mn("fused depthwiseConv2d",o,l);var w,k,T=Sn(x.shape,b.shape,a,p,o,l,!0);null!=d&&(t=c(Zt(w=on(d,"bias","fused conv2d"),v),1),w=t[0],_r(T.outShape,w.shape)),null!=m&&(k=on(m,"prelu weights","fused depthwiseConv2d"));var S=function(e,t){oe(On(p),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+"'".concat(p,"'")}));var n=c(t,4),r=n[0],s=n[1],i=n[2],u=n[3],d=Ms(e,i,f),h=Ls(s.shape,d,r,a,o,p,l),m=Vs(s,d,r.shape,a,o,p,l);return null!=u?[h,m,Cs(w,d)]:[h,m]},_={x,filter:b,bias:w,preluActivationWeights:k},E={strides:a,pad:o,dataFormat:i,dilations:p,dimRoundingMode:l,activation:f,leakyreluAlpha:y};if(null==d){var I=ha((function(e,t,n){var r=en.runKernel(Be,_,E);return n([t,e,r]),N&&(r=Cn(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:S}}));return I(x,b)}var O=ha((function(e,t,n,r){var a=en.runKernel(Be,_,E);return r([t,e,a,n]),N&&(a=Cn(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:S}}));return O(x,b,w)}}),Bs={__proto__:null,conv2d:zs,depthwiseConv2d:Ps,matMul:pn({fusedMatMul_:function(e){var t,n=e.a,r=e.b,a=e.transposeA,o=void 0!==a&&a,s=e.transposeB,i=void 0!==s&&s,u=e.bias,p=e.activation,l=void 0===p?"linear":p,d=e.preluActivationWeights,h=e.leakyreluAlpha,f=void 0===h?.2:h;if(!1===Rs(en.state.gradientDepth,l)){var m=Ln(n,r,o,i);return null!=u&&(m=hn(m,u)),Fs(m,l,d,f)}var y=on(n,"a","fused matMul"),g=on(r,"b","fused matMul");t=c(Zt(y,g),2),y=t[0],g=t[1];var v=o?y.shape[y.rank-2]:y.shape[y.rank-1],b=i?g.shape[g.rank-1]:g.shape[g.rank-2],x=o?y.shape[y.rank-1]:y.shape[y.rank-2],N=i?g.shape[g.rank-2]:g.shape[g.rank-1],w=y.shape.slice(0,-2),k=g.shape.slice(0,-2),T=ue(w),S=ue(k);oe(v===b,(function(){return"Error in fused matMul: inner shapes (".concat(v,") and (")+"".concat(b,") of Tensors with shapes ").concat(y.shape," and ")+"".concat(g.shape," and transposeA=").concat(o)+" and transposeB=".concat(i," must match.")}));var _,E,I=_r(y.shape.slice(0,-2),g.shape.slice(0,-2)).concat([x,N]),O=Cn(y,o?[T,v,x]:[T,x,v]),D=Cn(g,i?[S,N,b]:[S,b,N]);null!=u&&(_=c(Zt(_=on(u,"bias","fused matMul"),y),1)[0],_r(I,_.shape)),null!=d&&(E=on(d,"prelu weights","fused matMul"));var A=function(e,t){var n,r,a=c(t,4),s=a[0],p=a[1],d=a[2],h=a[3],f=Ms(Cn(e,d.shape),d,l);return o||i?!o&&i?(n=Ln(f,p,!1,!1),r=Ln(f,s,!0,!1)):o&&!i?(n=Ln(p,f,!1,!0),r=Ln(s,f,!1,!1)):(n=Ln(p,f,!0,!0),r=Ln(f,s,!0,!0)):(n=Ln(f,p,!1,!0),r=Ln(s,f,!0,!1)),null!=u?[n,r,Cs(h,f)]:[n,r]},M={a:O,b:D,bias:_,preluActivationWeights:E},C={transposeA:o,transposeB:i,activation:l,leakyreluAlpha:f};if(null==u){var F=ha((function(e,t,n){var r=en.runKernel(Le,M,C);return n([e,t,r]),{value:Cn(r,I),gradFunc:A}}));return F(O,D)}var R=ha((function(e,t,n,r){var a=en.runKernel(Le,M,C);return r([e,t,a,n]),{value:Cn(a,I),gradFunc:A}}));return R(O,D,_)}})},Ks=pn({hammingWindow_:function(e){return Ds(e,.54,.46)}}),js=pn({hannWindow_:function(e){return Ds(e,.5,.5)}}),qs=pn({frame_:function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=0);for(var o=0,s=[];o+t<=e.size;)s.push(Kn(e,o,t)),o+=n;if(r)for(;o=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was ".concat(r)})),oe("bilinear"===a||"nearest"===a,(function(){return"method must be bilinear or nearest, but was ".concat(a)}));var c={image:s,boxes:i,boxInd:u},l={method:a,extrapolationValue:o,cropSize:r};return en.runKernel("CropAndResize",c,l)}}),Ws=pn({flipLeftRight_:function(e){var t=on(e,"image","flipLeftRight","float32");oe(4===t.rank,(function(){return"Error in flipLeftRight: image must be rank 4,"+"but got rank ".concat(t.rank,".")}));var n={image:t};return en.runKernel("FlipLeftRight",n,{})}}),Hs=pn({grayscaleToRGB_:function(e){var t=on(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];oe(t.rank>=2,(function(){return"Error in grayscaleToRGB: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),oe(1===r,(function(){return"Error in grayscaleToRGB: last dimension of a grayscale image "+"should be size 1, but got size ".concat(r,".")}));var a=new Array(t.rank);return a.fill(1,0,n),a[n]=3,Xr(t,a)}}),Zs=pn({rgbToGrayscale_:function(e){var t=on(e,"image","RGBToGrayscale"),n=t.rank-1,r=t.shape[n];oe(t.rank>=2,(function(){return"Error in RGBToGrayscale: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),oe(3===r,(function(){return"Error in RGBToGrayscale: last dimension of an RGB image "+"should be size 3, but got size ".concat(r,".")}));var a,o=t.dtype,s=Tn(t,"float32"),i=hs([.2989,.587,.114]);switch(t.rank){case 2:a=Mr("ij,j->i",s,i);break;case 3:a=Mr("ijk,k->ij",s,i);break;case 4:a=Mr("ijkl,l->ijk",s,i);break;case 5:a=Mr("ijklm,m->ijkl",s,i);break;case 6:a=Mr("ijklmn,n->ijklm",s,i);break;default:throw new Error("Not a valid tensor rank.")}return a=Qr(a,-1),Tn(a,o)}}),Qs=pn({rotateWithOffset_:function(e,t,n,r){void 0===n&&(n=0),void 0===r&&(r=.5);var a=on(e,"image","rotateWithOffset","float32");oe(4===a.rank,(function(){return"Error in rotateWithOffset: image must be rank 4,"+"but got rank ".concat(a.rank,".")}));var o={image:a},s={radians:t,fillValue:n,center:r};return en.runKernel("RotateWithOffset",o,s)}});function Ys(e,t,n,r,a,o){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY),null==o&&(o=0);var s=e.shape[0];return n=Math.min(n,s),oe(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '".concat(r,"'")})),oe(2===e.rank,(function(){return"boxes must be a 2D tensor, but was of rank '".concat(e.rank,"'")})),oe(4===e.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was ".concat(e.shape[1])})),oe(1===t.rank,(function(){return"scores must be a 1D tensor"})),oe(t.shape[0]===s,(function(){return"scores has incompatible shape with boxes. Expected ".concat(s,", ")+"but was ".concat(t.shape[0])})),oe(0<=o&&o<=1,(function(){return"softNmsSigma must be in [0, 1], but was '".concat(o,"'")})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:o}}var Xs=pn({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var o=on(e,"boxes","nonMaxSuppression","float32"),s=on(t,"scores","nonMaxSuppression","float32"),i=Ys(o,s,n,r,a),u={maxOutputSize:n=i.maxOutputSize,iouThreshold:r=i.iouThreshold,scoreThreshold:a=i.scoreThreshold};return en.runKernel("NonMaxSuppressionV3",{boxes:o,scores:s},u)}});function Js(e,t,n){var r=function(e,t,n){return function(e,t,n){for(var r=0,a=e.length,o=0,s=!1;r>>1)]);i>0?r=o+1:(a=o,s=!i)}return s?r:-r-1}(e,t,n||$s)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function $s(e,t){return e>t?1:ea&&p.push({score:t[d],boxIndex:d,suppressBeginIndex:0});p.sort(ri);for(var h=o>0?-.5/o:0,f=[],m=[];f.length0;){var y=p.pop(),g=y.score,v=y.boxIndex,b=y.suppressBeginIndex;if(g=b;--N){var w=ti(e,v,f[N]);if(w>=r){x=!0;break}if(y.score=y.score*ni(r,h,w),y.score<=a)break}y.suppressBeginIndex=f.length,x||(y.score===g?(f.push(v),m.push(y.score)):y.score>a&&Js(p,y,ri))}var k=f.length,T=n-k;i&&T>0&&(f.push.apply(f,l([],c(new Array(T).fill(0)),!1)),m.push.apply(m,l([],c(new Array(T).fill(0)),!1)));var S={selectedIndices:f};return s&&(S.selectedScores=m),u&&(S.validOutputs=k),S}function ti(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),o=Math.min(r[0],r[2]),s=Math.min(r[1],r[3]),i=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),p=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),l=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),h=(i-o)*(u-s),f=(l-p)*(d-c);if(h<=0||f<=0)return 0;var m=Math.max(o,p),y=Math.max(s,c),g=Math.min(i,l),v=Math.min(u,d),b=Math.max(g-m,0)*Math.max(v-y,0);return b/(h+f-b)}function ni(e,t,n){var r=Math.exp(t*n*n);return n<=e?r:0}function ri(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}var ai=pn({nonMaxSuppressionWithScore_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=0);var s=on(e,"boxes","nonMaxSuppression"),i=on(t,"scores","nonMaxSuppression"),u=Ys(s,i,n,r,a,o),p={boxes:s,scores:i},c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:o=u.softNmsSigma},l=en.runKernel("NonMaxSuppressionV5",p,c);return{selectedIndices:l[0],selectedScores:l[1]}}}),oi=pn({nonMaxSuppressionPadded_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=!1);var s=on(e,"boxes","nonMaxSuppression"),i=on(t,"scores","nonMaxSuppression"),u=Ys(s,i,n,r,a,null),p={boxes:s,scores:i},c={maxOutputSize:u.maxOutputSize,iouThreshold:u.iouThreshold,scoreThreshold:u.scoreThreshold,padToMaxOutputSize:o},l=en.runKernel("NonMaxSuppressionV4",p,c);return{selectedIndices:l[0],validOutputs:l[1]}}}),si=pn({resizeBilinear_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=on(e,"images","resizeBilinear");oe(3===a.rank||4===a.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),oe(2===t.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+"".concat(t,".")})),oe(!1===r||!1===n,(function(){return"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Cn(a,[1,a.shape[0],a.shape[1],a.shape[2]])),c(t,0);var i={images:o},u={alignCorners:n,halfPixelCenters:r,size:t},p=en.runKernel("ResizeBilinear",i,u);return s?Cn(p,[p.shape[1],p.shape[2],p.shape[3]]):p}}),ii=pn({resizeNearestNeighbor_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=on(e,"images","resizeNearestNeighbor");oe(3===a.rank||4===a.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),oe(2===t.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+"".concat(t,".")})),oe("float32"===a.dtype||"int32"===a.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"})),oe(!1===r||!1===n,(function(){return"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Cn(a,[1,a.shape[0],a.shape[1],a.shape[2]])),c(t,0);var i={images:o},u={alignCorners:n,halfPixelCenters:r,size:t},p=en.runKernel("ResizeNearestNeighbor",i,u);return s?Cn(p,[p.shape[1],p.shape[2],p.shape[3]]):p}}),ui=pn({threshold_:function(e,t,n,r){var a;void 0===t&&(t="binary"),void 0===n&&(n=!1),void 0===r&&(r=.5);var o,s,i,u,p=on(e,"image","threshold"),l=p.shape[0]*p.shape[1],d=Pn(hs([r]),255);if(oe(3===p.rank,(function(){return"Error in threshold: image must be rank 3,"+"but got rank ".concat(p.rank,".")})),oe(3===p.shape[2]||1===p.shape[2],(function(){return"Error in threshold: image color channel must be equal to 3 or 1"+"but got ".concat(p.shape[2],".")})),oe("int32"===p.dtype||"float32"===p.dtype,(function(){return"Error in dtype: image dtype must be int32 or float32,"+"but got dtype ".concat(p.dtype,".")})),oe("otsu"===t||"binary"===t,(function(){return"Method must be binary or otsu, but was ".concat(t)})),3===p.shape[2]){o=(a=c(as(p,[1,1,1],-1),3))[0],s=a[1],i=a[2];var h=Pn(o,.2989),f=Pn(s,.587),m=Pn(i,.114);u=hn(hn(h,f),m)}else u=e;"otsu"===t&&(d=function(e,t){for(var n,r,a,o,s,i,u=hs([-1]),p=hs([0]),c=hs([0]),l=0;l=2,(function(){return"bandPart(): Rank must be at least 2, got ".concat(r.rank,".")}));var a,o,s=r.shape,i=c(r.shape.slice(-2),2),u=i[0],p=i[1];"number"==typeof t?(oe(t%1==0,(function(){return"bandPart(): numLower must be an integer, got ".concat(t,".")})),oe(t<=u,(function(){return"bandPart(): numLower (".concat(t,")")+" must not be greater than the number of rows (".concat(u,").")})),a=on(t<0?u:t,"numLower","bandPart")):(oe("int32"===t.dtype,(function(){return"bandPart(): numLower's dtype must be an int32."})),a=Ir(ua(t,0),u,Ca(t,u))),"number"==typeof n?(oe(n%1==0,(function(){return"bandPart(): numUpper must be an integer, got ".concat(n,".")})),oe(n<=p,(function(){return"bandPart(): numUpper (".concat(n,")")+" must not be greater than the number of columns (".concat(p,").")})),o=on(n<0?p:n,"numUpper","bandPart")):(oe("int32"===n.dtype,(function(){return"bandPart(): numUpper's dtype must be an int32."})),o=Ir(ua(n,0),p,Ca(n,p)));var l=Cn(Co(0,u,1,"int32"),[-1,1]),d=Co(0,p,1,"int32"),h=ga(l,d),f=xa(pa(h,a),na(h,fa(o))),m=Aa([u,p],r.dtype);return Cn(us(Ns(Cn(r,[-1,u,p])).map((function(e){return Ir(f,e,m)}))),s)}}),li=pn({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,oe(null!=e&&e.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=e[0].shape[0],r=function(t){oe(e[t].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+"(".concat(e[t].shape[0]," vs. ").concat(n,")")}))},a=1;a0)for(var n=0;n=r?r:n,p=function(e){var t,u=o,p=i,l=a;t=c(en.tidy((function(){var t=Kn(o,[e,e],[n-e,1]),u=Wr(t),p=Kn(o,[e,e],[1,1]),c=Ir(ta(p,0),fs([[-1]]),fs([[1]])),l=ga(p,Pn(c,u)),d=Sr(t,l);i=1===d.shape[0]?zn(s):Vn([s,Kn(d,[1,0],[d.shape[0]-1,d.shape[1]])],0);var h=fa(Sr(Ln(c,l),u)),f=Kn(o,[e,0],[n-e,r]),m=Pn(h,i),y=ks(i);if(0===e)o=ga(f,Ln(m,Ln(y,f)));else{var g=ga(f,Ln(m,Ln(y,f)));o=Vn([Kn(o,[0,0],[e,r]),g],0)}var v=ks(m),b=Kn(a,[0,e],[n,a.shape[1]-e]);if(0===e)a=ga(b,Ln(Ln(b,i),v));else{var x=ga(b,Ln(Ln(b,i),v));a=Vn([Kn(a,[0,0],[n,e]),x],1)}return[i,o,a]})),3),i=t[0],o=t[1],a=t[2],Qt([u,p,l]).forEach((function(e){return e.dispose()}))},l=0;lr&&(a=Kn(a,[0,0],[n,r]),o=Kn(o,[0,0],[r,r])),[a,o]}))}var hi,fi=pn({qr_:function(e,t){if(void 0===t&&(t=!1),oe(e.rank>=2,(function(){return"qr() requires input tensor to have a rank >= 2, but got rank ".concat(e.rank)})),2===e.rank)return di(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce((function(e,t){return e*t})),r=Ns(Cn(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],o=[];return r.forEach((function(e){var n=c(di(e,t),2),r=n[0],s=n[1];a.push(r),o.push(s)})),[Cn(us(a,0),e.shape),Cn(us(o,0),e.shape)]}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(hi||(hi={}));var mi=pn({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=hi.SUM_BY_NONZERO_WEIGHTS);var r=on(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=on(t,"weights","computeWeightedLoss"));var o=null==a?r:Pn(r,a);if(n===hi.NONE)return o;if(n===hi.SUM)return Ur(o);if(n===hi.MEAN){if(null==a)return Da(o);var s=r.size/a.size,i=Sr(Ur(o),Ur(a));return s>1?Sr(i,Kr(s)):i}if(n===hi.SUM_BY_NONZERO_WEIGHTS){if(null==a)return Sr(Ur(o),Kr(r.size));var u=Pn(a,Ma(r.shape)),p=Tn(Ur(Pa(u,Kr(0))),"float32");return Sr(Ur(o),p)}throw Error("Unknown reduction: ".concat(n))}}),yi=pn({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=hi.SUM_BY_NONZERO_WEIGHTS);var a=on(e,"labels","absoluteDifference"),o=on(t,"predictions","absoluteDifference"),s=null;null!=n&&(s=on(n,"weights","absoluteDifference")),se(a.shape,o.shape,"Error in absoluteDifference: ");var i=cn(ga(a,o));return mi(i,s,r)}}),gi=pn({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=hi.SUM_BY_NONZERO_WEIGHTS);var o=on(e,"labels","cosineDistance"),s=on(t,"predictions","cosineDistance"),i=null;null!=r&&(i=on(r,"weights","cosineDistance")),se(o.shape,s.shape,"Error in cosineDistance: ");var u=Kr(1),p=ga(u,Ur(Pn(o,s),n,!0));return mi(p,i,a)}}),vi=pn({hingeLoss_:function(e,t,n,r){void 0===r&&(r=hi.SUM_BY_NONZERO_WEIGHTS);var a=on(e,"labels","hingeLoss"),o=on(t,"predictions","hingeLoss"),s=null;null!=n&&(s=on(n,"weights","hingeLoss")),se(a.shape,o.shape,"Error in hingeLoss: ");var i=Kr(1);a=ga(Pn(Kr(2),a),i);var u=zo(ga(i,Pn(a,o)));return mi(u,s,r)}}),bi=pn({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=hi.SUM_BY_NONZERO_WEIGHTS);var o=on(e,"labels","huberLoss"),s=on(t,"predictions","huberLoss"),i=null;null!=n&&(i=on(n,"weights","huberLoss")),se(o.shape,s.shape,"Error in huberLoss: ");var u=Kr(r),p=cn(ga(s,o)),c=Ca(p,u),l=ga(p,c),d=hn(Pn(Kr(.5),qr(c)),Pn(u,l));return mi(d,i,a)}}),xi=pn({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=hi.SUM_BY_NONZERO_WEIGHTS);var o=on(e,"labels","logLoss"),s=on(t,"predictions","logLoss"),i=null;null!=n&&(i=on(n,"weights","logLoss")),se(o.shape,s.shape,"Error in logLoss: ");var u=Kr(1),p=Kr(r),c=fa(Pn(o,la(hn(s,p)))),l=Pn(ga(u,o),la(hn(ga(u,s),p))),d=ga(c,l);return mi(d,i,a)}}),Ni=pn({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=hi.SUM_BY_NONZERO_WEIGHTS);var a=on(e,"labels","meanSquaredError"),o=on(t,"predictions","meanSquaredError"),s=null;null!=n&&(s=on(n,"weights","meanSquaredError")),se(a.shape,o.shape,"Error in meanSquaredError: ");var i=ss(a,o);return mi(i,s,r)}}),wi=pn({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=hi.SUM_BY_NONZERO_WEIGHTS);var o=on(e,"multiClassLabels","sigmoidCrossEntropy"),s=on(t,"logits","sigmoidCrossEntropy"),i=null;if(null!=n&&(i=on(n,"weights","sigmoidCrossEntropy")),se(o.shape,s.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=Kr(r),p=Kr(1),c=Kr(.5);o=hn(Pn(o,ga(p,u)),Pn(c,u))}var l=function(e,t){var n=on(e,"labels","sigmoidCrossEntropyWithLogits"),r=on(t,"logits","sigmoidCrossEntropyWithLogits");se(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=zo(r),o=Pn(r,n),s=da(Zr(fa(cn(r))));return hn(ga(a,o),s)}(o,s);return mi(l,i,a)}}),ki=pn({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=hi.SUM_BY_NONZERO_WEIGHTS);var o=on(e,"onehotLabels","softmaxCrossEntropy"),s=on(t,"logits","softmaxCrossEntropy"),i=null;if(null!=n&&(i=on(n,"weights","softmaxCrossEntropy")),se(o.shape,s.shape,"Error in softmaxCrossEntropy: "),r>0){var u=Kr(r),p=Kr(1),l=Kr(o.shape[1]);o=hn(Pn(o,ga(p,u)),Sr(u,l))}var d=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+"supported. Labels / logits was rank ".concat(t.rank," ")+"and dim was ".concat(n));var r=ha((function(e,t,r){var a=ba(t,[n],!0),o=ga(Tn(t,"float32"),a);r([e,o]);var s=fa(Pn(o,e));return{value:Ur(s,[n]),gradFunc:function(e,t){var r=c(t,2),a=r[0],o=r[1],s=zr(e.shape,[n]);return[Pn(Cn(e,s),ga(Tn(a,"float32"),Zr(o))),Pn(Cn(e,s),ga(Zr(o),Tn(a,"float32")))]}}}));return r(e,t)}(o,s);return mi(d,i,a)}}),Ti=pn({sparseFillEmptyRows_:function(e,t,n,r){var a=on(e,"indices","sparseFillEmptyRows","int32"),o=on(t,"values","sparseFillEmptyRows"),s=on(n,"denseShape","sparseFillEmptyRows","int32"),i=on(r,"defaultValue","sparseFillEmptyRows",o.dtype);if(2!==a.rank)throw new Error("Indices should be Tensor2D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Values should be Tensor1D but received shape ".concat(o.shape));if(1!==s.rank)throw new Error("Dense shape should be Tensor1D but received shape ".concat(s.shape));if(0!==i.rank)throw new Error("Default value should be a scalar but received shape ".concat(i.shape));var u={indices:a,values:o,denseShape:s,defaultValue:i},p=en.runKernel("SparseFillEmptyRows",u);return{outputIndices:p[0],outputValues:p[1],emptyRowIndicator:p[2],reverseIndexMap:p[3]}}}),Si=pn({sparseReshape_:function(e,t,n){var r=on(e,"inputIndices","sparseReshape","int32"),a=on(t,"inputShape","sparseReshape","int32"),o=on(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error("Input indices should be Tensor2D but received shape\n ".concat(r.shape));if(1!==a.rank)throw new Error("Input shape should be Tensor1D but received shape ".concat(a.shape));if(1!==o.rank)throw new Error("New shape should be Tensor1D but received shape ".concat(o.shape));var s={inputIndices:r,inputShape:a,newShape:o},i=en.runKernel("SparseReshape",s);return{outputIndices:i[0],outputShape:i[1]}}}),_i=pn({sparseSegmentMean_:function(e,t,n){var r=on(e,"data","sparseSegmentMean"),a=on(t,"indices","sparseSegmentMean","int32"),o=on(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var s={data:r,indices:a,segmentIds:o};return en.runKernel("SparseSegmentMean",s)}}),Ei=pn({sparseSegmentSum_:function(e,t,n){var r=on(e,"data","sparseSegmentSum"),a=on(t,"indices","sparseSegmentSum","int32"),o=on(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var s={data:r,indices:a,segmentIds:o};return en.runKernel("SparseSegmentSum",s)}}),Ii=pn({stringNGrams_:function(e,t,n,r,a,o,s,i){var u=on(e,"data","stringNGrams","string");if("string"!==u.dtype)throw new Error("Data must be of datatype string");if(1!==u.shape.length)throw new Error("Data must be a vector, saw: ".concat(u.shape));var p=on(t,"dataSplits","stringNGrams");if("int32"!==p.dtype)throw new Error("Data splits must be of datatype int32");var c={separator:n,nGramWidths:r,leftPad:a,rightPad:o,padWidth:s,preserveShortSequences:i},l={data:u,dataSplits:p},d=en.runKernel("StringNGrams",l,c);return{nGrams:d[0],nGramsSplits:d[1]}}}),Oi={__proto__:null,OP_SCOPE_SUFFIX:un,abs:cn,acos:ln,acosh:dn,add:hn,addN:fn,all:mn,any:yn,argMax:gn,argMin:vn,asin:bn,asinh:xn,atan:Nn,atan2:wn,atanh:kn,avgPool:Fn,avgPool3d:Rn,basicLSTMCell:qn,batchNorm:Gn,batchNorm2d:Wn,batchNorm3d:Hn,batchNorm4d:Zn,batchToSpaceND:Un,bincount:Qn,bitwiseAnd:Yn,booleanMaskAsync:function(e,t,n){return i(this,void 0,void 0,(function(){var r,a,o,s,i,p,c,l,d,h,f,m,y;return u(this,(function(u){switch(u.label){case 0:for(r=on(e,"tensor","boolMask"),a=on(t,"mask","boolMask","bool"),o=null==n?0:n,s=a.rank,i=r.shape,oe(s>0,(function(){return"mask cannot be scalar"})),se(i.slice(o,o+s),a.shape,"mask's shape must match the first K dimensions of tensor's shape,"),p=1,c=o;c1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+"but got ".concat(r.rank)})),oe(r.rank-1===a.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+"".concat(r.rank," and targets rank ").concat(a.rank)})),se(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),o=r.shape[r.shape.length-1],oe(n>0&&n<=o,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+"dimension (".concat(o,"), but got ").concat(n)})),[4,r.data()];case 1:return s=u.sent(),[4,a.data()];case 2:for(i=u.sent(),p=c([s.length/o,o],2),l=p[0],d=p[1],h=function(e,t){return he("bool",t)}(0,l),f=0;f=0&&o>=0&&a!==o)throw new Error("Incompatible shape during merge: ".concat(e," vs. ").concat(t));n[r]=a>=0?a:o}return n}var Fi=function(){function e(e,n,r,a,o,s,i){this.name=e,this.dtype=n,this.maxSize=r,this.elementShape=a,this.identicalElementShapes=o,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=t.scalar(0),t.keep(this.idTensor)}return Object.defineProperty(e.prototype,"id",{get:function(){return this.idTensor.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"closed",{get:function(){return this.closed_},enumerable:!1,configurable:!0}),e.prototype.clearAndClose=function(e){this.tensors.forEach((function(t){null!=e&&e.has(t.tensor.id)||t.tensor.dispose()})),this.tensors=[],this.closed_=!0,this.idTensor.dispose()},e.prototype.size=function(){return this.tensors.length},e.prototype.read=function(e){if(this.closed_)throw new Error("TensorArray ".concat(this.name," has already been closed."));if(e<0||e>=this.size())throw new Error("Tried to read from index ".concat(e,", but array size is: ").concat(this.size()));var t=this.tensors[e];if(t.cleared)throw new Error("TensorArray ".concat(this.name,": Could not read index ").concat(e," twice because it was cleared after a previous read ")+"(perhaps try setting clear_after_read = false?).");return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor},e.prototype.readMany=function(e){var t=this;return e.map((function(e){return t.read(e)}))},e.prototype.write=function(e,n){if(this.closed_)throw new Error("TensorArray ".concat(this.name," has already been closed."));if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error("Tried to write to index ".concat(e,", but array is not resizeable and size is: ").concat(this.maxSize));var r=this.tensors[e]||{};if(n.dtype!==this.dtype)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,",\n because the value dtype is ").concat(n.dtype,", but TensorArray dtype is ").concat(this.dtype,"."));if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=n.shape),Di(this.elementShape,n.shape,"TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,".")),r.read)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,", because it has already been read."));if(r.written)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,", because it has already been written."));r.tensor=n,t.keep(n),r.written=!0,this.tensors[e]=r},e.prototype.writeMany=function(e,t){var n=this;if(e.length!==t.length)throw new Error("TensorArray ".concat(this.name,": could not write multiple tensors,")+"because the index size: ".concat(e.length," is not the same as tensors size: ").concat(t.length,"."));e.forEach((function(e,r){return n.write(e,t[r])}))},e.prototype.gather=function(e,n){if(n&&n!==this.dtype)throw new Error("TensorArray dtype is ".concat(this.dtype," but gather requested dtype ").concat(n));if(e)e=e.slice(0,this.size());else{e=[];for(var r=0;r=this.maxSize)throw new Error("Max index must be < array size (".concat(r," vs. ").concat(this.maxSize,")"));this.writeMany(e,t.unstack(n,0))},e.prototype.split=function(e,n){var r=this;if(n.dtype!==this.dtype)throw new Error("TensorArray dtype is ".concat(this.dtype," but tensor has dtype ").concat(n.dtype));var a=0,o=e.map((function(e){return a+=e}));if(a!==n.shape[0])throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ".concat(a,", and tensor's shape is: ").concat(n.shape));if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error("TensorArray's size is not equal to the size of lengths (".concat(this.maxSize," vs. ").concat(e.length,"), ")+"and the TensorArray is not marked as dynamically resizeable");var s=0===a?0:n.size/a,i=[];t.tidy((function(){n=t.reshape(n,[1,a,s]);for(var u=0;uthis.maxNumElements)throw new Error("TensorListResize input size ".concat(t," is greater maxNumElement ").concat(this.maxNumElements,"."));var n=new e([],this.elementShape,this.elementDtype,this.maxNumElements);n.tensors.length=t;for(var r=0;rthis.tensors.length)throw new Error("Trying to access element ".concat(e," in a list with ").concat(this.tensors.length," elements."));if(null==this.tensors[e])throw new Error("element at index ".concat(e," is null."));Di(this.tensors[e].shape,n,"TensorList shape mismatch: ");var a=Mi(this.elementShape,this.tensors,n);return t.reshape(this.tensors[e],a)},e.prototype.setItem=function(e,n){if(n.dtype!==this.elementDtype)throw new Error("Invalid data types; op elements ".concat(n.dtype,", but list elements ").concat(this.elementDtype));if(e<0||-1!==this.maxNumElements&&e>=this.maxNumElements)throw new Error("Trying to set element ".concat(e," in a list with max ").concat(this.maxNumElements," elements."));Di(this.elementShape,n.shape,"TensorList shape mismatch: "),t.keep(n),null!=this.tensors[e]&&(this.tensors[e].kept=!1),this.tensors[e]=n},e.prototype.gather=function(e,n,r){var a=this;if(n!==this.elementDtype)throw new Error("Invalid data types; op elements ".concat(n,", but list elements ").concat(this.elementDtype));Di(this.elementShape,r,"TensorList shape mismatch: "),e=e.slice(0,this.size());var o=Mi(this.elementShape,this.tensors,r);return 0===e.length?t.tensor([],[0].concat(o)):t.tidy((function(){var n=e.map((function(e){return t.reshape(a.tensors[e],o)}));return t.stack(n,0)}))},e.prototype.concat=function(e,n){var r=this;if(e&&e!==this.elementDtype)throw new Error("TensorList dtype is ".concat(this.elementDtype," but concat requested dtype ").concat(e));Di(this.elementShape,n,"TensorList shape mismatch: ");var a=Mi(this.elementShape,this.tensors,n);return 0===this.size()?t.tensor([],[0].concat(a)):t.tidy((function(){var e=r.tensors.map((function(e){return t.reshape(e,a)}));return t.concat(e,0)}))},e}();function zi(e,t,n){var r=c(f("fusedOps",e,t,n),2),a=r[0],o=r[1],s="biasadd"===a,i=!s,u="prelu"===o,p="fusedbatchnorm"===a,l=f("numArgs",e,t,n);if(s){if(u&&2!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!u&&s&&1!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(p)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");var d=f("strides",e,t,n),h=x(e,t,n),m=f("dataFormat",e,t,n).toUpperCase(),y=f("dilations",e,t,n),g=c(f("args",e,t,n),2),v=g[0],b=g[1];return i&&(b=v,v=void 0),{stride:d,pad:h,dataFormat:m,dilations:y,biasArg:v,preluArg:b,activationFunc:o,leakyreluAlpha:f("leakyreluAlpha",e,t,n)}}function Vi(e,t,n){return{boxes:f("boxes",e,t,n),scores:f("scores",e,t,n),maxOutputSize:f("maxOutputSize",e,t,n),iouThreshold:f("iouThreshold",e,t,n),scoreThreshold:f("scoreThreshold",e,t,n),softNmsSigma:f("softNmsSigma",e,t,n)}}var Li=function(){function e(e,n){this.keyDType=e,this.valueDType=n,this.handle=t.scalar(0),this.tensorMap=new Map,t.keep(this.handle)}return Object.defineProperty(e.prototype,"id",{get:function(){return this.handle.id},enumerable:!1,configurable:!0}),e.prototype.clearAndClose=function(){this.tensorMap.forEach((function(e){return e.dispose()})),this.tensorMap.clear(),this.handle.dispose()},e.prototype.size=function(){return this.tensorMap.size},e.prototype.tensorSize=function(){return Kr(this.size(),"int32")},e.prototype.import=function(e,n){return i(this,void 0,void 0,(function(){var r,a=this;return u(this,(function(o){switch(o.label){case 0:return this.checkKeyAndValueTensor(e,n),[4,e.data()];case 1:return r=o.sent(),this.tensorMap.forEach((function(e){return e.dispose()})),this.tensorMap.clear(),[2,t.tidy((function(){var e=t.unstack(n),o=r.length,s=e.length;t.util.assert(o===s,(function(){return"The number of elements doesn't match, keys has "+"".concat(o," elements, the values has ").concat(s," ")+"elements."}));for(var i=0;i=a)throw new Error("Max index must be < array size (".concat(o," vs. ").concat(a,")"));var s=new Ri([],r,e.dtype,a),i=t.unstack(e,0);return n.forEach((function(e,t){s.setItem(e,i[t])})),s}(H,W,se,J),r.addTensorList(ue),[2,[ue.idTensor]];case 28:return se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),Z="TensorListReserve"===e.op?"numElements":"maxNumElements",J=f(Z,e,n,r),Q="TensorListReserve"===e.op?-1:J,ue=function(e,t,n,r){return new Ri([],e,t,r)}(se,ee,0,Q),r.addTensorList(ue),[2,[ue.idTensor]];case 29:return Y=f("tensorListId",e,n,r),X=f("indices",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),[2,[(ue=r.getTensorList(Y.id)).gather(X,ee,se)]];case 30:return pe=f("tensorListId",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),J=f("numElements",e,n,r),[2,[(ue=r.getTensorList(pe.id)).stack(se,ee,J)]];case 31:return $=f("tensor",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),ue=function(e,n,r){var a=e.dtype;if(e.shape.length<1)throw new Error("Tensor must be at least a vector, but saw shape: ".concat(e.shape));if(e.dtype!==r)throw new Error("Invalid data types; op elements ".concat(e.dtype,", but list elements ").concat(r));Di(e.shape.slice(1),n,"TensorList shape mismatch: ");var o=t.unstack(e);return new Ri(o,n,a)}($,se,ee),r.addTensorList(ue),[2,[ue.idTensor]];case 32:return te=f("tensorListId",e,n,r),ue=r.getTensorList(te.id),ne=f("dtype",e,n,r),se=f("elementShape",e,n,r),[2,[ue.concat(ne,se)]];case 33:return pe=f("tensorListId",e,n,r),re=f("tensor",e,n,r),(ue=r.getTensorList(pe.id)).pushBack(re),[2,[ue.idTensor]];case 34:return pe=f("tensorListId",e,n,r),se=f("elementShape",e,n,r),ae=f("elementDType",e,n,r),[2,[(ue=r.getTensorList(pe.id)).popBack(se,ae)]];case 35:return oe=f("tensor",e,n,r),se=f("elementShape",e,n,r),ie=f("lengths",e,n,r),ue=function(e,n,r){var a=0,o=n.map((function(e){return a+=e}));if(a!==e.shape[0])throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ".concat(a,", and tensor's shape is: ").concat(e.shape));for(var s=Ci(e.shape.slice(1),r),i=0===a?0:e.size/a,u=t.tidy((function(){var r=[];e=t.reshape(e,[1,a,i]);for(var u=0;u1))throw new Error("Cannot exit frame, the context is empty");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()},e.prototype.nextIteration=function(){if(!(this.contexts&&this.contexts.length>0))throw new Error("Cannot increase frame iteration, the context is empty");this.contexts=this.contexts.slice(),this.lastId++;var e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))},e.prototype.getWeight=function(e){return this.weightMap[e]},e.prototype.addTensorArray=function(e){this.tensorArrayMap[e.id]=e},e.prototype.getTensorArray=function(e){return this.tensorArrayMap[e]},e.prototype.addTensorList=function(e){this.tensorListMap[e.id]=e},e.prototype.getTensorList=function(e){return this.tensorListMap[e]},e.prototype.dispose=function(e){for(var t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(var t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)},e}();function Ki(e,t,n,r){var a=new Set,o=[],s=null,i=null,u=new Set,p=new Set(Object.keys(e).map((function(e){return b(e)[0]})));r=r||[];for(var d=new Set(r.map((function(e){return b(e.name)[0]}))),h=l([],c(t),!1);h.length>0;){var f=h.pop();(Wi(f)||Hi(f)||Zi(f))&&null==s&&(i=(s=f).children.map((function(e){return e.name})).filter((function(e){return a.has(e)}))),a.add(f.name),null==n[f.name]&&(p.has(f.name)||d.has(f.name)||(0!==f.inputs.length?f.inputs.forEach((function(e){u.has(e.name)||(u.add(e.name),h.push(e))})):o.push(f.name)))}return{inputs:e,outputs:t,usedNodes:a,missingInputs:o,dynamicNode:s,syncInputs:i}}var ji=function(e){function t(t){return e.call(this,"NodesExecutionOrderError: ".concat(t))||this}return s(t,e),t}(Error),qi=new Set(["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"]),Ui=new Set(["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"]),Gi=new Set(["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"]);function Wi(e){return qi.has(e.op)}function Hi(e){return Ui.has(e.op)}function Zi(e){return Gi.has(e.op)}var Qi=function(){function e(t,n){var r=this;this.graph=t,this.parent=n,this.compiledMap=new Map,this.parseNodeNameCache=new Map,this._weightMap={},this.SEPARATOR=",",this._functions={},this._functionExecutorMap={},this.keepIntermediateTensors=!1,this._outputs=t.outputs,this._inputs=t.inputs,this._initNodes=t.initNodes,this._signature=t.signature,this._functions=t.functions,null!=t.functions&&Object.keys(t.functions).forEach((function(n){r._functionExecutorMap[n]=new e(t.functions[n],r)}))}return Object.defineProperty(e.prototype,"weightIds",{get:function(){return this.parent?this.parent.weightIds:this._weightIds},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"functionExecutorMap",{get:function(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"weightMap",{get:function(){return this.parent?this.parent.weightMap:this._weightMap},set:function(e){var t=Object.keys(e).map((function(t){return e[t].map((function(e){return e.id}))}));this._weightIds=[].concat.apply([],l([],c(t),!1)),this._weightMap=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"resourceManager",{set:function(e){this._resourceManager=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputs",{get:function(){return this._inputs.map((function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return this._outputs.map((function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputNodes",{get:function(){return this._inputs.map((function(e){return e.signatureKey||e.name}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputNodes",{get:function(){return this._outputs.map((function(e){var t=e.signatureKey||e.name;return e.defaultOutput?"".concat(t,":").concat(e.defaultOutput):t}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"functions",{get:function(){var e=this;return Object.keys(this._functions).reduce((function(t,n){return t[n]=e._functions[n].signature,t}),{})},enumerable:!1,configurable:!0}),e.prototype.getCompilationKey=function(e,t){var n=e.map((function(e){return e.name})).sort(),r=t.map((function(e){return e.name})).sort();return n.join(this.SEPARATOR)+"--"+r.join(this.SEPARATOR)},e.prototype.compile=function(e,t){var n=Ki(e,t,this.weightMap,this._initNodes),r=n.missingInputs,a=n.dynamicNode,o=n.syncInputs;if(null!=a)throw new Error("This execution contains the node '".concat(a.name,"', which has ")+"the dynamic op '".concat(a.op,"'. Please use ")+"model.executeAsync() instead. Alternatively, to avoid the "+"dynamic ops, specify the inputs [".concat(o,"]"));if(r.length>0){var s=t.map((function(e){return e.name})),i=Object.keys(e);throw new Error("Cannot compute the outputs [".concat(s,"] from the provided inputs ")+"[".concat(i,"]. Missing the following inputs: [").concat(r,"]"))}var u=function(e,t){var n,r,a,o,s,i,u=t.usedNodes,d=t.inputs,h=Object.keys(d).map((function(e){return b(e)[0]})).map((function(t){return e.nodes[t]})),f=e.initNodes||[],m=function(e){return u.has("string"==typeof e?e:e.name)};function y(e){return l([],c(new Map(e.map((function(e){return[e.name,e]}))).values()),!1)}var g=y(l(l(l([],c(h),!1),c(e.weights),!1),c(f),!1)).filter(m),v=y(l(l([],c(g),!1),c(Object.values(e.nodes)),!1)).filter(m),x=new Map(v.map((function(e){return[e.name,e]}))),N={};try{for(var w=p(v),k=w.next();!k.done;k=w.next()){N[(O=k.value).name]=N[O.name]||0;try{for(var T=(a=void 0,p(O.children)),S=T.next();!S.done;S=T.next())m(M=S.value)||(N[M.name]=Number.POSITIVE_INFINITY),N[M.name]=(N[M.name]||0)+1}catch(e){a={error:e}}finally{try{S&&!S.done&&(o=T.return)&&o.call(T)}finally{if(a)throw a.error}}}}catch(e){n={error:e}}finally{try{k&&!k.done&&(r=w.return)&&r.call(w)}finally{if(n)throw n.error}}for(var _=Object.entries(N).filter((function(e){return 0===c(e,2)[1]})).map((function(e){return c(e,1)[0]})),E=l([],c(_),!1);_.length>0;){var I=_.pop(),O=x.get(I);try{for(var D=(s=void 0,p(O.children.filter(m))),A=D.next();!A.done;A=D.next()){var M;0==--N[(M=A.value).name]&&(E.push(M.name),_.push(M.name))}}catch(e){s={error:e}}finally{try{A&&!A.done&&(i=D.return)&&i.call(D)}finally{if(s)throw s.error}}}var C=function(e,t){for(var n,r,a=new Map(e.map((function(e){return[e.name,e]}))),o=t.map((function(e){return e.name})),s=new Set(o);o.length>0;){var i=o.pop(),u=a.get(i);try{for(var c=(n=void 0,p(u.children)),l=c.next();!l.done;l=c.next()){var d=l.value;a.has(d.name)&&!s.has(d.name)&&(s.add(d.name),o.push(d.name))}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}}return e.filter((function(e){return s.has(e.name)}))}(E.map((function(e){return x.get(e)})),g);return function(e,t){var n,r,a,o,s,i,u=new Map(e.map((function(e,t){return[e.name,t]}))),c=new Set(t.map((function(e){return e.name}))),l=function(e){return c.has("string"==typeof e?e:e.name)},d=new Set(e.map((function(e){return e.name}))),h=function(e){return d.has("string"==typeof e?e:e.name)};try{for(var f=p(e),m=f.next();!m.done;m=f.next()){var y=m.value;try{for(var g=(a=void 0,p(y.children.filter(h))),v=g.next();!v.done;v=g.next()){var b=v.value;if(!u.has(b.name))throw new ji("Child ".concat(b.name," of node ").concat(y.name," is unreachable."));if(u.get(y.name)>u.get(b.name))throw new ji("Node ".concat(y.name," is scheduled to run after its child ").concat(b.name,"."))}}catch(e){a={error:e}}finally{try{v&&!v.done&&(o=g.return)&&o.call(g)}finally{if(a)throw a.error}}if(!l(y))try{for(var x=(s=void 0,p(y.inputs)),N=x.next();!N.done;N=x.next()){var w=N.value;if(!u.has(w.name))throw new ji("Input ".concat(w.name," of node ").concat(y.name," is unreachable."));if(u.get(w.name)>u.get(y.name))throw new ji("Node ".concat(y.name," is scheduled to run before its input ").concat(w.name,"."))}}catch(e){s={error:e}}finally{try{N&&!N.done&&(i=x.return)&&i.call(x)}finally{if(s)throw s.error}}}}catch(e){n={error:e}}finally{try{m&&!m.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}}(C,g),C}(this.graph,n),d=function(e){for(var t=new Map(e.map((function(e,t){return[e.name,t]}))),n=Number.MAX_SAFE_INTEGER,r=e.map((function(e,t){return Wi(e)?n:t})),a=function(e){var n=r[t.get(e.name)];return null==n?-1:n},o=e.map((function(e,t){return e.children.map(a).reduce((function(e,t){return Math.max(e,t)}),r[t])})),s=new Map,i=0;i0?(T=this.processStack(o,v,t,x,k,w,i,N,h),[4,Promise.all(T)]):[3,3];case 2:return u.sent(),[3,1];case 3:if(null!=y||r||console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead."),(S=p.filter((function(e){return!Wi(e)&&!m(e.name,x,t)})).map((function(e){return e.name}))).length>0)throw _="",null!=y&&(_="Alternatively, to avoid the dynamic ops, use model.execute() "+"and specify the inputs [".concat(g,"]")),new Error("Cannot compute the outputs [".concat(S,"] from the provided ")+"inputs [".concat(a,"]. Consider providing the following inputs: ")+"[".concat(f,"]. ").concat(_));return[2,x]}}))}))},e.prototype.processStack=function(e,n,r,a,o,s,i,u,p){for(var l=this,d=[],h=function(){var e,h,y=n.pop();r.currentContext=y.contexts;var v="";if("Enter"===y.node.op&&f("isConstant",y.node,a,r)&&(e=c(g(y.node.name,r),1),v=e[0]),null==a[y.node.name]){var b=Pi(y.node,a,r,m._resourceManager);v||(h=c(g(y.node.name,r),1),v=h[0]);var x=r.currentContext;t.util.isPromise(b)?d.push(b.then((function(e){return a[v]=e,l.keepIntermediateTensors&&(l.clonedTensorsMap[v]=l.cloneTensorList(e)),r.currentContext=x,l.checkTensorForDisposal(v,y.node,a,r,s,i,u),l.processChildNodes(y.node,n,r,a,o,p),e}))):(a[v]=b,m.keepIntermediateTensors&&(m.clonedTensorsMap[v]=m.cloneTensorList(b)),m.checkTensorForDisposal(v,y.node,a,r,s,i,u),m.processChildNodes(y.node,n,r,a,o,p))}else m.processChildNodes(y.node,n,r,a,o,p)},m=this;n.length>0;)h();return d},e.prototype.processChildNodes=function(e,t,n,r,a,o){e.children.forEach((function(e){var s=c(g(e.name,n),1)[0];!a[s]&&o.has(e.name)&&("Merge"===e.op?e.inputNames.some((function(e){return!!m(e,r,n)}))&&(a[s]=!0,t.push({contexts:n.currentContext,node:e})):e.inputNames.every((function(e){return!!m(e,r,n)}))&&(a[s]=!0,t.push({contexts:n.currentContext,node:e})))}))},e.prototype.dispose=function(){var e=this;Object.keys(this.weightMap).forEach((function(t){return e.weightMap[t].forEach((function(e){return e.dispose()}))}))},e.prototype.checkInputShapeAndType=function(e){var n=this;Object.keys(e).forEach((function(r){var a=e[r],o=c(b(r),1)[0],s=n.graph.nodes[o];if(s.attrParams.shape&&s.attrParams.shape.value){var i=s.attrParams.shape.value,u=i.length===a.shape.length&&a.shape.every((function(e,t){return-1===i[t]||i[t]===e}));t.util.assert(u,(function(){return"The shape of dict['".concat(s.name,"'] provided in ")+"model.execute(dict) must be [".concat(i,"], but was ")+"[".concat(a.shape,"]")}))}s.attrParams.dtype&&s.attrParams.dtype.value&&t.util.assert(a.dtype===s.attrParams.dtype.value,(function(){return"The dtype of dict['".concat(s.name,"'] provided in ")+"model.execute(dict) must be "+"".concat(s.attrParams.dtype.value,", but was ").concat(a.dtype)}))}))},e.prototype.mapInputs=function(e){var t,n,r={};for(var a in e){var o=null===(n=null===(t=this._signature)||void 0===t?void 0:t.inputs)||void 0===n?void 0:n[a];null!=o?r[o.name]=e[a]:r[a]=e[a]}return r},e.prototype.checkInputs=function(e){var t=this,n=Object.keys(e).filter((function(e){var n=c(b(e),1)[0];return null==t.graph.nodes[n]}));if(n.length>0)throw new Error("The dict provided in model.execute(dict) has "+"keys: [".concat(n,"] that are not part of graph"))},e.prototype.mapOutputs=function(e){var t=this;return e.map((function(e){var n,r,a=null===(r=null===(n=t._signature)||void 0===n?void 0:n.outputs)||void 0===r?void 0:r[e];return null!=a?a.name:e}),{})},e.prototype.checkOutputs=function(e){var t=this;e.forEach((function(e){var n=c(b(e),1)[0];if(!t.graph.nodes[n])throw new Error("The output '".concat(e,"' is not found in the graph"))}))},e}(),Yi=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.hashTableNameToHandle=e,this.hashTableMap=t}return e.prototype.addHashTable=function(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t},e.prototype.getHashTableHandleByName=function(e){return this.hashTableNameToHandle[e]},e.prototype.getHashTableById=function(e){return this.hashTableMap[e]},e.prototype.dispose=function(){for(var e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(var t in this.hashTableNameToHandle)this.hashTableNameToHandle[t].dispose(),delete this.hashTableNameToHandle[t]},e}(),Xi=function(){function e(e,n,r){void 0===n&&(n={}),void 0===r&&(r=t.io),this.modelUrl=e,this.loadOptions=n,this.version="n/a",this.io=r,null==n&&(this.loadOptions={}),this.resourceManager=new Yi}return Object.defineProperty(e.prototype,"modelVersion",{get:function(){return this.version},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputNodes",{get:function(){return this.executor.inputNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputNodes",{get:function(){return this.executor.outputNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputs",{get:function(){return this.executor.inputs},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return this.executor.outputs},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"weights",{get:function(){return this.executor.weightMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"metadata",{get:function(){return this.artifacts.userDefinedMetadata},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modelSignature",{get:function(){return this.signature},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modelStructuredOutputKeys",{get:function(){return this.structuredOutputKeys},enumerable:!1,configurable:!0}),e.prototype.findIOHandler=function(){var e=this.modelUrl;if(null!=e.load)this.handler=e;else if(null!=this.loadOptions.requestInit)this.handler=this.io.browserHTTPRequest(e,this.loadOptions);else{var t=this.io.getLoadHandlers(e,this.loadOptions);if(0===t.length)t.push(this.io.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error("Found more than one (".concat(t.length,") load handlers for ")+"URL '".concat([e],"'"));this.handler=t[0]}},e.prototype.load=function(){var e=this;if(this.findIOHandler(),null==this.handler.load)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");var n=this.handler.load();return t.util.isPromise(n)?n.then((function(t){return e.loadSync(t)})):this.loadSync(n)},e.prototype.loadSync=function(e){this.artifacts=e;var t=this.artifacts.modelTopology,n=this.artifacts.signature;if(null!=this.artifacts.userDefinedMetadata){var r=this.artifacts.userDefinedMetadata;null!=r.signature&&(n=r.signature),null!=r.structuredOutputKeys&&(this.structuredOutputKeys=r.structuredOutputKeys)}this.signature=n,this.version="".concat(t.versions.producer,".").concat(t.versions.minConsumer);var a=this.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Qi(K.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(a),this.executor.resourceManager=this.resourceManager,null!=e.modelInitializer&&null!=e.modelInitializer.node){var o=K.Instance.transformGraph(e.modelInitializer);this.initializer=new Qi(o),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializerSignature=e.initializerSignature}return!0},e.prototype.save=function(e,t){return i(this,void 0,void 0,(function(){var t;return u(this,(function(n){if("string"==typeof e){if(0===(t=this.io.getSaveHandlers(e)).length)throw new Error("Cannot find any save handlers for URL '".concat(e,"'"));if(t.length>1)throw new Error("Found more than one (".concat(t.length,") save handlers for ")+"URL '".concat(e,"'"));e=t[0]}if(null==e.save)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[2,e.save(this.artifacts)]}))}))},e.prototype.addStructuredOutputNames=function(e){var n=this;if(this.structuredOutputKeys){var r=e instanceof t.Tensor?[e]:e,a={};return r.forEach((function(e,t){return a[n.structuredOutputKeys[t]]=e})),a}return e},e.prototype.predict=function(e,t){var n=this.execute(e,this.outputNodes);return this.addStructuredOutputNames(n)},e.prototype.predictAsync=function(e,t){return i(this,void 0,void 0,(function(){var t;return u(this,(function(n){switch(n.label){case 0:return[4,this.executeAsync(e,this.outputNodes)];case 1:return t=n.sent(),[2,this.addStructuredOutputNames(t)]}}))}))},e.prototype.normalizeInputs=function(e){var n,r=this;if(!(e instanceof t.Tensor||Array.isArray(e))){var a=null===(n=this.signature)||void 0===n?void 0:n.inputs;if(null!=a)for(var o in a){var s=a[o];null!=s.resourceId&&(e[o]=this.resourceIdToCapturedInput[s.resourceId])}return e}e=Array.isArray(e)?e:[e];var i=Object.keys(this.resourceIdToCapturedInput).length;if(e.length+i!==this.inputNodes.length)throw new Error("Input tensor count mismatch, the graph model has ".concat(this.inputNodes.length-i," non-resource placeholders, while there are ").concat(e.length," input tensors provided."));var u=0;return this.inputNodes.reduce((function(t,n){var a,o,s,i=null===(s=null===(o=null===(a=r.signature)||void 0===a?void 0:a.inputs)||void 0===o?void 0:o[n])||void 0===s?void 0:s.resourceId;return t[n]=null!=i?r.resourceIdToCapturedInput[i]:e[u++],t}),{})},e.prototype.normalizeOutputs=function(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]},e.prototype.executeInitializerGraph=function(){return null==this.initializer?[]:null==this.initializerSignature?this.initializer.execute({},[]):this.initializer.execute({},Object.keys(this.initializerSignature.outputs))},e.prototype.executeInitializerGraphAsync=function(){return i(this,void 0,void 0,(function(){return u(this,(function(e){return null==this.initializer?[2,[]]:null==this.initializerSignature?[2,this.initializer.executeAsync({},[])]:[2,this.initializer.executeAsync({},Object.keys(this.initializerSignature.outputs))]}))}))},e.prototype.setResourceIdToCapturedInput=function(e){if(this.resourceIdToCapturedInput={},this.initializerSignature)for(var t=this.initializerSignature.outputs,n=Object.keys(t),r=0;r1?n:n[0]},e.prototype.executeAsync=function(e,t){return i(this,void 0,void 0,(function(){var n,r;return u(this,(function(a){switch(a.label){case 0:return null!=this.resourceIdToCapturedInput?[3,2]:(n=this.setResourceIdToCapturedInput,[4,this.executeInitializerGraphAsync()]);case 1:n.apply(this,[a.sent()]),a.label=2;case 2:return e=this.normalizeInputs(e),t=this.normalizeOutputs(t),[4,this.executor.executeAsync(e,t)];case 3:return[2,(r=a.sent()).length>1?r:r[0]]}}))}))},e.prototype.getIntermediateTensors=function(){return this.executor.getIntermediateTensors()},e.prototype.disposeIntermediateTensors=function(){this.executor.disposeIntermediateTensors()},e.prototype.convertTensorMapToTensorsMap=function(e){return Object.keys(e).reduce((function(t,n){return t[n]=[e[n]],t}),{})},e.prototype.dispose=function(){this.executor.dispose(),this.initializer&&(this.initializer.dispose(),this.resourceIdToCapturedInput&&t.dispose(this.resourceIdToCapturedInput)),this.resourceManager.dispose()},e}();e.GraphModel=Xi,e.deregisterOp=function(e){delete d[e]},e.loadGraphModel=function(e,n,r){return void 0===n&&(n={}),void 0===r&&(r=t.io),i(this,void 0,void 0,(function(){var t;return u(this,(function(a){switch(a.label){case 0:if(null==e)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");return null==n&&(n={}),n.fromTFHub&&"string"==typeof e&&(e=function(e){return e.endsWith("/")||(e+="/"),"".concat(e).concat("model.json").concat("?tfjs-format=file")}(e)),[4,(t=new Xi(e,n,r)).load()];case 1:return a.sent(),[2,t]}}))}))},e.loadGraphModelSync=function(e){if(null==e)throw new Error("modelUrl in loadGraphModelSync() cannot be null. Please provide model artifacts or an IOHandler that loads the model");var n;if(e instanceof Array){var r=c(e,2),a=r[0],o=r[1];if(!a)throw new Error("modelJSON must be the first element of the array");if(!(o&&o instanceof ArrayBuffer))throw new Error("An ArrayBuffer of weights must be the second element of the array");if(!("modelTopology"in a))throw new Error("Model JSON is missing 'modelTopology'");if(!("weightsManifest"in a))throw new Error("Model JSON is missing 'weightsManifest'");var s=t.io.getWeightSpecs(a.weightsManifest),i=t.io.getModelArtifactsForJSONSync(a,s,o);n=t.io.fromMemorySync(i)}else if("load"in e)n=e;else{if(!("modelTopology"in e&&"weightSpecs"in e&&"weightData"in e))throw new Error("Unknown model format");n=t.io.fromMemorySync(e)}var u=new Xi(n);return u.load(),u},e.registerOp=function(e,t){var n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};d[e]=n},e.version_converter="4.14.0"})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@tensorflow/tfjs-core")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{},e.tf)}(this,(function(e,t){"use strict";var n=function(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,t}(t);t.env().registerFlag("KEEP_INTERMEDIATE_TENSORS",(function(){return!1}),(function(e){e&&console.warn("Keep intermediate tensors is ON. This will print the values of all intermediate tensors during model inference. Not all models support this mode. For details, check e2e/benchmarks/ model_config.js. This significantly impacts performance.")}));var r,a,o=function(e,t){return o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},o(e,t)};function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}o(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}function i(e,t,n,r){return new(n||(n=Promise))((function(a,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function i(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,i)}u((r=r.apply(e,t||[])).next())}))}function u(e,t){var n,r,a,o,s={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function i(o){return function(i){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(a=2&o[0]?r.return:o[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;switch(r=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((a=(a=s.trys).length>0&&a[a.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function c(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return s}function l(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a0?Object.keys(l).forEach((function(e){var t=c(g(e),1)[0],n=i[t];n&&(n.signatureKey=l[e],u.push(n))})):u=a;var f={};null!=e.library&&null!=e.library.function&&(f=e.library.function.reduce((function(e,t){return e[t.signature.name]=n.mapFunction(t),e}),{}));var m={nodes:i,inputs:u,outputs:p,weights:o,placeholders:a,signature:t,functions:f};return s.length>0&&(m.initNodes=s),m},e.prototype.mapSignatureEntries=function(e){return Object.keys(e||{}).reduce((function(t,n){return t[e[n].name]=n,t}),{})},e.prototype.mapNode=function(e){var t=h(e.op)||this.opMappers[e.op]||{};null==e.attr&&(e.attr={});var n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map((function(e){return e.startsWith("^")?e.slice(1):e})),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr,outputs:t.outputs};return null!=t.inputs&&(n.inputParams=t.inputs.reduce((function(e,t){return e[t.name]={type:t.type,inputIndexStart:t.start,inputIndexEnd:t.end},e}),{})),null!=t.attrs&&(n.attrParams=t.attrs.reduce((function(t,n){var r=n.type,a=void 0;switch(n.type){case"string":void 0===(a=q(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=q(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"string[]":void 0===(a=$(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=$(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number":void 0===(a=G(e.attr,n.tfName,n.defaultValue||0))&&n.tfDeprecatedName&&(a=G(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"number[]":void 0===(a=J(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=J(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool":void 0===(a=U(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=U(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"bool[]":void 0===(a=te(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=te(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape":void 0===(a=X(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=X(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"shape[]":void 0===(a=ee(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=ee(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype":void 0===(a=Z(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=Z(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"dtype[]":void 0===(a=Q(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=Q(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"func":void 0===(a=H(e.attr,n.tfName,n.defaultValue))&&n.tfDeprecatedName&&(a=H(e.attr,n.tfDeprecatedName,n.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error("Unsupported param type: ".concat(n.type," for op: ").concat(e.op))}return t[n.name]={value:a,type:r},t}),{})),n},e.prototype.mapFunction=function(e){var t=this,n=e.nodeDef,r=[],a={};null!=n&&(a=n.reduce((function(e,n){return e[n.name]=t.mapNode(n),"Const"===n.op&&r.push(e[n.name]),e}),{}));var o=[],s=[];e.signature.inputArg.forEach((function(e){var t=c(g(e.name),1)[0],n={name:t,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:W(e.type),type:"dtype"}},children:[]};n.signatureKey=e.name,o.push(n),a[t]=n})),Object.keys(a).forEach((function(e){var t=a[e];t.inputNames.forEach((function(e,n){var r=c(g(e),3),o=r[0],s=r[2],i=a[o];if(null!=i.outputs){var u=i.outputs.indexOf(s);if(-1!==u){var p="".concat(o,":").concat(u);t.inputNames[n]=p}}t.inputs.push(i),i.children.push(t)}))}));var i=e.ret;e.signature.outputArg.forEach((function(e){var t=c(g(i[e.name]),2),n=t[0],r=t[1],o=a[n];null!=o&&(o.defaultOutput=r,s.push(o))}));var u=this.mapArgsToSignature(e);return{nodes:a,inputs:o,outputs:s,weights:r,placeholders:[],signature:u}},e.prototype.mapArgsToSignature=function(e){var t=this;return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((function(e,n){return e[n.name]=t.mapArgToTensorInfo(n),e}),{}),outputs:e.signature.outputArg.reduce((function(n,r){return n[r.name]=t.mapArgToTensorInfo(r,e.ret),n}),{})}},e.prototype.mapArgToTensorInfo=function(e,t){var n=e.name;return null!=t&&(n=t[n]),{name:n,dtype:e.type}},e}();function j(e,n){var r=Array.isArray(e)?String.fromCharCode.apply(null,e):function(e){var n=t.env().global;if(void 0!==n.atob)return n.atob(e);if("undefined"!=typeof Buffer)return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}(e);return n?r:r.toLowerCase()}function q(e,t,n,r){void 0===r&&(r=!1);var a=e[t];return null!=a?j(a.s,r):n}function U(e,t,n){var r=e[t];return r?r.b:n}function G(e,t,n){var r=e[t]||{},a=null!=r.i?r.i:null!=r.f?r.f:n;return"number"==typeof a?a:parseInt(a,10)}function W(e){switch("string"==typeof e&&(e=r[e]),e){case r.DT_FLOAT:case r.DT_HALF:return"float32";case r.DT_INT32:case r.DT_INT64:case r.DT_INT8:case r.DT_UINT8:return"int32";case r.DT_BOOL:return"bool";case r.DT_DOUBLE:return"float32";case r.DT_STRING:return"string";default:return null}}function H(e,t,n){var r=e[t];return r&&r.func?r.func.name:n}function Z(e,t,n){var r=e[t];return r&&r.type?W(r.type):n}function Q(e,t,n){var r=e[t];return r&&r.list&&r.list.type?r.list.type.map((function(e){return W(e)})):n}function Y(e){if(!e.unknownRank)return null!=e.dim?e.dim.map((function(e){return"number"==typeof e.size?e.size:parseInt(e.size,10)})):[]}function X(e,t,n){var r=e[t];return r&&r.shape?Y(r.shape):n}function J(e,t,n){var r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map((function(e){return"number"==typeof e?e:parseInt(e,10)})):n}function $(e,t,n,r){void 0===r&&(r=!1);var a=e[t];return a&&a.list&&a.list.s?a.list.s.map((function(e){return j(e,r)})):n}function ee(e,t,n){var r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map((function(e){return Y(e)})):n}function te(e,t,n){var r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var ne=function(){function e(e,t,n){var r=this;this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map((function(e){return r.getInput(e)})),null!=e.rawAttrs&&(this.attrs=Object.keys(e.rawAttrs).reduce((function(e,t){return e[t]=r.getAttr(t),e}),{}))}return e.prototype.getInput=function(e){return m(e,this.tensorMap,this.context)},e.prototype.getAttr=function(e,t){var n=this.node.rawAttrs[e];if(null!=n.tensor)return m(e,this.tensorMap,this.context);if(null!=n.i||null!=n.f)return G(this.node.rawAttrs,e,t);if(null!=n.s)return q(this.node.rawAttrs,e,t);if(null!=n.b)return U(this.node.rawAttrs,e,t);if(null!=n.shape)return X(this.node.rawAttrs,e,t);if(null!=n.type)return Z(this.node.rawAttrs,e,t);if(null!=n.list){if(null!=n.list.i||null!=n.list.f)return J(this.node.rawAttrs,e,t);if(null!=n.list.s)return $(this.node.rawAttrs,e,t);if(null!=n.list.shape)return ee(this.node.rawAttrs,e,t);if(null!=n.list.b)return te(this.node.rawAttrs,e,t);if(null!=n.list.type)return Q(this.node.rawAttrs,e,t)}return t},e}(),re=function(){function e(){}return e.prototype.refCount=function(e){return ae("refCount")},e.prototype.incRef=function(e){return ae("incRef")},e.prototype.timerAvailable=function(){return!0},e.prototype.time=function(e){return ae("time")},e.prototype.read=function(e){return ae("read")},e.prototype.readSync=function(e){return ae("readSync")},e.prototype.readToGPU=function(e,t){return ae("readToGPU")},e.prototype.numDataIds=function(){return ae("numDataIds")},e.prototype.disposeData=function(e,t){return ae("disposeData")},e.prototype.write=function(e,t,n){return ae("write")},e.prototype.move=function(e,t,n,r,a){return ae("move")},e.prototype.createTensorFromGPUData=function(e,t,n){return ae("createTensorFromGPUData")},e.prototype.memory=function(){return ae("memory")},e.prototype.floatPrecision=function(){return ae("floatPrecision")},e.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},e.prototype.dispose=function(){return ae("dispose")},e}();function ae(e){throw new Error("'".concat(e,"' not yet implemented or not found in the registry. ")+"This kernel may not be supported by the tfjs backend you have chosen")}function oe(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function se(e,t,n){void 0===n&&(n=""),oe(pe(e,t),(function(){return n+" Shapes ".concat(e," and ").concat(t," must match")}))}function ie(e){oe(null!=e,(function(){return"The input to the tensor constructor must be a non-null value."}))}function ue(e){if(0===e.length)return 1;for(var t=e[0],n=1;n=-n&&e=0;--r)n[r]=n[r+1]*e[r+1];return n}function be(e,t,n,r){void 0===r&&(r=!1);var a=new Array;if(1===t.length)for(var o=t[0]*(r?2:1),s=0;s=0,(function(){return"Tensor must have a shape comprised of positive integers but got "+"shape [".concat(e,"].")}))}))}function Te(e){return e&&e.then&&"function"==typeof e.then}var Se=function(){function e(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=_e,this.populateURLFlags()}return e.prototype.setPlatform=function(e,t){null!=this.platform&&(Ee().getBool("IS_TEST")||Ee().getBool("PROD")||console.warn("Platform ".concat(this.platformName," has already been set. ")+"Overwriting the platform with ".concat(e,"."))),this.platformName=e,this.platform=t},e.prototype.registerFlag=function(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){var r=this.urlFlags[e];Ee().getBool("IS_TEST")||Ee().getBool("PROD")||console.warn("Setting feature override from URL ".concat(e,": ").concat(r,".")),this.set(e,r)}},e.prototype.getAsync=function(e){return i(this,void 0,void 0,(function(){var t,n;return u(this,(function(r){switch(r.label){case 0:return e in this.flags?[2,this.flags[e]]:(t=this.flags,n=e,[4,this.evaluateFlag(e)]);case 1:return t[n]=r.sent(),[2,this.flags[e]]}}))}))},e.prototype.get=function(e){if(e in this.flags)return this.flags[e];var t=this.evaluateFlag(e);if(Te(t))throw new Error("Flag ".concat(e," cannot be synchronously evaluated. ")+"Please use getAsync() instead.");return this.flags[e]=t,this.flags[e]},e.prototype.getNumber=function(e){return this.get(e)},e.prototype.getBool=function(e){return this.get(e)},e.prototype.getString=function(e){return this.get(e)},e.prototype.getFlags=function(){return this.flags},Object.defineProperty(e.prototype,"features",{get:function(){return this.flags},enumerable:!1,configurable:!0}),e.prototype.set=function(e,t){if(null==this.flagRegistry[e])throw new Error("Cannot set flag ".concat(e," as it has not been registered."));this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)},e.prototype.evaluateFlag=function(e){if(null==this.flagRegistry[e])throw new Error("Cannot evaluate flag '".concat(e,"': no evaluation function found."));return this.flagRegistry[e].evaluationFn()},e.prototype.setFlags=function(e){this.flags=Object.assign({},e)},e.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},e.prototype.populateURLFlags=function(){var e=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var t=this.getQueryParams(this.global.location.search);"tfjsflags"in t&&t.tfjsflags.split(",").forEach((function(t){var n=c(t.split(":"),2),r=n[0],a=n[1];e.urlFlags[r]=function(e,t){var n=t.toLowerCase();return"true"===n||"false"===n?"true"===n:"".concat(+n)===n?+n:t}(0,a)}))}},e}();function _e(e){var t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(e){for(var n=[],r=1;r>>=0)&&e<256)&&(r=Xe[e])?r:(n=et(e,(0|e)<0?-1:0,!0),a&&(Xe[e]=n),n):(a=-128<=(e|=0)&&e<128)&&(r=Ye[e])?r:(n=et(e,e<0?-1:0,!1),a&&(Ye[e]=n),n)}function $e(e,t){if(isNaN(e))return t?pt:ut;if(t){if(e<0)return pt;if(e>=ot)return ft}else{if(e<=-st)return mt;if(e+1>=st)return ht}return e<0?$e(-e,t).neg():et(e%at|0,e/at|0,t)}function et(e,t,n){return new Ze(e,t,n)}Ze.fromInt=Je,Ze.fromNumber=$e,Ze.fromBits=et;var tt=Math.pow;function nt(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return ut;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return nt(e.substring(1),t,n).neg();for(var a=$e(tt(n,8)),o=ut,s=0;s>>0:this.low},yt.toNumber=function(){return this.unsigned?(this.high>>>0)*at+(this.low>>>0):this.high*at+(this.low>>>0)},yt.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((o=i).isZero())return u+s;for(;u.length<6;)u="0"+u;s=""+u+s}},yt.getHighBits=function(){return this.high},yt.getHighBitsUnsigned=function(){return this.high>>>0},yt.getLowBits=function(){return this.low},yt.getLowBitsUnsigned=function(){return this.low>>>0},yt.getNumBitsAbs=function(){if(this.isNegative())return this.eq(mt)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},yt.isOdd=function(){return 1==(1&this.low)},yt.isEven=function(){return 0==(1&this.low)},yt.equals=function(e){return Qe(e)||(e=rt(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},yt.eq=yt.equals,yt.notEquals=function(e){return!this.eq(e)},yt.neq=yt.notEquals,yt.ne=yt.notEquals,yt.lessThan=function(e){return this.comp(e)<0},yt.lt=yt.lessThan,yt.lessThanOrEqual=function(e){return this.comp(e)<=0},yt.lte=yt.lessThanOrEqual,yt.le=yt.lessThanOrEqual,yt.greaterThan=function(e){return this.comp(e)>0},yt.gt=yt.greaterThan,yt.greaterThanOrEqual=function(e){return this.comp(e)>=0},yt.gte=yt.greaterThanOrEqual,yt.ge=yt.greaterThanOrEqual,yt.compare=function(e){if(Qe(e)||(e=rt(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},yt.comp=yt.compare,yt.negate=function(){return!this.unsigned&&this.eq(mt)?mt:this.not().add(ct)},yt.neg=yt.negate,yt.add=function(e){Qe(e)||(e=rt(e));var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,i=e.low>>>16,u=0,p=0,c=0,l=0;return c+=(l+=a+(65535&e.low))>>>16,p+=(c+=r+i)>>>16,u+=(p+=n+s)>>>16,u+=t+o,et((c&=65535)<<16|(l&=65535),(u&=65535)<<16|(p&=65535),this.unsigned)},yt.subtract=function(e){return Qe(e)||(e=rt(e)),this.add(e.neg())},yt.sub=yt.subtract,yt.multiply=function(e){if(this.isZero())return ut;if(Qe(e)||(e=rt(e)),He)return et(He.mul(this.low,this.high,e.low,e.high),He.get_high(),this.unsigned);if(e.isZero())return ut;if(this.eq(mt))return e.isOdd()?mt:ut;if(e.eq(mt))return this.isOdd()?mt:ut;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(it)&&e.lt(it))return $e(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,s=65535&e.high,i=e.low>>>16,u=65535&e.low,p=0,c=0,l=0,d=0;return l+=(d+=a*u)>>>16,c+=(l+=r*u)>>>16,l&=65535,c+=(l+=a*i)>>>16,p+=(c+=n*u)>>>16,c&=65535,p+=(c+=r*i)>>>16,c&=65535,p+=(c+=a*s)>>>16,p+=t*u+n*i+r*s+a*o,et((l&=65535)<<16|(d&=65535),(p&=65535)<<16|(c&=65535),this.unsigned)},yt.mul=yt.multiply,yt.divide=function(e){if(Qe(e)||(e=rt(e)),e.isZero())throw Error("division by zero");var t,n,r;if(He)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?et((this.unsigned?He.div_u:He.div_s)(this.low,this.high,e.low,e.high),He.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?pt:ut;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return pt;if(e.gt(this.shru(1)))return lt;r=pt}else{if(this.eq(mt))return e.eq(ct)||e.eq(dt)?mt:e.eq(mt)?ct:(t=this.shr(1).div(e).shl(1)).eq(ut)?e.isNegative()?ct:dt:(n=this.sub(e.mul(t)),r=t.add(n.div(e)));if(e.eq(mt))return this.unsigned?pt:ut;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=ut}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:tt(2,a-48),s=$e(t),i=s.mul(e);i.isNegative()||i.gt(n);)i=(s=$e(t-=o,this.unsigned)).mul(e);s.isZero()&&(s=ct),r=r.add(s),n=n.sub(i)}return r},yt.div=yt.divide,yt.modulo=function(e){return Qe(e)||(e=rt(e)),He?et((this.unsigned?He.rem_u:He.rem_s)(this.low,this.high,e.low,e.high),He.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},yt.mod=yt.modulo,yt.rem=yt.modulo,yt.not=function(){return et(~this.low,~this.high,this.unsigned)},yt.and=function(e){return Qe(e)||(e=rt(e)),et(this.low&e.low,this.high&e.high,this.unsigned)},yt.or=function(e){return Qe(e)||(e=rt(e)),et(this.low|e.low,this.high|e.high,this.unsigned)},yt.xor=function(e){return Qe(e)||(e=rt(e)),et(this.low^e.low,this.high^e.high,this.unsigned)},yt.shiftLeft=function(e){return Qe(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?et(this.low<>>32-e,this.unsigned):et(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):et(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},yt.shr=yt.shiftRight,yt.shiftRightUnsigned=function(e){if(Qe(e)&&(e=e.toInt()),0==(e&=63))return this;var t=this.high;return e<32?et(this.low>>>e|t<<32-e,t>>>e,this.unsigned):et(32===e?t:t>>>e-32,0,this.unsigned)},yt.shru=yt.shiftRightUnsigned,yt.shr_u=yt.shiftRightUnsigned,yt.toSigned=function(){return this.unsigned?et(this.low,this.high,!1):this},yt.toUnsigned=function(){return this.unsigned?this:et(this.low,this.high,!0)},yt.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},yt.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},yt.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},Ze.fromBytes=function(e,t,n){return n?Ze.fromBytesLE(e,t):Ze.fromBytesBE(e,t)},Ze.fromBytesLE=function(e,t){return new Ze(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},Ze.fromBytesBE=function(e,t){return new Ze(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};var gt=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(We),vt=gt||function(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),e}({__proto__:null,default:gt},[We]);function bt(e){return vt.fromString(e,!0,16)}function xt(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Tt(e)),Ee().getBool("DEBUG")&&function(e,t){for(var n=0;n0?f:""," ")}}console.log("%c".concat(i,"\t%c").concat(s,"\t%c").concat(u,"D ").concat(c,"\t%c").concat(p,"\t%c").concat(l,"\t%c").concat(o),"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},e}();function Et(e,t,n,r){var a=ve(t),o=function(e,t,n,r){var a=ue(t),o=r[r.length-1],s=new Array(o).fill(0),i=t.length,u="complex64"===n?At(e):e;if(i>1)for(var p=0;p20){var p=3*s,d=Array.from(e.slice(0,p)),h=Array.from(e.slice((i-3)*s,i*s));return"complex64"===n&&(d=At(d),h=At(h)),["["+d.map((function(e,t){return It(e,a[t],n)})).join(", ")+", ..., "+h.map((function(e,t){return It(e,a[i-3+t],n)})).join(", ")+"]"]}return["["+("complex64"===n?At(e):Array.from(e)).map((function(e,t){return It(e,a[t],n)})).join(", ")+"]"]}var f=t.slice(1),m=r.slice(1),y=r[0]*s,g=[];if(i>20){for(var v=0;v<3;v++){var b=(x=v*y)+y;g.push.apply(g,l([],c(Dt(e.slice(x,b),f,n,m,a,!1)),!1))}for(g.push("..."),v=i-3;v0?g[0]+N:""),v=1;v=this.shape[a]){var u="Requested out of range element at ".concat(n,". ")+" Buffer shape=".concat(this.shape);throw new Error(u)}a++}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}for(var c=n[n.length-1],l=0;l0)throw new Error("Backend '".concat(this.backendName,"' has an internal memory leak ")+"(".concat(s," data ids) after running '").concat(e,"'"))},e.prototype.runKernelFunc=function(e){var t,n,r,a=this,o=[],s=this.isTapeOn(),i=this.state.numBytes,u=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;var p=Qt(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(Qt(e)){var c=e.kernelName,l=e.inputs,d=e.attrs;null==this.backendName&&this.backend;var h=je(c,this.backendName);oe(null!=h,(function(){return"Cannot find registered kernel '".concat(c,"' for backend '").concat(a.backendName,"'")})),n=function(){var e=a.backend.numDataIds();r=h.kernelFunc({inputs:l,attrs:d,backend:a.backend});var t=Array.isArray(r)?r:[r];a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(c,e,t);var n=t.map((function(e){return null!=e.rank?e:a.makeTensorFromTensorInfo(e)}));if(s){var i=a.getTensorsForGradient(c,l,n);o=a.saveTensorsForBackwardMode(i)}return n}}else{var f=e.forwardFunc,m=function(e){s&&(o=e.map((function(e){return a.keep(a.clone(e))})))};n=function(){var e=a.backend.numDataIds();r=a.tidy((function(){return f(a.backend,m)}));var t=Array.isArray(r)?r:[r];return a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(p,e,t),t}}var y,g=e.inputs,v=e.attrs,b=Qt(e)?null:e.backwardsFunc;return this.scopedRun((function(){return a.state.kernelDepth++}),(function(){return a.state.kernelDepth--}),(function(){a.ENV.getBool("DEBUG")||a.state.profiling?(y=a.profiler.profileKernel(p,g,(function(){return n()})),a.ENV.getBool("DEBUG")&&a.profiler.logKernelProfile(y),t=y.outputs):t=n()})),s&&this.addTapeNode(p,g,t,b,o,v),this.state.profiling&&this.state.activeProfile.kernels.push({name:p,bytesAdded:this.state.numBytes-i,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-u,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(g).map((function(e){return null!=g[e]?g[e].shape:null})),outputShapes:t.map((function(e){return e.shape})),kernelTimeMs:y.timeMs,extraInfo:y.extraInfo}),Array.isArray(r)?t:t[0]},e.prototype.saveTensorsForBackwardMode=function(e){var t=this;return e.map((function(e){return t.keep(t.clone(e))}))},e.prototype.getTensorsForGradient=function(e,t,n){var r=qe(e);if(null!=r){var a=r.inputsToSave||[],o=r.outputsToSave||[],s=void 0;r.saveAllInputs?(oe(Array.isArray(t),(function(){return"saveAllInputs is true, expected inputs to be an array."})),s=Object.keys(t).map((function(e){return t[e]}))):s=a.map((function(e){return t[e]}));var i=n.filter((function(e,t){return o[t]}));return s.concat(i)}return[]},e.prototype.makeTensor=function(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var a=e;"string"===n&&me(e[0])&&(a=e.map((function(e){return t=e,void 0===n&&(n="utf-8"),n=n||"utf-8",Ee().platform.encode(t,n);var t,n})));var o=r.write(a,t,n),s=new Rt(t,n,o,this.nextTensorId());if(this.trackTensor(s,r),"string"===n){var i=this.state.tensorInfo.get(o),u=function(e){if(null==e)return 0;var t=0;return e.forEach((function(e){return t+=e.length})),t}(a);this.state.numBytes+=u-i.bytes,i.bytes=u}return s},e.prototype.makeTensorFromDataId=function(e,t,n,r){var a={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(a,r)},e.prototype.makeTensorFromTensorInfo=function(e,t){var n=e.dataId,r=e.shape,a=e.dtype,o=new Rt(r,a,n,this.nextTensorId());return this.trackTensor(o,t),o},e.prototype.makeVariable=function(e,t,n,r){void 0===t&&(t=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));var a=new jt(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error("Variable with name ".concat(a.name," was already registered"));return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},e.prototype.trackTensor=function(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;var n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*fe(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof jt||this.track(e)},e.prototype.incRef=function(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)},e.prototype.removeDataId=function(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)},e.prototype.disposeTensor=function(e){if(this.state.tensorInfo.has(e.dataId)){var t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){var n=e.size*fe(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}},e.prototype.disposeVariables=function(){for(var e in this.state.registeredVariables){var t=this.state.registeredVariables[e];this.disposeVariable(t)}},e.prototype.disposeVariable=function(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]},e.prototype.memory=function(){var e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e},e.prototype.profile=function(e){return i(this,void 0,void 0,(function(){var t,n,r,a,o,s,i,d,h,f,m;return u(this,(function(u){switch(u.label){case 0:return this.state.profiling=!0,t=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,e()];case 1:r.result=u.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,l([],c(this.state.activeProfile.kernels.map((function(e){return e.totalBytesSnapshot}))),!1)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n,u.label=2;case 2:u.trys.push([2,8,9,10]),a=p(this.state.activeProfile.kernels),o=a.next(),u.label=3;case 3:return o.done?[3,7]:(s=o.value,i=s,[4,s.kernelTimeMs]);case 4:return i.kernelTimeMs=u.sent(),d=s,[4,s.extraInfo];case 5:d.extraInfo=u.sent(),u.label=6;case 6:return o=a.next(),[3,3];case 7:return[3,10];case 8:return h=u.sent(),f={error:h},[3,10];case 9:try{o&&!o.done&&(m=a.return)&&m.call(a)}finally{if(f)throw f.error}return[7];case 10:return[2,this.state.activeProfile]}}))}))},e.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},e.prototype.addTapeNode=function(e,t,n,r,a,o){var s=this,i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},u=qe(e);null!=u&&(r=u.gradFunc),null!=r&&(i.gradient=function(e){return e=e.map((function(e,t){if(null==e){var r=n[t],a=we(r.size,r.dtype);return s.makeTensor(a,r.shape,r.dtype)}return e})),r(e.length>1?e:e[0],a,o)}),this.state.activeTape.push(i)},e.prototype.keep=function(e){return e.kept=!0,e},e.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},e.prototype.endTape=function(){this.state.gradientDepth--},e.prototype.startScope=function(e){var t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t},e.prototype.endScope=function(e){for(var t=this,n=Ht(e),r=new Set(n.map((function(e){return e.id}))),a=0;a0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '".concat(n.dtype,"'"));var o=this.scopedRun((function(){return a.startTape()}),(function(){return a.endTape()}),(function(){return a.tidy("forward",e)}));oe(o instanceof Rt,(function(){return"The result y returned by f() must be a tensor."}));var s=function(e,t,n){for(var r={},a={},o=0;o=0;o--)for(s=(f=e[o]).inputs,c=0;c0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var e,r,i={};i[o.id]=null==n?(r=Ne(ue(e=o.shape),"float32"),Jt.makeTensor(r,e,"float32")):n,function(e,t,n,r){for(var a=function(a){var o=t[a],s=[];if(o.outputs.forEach((function(t){var n=e[t.id];null!=n?s.push(n):s.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found "+"for ".concat(o.kernelName,"."));var i=o.gradient(s),u=function(t){if(!(t in i))throw new Error("Cannot backprop through input ".concat(t,". ")+"Available gradients found: ".concat(Object.keys(i),"."));var a=n((function(){return i[t]()}));if("float32"!==a.dtype)throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"".concat(t," must have 'float32' dtype, but has '").concat(a.dtype,"'"));var s=o.inputs[t];if(!pe(a.shape,s.shape))throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"'".concat(t,"' has shape '").concat(a.shape,"', which does not match ")+"the shape of the input '".concat(s.shape,"'"));if(null==e[s.id])e[s.id]=a;else{var u=e[s.id];e[s.id]=r(u,a),u.dispose()}};for(var p in o.inputs)u(p)},o=t.length-1;o>=0;o--)a(o)}(i,s,(function(e){return a.tidy(e)}),$t);var u=t.map((function(e){return i[e.id]}));return 0===a.state.gradientDepth&&(a.state.activeTape.forEach((function(e){var t,n;try{for(var r=p(e.saved),a=r.next();!a.done;a=r.next())a.value.dispose()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}})),a.state.activeTape=null),{value:o,grads:u}}))},e.prototype.customGrad=function(e){var t=this;return oe(ge(e),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],a=0;a0,(function(){return"Element arr[".concat(n.join("]["),"] should be a primitive, ")+"but is an array of ".concat(e.length," elements")})),oe(e.length===t[0],(function(){return"Element arr[".concat(n.join("]["),"] should have ").concat(t[0]," ")+"elements, but has ".concat(e.length," elements")}));for(var r=t.slice(1),a=0;a=0&&(a=r),nn(r,a,t,n),null==e||!kt(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){var o=null==e?"null":e.constructor.name;throw new Error("Argument '".concat(t,"' passed to '").concat(n,"' must be a ")+"Tensor or TensorLike, but got '".concat(o,"'"))}var s=en(e,a);kt(e)||Array.isArray(e)||(e=[e]);var i="string"!==a?xt(e,a):Tt(e,[],!0);return Jt.makeTensor(i,s,a)}function an(e,t,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(e))throw new Error("Argument ".concat(t," passed to ").concat(n," must be a ")+"`Tensor[]` or `TensorLike[]`");return e.map((function(e,a){return rn(e,"".concat(t,"[").concat(a,"]"),n,r)}))}var on="__op";function sn(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+"".concat(t.length," keys."));var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=on;var a=function(){for(var e=[],t=0;t=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+"".concat(e.length)}));var t=e.map((function(e,t){return rn(e,"tensors".concat(t),"addN")})),n=t[0];t.forEach((function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((function(e){if(!pe(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=t;return Jt.runKernel("AddN",r)}}),hn=sn({all_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:rn(e,"x","all","bool")},a={axis:t,keepDims:n};return Jt.runKernel("All",r,a)}}),fn=sn({any_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:rn(e,"x","any","bool")},a={axis:t,keepDims:n};return Jt.runKernel("Any",r,a)}}),mn=sn({argMax_:function(e,t){void 0===t&&(t=0);var n={x:rn(e,"x","argMax")},r={axis:t};return Jt.runKernel("ArgMax",n,r)}}),yn=sn({argMin_:function(e,t){void 0===t&&(t=0);var n={x:rn(e,"x","argMin")},r={axis:t};return Jt.runKernel("ArgMin",n,r)}}),gn=sn({asin_:function(e){var t={x:rn(e,"x","asin")};return Jt.runKernel("Asin",t)}}),vn=sn({asinh_:function(e){var t={x:rn(e,"x","asinh")};return Jt.runKernel("Asinh",t)}}),bn=sn({atan_:function(e){var t={x:rn(e,"x","atan")};return Jt.runKernel("Atan",t)}}),xn=sn({atan2_:function(e,t){var n,r=rn(e,"a","atan2"),a=rn(t,"b","atan2"),o={a:r=(n=c(Wt(r,a),2))[0],b:a=n[1]};return Jt.runKernel("Atan2",o)}}),Nn=sn({atanh_:function(e){var t={x:rn(e,"x","atanh")};return Jt.runKernel("Atanh",t)}}),wn=sn({cast_:function(e,t){var n=rn(e,"x","cast");if(!function(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}(t))throw new Error("Failed to cast to unknown dtype ".concat(t));if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={x:n},a={dtype:t};return Jt.runKernel(Me,r,a)}});function kn(e,t,n,r,a,o,s,i){var u,p;void 0===s&&(s=!1),void 0===i&&(i="channelsLast");var l=c([-1,-1,-1,-1],4),d=l[0],h=l[1],f=l[2],m=l[3];if("channelsLast"===i)d=(u=c(e,4))[0],h=u[1],f=u[2],m=u[3];else{if("channelsFirst"!==i)throw new Error("Unknown dataFormat ".concat(i));d=(p=c(e,4))[0],m=p[1],h=p[2],f=p[3]}var y,g=c(t,4),v=g[0],b=g[1],x=g[3],N=c(Tn(n),2),w=N[0],k=N[1],T=c(Tn(r),2),S=T[0],_=T[1],E=Sn(v,S),I=Sn(b,_),O=function(e,t,n,r,a,o,s,i,u){var p,c,l;if("number"==typeof e){p={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};var d=function(e,t,n,r,a){null==r&&(r=function(e,t,n,r){void 0===r&&(r=1);var a=Sn(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}(e,t,n));var o=e[1];return[_n((e[0]-t+2*r)/n+1,a),_n((o-t+2*r)/n+1,a)]}([t,n],o,r,e,i);c=d[0],l=d[1]}else if("same"===e){c=Math.ceil(t/r),l=Math.ceil(n/a);var h=Math.max(0,(c-1)*r+o-t),f=Math.max(0,(l-1)*a+s-n);p={top:m=Math.floor(h/2),bottom:y=h-m,left:g=Math.floor(f/2),right:v=f-g,type:"SAME"}}else if("valid"===e)p={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-o+1)/r),l=Math.ceil((n-s+1)/a);else{if("object"!=typeof e)throw Error("Unknown padding parameter: ".concat(e));var m,y,g,v;p={top:m="channelsLast"===u?e[1][0]:e[2][0],bottom:y="channelsLast"===u?e[1][1]:e[2][1],left:g="channelsLast"===u?e[2][0]:e[3][0],right:v="channelsLast"===u?e[2][1]:e[3][1],type:0===m&&0===y&&0===g&&0===v?"VALID":"EXPLICIT"},c=_n((t-o+m+y)/r+1,i),l=_n((n-s+g+v)/a+1,i)}return{padInfo:p,outHeight:c,outWidth:l}}(a,h,f,w,k,E,I,o,i),D=O.padInfo,A=O.outHeight,M=O.outWidth,C=s?x*m:x;return"channelsFirst"===i?y=[d,C,A,M]:"channelsLast"===i&&(y=[d,A,M,C]),{batchSize:d,dataFormat:i,inHeight:h,inWidth:f,inChannels:m,outHeight:A,outWidth:M,outChannels:C,padInfo:D,strideHeight:w,strideWidth:k,filterHeight:v,filterWidth:b,effectiveFilterHeight:E,effectiveFilterWidth:I,dilationHeight:S,dilationWidth:_,inShape:e,outShape:y,filterShape:t}}function Tn(e){return"number"==typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function Sn(e,t){return t<=1?e:e+(e-1)*(t-1)}function _n(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error("Unknown roundingMode ".concat(t))}}function En(e){var t=c(Tn(e),3),n=t[0],r=t[1],a=t[2];return 1===n&&1===r&&1===a}function In(e,t){return En(e)||En(t)}function On(e){return Tn(e).every((function(e){return e>0}))}function Dn(e,t,n){if(null!=n){if("string"==typeof t)throw Error("Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,"."));if("number"==typeof t)oe(ce(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}));else{if("object"!=typeof t)throw Error("Error in ".concat(e,": Unknown padding parameter: ").concat(t));t.forEach((function(t){t.forEach((function(t){oe(ce(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}))}))}))}}}var An=sn({reshape_:function(e,t){var n={x:rn(e,"x","reshape","string_or_numeric")},r={shape:t};return Jt.runKernel("Reshape",n,r)}}),Mn=sn({avgPool_:function(e,t,n,r,a){var o=rn(e,"x","avgPool","float32");oe(In(n,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")}));var s=o,i=!1;3===o.rank&&(i=!0,s=An(o,[1,o.shape[0],o.shape[1],o.shape[2]])),oe(4===s.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank ".concat(s.rank,".")})),Dn("avgPool",r,a);var u={x:s},p={filterSize:t,strides:n,pad:r,dimRoundingMode:a},c=Jt.runKernel("AvgPool",u,p);return c=wn(c,o.dtype),i?An(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),Cn=sn({avgPool3d_:function(e,t,n,r,a,o){void 0===o&&(o="NDHWC");var s=rn(e,"x","avgPool3d","float32"),i=s,u=!1;4===s.rank&&(u=!0,i=An(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===i.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank ".concat(i.rank,".")})),oe("NDHWC"===o,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),oe("number"==typeof n&&n>0||Array.isArray(n)&&n[0]>0&&n[1]>0&&n[2]>0,(function(){return"Error in avgPool3d: Stride must be > 0, but got '".concat(n,"'")})),Dn("avgPool3d",r,a);var p={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},l=Jt.runKernel("AvgPool3D",p,c);return l=wn(l,i.dtype),u?An(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}}),Fn=sn({clone_:function(e){var t={x:rn(e,"x","clone","string_or_numeric")};return Jt.runKernel(Ce,t)}}),Rn=sn({concat_:function(e,t){void 0===t&&(t=0),oe(e.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=an(e,"tensors","concat","string_or_numeric");if("complex64"===n[0].dtype&&n.forEach((function(e){if("complex64"!==e.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype ".concat(e.dtype,". "))})),1===n.length)return Fn(n[0]);var r=n,a={axis:t};return Jt.runKernel("Concat",r,a)}}),zn=sn({matMul_:function(e,t,n,r){var a;void 0===n&&(n=!1),void 0===r&&(r=!1);var o=rn(e,"a","matMul"),s=rn(t,"b","matMul"),i={a:o=(a=c(Wt(o,s),2))[0],b:s=a[1]},u={transposeA:n,transposeB:r};return Jt.runKernel("BatchMatMul",i,u)}}),Vn=sn({mul_:function(e,t){var n,r=rn(e,"a","mul"),a=rn(t,"b","mul"),o={a:r=(n=c(Wt(r,a),2))[0],b:a=n[1]};return Jt.runKernel("Multiply",o)}}),Ln=sn({sigmoid_:function(e){var t={x:rn(e,"x","sigmoid","float32")};return Jt.runKernel("Sigmoid",t)}}),Pn=sn({slice_:function(e,t,n){var r=rn(e,"x","slice","string_or_numeric");if(0===r.rank)throw new Error("Slicing scalar is not possible");var a={x:r},o={begin:t,size:n};return Jt.runKernel("Slice",a,o)}}),Bn=sn({tanh_:function(e){var t={x:rn(e,"x","tanh","float32")};return Jt.runKernel("Tanh",t)}}),Kn=sn({basicLSTMCell_:function(e,t,n,r,a,o){var s=rn(e,"forgetBias","basicLSTMCell"),i=rn(t,"lstmKernel","basicLSTMCell"),u=rn(n,"lstmBias","basicLSTMCell"),p=rn(r,"data","basicLSTMCell"),c=rn(a,"c","basicLSTMCell"),l=rn(o,"h","basicLSTMCell"),d=Rn([p,l],1),h=zn(d,i),f=ln(h,u),m=f.shape[0],y=f.shape[1]/4,g=[m,y],v=Pn(f,[0,0],g),b=Pn(f,[0,y],g),x=Pn(f,[0,2*y],g),N=Pn(f,[0,3*y],g),w=ln(Vn(Ln(v),Bn(b)),Vn(c,Ln(ln(s,x))));return[w,Vn(Bn(w),Ln(N))]}}),jn=sn({batchToSpaceND_:function(e,t,n){var r=rn(e,"x","batchToSpaceND"),a=t.reduce((function(e,t){return e*t}));oe(r.rank>=1+t.length,(function(){return"input rank is ".concat(r.rank," but should be > than blockShape.length ").concat(t.length)})),oe(n.length===t.length,(function(){return"crops.length is ".concat(n.length," but should be equal to blockShape.length ").concat(t.length)})),oe(r.shape[0]%a==0,(function(){return"input tensor batch is ".concat(r.shape[0]," but is not divisible by the product of ")+"the elements of blockShape ".concat(t.join(" * ")," === ").concat(a)}));var o={x:r},s={blockShape:t,crops:n};return Jt.runKernel("BatchToSpaceND",o,s)}}),qn=sn({batchNorm_:function(e,t,n,r,a,o){null==o&&(o=.001);var s,i,u=rn(e,"x","batchNorm"),p=rn(t,"mean","batchNorm"),c=rn(n,"variance","batchNorm");null!=a&&(s=rn(a,"scale","batchNorm")),null!=r&&(i=rn(r,"offset","batchNorm")),oe(p.rank===c.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),oe(null==i||p.rank===i.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),oe(null==s||p.rank===s.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var l=function(e){return 0===e.rank||1===e.rank?An(e,[1,1,1,e.size]):2===e.rank?An(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?An(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}(u),d={x:l,scale:s,offset:i,mean:p,variance:c},h={varianceEpsilon:o},f=Jt.runKernel("FusedBatchNorm",d,h);return An(f,u.shape)}}),Un=sn({batchNorm2d_:function(e,t,n,r,a,o){var s,i,u=rn(e,"x","batchNorm"),p=rn(t,"mean","batchNorm"),c=rn(n,"variance","batchNorm");return null!=a&&(s=rn(a,"scale","batchNorm")),null!=r&&(i=rn(r,"offset","batchNorm")),oe(2===u.rank,(function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+"".concat(u.rank,".")})),oe(2===p.rank||1===p.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(2===i.rank||1===i.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+"but got rank ".concat(i.rank,".")})),qn(u,p,c,i,s,o)}}),Gn=sn({batchNorm3d_:function(e,t,n,r,a,o){var s,i,u=rn(e,"x","batchNorm"),p=rn(t,"mean","batchNorm"),c=rn(n,"variance","batchNorm");return null!=a&&(s=rn(a,"scale","batchNorm")),null!=r&&(i=rn(r,"offset","batchNorm")),oe(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+"".concat(u.rank,".")})),oe(3===p.rank||1===p.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(3===i.rank||1===i.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+"but got rank ".concat(i.rank,".")})),qn(u,p,c,i,s,o)}}),Wn=sn({batchNorm4d_:function(e,t,n,r,a,o){var s,i,u=rn(e,"x","batchNorm"),p=rn(t,"mean","batchNorm"),c=rn(n,"variance","batchNorm");return null!=a&&(s=rn(a,"scale","batchNorm")),null!=r&&(i=rn(r,"offset","batchNorm")),oe(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+"".concat(u.rank,".")})),oe(4===p.rank||1===p.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+"got rank ".concat(p.rank,".")})),oe(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+"but got rank ".concat(c.rank,".")})),null!=s&&oe(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+"but got rank ".concat(s.rank,".")})),null!=i&&oe(4===i.rank||1===i.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+"but got rank ".concat(i.rank,".")})),qn(u,p,c,i,s,o)}}),Hn=sn({bincount_:function(e,t,n){var r=rn(e,"x","bincount"),a=rn(t,"weights","bincount");oe("int32"===r.dtype,(function(){return"Error in bincount: input "+"dtype must be int32, but got ".concat(r.dtype)})),oe(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),oe(a.size===r.size||0===a.size,(function(){return"Error in bincount: weights must have the same size as input or"+"0-length, but got input shape: ".concat(r.shape,", weights shape: ")+"".concat(a.shape,".")}));var o={x:r,weights:a},s={size:n};return Jt.runKernel("Bincount",o,s)}}),Zn=sn({bitwiseAnd_:function(e,t){var n=rn(e,"x","bitwiseAnd"),r=rn(t,"y","bitwiseAnd");if(!pe(n.shape,r.shape))throw new Error("BitwiseAnd: Tensors must have the same shape. x: ".concat(n.shape,", y: ").concat(r.shape));if("int32"!==n.dtype||"int32"!==r.dtype)throw new Error("BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ".concat(n.dtype," and type of y: ").concat(r.dtype));var a={a:n,b:r};return Jt.runKernel("BitwiseAnd",a)}}),Qn=sn({broadcastArgs_:function(e,t){var n=rn(e,"s0","broadcastArgs","int32"),r=rn(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error("broadcastArgs(): first input must be a vector (rank=1). "+"Has rank ".concat(n.rank));if(1!==r.rank)throw new Error("broadcastArgs(): second input must be a vector (rank=1). "+"Has rank ".concat(r.rank));var a={s0:n,s1:r};return Jt.runKernel("BroadcastArgs",a)}}),Yn=sn({broadcastTo_:function(e,t){var n=rn(e,"broadcastTo","x"),r=n.shape;if(ke(t),t.lengthn.rank){for(var a=n.shape.slice();a.length=0;i--)if(o[i]===t[i])s[i]=1;else if(1!==n.shape[i])throw new Error("broadcastTo(): [".concat(r,"] cannot be broadcast to [").concat(t,"]."));var u=s.map((function(e,t){return e>1?t:-1})).filter((function(e){return e>=0}));if(0===u.length)return Fn(n);var p={x:n},c={reps:s};return Jt.runKernel(Fe,p,c)}});function Xn(e,t,n){return void 0===t&&(t="float32"),t=t||"float32",ke(e),new Mt(e,t,n)}var Jn=sn({ceil_:function(e){var t={x:rn(e,"x","ceil","float32")};return Jt.runKernel("Ceil",t)}});function $n(e,t,n){ke(e);var r={shape:e,value:t,dtype:n=n||ye(t)};return Jt.runKernel("Fill",{},r)}var er=sn({clipByValue_:function(e,t,n){var r=rn(e,"x","clipByValue");if(oe(t<=n,(function(){return"Error in clip: min (".concat(t,") must be ")+"less than or equal to max (".concat(n,").")})),t===n)return $n(r.shape,t,r.dtype);var a={x:r},o={clipValueMin:t,clipValueMax:n};return Jt.runKernel("ClipByValue",a,o)}}),tr=sn({complex_:function(e,t){var n=rn(e,"real","complex"),r=rn(t,"imag","complex");se(n.shape,r.shape,"real and imag shapes, ".concat(n.shape," and ").concat(r.shape,", ")+"must match in call to tf.complex().");var a={real:n,imag:r};return Jt.runKernel("Complex",a)}}),nr=sn({concat1d_:function(e){return Rn(e,0)}}),rr=sn({concat2d_:function(e,t){return Rn(e,t)}}),ar=sn({concat3d_:function(e,t){return Rn(e,t)}}),or=sn({concat4d_:function(e,t){return Rn(e,t)}}),sr=sn({conv2d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var i=rn(e,"x","conv2d","float32"),u=rn(t,"filter","conv2d","float32"),p=i,c=!1;3===i.rank&&(c=!0,p=An(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(4===p.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank ".concat(p.rank,".")})),oe(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")})),Dn("conv2d",r,s);var l="NHWC"===a?p.shape[3]:p.shape[1];oe(l===u.shape[2],(function(){return"Error in conv2d: depth of input (".concat(l,") must match ")+"input depth for filter ".concat(u.shape[2],".")})),oe(In(n,o),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),oe(On(o),(function(){return"Error in conv2D: Dilated rates should be larger than 0."})),oe(On(n),(function(){return"Error in conv2D: Strides should be larger than 0."}));var d={x:p,filter:u},h={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:s},f=Jt.runKernel("Conv2D",d,h);return c?An(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),ir=sn({conv1d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NWC"),void 0===o&&(o=1);var i=rn(e,"x","conv1d"),u=rn(t,"filter","conv1d"),p=i,c=!1;2===i.rank&&(c=!0,p=An(i,[1,i.shape[0],i.shape[1]])),oe(3===p.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank ".concat(p.rank,".")})),oe(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+"".concat(u.rank,".")})),Dn("conv1d",r,s),oe(p.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input (".concat(p.shape[2],") must match ")+"input depth for filter ".concat(u.shape[1],".")})),oe(In(n,o),(function(){return"Error in conv1D: Either stride or dilation must be 1. "+"Got stride ".concat(n," and dilation '").concat(o,"'")})),oe(On(o),(function(){return"Error in conv1D: Dilated rates should be larger than 0."})),oe(On(n),(function(){return"Error in conv1D: Stride should be larger than 0."})),oe("NWC"===a,(function(){return"Error in conv1d: got dataFormat of ".concat(a," but only NWC is currently supported.")}));var l=An(u,[1,u.shape[0],u.shape[1],u.shape[2]]),d=An(p,[p.shape[0],1,p.shape[1],p.shape[2]]),h=sr(d,l,[1,n],r,"NHWC",[1,o],s);return An(h,c?[h.shape[2],h.shape[3]]:[h.shape[0],h.shape[2],h.shape[3]])}}),ur=sn({conv2DBackpropInput_:function(e,t,n,r,a,o,s){void 0===o&&(o="NHWC"),oe(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var i=e,u=t,p=!1;3===t.rank&&(p=!0,u=An(t,[1,t.shape[0],t.shape[1],t.shape[2]]),i=[1,e[0],e[1],e[2]]),oe(4===i.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+"".concat(i.length,".")})),oe(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+"rank ".concat(u.rank)})),oe(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+"rank ".concat(n.rank)}));var c="NHWC"===o?i[3]:i[1],l="NHWC"===o?u.shape[3]:u.shape[1];oe(c===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input (".concat(c,") must ")+"match input depth for filter ".concat(n.shape[2],".")})),oe(l===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output (".concat(l,") must ")+"match output depth for filter ".concat(n.shape[3],".")})),Dn("conv2dDerInput",a,s);var d={dy:u,filter:n},h={strides:r,pad:a,dataFormat:o,dimRoundingMode:s,inputShape:i},f=Jt.runKernel("Conv2DBackpropInput",d,h);return p?An(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),pr=sn({conv2dTranspose_:function(e,t,n,r,a,o){var s=rn(e,"x","conv2dTranspose"),i=rn(t,"filter","conv2dTranspose");return ur(n,s,i,r,a,"NHWC",o)}}),cr=sn({conv3d_:function(e,t,n,r,a,o){void 0===a&&(a="NDHWC"),void 0===o&&(o=[1,1,1]);var s=rn(e,"x","conv3d"),i=rn(t,"filter","conv3d"),u=s,p=!1;4===s.rank&&(p=!0,u=An(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank ".concat(u.rank,".")})),oe(5===i.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+"".concat(i.rank,".")})),oe(u.shape[4]===i.shape[3],(function(){return"Error in conv3d: depth of input (".concat(u.shape[4],") must match ")+"input depth for filter ".concat(i.shape[3],".")})),oe(In(n,o),(function(){return"Error in conv3D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),oe("NDHWC"===a,(function(){return"Error in conv3d: got dataFormat of ".concat(a," but only NDHWC is currently supported.")})),oe(On(o),(function(){return"Error in conv3D: Dilated rates should be larger than 0."})),oe(On(n),(function(){return"Error in conv3D: Strides should be larger than 0."}));var c={x:u,filter:i},l={strides:n,pad:r,dataFormat:a,dilations:o},d=Jt.runKernel("Conv3D",c,l);return p?An(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),lr=sn({conv3DBackpropInput_:function(e,t,n,r,a){oe(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var o=e,s=t,i=!1;4===t.rank&&(i=!0,s=An(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),o=[1,e[0],e[1],e[2],e[3]]);var u=o[4],p=s.shape[4];oe(5===o.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+"".concat(o.length,".")})),oe(5===s.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+"rank ".concat(s.rank)})),oe(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+"rank ".concat(n.rank)})),oe(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input (".concat(u,") must ")+"match input depth for filter ".concat(n.shape[3],".")})),oe(p===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output (".concat(p,") must ")+"match output depth for filter ".concat(n.shape[4],".")}));var c={dy:s,filter:n},l={pad:a,strides:r,inputShape:o},d=Jt.runKernel("Conv3DBackpropInputV2",c,l);return i?An(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}}),dr=sn({conv3dTranspose_:function(e,t,n,r,a){var o=rn(e,"x","conv3dTranspose"),s=rn(t,"filter","conv3dTranspose");return lr(n,o,s,r,a)}}),hr=sn({cos_:function(e){var t={x:rn(e,"x","cos","float32")};return Jt.runKernel("Cos",t)}}),fr=sn({cosh_:function(e){var t={x:rn(e,"x","cosh","float32")};return Jt.runKernel("Cosh",t)}}),mr=sn({cumprod_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:rn(e,"x","cumprod")},o={axis:t,exclusive:n,reverse:r};return Jt.runKernel("Cumprod",a,o)}}),yr=sn({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:rn(e,"x","cumsum")},o={axis:t,exclusive:n,reverse:r};return Jt.runKernel("Cumsum",a,o)}}),gr=sn({denseBincount_:function(e,t,n,r){void 0===r&&(r=!1);var a=rn(e,"x","denseBincount"),o=rn(t,"weights","denseBincount");oe("int32"===a.dtype,(function(){return"Error in denseBincount: input "+"dtype must be int32, but got ".concat(a.dtype)})),oe(a.rank<=2,(function(){return"Error in denseBincount: input must be at most rank 2, but got "+"rank ".concat(a.rank,".")})),oe(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),oe(o.size===a.size||0===o.size,(function(){return"Error in denseBincount: weights must have the same shape as x or "+"0-length, but got x shape: ".concat(a.shape,", weights shape: ")+"".concat(o.shape,".")}));var s={x:a,weights:o},i={size:n,binaryOutput:r};return Jt.runKernel("DenseBincount",s,i)}}),vr=sn({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=rn(e,"x","depthToSpace","float32"),a="NHWC"===n?r.shape[1]:r.shape[2],o="NHWC"===n?r.shape[2]:r.shape[3],s="NHWC"===n?r.shape[3]:r.shape[1];oe(t>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: ".concat(t)})),oe(a*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(a," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),oe(o*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(o," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),oe(s%(t*t)==0,(function(){return"Dimension size must be evenly divisible by ".concat(t*t," but is ").concat(s," for depthToSpace with input shape ").concat(r.shape)}));var i={x:r},u={blockSize:t,dataFormat:n};return Jt.runKernel("DepthToSpace",i,u)}}),br=sn({depthwiseConv2d_:function(e,t,n,r,a,o,s){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var i=rn(e,"x","depthwiseConv2d","float32"),u=rn(t,"filter","depthwiseConv2d","float32"),p=i,c=!1;3===i.rank&&(c=!0,p=An(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(4===p.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(p.rank,".")})),oe(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")}));var l="NHWC"===a?p.shape[3]:p.shape[1];oe(l===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels "+"(".concat(l,") must match the inChannels dimension in ")+"filter ".concat(u.shape[2],".")})),Dn("depthwiseConv2d",r,s);var d={x:p,filter:u},h={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:s},f=Jt.runKernel("DepthwiseConv2dNative",d,h);return c?An(f,[f.shape[1],f.shape[2],f.shape[3]]):f}}),xr=sn({diag_:function(e){var t={x:rn(e,"x","diag")};return Jt.runKernel("Diag",t)}}),Nr=sn({dilation2d_:function(e,t,n,r,a,o){void 0===a&&(a=[1,1]),void 0===o&&(o="NHWC");var s=rn(e,"x","dilation2d"),i=rn(t,"filter","dilation2d");oe(3===s.rank||4===s.rank,(function(){return"Error in dilation2d: input must be rank 3 or 4, but got rank "+"".concat(s.rank,".")})),oe(3===i.rank,(function(){return"Error in dilation2d: filter must be rank 3, but got rank "+"".concat(i.rank,".")})),oe("NHWC"===o,(function(){return"Error in dilation2d: Only NHWC is currently supported, "+"but got dataFormat of ".concat(o)}));var u=s,p=!1;3===s.rank&&(u=An(s,[1,s.shape[0],s.shape[1],s.shape[2]]),p=!0),oe(u.shape[3]===i.shape[2],(function(){return"Error in dilation2d: input and filter must have the same depth: ".concat(u.shape[3]," vs ").concat(i.shape[2])}));var c={x:u,filter:i},l={strides:n,pad:r,dilations:a},d=Jt.runKernel("Dilation2D",c,l);return p?An(d,[d.shape[1],d.shape[2],d.shape[3]]):d}}),wr=sn({floorDiv_:function(e,t){var n,r=rn(e,"a","floorDiv"),a=rn(t,"b","floorDiv"),o={a:r=(n=c(Wt(r,a),2))[0],b:a=n[1]};return Jt.runKernel("FloorDiv",o)}}),kr=sn({div_:function(e,t){var n,r=rn(e,"a","div"),a=rn(t,"b","div");if(r=(n=c(Wt(r,a),2))[0],a=n[1],"int32"===r.dtype&&"int32"===a.dtype)return wr(r,a);var o={a:r,b:a};return Jt.runKernel("RealDiv",o,{})}});function Tr(e,t){for(var n=Math.max(e.length,t.length),r=new Array(n),a=0;a=wa)throw new Error("values tensor size must less than ".concat(wa));if(i.shape[1]>=wa)throw new Error("trailing dim_size must less than ".concat(wa," for int32 output type, was ").concat(i.shape[1]));var p={sortedSequence:i,values:u},c={side:n};return Jt.runKernel("SearchSorted",p,c)}}),Ta=sn({maxPool_:function(e,t,n,r,a){var o=rn(e,"x","maxPool"),s=o,i=!1;3===o.rank&&(i=!0,s=An(o,[1,o.shape[0],o.shape[1],o.shape[2]])),oe(4===s.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(s.rank,".")})),oe(In(n,1),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")})),Dn("maxPool",r,a);var u={x:s},p={filterSize:t,strides:n,pad:r,dimRoundingMode:a},c=Jt.runKernel("MaxPool",u,p);return i?An(c,[c.shape[1],c.shape[2],c.shape[3]]):c}}),Sa=sn({maxPool3d_:function(e,t,n,r,a,o){void 0===t&&(t=[1,1,1]),void 0===o&&(o="NDHWC");var s=rn(e,"x","maxPool3d"),i=s,u=!1;4===s.rank&&(u=!0,i=An(s,[1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]])),oe(5===i.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank ".concat(i.rank,".")})),oe("NDHWC"===o,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),Dn("maxPool3d",r,a);var p={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},l=Jt.runKernel("MaxPool3D",p,c);return u?An(l,[l.shape[1],l.shape[2],l.shape[3],l.shape[4]]):l}}),_a=sn({maxPoolWithArgmax_:function(e,t,n,r,a){void 0===a&&(a=!1);var o={x:rn(e,"x","maxPoolWithArgmax")},s={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},i=Jt.runKernel("MaxPoolWithArgmax",o,s);return{result:i[0],indexes:i[1]}}}),Ea=sn({maximum_:function(e,t){var n,r=rn(e,"a","maximum"),a=rn(t,"b","maximum");r=(n=c(Wt(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=wn(r,"int32"),a=wn(a,"int32")),Tr(r.shape,a.shape);var o={a:r,b:a};return Jt.runKernel("Maximum",o)}}),Ia=sn({mean_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:rn(e,"x","mean")},a={axis:t,keepDims:n};return Jt.runKernel("Mean",r,a)}});function Oa(e,t){if(void 0===t&&(t="float32"),ke(e),"complex64"===t){var n=Oa(e,"float32"),r=Oa(e,"float32");return tr(n,r)}var a=we(ue(e),t);return Jt.makeTensor(a,e,t)}function Da(e,t){if(void 0===t&&(t="float32"),ke(e),"complex64"===t){var n=Da(e,"float32"),r=Oa(e,"float32");return tr(n,r)}var a=Ne(ue(e),t);return Jt.makeTensor(a,e,t)}var Aa=sn({minimum_:function(e,t){var n,r=rn(e,"a","minimum"),a=rn(t,"b","minimum");r=(n=c(Wt(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=wn(r,"int32"),a=wn(a,"int32")),Tr(r.shape,a.shape);var o={a:r,b:a};return Jt.runKernel("Minimum",o)}}),Ma=sn({mirrorPad_:function(e,t,n){oe("reflect"===n||"symmetric"===n,(function(){return"Invalid mode. Mode must be either reflect or symmetric. "+"Got ".concat(n,".")}));var r=rn(e,"x","mirrorPad");if(0===r.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");oe(t.length===r.rank,(function(){return"Padding doesn't match input. Must be ".concat(r.rank,". ")+"Got ".concat(t.length,".")}));for(var a="reflect"===n?1:0,o=function(e){oe(2===t[e].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),oe(t[e][0]>=0&&t[e][0]<=r.shape[e]-a&&t[e][1]>=0&&t[e][1]<=r.shape[e]-a,(function(){return"Padding in dimension ".concat(e," cannot be greater than or equal ")+"to ".concat(r.shape[e]-a," or less than 0 for input of ")+"shape ".concat(r.shape)}))},s=0;s2)throw new Error("Rank of probabilities must be 1 or 2, but is ".concat(s));n=n||Math.random();var i={logits:1===s?An(a,[1,-1]):a},u={numSamples:t,seed:n,normalized:r},p=Jt.runKernel("Multinomial",i,u);return 1===s?An(p,[p.size]):p}}),Va=sn({notEqual_:function(e,t){var n,r=rn(e,"a","notEqual","string_or_numeric"),a=rn(t,"b","notEqual","string_or_numeric");r=(n=c(Wt(r,a),2))[0],a=n[1],Tr(r.shape,a.shape);var o={a:r,b:a};return Jt.runKernel("NotEqual",o)}}),La=sn({oneHot_:function(e,t,n,r,a){if(void 0===n&&(n=1),void 0===r&&(r=0),void 0===a&&(a="int32"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is ".concat(t));var o={indices:rn(e,"indices","oneHot","int32")},s={dtype:a,depth:t,onValue:n,offValue:r};return Jt.runKernel("OneHot",o,s)}}),Pa=sn({onesLike_:function(e){var t={x:rn(e,"x","onesLike")};return Jt.runKernel("OnesLike",t)}}),Ba=sn({outerProduct_:function(e,t){var n=rn(e,"v1","outerProduct"),r=rn(t,"v2","outerProduct");oe(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+"".concat(n.rank," and ").concat(r.rank,".")}));var a=An(n,[-1,1]),o=An(r,[1,-1]);return zn(a,o)}}),Ka=sn({pad_:function(e,t,n){void 0===n&&(n=0);var r=rn(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a={paddings:t,constantValue:n},o={x:r};return Jt.runKernel("PadV2",o,a)}}),ja=sn({pad1d_:function(e,t,n){return void 0===n&&(n=0),oe(2===t.length,(function(){return"Invalid number of paddings. Must be length of 2."})),Ka(e,[t],n)}}),qa=sn({pad2d_:function(e,t,n){return void 0===n&&(n=0),oe(2===t.length&&2===t[0].length&&2===t[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),Ka(e,t,n)}}),Ua=sn({pad3d_:function(e,t,n){return void 0===n&&(n=0),oe(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),Ka(e,t,n)}}),Ga=sn({pad4d_:function(e,t,n){return void 0===n&&(n=0),oe(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),Ka(e,t,n)}}),Wa=sn({spaceToBatchND_:function(e,t,n){var r=rn(e,"x","spaceToBatchND");oe(r.rank>=1+t.length,(function(){return"input rank ".concat(r.rank," should be > than [blockShape] ").concat(t.length)})),oe(n.length===t.length,(function(){return"paddings.shape[0] ".concat(n.length," must be equal to [blockShape] ").concat(t.length)})),oe(r.shape.reduce((function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e}),!0),(function(){return"input spatial dimensions ".concat(r.shape.slice(1)," with paddings ").concat(n.toString()," must be divisible by blockShapes ").concat(t.toString())}));var a={x:r},o={blockShape:t,paddings:n};return Jt.runKernel("SpaceToBatchND",a,o)}}),Ha=sn({pool_:function(e,t,n,r,a,o,s){null==a&&(a=[1,1]),null==o&&(o=1),0===r&&(r="valid");var i=rn(e,"x","maxPool"),u=i,p=!1;3===i.rank&&(p=!0,u=An(i,[1,i.shape[0],i.shape[1],i.shape[2]])),oe(In(o,a),(function(){return"Error in pool: Either strides or dilations must be 1. "+"Got strides ".concat(o," and dilations '").concat(a,"'")}));var l,d=function(e,t,n,r,a,o,s){void 0===s&&(s="channelsLast");var i,u=c(Tn(t),2),p=u[0],l=u[1];if("channelsLast"===s)i=[p,l,e[3],e[3]];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));i=[p,l,e[1],e[1]]}return kn(e,i,n,r,a,void 0,!1,s)}(u.shape,t,o,a,r),h=[d.dilationHeight,d.dilationWidth];l="same"===r?function(e,t){var n=e.map((function(e,n){return e+(e-1)*(t[n]-1)})).map((function(e){return e-1})),r=n.map((function(e){return Math.floor(e/2)})),a=n.map((function(e,t){return e-r[t]}));return n.map((function(e,t){return[r[t],a[t]]}))}([d.filterHeight,d.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],m=c(function(e,t,n){var r=n.map((function(e){return e[0]})),a=n.map((function(e){return e[1]})),o=e.concat(r,a),s=t.map((function(e,t){return(e-o[t]%e)%e})),i=a.map((function(e,t){return e+s[t]}));return[t.map((function(e,t){return[r[t],i[t]]})),t.map((function(e,t){return[0,s[t]]}))]}([d.inHeight,d.inWidth],h,l),2),y=m[0],g=m[1],v=f?r:"valid",b=f?u:Wa(u,h,y),x=("avg"===n?function(){return Mn(b,t,o,v,s)}:function(){return Ta(b,t,o,v,s)})(),N=f?x:jn(x,h,g);return p?An(N,[N.shape[1],N.shape[2],N.shape[3]]):N}}),Za=sn({prelu_:function(e,t){var n={x:rn(e,"x","prelu"),alpha:rn(t,"alpha","prelu")};return Jt.runKernel("Prelu",n)}}),Qa=sn({prod_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=rn(e,"x","prod");"bool"===r.dtype&&(r=wn(r,"int32"));var a={x:r},o={axis:t,keepDims:n};return Jt.runKernel("Prod",a,o)}}),Ya=sn({raggedGather_:function(e,t,n,r){var a={paramsNestedSplits:e.map((function(e,t){return rn(e,"tensors".concat(t),"raggedGather","int32")})),paramsDenseValues:rn(t,"paramsDenseValues","raggedGather"),indices:rn(n,"indices","raggedGather","int32")},o={outputRaggedRank:r},s=Jt.runKernel("RaggedGather",a,o);return{outputNestedSplits:s.slice(0,s.length-1),outputDenseValues:s[s.length-1]}}}),Xa=sn({raggedRange_:function(e,t,n){var r=rn(e,"starts","raggedRange"),a={starts:r,limits:rn(t,"limits","raggedRange",r.dtype),deltas:rn(n,"deltas","raggedRange",r.dtype)},o=Jt.runKernel("RaggedRange",a);return{rtNestedSplits:o[0],rtDenseValues:o[1]}}}),Ja=sn({raggedTensorToTensor_:function(e,t,n,r,a){var o=rn(e,"shape","raggedTensorToTensor","int32"),s=rn(t,"values","raggedTensorToTensor"),i={shape:o,values:s,defaultValue:rn(n,"defaultValue","raggedTensorToTensor",s.dtype),rowPartitionTensors:r.map((function(e,t){return rn(e,"tensors".concat(t),"raggedTensorToTensor","int32")}))},u={rowPartitionTypes:a};return Jt.runKernel("RaggedTensorToTensor",i,u)}}),$a=sn({rand_:function(e,t,n){ke(e);var r=ue(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type ".concat(n));a=new Uint8Array(r)}for(var o=0;o>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function a(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function o(e,t){var n=new r(e),o=t&&t.state,s=n.next;return s.int32=function(){return 4294967296*n.next()|0},s.double=function(){return s()+11102230246251565e-32*(2097152*s()|0)},s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.alea=o}(0,e)}(eo);var to=eo.exports,no={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xor128=o}(0,e)}(no);var ro=no.exports,ao={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}function a(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function o(e,t){var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xorwow=o}(0,e)}(ao);var oo=ao.exports,so={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}function a(e,t){return t.x=e.x.slice(),t.i=e.i,t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&(o.x&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xorshift7=o}(0,e)}(so);var io=so.exports,uo={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,o=t.i;return t.w=r=r+1640531527|0,n=a[o+34&127],e=a[o=o+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[o]=n^e,t.i=o,n+(r^r>>>16)|0},function(e,t){var n,r,a,o,s,i=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,o=-32;o>>15,r^=r<<4,r^=r>>>13,o>=0&&(s=s+1640531527|0,a=0==(n=i[127&o]^=r+s)?a+1:0);for(a>=128&&(i[127&(t&&t.length||0)]=-1),a=127,o=512;o>0;--o)r=i[a+34&127],n=i[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,i[a]=r^n;e.w=s,e.X=i,e.i=a}(t,e)}function a(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,s=function(){return(n.next()>>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&(o.X&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.xor4096=o}(0,e)}(uo);var po=uo.exports,co={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return s.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},s.int32=n.next,s.quick=s,o&&("object"==typeof o&&a(o,n),s.state=function(){return a(n,{})}),s}t&&t.exports?t.exports=o:this.tychei=o}(0,e)}(co);var lo=co.exports,ho={exports:{}},fo=function(e){if(e.__esModule)return e;var t=e.default;if("function"==typeof t){var n=function e(){if(this instanceof e){var n=[null];return n.push.apply(n,arguments),new(Function.bind.apply(t,n))}return t.apply(this,arguments)};n.prototype=t.prototype}else n={};return Object.defineProperty(n,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,r.get?r:{enumerable:!0,get:function(){return e[t]}})})),n}({__proto__:null,default:{}});!function(e){!function(t,n,r){var a,o=256,s=r.pow(o,6),i=r.pow(2,52),u=2*i,p=255;function c(e,p,c){var y=[],g=f(h((p=1==p?{entropy:!0}:p||{}).entropy?[e,m(n)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(t.crypto||t.msCrypto).getRandomValues(e)),m(e)}catch(e){var r=t.navigator,s=r&&r.plugins;return[+new Date,t,s,t.screen,m(n)]}}():e,3),y),v=new l(y),b=function(){for(var e=v.g(6),t=s,n=0;e=u;)e/=2,t/=2,n>>>=1;return(e+n)/t};return b.int32=function(){return 0|v.g(4)},b.quick=function(){return v.g(4)/4294967296},b.double=b,f(m(v.S),n),(p.pass||c||function(e,t,n,a){return a&&(a.S&&d(a,v),e.state=function(){return d(v,{})}),n?(r.random=e,t):e})(b,g,"global"in p?p.global:this==r,p.state)}function l(e){var t,n=e.length,r=this,a=0,s=r.i=r.j=0,i=r.S=[];for(n||(e=[n++]);a=1||0===s);var i=Math.sqrt(-2*Math.log(s)/s);t=this.mean+this.stdDev*a*i,n=this.mean+this.stdDev*o*i,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}(),To=function(){function e(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;var a=r||Math.random();this.randu=wo.alea(a.toString()),this.randn=new ko(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}return e.prototype.nextValue=function(){for(var e,t,n,r,a,o;;){do{r=this.randn.nextValue(),o=1+this.c*r}while(o<=0);if(o*=o*o,t=1-.331*(e=r*r)*e,n=.5*e+this.d*(1-o+Math.log(o)),(a=this.randu())r){var i=e.shape.map((function(e){return e}));i[e.shape.length-1]=t-r,n=Rn([e,Oa(i)],e.shape.length-1),r=t}else n=e;var u=Er(n),p=An(tr(n,u),[a,r]),c=$o(p),l=Math.floor(r/2)+1,d=Mo(c),h=ta(c),f=ns(d,[l,r-l],d.shape.length-1),m=ns(h,[l,r-l],h.shape.length-1),y=n.shape.slice();return y[n.shape.length-1]=l,An(tr(f[0],m[0]),y)}}),as=sn({squaredDifference_:function(e,t){var n,r=rn(e,"a","squaredDifference"),a=rn(t,"b","squaredDifference");r=(n=c(Wt(r,a),2))[0],a=n[1],Tr(r.shape,a.shape);var o={a:r,b:a};return Jt.runKernel("SquaredDifference",o,{})}}),os=sn({squeeze_:function(e,t){var n=rn(e,"x","squeeze","string_or_numeric");return An(n,function(e,t){for(var n=[],r=[],a=null!=t&&Array.isArray(t)&&0===t.length,o=null==t||a?null:de(t,e).sort(),s=0,i=0;ii)&&1===e[i]&&(n.push(e[i]),r.push(i)),o[s]<=i&&s++}1!==e[i]&&(n.push(e[i]),r.push(i))}return{newShape:n,keptDims:r}}(n.shape,t).newShape)}}),ss=sn({stack_:function(e,t){void 0===t&&(t=0);var n=an(e,"tensors","stack","string_or_numeric");oe(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),n.length>0&&oe(t<=n[0].rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n,a={axis:t};return Jt.runKernel("Pack",r,a)}}),is=sn({step_:function(e,t){void 0===t&&(t=0);var n={x:rn(e,"x","step")},r={alpha:t};return Jt.runKernel("Step",n,r)}}),us=sn({stridedSlice_:function(e,t,n,r,a,o,s,i,u){void 0===a&&(a=0),void 0===o&&(o=0),void 0===s&&(s=0),void 0===i&&(i=0),void 0===u&&(u=0);var p={x:rn(e,"x","stridedSlice","string_or_numeric")},c={begin:t,end:n,strides:r,beginMask:a,endMask:o,ellipsisMask:s,newAxisMask:i,shrinkAxisMask:u};return Jt.runKernel("StridedSlice",p,c)}}),ps=sn({tan_:function(e){var t={x:rn(e,"x","tan","float32")};return Jt.runKernel("Tan",t)}});function cs(e,t,n){return Lr(e,t,en(e,n),n)}function ls(e,t){ie(e);var n=en(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Lr(e,null,n,t)}function ds(e,t,n){if(ie(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");var r=en(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Lr(e,t,r,n)}function hs(e,t,n){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher,"+" but the rank was ".concat(t.rank,"."));if(e.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher,"+" but the rank was ".concat(e.rank,"."));if("int32"!==t.dtype)throw new Error("The dtype of 'indices' should be int32, but got dtype: ".concat(t.dtype));if(n.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: ".concat(n));if(0===n.length){if(0===t.size)throw new Error("Indices specified for empty output. indices shape: ".concat(t.shape));if(0===e.size)throw new Error("Updates specified for empty output. updates shape: ".concat(e.shape))}!function(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + "+"shape[sliceDim:], got updates.shape: ".concat(n.shape)+", indices.shape: ".concat(t.shape,", shape: ").concat(e)+", sliceDim: ".concat(r,", and batchDim: ").concat(a,".");if(n.rank= 0 but got ".concat(t));if(t>a)throw new Error("'k' passed to topk() must be <= the last dimension (".concat(a,") ")+"but got ".concat(t));var o={x:r},s={k:t,sorted:n},i=c(Jt.runKernel("TopK",o,s),2);return{values:i[0],indices:i[1]}}}),ys=sn({truncatedNormal_:function(e,t,n,r,a){if(void 0===t&&(t=0),void 0===n&&(n=1),ke(e),null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");for(var o=new ko(t,n,r,!0,a),s=Xn(e,r),i=0;i0,(function(){return"The input tensor must be at least 1D"}));var r={x:n},a={axis:t},o=c(Jt.runKernel("Unique",r,a),2);return{values:o[0],indices:o[1]}}}),vs=sn({unsortedSegmentSum_:function(e,t,n){var r=rn(e,"x","unsortedSegmentSum"),a=rn(t,"segmentIds","unsortedSegmentSum","int32");oe(ce(n),(function(){return"numSegments must be of dtype int"}));var o={x:r,segmentIds:a},s={numSegments:n};return Jt.runKernel("UnsortedSegmentSum",o,s)}}),bs=sn({unstack_:function(e,t){void 0===t&&(t=0);var n=rn(e,"x","unstack","string_or_numeric");oe(t>=-n.shape.length&&t=0&&e2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+" but got shape ".concat(e.shape,"."));var a=e.rank>0?e.shape[0]:1,o=e.rank>1?e.shape[1]:1;if(n.length!==o)throw new Error("outputShape has incorrect number of elements:,"+" ".concat(n.length,", should be: ").concat(o,"."));var s=t.size;if(0!==t.rank&&(1!==t.rank||s!==a))throw new Error("sparseValues has incorrect shape "+"".concat(t.shape,", should be [] or [").concat(a,"]"));if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,o,n,s);var i={sparseIndices:a,sparseValues:o,defaultValue:s},u={outputShape:n};return Jt.runKernel("SparseToDense",i,u)}}),Ss=sn({gatherND_:function(e,t){var n=rn(t,"indices","gatherND","int32"),r={params:rn(e,"x","gatherND","string_or_numeric"),indices:n};return Jt.runKernel("GatherNd",r)}}),_s=sn({dropout_:function(e,t,n,r){var a=rn(e,"x","dropout");if(oe("float32"===a.dtype,(function(){return"x has to be a floating point tensor since it's going to be "+"scaled, but got a ".concat(a.dtype," tensor instead.")})),oe(t>=0&&t<1,(function(){return"rate must be a float in the range [0, 1), but got ".concat(t,".")})),0===t)return e instanceof Rt?a.clone():a;var o=function(e,t){if(null==t)return e.shape.slice();if(pe(e.shape,t))return t;if(e.shape.length===t.length){for(var n=[],r=0;r1)&&n.unshift(o)}return n}(e.shape,t.shape);return r.length>0&&(n=jr(n,r)),An(n,e.shape)}function Ms(e,t,n,r){if("linear"===t)return e;if("relu"===t)return Fo(e);if("elu"===t)return Ar(e);if("relu6"===t)return Ro(e);if("prelu"===t)return Za(e,n);if("leakyrelu"===t)return oa(e,r);if("sigmoid"===t)return Ln(e);throw new Error("Unknown fused activation ".concat(t,"."))}var Cs=function(e,t){return!(e>0)||"linear"===t},Fs=sn({fusedConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,i=void 0===s?"NHWC":s,u=e.dilations,p=void 0===u?[1,1]:u,l=e.dimRoundingMode,d=e.bias,h=e.activation,f=void 0===h?"linear":h,m=e.preluActivationWeights,y=e.leakyreluAlpha;if(f=f||"linear",!1===Cs(Jt.state.gradientDepth,f)){oe("NHWC"===i,(function(){return"Error in fused conv2d: got dataFormat of ".concat(i," but ")+"only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear."}));var g=sr(n,r,a,o,i,p,l);return null!=d&&(g=ln(g,d)),Ms(g,f,m,y)}var v=rn(n,"x","conv2d","float32"),b=rn(r,"filter","conv2d","float32"),x=v,N=!1;3===v.rank&&(N=!0,x=An(v,[1,v.shape[0],v.shape[1],v.shape[2]])),oe(4===x.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+"".concat(x.rank,".")})),oe(4===b.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+"".concat(b.rank,".")})),Dn("fused conv2d",o,l);var w="NHWC"===i?x.shape[3]:x.shape[1];oe(b.shape[2]===w,(function(){return"Error in conv2d: depth of input (".concat(w,") must match ")+"input depth for filter ".concat(b.shape[2],".")})),oe(In(a,p),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(a," and dilations '").concat(p,"'")}));var k,T,S=kn(x.shape,b.shape,a,p,o,l);if(null!=d&&(t=c(Wt(k=rn(d,"bias","fused conv2d"),v),1),k=t[0],"NHWC"===i?Tr(S.outShape,k.shape):(oe(k.shape.length<=1,(function(){return"Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of "+"rank-".concat(k.shape.length,".")})),oe(0===k.shape.length||k.shape[0]===S.outChannels||1===k.shape[0],(function(){return"Error in fused conv2d: bias shape (".concat(k.shape,") is not ")+"compatible with the number of output channels "+"(".concat(S.outChannels,")")})))),null!=m){var _=m.shape;if(oe(_.length<=1||3===_.length,(function(){return"Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of "+"rank-".concat(_.length,".")})),1===_.length)oe(1===_[0]||_[0]===S.outChannels,(function(){return"Error in fused conv2d: PReLU activation weights "+"(".concat(_,") is not compatible with the number of output ")+"channels (".concat(S.outChannels,").")}));else if(3===_.length)try{Tr(_,S.outShape)}catch(e){var E="Error in fused conv2d: PReLU activation weights (".concat(_,") ")+"is not compatible with the output shape of the conv2d "+"(".concat(S.outShape,").");throw Error(E)}T=rn(m,"prelu weights","fused conv2d")}var I=function(e,t){oe("NHWC"===i,(function(){return"Error in gradient of fused conv2D: got dataFormat of ".concat(i," but only NHWC is currently supported.")}));var n=c(t,4),r=n[0],s=n[1],u=n[2],l=n[3],d=Ds(e,u,f);oe(En(p),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+"are not yet supported in gradients. Got dilations '".concat(p,"'")}));var h=[ur(s.shape,d,r,a,o),Os(s,d,r.shape,a,o)];if(null!=l){var m=As(l,d);h.push(m)}return h},O={x,filter:b,bias:k,preluActivationWeights:T},D={strides:a,pad:o,dataFormat:i,dilations:p,dimRoundingMode:l,activation:f,leakyreluAlpha:y};if(null==d){var A=la((function(e,t,n){var r=Jt.runKernel(Ve,O,D);return n([t,e,r]),N&&(r=An(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:I}}));return A(x,b)}var M=la((function(e,t,n,r){var a=Jt.runKernel(Ve,O,D);return r([t,e,a,n]),N&&(a=An(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:I}}));return M(x,b,k)}}),Rs=sn({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,r,a,o,s){void 0===o&&(o=[1,1]);var i=e;3===e.rank&&(i=An(e,[1,e.shape[0],e.shape[1],e.shape[2]]));var u=t;3===u.rank&&(u=An(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var p={x:i,dy:u},c={strides:r,pad:a,dimRoundingMode:s,dilations:o,filterShape:n};return Jt.runKernel("DepthwiseConv2dNativeBackpropFilter",p,c)}}),zs=sn({depthwiseConv2dNativeBackpropInput_:function(e,t,n,r,a,o,s){void 0===o&&(o=[1,1]);var i=t,u=!1;3===t.rank&&(u=!0,i=An(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var p={dy:i,filter:n},c={strides:r,pad:a,dimRoundingMode:s,dilations:o,inputShape:e},l=Jt.runKernel("DepthwiseConv2dNativeBackpropInput",p,c);return u?An(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Vs=sn({fusedDepthwiseConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,i=void 0===s?"NHWC":s,u=e.dilations,p=void 0===u?[1,1]:u,l=e.dimRoundingMode,d=e.bias,h=e.activation,f=void 0===h?"linear":h,m=e.preluActivationWeights,y=e.leakyreluAlpha;if(!1===Cs(Jt.state.gradientDepth,f)){var g=br(n,r,a,o,i,p,l);return null!=d&&(g=ln(g,d)),Ms(g,f,m,y)}var v=rn(n,"x","depthwiseConv2d","float32"),b=rn(r,"filter","depthwiseConv2d","float32"),x=v,N=!1;3===v.rank&&(N=!0,x=An(v,[1,v.shape[0],v.shape[1],v.shape[2]])),oe(4===x.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(x.rank,".")})),oe(4===b.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+"but got rank ".concat(b.rank,".")})),oe(x.shape[3]===b.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels "+"(".concat(x.shape[3],") must match the inChannels dimension in ")+"filter ".concat(b.shape[2],".")})),null==p&&(p=[1,1]),oe(In(a,p),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+"be 1. Got strides ".concat(a," and dilations '").concat(p,"'")})),Dn("fused depthwiseConv2d",o,l);var w,k,T=kn(x.shape,b.shape,a,p,o,l,!0);null!=d&&(t=c(Wt(w=rn(d,"bias","fused conv2d"),v),1),w=t[0],Tr(T.outShape,w.shape)),null!=m&&(k=rn(m,"prelu weights","fused depthwiseConv2d"));var S=function(e,t){oe(En(p),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+"'".concat(p,"'")}));var n=c(t,4),r=n[0],s=n[1],i=n[2],u=n[3],d=Ds(e,i,f),h=zs(s.shape,d,r,a,o,p,l),m=Rs(s,d,r.shape,a,o,p,l);return null!=u?[h,m,As(w,d)]:[h,m]},_={x,filter:b,bias:w,preluActivationWeights:k},E={strides:a,pad:o,dataFormat:i,dilations:p,dimRoundingMode:l,activation:f,leakyreluAlpha:y};if(null==d){var I=la((function(e,t,n){var r=Jt.runKernel(Le,_,E);return n([t,e,r]),N&&(r=An(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:S}}));return I(x,b)}var O=la((function(e,t,n,r){var a=Jt.runKernel(Le,_,E);return r([t,e,a,n]),N&&(a=An(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:S}}));return O(x,b,w)}}),Ls={__proto__:null,conv2d:Fs,depthwiseConv2d:Vs,matMul:sn({fusedMatMul_:function(e){var t,n=e.a,r=e.b,a=e.transposeA,o=void 0!==a&&a,s=e.transposeB,i=void 0!==s&&s,u=e.bias,p=e.activation,l=void 0===p?"linear":p,d=e.preluActivationWeights,h=e.leakyreluAlpha,f=void 0===h?.2:h;if(!1===Cs(Jt.state.gradientDepth,l)){var m=zn(n,r,o,i);return null!=u&&(m=ln(m,u)),Ms(m,l,d,f)}var y=rn(n,"a","fused matMul"),g=rn(r,"b","fused matMul");t=c(Wt(y,g),2),y=t[0],g=t[1];var v=o?y.shape[y.rank-2]:y.shape[y.rank-1],b=i?g.shape[g.rank-1]:g.shape[g.rank-2],x=o?y.shape[y.rank-1]:y.shape[y.rank-2],N=i?g.shape[g.rank-2]:g.shape[g.rank-1],w=y.shape.slice(0,-2),k=g.shape.slice(0,-2),T=ue(w),S=ue(k);oe(v===b,(function(){return"Error in fused matMul: inner shapes (".concat(v,") and (")+"".concat(b,") of Tensors with shapes ").concat(y.shape," and ")+"".concat(g.shape," and transposeA=").concat(o)+" and transposeB=".concat(i," must match.")}));var _,E,I=Tr(y.shape.slice(0,-2),g.shape.slice(0,-2)).concat([x,N]),O=An(y,o?[T,v,x]:[T,x,v]),D=An(g,i?[S,N,b]:[S,b,N]);null!=u&&(_=c(Wt(_=rn(u,"bias","fused matMul"),y),1)[0],Tr(I,_.shape)),null!=d&&(E=rn(d,"prelu weights","fused matMul"));var A=function(e,t){var n,r,a=c(t,4),s=a[0],p=a[1],d=a[2],h=a[3],f=Ds(An(e,d.shape),d,l);return o||i?!o&&i?(n=zn(f,p,!1,!1),r=zn(f,s,!0,!1)):o&&!i?(n=zn(p,f,!1,!0),r=zn(s,f,!1,!1)):(n=zn(p,f,!0,!0),r=zn(f,s,!0,!0)):(n=zn(f,p,!1,!0),r=zn(s,f,!0,!1)),null!=u?[n,r,As(h,f)]:[n,r]},M={a:O,b:D,bias:_,preluActivationWeights:E},C={transposeA:o,transposeB:i,activation:l,leakyreluAlpha:f};if(null==u){var F=la((function(e,t,n){var r=Jt.runKernel(ze,M,C);return n([e,t,r]),{value:An(r,I),gradFunc:A}}));return F(O,D)}var R=la((function(e,t,n,r){var a=Jt.runKernel(ze,M,C);return r([e,t,a,n]),{value:An(a,I),gradFunc:A}}));return R(O,D,_)}})},Ps=sn({hammingWindow_:function(e){return Is(e,.54,.46)}}),Bs=sn({hannWindow_:function(e){return Is(e,.5,.5)}}),Ks=sn({frame_:function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=0);for(var o=0,s=[];o+t<=e.size;)s.push(Pn(e,o,t)),o+=n;if(r)for(;o=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was ".concat(r)})),oe("bilinear"===a||"nearest"===a,(function(){return"method must be bilinear or nearest, but was ".concat(a)}));var c={image:s,boxes:i,boxInd:u},l={method:a,extrapolationValue:o,cropSize:r};return Jt.runKernel("CropAndResize",c,l)}}),Us=sn({flipLeftRight_:function(e){var t=rn(e,"image","flipLeftRight","float32");oe(4===t.rank,(function(){return"Error in flipLeftRight: image must be rank 4,"+"but got rank ".concat(t.rank,".")}));var n={image:t};return Jt.runKernel("FlipLeftRight",n,{})}}),Gs=sn({grayscaleToRGB_:function(e){var t=rn(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];oe(t.rank>=2,(function(){return"Error in grayscaleToRGB: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),oe(1===r,(function(){return"Error in grayscaleToRGB: last dimension of a grayscale image "+"should be size 1, but got size ".concat(r,".")}));var a=new Array(t.rank);return a.fill(1,0,n),a[n]=3,Qr(t,a)}}),Ws=sn({rgbToGrayscale_:function(e){var t=rn(e,"image","RGBToGrayscale"),n=t.rank-1,r=t.shape[n];oe(t.rank>=2,(function(){return"Error in RGBToGrayscale: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),oe(3===r,(function(){return"Error in RGBToGrayscale: last dimension of an RGB image "+"should be size 3, but got size ".concat(r,".")}));var a,o=t.dtype,s=wn(t,"float32"),i=ls([.2989,.587,.114]);switch(t.rank){case 2:a=Dr("ij,j->i",s,i);break;case 3:a=Dr("ijk,k->ij",s,i);break;case 4:a=Dr("ijkl,l->ijk",s,i);break;case 5:a=Dr("ijklm,m->ijkl",s,i);break;case 6:a=Dr("ijklmn,n->ijklm",s,i);break;default:throw new Error("Not a valid tensor rank.")}return a=Hr(a,-1),wn(a,o)}}),Hs=sn({rotateWithOffset_:function(e,t,n,r){void 0===n&&(n=0),void 0===r&&(r=.5);var a=rn(e,"image","rotateWithOffset","float32");oe(4===a.rank,(function(){return"Error in rotateWithOffset: image must be rank 4,"+"but got rank ".concat(a.rank,".")}));var o={image:a},s={radians:t,fillValue:n,center:r};return Jt.runKernel("RotateWithOffset",o,s)}});function Zs(e,t,n,r,a,o){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY),null==o&&(o=0);var s=e.shape[0];return n=Math.min(n,s),oe(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '".concat(r,"'")})),oe(2===e.rank,(function(){return"boxes must be a 2D tensor, but was of rank '".concat(e.rank,"'")})),oe(4===e.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was ".concat(e.shape[1])})),oe(1===t.rank,(function(){return"scores must be a 1D tensor"})),oe(t.shape[0]===s,(function(){return"scores has incompatible shape with boxes. Expected ".concat(s,", ")+"but was ".concat(t.shape[0])})),oe(0<=o&&o<=1,(function(){return"softNmsSigma must be in [0, 1], but was '".concat(o,"'")})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:o}}var Qs=sn({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var o=rn(e,"boxes","nonMaxSuppression","float32"),s=rn(t,"scores","nonMaxSuppression","float32"),i=Zs(o,s,n,r,a),u={maxOutputSize:n=i.maxOutputSize,iouThreshold:r=i.iouThreshold,scoreThreshold:a=i.scoreThreshold};return Jt.runKernel("NonMaxSuppressionV3",{boxes:o,scores:s},u)}});function Ys(e,t,n){var r=function(e,t,n){return function(e,t,n){for(var r=0,a=e.length,o=0,s=!1;r>>1)]);i>0?r=o+1:(a=o,s=!i)}return s?r:-r-1}(e,t,n||Xs)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function Xs(e,t){return e>t?1:ea&&p.push({score:t[d],boxIndex:d,suppressBeginIndex:0});p.sort(ti);for(var h=o>0?-.5/o:0,f=[],m=[];f.length0;){var y=p.pop(),g=y.score,v=y.boxIndex,b=y.suppressBeginIndex;if(g=b;--N){var w=$s(e,v,f[N]);if(w>=r){x=!0;break}if(y.score=y.score*ei(r,h,w),y.score<=a)break}y.suppressBeginIndex=f.length,x||(y.score===g?(f.push(v),m.push(y.score)):y.score>a&&Ys(p,y,ti))}var k=f.length,T=n-k;i&&T>0&&(f.push.apply(f,l([],c(new Array(T).fill(0)),!1)),m.push.apply(m,l([],c(new Array(T).fill(0)),!1)));var S={selectedIndices:f};return s&&(S.selectedScores=m),u&&(S.validOutputs=k),S}function $s(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),o=Math.min(r[0],r[2]),s=Math.min(r[1],r[3]),i=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),p=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),l=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),h=(i-o)*(u-s),f=(l-p)*(d-c);if(h<=0||f<=0)return 0;var m=Math.max(o,p),y=Math.max(s,c),g=Math.min(i,l),v=Math.min(u,d),b=Math.max(g-m,0)*Math.max(v-y,0);return b/(h+f-b)}function ei(e,t,n){var r=Math.exp(t*n*n);return n<=e?r:0}function ti(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}var ni=sn({nonMaxSuppressionWithScore_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=0);var s=rn(e,"boxes","nonMaxSuppression"),i=rn(t,"scores","nonMaxSuppression"),u=Zs(s,i,n,r,a,o),p={boxes:s,scores:i},c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:o=u.softNmsSigma},l=Jt.runKernel("NonMaxSuppressionV5",p,c);return{selectedIndices:l[0],selectedScores:l[1]}}}),ri=sn({nonMaxSuppressionPadded_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=!1);var s=rn(e,"boxes","nonMaxSuppression"),i=rn(t,"scores","nonMaxSuppression"),u=Zs(s,i,n,r,a,null),p={boxes:s,scores:i},c={maxOutputSize:u.maxOutputSize,iouThreshold:u.iouThreshold,scoreThreshold:u.scoreThreshold,padToMaxOutputSize:o},l=Jt.runKernel("NonMaxSuppressionV4",p,c);return{selectedIndices:l[0],validOutputs:l[1]}}}),ai=sn({resizeBilinear_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=rn(e,"images","resizeBilinear");oe(3===a.rank||4===a.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),oe(2===t.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+"".concat(t,".")})),oe(!1===r||!1===n,(function(){return"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=An(a,[1,a.shape[0],a.shape[1],a.shape[2]])),c(t,0);var i={images:o},u={alignCorners:n,halfPixelCenters:r,size:t},p=Jt.runKernel("ResizeBilinear",i,u);return s?An(p,[p.shape[1],p.shape[2],p.shape[3]]):p}}),oi=sn({resizeNearestNeighbor_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=rn(e,"images","resizeNearestNeighbor");oe(3===a.rank||4===a.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),oe(2===t.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+"".concat(t,".")})),oe("float32"===a.dtype||"int32"===a.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"})),oe(!1===r||!1===n,(function(){return"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=An(a,[1,a.shape[0],a.shape[1],a.shape[2]])),c(t,0);var i={images:o},u={alignCorners:n,halfPixelCenters:r,size:t},p=Jt.runKernel("ResizeNearestNeighbor",i,u);return s?An(p,[p.shape[1],p.shape[2],p.shape[3]]):p}}),si=sn({threshold_:function(e,t,n,r){var a;void 0===t&&(t="binary"),void 0===n&&(n=!1),void 0===r&&(r=.5);var o,s,i,u,p=rn(e,"image","threshold"),l=p.shape[0]*p.shape[1],d=Vn(ls([r]),255);if(oe(3===p.rank,(function(){return"Error in threshold: image must be rank 3,"+"but got rank ".concat(p.rank,".")})),oe(3===p.shape[2]||1===p.shape[2],(function(){return"Error in threshold: image color channel must be equal to 3 or 1"+"but got ".concat(p.shape[2],".")})),oe("int32"===p.dtype||"float32"===p.dtype,(function(){return"Error in dtype: image dtype must be int32 or float32,"+"but got dtype ".concat(p.dtype,".")})),oe("otsu"===t||"binary"===t,(function(){return"Method must be binary or otsu, but was ".concat(t)})),3===p.shape[2]){o=(a=c(ns(p,[1,1,1],-1),3))[0],s=a[1],i=a[2];var h=Vn(o,.2989),f=Vn(s,.587),m=Vn(i,.114);u=ln(ln(h,f),m)}else u=e;"otsu"===t&&(d=function(e,t){for(var n,r,a,o,s,i,u=ls([-1]),p=ls([0]),c=ls([0]),l=0;l=2,(function(){return"bandPart(): Rank must be at least 2, got ".concat(r.rank,".")}));var a,o,s=r.shape,i=c(r.shape.slice(-2),2),u=i[0],p=i[1];"number"==typeof t?(oe(t%1==0,(function(){return"bandPart(): numLower must be an integer, got ".concat(t,".")})),oe(t<=u,(function(){return"bandPart(): numLower (".concat(t,")")+" must not be greater than the number of rows (".concat(u,").")})),a=rn(t<0?u:t,"numLower","bandPart")):(oe("int32"===t.dtype,(function(){return"bandPart(): numLower's dtype must be an int32."})),a=_r(sa(t,0),u,Aa(t,u))),"number"==typeof n?(oe(n%1==0,(function(){return"bandPart(): numUpper must be an integer, got ".concat(n,".")})),oe(n<=p,(function(){return"bandPart(): numUpper (".concat(n,")")+" must not be greater than the number of columns (".concat(p,").")})),o=rn(n<0?p:n,"numUpper","bandPart")):(oe("int32"===n.dtype,(function(){return"bandPart(): numUpper's dtype must be an int32."})),o=_r(sa(n,0),p,Aa(n,p)));var l=An(Ao(0,u,1,"int32"),[-1,1]),d=Ao(0,p,1,"int32"),h=ma(l,d),f=va(ia(h,a),ea(h,da(o))),m=Oa([u,p],r.dtype);return An(ss(bs(An(r,[-1,u,p])).map((function(e){return _r(f,e,m)}))),s)}}),pi=sn({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,oe(null!=e&&e.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=e[0].shape[0],r=function(t){oe(e[t].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+"(".concat(e[t].shape[0]," vs. ").concat(n,")")}))},a=1;a0)for(var n=0;n=r?r:n,p=function(e){var t,u=o,p=i,l=a;t=c(Jt.tidy((function(){var t=Pn(o,[e,e],[n-e,1]),u=Ur(t),p=Pn(o,[e,e],[1,1]),c=_r($r(p,0),ds([[-1]]),ds([[1]])),l=ma(p,Vn(c,u)),d=kr(t,l);i=1===d.shape[0]?Fn(s):Rn([s,Pn(d,[1,0],[d.shape[0]-1,d.shape[1]])],0);var h=da(kr(zn(c,l),u)),f=Pn(o,[e,0],[n-e,r]),m=Vn(h,i),y=Ns(i);if(0===e)o=ma(f,zn(m,zn(y,f)));else{var g=ma(f,zn(m,zn(y,f)));o=Rn([Pn(o,[0,0],[e,r]),g],0)}var v=Ns(m),b=Pn(a,[0,e],[n,a.shape[1]-e]);if(0===e)a=ma(b,zn(zn(b,i),v));else{var x=ma(b,zn(zn(b,i),v));a=Rn([Pn(a,[0,0],[n,e]),x],1)}return[i,o,a]})),3),i=t[0],o=t[1],a=t[2],Ht([u,p,l]).forEach((function(e){return e.dispose()}))},l=0;lr&&(a=Pn(a,[0,0],[n,r]),o=Pn(o,[0,0],[r,r])),[a,o]}))}var li,di=sn({qr_:function(e,t){if(void 0===t&&(t=!1),oe(e.rank>=2,(function(){return"qr() requires input tensor to have a rank >= 2, but got rank ".concat(e.rank)})),2===e.rank)return ci(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce((function(e,t){return e*t})),r=bs(An(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],o=[];return r.forEach((function(e){var n=c(ci(e,t),2),r=n[0],s=n[1];a.push(r),o.push(s)})),[An(ss(a,0),e.shape),An(ss(o,0),e.shape)]}});!function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"}(li||(li={}));var hi=sn({computeWeightedLoss_:function(e,t,n){void 0===n&&(n=li.SUM_BY_NONZERO_WEIGHTS);var r=rn(e,"losses","computeWeightedLoss"),a=null;null!=t&&(a=rn(t,"weights","computeWeightedLoss"));var o=null==a?r:Vn(r,a);if(n===li.NONE)return o;if(n===li.SUM)return jr(o);if(n===li.MEAN){if(null==a)return Ia(o);var s=r.size/a.size,i=kr(jr(o),jr(a));return s>1?kr(i,Pr(s)):i}if(n===li.SUM_BY_NONZERO_WEIGHTS){if(null==a)return kr(jr(o),Pr(r.size));var u=Vn(a,Da(r.shape)),p=wn(jr(Va(u,Pr(0))),"float32");return kr(jr(o),p)}throw Error("Unknown reduction: ".concat(n))}}),fi=sn({absoluteDifference_:function(e,t,n,r){void 0===r&&(r=li.SUM_BY_NONZERO_WEIGHTS);var a=rn(e,"labels","absoluteDifference"),o=rn(t,"predictions","absoluteDifference"),s=null;null!=n&&(s=rn(n,"weights","absoluteDifference")),se(a.shape,o.shape,"Error in absoluteDifference: ");var i=un(ma(a,o));return hi(i,s,r)}}),mi=sn({cosineDistance_:function(e,t,n,r,a){void 0===a&&(a=li.SUM_BY_NONZERO_WEIGHTS);var o=rn(e,"labels","cosineDistance"),s=rn(t,"predictions","cosineDistance"),i=null;null!=r&&(i=rn(r,"weights","cosineDistance")),se(o.shape,s.shape,"Error in cosineDistance: ");var u=Pr(1),p=ma(u,jr(Vn(o,s),n,!0));return hi(p,i,a)}}),yi=sn({hingeLoss_:function(e,t,n,r){void 0===r&&(r=li.SUM_BY_NONZERO_WEIGHTS);var a=rn(e,"labels","hingeLoss"),o=rn(t,"predictions","hingeLoss"),s=null;null!=n&&(s=rn(n,"weights","hingeLoss")),se(a.shape,o.shape,"Error in hingeLoss: ");var i=Pr(1);a=ma(Vn(Pr(2),a),i);var u=Fo(ma(i,Vn(a,o)));return hi(u,s,r)}}),gi=sn({huberLoss_:function(e,t,n,r,a){void 0===r&&(r=1),void 0===a&&(a=li.SUM_BY_NONZERO_WEIGHTS);var o=rn(e,"labels","huberLoss"),s=rn(t,"predictions","huberLoss"),i=null;null!=n&&(i=rn(n,"weights","huberLoss")),se(o.shape,s.shape,"Error in huberLoss: ");var u=Pr(r),p=un(ma(s,o)),c=Aa(p,u),l=ma(p,c),d=ln(Vn(Pr(.5),Kr(c)),Vn(u,l));return hi(d,i,a)}}),vi=sn({logLoss_:function(e,t,n,r,a){void 0===r&&(r=1e-7),void 0===a&&(a=li.SUM_BY_NONZERO_WEIGHTS);var o=rn(e,"labels","logLoss"),s=rn(t,"predictions","logLoss"),i=null;null!=n&&(i=rn(n,"weights","logLoss")),se(o.shape,s.shape,"Error in logLoss: ");var u=Pr(1),p=Pr(r),c=da(Vn(o,pa(ln(s,p)))),l=Vn(ma(u,o),pa(ln(ma(u,s),p))),d=ma(c,l);return hi(d,i,a)}}),bi=sn({meanSquaredError_:function(e,t,n,r){void 0===r&&(r=li.SUM_BY_NONZERO_WEIGHTS);var a=rn(e,"labels","meanSquaredError"),o=rn(t,"predictions","meanSquaredError"),s=null;null!=n&&(s=rn(n,"weights","meanSquaredError")),se(a.shape,o.shape,"Error in meanSquaredError: ");var i=as(a,o);return hi(i,s,r)}}),xi=sn({sigmoidCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=li.SUM_BY_NONZERO_WEIGHTS);var o=rn(e,"multiClassLabels","sigmoidCrossEntropy"),s=rn(t,"logits","sigmoidCrossEntropy"),i=null;if(null!=n&&(i=rn(n,"weights","sigmoidCrossEntropy")),se(o.shape,s.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=Pr(r),p=Pr(1),c=Pr(.5);o=ln(Vn(o,ma(p,u)),Vn(c,u))}var l=function(e,t){var n=rn(e,"labels","sigmoidCrossEntropyWithLogits"),r=rn(t,"logits","sigmoidCrossEntropyWithLogits");se(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=Fo(r),o=Vn(r,n),s=ca(Wr(da(un(r))));return ln(ma(a,o),s)}(o,s);return hi(l,i,a)}}),Ni=sn({softmaxCrossEntropy_:function(e,t,n,r,a){void 0===r&&(r=0),void 0===a&&(a=li.SUM_BY_NONZERO_WEIGHTS);var o=rn(e,"onehotLabels","softmaxCrossEntropy"),s=rn(t,"logits","softmaxCrossEntropy"),i=null;if(null!=n&&(i=rn(n,"weights","softmaxCrossEntropy")),se(o.shape,s.shape,"Error in softmaxCrossEntropy: "),r>0){var u=Pr(r),p=Pr(1),l=Pr(o.shape[1]);o=ln(Vn(o,ma(p,u)),kr(u,l))}var d=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+"supported. Labels / logits was rank ".concat(t.rank," ")+"and dim was ".concat(n));var r=la((function(e,t,r){var a=ga(t,[n],!0),o=ma(wn(t,"float32"),a);r([e,o]);var s=da(Vn(o,e));return{value:jr(s,[n]),gradFunc:function(e,t){var r=c(t,2),a=r[0],o=r[1],s=Fr(e.shape,[n]);return[Vn(An(e,s),ma(wn(a,"float32"),Wr(o))),Vn(An(e,s),ma(Wr(o),wn(a,"float32")))]}}}));return r(e,t)}(o,s);return hi(d,i,a)}}),wi=sn({sparseFillEmptyRows_:function(e,t,n,r){var a=rn(e,"indices","sparseFillEmptyRows","int32"),o=rn(t,"values","sparseFillEmptyRows"),s=rn(n,"denseShape","sparseFillEmptyRows","int32"),i=rn(r,"defaultValue","sparseFillEmptyRows",o.dtype);if(2!==a.rank)throw new Error("Indices should be Tensor2D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Values should be Tensor1D but received shape ".concat(o.shape));if(1!==s.rank)throw new Error("Dense shape should be Tensor1D but received shape ".concat(s.shape));if(0!==i.rank)throw new Error("Default value should be a scalar but received shape ".concat(i.shape));var u={indices:a,values:o,denseShape:s,defaultValue:i},p=Jt.runKernel("SparseFillEmptyRows",u);return{outputIndices:p[0],outputValues:p[1],emptyRowIndicator:p[2],reverseIndexMap:p[3]}}}),ki=sn({sparseReshape_:function(e,t,n){var r=rn(e,"inputIndices","sparseReshape","int32"),a=rn(t,"inputShape","sparseReshape","int32"),o=rn(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error("Input indices should be Tensor2D but received shape\n ".concat(r.shape));if(1!==a.rank)throw new Error("Input shape should be Tensor1D but received shape ".concat(a.shape));if(1!==o.rank)throw new Error("New shape should be Tensor1D but received shape ".concat(o.shape));var s={inputIndices:r,inputShape:a,newShape:o},i=Jt.runKernel("SparseReshape",s);return{outputIndices:i[0],outputShape:i[1]}}}),Ti=sn({sparseSegmentMean_:function(e,t,n){var r=rn(e,"data","sparseSegmentMean"),a=rn(t,"indices","sparseSegmentMean","int32"),o=rn(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var s={data:r,indices:a,segmentIds:o};return Jt.runKernel("SparseSegmentMean",s)}}),Si=sn({sparseSegmentSum_:function(e,t,n){var r=rn(e,"data","sparseSegmentSum"),a=rn(t,"indices","sparseSegmentSum","int32"),o=rn(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var s={data:r,indices:a,segmentIds:o};return Jt.runKernel("SparseSegmentSum",s)}}),_i=sn({stringNGrams_:function(e,t,n,r,a,o,s,i){var u=rn(e,"data","stringNGrams","string");if("string"!==u.dtype)throw new Error("Data must be of datatype string");if(1!==u.shape.length)throw new Error("Data must be a vector, saw: ".concat(u.shape));var p=rn(t,"dataSplits","stringNGrams");if("int32"!==p.dtype)throw new Error("Data splits must be of datatype int32");var c={separator:n,nGramWidths:r,leftPad:a,rightPad:o,padWidth:s,preserveShortSequences:i},l={data:u,dataSplits:p},d=Jt.runKernel("StringNGrams",l,c);return{nGrams:d[0],nGramsSplits:d[1]}}}),Ei={__proto__:null,OP_SCOPE_SUFFIX:on,abs:un,acos:pn,acosh:cn,add:ln,addN:dn,all:hn,any:fn,argMax:mn,argMin:yn,asin:gn,asinh:vn,atan:bn,atan2:xn,atanh:Nn,avgPool:Mn,avgPool3d:Cn,basicLSTMCell:Kn,batchNorm:qn,batchNorm2d:Un,batchNorm3d:Gn,batchNorm4d:Wn,batchToSpaceND:jn,bincount:Hn,bitwiseAnd:Zn,booleanMaskAsync:function(e,t,n){return i(this,void 0,void 0,(function(){var r,a,o,s,i,p,c,l,d,h,f,m,y;return u(this,(function(u){switch(u.label){case 0:for(r=rn(e,"tensor","boolMask"),a=rn(t,"mask","boolMask","bool"),o=null==n?0:n,s=a.rank,i=r.shape,oe(s>0,(function(){return"mask cannot be scalar"})),se(i.slice(o,o+s),a.shape,"mask's shape must match the first K dimensions of tensor's shape,"),p=1,c=o;c1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+"but got ".concat(r.rank)})),oe(r.rank-1===a.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+"".concat(r.rank," and targets rank ").concat(a.rank)})),se(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),o=r.shape[r.shape.length-1],oe(n>0&&n<=o,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+"dimension (".concat(o,"), but got ").concat(n)})),[4,r.data()];case 1:return s=u.sent(),[4,a.data()];case 2:for(i=u.sent(),p=c([s.length/o,o],2),l=p[0],d=p[1],h=function(e,t){return he("bool",t)}(0,l),f=0;f=0&&o>=0&&a!==o)throw new Error("Incompatible shape during merge: ".concat(e," vs. ").concat(t));n[r]=a>=0?a:o}return n}var Mi=function(){function e(e,n,r,a,o,s,i){this.name=e,this.dtype=n,this.maxSize=r,this.elementShape=a,this.identicalElementShapes=o,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=t.scalar(0),t.keep(this.idTensor)}return Object.defineProperty(e.prototype,"id",{get:function(){return this.idTensor.id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"closed",{get:function(){return this.closed_},enumerable:!1,configurable:!0}),e.prototype.clearAndClose=function(e){this.tensors.forEach((function(t){null!=e&&e.has(t.tensor.id)||t.tensor.dispose()})),this.tensors=[],this.closed_=!0,this.idTensor.dispose()},e.prototype.size=function(){return this.tensors.length},e.prototype.read=function(e){if(this.closed_)throw new Error("TensorArray ".concat(this.name," has already been closed."));if(e<0||e>=this.size())throw new Error("Tried to read from index ".concat(e,", but array size is: ").concat(this.size()));var t=this.tensors[e];if(t.cleared)throw new Error("TensorArray ".concat(this.name,": Could not read index ").concat(e," twice because it was cleared after a previous read ")+"(perhaps try setting clear_after_read = false?).");return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor},e.prototype.readMany=function(e){var t=this;return e.map((function(e){return t.read(e)}))},e.prototype.write=function(e,n){if(this.closed_)throw new Error("TensorArray ".concat(this.name," has already been closed."));if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error("Tried to write to index ".concat(e,", but array is not resizeable and size is: ").concat(this.maxSize));var r=this.tensors[e]||{};if(n.dtype!==this.dtype)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,",\n because the value dtype is ").concat(n.dtype,", but TensorArray dtype is ").concat(this.dtype,"."));if(0!==this.size()||null!=this.elementShape&&0!==this.elementShape.length||(this.elementShape=n.shape),Ii(this.elementShape,n.shape,"TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,".")),r.read)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,", because it has already been read."));if(r.written)throw new Error("TensorArray ".concat(this.name,": Could not write to TensorArray index ").concat(e,", because it has already been written."));r.tensor=n,t.keep(n),r.written=!0,this.tensors[e]=r},e.prototype.writeMany=function(e,t){var n=this;if(e.length!==t.length)throw new Error("TensorArray ".concat(this.name,": could not write multiple tensors,")+"because the index size: ".concat(e.length," is not the same as tensors size: ").concat(t.length,"."));e.forEach((function(e,r){return n.write(e,t[r])}))},e.prototype.gather=function(e,n){if(n&&n!==this.dtype)throw new Error("TensorArray dtype is ".concat(this.dtype," but gather requested dtype ").concat(n));if(e)e=e.slice(0,this.size());else{e=[];for(var r=0;r=this.maxSize)throw new Error("Max index must be < array size (".concat(r," vs. ").concat(this.maxSize,")"));this.writeMany(e,t.unstack(n,0))},e.prototype.split=function(e,n){var r=this;if(n.dtype!==this.dtype)throw new Error("TensorArray dtype is ".concat(this.dtype," but tensor has dtype ").concat(n.dtype));var a=0,o=e.map((function(e){return a+=e}));if(a!==n.shape[0])throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ".concat(a,", and tensor's shape is: ").concat(n.shape));if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error("TensorArray's size is not equal to the size of lengths (".concat(this.maxSize," vs. ").concat(e.length,"), ")+"and the TensorArray is not marked as dynamically resizeable");var s=0===a?0:n.size/a,i=[];t.tidy((function(){n=t.reshape(n,[1,a,s]);for(var u=0;uthis.maxNumElements)throw new Error("TensorListResize input size ".concat(t," is greater maxNumElement ").concat(this.maxNumElements,"."));var n=new e([],this.elementShape,this.elementDtype,this.maxNumElements);n.tensors.length=t;for(var r=0;rthis.tensors.length)throw new Error("Trying to access element ".concat(e," in a list with ").concat(this.tensors.length," elements."));if(null==this.tensors[e])throw new Error("element at index ".concat(e," is null."));Ii(this.tensors[e].shape,n,"TensorList shape mismatch: ");var a=Di(this.elementShape,this.tensors,n);return t.reshape(this.tensors[e],a)},e.prototype.setItem=function(e,n){if(n.dtype!==this.elementDtype)throw new Error("Invalid data types; op elements ".concat(n.dtype,", but list elements ").concat(this.elementDtype));if(e<0||-1!==this.maxNumElements&&e>=this.maxNumElements)throw new Error("Trying to set element ".concat(e," in a list with max ").concat(this.maxNumElements," elements."));Ii(this.elementShape,n.shape,"TensorList shape mismatch: "),t.keep(n),null!=this.tensors[e]&&(this.tensors[e].kept=!1),this.tensors[e]=n},e.prototype.gather=function(e,n,r){var a=this;if(n!==this.elementDtype)throw new Error("Invalid data types; op elements ".concat(n,", but list elements ").concat(this.elementDtype));Ii(this.elementShape,r,"TensorList shape mismatch: "),e=e.slice(0,this.size());var o=Di(this.elementShape,this.tensors,r);return 0===e.length?t.tensor([],[0].concat(o)):t.tidy((function(){var n=e.map((function(e){return t.reshape(a.tensors[e],o)}));return t.stack(n,0)}))},e.prototype.concat=function(e,n){var r=this;if(e&&e!==this.elementDtype)throw new Error("TensorList dtype is ".concat(this.elementDtype," but concat requested dtype ").concat(e));Ii(this.elementShape,n,"TensorList shape mismatch: ");var a=Di(this.elementShape,this.tensors,n);return 0===this.size()?t.tensor([],[0].concat(a)):t.tidy((function(){var e=r.tensors.map((function(e){return t.reshape(e,a)}));return t.concat(e,0)}))},e}();function Fi(e,t,n){var r=c(f("fusedOps",e,t,n),2),a=r[0],o=r[1],s="biasadd"===a,i=!s,u="prelu"===o,p="fusedbatchnorm"===a,l=f("numArgs",e,t,n);if(s){if(u&&2!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!u&&s&&1!==l)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(p)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported");var d=f("strides",e,t,n),h=x(e,t,n),m=f("dataFormat",e,t,n).toUpperCase(),y=f("dilations",e,t,n),g=c(f("args",e,t,n),2),v=g[0],b=g[1];return i&&(b=v,v=void 0),{stride:d,pad:h,dataFormat:m,dilations:y,biasArg:v,preluArg:b,activationFunc:o,leakyreluAlpha:f("leakyreluAlpha",e,t,n)}}function Ri(e,t,n){return{boxes:f("boxes",e,t,n),scores:f("scores",e,t,n),maxOutputSize:f("maxOutputSize",e,t,n),iouThreshold:f("iouThreshold",e,t,n),scoreThreshold:f("scoreThreshold",e,t,n),softNmsSigma:f("softNmsSigma",e,t,n)}}var zi=function(){function e(e,n){this.keyDType=e,this.valueDType=n,this.handle=t.scalar(0),this.tensorMap=new Map,t.keep(this.handle)}return Object.defineProperty(e.prototype,"id",{get:function(){return this.handle.id},enumerable:!1,configurable:!0}),e.prototype.clearAndClose=function(){this.tensorMap.forEach((function(e){return e.dispose()})),this.tensorMap.clear(),this.handle.dispose()},e.prototype.size=function(){return this.tensorMap.size},e.prototype.tensorSize=function(){return Pr(this.size(),"int32")},e.prototype.import=function(e,n){return i(this,void 0,void 0,(function(){var r,a=this;return u(this,(function(o){switch(o.label){case 0:return this.checkKeyAndValueTensor(e,n),[4,e.data()];case 1:return r=o.sent(),this.tensorMap.forEach((function(e){return e.dispose()})),this.tensorMap.clear(),[2,t.tidy((function(){var e=t.unstack(n),o=r.length,s=e.length;t.util.assert(o===s,(function(){return"The number of elements doesn't match, keys has "+"".concat(o," elements, the values has ").concat(s," ")+"elements."}));for(var i=0;i=a)throw new Error("Max index must be < array size (".concat(o," vs. ").concat(a,")"));var s=new Ci([],r,e.dtype,a),i=t.unstack(e,0);return n.forEach((function(e,t){s.setItem(e,i[t])})),s}(H,W,se,J),r.addTensorList(ue),[2,[ue.idTensor]];case 28:return se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),Z="TensorListReserve"===e.op?"numElements":"maxNumElements",J=f(Z,e,n,r),Q="TensorListReserve"===e.op?-1:J,ue=function(e,t,n,r){return new Ci([],e,t,r)}(se,ee,0,Q),r.addTensorList(ue),[2,[ue.idTensor]];case 29:return Y=f("tensorListId",e,n,r),X=f("indices",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),[2,[(ue=r.getTensorList(Y.id)).gather(X,ee,se)]];case 30:return pe=f("tensorListId",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),J=f("numElements",e,n,r),[2,[(ue=r.getTensorList(pe.id)).stack(se,ee,J)]];case 31:return $=f("tensor",e,n,r),se=f("elementShape",e,n,r),ee=f("elementDType",e,n,r),ue=function(e,n,r){var a=e.dtype;if(e.shape.length<1)throw new Error("Tensor must be at least a vector, but saw shape: ".concat(e.shape));if(e.dtype!==r)throw new Error("Invalid data types; op elements ".concat(e.dtype,", but list elements ").concat(r));Ii(e.shape.slice(1),n,"TensorList shape mismatch: ");var o=t.unstack(e);return new Ci(o,n,a)}($,se,ee),r.addTensorList(ue),[2,[ue.idTensor]];case 32:return te=f("tensorListId",e,n,r),ue=r.getTensorList(te.id),ne=f("dtype",e,n,r),se=f("elementShape",e,n,r),[2,[ue.concat(ne,se)]];case 33:return pe=f("tensorListId",e,n,r),re=f("tensor",e,n,r),(ue=r.getTensorList(pe.id)).pushBack(re),[2,[ue.idTensor]];case 34:return pe=f("tensorListId",e,n,r),se=f("elementShape",e,n,r),ae=f("elementDType",e,n,r),[2,[(ue=r.getTensorList(pe.id)).popBack(se,ae)]];case 35:return oe=f("tensor",e,n,r),se=f("elementShape",e,n,r),ie=f("lengths",e,n,r),ue=function(e,n,r){var a=0,o=n.map((function(e){return a+=e}));if(a!==e.shape[0])throw new Error("Expected sum of lengths to be equal to\n tensor.shape[0], but sum of lengths is\n ".concat(a,", and tensor's shape is: ").concat(e.shape));for(var s=Ai(e.shape.slice(1),r),i=0===a?0:e.size/a,u=t.tidy((function(){var r=[];e=t.reshape(e,[1,a,i]);for(var u=0;u1))throw new Error("Cannot exit frame, the context is empty");this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift()},e.prototype.nextIteration=function(){if(!(this.contexts&&this.contexts.length>0))throw new Error("Cannot increase frame iteration, the context is empty");this.contexts=this.contexts.slice(),this.lastId++;var e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))},e.prototype.getWeight=function(e){return this.weightMap[e]},e.prototype.addTensorArray=function(e){this.tensorArrayMap[e.id]=e},e.prototype.getTensorArray=function(e){return this.tensorArrayMap[e]},e.prototype.addTensorList=function(e){this.tensorListMap[e.id]=e},e.prototype.getTensorList=function(e){return this.tensorListMap[e]},e.prototype.dispose=function(e){for(var t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(var t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)},e}();function Pi(e,t,n,r){var a=new Set,o=[],s=null,i=null,u=new Set,p=new Set(Object.keys(e).map((function(e){return b(e)[0]})));r=r||[];for(var d=new Set(r.map((function(e){return b(e.name)[0]}))),h=l([],c(t),!1);h.length>0;){var f=h.pop();(Ui(f)||Gi(f)||Wi(f))&&null==s&&(i=(s=f).children.map((function(e){return e.name})).filter((function(e){return a.has(e)}))),a.add(f.name),null==n[f.name]&&(p.has(f.name)||d.has(f.name)||(0!==f.inputs.length?f.inputs.forEach((function(e){u.has(e.name)||(u.add(e.name),h.push(e))})):o.push(f.name)))}return{inputs:e,outputs:t,usedNodes:a,missingInputs:o,dynamicNode:s,syncInputs:i}}var Bi=function(e){function t(t){return e.call(this,"NodesExecutionOrderError: ".concat(t))||this}return s(t,e),t}(Error),Ki=new Set(["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"]),ji=new Set(["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"]),qi=new Set(["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"]);function Ui(e){return Ki.has(e.op)}function Gi(e){return ji.has(e.op)}function Wi(e){return qi.has(e.op)}var Hi=function(){function e(t,n){var r=this;this.graph=t,this.parent=n,this.compiledMap=new Map,this.parseNodeNameCache=new Map,this._weightMap={},this.SEPARATOR=",",this._functions={},this._functionExecutorMap={},this.keepIntermediateTensors=!1,this._outputs=t.outputs,this._inputs=t.inputs,this._initNodes=t.initNodes,this._signature=t.signature,this._functions=t.functions,null!=t.functions&&Object.keys(t.functions).forEach((function(n){r._functionExecutorMap[n]=new e(t.functions[n],r)}))}return Object.defineProperty(e.prototype,"weightIds",{get:function(){return this.parent?this.parent.weightIds:this._weightIds},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"functionExecutorMap",{get:function(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"weightMap",{get:function(){return this.parent?this.parent.weightMap:this._weightMap},set:function(e){var t=Object.keys(e).map((function(t){return e[t].map((function(e){return e.id}))}));this._weightIds=[].concat.apply([],l([],c(t),!1)),this._weightMap=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"resourceManager",{set:function(e){this._resourceManager=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputs",{get:function(){return this._inputs.map((function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return this._outputs.map((function(e){return{name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputNodes",{get:function(){return this._inputs.map((function(e){return e.signatureKey||e.name}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputNodes",{get:function(){return this._outputs.map((function(e){var t=e.signatureKey||e.name;return e.defaultOutput?"".concat(t,":").concat(e.defaultOutput):t}))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"functions",{get:function(){var e=this;return Object.keys(this._functions).reduce((function(t,n){return t[n]=e._functions[n].signature,t}),{})},enumerable:!1,configurable:!0}),e.prototype.getCompilationKey=function(e,t){var n=e.map((function(e){return e.name})).sort(),r=t.map((function(e){return e.name})).sort();return n.join(this.SEPARATOR)+"--"+r.join(this.SEPARATOR)},e.prototype.compile=function(e,t){var n=Pi(e,t,this.weightMap,this._initNodes),r=n.missingInputs,a=n.dynamicNode,o=n.syncInputs;if(null!=a)throw new Error("This execution contains the node '".concat(a.name,"', which has ")+"the dynamic op '".concat(a.op,"'. Please use ")+"model.executeAsync() instead. Alternatively, to avoid the "+"dynamic ops, specify the inputs [".concat(o,"]"));if(r.length>0){var s=t.map((function(e){return e.name})),i=Object.keys(e);throw new Error("Cannot compute the outputs [".concat(s,"] from the provided inputs ")+"[".concat(i,"]. Missing the following inputs: [").concat(r,"]"))}var u=function(e,t){var n,r,a,o,s,i,u=t.usedNodes,d=t.inputs,h=Object.keys(d).map((function(e){return b(e)[0]})).map((function(t){return e.nodes[t]})),f=e.initNodes||[],m=function(e){return u.has("string"==typeof e?e:e.name)};function y(e){return l([],c(new Map(e.map((function(e){return[e.name,e]}))).values()),!1)}var g=y(l(l(l([],c(h),!1),c(e.weights),!1),c(f),!1)).filter(m),v=y(l(l([],c(g),!1),c(Object.values(e.nodes)),!1)).filter(m),x=new Map(v.map((function(e){return[e.name,e]}))),N={};try{for(var w=p(v),k=w.next();!k.done;k=w.next()){N[(O=k.value).name]=N[O.name]||0;try{for(var T=(a=void 0,p(O.children)),S=T.next();!S.done;S=T.next())m(M=S.value)||(N[M.name]=Number.POSITIVE_INFINITY),N[M.name]=(N[M.name]||0)+1}catch(e){a={error:e}}finally{try{S&&!S.done&&(o=T.return)&&o.call(T)}finally{if(a)throw a.error}}}}catch(e){n={error:e}}finally{try{k&&!k.done&&(r=w.return)&&r.call(w)}finally{if(n)throw n.error}}for(var _=Object.entries(N).filter((function(e){return 0===c(e,2)[1]})).map((function(e){return c(e,1)[0]})),E=l([],c(_),!1);_.length>0;){var I=_.pop(),O=x.get(I);try{for(var D=(s=void 0,p(O.children.filter(m))),A=D.next();!A.done;A=D.next()){var M;0==--N[(M=A.value).name]&&(E.push(M.name),_.push(M.name))}}catch(e){s={error:e}}finally{try{A&&!A.done&&(i=D.return)&&i.call(D)}finally{if(s)throw s.error}}}var C=function(e,t){for(var n,r,a=new Map(e.map((function(e){return[e.name,e]}))),o=t.map((function(e){return e.name})),s=new Set(o);o.length>0;){var i=o.pop(),u=a.get(i);try{for(var c=(n=void 0,p(u.children)),l=c.next();!l.done;l=c.next()){var d=l.value;a.has(d.name)&&!s.has(d.name)&&(s.add(d.name),o.push(d.name))}}catch(e){n={error:e}}finally{try{l&&!l.done&&(r=c.return)&&r.call(c)}finally{if(n)throw n.error}}}return e.filter((function(e){return s.has(e.name)}))}(E.map((function(e){return x.get(e)})),g);return function(e,t){var n,r,a,o,s,i,u=new Map(e.map((function(e,t){return[e.name,t]}))),c=new Set(t.map((function(e){return e.name}))),l=function(e){return c.has("string"==typeof e?e:e.name)},d=new Set(e.map((function(e){return e.name}))),h=function(e){return d.has("string"==typeof e?e:e.name)};try{for(var f=p(e),m=f.next();!m.done;m=f.next()){var y=m.value;try{for(var g=(a=void 0,p(y.children.filter(h))),v=g.next();!v.done;v=g.next()){var b=v.value;if(!u.has(b.name))throw new Bi("Child ".concat(b.name," of node ").concat(y.name," is unreachable."));if(u.get(y.name)>u.get(b.name))throw new Bi("Node ".concat(y.name," is scheduled to run after its child ").concat(b.name,"."))}}catch(e){a={error:e}}finally{try{v&&!v.done&&(o=g.return)&&o.call(g)}finally{if(a)throw a.error}}if(!l(y))try{for(var x=(s=void 0,p(y.inputs)),N=x.next();!N.done;N=x.next()){var w=N.value;if(!u.has(w.name))throw new Bi("Input ".concat(w.name," of node ").concat(y.name," is unreachable."));if(u.get(w.name)>u.get(y.name))throw new Bi("Node ".concat(y.name," is scheduled to run before its input ").concat(w.name,"."))}}catch(e){s={error:e}}finally{try{N&&!N.done&&(i=x.return)&&i.call(x)}finally{if(s)throw s.error}}}}catch(e){n={error:e}}finally{try{m&&!m.done&&(r=f.return)&&r.call(f)}finally{if(n)throw n.error}}}(C,g),C}(this.graph,n),d=function(e){for(var t=new Map(e.map((function(e,t){return[e.name,t]}))),n=Number.MAX_SAFE_INTEGER,r=e.map((function(e,t){return Ui(e)?n:t})),a=function(e){var n=r[t.get(e.name)];return null==n?-1:n},o=e.map((function(e,t){return e.children.map(a).reduce((function(e,t){return Math.max(e,t)}),r[t])})),s=new Map,i=0;i0?(T=this.processStack(o,v,t,x,k,w,i,N,h),[4,Promise.all(T)]):[3,3];case 2:return u.sent(),[3,1];case 3:if(null!=y||r||console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead."),(S=p.filter((function(e){return!Ui(e)&&!m(e.name,x,t)})).map((function(e){return e.name}))).length>0)throw _="",null!=y&&(_="Alternatively, to avoid the dynamic ops, use model.execute() "+"and specify the inputs [".concat(g,"]")),new Error("Cannot compute the outputs [".concat(S,"] from the provided ")+"inputs [".concat(a,"]. Consider providing the following inputs: ")+"[".concat(f,"]. ").concat(_));return[2,x]}}))}))},e.prototype.processStack=function(e,n,r,a,o,s,i,u,p){for(var l=this,d=[],h=function(){var e,h,y=n.pop();r.currentContext=y.contexts;var v="";if("Enter"===y.node.op&&f("isConstant",y.node,a,r)&&(e=c(g(y.node.name,r),1),v=e[0]),null==a[y.node.name]){var b=Vi(y.node,a,r,m._resourceManager);v||(h=c(g(y.node.name,r),1),v=h[0]);var x=r.currentContext;t.util.isPromise(b)?d.push(b.then((function(e){return a[v]=e,l.keepIntermediateTensors&&(l.clonedTensorsMap[v]=l.cloneTensorList(e)),r.currentContext=x,l.checkTensorForDisposal(v,y.node,a,r,s,i,u),l.processChildNodes(y.node,n,r,a,o,p),e}))):(a[v]=b,m.keepIntermediateTensors&&(m.clonedTensorsMap[v]=m.cloneTensorList(b)),m.checkTensorForDisposal(v,y.node,a,r,s,i,u),m.processChildNodes(y.node,n,r,a,o,p))}else m.processChildNodes(y.node,n,r,a,o,p)},m=this;n.length>0;)h();return d},e.prototype.processChildNodes=function(e,t,n,r,a,o){e.children.forEach((function(e){var s=c(g(e.name,n),1)[0];!a[s]&&o.has(e.name)&&("Merge"===e.op?e.inputNames.some((function(e){return!!m(e,r,n)}))&&(a[s]=!0,t.push({contexts:n.currentContext,node:e})):e.inputNames.every((function(e){return!!m(e,r,n)}))&&(a[s]=!0,t.push({contexts:n.currentContext,node:e})))}))},e.prototype.dispose=function(){var e=this;Object.keys(this.weightMap).forEach((function(t){return e.weightMap[t].forEach((function(e){return e.dispose()}))}))},e.prototype.checkInputShapeAndType=function(e){var n=this;Object.keys(e).forEach((function(r){var a=e[r],o=c(b(r),1)[0],s=n.graph.nodes[o];if(s.attrParams.shape&&s.attrParams.shape.value){var i=s.attrParams.shape.value,u=i.length===a.shape.length&&a.shape.every((function(e,t){return-1===i[t]||i[t]===e}));t.util.assert(u,(function(){return"The shape of dict['".concat(s.name,"'] provided in ")+"model.execute(dict) must be [".concat(i,"], but was ")+"[".concat(a.shape,"]")}))}s.attrParams.dtype&&s.attrParams.dtype.value&&t.util.assert(a.dtype===s.attrParams.dtype.value,(function(){return"The dtype of dict['".concat(s.name,"'] provided in ")+"model.execute(dict) must be "+"".concat(s.attrParams.dtype.value,", but was ").concat(a.dtype)}))}))},e.prototype.mapInputs=function(e){var t,n,r={};for(var a in e){var o=null===(n=null===(t=this._signature)||void 0===t?void 0:t.inputs)||void 0===n?void 0:n[a];null!=o?r[o.name]=e[a]:r[a]=e[a]}return r},e.prototype.checkInputs=function(e){var t=this,n=Object.keys(e).filter((function(e){var n=c(b(e),1)[0];return null==t.graph.nodes[n]}));if(n.length>0)throw new Error("The dict provided in model.execute(dict) has "+"keys: [".concat(n,"] that are not part of graph"))},e.prototype.mapOutputs=function(e){var t=this;return e.map((function(e){var n,r,a=null===(r=null===(n=t._signature)||void 0===n?void 0:n.outputs)||void 0===r?void 0:r[e];return null!=a?a.name:e}),{})},e.prototype.checkOutputs=function(e){var t=this;e.forEach((function(e){var n=c(b(e),1)[0];if(!t.graph.nodes[n])throw new Error("The output '".concat(e,"' is not found in the graph"))}))},e}(),Zi=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.hashTableNameToHandle=e,this.hashTableMap=t}return e.prototype.addHashTable=function(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t},e.prototype.getHashTableHandleByName=function(e){return this.hashTableNameToHandle[e]},e.prototype.getHashTableById=function(e){return this.hashTableMap[e]},e.prototype.dispose=function(){for(var e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(var t in this.hashTableNameToHandle)this.hashTableNameToHandle[t].dispose(),delete this.hashTableNameToHandle[t]},e}(),Qi=function(){function e(e,n,r){void 0===n&&(n={}),void 0===r&&(r=t.io),this.modelUrl=e,this.loadOptions=n,this.version="n/a",this.io=r,null==n&&(this.loadOptions={}),this.resourceManager=new Zi}return Object.defineProperty(e.prototype,"modelVersion",{get:function(){return this.version},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputNodes",{get:function(){return this.executor.inputNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputNodes",{get:function(){return this.executor.outputNodes},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputs",{get:function(){return this.executor.inputs},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"outputs",{get:function(){return this.executor.outputs},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"weights",{get:function(){return this.executor.weightMap},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"metadata",{get:function(){return this.artifacts.userDefinedMetadata},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modelSignature",{get:function(){return this.signature},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modelStructuredOutputKeys",{get:function(){return this.structuredOutputKeys},enumerable:!1,configurable:!0}),e.prototype.findIOHandler=function(){var e=this.modelUrl;if(null!=e.load)this.handler=e;else if(null!=this.loadOptions.requestInit)this.handler=this.io.browserHTTPRequest(e,this.loadOptions);else{var t=this.io.getLoadHandlers(e,this.loadOptions);if(0===t.length)t.push(this.io.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error("Found more than one (".concat(t.length,") load handlers for ")+"URL '".concat([e],"'"));this.handler=t[0]}},e.prototype.load=function(){var e=this;if(this.findIOHandler(),null==this.handler.load)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");var n=this.handler.load();return t.util.isPromise(n)?n.then((function(t){return e.loadSync(t)})):this.loadSync(n)},e.prototype.loadSync=function(e){this.artifacts=e;var t=this.artifacts.modelTopology,n=this.artifacts.signature;if(null!=this.artifacts.userDefinedMetadata){var r=this.artifacts.userDefinedMetadata;null!=r.signature&&(n=r.signature),null!=r.structuredOutputKeys&&(this.structuredOutputKeys=r.structuredOutputKeys)}this.signature=n,this.version="".concat(t.versions.producer,".").concat(t.versions.minConsumer);var a=this.io.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Hi(K.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(a),this.executor.resourceManager=this.resourceManager,null!=e.modelInitializer&&null!=e.modelInitializer.node){var o=K.Instance.transformGraph(e.modelInitializer);this.initializer=new Hi(o),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializerSignature=e.initializerSignature}return!0},e.prototype.save=function(e,t){return i(this,void 0,void 0,(function(){var t;return u(this,(function(n){if("string"==typeof e){if(0===(t=this.io.getSaveHandlers(e)).length)throw new Error("Cannot find any save handlers for URL '".concat(e,"'"));if(t.length>1)throw new Error("Found more than one (".concat(t.length,") save handlers for ")+"URL '".concat(e,"'"));e=t[0]}if(null==e.save)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return[2,e.save(this.artifacts)]}))}))},e.prototype.addStructuredOutputNames=function(e){var n=this;if(this.structuredOutputKeys){var r=e instanceof t.Tensor?[e]:e,a={};return r.forEach((function(e,t){return a[n.structuredOutputKeys[t]]=e})),a}return e},e.prototype.predict=function(e,t){var n=this.execute(e,this.outputNodes);return this.addStructuredOutputNames(n)},e.prototype.predictAsync=function(e,t){return i(this,void 0,void 0,(function(){var t;return u(this,(function(n){switch(n.label){case 0:return[4,this.executeAsync(e,this.outputNodes)];case 1:return t=n.sent(),[2,this.addStructuredOutputNames(t)]}}))}))},e.prototype.normalizeInputs=function(e){var n,r=this;if(!(e instanceof t.Tensor||Array.isArray(e))){var a=null===(n=this.signature)||void 0===n?void 0:n.inputs;if(null!=a)for(var o in a){var s=a[o];null!=s.resourceId&&(e[o]=this.resourceIdToCapturedInput[s.resourceId])}return e}e=Array.isArray(e)?e:[e];var i=Object.keys(this.resourceIdToCapturedInput).length;if(e.length+i!==this.inputNodes.length)throw new Error("Input tensor count mismatch, the graph model has ".concat(this.inputNodes.length-i," non-resource placeholders, while there are ").concat(e.length," input tensors provided."));var u=0;return this.inputNodes.reduce((function(t,n){var a,o,s,i=null===(s=null===(o=null===(a=r.signature)||void 0===a?void 0:a.inputs)||void 0===o?void 0:o[n])||void 0===s?void 0:s.resourceId;return t[n]=null!=i?r.resourceIdToCapturedInput[i]:e[u++],t}),{})},e.prototype.normalizeOutputs=function(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]},e.prototype.executeInitializerGraph=function(){return null==this.initializer?[]:null==this.initializerSignature?this.initializer.execute({},[]):this.initializer.execute({},Object.keys(this.initializerSignature.outputs))},e.prototype.executeInitializerGraphAsync=function(){return i(this,void 0,void 0,(function(){return u(this,(function(e){return null==this.initializer?[2,[]]:null==this.initializerSignature?[2,this.initializer.executeAsync({},[])]:[2,this.initializer.executeAsync({},Object.keys(this.initializerSignature.outputs))]}))}))},e.prototype.setResourceIdToCapturedInput=function(e){if(this.resourceIdToCapturedInput={},this.initializerSignature)for(var t=this.initializerSignature.outputs,n=Object.keys(t),r=0;r1?n:n[0]},e.prototype.executeAsync=function(e,t){return i(this,void 0,void 0,(function(){var n,r;return u(this,(function(a){switch(a.label){case 0:return null!=this.resourceIdToCapturedInput?[3,2]:(n=this.setResourceIdToCapturedInput,[4,this.executeInitializerGraphAsync()]);case 1:n.apply(this,[a.sent()]),a.label=2;case 2:return e=this.normalizeInputs(e),t=this.normalizeOutputs(t),[4,this.executor.executeAsync(e,t)];case 3:return[2,(r=a.sent()).length>1?r:r[0]]}}))}))},e.prototype.getIntermediateTensors=function(){return this.executor.getIntermediateTensors()},e.prototype.disposeIntermediateTensors=function(){this.executor.disposeIntermediateTensors()},e.prototype.convertTensorMapToTensorsMap=function(e){return Object.keys(e).reduce((function(t,n){return t[n]=[e[n]],t}),{})},e.prototype.dispose=function(){this.executor.dispose(),this.initializer&&(this.initializer.dispose(),this.resourceIdToCapturedInput&&t.dispose(this.resourceIdToCapturedInput)),this.resourceManager.dispose()},e}();e.GraphModel=Qi,e.deregisterOp=function(e){delete d[e]},e.loadGraphModel=function(e,n,r){return void 0===n&&(n={}),void 0===r&&(r=t.io),i(this,void 0,void 0,(function(){var t;return u(this,(function(a){switch(a.label){case 0:if(null==e)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");return null==n&&(n={}),n.fromTFHub&&"string"==typeof e&&(e=function(e){return e.endsWith("/")||(e+="/"),"".concat(e).concat("model.json").concat("?tfjs-format=file")}(e)),[4,(t=new Qi(e,n,r)).load()];case 1:return a.sent(),[2,t]}}))}))},e.loadGraphModelSync=function(e){if(null==e)throw new Error("modelUrl in loadGraphModelSync() cannot be null. Please provide model artifacts or an IOHandler that loads the model");var n;if(e instanceof Array){var r=c(e,2),a=r[0],o=r[1];if(!a)throw new Error("modelJSON must be the first element of the array");if(!(o&&o instanceof ArrayBuffer))throw new Error("An ArrayBuffer of weights must be the second element of the array");if(!("modelTopology"in a))throw new Error("Model JSON is missing 'modelTopology'");if(!("weightsManifest"in a))throw new Error("Model JSON is missing 'weightsManifest'");var s=t.io.getWeightSpecs(a.weightsManifest),i=t.io.getModelArtifactsForJSONSync(a,s,o);n=t.io.fromMemorySync(i)}else if("load"in e)n=e;else{if(!("modelTopology"in e&&"weightSpecs"in e&&"weightData"in e))throw new Error("Unknown model format");n=t.io.fromMemorySync(e)}var u=new Qi(n);return u.load(),u},e.registerOp=function(e,t){var n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};d[e]=n},e.version_converter="4.14.0"})); \ No newline at end of file diff --git a/experiments/ribbon02/dist/lib/tfjs-core.js b/experiments/ribbon02/dist/lib/tfjs-core.js index 2f1a8c9d..1936ee10 100644 --- a/experiments/ribbon02/dist/lib/tfjs-core.js +++ b/experiments/ribbon02/dist/lib/tfjs-core.js @@ -1,2 +1,2 @@ /*! For license information please see tfjs-core.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).tf=e.tf||{})}(this,(function(e){"use strict";var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)};function n(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function r(){this.constructor=e}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r)}function r(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,s)}u((r=r.apply(e,t||[])).next())}))}function a(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(a=2&o[0]?r.return:o[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;switch(r=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return i.label++,{value:o[1],done:!1};case 5:i.label++,r=o[1],o=[0];continue;case 7:o=i.ops.pop(),i.trys.pop();continue;default:if(!((a=(a=i.trys).length>0&&a[a.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function s(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a0;)n=Math.random()*t|0,d(e,--t,n)}function f(e,t,n){return Math.max(e,Math.min(t,n))}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function p(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function g(e,t,n){void 0===n&&(n=""),p(b(e,t),(function(){return n+" Shapes ".concat(e," and ").concat(t," must match")}))}function m(e){p(null!=e,(function(){return"The input to the tensor constructor must be a non-null value."}))}function v(e){if(0===e.length)return 1;for(var t=e[0],n=1;n=-n&&es)&&1===e[s]&&(n.push(e[s]),r.push(s)),o[i]<=s&&i++}1!==e[s]&&(n.push(e[s]),r.push(s))}return{newShape:n,keptDims:r}}function S(e,t){return A(e,t)}function A(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error("Unknown data type ".concat(e));n=new Array(t)}return n}function _(e,t){for(var n=0;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function O(e,t,n,r){void 0===r&&(r=!1);var a=new Array;if(1===t.length)for(var o=t[0]*(r?2:1),i=0;i=0,(function(){return"Tensor must have a shape comprised of positive integers but got "+"shape [".concat(e,"].")}))}))}function G(e){return e&&e.then&&"function"==typeof e.then}var K,q=function(){function e(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=V,this.populateURLFlags()}return e.prototype.setPlatform=function(e,t){null!=this.platform&&(j().getBool("IS_TEST")||j().getBool("PROD")||console.warn("Platform ".concat(this.platformName," has already been set. ")+"Overwriting the platform with ".concat(e,"."))),this.platformName=e,this.platform=t},e.prototype.registerFlag=function(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){var r=this.urlFlags[e];j().getBool("IS_TEST")||j().getBool("PROD")||console.warn("Setting feature override from URL ".concat(e,": ").concat(r,".")),this.set(e,r)}},e.prototype.getAsync=function(e){return r(this,void 0,void 0,(function(){var t,n;return a(this,(function(r){switch(r.label){case 0:return e in this.flags?[2,this.flags[e]]:(t=this.flags,n=e,[4,this.evaluateFlag(e)]);case 1:return t[n]=r.sent(),[2,this.flags[e]]}}))}))},e.prototype.get=function(e){if(e in this.flags)return this.flags[e];var t=this.evaluateFlag(e);if(G(t))throw new Error("Flag ".concat(e," cannot be synchronously evaluated. ")+"Please use getAsync() instead.");return this.flags[e]=t,this.flags[e]},e.prototype.getNumber=function(e){return this.get(e)},e.prototype.getBool=function(e){return this.get(e)},e.prototype.getString=function(e){return this.get(e)},e.prototype.getFlags=function(){return this.flags},Object.defineProperty(e.prototype,"features",{get:function(){return this.flags},enumerable:!1,configurable:!0}),e.prototype.set=function(e,t){if(null==this.flagRegistry[e])throw new Error("Cannot set flag ".concat(e," as it has not been registered."));this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)},e.prototype.evaluateFlag=function(e){if(null==this.flagRegistry[e])throw new Error("Cannot evaluate flag '".concat(e,"': no evaluation function found."));return this.flagRegistry[e].evaluationFn()},e.prototype.setFlags=function(e){this.flags=Object.assign({},e)},e.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},e.prototype.populateURLFlags=function(){var e=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var t=this.getQueryParams(this.global.location.search);"tfjsflags"in t&&t.tfjsflags.split(",").forEach((function(t){var n=i(t.split(":"),2),r=n[0],a=n[1];e.urlFlags[r]=function(e,t){var n=t.toLowerCase();return"true"===n||"false"===n?"true"===n:"".concat(+n)===n?+n:t}(0,a)}))}},e}();function V(e){var t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(e){for(var n=[],r=1;r>>=0)&&e<256)&&(r=Hn[e])?r:(n=Jn(e,(0|e)<0?-1:0,!0),a&&(Hn[e]=n),n):(a=-128<=(e|=0)&&e<128)&&(r=Vn[e])?r:(n=Jn(e,e<0?-1:0,!1),a&&(Vn[e]=n),n)}function Zn(e,t){if(isNaN(e))return t?ar:rr;if(t){if(e<0)return ar;if(e>=er)return cr}else{if(e<=-tr)return lr;if(e+1>=tr)return ur}return e<0?Zn(-e,t).neg():Jn(e%$n|0,e/$n|0,t)}function Jn(e,t,n){return new Kn(e,t,n)}Kn.fromInt=jn,Kn.fromNumber=Zn,Kn.fromBits=Jn;var Yn=Math.pow;function Xn(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return rr;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return Xn(e.substring(1),t,n).neg();for(var a=Zn(Yn(n,8)),o=rr,i=0;i>>0:this.low},hr.toNumber=function(){return this.unsigned?(this.high>>>0)*$n+(this.low>>>0):this.high*$n+(this.low>>>0)},hr.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((o=s).isZero())return u+i;for(;u.length<6;)u="0"+u;i=""+u+i}},hr.getHighBits=function(){return this.high},hr.getHighBitsUnsigned=function(){return this.high>>>0},hr.getLowBits=function(){return this.low},hr.getLowBitsUnsigned=function(){return this.low>>>0},hr.getNumBitsAbs=function(){if(this.isNegative())return this.eq(lr)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},hr.isOdd=function(){return 1==(1&this.low)},hr.isEven=function(){return 0==(1&this.low)},hr.equals=function(e){return qn(e)||(e=Qn(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},hr.eq=hr.equals,hr.notEquals=function(e){return!this.eq(e)},hr.neq=hr.notEquals,hr.ne=hr.notEquals,hr.lessThan=function(e){return this.comp(e)<0},hr.lt=hr.lessThan,hr.lessThanOrEqual=function(e){return this.comp(e)<=0},hr.lte=hr.lessThanOrEqual,hr.le=hr.lessThanOrEqual,hr.greaterThan=function(e){return this.comp(e)>0},hr.gt=hr.greaterThan,hr.greaterThanOrEqual=function(e){return this.comp(e)>=0},hr.gte=hr.greaterThanOrEqual,hr.ge=hr.greaterThanOrEqual,hr.compare=function(e){if(qn(e)||(e=Qn(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},hr.comp=hr.compare,hr.negate=function(){return!this.unsigned&&this.eq(lr)?lr:this.not().add(or)},hr.neg=hr.negate,hr.add=function(e){qn(e)||(e=Qn(e));var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,i=65535&e.high,s=e.low>>>16,u=0,c=0,l=0,h=0;return l+=(h+=a+(65535&e.low))>>>16,c+=(l+=r+s)>>>16,u+=(c+=n+i)>>>16,u+=t+o,Jn((l&=65535)<<16|(h&=65535),(u&=65535)<<16|(c&=65535),this.unsigned)},hr.subtract=function(e){return qn(e)||(e=Qn(e)),this.add(e.neg())},hr.sub=hr.subtract,hr.multiply=function(e){if(this.isZero())return rr;if(qn(e)||(e=Qn(e)),Gn)return Jn(Gn.mul(this.low,this.high,e.low,e.high),Gn.get_high(),this.unsigned);if(e.isZero())return rr;if(this.eq(lr))return e.isOdd()?lr:rr;if(e.eq(lr))return this.isOdd()?lr:rr;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(nr)&&e.lt(nr))return Zn(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,i=65535&e.high,s=e.low>>>16,u=65535&e.low,c=0,l=0,h=0,f=0;return h+=(f+=a*u)>>>16,l+=(h+=r*u)>>>16,h&=65535,l+=(h+=a*s)>>>16,c+=(l+=n*u)>>>16,l&=65535,c+=(l+=r*s)>>>16,l&=65535,c+=(l+=a*i)>>>16,c+=t*u+n*s+r*i+a*o,Jn((h&=65535)<<16|(f&=65535),(c&=65535)<<16|(l&=65535),this.unsigned)},hr.mul=hr.multiply,hr.divide=function(e){if(qn(e)||(e=Qn(e)),e.isZero())throw Error("division by zero");var t,n,r;if(Gn)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?Jn((this.unsigned?Gn.div_u:Gn.div_s)(this.low,this.high,e.low,e.high),Gn.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?ar:rr;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return ar;if(e.gt(this.shru(1)))return ir;r=ar}else{if(this.eq(lr))return e.eq(or)||e.eq(sr)?lr:e.eq(lr)?or:(t=this.shr(1).div(e).shl(1)).eq(rr)?e.isNegative()?or:sr:(n=this.sub(e.mul(t)),r=t.add(n.div(e)));if(e.eq(lr))return this.unsigned?ar:rr;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=rr}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:Yn(2,a-48),i=Zn(t),s=i.mul(e);s.isNegative()||s.gt(n);)s=(i=Zn(t-=o,this.unsigned)).mul(e);i.isZero()&&(i=or),r=r.add(i),n=n.sub(s)}return r},hr.div=hr.divide,hr.modulo=function(e){return qn(e)||(e=Qn(e)),Gn?Jn((this.unsigned?Gn.rem_u:Gn.rem_s)(this.low,this.high,e.low,e.high),Gn.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},hr.mod=hr.modulo,hr.rem=hr.modulo,hr.not=function(){return Jn(~this.low,~this.high,this.unsigned)},hr.and=function(e){return qn(e)||(e=Qn(e)),Jn(this.low&e.low,this.high&e.high,this.unsigned)},hr.or=function(e){return qn(e)||(e=Qn(e)),Jn(this.low|e.low,this.high|e.high,this.unsigned)},hr.xor=function(e){return qn(e)||(e=Qn(e)),Jn(this.low^e.low,this.high^e.high,this.unsigned)},hr.shiftLeft=function(e){return qn(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Jn(this.low<>>32-e,this.unsigned):Jn(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):Jn(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},hr.shr=hr.shiftRight,hr.shiftRightUnsigned=function(e){if(qn(e)&&(e=e.toInt()),0==(e&=63))return this;var t=this.high;return e<32?Jn(this.low>>>e|t<<32-e,t>>>e,this.unsigned):Jn(32===e?t:t>>>e-32,0,this.unsigned)},hr.shru=hr.shiftRightUnsigned,hr.shr_u=hr.shiftRightUnsigned,hr.toSigned=function(){return this.unsigned?Jn(this.low,this.high,!1):this},hr.toUnsigned=function(){return this.unsigned?this:Jn(this.low,this.high,!0)},hr.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},hr.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},hr.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},Kn.fromBytes=function(e,t,n){return n?Kn.fromBytesLE(e,t):Kn.fromBytesBE(e,t)},Kn.fromBytesLE=function(e,t){return new Kn(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},Kn.fromBytesBE=function(e,t){return new Kn(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};var fr=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(Wn),dr=fr||function(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),e}({__proto__:null,default:fr},[Wn]);function pr(e){return dr.fromString(e,!0,16)}var gr=pr("c3a5c85c97cb3127"),mr=pr("b492b66fbe98f273"),vr=pr("9ae16a3b2f90404f");function yr(e){return e.xor(e.shru(47))}function br(e,t,n){var r=e.slice(t,t+n);return dr.fromBytes(Array.from(r),!0,!0)}function wr(e,t){return br(e,t,8)}function kr(e,t){return br(e,t,4)}function xr(e,t){return 0===t?e:e.shru(t).or(e.shl(64-t))}function Er(e,t,n){void 0===n&&(n=pr("9ddfea08eb382d69"));var r=e.xor(t).mul(n);r=r.xor(r.shru(47));var a=t.xor(r).mul(n);return(a=a.xor(a.shru(47))).mul(n)}function Sr(e,t,n,r){return function(e,t,n,r,a,o){a=a.add(e),o=xr(o.add(a).add(r),21);var i=a;return a=(a=a.add(t)).add(n),o=o.add(xr(a,44)),[a.add(r),o.add(i)]}(wr(e,t),wr(e,t+8),wr(e,t+16),wr(e,t+24),n,r)}function Ar(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Tr(e)),j().getBool("DEBUG")&&_(e,t),function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t))return e;if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t){for(var n=new Uint8Array(e.length),r=0;r=8){var n=vr.add(2*t),r=wr(e,0).add(vr);return Er(xr(a=wr(e,t-8),37).mul(n).add(r),xr(r,25).add(a).mul(n),n)}if(t>=4)return n=vr.add(2*t),Er((r=kr(e,0)).shl(3).add(t),kr(e,t-4),n);if(t>0){var a,o=(r=e[0])+((a=e[t>>1])<<8),i=t+(e[t-1]<<2);return yr(vr.mul(o).xor(gr.mul(i))).mul(vr)}return vr}(e,t):function(e,t){void 0===t&&(t=e.length);var n=vr.add(2*t),r=wr(e,0).mul(mr),a=wr(e,8),o=wr(e,t-8).mul(n),i=wr(e,t-16).mul(vr);return Er(xr(r.add(a),43).add(xr(o,30)).add(i),r.add(xr(a.add(vr),18)).add(o),n)}(e,t);if(t<=64)return function(e,t){void 0===t&&(t=e.length);var n=vr.add(2*t),r=wr(e,0).mul(vr),a=wr(e,8),o=wr(e,t-8).mul(n),i=wr(e,t-16).mul(vr),s=xr(r.add(a),43).add(xr(o,30)).add(i),u=Er(s,r.add(xr(a.add(vr),18)).add(o),n),c=wr(e,16).mul(n),l=wr(e,24),h=s.add(wr(e,t-32)).mul(n),f=u.add(wr(e,t-24)).mul(n);return Er(xr(c.add(l),43).add(xr(h,30)).add(f),c.add(xr(l.add(r),18)).add(h),n)}(e,t);var o=a,s=a.mul(mr).add(113),u=yr(s.mul(vr).add(113)).mul(vr),c=[dr.UZERO,dr.UZERO],l=[dr.UZERO,dr.UZERO];o=o.mul(vr).add(wr(e,0));var h=0,f=64*(t-1>>6),d=f+(t-1&63)-63;do{o=xr(o.add(s).add(c[0]).add(wr(e,h+8)),37).mul(mr),s=xr(s.add(c[1]).add(wr(e,h+48)),42).mul(mr),o=o.xor(l[1]),s=s.add(c[0]).add(wr(e,h+40)),u=xr(u.add(l[0]),33).mul(mr),c=Sr(e,h,c[1].mul(mr),o.add(l[0])),l=Sr(e,h+32,u.add(l[1]),s.add(wr(e,h+16))),u=(n=i([o,u],2))[0],o=n[1],h+=64}while(h!==f);var p=mr.add(u.and(255).shl(1));return h=d,l[0]=l[0].add(t-1&63),c[0]=c[0].add(l[0]),l[0]=l[0].add(c[0]),o=xr(o.add(s).add(c[0]).add(wr(e,h+8)),37).mul(p),s=xr(s.add(c[1]).add(wr(e,h+48)),42).mul(p),o=o.xor(l[1].mul(9)),s=s.add(c[0].mul(9).add(wr(e,h+40))),u=xr(u.add(l[0]),33).mul(p),c=Sr(e,h,c[1].mul(p),o.add(l[0])),l=Sr(e,h+32,u.add(l[1]),s.add(wr(e,h+16))),u=(r=i([o,u],2))[0],o=r[1],Er(Er(c[0],l[0],p).add(yr(s).mul(gr)).add(u),Er(c[1],l[1],p).add(o),p)},flatten:Tr,getArrayFromDType:A,getTypedArrayFromDType:S,hasEncodingLoss:function(e,t){return!("complex64"===t||"float32"===t&&"complex64"!==e||"int32"===t&&"float32"!==e&&"complex64"!==e||"bool"===t&&"bool"===e)},hexToLong:pr,indexToLoc:function(e,t,n){if(0===t)return[];if(1===t)return[e];for(var r=new Array(t),a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. "+"Found -1 at dim ".concat(r," and dim ").concat(a));r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found ".concat(e[a]," at dim ").concat(a));if(-1===r){if(t>0&&t!==n)throw Error("Size(".concat(t,") must match the product of shape ").concat(e));return e}if(0===n)throw Error("Cannot infer the missing size in [".concat(e,"] when ")+"there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. "+"Got ".concat(t," / ").concat(n));var o=e.slice();return o[r]=t/n,o},isBoolean:D,isFunction:F,isInt:w,isNumber:R,isPromise:G,isScalarShape:function(e){return 0===e.length},isString:T,isTypedArray:Mr,isValidDtype:I,locToIndex:function(e,t,n){if(0===t)return 0;if(1===t)return e[0];for(var r=e[e.length-1],a=0;a=n?o():null!=r?r(s,u):setTimeout(s,u)}};s()}))},rightPad:k,shuffle:h,shuffleCombo:function(e,t){if(e.length!==t.length)throw new Error("Array sizes must match to be shuffled together "+"First array length was ".concat(e.length)+"Second array length was ".concat(t.length));for(var n=e.length,r=0;n>0;)r=Math.random()*n|0,d(e,--n,r),d(t,n,r)},sizeFromShape:v,sizeToSquarishShape:function(e){var t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]},squeezeShape:E,sum:function(e){for(var t=0,n=0;n0?p:""," ")}}console.log("%c".concat(s,"\t%c").concat(i,"\t%c").concat(u,"D ").concat(l,"\t%c").concat(c,"\t%c").concat(h,"\t%c").concat(o),"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},e}();function Fr(e,t,n){return k(Array.isArray(e)?"".concat(parseFloat(e[0].toFixed(7))," + ")+"".concat(parseFloat(e[1].toFixed(7)),"j"):T(e)?"'".concat(e,"'"):"bool"===n?Cr(e):parseFloat(e.toFixed(7)).toString(),t)}function Cr(e){return 0===e?"false":"true"}function Pr(e,t,n,r,a,o){void 0===o&&(o=!0);var u="complex64"===n?2:1,c=t[0],l=t.length;if(0===l)return"complex64"===n?[Fr(Or(e)[0],0,n)]:"bool"===n?[Cr(e[0])]:[e[0].toString()];if(1===l){if(c>20){var h=3*u,f=Array.from(e.slice(0,h)),d=Array.from(e.slice((c-3)*u,c*u));return"complex64"===n&&(f=Or(f),d=Or(d)),["["+f.map((function(e,t){return Fr(e,a[t],n)})).join(", ")+", ..., "+d.map((function(e,t){return Fr(e,a[c-3+t],n)})).join(", ")+"]"]}return["["+("complex64"===n?Or(e):Array.from(e)).map((function(e,t){return Fr(e,a[t],n)})).join(", ")+"]"]}var p=t.slice(1),g=r.slice(1),m=r[0]*u,v=[];if(c>20){for(var y=0;y<3;y++){var b=(w=y*m)+m;v.push.apply(v,s([],i(Pr(e.slice(w,b),p,n,g,a,!1)),!1))}for(v.push("..."),y=c-3;y0?v[0]+k:""),y=1;y=this.shape[a]){var c="Requested out of range element at ".concat(n,". ")+" Buffer shape=".concat(this.shape);throw new Error(c)}a++}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}for(var l=n[n.length-1],h=0;h1)for(var c=0;c0)throw new Error("Backend '".concat(this.backendName,"' has an internal memory leak ")+"(".concat(i," data ids) after running '").concat(e,"'"))},e.prototype.runKernelFunc=function(e){var t,n,r,a=this,o=[],i=this.isTapeOn(),s=this.state.numBytes,u=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;var c=aa(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(aa(e)){var l=e.kernelName,h=e.inputs,f=e.attrs;null==this.backendName&&this.backend;var d=Fn(l,this.backendName);p(null!=d,(function(){return"Cannot find registered kernel '".concat(l,"' for backend '").concat(a.backendName,"'")})),n=function(){var e=a.backend.numDataIds();r=d.kernelFunc({inputs:h,attrs:f,backend:a.backend});var t=Array.isArray(r)?r:[r];a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(l,e,t);var n=t.map((function(e){return null!=e.rank?e:a.makeTensorFromTensorInfo(e)}));if(i){var s=a.getTensorsForGradient(l,h,n);o=a.saveTensorsForBackwardMode(s)}return n}}else{var g=e.forwardFunc,m=function(e){i&&(o=e.map((function(e){return a.keep(a.clone(e))})))};n=function(){var e=a.backend.numDataIds();r=a.tidy((function(){return g(a.backend,m)}));var t=Array.isArray(r)?r:[r];return a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(c,e,t),t}}var v,y=e.inputs,b=e.attrs,w=aa(e)?null:e.backwardsFunc;return this.scopedRun((function(){return a.state.kernelDepth++}),(function(){return a.state.kernelDepth--}),(function(){a.ENV.getBool("DEBUG")||a.state.profiling?(v=a.profiler.profileKernel(c,y,(function(){return n()})),a.ENV.getBool("DEBUG")&&a.profiler.logKernelProfile(v),t=v.outputs):t=n()})),i&&this.addTapeNode(c,y,t,w,o,b),this.state.profiling&&this.state.activeProfile.kernels.push({name:c,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-u,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(y).map((function(e){return null!=y[e]?y[e].shape:null})),outputShapes:t.map((function(e){return e.shape})),kernelTimeMs:v.timeMs,extraInfo:v.extraInfo}),Array.isArray(r)?t:t[0]},e.prototype.saveTensorsForBackwardMode=function(e){var t=this;return e.map((function(e){return t.keep(t.clone(e))}))},e.prototype.getTensorsForGradient=function(e,t,n){var r=Cn(e);if(null!=r){var a=r.inputsToSave||[],o=r.outputsToSave||[],i=void 0;r.saveAllInputs?(p(Array.isArray(t),(function(){return"saveAllInputs is true, expected inputs to be an array."})),i=Object.keys(t).map((function(e){return t[e]}))):i=a.map((function(e){return t[e]}));var s=n.filter((function(e,t){return o[t]}));return i.concat(s)}return[]},e.prototype.makeTensor=function(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var a=e;"string"===n&&T(e[0])&&(a=e.map((function(e){return Ir(e)})));var o=r.write(a,t,n),i=new Wr(t,n,o,this.nextTensorId());if(this.trackTensor(i,r),"string"===n){var s=this.state.tensorInfo.get(o),u=M(a);this.state.numBytes+=u-s.bytes,s.bytes=u}return i},e.prototype.makeTensorFromDataId=function(e,t,n,r){var a={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(a,r)},e.prototype.makeTensorFromTensorInfo=function(e,t){var n=e.dataId,r=e.shape,a=e.dtype,o=new Wr(r,a,n,this.nextTensorId());return this.trackTensor(o,t),o},e.prototype.makeVariable=function(e,t,n,r){void 0===t&&(t=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));var a=new Zr(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error("Variable with name ".concat(a.name," was already registered"));return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},e.prototype.trackTensor=function(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;var n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*N(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Zr||this.track(e)},e.prototype.incRef=function(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)},e.prototype.removeDataId=function(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)},e.prototype.disposeTensor=function(e){if(this.state.tensorInfo.has(e.dataId)){var t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){var n=e.size*N(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}},e.prototype.disposeVariables=function(){for(var e in this.state.registeredVariables){var t=this.state.registeredVariables[e];this.disposeVariable(t)}},e.prototype.disposeVariable=function(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]},e.prototype.memory=function(){var e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e},e.prototype.profile=function(e){return r(this,void 0,void 0,(function(){var t,n,r,u,c,l,h,f,d,p,g;return a(this,(function(a){switch(a.label){case 0:return this.state.profiling=!0,t=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,e()];case 1:r.result=a.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,s([],i(this.state.activeProfile.kernels.map((function(e){return e.totalBytesSnapshot}))),!1)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n,a.label=2;case 2:a.trys.push([2,8,9,10]),u=o(this.state.activeProfile.kernels),c=u.next(),a.label=3;case 3:return c.done?[3,7]:(l=c.value,h=l,[4,l.kernelTimeMs]);case 4:return h.kernelTimeMs=a.sent(),f=l,[4,l.extraInfo];case 5:f.extraInfo=a.sent(),a.label=6;case 6:return c=u.next(),[3,3];case 7:return[3,10];case 8:return d=a.sent(),p={error:d},[3,10];case 9:try{c&&!c.done&&(g=u.return)&&g.call(u)}finally{if(p)throw p.error}return[7];case 10:return[2,this.state.activeProfile]}}))}))},e.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},e.prototype.addTapeNode=function(e,t,n,r,a,o){var i=this,s={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},u=Cn(e);null!=u&&(r=u.gradFunc),null!=r&&(s.gradient=function(e){return e=e.map((function(e,t){if(null==e){var r=n[t],a=U(r.size,r.dtype);return i.makeTensor(a,r.shape,r.dtype)}return e})),r(e.length>1?e:e[0],a,o)}),this.state.activeTape.push(s)},e.prototype.keep=function(e){return e.kept=!0,e},e.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},e.prototype.endTape=function(){this.state.gradientDepth--},e.prototype.startScope=function(e){var t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t},e.prototype.endScope=function(e){for(var t=this,n=ta(e),r=new Set(n.map((function(e){return e.id}))),a=0;a0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '".concat(n.dtype,"'"));var i=this.scopedRun((function(){return a.startTape()}),(function(){return a.endTape()}),(function(){return a.tidy("forward",e)}));p(i instanceof Wr,(function(){return"The result y returned by f() must be a tensor."}));var s=function(e,t,n){for(var r={},a={},o=0;o=0;o--)for(i=(p=e[o]).inputs,l=0;l0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var e,r,u={};u[i.id]=null==n?(r=z(v(e=i.shape),"float32"),ca.makeTensor(r,e,"float32")):n,function(e,t,n,r){for(var a=function(a){var o=t[a],i=[];if(o.outputs.forEach((function(t){var n=e[t.id];null!=n?i.push(n):i.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found "+"for ".concat(o.kernelName,"."));var s=o.gradient(i),u=function(t){if(!(t in s))throw new Error("Cannot backprop through input ".concat(t,". ")+"Available gradients found: ".concat(Object.keys(s),"."));var a=n((function(){return s[t]()}));if("float32"!==a.dtype)throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"".concat(t," must have 'float32' dtype, but has '").concat(a.dtype,"'"));var i=o.inputs[t];if(!b(a.shape,i.shape))throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"'".concat(t,"' has shape '").concat(a.shape,"', which does not match ")+"the shape of the input '".concat(i.shape,"'"));if(null==e[i.id])e[i.id]=a;else{var u=e[i.id];e[i.id]=r(u,a),u.dispose()}};for(var c in o.inputs)u(c)},o=t.length-1;o>=0;o--)a(o)}(u,s,(function(e){return a.tidy(e)}),la);var c=t.map((function(e){return u[e.id]}));return 0===a.state.gradientDepth&&(a.state.activeTape.forEach((function(e){var t,n;try{for(var r=o(e.saved),a=r.next();!a.done;a=r.next())a.value.dispose()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}})),a.state.activeTape=null),{value:i,grads:c}}))},e.prototype.customGrad=function(e){var t=this;return p(F(e),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],a=0;a0,(function(){return"Element arr[".concat(n.join("]["),"] should be a primitive, ")+"but is an array of ".concat(e.length," elements")})),p(e.length===t[0],(function(){return"Element arr[".concat(n.join("]["),"] should have ").concat(t[0]," ")+"elements, but has ".concat(e.length," elements")}));for(var r=t.slice(1),a=0;a=0&&(a=r),ma(r,a,t,n),null==e||!Mr(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){var o=null==e?"null":e.constructor.name;throw new Error("Argument '".concat(t,"' passed to '").concat(n,"' must be a ")+"Tensor or TensorLike, but got '".concat(o,"'"))}var i=pa(e,a);Mr(e)||Array.isArray(e)||(e=[e]);var s="string"!==a?Ar(e,a):Tr(e,[],!0);return ca.makeTensor(s,i,a)}function ya(e,t,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(e))throw new Error("Argument ".concat(t," passed to ").concat(n," must be a ")+"`Tensor[]` or `TensorLike[]`");return e.map((function(e,a){return va(e,"".concat(t,"[").concat(a,"]"),n,r)}))}da.registerFlag("DEBUG",(function(){return!1}),(function(e){e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")})),da.registerFlag("IS_BROWSER",(function(){return ha()})),da.registerFlag("IS_NODE",(function(){return"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node})),da.registerFlag("IS_CHROME",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),da.registerFlag("IS_SAFARI",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)})),da.registerFlag("PROD",(function(){return!1})),da.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(function(){return da.getBool("DEBUG")})),da.registerFlag("DEPRECATION_WARNINGS_ENABLED",(function(){return!0})),da.registerFlag("IS_TEST",(function(){return!1})),da.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(function(){return da.getBool("DEBUG")})),da.registerFlag("WRAP_TO_IMAGEBITMAP",(function(){return!1})),da.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(function(){return!1})),da.registerFlag("USE_SETTIMEOUTCUSTOM",(function(){return!1}));var ba="__op";function wa(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+"".concat(t.length," keys."));var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=ba;var a=function(){for(var e=[],t=0;t=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(t){return e=t.end?1:0}if(0===t(this.shards[this.previousShardIndex]))return this.previousShardIndex;var n=function(e,t){for(var n=0,r=e.length;n<=r;){var a=Math.floor((r-n)/2)+n,o=t(e[a]);if(0===o)return a;o<0?r=a:n=a+1}return-1}(this.shards,t);return-1===n?-1:(this.previousShardIndex=n,this.previousShardIndex)},e}();function _a(e,t){var n,r,a,i=new Aa(e),s={},u=0;try{for(var c=o(t),l=c.next();!l.done;l=c.next()){var h=l.value,f=h.name,d=h.dtype,p=h.shape,g=v(p),m=void 0;if("quantization"in h){var y=h.quantization;if("uint8"===y.dtype||"uint16"===y.dtype){if(!("min"in y)||!("scale"in y))throw new Error("Weight ".concat(h.name," with quantization ").concat(y.dtype," ")+"doesn't have corresponding metadata min and scale.")}else{if("float16"!==y.dtype)throw new Error("Weight ".concat(h.name," has unknown ")+"quantization dtype ".concat(y.dtype,". ")+"Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.");if("float32"!==d)throw new Error("Weight ".concat(h.name," is quantized with ").concat(y.dtype," ")+"which only supports weights of type float32 not ".concat(d,"."))}var b=Sa[y.dtype],w=i.slice(u,u+g*b),k="uint8"===y.dtype?new Uint8Array(w):new Uint16Array(w);if("float32"===d)if("uint8"===y.dtype||"uint16"===y.dtype){m=new Float32Array(k.length);for(var x=0;x>10]+(1023&s)]+t[s>>10];o[i]=u}return new Float32Array(a)}}var Oa=function(){function e(){this.saveRouters=[],this.loadRouters=[]}return e.getInstance=function(){return null==e.instance&&(e.instance=new e),e.instance},e.registerSaveRouter=function(t){e.getInstance().saveRouters.push(t)},e.registerLoadRouter=function(t){e.getInstance().loadRouters.push(t)},e.getSaveHandlers=function(t){return e.getHandlers(t,"save")},e.getLoadHandlers=function(t,n){return e.getHandlers(t,"load",n)},e.getHandlers=function(t,n,r){var a=[];return("load"===n?e.getInstance().loadRouters:e.getInstance().saveRouters).forEach((function(e){var n=e(t,r);null!==n&&a.push(n)})),a},e}(),La="tensorflowjs",za="models_store",Ua="model_info_store";function Wa(){if(!j().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e="undefined"==typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Ga(e){var t=e.result;t.createObjectStore(za,{keyPath:"modelPath"}),t.createObjectStore(Ua,{keyPath:"modelPath"})}var Ka=function(){function e(e){if(this.indexedDB=Wa(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]}))}))},e.prototype.load=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){return[2,this.databaseAction(this.modelPath)]}))}))},e.prototype.databaseAction=function(e,t){var n=this;return new Promise((function(e,r){var a=n.indexedDB.open(La,1);a.onupgradeneeded=function(){return Ga(a)},a.onsuccess=function(){var o=a.result;if(null==t){var i=o.transaction(za,"readonly"),s=i.objectStore(za).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return o.close(),r(new Error("Cannot find model with path '".concat(n.modelPath,"' ")+"in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return o.close(),r(s.error)},i.oncomplete=function(){return o.close()}}else{t.weightData=Aa.join(t.weightData);var u,c,l=Fa(t),h=o.transaction(Ua,"readwrite"),f=h.objectStore(Ua);try{u=f.put({modelPath:n.modelPath,modelArtifactsInfo:l})}catch(e){return r(e)}u.onsuccess=function(){var a,i=(c=o.transaction(za,"readwrite")).objectStore(za);try{a=i.put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l})}catch(e){return r(e)}a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=h.objectStore(Ua)).delete(n.modelPath);t.onsuccess=function(){return o.close(),r(a.error)},t.onerror=function(e){return o.close(),r(a.error)}}},u.onerror=function(e){return o.close(),r(u.error)},h.oncomplete=function(){null==c?o.close():c.oncomplete=function(){return o.close()}}}},a.onerror=function(e){return r(a.error)}}))},e}();Ka.URL_SCHEME="indexeddb://";var qa=function(e){return j().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ka.URL_SCHEME)?(t=e.slice(Ka.URL_SCHEME.length),new Ka(t)):null;var t};Oa.registerSaveRouter(qa),Oa.registerLoadRouter(qa);var Va=function(){function e(){this.indexedDB=Wa()}return e.prototype.listModels=function(){return r(this,void 0,void 0,(function(){var e=this;return a(this,(function(t){return[2,new Promise((function(t,n){var r=e.indexedDB.open(La,1);r.onupgradeneeded=function(){return Ga(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(Ua,"readonly"),i=a.objectStore(Ua).getAll();i.onsuccess=function(){var e,n,r={};try{for(var a=o(i.result),s=a.next();!s.done;s=a.next()){var u=s.value;r[u.modelPath]=u.modelArtifactsInfo}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}t(r)},i.onerror=function(t){return e.close(),n(i.error)},a.oncomplete=function(){return e.close()}},r.onerror=function(e){return n(r.error)}}))]}))}))},e.prototype.removeModel=function(e){return r(this,void 0,void 0,(function(){var t=this;return a(this,(function(n){var r;return e=(r=e).startsWith(Ka.URL_SCHEME)?r.slice(Ka.URL_SCHEME.length):r,[2,new Promise((function(n,r){var a=t.indexedDB.open(La,1);a.onupgradeneeded=function(){return Ga(a)},a.onsuccess=function(){var t,o=a.result,i=o.transaction(Ua,"readwrite"),s=i.objectStore(Ua),u=s.get(e);u.onsuccess=function(){if(null==u.result)return o.close(),r(new Error("Cannot find model with path '".concat(e,"' ")+"in IndexedDB."));var a=s.delete(e),i=function(){var a=(t=o.transaction(za,"readwrite")).objectStore(za).delete(e);a.onsuccess=function(){return n(u.result.modelArtifactsInfo)},a.onerror=function(e){return r(u.error)}};a.onsuccess=i,a.onerror=function(e){return i(),o.close(),r(u.error)}},u.onerror=function(e){return o.close(),r(u.error)},i.oncomplete=function(){null==t?o.close():t.oncomplete=function(){return o.close()}}},a.onerror=function(e){return r(a.error)}}))]}))}))},e}(),Ha="/",ja="tensorflowjs_models",Za="info",Ja="model_topology",Ya="weight_specs",Xa="weight_data",Qa="model_metadata";function $a(e){return{info:[ja,e,Za].join(Ha),topology:[ja,e,Ja].join(Ha),weightSpecs:[ja,e,Ya].join(Ha),weightData:[ja,e,Xa].join(Ha),modelMetadata:[ja,e,Qa].join(Ha)}}function eo(e){var t,n;try{for(var r=o(Object.values(e)),a=r.next();!a.done;a=r.next()){var i=a.value;window.localStorage.removeItem(i)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}function to(e){var t=e.split(Ha);if(t.length<3)throw new Error("Invalid key format: ".concat(e));return t.slice(1,t.length-1).join(Ha)}var no=function(){function e(e){if(!j().getBool("IS_BROWSER")||"undefined"==typeof window||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=$a(this.modelPath)}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i;return a(this,(function(a){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Fa(e),o=Aa.join(e.weightData);try{return this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(e){if(Na)return Buffer.from(e).toString("base64");for(var t=new Uint8Array(e),n="",r=0,a=t.length;r0,(function(){return"scheme must not be an empty string."}));var r=e.getInstance();p(null==r.managers[t],(function(){return"A model store manager is already registered for scheme '".concat(t,"'.")})),r.managers[t]=n},e.getManager=function(t){var n=e.getInstance().managers[t];if(null==n)throw new Error("Cannot find model manager for scheme '".concat(t,"'"));return n},e.getSchemes=function(){return Object.keys(e.getInstance().managers)},e}();function so(e){if(-1===e.indexOf(oo))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+"".concat(io.getSchemes().join(",")));return{scheme:e.split(oo)[0],path:e.split(oo)[1]}}function uo(e,t,n){return void 0===n&&(n=!1),r(this,void 0,void 0,(function(){var r,o,i,s,u,c,l,h,f;return a(this,(function(a){switch(a.label){case 0:return p(e!==t,(function(){return"Old path and new path are the same: '".concat(e,"'")})),p((r=Oa.getLoadHandlers(e)).length>0,(function(){return"Copying failed because no load handler is found for source URL ".concat(e,".")})),p(r.length<2,(function(){return"Copying failed because more than one (".concat(r.length,") ")+"load handlers for source URL ".concat(e,".")})),o=r[0],p((i=Oa.getSaveHandlers(t)).length>0,(function(){return"Copying failed because no save handler is found for destination "+"URL ".concat(t,".")})),p(i.length<2,(function(){return"Copying failed because more than one (".concat(r.length,") ")+"save handlers for destination URL ".concat(t,".")})),s=i[0],u=so(e).scheme,c=so(e).path,l=u===so(e).scheme,[4,o.load()];case 1:return h=a.sent(),n&&l?[4,io.getManager(u).removeModel(c)]:[3,3];case 2:a.sent(),a.label=3;case 3:return[4,s.save(h)];case 4:return f=a.sent(),!n||l?[3,6]:[4,io.getManager(u).removeModel(c)];case 5:a.sent(),a.label=6;case 6:return[2,f.modelArtifactsInfo]}}))}))}var co=function(){function e(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}return e.prototype.fetch=function(e,t){return fetch(e,t)},e.prototype.now=function(){return performance.now()},e.prototype.encode=function(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error("Browser's encoder only supports utf-8, but got ".concat(t));return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)},e.prototype.decode=function(e,t){return new TextDecoder(t).decode(e)},e.prototype.setTimeoutCustom=function(e,t){var n=this;"undefined"!=typeof window&&j().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((function(){window.postMessage({name:n.messageName,index:n.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(function(e){e.source===window&&e.data.name===n.messageName&&(e.stopPropagation(),(0,n.functionRefs[e.data.index])(),n.handledMessageCount++,n.handledMessageCount===n.functionRefs.length&&(n.functionRefs=[],n.handledMessageCount=0))}),!0))):setTimeout(e,t)},e.prototype.isTypedArray=function(e){return zn(e)},e}();if(j().get("IS_BROWSER")){j().setPlatform("browser",new co);try{io.registerManager(no.URL_SCHEME,new ao)}catch(e){}try{io.registerManager(Ka.URL_SCHEME,new Va)}catch(e){}}var lo,ho=function(){function e(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}return e.prototype.fetch=function(e,t){return null!=j().global.fetch?j().global.fetch(e,t):(null==lo&&(lo=require("node-fetch")),lo(e,t))},e.prototype.now=function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6},e.prototype.encode=function(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error("Node built-in encoder only supports utf-8, but got ".concat(t));return this.textEncoder.encode(e)},e.prototype.decode=function(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)},e.prototype.isTypedArray=function(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)},e}();function fo(e,t,n){return void 0===t&&(t="float32"),t=t||"float32",W(e),new Lr(e,t,n)}j().get("IS_NODE")&&!j().get("IS_BROWSER")&&j().setPlatform("node",new ho);var po=wa({cast_:function(e,t){var n=va(e,"x","cast");if(!I(t))throw new Error("Failed to cast to unknown dtype ".concat(t));if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={x:n},a={dtype:t};return ca.runKernel(pe,r,a)}}),go=wa({clone_:function(e){var t={x:va(e,"x","clone","string_or_numeric")};return ca.runKernel(Xe,t)}});function mo(e,t){void 0===t&&(t=!1),console.log(e.toString(t))}function vo(e,t){return ca.tidy(e,t)}function yo(e){ta(e).forEach((function(e){return e.dispose()}))}function bo(e){return ca.keep(e)}sa(),Ur={buffer:fo,cast:po,clone:go,print:mo};var wo=wa({add_:function(e,t){var n,r=va(e,"a","add"),a=va(t,"b","add"),o={a:r=(n=i($r(r,a),2))[0],b:a=n[1]};return ca.runKernel(Q,o)}}),ko=wa({floorDiv_:function(e,t){var n,r=va(e,"a","floorDiv"),a=va(t,"b","floorDiv"),o={a:r=(n=i($r(r,a),2))[0],b:a=n[1]};return ca.runKernel(Ve,o)}}),xo=wa({div_:function(e,t){var n,r=va(e,"a","div"),a=va(t,"b","div");if(r=(n=i($r(r,a),2))[0],a=n[1],"int32"===r.dtype&&"int32"===a.dtype)return ko(r,a);var o={a:r,b:a};return ca.runKernel(Oe,o,{})}}),Eo=wa({mul_:function(e,t){var n,r=va(e,"a","mul"),a=va(t,"b","mul"),o={a:r=(n=i($r(r,a),2))[0],b:a=n[1]};return ca.runKernel(bt,o)}}),So=wa({abs_:function(e){var t=va(e,"x","abs");if("complex64"===t.dtype){var n={x:t};return ca.runKernel(ye,n)}return n={x:t},ca.runKernel("Abs",n)}}),Ao=wa({acos_:function(e){var t={x:va(e,"x","acos")};return ca.runKernel(Y,t)}}),_o=wa({acosh_:function(e){var t={x:va(e,"x","acosh")};return ca.runKernel(X,t)}}),Io=wa({addN_:function(e){p(Array.isArray(e),(function(){return"The argument passed to tf.addN() must be a list of tensors"})),p(e.length>=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+"".concat(e.length)}));var t=e.map((function(e,t){return va(e,"tensors".concat(t),"addN")})),n=t[0];t.forEach((function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((function(e){if(!b(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=t;return ca.runKernel($,r)}}),No=wa({all_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:va(e,"x","all","bool")},a={axis:t,keepDims:n};return ca.runKernel("All",r,a)}}),Mo=wa({any_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:va(e,"x","any","bool")},a={axis:t,keepDims:n};return ca.runKernel("Any",r,a)}}),To=wa({argMax_:function(e,t){void 0===t&&(t=0);var n={x:va(e,"x","argMax")},r={axis:t};return ca.runKernel(ee,n,r)}}),Do=wa({argMin_:function(e,t){void 0===t&&(t=0);var n={x:va(e,"x","argMin")},r={axis:t};return ca.runKernel(te,n,r)}}),Ro=wa({asin_:function(e){var t={x:va(e,"x","asin")};return ca.runKernel(ne,t)}}),Bo=wa({asinh_:function(e){var t={x:va(e,"x","asinh")};return ca.runKernel(re,t)}}),Fo=wa({atan_:function(e){var t={x:va(e,"x","atan")};return ca.runKernel(ae,t)}}),Co=wa({atan2_:function(e,t){var n,r=va(e,"a","atan2"),a=va(t,"b","atan2"),o={a:r=(n=i($r(r,a),2))[0],b:a=n[1]};return ca.runKernel(ie,o)}}),Po=wa({atanh_:function(e){var t={x:va(e,"x","atanh")};return ca.runKernel(oe,t)}});function Oo(e,t,n,r,a,o,s){void 0===s&&(s="channelsLast");var u,c=i(Wo(t),2),l=c[0],h=c[1];if("channelsLast"===s)u=[l,h,e[3],e[3]];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));u=[l,h,e[1],e[1]]}return Lo(e,u,n,r,a,o,!1,s)}function Lo(e,t,n,r,a,o,s,u){var c,l;void 0===s&&(s=!1),void 0===u&&(u="channelsLast");var h=i([-1,-1,-1,-1],4),f=h[0],d=h[1],p=h[2],g=h[3];if("channelsLast"===u)f=(c=i(e,4))[0],d=c[1],p=c[2],g=c[3];else{if("channelsFirst"!==u)throw new Error("Unknown dataFormat ".concat(u));f=(l=i(e,4))[0],g=l[1],d=l[2],p=l[3]}var m,v=i(t,4),y=v[0],b=v[1],w=v[3],k=i(Wo(n),2),x=k[0],E=k[1],S=i(Wo(r),2),A=S[0],_=S[1],I=Ko(y,A),N=Ko(b,_),M=function(e,t,n,r,a,o,i,s,u){var c,l,h;if("number"==typeof e){c={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};var f=function(e,t,n,r,a){null==r&&(r=Uo(e,t,n));var o=e[1];return[qo((e[0]-t+2*r)/n+1,a),qo((o-t+2*r)/n+1,a)]}([t,n],o,r,e,s);l=f[0],h=f[1]}else if("same"===e){l=Math.ceil(t/r),h=Math.ceil(n/a);var d=Math.max(0,(l-1)*r+o-t),p=Math.max(0,(h-1)*a+i-n);c={top:g=Math.floor(d/2),bottom:m=d-g,left:v=Math.floor(p/2),right:y=p-v,type:"SAME"}}else if("valid"===e)c={top:0,bottom:0,left:0,right:0,type:"VALID"},l=Math.ceil((t-o+1)/r),h=Math.ceil((n-i+1)/a);else{if("object"!=typeof e)throw Error("Unknown padding parameter: ".concat(e));var g,m,v,y;c={top:g="channelsLast"===u?e[1][0]:e[2][0],bottom:m="channelsLast"===u?e[1][1]:e[2][1],left:v="channelsLast"===u?e[2][0]:e[3][0],right:y="channelsLast"===u?e[2][1]:e[3][1],type:0===g&&0===m&&0===v&&0===y?"VALID":"EXPLICIT"},l=qo((t-o+g+m)/r+1,s),h=qo((n-i+v+y)/a+1,s)}return{padInfo:c,outHeight:l,outWidth:h}}(a,d,p,x,E,I,N,o,u),T=M.padInfo,D=M.outHeight,R=M.outWidth,B=s?w*g:w;return"channelsFirst"===u?m=[f,B,D,R]:"channelsLast"===u&&(m=[f,D,R,B]),{batchSize:f,dataFormat:u,inHeight:d,inWidth:p,inChannels:g,outHeight:D,outWidth:R,outChannels:B,padInfo:T,strideHeight:x,strideWidth:E,filterHeight:y,filterWidth:b,effectiveFilterHeight:I,effectiveFilterWidth:N,dilationHeight:A,dilationWidth:_,inShape:e,outShape:m,filterShape:t}}function zo(e,t,n,r,a,o,s,u){var c,l;void 0===o&&(o=!1),void 0===s&&(s="channelsLast");var h=i([-1,-1,-1,-1,-1],5),f=h[0],d=h[1],p=h[2],g=h[3],m=h[4];if("channelsLast"===s)f=(c=i(e,5))[0],d=c[1],p=c[2],g=c[3],m=c[4];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));f=(l=i(e,5))[0],m=l[1],d=l[2],p=l[3],g=l[4]}var v,y=i(t,5),b=y[0],w=y[1],k=y[2],x=y[4],E=i(Go(n),3),S=E[0],A=E[1],_=E[2],I=i(Go(r),3),N=I[0],M=I[1],T=I[2],D=Ko(b,N),R=Ko(w,M),B=Ko(k,T),F=function(e,t,n,r,a,o,i,s,u,c,l){var h,f,d,p;if("valid"===e&&(e=0),"number"==typeof e){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:0===e?"VALID":"NUMBER"};var g=function(e,t,n,r,a,o){null==a&&(a=Uo(e,t[0],r[0]));for(var i=[0,0,0,1],s=0;s<3;s++)e[s]+2*a>=t[s]&&(i[s]=qo((e[s]-t[s]+2*a)/r[s]+1,o));return i}([t,n,r,1],[s,u,c],0,[a,o,i],e,l);f=g[0],d=g[1],p=g[2]}else{if("same"!==e)throw Error("Unknown padding parameter: ".concat(e));var m=((f=Math.ceil(t/a))-1)*a+s-t,v=((d=Math.ceil(n/o))-1)*o+u-n,y=((p=Math.ceil(r/i))-1)*i+c-r,b=Math.floor(m/2),w=m-b,k=Math.floor(v/2),x=v-k,E=Math.floor(y/2);h={top:k,bottom:x,left:E,right:y-E,front:b,back:w,type:"SAME"}}return{padInfo:h,outDepth:f,outHeight:d,outWidth:p}}(a,d,p,g,S,A,_,D,R,B,u),C=F.padInfo,P=F.outDepth,O=F.outHeight,L=F.outWidth,z=o?x*m:x;return"channelsFirst"===s?v=[f,z,P,O,L]:"channelsLast"===s&&(v=[f,P,O,L,z]),{batchSize:f,dataFormat:s,inDepth:d,inHeight:p,inWidth:g,inChannels:m,outDepth:P,outHeight:O,outWidth:L,outChannels:z,padInfo:C,strideDepth:S,strideHeight:A,strideWidth:_,filterDepth:b,filterHeight:w,filterWidth:k,effectiveFilterDepth:D,effectiveFilterHeight:R,effectiveFilterWidth:B,dilationDepth:N,dilationHeight:M,dilationWidth:T,inShape:e,outShape:v,filterShape:t}}function Uo(e,t,n,r){void 0===r&&(r=1);var a=Ko(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function Wo(e){return"number"==typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function Go(e){return"number"==typeof e?[e,e,e]:e}function Ko(e,t){return t<=1?e:e+(e-1)*(t-1)}function qo(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error("Unknown roundingMode ".concat(t))}}function Vo(e){var t=i(Wo(e),3),n=t[0],r=t[1],a=t[2];return 1===n&&1===r&&1===a}function Ho(e,t){return Vo(e)||Vo(t)}function jo(e){return Wo(e).every((function(e){return e>0}))}function Zo(e){if("NHWC"===e)return"channelsLast";if("NCHW"===e)return"channelsFirst";throw new Error("Unknown dataFormat ".concat(e))}function Jo(e,t,n){if(null!=n){if("string"==typeof t)throw Error("Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,"."));if("number"==typeof t)p(w(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}));else{if("object"!=typeof t)throw Error("Error in ".concat(e,": Unknown padding parameter: ").concat(t));t.forEach((function(t){t.forEach((function(t){p(w(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}))}))}))}}}var Yo=wa({reshape_:function(e,t){var n={x:va(e,"x","reshape","string_or_numeric")},r={shape:t};return ca.runKernel(Ot,n,r)}}),Xo=wa({avgPool_:function(e,t,n,r,a){var o=va(e,"x","avgPool","float32");p(Ho(n,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")}));var i=o,s=!1;3===o.rank&&(s=!0,i=Yo(o,[1,o.shape[0],o.shape[1],o.shape[2]])),p(4===i.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank ".concat(i.rank,".")})),Jo("avgPool",r,a);var u={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},l=ca.runKernel(se,u,c);return l=po(l,o.dtype),s?Yo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Qo=wa({avgPool3d_:function(e,t,n,r,a,o){void 0===o&&(o="NDHWC");var i=va(e,"x","avgPool3d","float32"),s=i,u=!1;4===i.rank&&(u=!0,s=Yo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===s.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank ".concat(s.rank,".")})),p("NDHWC"===o,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),p("number"==typeof n&&n>0||Array.isArray(n)&&n[0]>0&&n[1]>0&&n[2]>0,(function(){return"Error in avgPool3d: Stride must be > 0, but got '".concat(n,"'")})),Jo("avgPool3d",r,a);var c={x:s},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},h=ca.runKernel(ue,c,l);return h=po(h,s.dtype),u?Yo(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),$o=wa({concat_:function(e,t){void 0===t&&(t=0),p(e.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=ya(e,"tensors","concat","string_or_numeric");if("complex64"===n[0].dtype&&n.forEach((function(e){if("complex64"!==e.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype ".concat(e.dtype,". "))})),1===n.length)return go(n[0]);var r=n,a={axis:t};return ca.runKernel(be,r,a)}}),ei=wa({matMul_:function(e,t,n,r){var a;void 0===n&&(n=!1),void 0===r&&(r=!1);var o=va(e,"a","matMul"),s=va(t,"b","matMul"),u={a:o=(a=i($r(o,s),2))[0],b:s=a[1]},c={transposeA:n,transposeB:r};return ca.runKernel(ce,u,c)}}),ti=wa({sigmoid_:function(e){var t={x:va(e,"x","sigmoid","float32")};return ca.runKernel(Qt,t)}}),ni=wa({slice_:function(e,t,n){var r=va(e,"x","slice","string_or_numeric");if(0===r.rank)throw new Error("Slicing scalar is not possible");var a={x:r},o={begin:t,size:n};return ca.runKernel(Jt,a,o)}}),ri=wa({tanh_:function(e){var t={x:va(e,"x","tanh","float32")};return ca.runKernel(mn,t)}}),ai=wa({basicLSTMCell_:function(e,t,n,r,a,o){var i=va(e,"forgetBias","basicLSTMCell"),s=va(t,"lstmKernel","basicLSTMCell"),u=va(n,"lstmBias","basicLSTMCell"),c=va(r,"data","basicLSTMCell"),l=va(a,"c","basicLSTMCell"),h=va(o,"h","basicLSTMCell"),f=$o([c,h],1),d=ei(f,s),p=wo(d,u),g=p.shape[0],m=p.shape[1]/4,v=[g,m],y=ni(p,[0,0],v),b=ni(p,[0,m],v),w=ni(p,[0,2*m],v),k=ni(p,[0,3*m],v),x=wo(Eo(ti(y),ri(b)),Eo(l,ti(wo(i,w))));return[x,Eo(ri(x),ti(k))]}}),oi=wa({batchToSpaceND_:function(e,t,n){var r=va(e,"x","batchToSpaceND"),a=t.reduce((function(e,t){return e*t}));p(r.rank>=1+t.length,(function(){return"input rank is ".concat(r.rank," but should be > than blockShape.length ").concat(t.length)})),p(n.length===t.length,(function(){return"crops.length is ".concat(n.length," but should be equal to blockShape.length ").concat(t.length)})),p(r.shape[0]%a==0,(function(){return"input tensor batch is ".concat(r.shape[0]," but is not divisible by the product of ")+"the elements of blockShape ".concat(t.join(" * ")," === ").concat(a)}));var o={x:r},i={blockShape:t,crops:n};return ca.runKernel(le,o,i)}}),ii=wa({batchNorm_:function(e,t,n,r,a,o){null==o&&(o=.001);var i,s,u=va(e,"x","batchNorm"),c=va(t,"mean","batchNorm"),l=va(n,"variance","batchNorm");null!=a&&(i=va(a,"scale","batchNorm")),null!=r&&(s=va(r,"offset","batchNorm")),p(c.rank===l.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),p(null==s||c.rank===s.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),p(null==i||c.rank===i.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var h=function(e){return 0===e.rank||1===e.rank?Yo(e,[1,1,1,e.size]):2===e.rank?Yo(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?Yo(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}(u),f={x:h,scale:i,offset:s,mean:c,variance:l},d={varianceEpsilon:o},g=ca.runKernel(He,f,d);return Yo(g,u.shape)}}),si=wa({batchNorm2d_:function(e,t,n,r,a,o){var i,s,u=va(e,"x","batchNorm"),c=va(t,"mean","batchNorm"),l=va(n,"variance","batchNorm");return null!=a&&(i=va(a,"scale","batchNorm")),null!=r&&(s=va(r,"offset","batchNorm")),p(2===u.rank,(function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+"".concat(u.rank,".")})),p(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(2===l.rank||1===l.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(2===i.rank||1===i.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+"but got rank ".concat(s.rank,".")})),ii(u,c,l,s,i,o)}}),ui=wa({batchNorm3d_:function(e,t,n,r,a,o){var i,s,u=va(e,"x","batchNorm"),c=va(t,"mean","batchNorm"),l=va(n,"variance","batchNorm");return null!=a&&(i=va(a,"scale","batchNorm")),null!=r&&(s=va(r,"offset","batchNorm")),p(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+"".concat(u.rank,".")})),p(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(3===l.rank||1===l.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(3===i.rank||1===i.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+"but got rank ".concat(s.rank,".")})),ii(u,c,l,s,i,o)}}),ci=wa({batchNorm4d_:function(e,t,n,r,a,o){var i,s,u=va(e,"x","batchNorm"),c=va(t,"mean","batchNorm"),l=va(n,"variance","batchNorm");return null!=a&&(i=va(a,"scale","batchNorm")),null!=r&&(s=va(r,"offset","batchNorm")),p(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+"".concat(u.rank,".")})),p(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(4===l.rank||1===l.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(4===i.rank||1===i.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+"but got rank ".concat(s.rank,".")})),ii(u,c,l,s,i,o)}}),li=wa({bincount_:function(e,t,n){var r=va(e,"x","bincount"),a=va(t,"weights","bincount");p("int32"===r.dtype,(function(){return"Error in bincount: input "+"dtype must be int32, but got ".concat(r.dtype)})),p(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),p(a.size===r.size||0===a.size,(function(){return"Error in bincount: weights must have the same size as input or"+"0-length, but got input shape: ".concat(r.shape,", weights shape: ")+"".concat(a.shape,".")}));var o={x:r,weights:a},i={size:n};return ca.runKernel(he,o,i)}}),hi=wa({bitwiseAnd_:function(e,t){var n=va(e,"x","bitwiseAnd"),r=va(t,"y","bitwiseAnd");if(!b(n.shape,r.shape))throw new Error("BitwiseAnd: Tensors must have the same shape. x: ".concat(n.shape,", y: ").concat(r.shape));if("int32"!==n.dtype||"int32"!==r.dtype)throw new Error("BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ".concat(n.dtype," and type of y: ").concat(r.dtype));var a={a:n,b:r};return ca.runKernel(fe,a)}}),fi=wa({broadcastArgs_:function(e,t){var n=va(e,"s0","broadcastArgs","int32"),r=va(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error("broadcastArgs(): first input must be a vector (rank=1). "+"Has rank ".concat(n.rank));if(1!==r.rank)throw new Error("broadcastArgs(): second input must be a vector (rank=1). "+"Has rank ".concat(r.rank));var a={s0:n,s1:r};return ca.runKernel(de,a)}}),di=wa({broadcastTo_:function(e,t){var n=va(e,"broadcastTo","x"),r=n.shape;if(W(t),t.lengthn.rank){for(var a=n.shape.slice();a.length=0;s--)if(o[s]===t[s])i[s]=1;else if(1!==n.shape[s])throw new Error("broadcastTo(): [".concat(r,"] cannot be broadcast to [").concat(t,"]."));var u=i.map((function(e,t){return e>1?t:-1})).filter((function(e){return e>=0}));if(0===u.length)return go(n);var c={x:n},l={reps:i};return ca.runKernel(vn,c,l)}}),pi=wa({ceil_:function(e){var t={x:va(e,"x","ceil","float32")};return ca.runKernel(ge,t)}});function gi(e,t,n){W(e);var r={shape:e,value:t,dtype:n=n||B(t)};return ca.runKernel(Ge,{},r)}var mi=wa({clipByValue_:function(e,t,n){var r=va(e,"x","clipByValue");if(p(t<=n,(function(){return"Error in clip: min (".concat(t,") must be ")+"less than or equal to max (".concat(n,").")})),t===n)return gi(r.shape,t,r.dtype);var a={x:r},o={clipValueMin:t,clipValueMax:n};return ca.runKernel(me,a,o)}}),vi=wa({concat1d_:function(e){return $o(e,0)}}),yi=wa({concat2d_:function(e,t){return $o(e,t)}}),bi=wa({concat3d_:function(e,t){return $o(e,t)}}),wi=wa({concat4d_:function(e,t){return $o(e,t)}}),ki=wa({conv2d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var s=va(e,"x","conv2d","float32"),u=va(t,"filter","conv2d","float32"),c=s,l=!1;3===s.rank&&(l=!0,c=Yo(s,[1,s.shape[0],s.shape[1],s.shape[2]])),p(4===c.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank ".concat(c.rank,".")})),p(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")})),Jo("conv2d",r,i);var h="NHWC"===a?c.shape[3]:c.shape[1];p(h===u.shape[2],(function(){return"Error in conv2d: depth of input (".concat(h,") must match ")+"input depth for filter ".concat(u.shape[2],".")})),p(Ho(n,o),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),p(jo(o),(function(){return"Error in conv2D: Dilated rates should be larger than 0."})),p(jo(n),(function(){return"Error in conv2D: Strides should be larger than 0."}));var f={x:c,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:i},g=ca.runKernel(we,f,d);return l?Yo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),xi=wa({conv1d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NWC"),void 0===o&&(o=1);var s=va(e,"x","conv1d"),u=va(t,"filter","conv1d"),c=s,l=!1;2===s.rank&&(l=!0,c=Yo(s,[1,s.shape[0],s.shape[1]])),p(3===c.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank ".concat(c.rank,".")})),p(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+"".concat(u.rank,".")})),Jo("conv1d",r,i),p(c.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input (".concat(c.shape[2],") must match ")+"input depth for filter ".concat(u.shape[1],".")})),p(Ho(n,o),(function(){return"Error in conv1D: Either stride or dilation must be 1. "+"Got stride ".concat(n," and dilation '").concat(o,"'")})),p(jo(o),(function(){return"Error in conv1D: Dilated rates should be larger than 0."})),p(jo(n),(function(){return"Error in conv1D: Stride should be larger than 0."})),p("NWC"===a,(function(){return"Error in conv1d: got dataFormat of ".concat(a," but only NWC is currently supported.")}));var h=Yo(u,[1,u.shape[0],u.shape[1],u.shape[2]]),f=Yo(c,[c.shape[0],1,c.shape[1],c.shape[2]]),d=ki(f,h,[1,n],r,"NHWC",[1,o],i);return Yo(d,l?[d.shape[2],d.shape[3]]:[d.shape[0],d.shape[2],d.shape[3]])}}),Ei=wa({conv2DBackpropInput_:function(e,t,n,r,a,o,i){void 0===o&&(o="NHWC"),p(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var s=e,u=t,c=!1;3===t.rank&&(c=!0,u=Yo(t,[1,t.shape[0],t.shape[1],t.shape[2]]),s=[1,e[0],e[1],e[2]]),p(4===s.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+"".concat(s.length,".")})),p(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+"rank ".concat(u.rank)})),p(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+"rank ".concat(n.rank)}));var l="NHWC"===o?s[3]:s[1],h="NHWC"===o?u.shape[3]:u.shape[1];p(l===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input (".concat(l,") must ")+"match input depth for filter ".concat(n.shape[2],".")})),p(h===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output (".concat(h,") must ")+"match output depth for filter ".concat(n.shape[3],".")})),Jo("conv2dDerInput",a,i);var f={dy:u,filter:n},d={strides:r,pad:a,dataFormat:o,dimRoundingMode:i,inputShape:s},g=ca.runKernel(xe,f,d);return c?Yo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),Si=wa({conv2dTranspose_:function(e,t,n,r,a,o){var i=va(e,"x","conv2dTranspose"),s=va(t,"filter","conv2dTranspose");return Ei(n,i,s,r,a,"NHWC",o)}}),Ai=wa({conv3d_:function(e,t,n,r,a,o){void 0===a&&(a="NDHWC"),void 0===o&&(o=[1,1,1]);var i=va(e,"x","conv3d"),s=va(t,"filter","conv3d"),u=i,c=!1;4===i.rank&&(c=!0,u=Yo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank ".concat(u.rank,".")})),p(5===s.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+"".concat(s.rank,".")})),p(u.shape[4]===s.shape[3],(function(){return"Error in conv3d: depth of input (".concat(u.shape[4],") must match ")+"input depth for filter ".concat(s.shape[3],".")})),p(Ho(n,o),(function(){return"Error in conv3D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),p("NDHWC"===a,(function(){return"Error in conv3d: got dataFormat of ".concat(a," but only NDHWC is currently supported.")})),p(jo(o),(function(){return"Error in conv3D: Dilated rates should be larger than 0."})),p(jo(n),(function(){return"Error in conv3D: Strides should be larger than 0."}));var l={x:u,filter:s},h={strides:n,pad:r,dataFormat:a,dilations:o},f=ca.runKernel(Ee,l,h);return c?Yo(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}}),_i=wa({conv3DBackpropInput_:function(e,t,n,r,a){p(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var o=e,i=t,s=!1;4===t.rank&&(s=!0,i=Yo(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),o=[1,e[0],e[1],e[2],e[3]]);var u=o[4],c=i.shape[4];p(5===o.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+"".concat(o.length,".")})),p(5===i.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+"rank ".concat(i.rank)})),p(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+"rank ".concat(n.rank)})),p(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input (".concat(u,") must ")+"match input depth for filter ".concat(n.shape[3],".")})),p(c===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output (".concat(c,") must ")+"match output depth for filter ".concat(n.shape[4],".")}));var l={dy:i,filter:n},h={pad:a,strides:r,inputShape:o},f=ca.runKernel(Se,l,h);return s?Yo(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}}),Ii=wa({conv3dTranspose_:function(e,t,n,r,a){var o=va(e,"x","conv3dTranspose"),i=va(t,"filter","conv3dTranspose");return _i(n,o,i,r,a)}}),Ni=wa({cos_:function(e){var t={x:va(e,"x","cos","float32")};return ca.runKernel("Cos",t)}}),Mi=wa({cosh_:function(e){var t={x:va(e,"x","cosh","float32")};return ca.runKernel(Ae,t)}}),Ti=wa({cumprod_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:va(e,"x","cumprod")},o={axis:t,exclusive:n,reverse:r};return ca.runKernel(_e,a,o)}}),Di=wa({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:va(e,"x","cumsum")},o={axis:t,exclusive:n,reverse:r};return ca.runKernel(Ie,a,o)}}),Ri=wa({denseBincount_:function(e,t,n,r){void 0===r&&(r=!1);var a=va(e,"x","denseBincount"),o=va(t,"weights","denseBincount");p("int32"===a.dtype,(function(){return"Error in denseBincount: input "+"dtype must be int32, but got ".concat(a.dtype)})),p(a.rank<=2,(function(){return"Error in denseBincount: input must be at most rank 2, but got "+"rank ".concat(a.rank,".")})),p(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),p(o.size===a.size||0===o.size,(function(){return"Error in denseBincount: weights must have the same shape as x or "+"0-length, but got x shape: ".concat(a.shape,", weights shape: ")+"".concat(o.shape,".")}));var i={x:a,weights:o},s={size:n,binaryOutput:r};return ca.runKernel(Me,i,s)}}),Bi=wa({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=va(e,"x","depthToSpace","float32"),a="NHWC"===n?r.shape[1]:r.shape[2],o="NHWC"===n?r.shape[2]:r.shape[3],i="NHWC"===n?r.shape[3]:r.shape[1];p(t>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: ".concat(t)})),p(a*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(a," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),p(o*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(o," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),p(i%(t*t)==0,(function(){return"Dimension size must be evenly divisible by ".concat(t*t," but is ").concat(i," for depthToSpace with input shape ").concat(r.shape)}));var s={x:r},u={blockSize:t,dataFormat:n};return ca.runKernel(Te,s,u)}}),Fi=wa({depthwiseConv2d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var s=va(e,"x","depthwiseConv2d","float32"),u=va(t,"filter","depthwiseConv2d","float32"),c=s,l=!1;3===s.rank&&(l=!0,c=Yo(s,[1,s.shape[0],s.shape[1],s.shape[2]])),p(4===c.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(c.rank,".")})),p(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")}));var h="NHWC"===a?c.shape[3]:c.shape[1];p(h===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels "+"(".concat(h,") must match the inChannels dimension in ")+"filter ".concat(u.shape[2],".")})),Jo("depthwiseConv2d",r,i);var f={x:c,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:i},g=ca.runKernel(De,f,d);return l?Yo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),Ci=wa({diag_:function(e){var t={x:va(e,"x","diag")};return ca.runKernel(Fe,t)}}),Pi=wa({dilation2d_:function(e,t,n,r,a,o){void 0===a&&(a=[1,1]),void 0===o&&(o="NHWC");var i=va(e,"x","dilation2d"),s=va(t,"filter","dilation2d");p(3===i.rank||4===i.rank,(function(){return"Error in dilation2d: input must be rank 3 or 4, but got rank "+"".concat(i.rank,".")})),p(3===s.rank,(function(){return"Error in dilation2d: filter must be rank 3, but got rank "+"".concat(s.rank,".")})),p("NHWC"===o,(function(){return"Error in dilation2d: Only NHWC is currently supported, "+"but got dataFormat of ".concat(o)}));var u=i,c=!1;3===i.rank&&(u=Yo(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0),p(u.shape[3]===s.shape[2],(function(){return"Error in dilation2d: input and filter must have the same depth: ".concat(u.shape[3]," vs ").concat(s.shape[2])}));var l={x:u,filter:s},h={strides:n,pad:r,dilations:a},f=ca.runKernel(Ce,l,h);return c?Yo(f,[f.shape[1],f.shape[2],f.shape[3]]):f}});function Oi(e,t){for(var n=e.length,r=[],a=0;a1&&1===i&&r.unshift(o)}return r}function Li(e,t){for(var n=[],r=0;r1)&&n.unshift(o)}return n}function zi(e,t){for(var n=Math.max(e.length,t.length),r=new Array(n),a=0;a0,(function(){return"variableGrads() expects at least one of the input variables to "+"be trainable, but none of the ".concat(o," variables is ")+"trainable."}));var i=ca.gradients(e,t,null,!0),s=i.value,u=i.grads;p(u.some((function(e){return null!=e})),(function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."})),p(0===s.rank,(function(){return"The f passed in variableGrads(f) must return a scalar, but it "+"returned a rank-".concat(s.rank," tensor")}));var c={};return t.forEach((function(e,t){null!=u[t]&&(c[e.name]=u[t])})),null!=a&&a.forEach((function(e){return c[e.name]=null})),{value:s,grads:c}}function Ms(e){return ca.customGrad(e)}function Ts(e){if(e.filter((function(e){return null==e})).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var Ds=wa({neg_:function(e){var t={x:va(e,"x","neg")};return ca.runKernel("Neg",t)}}),Rs=wa({softplus_:function(e){var t={x:va(e,"x","softplus")};return ca.runKernel($t,t)}}),Bs=wa({logSigmoid_:function(e){var t=va(e,"x","logSigmoid"),n=Ms((function(e){return{value:Ds(Rs(Ds(e))),gradFunc:function(t){return Eo(t,ti(Ds(e)))}}}));return n(t)}}),Fs=wa({sub_:function(e,t){var n,r=va(e,"a","sub"),a=va(t,"b","sub"),o={a:r=(n=i($r(r,a),2))[0],b:a=n[1]};return ca.runKernel("Sub",o)}}),Cs=wa({logSoftmax_:function(e,t){void 0===t&&(t=-1);var n=va(e,"logits","logSoftmax");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. "+"Logits was rank ".concat(n.rank," and axis was ").concat(t));var r=Ms((function(e,n){var r=$i(e,t,!0),a=Fs(e,r),o=Fs(po(a,"float32"),_s(os(cs(a),t,!0)));return n([o]),{value:o,gradFunc:function(e,n){var r=i(n,1)[0],a=cs(r);return Fs(e,Eo(os(e,t,!0),a))}}}));return r(n)}}),Ps=wa({logSumExp_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=va(e,"x","logSumExp"),a=x(t,r.shape),o=$i(r,a,!0),i=Fs(r,o),s=cs(i),u=os(s,a),c=_s(u),l=wo(Yo(o,c.shape),c);if(n){var h=Qi(l.shape,a);return Yo(l,h)}return l}}),Os=wa({logicalAnd_:function(e,t){var n=va(e,"a","logicalAnd","bool"),r=va(t,"b","logicalAnd","bool");zi(n.shape,r.shape);var a={a:n,b:r};return ca.runKernel(ut,a)}}),Ls=wa({logicalNot_:function(e){var t={x:va(e,"x","logicalNot","bool")};return ca.runKernel(ct,t)}}),zs=wa({logicalOr_:function(e,t){var n=va(e,"a","logicalOr","bool"),r=va(t,"b","logicalOr","bool");zi(n.shape,r.shape);var a={a:n,b:r};return ca.runKernel(lt,a)}}),Us=wa({logicalXor_:function(e,t){var n=va(e,"a","logicalXor","bool"),r=va(t,"b","logicalXor","bool");return zi(n.shape,r.shape),Os(zs(e,t),Ls(Os(e,t)))}}),Ws=2147483648,Gs=wa({searchSorted_:function(e,t,n){void 0===n&&(n="left");var r=va(e,"sortedSequence","searchSorted"),a=va(t,"values","searchSorted"),o=r.shape[r.shape.length-1],i=a.shape[a.shape.length-1],s=Yo(r,[-1,o]),u=Yo(a,[-1,i]);if(s.rank<2)throw new Error("Sorted input argument must be at least 2-dimensional");if(s.shape[0]!==u.shape[0])throw new Error("Leading dimension of 'sortedSequence' and 'values' must match.");if(v(u.shape)>=Ws)throw new Error("values tensor size must less than ".concat(Ws));if(s.shape[1]>=Ws)throw new Error("trailing dim_size must less than ".concat(Ws," for int32 output type, was ").concat(s.shape[1]));var c={sortedSequence:s,values:u},l={side:n};return ca.runKernel(Ht,c,l)}}),Ks=wa({maxPool_:function(e,t,n,r,a){var o=va(e,"x","maxPool"),i=o,s=!1;3===o.rank&&(s=!0,i=Yo(o,[1,o.shape[0],o.shape[1],o.shape[2]])),p(4===i.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(i.rank,".")})),p(Ho(n,1),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")})),Jo("maxPool",r,a);var u={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},l=ca.runKernel(ft,u,c);return s?Yo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),qs=wa({maxPool3d_:function(e,t,n,r,a,o){void 0===t&&(t=[1,1,1]),void 0===o&&(o="NDHWC");var i=va(e,"x","maxPool3d"),s=i,u=!1;4===i.rank&&(u=!0,s=Yo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===s.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank ".concat(s.rank,".")})),p("NDHWC"===o,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),Jo("maxPool3d",r,a);var c={x:s},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},h=ca.runKernel(dt,c,l);return u?Yo(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),Vs=wa({maxPoolWithArgmax_:function(e,t,n,r,a){void 0===a&&(a=!1);var o={x:va(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},s=ca.runKernel(pt,o,i);return{result:s[0],indexes:s[1]}}}),Hs=wa({maximum_:function(e,t){var n,r=va(e,"a","maximum"),a=va(t,"b","maximum");r=(n=i($r(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=po(r,"int32"),a=po(a,"int32")),zi(r.shape,a.shape);var o={a:r,b:a};return ca.runKernel(ht,o)}}),js=wa({mean_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:va(e,"x","mean")},a={axis:t,keepDims:n};return ca.runKernel(gt,r,a)}});function Zs(e,t){if(void 0===t&&(t="float32"),W(e),"complex64"===t){var n=Zs(e,"float32"),r=Zs(e,"float32");return ka(n,r)}var a=U(v(e),t);return ca.makeTensor(a,e,t)}function Js(e,t){if(void 0===t&&(t="float32"),W(e),"complex64"===t){var n=Js(e,"float32"),r=Zs(e,"float32");return ka(n,r)}var a=z(v(e),t);return ca.makeTensor(a,e,t)}var Ys=wa({minimum_:function(e,t){var n,r=va(e,"a","minimum"),a=va(t,"b","minimum");r=(n=i($r(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=po(r,"int32"),a=po(a,"int32")),zi(r.shape,a.shape);var o={a:r,b:a};return ca.runKernel(mt,o)}}),Xs=wa({mirrorPad_:function(e,t,n){p("reflect"===n||"symmetric"===n,(function(){return"Invalid mode. Mode must be either reflect or symmetric. "+"Got ".concat(n,".")}));var r=va(e,"x","mirrorPad");if(0===r.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");p(t.length===r.rank,(function(){return"Padding doesn't match input. Must be ".concat(r.rank,". ")+"Got ".concat(t.length,".")}));for(var a="reflect"===n?1:0,o=function(e){p(2===t[e].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),p(t[e][0]>=0&&t[e][0]<=r.shape[e]-a&&t[e][1]>=0&&t[e][1]<=r.shape[e]-a,(function(){return"Padding in dimension ".concat(e," cannot be greater than or equal ")+"to ".concat(r.shape[e]-a," or less than 0 for input of ")+"shape ".concat(r.shape)}))},i=0;i2)throw new Error("Rank of probabilities must be 1 or 2, but is ".concat(i));n=n||Math.random();var s={logits:1===i?Yo(a,[1,-1]):a},u={numSamples:t,seed:n,normalized:r},c=ca.runKernel(yt,s,u);return 1===i?Yo(c,[c.size]):c}}),nu=wa({notEqual_:function(e,t){var n,r=va(e,"a","notEqual","string_or_numeric"),a=va(t,"b","notEqual","string_or_numeric");r=(n=i($r(r,a),2))[0],a=n[1],zi(r.shape,a.shape);var o={a:r,b:a};return ca.runKernel(wt,o)}}),ru=wa({oneHot_:function(e,t,n,r,a){if(void 0===n&&(n=1),void 0===r&&(r=0),void 0===a&&(a="int32"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is ".concat(t));var o={indices:va(e,"indices","oneHot","int32")},i={dtype:a,depth:t,onValue:n,offValue:r};return ca.runKernel(At,o,i)}}),au=wa({onesLike_:function(e){var t={x:va(e,"x","onesLike")};return ca.runKernel(St,t)}}),ou=wa({outerProduct_:function(e,t){var n=va(e,"v1","outerProduct"),r=va(t,"v2","outerProduct");p(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+"".concat(n.rank," and ").concat(r.rank,".")}));var a=Yo(n,[-1,1]),o=Yo(r,[1,-1]);return ei(a,o)}}),iu=wa({pad_:function(e,t,n){void 0===n&&(n=0);var r=va(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a={paddings:t,constantValue:n},o={x:r};return ca.runKernel(It,o,a)}}),su=wa({pad1d_:function(e,t,n){return void 0===n&&(n=0),p(2===t.length,(function(){return"Invalid number of paddings. Must be length of 2."})),iu(e,[t],n)}}),uu=wa({pad2d_:function(e,t,n){return void 0===n&&(n=0),p(2===t.length&&2===t[0].length&&2===t[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),iu(e,t,n)}}),cu=wa({pad3d_:function(e,t,n){return void 0===n&&(n=0),p(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),iu(e,t,n)}}),lu=wa({pad4d_:function(e,t,n){return void 0===n&&(n=0),p(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),iu(e,t,n)}}),hu=wa({spaceToBatchND_:function(e,t,n){var r=va(e,"x","spaceToBatchND");p(r.rank>=1+t.length,(function(){return"input rank ".concat(r.rank," should be > than [blockShape] ").concat(t.length)})),p(n.length===t.length,(function(){return"paddings.shape[0] ".concat(n.length," must be equal to [blockShape] ").concat(t.length)})),p(r.shape.reduce((function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e}),!0),(function(){return"input spatial dimensions ".concat(r.shape.slice(1)," with paddings ").concat(n.toString()," must be divisible by blockShapes ").concat(t.toString())}));var a={x:r},o={blockShape:t,paddings:n};return ca.runKernel(tn,a,o)}}),fu=wa({pool_:function(e,t,n,r,a,o,s){null==a&&(a=[1,1]),null==o&&(o=1),0===r&&(r="valid");var u=va(e,"x","maxPool"),c=u,l=!1;3===u.rank&&(l=!0,c=Yo(u,[1,u.shape[0],u.shape[1],u.shape[2]])),p(Ho(o,a),(function(){return"Error in pool: Either strides or dilations must be 1. "+"Got strides ".concat(o," and dilations '").concat(a,"'")}));var h,f=Oo(c.shape,t,o,a,r),d=[f.dilationHeight,f.dilationWidth];h="same"===r?function(e,t){var n=e.map((function(e,n){return e+(e-1)*(t[n]-1)})).map((function(e){return e-1})),r=n.map((function(e){return Math.floor(e/2)})),a=n.map((function(e,t){return e-r[t]}));return n.map((function(e,t){return[r[t],a[t]]}))}([f.filterHeight,f.filterWidth],d):[[0,0],[0,0]];var g=1===d[0]&&1===d[1],m=i(function(e,t,n){var r=n.map((function(e){return e[0]})),a=n.map((function(e){return e[1]})),o=e.concat(r,a),i=t.map((function(e,t){return(e-o[t]%e)%e})),s=a.map((function(e,t){return e+i[t]}));return[t.map((function(e,t){return[r[t],s[t]]})),t.map((function(e,t){return[0,i[t]]}))]}([f.inHeight,f.inWidth],d,h),2),v=m[0],y=m[1],b=g?r:"valid",w=g?c:hu(c,d,v),k=("avg"===n?function(){return Xo(w,t,o,b,s)}:function(){return Ks(w,t,o,b,s)})(),x=g?k:oi(k,d,y);return l?Yo(x,[x.shape[1],x.shape[2],x.shape[3]]):x}}),du=wa({prelu_:function(e,t){var n={x:va(e,"x","prelu"),alpha:va(t,"alpha","prelu")};return ca.runKernel(Nt,n)}}),pu=wa({prod_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=va(e,"x","prod");"bool"===r.dtype&&(r=po(r,"int32"));var a={x:r},o={axis:t,keepDims:n};return ca.runKernel(Mt,a,o)}}),gu=wa({raggedGather_:function(e,t,n,r){var a={paramsNestedSplits:e.map((function(e,t){return va(e,"tensors".concat(t),"raggedGather","int32")})),paramsDenseValues:va(t,"paramsDenseValues","raggedGather"),indices:va(n,"indices","raggedGather","int32")},o={outputRaggedRank:r},i=ca.runKernel(Tt,a,o);return{outputNestedSplits:i.slice(0,i.length-1),outputDenseValues:i[i.length-1]}}}),mu=wa({raggedRange_:function(e,t,n){var r=va(e,"starts","raggedRange"),a={starts:r,limits:va(t,"limits","raggedRange",r.dtype),deltas:va(n,"deltas","raggedRange",r.dtype)},o=ca.runKernel(Dt,a);return{rtNestedSplits:o[0],rtDenseValues:o[1]}}}),vu=wa({raggedTensorToTensor_:function(e,t,n,r,a){var o=va(e,"shape","raggedTensorToTensor","int32"),i=va(t,"values","raggedTensorToTensor"),s={shape:o,values:i,defaultValue:va(n,"defaultValue","raggedTensorToTensor",i.dtype),rowPartitionTensors:r.map((function(e,t){return va(e,"tensors".concat(t),"raggedTensorToTensor","int32")}))},u={rowPartitionTypes:a};return ca.runKernel(Rt,s,u)}}),yu=wa({rand_:function(e,t,n){W(e);var r=v(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type ".concat(n));a=new Uint8Array(r)}for(var o=0;o>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function a(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function o(e,t){var n=new r(e),o=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.alea=o}(0,e)}(bu);var wu=bu.exports,ku={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xor128=o}(0,e)}(ku);var xu=ku.exports,Eu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}function a(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function o(e,t){var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xorwow=o}(0,e)}(Eu);var Su=Eu.exports,Au={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}function a(e,t){return t.x=e.x.slice(),t.i=e.i,t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&(o.x&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xorshift7=o}(0,e)}(Au);var _u=Au.exports,Iu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,o=t.i;return t.w=r=r+1640531527|0,n=a[o+34&127],e=a[o=o+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[o]=n^e,t.i=o,n+(r^r>>>16)|0},function(e,t){var n,r,a,o,i,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,o=-32;o>>15,r^=r<<4,r^=r>>>13,o>=0&&(i=i+1640531527|0,a=0==(n=s[127&o]^=r+i)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,o=512;o>0;--o)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=i,e.X=s,e.i=a}(t,e)}function a(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&(o.X&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xor4096=o}(0,e)}(Iu);var Nu=Iu.exports,Mu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.tychei=o}(0,e)}(Mu);var Tu=Mu.exports,Du={exports:{}};!function(e){!function(t,n,r){var a,o=256,i=r.pow(o,6),s=r.pow(2,52),u=2*s,c=255;function l(e,c,l){var m=[],v=p(d((c=1==c?{entropy:!0}:c||{}).entropy?[e,g(n)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(t.crypto||t.msCrypto).getRandomValues(e)),g(e)}catch(e){var r=t.navigator,i=r&&r.plugins;return[+new Date,t,i,t.screen,g(n)]}}():e,3),m),y=new h(m),b=function(){for(var e=y.g(6),t=i,n=0;e=u;)e/=2,t/=2,n>>>=1;return(e+n)/t};return b.int32=function(){return 0|y.g(4)},b.quick=function(){return y.g(4)/4294967296},b.double=b,p(g(y.S),n),(c.pass||l||function(e,t,n,a){return a&&(a.S&&f(a,y),e.state=function(){return f(y,{})}),n?(r.random=e,t):e})(b,v,"global"in c?c.global:this==r,c.state)}function h(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);an)}var Ku={__proto__:null,TEST_EPSILON_FLOAT16:.1,createVideoElement:function(e){var t=document.createElement("video");return"playsInline"in t&&(t.playsInline=!0),t.muted=!0,t.loop=!0,t.style.position="fixed",t.style.left="0px",t.style.top="0px",t.preload="auto",t.appendChild(e),new Promise((function(e){t.addEventListener("loadeddata",(function(n){return e(t)})),t.load()}))},encodeStrings:function e(t){for(var n=0;nn)throw new Error("Value out of range:".concat(e[r]," low: ").concat(t,", high: ").concat(n))},play:function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,e.play()];case 1:return t.sent(),"requestVideoFrameCallback"in e?[4,new Promise((function(t){e.requestVideoFrameCallback(t)}))]:[3,3];case 2:t.sent(),t.label=3;case 3:return[2]}}))}))},testEpsilon:Uu},qu=function(){function e(e,t,n,r,a){this.mean=e,this.stdDev=t,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var o=a||Math.random();this.random=zu.alea(o.toString())}return e.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var e=this.nextVal;return this.nextVal=NaN,e}for(var t,n,r=!1;!r;){var a=void 0,o=void 0,i=void 0;do{i=(a=2*this.random()-1)*a+(o=2*this.random()-1)*o}while(i>=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*o*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}(),Vu=function(){function e(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;var a=r||Math.random();this.randu=zu.alea(a.toString()),this.randn=new qu(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}return e.prototype.nextValue=function(){for(var e,t,n,r,a,o;;){do{r=this.randn.nextValue(),o=1+this.c*r}while(o<=0);if(o*=o*o,t=1-.331*(e=r*r)*e,n=.5*e+this.d*(1-o+Math.log(o)),(a=this.randu())r){var s=e.shape.map((function(e){return e}));s[e.shape.length-1]=t-r,n=$o([e,Zs(s)],e.shape.length-1),r=t}else n=e;var u=Ki(n),c=Yo(ka(n,u),[a,r]),l=wc(c),h=Math.floor(r/2)+1,f=$u(l),d=ys(l),g=Ec(f,[h,r-h],f.shape.length-1),m=Ec(d,[h,r-h],d.shape.length-1),v=n.shape.slice();return v[n.shape.length-1]=h,Yo(ka(g[0],m[0]),v)}}),Ac=wa({squaredDifference_:function(e,t){var n,r=va(e,"a","squaredDifference"),a=va(t,"b","squaredDifference");r=(n=i($r(r,a),2))[0],a=n[1],zi(r.shape,a.shape);var o={a:r,b:a};return ca.runKernel(ln,o,{})}}),_c=wa({squeeze_:function(e,t){var n=va(e,"x","squeeze","string_or_numeric");return Yo(n,E(n.shape,t).newShape)}}),Ic=wa({stack_:function(e,t){void 0===t&&(t=0);var n=ya(e,"tensors","stack","string_or_numeric");p(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),n.length>0&&p(t<=n[0].rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n,a={axis:t};return ca.runKernel(_t,r,a)}}),Nc=wa({step_:function(e,t){void 0===t&&(t=0);var n={x:va(e,"x","step")},r={alpha:t};return ca.runKernel(An,n,r)}}),Mc=wa({stridedSlice_:function(e,t,n,r,a,o,i,s,u){void 0===a&&(a=0),void 0===o&&(o=0),void 0===i&&(i=0),void 0===s&&(s=0),void 0===u&&(u=0);var c={x:va(e,"x","stridedSlice","string_or_numeric")},l={begin:t,end:n,strides:r,beginMask:a,endMask:o,ellipsisMask:i,newAxisMask:s,shrinkAxisMask:u};return ca.runKernel(fn,c,l)}}),Tc=wa({tan_:function(e){var t={x:va(e,"x","tan","float32")};return ca.runKernel("Tan",t)}});function Dc(e,t){m(e);var n=pa(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return xa(e,null,n,t)}function Rc(e,t,n){if(m(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");var r=pa(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return xa(e,t,r,n)}function Bc(e,t,n){if(m(e),null!=t&&3!==t.length)throw new Error("tensor3d() requires shape to have three numbers");var r=pa(e,n);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return xa(e,t,r,n)}function Fc(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + "+"shape[sliceDim:], got updates.shape: ".concat(n.shape)+", indices.shape: ".concat(t.shape,", shape: ").concat(e)+", sliceDim: ".concat(r,", and batchDim: ").concat(a,".");if(n.rank1?t.shape[r-1]:1,o=n.length,u=1,c=a;c= 0 but got ".concat(t));if(t>a)throw new Error("'k' passed to topk() must be <= the last dimension (".concat(a,") ")+"but got ".concat(t));var o={x:r},s={k:t,sorted:n},u=i(ca.runKernel(yn,o,s),2);return{values:u[0],indices:u[1]}}}),Uc=wa({truncatedNormal_:function(e,t,n,r,a){if(void 0===t&&(t=0),void 0===n&&(n=1),W(e),null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");for(var o=new qu(t,n,r,!0,a),i=fo(e,r),s=0;s0,(function(){return"The input tensor must be at least 1D"}));var r={x:n},a={axis:t},o=i(ca.runKernel(kn,r,a),2);return{values:o[0],indices:o[1]}}}),Gc=wa({unsortedSegmentSum_:function(e,t,n){var r=va(e,"x","unsortedSegmentSum"),a=va(t,"segmentIds","unsortedSegmentSum","int32");p(w(n),(function(){return"numSegments must be of dtype int"}));var o={x:r,segmentIds:a},i={numSegments:n};return ca.runKernel(En,o,i)}}),Kc=wa({unstack_:function(e,t){void 0===t&&(t=0);var n=va(e,"x","unstack","string_or_numeric");p(t>=-n.shape.length&&t=0&&e2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+" but got shape ".concat(e.shape,"."));var a=e.rank>0?e.shape[0]:1,o=e.rank>1?e.shape[1]:1;if(n.length!==o)throw new Error("outputShape has incorrect number of elements:,"+" ".concat(n.length,", should be: ").concat(o,"."));var i=t.size;if(0!==t.rank&&(1!==t.rank||i!==a))throw new Error("sparseValues has incorrect shape "+"".concat(t.shape,", should be [] or [").concat(a,"]"));if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,o,n,i);var s={sparseIndices:a,sparseValues:o,defaultValue:i},u={outputShape:n};return ca.runKernel(cn,s,u)}}),Yc=wa({gatherND_:function(e,t){var n=va(t,"indices","gatherND","int32"),r={params:va(e,"x","gatherND","string_or_numeric"),indices:n};return ca.runKernel(Ze,r)}}),Xc=wa({dropout_:function(e,t,n,r){var a=va(e,"x","dropout");if(p("float32"===a.dtype,(function(){return"x has to be a floating point tensor since it's going to be "+"scaled, but got a ".concat(a.dtype," tensor instead.")})),p(t>=0&&t<1,(function(){return"rate must be a float in the range [0, 1), but got ".concat(t,".")})),0===t)return e instanceof Wr?a.clone():a;var o=function(e,t){if(null==t)return e.shape.slice();if(b(e.shape,t))return t;if(e.shape.length===t.length){for(var n=[],r=0;r0&&(n=os(n,r)),Yo(n,e.shape)}function rl(e,t,n,r){if("linear"===t)return e;if("relu"===t)return tc(e);if("elu"===t)return ji(e);if("relu6"===t)return nc(e);if("prelu"===t)return du(e,n);if("leakyrelu"===t)return xs(e,r);if("sigmoid"===t)return ti(e);throw new Error("Unknown fused activation ".concat(t,"."))}var al=function(e,t){return!(e>0)||"linear"===t},ol=wa({fusedConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,u=void 0===s?"NHWC":s,c=e.dilations,l=void 0===c?[1,1]:c,h=e.dimRoundingMode,f=e.bias,d=e.activation,g=void 0===d?"linear":d,m=e.preluActivationWeights,v=e.leakyreluAlpha;if(g=g||"linear",!1===al(ca.state.gradientDepth,g)){p("NHWC"===u,(function(){return"Error in fused conv2d: got dataFormat of ".concat(u," but ")+"only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear."}));var y=ki(n,r,a,o,u,l,h);return null!=f&&(y=wo(y,f)),rl(y,g,m,v)}var b=va(n,"x","conv2d","float32"),w=va(r,"filter","conv2d","float32"),k=b,x=!1;3===b.rank&&(x=!0,k=Yo(b,[1,b.shape[0],b.shape[1],b.shape[2]])),p(4===k.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+"".concat(k.rank,".")})),p(4===w.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+"".concat(w.rank,".")})),Jo("fused conv2d",o,h);var E="NHWC"===u?k.shape[3]:k.shape[1];p(w.shape[2]===E,(function(){return"Error in conv2d: depth of input (".concat(E,") must match ")+"input depth for filter ".concat(w.shape[2],".")})),p(Ho(a,l),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(a," and dilations '").concat(l,"'")}));var S,A,_=Lo(k.shape,w.shape,a,l,o,h);if(null!=f&&(t=i($r(S=va(f,"bias","fused conv2d"),b),1),S=t[0],"NHWC"===u?zi(_.outShape,S.shape):(p(S.shape.length<=1,(function(){return"Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of "+"rank-".concat(S.shape.length,".")})),p(0===S.shape.length||S.shape[0]===_.outChannels||1===S.shape[0],(function(){return"Error in fused conv2d: bias shape (".concat(S.shape,") is not ")+"compatible with the number of output channels "+"(".concat(_.outChannels,")")})))),null!=m){var I=m.shape;if(p(I.length<=1||3===I.length,(function(){return"Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of "+"rank-".concat(I.length,".")})),1===I.length)p(1===I[0]||I[0]===_.outChannels,(function(){return"Error in fused conv2d: PReLU activation weights "+"(".concat(I,") is not compatible with the number of output ")+"channels (".concat(_.outChannels,").")}));else if(3===I.length)try{zi(I,_.outShape)}catch(e){var N="Error in fused conv2d: PReLU activation weights (".concat(I,") ")+"is not compatible with the output shape of the conv2d "+"(".concat(_.outShape,").");throw Error(N)}A=va(m,"prelu weights","fused conv2d")}var M=function(e,t){p("NHWC"===u,(function(){return"Error in gradient of fused conv2D: got dataFormat of ".concat(u," but only NHWC is currently supported.")}));var n=i(t,4),r=n[0],s=n[1],c=n[2],h=n[3],f=tl(e,c,g);p(Vo(l),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+"are not yet supported in gradients. Got dilations '".concat(l,"'")}));var d=[Ei(s.shape,f,r,a,o),el(s,f,r.shape,a,o)];if(null!=h){var m=nl(h,f);d.push(m)}return d},T={x:k,filter:w,bias:S,preluActivationWeights:A},D={strides:a,pad:o,dataFormat:u,dilations:l,dimRoundingMode:h,activation:g,leakyreluAlpha:v};if(null==f){var R=Ms((function(e,t,n){var r=ca.runKernel(Mn,T,D);return n([t,e,r]),x&&(r=Yo(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:M}}));return R(k,w)}var B=Ms((function(e,t,n,r){var a=ca.runKernel(Mn,T,D);return r([t,e,a,n]),x&&(a=Yo(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:M}}));return B(k,w,S)}}),il=wa({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,r,a,o,i){void 0===o&&(o=[1,1]);var s=e;3===e.rank&&(s=Yo(e,[1,e.shape[0],e.shape[1],e.shape[2]]));var u=t;3===u.rank&&(u=Yo(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var c={x:s,dy:u},l={strides:r,pad:a,dimRoundingMode:i,dilations:o,filterShape:n};return ca.runKernel(Re,c,l)}}),sl=wa({depthwiseConv2dNativeBackpropInput_:function(e,t,n,r,a,o,i){void 0===o&&(o=[1,1]);var s=t,u=!1;3===t.rank&&(u=!0,s=Yo(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var c={dy:s,filter:n},l={strides:r,pad:a,dimRoundingMode:i,dilations:o,inputShape:e},h=ca.runKernel(Be,c,l);return u?Yo(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),ul=wa({fusedDepthwiseConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,u=void 0===s?"NHWC":s,c=e.dilations,l=void 0===c?[1,1]:c,h=e.dimRoundingMode,f=e.bias,d=e.activation,g=void 0===d?"linear":d,m=e.preluActivationWeights,v=e.leakyreluAlpha;if(!1===al(ca.state.gradientDepth,g)){var y=Fi(n,r,a,o,u,l,h);return null!=f&&(y=wo(y,f)),rl(y,g,m,v)}var b=va(n,"x","depthwiseConv2d","float32"),w=va(r,"filter","depthwiseConv2d","float32"),k=b,x=!1;3===b.rank&&(x=!0,k=Yo(b,[1,b.shape[0],b.shape[1],b.shape[2]])),p(4===k.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(k.rank,".")})),p(4===w.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+"but got rank ".concat(w.rank,".")})),p(k.shape[3]===w.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels "+"(".concat(k.shape[3],") must match the inChannels dimension in ")+"filter ".concat(w.shape[2],".")})),null==l&&(l=[1,1]),p(Ho(a,l),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+"be 1. Got strides ".concat(a," and dilations '").concat(l,"'")})),Jo("fused depthwiseConv2d",o,h);var E,S,A=Lo(k.shape,w.shape,a,l,o,h,!0);null!=f&&(t=i($r(E=va(f,"bias","fused conv2d"),b),1),E=t[0],zi(A.outShape,E.shape)),null!=m&&(S=va(m,"prelu weights","fused depthwiseConv2d"));var _=function(e,t){p(Vo(l),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+"'".concat(l,"'")}));var n=i(t,4),r=n[0],s=n[1],u=n[2],c=n[3],f=tl(e,u,g),d=sl(s.shape,f,r,a,o,l,h),m=il(s,f,r.shape,a,o,l,h);return null!=c?[d,m,nl(E,f)]:[d,m]},I={x:k,filter:w,bias:E,preluActivationWeights:S},N={strides:a,pad:o,dataFormat:u,dilations:l,dimRoundingMode:h,activation:g,leakyreluAlpha:v};if(null==f){var M=Ms((function(e,t,n){var r=ca.runKernel(Tn,I,N);return n([t,e,r]),x&&(r=Yo(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:_}}));return M(k,w)}var T=Ms((function(e,t,n,r){var a=ca.runKernel(Tn,I,N);return r([t,e,a,n]),x&&(a=Yo(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:_}}));return T(k,w,E)}}),cl=wa({fusedMatMul_:function(e){var t,n=e.a,r=e.b,a=e.transposeA,o=void 0!==a&&a,s=e.transposeB,u=void 0!==s&&s,c=e.bias,l=e.activation,h=void 0===l?"linear":l,f=e.preluActivationWeights,d=e.leakyreluAlpha,g=void 0===d?.2:d;if(!1===al(ca.state.gradientDepth,h)){var m=ei(n,r,o,u);return null!=c&&(m=wo(m,c)),rl(m,h,f,g)}var y=va(n,"a","fused matMul"),b=va(r,"b","fused matMul");t=i($r(y,b),2),y=t[0],b=t[1];var w=o?y.shape[y.rank-2]:y.shape[y.rank-1],k=u?b.shape[b.rank-1]:b.shape[b.rank-2],x=o?y.shape[y.rank-1]:y.shape[y.rank-2],E=u?b.shape[b.rank-2]:b.shape[b.rank-1],S=y.shape.slice(0,-2),A=b.shape.slice(0,-2),_=v(S),I=v(A);p(w===k,(function(){return"Error in fused matMul: inner shapes (".concat(w,") and (")+"".concat(k,") of Tensors with shapes ").concat(y.shape," and ")+"".concat(b.shape," and transposeA=").concat(o)+" and transposeB=".concat(u," must match.")}));var N,M,T=zi(y.shape.slice(0,-2),b.shape.slice(0,-2)).concat([x,E]),D=Yo(y,o?[_,w,x]:[_,x,w]),R=Yo(b,u?[I,E,k]:[I,k,E]);null!=c&&(N=i($r(N=va(c,"bias","fused matMul"),y),1)[0],zi(T,N.shape)),null!=f&&(M=va(f,"prelu weights","fused matMul"));var B=function(e,t){var n,r,a=i(t,4),s=a[0],l=a[1],f=a[2],d=a[3],p=tl(Yo(e,f.shape),f,h);return o||u?!o&&u?(n=ei(p,l,!1,!1),r=ei(p,s,!0,!1)):o&&!u?(n=ei(l,p,!1,!0),r=ei(s,p,!1,!1)):(n=ei(l,p,!0,!0),r=ei(p,s,!0,!0)):(n=ei(p,l,!1,!0),r=ei(s,p,!0,!1)),null!=c?[n,r,nl(d,p)]:[n,r]},F={a:D,b:R,bias:N,preluActivationWeights:M},C={transposeA:o,transposeB:u,activation:h,leakyreluAlpha:g};if(null==c){var P=Ms((function(e,t,n){var r=ca.runKernel(Nn,F,C);return n([e,t,r]),{value:Yo(r,T),gradFunc:B}}));return P(D,R)}var O=Ms((function(e,t,n,r){var a=ca.runKernel(Nn,F,C);return r([e,t,a,n]),{value:Yo(a,T),gradFunc:B}}));return O(D,R,N)}}),ll={__proto__:null,conv2d:ol,depthwiseConv2d:ul,matMul:cl},hl=wa({hammingWindow_:function(e){return $c(e,.54,.46)}}),fl=wa({hannWindow_:function(e){return $c(e,.5,.5)}}),dl=wa({frame_:function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=0);for(var o=0,i=[];o+t<=e.size;)i.push(ni(e,o,t)),o+=n;if(r)for(;o=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was ".concat(r)})),p("bilinear"===a||"nearest"===a,(function(){return"method must be bilinear or nearest, but was ".concat(a)}));var l={image:i,boxes:s,boxInd:u},h={method:a,extrapolationValue:o,cropSize:r};return ca.runKernel(Ne,l,h)}}),ml=wa({flipLeftRight_:function(e){var t=va(e,"image","flipLeftRight","float32");p(4===t.rank,(function(){return"Error in flipLeftRight: image must be rank 4,"+"but got rank ".concat(t.rank,".")}));var n={image:t};return ca.runKernel(Ke,n,{})}}),vl=wa({grayscaleToRGB_:function(e){var t=va(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];p(t.rank>=2,(function(){return"Error in grayscaleToRGB: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),p(1===r,(function(){return"Error in grayscaleToRGB: last dimension of a grayscale image "+"should be size 1, but got size ".concat(r,".")}));var a=new Array(t.rank);return a.fill(1,0,n),a[n]=3,fs(t,a)}}),yl=wa({rgbToGrayscale_:function(e){var t=va(e,"image","RGBToGrayscale"),n=t.rank-1,r=t.shape[n];p(t.rank>=2,(function(){return"Error in RGBToGrayscale: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),p(3===r,(function(){return"Error in RGBToGrayscale: last dimension of an RGB image "+"should be size 3, but got size ".concat(r,".")}));var a,o=t.dtype,i=po(t,"float32"),s=Dc([.2989,.587,.114]);switch(t.rank){case 2:a=Hi("ij,j->i",i,s);break;case 3:a=Hi("ijk,k->ij",i,s);break;case 4:a=Hi("ijkl,l->ijk",i,s);break;case 5:a=Hi("ijklm,m->ijkl",i,s);break;case 6:a=Hi("ijklmn,n->ijklm",i,s);break;default:throw new Error("Not a valid tensor rank.")}return a=ls(a,-1),po(a,o)}}),bl=wa({rotateWithOffset_:function(e,t,n,r){void 0===n&&(n=0),void 0===r&&(r=.5);var a=va(e,"image","rotateWithOffset","float32");p(4===a.rank,(function(){return"Error in rotateWithOffset: image must be rank 4,"+"but got rank ".concat(a.rank,".")}));var o={image:a},i={radians:t,fillValue:n,center:r};return ca.runKernel(In,o,i)}});function wl(e,t,n,r,a,o){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY),null==o&&(o=0);var i=e.shape[0];return n=Math.min(n,i),p(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '".concat(r,"'")})),p(2===e.rank,(function(){return"boxes must be a 2D tensor, but was of rank '".concat(e.rank,"'")})),p(4===e.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was ".concat(e.shape[1])})),p(1===t.rank,(function(){return"scores must be a 1D tensor"})),p(t.shape[0]===i,(function(){return"scores has incompatible shape with boxes. Expected ".concat(i,", ")+"but was ".concat(t.shape[0])})),p(0<=o&&o<=1,(function(){return"softNmsSigma must be in [0, 1], but was '".concat(o,"'")})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:o}}var kl=wa({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var o=va(e,"boxes","nonMaxSuppression","float32"),i=va(t,"scores","nonMaxSuppression","float32"),s=wl(o,i,n,r,a),u={maxOutputSize:n=s.maxOutputSize,iouThreshold:r=s.iouThreshold,scoreThreshold:a=s.scoreThreshold};return ca.runKernel(kt,{boxes:o,scores:i},u)}});function xl(e,t,n){var r=function(e,t,n){return function(e,t,n){for(var r=0,a=e.length,o=0,i=!1;r>>1)]);s>0?r=o+1:(a=o,i=!s)}return i?r:-r-1}(e,t,n||El)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function El(e,t){return e>t?1:ea&&h.push({score:t[f],boxIndex:f,suppressBeginIndex:0});h.sort(Tl);for(var d=o>0?-.5/o:0,p=[],g=[];p.length0;){var m=h.pop(),v=m.score,y=m.boxIndex,b=m.suppressBeginIndex;if(v=b;--k){var x=Nl(e,y,p[k]);if(x>=r){w=!0;break}if(m.score=m.score*Ml(r,d,x),m.score<=a)break}m.suppressBeginIndex=p.length,w||(m.score===v?(p.push(y),g.push(m.score)):m.score>a&&xl(h,m,Tl))}var E=p.length,S=n-E;c&&S>0&&(p.push.apply(p,s([],i(new Array(S).fill(0)),!1)),g.push.apply(g,s([],i(new Array(S).fill(0)),!1)));var A={selectedIndices:p};return u&&(A.selectedScores=g),l&&(A.validOutputs=E),A}function Nl(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),o=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(a[0],a[2]),l=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),f=Math.max(a[1],a[3]),d=(s-o)*(u-i),p=(h-c)*(f-l);if(d<=0||p<=0)return 0;var g=Math.max(o,c),m=Math.max(i,l),v=Math.min(s,h),y=Math.min(u,f),b=Math.max(v-g,0)*Math.max(y-m,0);return b/(d+p-b)}function Ml(e,t,n){var r=Math.exp(t*n*n);return n<=e?r:0}function Tl(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}var Dl=wa({nonMaxSuppressionWithScore_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=0);var i=va(e,"boxes","nonMaxSuppression"),s=va(t,"scores","nonMaxSuppression"),u=wl(i,s,n,r,a,o),c={boxes:i,scores:s},l={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:o=u.softNmsSigma},h=ca.runKernel(Et,c,l);return{selectedIndices:h[0],selectedScores:h[1]}}}),Rl=wa({nonMaxSuppressionPadded_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=!1);var i=va(e,"boxes","nonMaxSuppression"),s=va(t,"scores","nonMaxSuppression"),u=wl(i,s,n,r,a,null),c={boxes:i,scores:s},l={maxOutputSize:u.maxOutputSize,iouThreshold:u.iouThreshold,scoreThreshold:u.scoreThreshold,padToMaxOutputSize:o},h=ca.runKernel(xt,c,l);return{selectedIndices:h[0],validOutputs:h[1]}}}),Bl=wa({resizeBilinear_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=va(e,"images","resizeBilinear");p(3===a.rank||4===a.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),p(2===t.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+"".concat(t,".")})),p(!1===r||!1===n,(function(){return"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Yo(a,[1,a.shape[0],a.shape[1],a.shape[2]])),i(t,0);var u={images:o},c={alignCorners:n,halfPixelCenters:r,size:t},l=ca.runKernel(zt,u,c);return s?Yo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Fl=wa({resizeNearestNeighbor_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=va(e,"images","resizeNearestNeighbor");p(3===a.rank||4===a.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),p(2===t.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+"".concat(t,".")})),p("float32"===a.dtype||"int32"===a.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"})),p(!1===r||!1===n,(function(){return"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Yo(a,[1,a.shape[0],a.shape[1],a.shape[2]])),i(t,0);var u={images:o},c={alignCorners:n,halfPixelCenters:r,size:t},l=ca.runKernel(Lt,u,c);return s?Yo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Cl=wa({threshold_:function(e,t,n,r){var a;void 0===t&&(t="binary"),void 0===n&&(n=!1),void 0===r&&(r=.5);var o,s,u,c,l=va(e,"image","threshold"),h=l.shape[0]*l.shape[1],f=Eo(Dc([r]),255);if(p(3===l.rank,(function(){return"Error in threshold: image must be rank 3,"+"but got rank ".concat(l.rank,".")})),p(3===l.shape[2]||1===l.shape[2],(function(){return"Error in threshold: image color channel must be equal to 3 or 1"+"but got ".concat(l.shape[2],".")})),p("int32"===l.dtype||"float32"===l.dtype,(function(){return"Error in dtype: image dtype must be int32 or float32,"+"but got dtype ".concat(l.dtype,".")})),p("otsu"===t||"binary"===t,(function(){return"Method must be binary or otsu, but was ".concat(t)})),3===l.shape[2]){o=(a=i(Ec(l,[1,1,1],-1),3))[0],s=a[1],u=a[2];var d=Eo(o,.2989),g=Eo(s,.587),m=Eo(u,.114);c=wo(wo(d,g),m)}else c=e;"otsu"===t&&(f=function(e,t){for(var n,r,a,o,i,s,u=Dc([-1]),c=Dc([0]),l=Dc([0]),h=0;h=2,(function(){return"bandPart(): Rank must be at least 2, got ".concat(r.rank,".")}));var a,o,s=r.shape,u=i(r.shape.slice(-2),2),c=u[0],l=u[1];"number"==typeof t?(p(t%1==0,(function(){return"bandPart(): numLower must be an integer, got ".concat(t,".")})),p(t<=c,(function(){return"bandPart(): numLower (".concat(t,")")+" must not be greater than the number of rows (".concat(c,").")})),a=va(t<0?c:t,"numLower","bandPart")):(p("int32"===t.dtype,(function(){return"bandPart(): numLower's dtype must be an int32."})),a=Gi(Es(t,0),c,Ys(t,c))),"number"==typeof n?(p(n%1==0,(function(){return"bandPart(): numUpper must be an integer, got ".concat(n,".")})),p(n<=l,(function(){return"bandPart(): numUpper (".concat(n,")")+" must not be greater than the number of columns (".concat(l,").")})),o=va(n<0?l:n,"numUpper","bandPart")):(p("int32"===n.dtype,(function(){return"bandPart(): numUpper's dtype must be an int32."})),o=Gi(Es(n,0),l,Ys(n,l)));var h=Yo(Qu(0,c,1,"int32"),[-1,1]),f=Qu(0,l,1,"int32"),d=Fs(h,f),g=Os(Ss(d,a),vs(d,Ds(o))),m=Zs([c,l],r.dtype);return Yo(Ic(Kc(Yo(r,[-1,c,l])).map((function(e){return Gi(g,e,m)}))),s)}}),Ll=wa({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,p(null!=e&&e.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=e[0].shape[0],r=function(t){p(e[t].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+"(".concat(e[t].shape[0]," vs. ").concat(n,")")}))},a=1;a0)for(var n=0;n=r?r:n,l=function(e){var t,c=o,l=u,h=a;t=i(ca.tidy((function(){var t=ni(o,[e,e],[n-e,1]),i=ss(t),c=ni(o,[e,e],[1,1]),l=Gi(ms(c,0),Rc([[-1]]),Rc([[1]])),h=Fs(c,Eo(l,i)),f=xo(t,h);u=1===f.shape[0]?go(s):$o([s,ni(f,[1,0],[f.shape[0]-1,f.shape[1]])],0);var d=Ds(xo(ei(l,h),i)),p=ni(o,[e,0],[n-e,r]),g=Eo(d,u),m=Hc(u);if(0===e)o=Fs(p,ei(g,ei(m,p)));else{var v=Fs(p,ei(g,ei(m,p)));o=$o([ni(o,[0,0],[e,r]),v],0)}var y=Hc(g),b=ni(a,[0,e],[n,a.shape[1]-e]);if(0===e)a=Fs(b,ei(ei(b,u),y));else{var w=Fs(b,ei(ei(b,u),y));a=$o([ni(a,[0,0],[n,e]),w],1)}return[u,o,a]})),3),u=t[0],o=t[1],a=t[2],yo([c,l,h])},h=0;hr&&(a=ni(a,[0,0],[n,r]),o=ni(o,[0,0],[r,r])),[a,o]}))}var Ul,Wl=wa({qr_:function(e,t){if(void 0===t&&(t=!1),p(e.rank>=2,(function(){return"qr() requires input tensor to have a rank >= 2, but got rank ".concat(e.rank)})),2===e.rank)return zl(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce((function(e,t){return e*t})),r=Kc(Yo(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],o=[];return r.forEach((function(e){var n=i(zl(e,t),2),r=n[0],s=n[1];a.push(r),o.push(s)})),[Yo(Ic(a,0),e.shape),Yo(Ic(o,0),e.shape)]}});e.Reduction=void 0,(Ul=e.Reduction||(e.Reduction={}))[Ul.NONE=0]="NONE",Ul[Ul.MEAN=1]="MEAN",Ul[Ul.SUM=2]="SUM",Ul[Ul.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS";var Gl=wa({computeWeightedLoss_:function(t,n,r){void 0===r&&(r=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=va(t,"losses","computeWeightedLoss"),o=null;null!=n&&(o=va(n,"weights","computeWeightedLoss"));var i=null==o?a:Eo(a,o);if(r===e.Reduction.NONE)return i;if(r===e.Reduction.SUM)return os(i);if(r===e.Reduction.MEAN){if(null==o)return js(i);var s=a.size/o.size,u=xo(os(i),os(o));return s>1?xo(u,ns(s)):u}if(r===e.Reduction.SUM_BY_NONZERO_WEIGHTS){if(null==o)return xo(os(i),ns(a.size));var c=Eo(o,Js(a.shape)),l=po(os(nu(c,ns(0))),"float32");return xo(os(i),l)}throw Error("Unknown reduction: ".concat(r))}}),Kl=wa({absoluteDifference_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=va(t,"labels","absoluteDifference"),i=va(n,"predictions","absoluteDifference"),s=null;null!=r&&(s=va(r,"weights","absoluteDifference")),g(o.shape,i.shape,"Error in absoluteDifference: ");var u=So(Fs(o,i));return Gl(u,s,a)}}),ql=wa({cosineDistance_:function(t,n,r,a,o){void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=va(t,"labels","cosineDistance"),s=va(n,"predictions","cosineDistance"),u=null;null!=a&&(u=va(a,"weights","cosineDistance")),g(i.shape,s.shape,"Error in cosineDistance: ");var c=ns(1),l=Fs(c,os(Eo(i,s),r,!0));return Gl(l,u,o)}}),Vl=wa({hingeLoss_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=va(t,"labels","hingeLoss"),i=va(n,"predictions","hingeLoss"),s=null;null!=r&&(s=va(r,"weights","hingeLoss")),g(o.shape,i.shape,"Error in hingeLoss: ");var u=ns(1);o=Fs(Eo(ns(2),o),u);var c=tc(Fs(u,Eo(o,i)));return Gl(c,s,a)}}),Hl=wa({huberLoss_:function(t,n,r,a,o){void 0===a&&(a=1),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=va(t,"labels","huberLoss"),s=va(n,"predictions","huberLoss"),u=null;null!=r&&(u=va(r,"weights","huberLoss")),g(i.shape,s.shape,"Error in huberLoss: ");var c=ns(a),l=So(Fs(s,i)),h=Ys(l,c),f=Fs(l,h),d=wo(Eo(ns(.5),as(h)),Eo(c,f));return Gl(d,u,o)}}),jl=wa({logLoss_:function(t,n,r,a,o){void 0===a&&(a=1e-7),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=va(t,"labels","logLoss"),s=va(n,"predictions","logLoss"),u=null;null!=r&&(u=va(r,"weights","logLoss")),g(i.shape,s.shape,"Error in logLoss: ");var c=ns(1),l=ns(a),h=Ds(Eo(i,_s(wo(s,l)))),f=Eo(Fs(c,i),_s(wo(Fs(c,s),l))),d=Fs(h,f);return Gl(d,u,o)}}),Zl=wa({meanSquaredError_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=va(t,"labels","meanSquaredError"),i=va(n,"predictions","meanSquaredError"),s=null;null!=r&&(s=va(r,"weights","meanSquaredError")),g(o.shape,i.shape,"Error in meanSquaredError: ");var u=Ac(o,i);return Gl(u,s,a)}}),Jl=wa({sigmoidCrossEntropy_:function(t,n,r,a,o){void 0===a&&(a=0),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=va(t,"multiClassLabels","sigmoidCrossEntropy"),s=va(n,"logits","sigmoidCrossEntropy"),u=null;if(null!=r&&(u=va(r,"weights","sigmoidCrossEntropy")),g(i.shape,s.shape,"Error in sigmoidCrossEntropy: "),a>0){var c=ns(a),l=ns(1),h=ns(.5);i=wo(Eo(i,Fs(l,c)),Eo(h,c))}var f=function(e,t){var n=va(e,"labels","sigmoidCrossEntropyWithLogits"),r=va(t,"logits","sigmoidCrossEntropyWithLogits");g(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=tc(r),o=Eo(r,n),i=Is(cs(Ds(So(r))));return wo(Fs(a,o),i)}(i,s);return Gl(f,u,o)}}),Yl=wa({softmaxCrossEntropy_:function(t,n,r,a,o){void 0===a&&(a=0),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var s=va(t,"onehotLabels","softmaxCrossEntropy"),u=va(n,"logits","softmaxCrossEntropy"),c=null;if(null!=r&&(c=va(r,"weights","softmaxCrossEntropy")),g(s.shape,u.shape,"Error in softmaxCrossEntropy: "),a>0){var l=ns(a),h=ns(1),f=ns(s.shape[1]);s=wo(Eo(s,Fs(h,l)),xo(l,f))}var d=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+"supported. Labels / logits was rank ".concat(t.rank," ")+"and dim was ".concat(n));var r=Ms((function(e,t,r){var a=Ps(t,[n],!0),o=Fs(po(t,"float32"),a);r([e,o]);var s=Ds(Eo(o,e));return{value:os(s,[n]),gradFunc:function(e,t){var r=i(t,2),a=r[0],o=r[1],s=Qi(e.shape,[n]);return[Eo(Yo(e,s),Fs(po(a,"float32"),cs(o))),Eo(Yo(e,s),Fs(cs(o),po(a,"float32")))]}}}));return r(e,t)}(s,u);return Gl(d,c,o)}}),Xl=wa({sparseFillEmptyRows_:function(e,t,n,r){var a=va(e,"indices","sparseFillEmptyRows","int32"),o=va(t,"values","sparseFillEmptyRows"),i=va(n,"denseShape","sparseFillEmptyRows","int32"),s=va(r,"defaultValue","sparseFillEmptyRows",o.dtype);if(2!==a.rank)throw new Error("Indices should be Tensor2D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Values should be Tensor1D but received shape ".concat(o.shape));if(1!==i.rank)throw new Error("Dense shape should be Tensor1D but received shape ".concat(i.shape));if(0!==s.rank)throw new Error("Default value should be a scalar but received shape ".concat(s.shape));var u={indices:a,values:o,denseShape:i,defaultValue:s},c=ca.runKernel(an,u);return{outputIndices:c[0],outputValues:c[1],emptyRowIndicator:c[2],reverseIndexMap:c[3]}}}),Ql=wa({sparseReshape_:function(e,t,n){var r=va(e,"inputIndices","sparseReshape","int32"),a=va(t,"inputShape","sparseReshape","int32"),o=va(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error("Input indices should be Tensor2D but received shape\n ".concat(r.shape));if(1!==a.rank)throw new Error("Input shape should be Tensor1D but received shape ".concat(a.shape));if(1!==o.rank)throw new Error("New shape should be Tensor1D but received shape ".concat(o.shape));var i={inputIndices:r,inputShape:a,newShape:o},s=ca.runKernel(on,i);return{outputIndices:s[0],outputShape:s[1]}}}),$l=wa({sparseSegmentMean_:function(e,t,n){var r=va(e,"data","sparseSegmentMean"),a=va(t,"indices","sparseSegmentMean","int32"),o=va(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var i={data:r,indices:a,segmentIds:o};return ca.runKernel(sn,i)}}),eh=wa({sparseSegmentSum_:function(e,t,n){var r=va(e,"data","sparseSegmentSum"),a=va(t,"indices","sparseSegmentSum","int32"),o=va(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var i={data:r,indices:a,segmentIds:o};return ca.runKernel(un,i)}}),th=wa({stringNGrams_:function(e,t,n,r,a,o,i,s){var u=va(e,"data","stringNGrams","string");if("string"!==u.dtype)throw new Error("Data must be of datatype string");if(1!==u.shape.length)throw new Error("Data must be a vector, saw: ".concat(u.shape));var c=va(t,"dataSplits","stringNGrams");if("int32"!==c.dtype)throw new Error("Data splits must be of datatype int32");var l={separator:n,nGramWidths:r,leftPad:a,rightPad:o,padWidth:i,preserveShortSequences:s},h={data:u,dataSplits:c},f=ca.runKernel(dn,h,l);return{nGrams:f[0],nGramsSplits:f[1]}}}),nh={fft:wc,ifft:kc,rfft:Sc,irfft:xc},rh={hammingWindow:hl,hannWindow:fl,frame:dl,stft:pl},ah={flipLeftRight:ml,grayscaleToRGB:vl,resizeNearestNeighbor:Fl,resizeBilinear:Bl,rgbToGrayscale:yl,rotateWithOffset:bl,cropAndResize:gl,nonMaxSuppression:kl,nonMaxSuppressionAsync:function(e,t,n,o,i){return void 0===o&&(o=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),r(this,void 0,void 0,(function(){var r,s,u,c,l,h,f;return a(this,(function(a){switch(a.label){case 0:return r=va(e,"boxes","nonMaxSuppressionAsync"),s=va(t,"scores","nonMaxSuppressionAsync"),u=wl(r,s,n,o,i),n=u.maxOutputSize,o=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([r.data(),s.data()])];case 1:return c=a.sent(),l=c[0],h=c[1],f=Sl(l,h,n,o,i).selectedIndices,r!==e&&r.dispose(),s!==t&&s.dispose(),[2,Dc(f,"int32")]}}))}))},nonMaxSuppressionWithScore:Dl,nonMaxSuppressionWithScoreAsync:function(e,t,n,o,i,s){return void 0===o&&(o=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),void 0===s&&(s=0),r(this,void 0,void 0,(function(){var r,u,c,l,h,f,d,p,g;return a(this,(function(a){switch(a.label){case 0:return r=va(e,"boxes","nonMaxSuppressionAsync"),u=va(t,"scores","nonMaxSuppressionAsync"),c=wl(r,u,n,o,i,s),n=c.maxOutputSize,o=c.iouThreshold,i=c.scoreThreshold,s=c.softNmsSigma,[4,Promise.all([r.data(),u.data()])];case 1:return l=a.sent(),h=l[0],f=l[1],d=_l(h,f,n,o,i,s),p=d.selectedIndices,g=d.selectedScores,r!==e&&r.dispose(),u!==t&&u.dispose(),[2,{selectedIndices:Dc(p,"int32"),selectedScores:Dc(g)}]}}))}))},nonMaxSuppressionPadded:Rl,nonMaxSuppressionPaddedAsync:function(e,t,n,o,s,u){return void 0===o&&(o=.5),void 0===s&&(s=Number.NEGATIVE_INFINITY),void 0===u&&(u=!1),r(this,void 0,void 0,(function(){var r,c,l,h,f,d,p,g,m,v,y,b;return a(this,(function(a){switch(a.label){case 0:return r=va(e,"boxes","nonMaxSuppressionAsync"),c=va(t,"scores","nonMaxSuppressionAsync"),l=wl(r,c,n,o,s,null),h=l.maxOutputSize,f=l.iouThreshold,d=l.scoreThreshold,[4,Promise.all([r.data(),c.data()])];case 1:return p=i.apply(void 0,[a.sent(),2]),g=p[0],m=p[1],v=Al(g,m,h,f,d,u),y=v.selectedIndices,b=v.validOutputs,r!==e&&r.dispose(),c!==t&&c.dispose(),[2,{selectedIndices:Dc(y,"int32"),validOutputs:ns(b,"int32")}]}}))}))},threshold:Cl,transform:Pl},oh={bandPart:Ol,gramSchmidt:Ll,qr:Wl},ih={absoluteDifference:Kl,computeWeightedLoss:Gl,cosineDistance:ql,hingeLoss:Vl,huberLoss:Hl,logLoss:jl,meanSquaredError:Zl,sigmoidCrossEntropy:Jl,softmaxCrossEntropy:Yl},sh={sparseFillEmptyRows:Xl,sparseReshape:Ql,sparseSegmentMean:$l,sparseSegmentSum:eh},uh={stringNGrams:th,stringSplit:wa({stringSplit_:function(e,t,n){void 0===n&&(n=!0);var r=va(e,"input","stringSplit","string"),a=va(t,"delimiter","stringSplit","string");if(1!==r.rank)throw new Error("Input should be Tensor1D but received shape ".concat(r.shape));if(0!==a.rank)throw new Error("Delimiter should be a scalar but received shape ".concat(a.shape));var o={skipEmpty:n},i={input:r,delimiter:a},s=ca.runKernel(pn,i,o);return{indices:s[0],values:s[1],shape:s[2]}}}),stringToHashBucketFast:wa({stringToHashBucketFast_:function(e,t){var n=va(e,"input","stringToHashBucketFast","string"),r={numBuckets:t};if(t<=0)throw new Error("Number of buckets must be at least 1");var a={input:n};return ca.runKernel(gn,a,r)}}),staticRegexReplace:wa({staticRegexReplace_:function(e,t,n,r){void 0===r&&(r=!0);var a=va(e,"input","staticRegexReplace","string"),o={pattern:t,rewrite:n,replaceGlobal:r};return ca.runKernel(hn,{x:a},o)}})},ch=new Map,lh=new Map,hh=function(){function e(){}return e.prototype.getClassName=function(){return this.constructor.className},e.fromConfig=function(e,t){return new e(t)},e}(),fh=function(){function e(){this.classNameMap={}}return e.getMap=function(){return null==e.instance&&(e.instance=new e),e.instance},e.register=function(t){e.getMap().classNameMap[t.className]=[t,t.fromConfig]},e}();function dh(e,t,n){p(null!=e.className,(function(){return"Class being registered does not have the static className property defined."})),p("string"==typeof e.className,(function(){return"className is required to be a string, but got type "+typeof e.className})),p(e.className.length>0,(function(){return"Class being registered has an empty-string as its className, which is disallowed."})),void 0===t&&(t="Custom"),void 0===n&&(n=e.className);var r=t+">"+n;return fh.register(e),ch.set(r,e),lh.set(e,r),e}var ph={__proto__:null,Serializable:hh,SerializationMap:fh,getRegisteredName:function(e){return lh.has(e)?lh.get(e):e.className},registerClass:dh},gh=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,o=r.grads;if(null!=n){var i=n.map((function(e){return{name:e.name,tensor:o[e.name]}}));this.applyGradients(i)}else this.applyGradients(o);return yo(o),t?a:(a.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!1,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,t){return Ns(e,t)},t.prototype.dispose=function(){null!=this.iterations_&&yo(this.iterations_)},t.prototype.saveIterations=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){return null==this.iterations_&&(this.iterations_=0),[2,{name:"iter",tensor:ns(this.iterations_,"int32")}]}))}))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("setWeights() is not implemented for this optimizer class "+"".concat(this.getClassName()))}))}))},t.prototype.extractIterations=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(n){switch(n.label){case 0:return t=this,[4,e[0].tensor.data()];case 1:return t.iterations_=n.sent()[0],[2,e.slice(1)]}}))}))},t}(hh);Object.defineProperty(gh,Symbol.hasInstance,{value:function(e){return null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients}});var mh=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads=[],a.accumulatedUpdates=[],null==r&&(a.epsilon=ca.backend.epsilon()),a}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adadelta"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ca.registeredVariables[n];null==t.accumulatedGrads[r]&&(t.accumulatedGrads[r]={originalName:"".concat(n,"/accum_grad"),variable:vo((function(){return Ki(a).variable(!1)}))}),null==t.accumulatedUpdates[r]&&(t.accumulatedUpdates[r]={originalName:"".concat(n,"/accum_var"),variable:vo((function(){return Ki(a).variable(!1)}))});var o=Array.isArray(e)?e[r].tensor:e[n];if(null!=o){var i=t.accumulatedGrads[r].variable,s=t.accumulatedUpdates[r].variable;vo((function(){var e=wo(Eo(i,t.rho),Eo(as(o),1-t.rho)),n=Eo(xo(rs(wo(s,t.epsilon)),rs(wo(i,t.epsilon))),o),r=wo(Eo(s,t.rho),Eo(as(n),1-t.rho));i.assign(e),s.assign(r);var u=wo(Eo(n,-t.learningRate),a);a.assign(u)}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedUpdates&&(yo(this.accumulatedGrads.map((function(e){return e.variable}))),yo(this.accumulatedUpdates.map((function(e){return e.variable}))))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedGrads),!1),i(this.accumulatedUpdates),!1),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),t=e.length/2,this.accumulatedGrads=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),this.accumulatedUpdates=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t}(gh),vh=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adagrad"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ca.registeredVariables[n];null==t.accumulatedGrads[r]&&(t.accumulatedGrads[r]={originalName:"".concat(n,"/accumulator"),variable:vo((function(){return gi(a.shape,t.initialAccumulatorValue).variable(!1)}))});var o=Array.isArray(e)?e[r].tensor:e[n];if(null!=o){var i=t.accumulatedGrads[r].variable;vo((function(){var e=wo(i,as(o));i.assign(e);var n=wo(Eo(xo(o,rs(wo(e,ca.backend.epsilon()))),-t.learningRate),a);a.assign(n)}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedGrads&&yo(this.accumulatedGrads.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:return e=t.sent(),this.accumulatedGrads=e.map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t}(gh),yh=function(e){function t(t,n,r,a){void 0===a&&(a=null);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.accumulatedFirstMoment=[],o.accumulatedSecondMoment=[],vo((function(){o.accBeta1=ns(n).variable(),o.accBeta2=ns(r).variable()})),null==a&&(o.epsilon=ca.backend.epsilon()),o}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adam"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this,n=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e);vo((function(){var r=Fs(1,t.accBeta1),a=Fs(1,t.accBeta2);n.forEach((function(n,o){var i=ca.registeredVariables[n];null==t.accumulatedFirstMoment[o]&&(t.accumulatedFirstMoment[o]={originalName:"".concat(n,"/m"),variable:vo((function(){return Ki(i).variable(!1)}))}),null==t.accumulatedSecondMoment[o]&&(t.accumulatedSecondMoment[o]={originalName:"".concat(n,"/v"),variable:vo((function(){return Ki(i).variable(!1)}))});var s=Array.isArray(e)?e[o].tensor:e[n];if(null!=s){var u=t.accumulatedFirstMoment[o].variable,c=t.accumulatedSecondMoment[o].variable,l=wo(Eo(u,t.beta1),Eo(s,1-t.beta1)),h=wo(Eo(c,t.beta2),Eo(as(s),1-t.beta2)),f=xo(l,r),d=xo(h,a);u.assign(l),c.assign(h);var p=wo(Eo(xo(f,wo(rs(d),t.epsilon)),-t.learningRate),i);i.assign(p)}})),t.accBeta1.assign(Eo(t.accBeta1,t.beta1)),t.accBeta2.assign(Eo(t.accBeta2,t.beta2))})),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&yo(this.accumulatedFirstMoment.map((function(e){return e.variable}))),null!=this.accumulatedSecondMoment&&yo(this.accumulatedSecondMoment.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedFirstMoment),!1),i(this.accumulatedSecondMoment),!1),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t,n=this;return a(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),vo((function(){n.accBeta1.assign(ts(n.beta1,n.iterations_+1)),n.accBeta2.assign(ts(n.beta2,n.iterations_+1))})),t=e.length/2,this.accumulatedFirstMoment=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),this.accumulatedSecondMoment=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t}(gh),bh=function(e){function t(t,n,r,a,o){void 0===a&&(a=null),void 0===o&&(o=0);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.decay=o,i.accumulatedFirstMoment=[],i.accumulatedWeightedInfNorm=[],vo((function(){i.iteration=ns(0).variable(),i.accBeta1=ns(n).variable()})),null==a&&(i.epsilon=ca.backend.epsilon()),i}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adamax"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this,n=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e);vo((function(){var r=Fs(1,t.accBeta1),a=xo(-t.learningRate,wo(Eo(t.iteration,t.decay),1));n.forEach((function(n,o){var i=ca.registeredVariables[n];null==t.accumulatedFirstMoment[o]&&(t.accumulatedFirstMoment[o]={originalName:"".concat(n,"/m"),variable:Ki(i).variable(!1)}),null==t.accumulatedWeightedInfNorm[o]&&(t.accumulatedWeightedInfNorm[o]={originalName:"".concat(n,"/v"),variable:Ki(i).variable(!1)});var s=Array.isArray(e)?e[o].tensor:e[n];if(null!=s){var u=t.accumulatedFirstMoment[o].variable,c=t.accumulatedWeightedInfNorm[o].variable,l=wo(Eo(u,t.beta1),Eo(s,1-t.beta1)),h=Eo(c,t.beta2),f=So(s),d=Hs(h,f);u.assign(l),c.assign(d);var p=wo(Eo(xo(a,r),xo(l,wo(d,t.epsilon))),i);i.assign(p)}})),t.iteration.assign(wo(t.iteration,1)),t.accBeta1.assign(Eo(t.accBeta1,t.beta1))})),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&yo(this.accumulatedFirstMoment.map((function(e){return e.variable}))),null!=this.accumulatedWeightedInfNorm&&yo(this.accumulatedWeightedInfNorm.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("getWeights() is not implemented for Adamax yet.")}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("setWeights() is not implemented for Adamax yet.")}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t}(gh),wh=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"SGD"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=Array.isArray(e)?e[r].tensor:e[n];if(null!=a){var o=ca.registeredVariables[n];vo((function(){var e=wo(Eo(t.c,a),o);o.assign(e)}))}})),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=bo(ns(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:if(0!==(e=t.sent()).length)throw new Error("SGD optimizer does not have settable weights.");return[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t}(gh),kh=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.accumulations=[],a.m=ns(a.momentum),a}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Momentum"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ca.registeredVariables[n];null==t.accumulations[r]&&(t.accumulations[r]={originalName:"".concat(n,"/momentum"),variable:vo((function(){return Ki(a).variable(!1)}))});var o=t.accumulations[r].variable,i=Array.isArray(e)?e[r].tensor:e[n];null!=i&&vo((function(){var e,n=wo(Eo(t.m,o),i);e=t.useNesterov?wo(Eo(t.c,wo(i,Eo(n,t.m))),a):wo(Eo(t.c,n),a),o.assign(n),a.assign(e)}))})),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&yo(this.accumulations.map((function(e){return e.variable})))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:return e=t.sent(),this.accumulations=e.map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t}(wh),xh=function(e){function t(t,n,r,a,o){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===o&&(o=!1);var i=e.call(this)||this;if(i.learningRate=t,i.decay=n,i.momentum=r,i.epsilon=a,i.accumulatedMeanSquares=[],i.accumulatedMoments=[],i.accumulatedMeanGrads=[],i.centered=o,null==a&&(i.epsilon=ca.backend.epsilon()),null==t)throw new Error("learningRate for RMSPropOptimizer must be defined.");return i}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"RMSProp"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ca.registeredVariables[n],o=!1;null==t.accumulatedMeanSquares[r]&&(t.accumulatedMeanSquares[r]={originalName:"".concat(n,"/rms"),variable:vo((function(){return Ki(a).variable(o)}))}),null==t.accumulatedMoments[r]&&(t.accumulatedMoments[r]={originalName:"".concat(n,"/momentum"),variable:vo((function(){return Ki(a).variable(o)}))}),null==t.accumulatedMeanGrads[r]&&t.centered&&(t.accumulatedMeanGrads[r]={originalName:"".concat(n,"/mg"),variable:vo((function(){return Ki(a).variable(o)}))});var i=Array.isArray(e)?e[r].tensor:e[n];if(null!=i){var s=t.accumulatedMeanSquares[r].variable,u=t.accumulatedMoments[r].variable;vo((function(){var e=wo(Eo(s,t.decay),Eo(as(i),1-t.decay));if(t.centered){var n=t.accumulatedMeanGrads[r].variable,o=wo(Eo(n,t.decay),Eo(i,1-t.decay)),c=xo(Eo(i,t.learningRate),rs(Fs(e,wo(as(o),t.epsilon)))),l=wo(Eo(u,t.momentum),c);s.assign(e),n.assign(o),u.assign(l);var h=Fs(a,l);a.assign(h)}else{var f=wo(Eo(s,t.decay),Eo(as(i),1-t.decay));l=wo(Eo(u,t.momentum),xo(Eo(i,t.learningRate),rs(wo(f,t.epsilon)))),s.assign(f),u.assign(l),h=Fs(a,l),a.assign(h)}}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&yo(this.accumulatedMeanSquares.map((function(e){return e.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&yo(this.accumulatedMeanGrads.map((function(e){return e.variable}))),null!=this.accumulatedMoments&&yo(this.accumulatedMoments.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedMeanSquares),!1),i(this.accumulatedMoments),!1),this.centered&&e.push.apply(e,s([],i(this.accumulatedMeanGrads),!1)),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t,n;return a(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),t=this.centered?e.length/3:e.length/2,n=!1,this.accumulatedMeanSquares=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}})),this.accumulatedMoments=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}})),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}}))),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t}(gh),Eh=[mh,vh,yh,bh,kh,xh,wh];function Sh(e){return new Promise((function(e){return setTimeout(e)})).then(e)}var Ah=function(){function e(t){if(!j().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");t.startsWith(e.URL_SCHEME)&&(t=t.slice(e.URL_SCHEME.length)),null!=t&&0!==t.length||(t="model"),this.modelJsonFileName=t+".json",this.weightDataFileName=t+".weights.bin"}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i,s,u;return a(this,(function(a){switch(a.label){case 0:if("undefined"==typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(t=Aa.join(e.weightData),n=window.URL.createObjectURL(new Blob([t],{type:"application/octet-stream"})),!(e.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return r=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],o=Da(e,r),i=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:"application/json"})),(s=null==this.modelJsonAnchor?document.createElement("a"):this.modelJsonAnchor).download=this.modelJsonFileName,s.href=i,[4,Sh((function(){return s.dispatchEvent(new MouseEvent("click"))}))];case 2:return a.sent(),null==e.weightData?[3,4]:((u=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,u.href=n,[4,Sh((function(){return u.dispatchEvent(new MouseEvent("click"))}))]);case 3:a.sent(),a.label=4;case 4:return[2,{modelArtifactsInfo:Fa(e)}]}}))}))},e}();Ah.URL_SCHEME="downloads://";var _h=function(){function e(e){if(null==e||e.length<1)throw new Error("When calling browserFiles, at least 1 file is required, "+"but received ".concat(e));this.jsonFile=e[0],this.weightsFiles=e.slice(1)}return e.prototype.load=function(){return r(this,void 0,void 0,(function(){var e=this;return a(this,(function(t){return[2,new Promise((function(t,n){var r=new FileReader;r.onload=function(r){var a=JSON.parse(r.target.result),o=a.modelTopology;if(null!=o)if(null!=a.weightsManifest)if(0!==e.weightsFiles.length){var i=Ba(a,(function(t){return e.loadWeights(t)}));t(i)}else t({modelTopology:o});else n(new Error("weightManifest field is missing from file ".concat(e.jsonFile.name)));else n(new Error("modelTopology field is missing from file ".concat(e.jsonFile.name)))},r.onerror=function(t){return n("Failed to read model topology and weights manifest JSON "+"from file '".concat(e.jsonFile.name,"'. BrowserFiles supports loading ")+"Keras-style tf.Model artifacts only.")},r.readAsText(e.jsonFile)}))]}))}))},e.prototype.loadWeights=function(e){var t,n,r=this,a=[],u=[];try{for(var c=o(e),l=c.next();!l.done;l=c.next()){var h=l.value;a.push.apply(a,s([],i(h.weights),!1)),u.push.apply(u,s([],i(h.paths),!1))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}var f=this.checkManifestAndWeightFiles(e),d=u.map((function(e){return r.loadWeightsFile(e,f[e])}));return Promise.all(d).then((function(e){return[a,e]}))},e.prototype.loadWeightsFile=function(e,t){return new Promise((function(n,r){var a=new FileReader;a.onload=function(e){var t=e.target.result;n(t)},a.onerror=function(t){return r("Failed to weights data from file of path '".concat(e,"'."))},a.readAsArrayBuffer(t)}))},e.prototype.checkManifestAndWeightFiles=function(e){var t,n,r=this,a=[],i=this.weightsFiles.map((function(e){return Ta(e.name)})),s={};try{for(var u=o(e),c=u.next();!c.done;c=u.next())c.value.paths.forEach((function(e){var t=Ta(e);if(-1!==a.indexOf(t))throw new Error("Duplicate file basename found in weights manifest: "+"'".concat(t,"'"));if(a.push(t),-1===i.indexOf(t))throw new Error("Weight file with basename '".concat(t,"' is not provided."));s[e]=r.weightsFiles[i.indexOf(t)]}))}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=u.return)&&n.call(u)}finally{if(t)throw t.error}}if(a.length!==this.weightsFiles.length)throw new Error("Mismatch in the number of files in weights manifest "+"(".concat(a.length,") and the number of weight files provided ")+"(".concat(this.weightsFiles.length,")."));return s},e}();function Ih(e,t,n,r){!function(e){p(null!=e&&Array.isArray(e)&&e.length>0,(function(){return"promises must be a none empty array"}))}(e),function(e,t){p(e>=0&&e<=1,(function(){return"Progress fraction must be in range [0, 1], but "+"got startFraction ".concat(e)})),p(t>=0&&t<=1,(function(){return"Progress fraction must be in range [0, 1], but "+"got endFraction ".concat(t)})),p(t>=e,(function(){return"startFraction must be no more than endFraction, but "+"got startFraction ".concat(e," and endFraction ")+"".concat(t)}))}(n=null==n?0:n,r=null==r?1:r);var a=0;return Promise.all(e.map((function(o){return o.then((function(o){var i=n+ ++a/e.length*(r-n);return t(i),o})),o})))}function Nh(e,t){return r(this,void 0,void 0,(function(){var n,r,o,i,s,u,c,l,h;return a(this,(function(a){switch(a.label){case 0:return null==t&&(t={}),n=null==t.fetchFunc?j().platform.fetch:t.fetchFunc,r=e.map((function(e){return n(e,t.requestInit,{isBinary:!0})})),o=0,i=.5,null!=t.onProgress?[3,2]:[4,Promise.all(r)];case 1:return s=a.sent(),[3,4];case 2:return[4,Ih(r,t.onProgress,o,i)];case 3:s=a.sent(),a.label=4;case 4:return u=s.map((function(e){return e.arrayBuffer()})),c=.5,l=1,null!=t.onProgress?[3,6]:[4,Promise.all(u)];case 5:return h=a.sent(),[3,8];case 6:return[4,Ih(u,t.onProgress,c,l)];case 7:h=a.sent(),a.label=8;case 8:return[2,h]}}))}))}function Mh(e){var t=this;return function(n,o,i){return void 0===o&&(o=""),r(t,void 0,void 0,(function(){var t,r,s,u,c,l,h,f,d,p;return a(this,(function(a){switch(a.label){case 0:if(t=n.map((function(){return!1})),r={},s=null!=i?i.map((function(){return!1})):[],u=[],n.forEach((function(e,n){var a=0;e.weights.forEach((function(e){var o="quantization"in e?e.quantization.dtype:e.dtype,c=Sa[o]*v(e.shape),l=function(){t[n]=!0,null==r[n]&&(r[n]=[]),r[n].push({manifestEntry:e,groupOffset:a,sizeBytes:c})};null!=i?i.forEach((function(t,n){t===e.name&&(l(),s[n]=!0)})):l(),u.push(e.name),a+=c}))})),!s.every((function(e){return e})))throw c=i.filter((function(e,t){return!s[t]})),new Error("Could not find weights in manifest with names: "+"".concat(c.join(", "),". \n")+"Manifest JSON has weights with names: "+"".concat(u.join(", "),"."));return l=t.reduce((function(e,t,n){return t&&e.push(n),e}),[]),h=[],l.forEach((function(e){n[e].paths.forEach((function(e){var t=o+(o.endsWith("/")?"":"/")+e;h.push(t)}))})),[4,e(h)];case 1:return f=a.sent(),d={},p=0,l.forEach((function(e){var t=n[e].paths.length,a=new Aa(f.slice(p,p+t));r[e].forEach((function(e){var t=_a(a.slice(e.groupOffset,e.groupOffset+e.sizeBytes),[e.manifestEntry]);for(var n in t)d[n]=t[n]})),p+=t})),[2,d]}}))}))}}Oa.registerSaveRouter((function(e){return j().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ah.URL_SCHEME)?function(e){return void 0===e&&(e="model"),new Ah(e)}(e.slice(Ah.URL_SCHEME.length)):null}));var Th=function(){function e(e,t){if(this.DEFAULT_METHOD="POST",null==t&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,null!=t.fetchFunc?(p("function"==typeof t.fetchFunc,(function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"})),this.fetch=t.fetchFunc):this.fetch=j().platform.fetch,p(null!=e&&e.length>0,(function(){return"URL path for http must not be null, undefined or empty."})),Array.isArray(e)&&p(2===e.length,(function(){return"URL paths for http must have a length of 2, "+"(actual length is ".concat(e.length,").")})),this.path=e,null!=t.requestInit&&null!=t.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i;return a(this,(function(a){switch(a.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r=Da(e,n),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&(o=Aa.join(e.weightData),t.body.append("model.weights.bin",new Blob([o],{type:"application/octet-stream"}),"model.weights.bin")),[4,this.fetch(this.path,t)];case 1:if((i=a.sent()).ok)return[2,{modelArtifactsInfo:Fa(e),responses:[i]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+"".concat(i.status,"."))}}))}))},e.prototype.load=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,o,i=this;return a(this,(function(a){switch(a.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(e=a.sent()).ok)throw new Error("Request to ".concat(this.path," failed with status code ")+"".concat(e.status,". Please verify this URL points to ")+"the model JSON of the model to load.");a.label=2;case 2:return a.trys.push([2,4,,5]),[4,e.json()];case 3:return t=a.sent(),[3,5];case 4:throw a.sent(),n="Failed to parse model JSON of response from ".concat(this.path,"."),this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(r=t.modelTopology,o=t.weightsManifest,null==r&&null==o)throw new Error("The JSON from HTTP path ".concat(this.path," contains neither model ")+"topology or manifest for weights.");return[2,Ba(t,(function(e){return i.loadWeights(e)}))]}}))}))},e.prototype.loadWeights=function(e){return r(this,void 0,void 0,(function(){var t,n,r,u,c,l,h,f,d,p,g,m,v,y,b,w,k,x,E,S,A,_,I;return a(this,(function(a){switch(a.label){case 0:t=Array.isArray(this.path)?this.path[1]:this.path,n=i(function(e){var t=e.lastIndexOf("/"),n=e.lastIndexOf("?");return[e.substring(0,t)+"/",n>t?e.substring(n):""]}(t),2),r=n[0],u=n[1],c=this.weightPathPrefix||r,l=Ca(e),h=[],f=[];try{for(d=o(e),p=d.next();!p.done;p=d.next()){g=p.value;try{for(_=void 0,m=o(g.paths),v=m.next();!v.done;v=m.next())y=v.value,null!=this.weightUrlConverter?f.push(this.weightUrlConverter(y)):h.push(c+y+u)}catch(e){_={error:e}}finally{try{v&&!v.done&&(I=m.return)&&I.call(m)}finally{if(_)throw _.error}}}}catch(e){S={error:e}}finally{try{p&&!p.done&&(A=d.return)&&A.call(d)}finally{if(S)throw S.error}}return this.weightUrlConverter?(w=(b=h.push).apply,k=[h],x=[[]],[4,Promise.all(f)]):[3,2];case 1:w.apply(b,k.concat([s.apply(void 0,x.concat([i.apply(void 0,[a.sent()]),!1]))])),a.label=2;case 2:return[4,Nh(h,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 3:return E=a.sent(),[2,[l,E]]}}))}))},e}();function Dh(e){return null!=e.match(Th.URL_SCHEME_REGEX)}Th.URL_SCHEME_REGEX=/^https?:\/\//;var Rh=function(e,t){return("undefined"!=typeof fetch||null!=t&&null!=t.fetchFunc)&&(Array.isArray(e)?e.every((function(e){return Dh(e)})):Dh(e))?Bh(e,t):null};function Bh(e,t){return new Th(e,t)}Oa.registerSaveRouter(Rh),Oa.registerLoadRouter(Rh);var Fh=function(){function e(e){this.modelArtifacts=e}return e.prototype.load=function(){return this.modelArtifacts},e}(),Ch=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return this.saveHandler(e)},e}(),Ph=function(e){e.load&&(this.load=function(){return Promise.resolve(e.load())}),e.save&&(this.save=function(t){return Promise.resolve(e.save(t))})};function Oh(e,t,n,r){if(1===arguments.length){var a=null!=e.modelTopology||null!=e.weightSpecs;return a?new Fh(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Fh({modelTopology:e}))}return console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Fh({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r})}var Lh,zh={__proto__:null,CompositeArrayBuffer:Aa,browserFiles:function(e){return new _h(e)},browserHTTPRequest:function(e,t){return Bh(e,t)},concatenateArrayBuffers:function(e){return Aa.join(e)},copyModel:function(e,t){return r(this,void 0,void 0,(function(){return a(this,(function(n){return[2,uo(e,t,!1)]}))}))},decodeWeights:_a,encodeWeights:function(e,t){return r(this,void 0,void 0,(function(){var n,o,i,s,u,c=this;return a(this,(function(l){switch(l.label){case 0:for(n=[],o=[],i=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e),s=function(s){var u=i[s],l=Array.isArray(e)?e[s].tensor:e[u];if("float32"!==l.dtype&&"int32"!==l.dtype&&"bool"!==l.dtype&&"string"!==l.dtype&&"complex64"!==l.dtype)throw new Error("Unsupported dtype in weight '".concat(u,"': ").concat(l.dtype));var h={name:u,shape:l.shape,dtype:l.dtype};if("string"===l.dtype){var f=new Promise((function(e){return r(c,void 0,void 0,(function(){var t,n,r,o,i,s,u;return a(this,(function(a){switch(a.label){case 0:return[4,l.bytes()];case 1:for(t=a.sent(),n=t.reduce((function(e,t){return e+t.length}),0)+4*t.length,r=new Uint8Array(n),o=0,i=0;i0&&Number.isInteger(n),(function(){return"If provided, numClasses must be a positive integer, "+"but got ".concat(n)})),p(1===r.rank,(function(){return"Expected the rank of labels to be 1, but got ".concat(r.rank)})),p(1===a.rank,(function(){return"Expected the rank of predictions to be 1, "+"but got ".concat(a.rank)})),p(r.shape[0]===a.shape[0],(function(){return"Mismatch in the number of examples: "+"".concat(r.shape[0]," vs. ").concat(a.shape[0],". ")+"Labels and predictions should have the same number of elements."})),p(n>0&&Number.isInteger(n),(function(){return"numClasses is required to be a positive integer, but got "+"".concat(n)}));var o=ru(po(r,"int32"),n),i=ru(po(a,"int32"),n),s=Hc(o),u=ei(s,i);return po(u,"int32")}})},Wh=!1;function Gh(e,t){if(void 0===t&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==e)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=!1,r=!1,a=!1,o=!1,s=!1,u=!1;if(e.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&e instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement)a=!0;else if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement)o=!0;else if(null!=e.getContext)s=!0;else{if(!("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap))throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, "+"but was ".concat(e.constructor.name));u=!0}if(null!=Fn(_n,ca.backendName)){var c={pixels:e},l={numChannels:t};return ca.runKernel(_n,c,l)}var h,f,d=i(a?[e.videoWidth,e.videoHeight]:[e.width,e.height],2),p=d[0],g=d[1];if(s)h=e.getContext("2d").getImageData(0,0,p,g).data;else if(r||n)h=e.data;else if(o||a||u){if(null==Lh)if("undefined"==typeof document){if("undefined"==typeof OffscreenCanvas||"undefined"==typeof OffscreenCanvasRenderingContext2D)throw new Error("Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.");Lh=new OffscreenCanvas(1,1).getContext("2d")}else Lh=document.createElement("canvas").getContext("2d",{willReadFrequently:!0});Lh.canvas.width=p,Lh.canvas.height=g,Lh.drawImage(e,0,0,p,g),h=Lh.getImageData(0,0,p,g).data}if(4===t)f=new Int32Array(h);else{var m=p*g;f=new Int32Array(m*t);for(var v=0;v4||2===t)throw new Error("toPixels only supports depth of size "+"1, 3 or 4 but got ".concat(t));if("float32"!==e.dtype&&"int32"!==e.dtype)throw new Error("Unsupported type for toPixels: ".concat(e.dtype,".")+" Please use float32 or int32 tensors.")}var qh={__proto__:null,draw:function(e,t,n){var r=va(e,"img","draw");if(!(e instanceof Wr)){var a=r;r=po(a,"int32"),a.dispose()}Kh(r),function(e){var t=(null==e?void 0:e.alpha)||1;if(t>1||t<0)throw new Error("Alpha value ".concat(t," is suppoed to be in range [0 - 1]."))}(null==n?void 0:n.imageOptions);var o={image:r},i={canvas:t,options:n};ca.runKernel(Pe,o,i)},fromPixels:wa({fromPixels_:Gh}),fromPixelsAsync:function(e,t){return void 0===t&&(t=3),r(this,void 0,void 0,(function(){var n,r;return a(this,(function(a){switch(a.label){case 0:if(n=null,!j().getBool("WRAP_TO_IMAGEBITMAP")||!function(e){return"undefined"!=typeof window&&"undefined"!=typeof ImageBitmap&&window.hasOwnProperty("createImageBitmap")&&!(e instanceof ImageBitmap)&&function(e){return null!=e&&0!==e.width&&0!==e.height}(e)&&!function(e){return null!=e&&e.data instanceof Uint8Array}(e)}(e))return[3,5];r=void 0,a.label=1;case 1:return a.trys.push([1,3,,4]),[4,createImageBitmap(e,{premultiplyAlpha:"none"})];case 2:return r=a.sent(),[3,4];case 3:return a.sent(),r=null,[3,4];case 4:return n=null!=r&&r.width===e.width&&r.height===e.height?r:e,[3,6];case 5:n=e,a.label=6;case 6:return[2,Gh(n,t)]}}))}))},toPixels:function(e,t){return r(this,void 0,void 0,(function(){var n,r,o,s,u,c,l,h,f,d,p,g,m,v,y,b;return a(this,(function(a){switch(a.label){case 0:return n=va(e,"img","toPixels"),e instanceof Wr||(n=po(r=n,"int32"),r.dispose()),Kh(n),o=i(n.shape.slice(0,2),2),s=o[0],u=o[1],c=2===n.rank?1:n.shape[2],[4,n.data()];case 1:for(l=a.sent(),h="float32"===n.dtype?255:1,f=new Uint8ClampedArray(u*s*4),d=0;d1)throw new Error("Tensor values for a float32 Tensor must be in the "+"range [0 - 1] but encountered ".concat(m,"."))}else if("int32"===n.dtype&&(m<0||m>255))throw new Error("Tensor values for a int32 Tensor must be in the "+"range [0 - 255] but encountered ".concat(m,"."));1===c?(p[0]=m*h,p[1]=m*h,p[2]=m*h):p[g]=m*h}f[0+(v=4*d)]=Math.round(p[0]),f[v+1]=Math.round(p[1]),f[v+2]=Math.round(p[2]),f[v+3]=Math.round(p[3])}return null!=t&&(Wh||null!=Fn(Pe,ca.backendName)&&(console.warn("tf.browser.toPixels is not efficient to draw tensor on canvas. Please try tf.browser.draw instead."),Wh=!0),t.width=u,t.height=s,y=t.getContext("2d"),b=new ImageData(f,u,s),y.putImageData(b,0,0)),n!==e&&n.dispose(),[2,f]}}))}))}};function Vh(e,t){var n=e.shape.length,r=t.shape.length;if(n<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher,"+" but the rank was ".concat(n,"."));if(r<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher,"+" but the rank was ".concat(r,"."));if("int32"!==t.dtype)throw new Error("tf.gatherND() expects the indices to be int32 type,"+" but the dtype was ".concat(t.dtype,"."));if(t.shape[r-1]>n)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+"".concat(t.shape[r-1]," vs. ").concat(n));if(0===v(e.shape))throw new Error("Requested more than 0 entries, but input is empty."+" Input shape: ".concat(e.shape,"."));for(var a=t.shape,o=a[a.length-1],u=1,c=0;c-1)o[c]=0;else{var l=Zh(t,n,c),h=r[l];e&1<-1)o[c]=Number.MAX_SAFE_INTEGER;else{var l=Zh(t,n,c),h=r[l];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var u=r[a];return i<0&&(i+=u),f(0,i,u-1)}function ef(e,t,n,r,a,o){var i=t[a],s=n[a]||1;(e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var u=r[a];return i<0&&(i+=u),s>0?f(0,i,u):f(-1,i,u-1)}function tf(e,t,n,r,a,o){if(a[t])return n>0?o[t]:o[t+1&1];var i=e<0?r+e:e;return io[1]?o[1]:i}var nf,rf={__proto__:null,assertParamsValid:function(e,t,n){var r=e.shape.length;p(r===t.length,(function(){return"Error in slice".concat(r,"D: Length of begin ").concat(t," must ")+"match the rank of the array (".concat(r,").")})),p(r===n.length,(function(){return"Error in slice".concat(r,"D: Length of size ").concat(n," must ")+"match the rank of the array (".concat(r,").")}));for(var a=function(a){p(t[a]+n[a]<=e.shape[a],(function(){return"Error in slice".concat(r,"D: begin[").concat(a,"] + size[").concat(a,"] ")+"(".concat(t[a]+n[a],") would overflow input.shape[").concat(a,"] (").concat(e.shape[a],")")}))},o=0;o0?e[e.length-1]:1,r=0;r0){var d=t[0],p=n+1;l=Yh(i,d,p,r,e),h=Xh(s,d,p,a,e),f=jh(o,d,p,e)}else for(var g=0;g1){r=a;break}for(a=r+1;a0||n[a]!==e[a])return!1;return!0},maskToAxes:function(e){for(var t=[],n=0;e>0;)1&e&&t.push(n),e/=2,n++;return t},parseSliceParams:function(e,t,n){var r,a,o=e.shape.length;return(r="number"==typeof t?s([t],i(new Array(o-1).fill(0)),!1):t.length=0?t:(p(-1===t,(function(){return"Negative size values should be exactly -1 but got "+"".concat(t," for the slice() size at index ").concat(n,".")})),e.shape[n]-r[n])})),[r,a]},sliceInfo:function(e,t,n,r,a,o,i,s,u){var c;if(null==r?(c=new Array(t.length)).fill(1):c=r,null!=i&&0!=(i&i-1))throw new Error("Multiple ellipses in slice is not allowed.");for(var l=!1,h={dims:c.length,numAddAxisAfterEllipsis:0,begin:t.slice(),end:n.slice(),strides:c.slice(),beginMask:a,endMask:o,ellipsisMask:i,newAxisMask:s,shrinkAxisMask:u},f=0;f0?0:-1,d.strides[f]>0?w:w-1];if(b&&d.strides[f]<=0)throw Error("only stride 1 allowed on non-range indexing.");m=m&&1===d.strides[f];var E=!!(d.beginMask&1<=w)throw Error("slice index ".concat(d.begin[f]," of dimension ").concat(f," out of bounds."))}else d.begin[f]=tf(d.begin[f],0,d.strides[f],w,k,x),d.end[f]=tf(d.end[f],1,d.strides[f],w,k,x);var A=1===d.strides[f]&&0===d.begin[f]&&d.end[f]===w;p=p&&A,g=g&&(0===f&&1===d.strides[f]||A)}else p=p&&1===d.strides[f]&&E,g=g&&(0===f&&1===d.strides[f]||E);var _,I=void 0,N=!1;if(d.beginValid&&d.endValid?(I=d.end[f]-d.begin[f],N=!0):b?(I=1,N=!0):E&&w>=0&&(I=d.strides[f]<0?-w:w,N=!0),N)_=0===I||I<0!=d.strides[f]<0?0:Math.trunc(I/d.strides[f])+(I%d.strides[f]!=0?1:0),v.push(_);else v.push(-1)}else v.push(b?1:-1)}for(var M=0;M=0?y.push(v[T]):-2===T&&y.push(1)}var D=y.filter((function(e,t){return-2!==d.finalShapeGatherIndices[t]}));return{finalShapeSparse:D,finalShape:y,isIdentity:p,sliceDim0:g,isSimpleSlice:m,begin:d.begin,end:d.end,strides:d.strides}},startForAxis:$h,startIndicesWithElidedDims:Yh,stopForAxis:ef,stopIndicesWithElidedDims:Xh,stridesForAxis:Qh,stridesWithElidedDims:jh},af=function(){function e(){}return e.sgd=function(e){return new wh(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new kh(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new xh(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new yh(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new mh(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new bh(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new vh(e,t)},e}(),of=af,sf="undefined"!=typeof requestAnimationFrame?requestAnimationFrame:"undefined"!=typeof setImmediate?setImmediate:function(e){return e()};!function(e){e[e.FIRST_DIM_SIZE=0]="FIRST_DIM_SIZE",e[e.VALUE_ROWIDS=1]="VALUE_ROWIDS",e[e.ROW_LENGTHS=2]="ROW_LENGTHS",e[e.ROW_SPLITS=3]="ROW_SPLITS",e[e.ROW_LIMITS=4]="ROW_LIMITS",e[e.ROW_STARTS=5]="ROW_STARTS"}(nf||(nf={}));var uf="->",cf=/->/g;function lf(e,t){for(var n=[],r=0;r=0&&t1)throw new Error('Equation must contain exactly one arrow ("'.concat(uf,'").'));var r=i(e.split(uf),2),a=r[0],o=r[1];p(-1===a.indexOf("..."),(function(){return'The ellipsis notation ("'.concat("...",'") is not supported yet.')}));var s=a.split(","),u=s.length;if(t!==u)throw new Error("Expected ".concat(u," input tensors, received ").concat(t));if(u>2)throw new Error("Support for more than 2 input tensors is not implemented yet.");for(var c=[],l=function(e){var t=o[e];if(!s.some((function(e){return-1!==e.indexOf(t)})))throw new Error("Output subscripts contain the label ".concat(t," ")+"not present in the input subscripts.");-1===c.indexOf(t)&&c.push(t)},h=0;h=2*t+1||a%2==1?u.push(a):o.push(a);r.push.apply(r,s([],i(o),!1)),r.push(0),r.push.apply(r,s([],i(u),!1))}return r},getRaggedRank:function(e){return 0===e.length?0:e[0]===nf.FIRST_DIM_SIZE?e.length-1:e.length},getReductionAxes:Li,getReshaped:function(e,t,n,r){void 0===r&&(r=!0);var a=[];if(r)(a=a.concat(t.slice(0))).push(e[0]/n),a=a.concat(e.slice(1));else{a=a.concat(e[0]);for(var o=t.length,i=0;i= ").concat(n)},getSparseReshapeEmptyTensorZeroOutputDimErrorMessage:function(){return"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero"},getSparseReshapeInputOutputMismatchErrorMessage:function(e,t){var n=v(e),r=v(t);return"Input to reshape is a tensor with ".concat(n," dense values, but the requested shape has ").concat(r,". inputShape=").concat(e," outputShape=").concat(t)},getSparseReshapeInputOutputMultipleErrorMessage:function(e,t){var n=v(e),r=v(t);return"Input to reshape is a SparseTensor with ".concat(n,"\n dense values, but the requested shape requires a multiple of ").concat(r,". inputShape=").concat(e," outputShape= ").concat(t)},getSparseReshapeMultipleNegativeOneOutputDimErrorMessage:function(e,t){return"only one output dimension may be -1, not both ".concat(e," and ").concat(t)},getSparseReshapeNegativeOutputDimErrorMessage:function(e,t){return"size ".concat(e," must be non-negative, not ").concat(t)},getSparseSegmentReductionIndicesOutOfRangeErrorMessage:function(e,t,n){return"Bad: indices[".concat(e,"] == ").concat(t," out of range [0, ").concat(n,")")},getSparseSegmentReductionNegativeSegmentIdsErrorMessage:function(){return"segment ids must be >= 0"},getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage:function(){return"segment ids are not increasing"},getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage:function(e,t){return"Segment id ".concat(e," out of range [0, ").concat(t,"), possibly because segmentIds input is not sorted.")},getUndoAxesPermutation:function(e){return e.map((function(e,t){return[t,e]})).sort((function(e,t){return e[1]-t[1]})).map((function(e){return e[0]}))},isIdentityPermutation:function(e){return e.every((function(e,t){return e===t}))},log:function(){for(var e=[],t=0;t0?e+t:e}));t[a]=e.shape[n]-o}p(e.shape[n]===t.reduce((function(e,t){return e+t})),(function(){return"The sum of sizes must match the size of the axis dimension."})),r=t}return r},segment_util:{__proto__:null,collectGatherOpShapeInfo:function(e,t,n,r){var a=t.shape.length,o=e.shape.length;if(0!==r&&(r<-a||r>a))throw new Error("Expect batchDims in the range of [-".concat(a,", ").concat(a,"], but got ").concat(r));if(r<0&&(r+=a),r>o)throw new Error("batchDims (".concat(r,") must be less than rank(x) (\n ").concat(o,")."));if(nt||n===e?r=!0:n=C(e,n+1);return n}},shouldFuse:al,slice_util:rf,splitRealAndImagArrays:function(e){for(var t=new Float32Array(e.length/2),n=new Float32Array(e.length/2),r=0;r=r)throw new Error("defaultValue.shape=".concat(e," and ragged tensor flatValues.shape=").concat(t,", are incompatible: defaultValue.rank = ").concat(n," must be less than ragged tensor input flatValues.rank = ").concat(r,")"));for(var a=0;a=0&&i>=0&&1!==o&&o!==i)throw new Error("defaultValue.shape=".concat(e,", and ragged tensor input flatValues.shape=").concat(t," are incompatible: defaultValue.shape[").concat(a-e.length,"] = ").concat(o," but ragged tensor input.flatValues.shape[").concat(a-e.length,"] = ").concat(i))}}},validateInput:Cc,validateUpdateShape:Fc,warn:Dn},ff={__proto__:null,nonMaxSuppressionV3Impl:Sl,nonMaxSuppressionV4Impl:Al,nonMaxSuppressionV5Impl:_l,whereImpl:qc};!function(){var e,t;try{for(var n=o(Eh),r=n.next();!r.done;r=n.next())dh(r.value)}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}(),e.Abs="Abs",e.Acos=Y,e.Acosh=X,e.AdadeltaOptimizer=mh,e.AdagradOptimizer=vh,e.AdamOptimizer=yh,e.AdamaxOptimizer=bh,e.Add=Q,e.AddN=$,e.All="All",e.Any="Any",e.ArgMax=ee,e.ArgMin=te,e.Asin=ne,e.Asinh=re,e.Atan=ae,e.Atan2=ie,e.Atanh=oe,e.AvgPool=se,e.AvgPool3D=ue,e.AvgPool3DGrad="AvgPool3DGrad",e.AvgPoolGrad="AvgPoolGrad",e.BatchMatMul=ce,e.BatchToSpaceND=le,e.Bincount=he,e.BitwiseAnd=fe,e.BroadcastArgs=de,e.BroadcastTo="BroadcastTo",e.Cast=pe,e.Ceil=ge,e.ClipByValue=me,e.Complex=ve,e.ComplexAbs=ye,e.Concat=be,e.Conv2D=we,e.Conv2DBackpropFilter=ke,e.Conv2DBackpropInput=xe,e.Conv3D=Ee,e.Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",e.Conv3DBackpropInputV2=Se,e.Cos="Cos",e.Cosh=Ae,e.CropAndResize=Ne,e.Cumprod=_e,e.Cumsum=Ie,e.DataStorage=u,e.DenseBincount=Me,e.DepthToSpace=Te,e.DepthwiseConv2dNative=De,e.DepthwiseConv2dNativeBackpropFilter=Re,e.DepthwiseConv2dNativeBackpropInput=Be,e.Diag=Fe,e.Dilation2D=Ce,e.Dilation2DBackpropFilter="Dilation2DBackpropFilter",e.Dilation2DBackpropInput="Dilation2DBackpropInput",e.Draw=Pe,e.Einsum=Le,e.Elu="Elu",e.EluGrad="EluGrad",e.Environment=q,e.Equal=ze,e.Erf="Erf",e.Exp="Exp",e.ExpandDims=Ue,e.Expm1=We,e.FFT="FFT",e.Fill=Ge,e.FlipLeftRight=Ke,e.Floor=qe,e.FloorDiv=Ve,e.FromPixels=_n,e.FusedBatchNorm=He,e.FusedConv2D=Mn,e.FusedDepthwiseConv2D=Tn,e.GatherNd=Ze,e.GatherV2=je,e.Greater=Je,e.GreaterEqual=Ye,e.IFFT=Qe,e.Identity=Xe,e.Imag=$e,e.IsFinite=et,e.IsInf=tt,e.IsNan=nt,e.KernelBackend=c,e.LRN="LRN",e.LRNGrad="LRNGrad",e.LeakyRelu=rt,e.Less=at,e.LessEqual=ot,e.LinSpace=it,e.Log="Log",e.Log1p=st,e.LogSoftmax="LogSoftmax",e.LogicalAnd=ut,e.LogicalNot=ct,e.LogicalOr=lt,e.LogicalXor="LogicalXor",e.LowerBound="LowerBound",e.MatrixBandPart="MatrixBandPart",e.Max="Max",e.MaxPool=ft,e.MaxPool3D=dt,e.MaxPool3DGrad="MaxPool3DGrad",e.MaxPoolGrad="MaxPoolGrad",e.MaxPoolWithArgmax=pt,e.Maximum=ht,e.Mean=gt,e.Min="Min",e.Minimum=mt,e.MirrorPad=vt,e.Mod="Mod",e.MomentumOptimizer=kh,e.Multinomial=yt,e.Multiply=bt,e.Neg="Neg",e.NonMaxSuppressionV3=kt,e.NonMaxSuppressionV4=xt,e.NonMaxSuppressionV5=Et,e.NotEqual=wt,e.OP_SCOPE_SUFFIX=ba,e.OneHot=At,e.OnesLike=St,e.Optimizer=gh,e.OptimizerConstructors=af,e.Pack=_t,e.PadV2=It,e.Pool="Pool",e.Pow="Pow",e.Prelu=Nt,e.Prod=Mt,e.RMSPropOptimizer=xh,e.RaggedGather=Tt,e.RaggedRange=Dt,e.RaggedTensorToTensor=Rt,e.Range=Bt,e.Real=Ft,e.RealDiv=Oe,e.Reciprocal=Ct,e.Relu=Pt,e.Relu6=Ut,e.Reshape=Ot,e.ResizeBilinear=zt,e.ResizeBilinearGrad="ResizeBilinearGrad",e.ResizeNearestNeighbor=Lt,e.ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",e.Reverse=Wt,e.RotateWithOffset=In,e.Round=Gt,e.Rsqrt=Kt,e.SGDOptimizer=wh,e.ScatterNd=qt,e.SearchSorted=Ht,e.Select=jt,e.Selu=Zt,e.Sigmoid=Qt,e.Sign=Xt,e.Sin="Sin",e.Sinh=Yt,e.Slice=Jt,e.Softmax=rn,e.Softplus=$t,e.SpaceToBatchND=tn,e.SparseFillEmptyRows=an,e.SparseReshape=on,e.SparseSegmentMean=sn,e.SparseSegmentSum=un,e.SparseToDense=cn,e.SplitV=nn,e.Sqrt=en,e.Square="Square",e.SquaredDifference=ln,e.StaticRegexReplace=hn,e.Step=An,e.StridedSlice=fn,e.StringNGrams=dn,e.StringSplit=pn,e.StringToHashBucketFast=gn,e.Sub="Sub",e.Sum="Sum",e.Tan="Tan",e.Tanh=mn,e.Tensor=Wr,e.TensorBuffer=Lr,e.TensorScatterUpdate=Vt,e.Tile=vn,e.TopK=yn,e.Transform=bn,e.Transpose=wn,e.Unique=kn,e.Unpack=xn,e.UnsortedSegmentSum=En,e.UpperBound="UpperBound",e.Variable=Zr,e.ZerosLike=Sn,e._FusedMatMul=Nn,e.abs=So,e.acos=Ao,e.acosh=_o,e.add=wo,e.addN=Io,e.all=No,e.any=Mo,e.argMax=To,e.argMin=Do,e.asin=Ro,e.asinh=Bo,e.atan=Fo,e.atan2=Co,e.atanh=Po,e.avgPool=Xo,e.avgPool3d=Qo,e.backend=function(){return ca.backend},e.backend_util=hf,e.basicLSTMCell=ai,e.batchNorm=ii,e.batchNorm2d=si,e.batchNorm3d=ui,e.batchNorm4d=ci,e.batchToSpaceND=oi,e.bincount=li,e.bitwiseAnd=hi,e.booleanMaskAsync=function(e,t,n){return r(this,void 0,void 0,(function(){var r,o,i,s,u,c,l,h,f,d,m,v,y;return a(this,(function(a){switch(a.label){case 0:for(r=va(e,"tensor","boolMask"),o=va(t,"mask","boolMask","bool"),i=null==n?0:n,s=o.rank,u=r.shape,p(s>0,(function(){return"mask cannot be scalar"})),g(u.slice(i,i+s),o.shape,"mask's shape must match the first K dimensions of tensor's shape,"),c=1,l=i;l1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+"but got ".concat(r.rank)})),p(r.rank-1===o.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+"".concat(r.rank," and targets rank ").concat(o.rank)})),g(r.shape.slice(0,r.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),s=r.shape[r.shape.length-1],p(n>0&&n<=s,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+"dimension (".concat(s,"), but got ").concat(n)})),[4,r.data()];case 1:return u=a.sent(),[4,o.data()];case 2:for(c=a.sent(),l=i([u.length/s,s],2),h=l[0],f=l[1],d=S("bool",h),m=0;m0&&a[a.length-1])||6!==o[0]&&2!==o[0])){i=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function s(e,t,n){if(n||2===arguments.length)for(var r,a=0,o=t.length;a0;)n=Math.random()*t|0,d(e,--t,n)}function f(e,t,n){return Math.max(e,Math.min(t,n))}function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function p(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function g(e,t,n){void 0===n&&(n=""),p(b(e,t),(function(){return n+" Shapes ".concat(e," and ").concat(t," must match")}))}function m(e){p(null!=e,(function(){return"The input to the tensor constructor must be a non-null value."}))}function v(e){if(0===e.length)return 1;for(var t=e[0],n=1;n=-n&&es)&&1===e[s]&&(n.push(e[s]),r.push(s)),o[i]<=s&&i++}1!==e[s]&&(n.push(e[s]),r.push(s))}return{newShape:n,keptDims:r}}function S(e,t){return A(e,t)}function A(e,t){var n=null;if(null==e||"float32"===e)n=new Float32Array(t);else if("int32"===e)n=new Int32Array(t);else if("bool"===e)n=new Uint8Array(t);else{if("string"!==e)throw new Error("Unknown data type ".concat(e));n=new Array(t)}return n}function _(e,t){for(var n=0;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function O(e,t,n,r){void 0===r&&(r=!1);var a=new Array;if(1===t.length)for(var o=t[0]*(r?2:1),i=0;i=0,(function(){return"Tensor must have a shape comprised of positive integers but got "+"shape [".concat(e,"].")}))}))}function G(e){return e&&e.then&&"function"==typeof e.then}var K,q=function(){function e(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=V,this.populateURLFlags()}return e.prototype.setPlatform=function(e,t){null!=this.platform&&(H().getBool("IS_TEST")||H().getBool("PROD")||console.warn("Platform ".concat(this.platformName," has already been set. ")+"Overwriting the platform with ".concat(e,"."))),this.platformName=e,this.platform=t},e.prototype.registerFlag=function(e,t,n){if(this.flagRegistry[e]={evaluationFn:t,setHook:n},null!=this.urlFlags[e]){var r=this.urlFlags[e];H().getBool("IS_TEST")||H().getBool("PROD")||console.warn("Setting feature override from URL ".concat(e,": ").concat(r,".")),this.set(e,r)}},e.prototype.getAsync=function(e){return r(this,void 0,void 0,(function(){var t,n;return a(this,(function(r){switch(r.label){case 0:return e in this.flags?[2,this.flags[e]]:(t=this.flags,n=e,[4,this.evaluateFlag(e)]);case 1:return t[n]=r.sent(),[2,this.flags[e]]}}))}))},e.prototype.get=function(e){if(e in this.flags)return this.flags[e];var t=this.evaluateFlag(e);if(G(t))throw new Error("Flag ".concat(e," cannot be synchronously evaluated. ")+"Please use getAsync() instead.");return this.flags[e]=t,this.flags[e]},e.prototype.getNumber=function(e){return this.get(e)},e.prototype.getBool=function(e){return this.get(e)},e.prototype.getString=function(e){return this.get(e)},e.prototype.getFlags=function(){return this.flags},Object.defineProperty(e.prototype,"features",{get:function(){return this.flags},enumerable:!1,configurable:!0}),e.prototype.set=function(e,t){if(null==this.flagRegistry[e])throw new Error("Cannot set flag ".concat(e," as it has not been registered."));this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)},e.prototype.evaluateFlag=function(e){if(null==this.flagRegistry[e])throw new Error("Cannot evaluate flag '".concat(e,"': no evaluation function found."));return this.flagRegistry[e].evaluationFn()},e.prototype.setFlags=function(e){this.flags=Object.assign({},e)},e.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},e.prototype.populateURLFlags=function(){var e=this;if(void 0!==this.global&&void 0!==this.global.location&&void 0!==this.global.location.search){var t=this.getQueryParams(this.global.location.search);"tfjsflags"in t&&t.tfjsflags.split(",").forEach((function(t){var n=i(t.split(":"),2),r=n[0],a=n[1];e.urlFlags[r]=function(e,t){var n=t.toLowerCase();return"true"===n||"false"===n?"true"===n:"".concat(+n)===n?+n:t}(0,a)}))}},e}();function V(e){var t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(function(e){for(var n=[],r=1;r>>=0)&&e<256)&&(r=Vn[e])?r:(n=Zn(e,(0|e)<0?-1:0,!0),a&&(Vn[e]=n),n):(a=-128<=(e|=0)&&e<128)&&(r=qn[e])?r:(n=Zn(e,e<0?-1:0,!1),a&&(qn[e]=n),n)}function jn(e,t){if(isNaN(e))return t?rr:nr;if(t){if(e<0)return rr;if(e>=$n)return ur}else{if(e<=-er)return cr;if(e+1>=er)return sr}return e<0?jn(-e,t).neg():Zn(e%Qn|0,e/Qn|0,t)}function Zn(e,t,n){return new Gn(e,t,n)}Gn.fromInt=Hn,Gn.fromNumber=jn,Gn.fromBits=Zn;var Jn=Math.pow;function Yn(e,t,n){if(0===e.length)throw Error("empty string");if("NaN"===e||"Infinity"===e||"+Infinity"===e||"-Infinity"===e)return nr;if("number"==typeof t?(n=t,t=!1):t=!!t,(n=n||10)<2||360)throw Error("interior hyphen");if(0===r)return Yn(e.substring(1),t,n).neg();for(var a=jn(Jn(n,8)),o=nr,i=0;i>>0:this.low},lr.toNumber=function(){return this.unsigned?(this.high>>>0)*Qn+(this.low>>>0):this.high*Qn+(this.low>>>0)},lr.toString=function(e){if((e=e||10)<2||36>>0).toString(e);if((o=s).isZero())return u+i;for(;u.length<6;)u="0"+u;i=""+u+i}},lr.getHighBits=function(){return this.high},lr.getHighBitsUnsigned=function(){return this.high>>>0},lr.getLowBits=function(){return this.low},lr.getLowBitsUnsigned=function(){return this.low>>>0},lr.getNumBitsAbs=function(){if(this.isNegative())return this.eq(cr)?64:this.neg().getNumBitsAbs();for(var e=0!=this.high?this.high:this.low,t=31;t>0&&0==(e&1<=0},lr.isOdd=function(){return 1==(1&this.low)},lr.isEven=function(){return 0==(1&this.low)},lr.equals=function(e){return Kn(e)||(e=Xn(e)),(this.unsigned===e.unsigned||this.high>>>31!=1||e.high>>>31!=1)&&this.high===e.high&&this.low===e.low},lr.eq=lr.equals,lr.notEquals=function(e){return!this.eq(e)},lr.neq=lr.notEquals,lr.ne=lr.notEquals,lr.lessThan=function(e){return this.comp(e)<0},lr.lt=lr.lessThan,lr.lessThanOrEqual=function(e){return this.comp(e)<=0},lr.lte=lr.lessThanOrEqual,lr.le=lr.lessThanOrEqual,lr.greaterThan=function(e){return this.comp(e)>0},lr.gt=lr.greaterThan,lr.greaterThanOrEqual=function(e){return this.comp(e)>=0},lr.gte=lr.greaterThanOrEqual,lr.ge=lr.greaterThanOrEqual,lr.compare=function(e){if(Kn(e)||(e=Xn(e)),this.eq(e))return 0;var t=this.isNegative(),n=e.isNegative();return t&&!n?-1:!t&&n?1:this.unsigned?e.high>>>0>this.high>>>0||e.high===this.high&&e.low>>>0>this.low>>>0?-1:1:this.sub(e).isNegative()?-1:1},lr.comp=lr.compare,lr.negate=function(){return!this.unsigned&&this.eq(cr)?cr:this.not().add(ar)},lr.neg=lr.negate,lr.add=function(e){Kn(e)||(e=Xn(e));var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,i=65535&e.high,s=e.low>>>16,u=0,c=0,l=0,h=0;return l+=(h+=a+(65535&e.low))>>>16,c+=(l+=r+s)>>>16,u+=(c+=n+i)>>>16,u+=t+o,Zn((l&=65535)<<16|(h&=65535),(u&=65535)<<16|(c&=65535),this.unsigned)},lr.subtract=function(e){return Kn(e)||(e=Xn(e)),this.add(e.neg())},lr.sub=lr.subtract,lr.multiply=function(e){if(this.isZero())return nr;if(Kn(e)||(e=Xn(e)),Wn)return Zn(Wn.mul(this.low,this.high,e.low,e.high),Wn.get_high(),this.unsigned);if(e.isZero())return nr;if(this.eq(cr))return e.isOdd()?cr:nr;if(e.eq(cr))return this.isOdd()?cr:nr;if(this.isNegative())return e.isNegative()?this.neg().mul(e.neg()):this.neg().mul(e).neg();if(e.isNegative())return this.mul(e.neg()).neg();if(this.lt(tr)&&e.lt(tr))return jn(this.toNumber()*e.toNumber(),this.unsigned);var t=this.high>>>16,n=65535&this.high,r=this.low>>>16,a=65535&this.low,o=e.high>>>16,i=65535&e.high,s=e.low>>>16,u=65535&e.low,c=0,l=0,h=0,f=0;return h+=(f+=a*u)>>>16,l+=(h+=r*u)>>>16,h&=65535,l+=(h+=a*s)>>>16,c+=(l+=n*u)>>>16,l&=65535,c+=(l+=r*s)>>>16,l&=65535,c+=(l+=a*i)>>>16,c+=t*u+n*s+r*i+a*o,Zn((h&=65535)<<16|(f&=65535),(c&=65535)<<16|(l&=65535),this.unsigned)},lr.mul=lr.multiply,lr.divide=function(e){if(Kn(e)||(e=Xn(e)),e.isZero())throw Error("division by zero");var t,n,r;if(Wn)return this.unsigned||-2147483648!==this.high||-1!==e.low||-1!==e.high?Zn((this.unsigned?Wn.div_u:Wn.div_s)(this.low,this.high,e.low,e.high),Wn.get_high(),this.unsigned):this;if(this.isZero())return this.unsigned?rr:nr;if(this.unsigned){if(e.unsigned||(e=e.toUnsigned()),e.gt(this))return rr;if(e.gt(this.shru(1)))return or;r=rr}else{if(this.eq(cr))return e.eq(ar)||e.eq(ir)?cr:e.eq(cr)?ar:(t=this.shr(1).div(e).shl(1)).eq(nr)?e.isNegative()?ar:ir:(n=this.sub(e.mul(t)),r=t.add(n.div(e)));if(e.eq(cr))return this.unsigned?rr:nr;if(this.isNegative())return e.isNegative()?this.neg().div(e.neg()):this.neg().div(e).neg();if(e.isNegative())return this.div(e.neg()).neg();r=nr}for(n=this;n.gte(e);){t=Math.max(1,Math.floor(n.toNumber()/e.toNumber()));for(var a=Math.ceil(Math.log(t)/Math.LN2),o=a<=48?1:Jn(2,a-48),i=jn(t),s=i.mul(e);s.isNegative()||s.gt(n);)s=(i=jn(t-=o,this.unsigned)).mul(e);i.isZero()&&(i=ar),r=r.add(i),n=n.sub(s)}return r},lr.div=lr.divide,lr.modulo=function(e){return Kn(e)||(e=Xn(e)),Wn?Zn((this.unsigned?Wn.rem_u:Wn.rem_s)(this.low,this.high,e.low,e.high),Wn.get_high(),this.unsigned):this.sub(this.div(e).mul(e))},lr.mod=lr.modulo,lr.rem=lr.modulo,lr.not=function(){return Zn(~this.low,~this.high,this.unsigned)},lr.and=function(e){return Kn(e)||(e=Xn(e)),Zn(this.low&e.low,this.high&e.high,this.unsigned)},lr.or=function(e){return Kn(e)||(e=Xn(e)),Zn(this.low|e.low,this.high|e.high,this.unsigned)},lr.xor=function(e){return Kn(e)||(e=Xn(e)),Zn(this.low^e.low,this.high^e.high,this.unsigned)},lr.shiftLeft=function(e){return Kn(e)&&(e=e.toInt()),0==(e&=63)?this:e<32?Zn(this.low<>>32-e,this.unsigned):Zn(0,this.low<>>e|this.high<<32-e,this.high>>e,this.unsigned):Zn(this.high>>e-32,this.high>=0?0:-1,this.unsigned)},lr.shr=lr.shiftRight,lr.shiftRightUnsigned=function(e){if(Kn(e)&&(e=e.toInt()),0==(e&=63))return this;var t=this.high;return e<32?Zn(this.low>>>e|t<<32-e,t>>>e,this.unsigned):Zn(32===e?t:t>>>e-32,0,this.unsigned)},lr.shru=lr.shiftRightUnsigned,lr.shr_u=lr.shiftRightUnsigned,lr.toSigned=function(){return this.unsigned?Zn(this.low,this.high,!1):this},lr.toUnsigned=function(){return this.unsigned?this:Zn(this.low,this.high,!0)},lr.toBytes=function(e){return e?this.toBytesLE():this.toBytesBE()},lr.toBytesLE=function(){var e=this.high,t=this.low;return[255&t,t>>>8&255,t>>>16&255,t>>>24,255&e,e>>>8&255,e>>>16&255,e>>>24]},lr.toBytesBE=function(){var e=this.high,t=this.low;return[e>>>24,e>>>16&255,e>>>8&255,255&e,t>>>24,t>>>16&255,t>>>8&255,255&t]},Gn.fromBytes=function(e,t,n){return n?Gn.fromBytesLE(e,t):Gn.fromBytesBE(e,t)},Gn.fromBytesLE=function(e,t){return new Gn(e[0]|e[1]<<8|e[2]<<16|e[3]<<24,e[4]|e[5]<<8|e[6]<<16|e[7]<<24,t)},Gn.fromBytesBE=function(e,t){return new Gn(e[4]<<24|e[5]<<16|e[6]<<8|e[7],e[0]<<24|e[1]<<16|e[2]<<8|e[3],t)};var hr=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(Un),fr=hr||function(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}}))})),e}({__proto__:null,default:hr},[Un]);function dr(e){return fr.fromString(e,!0,16)}var pr=dr("c3a5c85c97cb3127"),gr=dr("b492b66fbe98f273"),mr=dr("9ae16a3b2f90404f");function vr(e){return e.xor(e.shru(47))}function yr(e,t,n){var r=e.slice(t,t+n);return fr.fromBytes(Array.from(r),!0,!0)}function br(e,t){return yr(e,t,8)}function wr(e,t){return yr(e,t,4)}function kr(e,t){return 0===t?e:e.shru(t).or(e.shl(64-t))}function xr(e,t,n){void 0===n&&(n=dr("9ddfea08eb382d69"));var r=e.xor(t).mul(n);r=r.xor(r.shru(47));var a=t.xor(r).mul(n);return(a=a.xor(a.shru(47))).mul(n)}function Er(e,t,n,r){return function(e,t,n,r,a,o){a=a.add(e),o=kr(o.add(a).add(r),21);var i=a;return a=(a=a.add(t)).add(n),o=o.add(kr(a,44)),[a.add(r),o.add(i)]}(br(e,t),br(e,t+8),br(e,t+16),br(e,t+24),n,r)}function Sr(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=Mr(e)),H().getBool("DEBUG")&&_(e,t),function(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}(e,t))return e;if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t){for(var n=new Uint8Array(e.length),r=0;r=8){var n=mr.add(2*t),r=br(e,0).add(mr);return xr(kr(a=br(e,t-8),37).mul(n).add(r),kr(r,25).add(a).mul(n),n)}if(t>=4)return n=mr.add(2*t),xr((r=wr(e,0)).shl(3).add(t),wr(e,t-4),n);if(t>0){var a,o=(r=e[0])+((a=e[t>>1])<<8),i=t+(e[t-1]<<2);return vr(mr.mul(o).xor(pr.mul(i))).mul(mr)}return mr}(e,t):function(e,t){void 0===t&&(t=e.length);var n=mr.add(2*t),r=br(e,0).mul(gr),a=br(e,8),o=br(e,t-8).mul(n),i=br(e,t-16).mul(mr);return xr(kr(r.add(a),43).add(kr(o,30)).add(i),r.add(kr(a.add(mr),18)).add(o),n)}(e,t);if(t<=64)return function(e,t){void 0===t&&(t=e.length);var n=mr.add(2*t),r=br(e,0).mul(mr),a=br(e,8),o=br(e,t-8).mul(n),i=br(e,t-16).mul(mr),s=kr(r.add(a),43).add(kr(o,30)).add(i),u=xr(s,r.add(kr(a.add(mr),18)).add(o),n),c=br(e,16).mul(n),l=br(e,24),h=s.add(br(e,t-32)).mul(n),f=u.add(br(e,t-24)).mul(n);return xr(kr(c.add(l),43).add(kr(h,30)).add(f),c.add(kr(l.add(r),18)).add(h),n)}(e,t);var o=a,s=a.mul(gr).add(113),u=vr(s.mul(mr).add(113)).mul(mr),c=[fr.UZERO,fr.UZERO],l=[fr.UZERO,fr.UZERO];o=o.mul(mr).add(br(e,0));var h=0,f=64*(t-1>>6),d=f+(t-1&63)-63;do{o=kr(o.add(s).add(c[0]).add(br(e,h+8)),37).mul(gr),s=kr(s.add(c[1]).add(br(e,h+48)),42).mul(gr),o=o.xor(l[1]),s=s.add(c[0]).add(br(e,h+40)),u=kr(u.add(l[0]),33).mul(gr),c=Er(e,h,c[1].mul(gr),o.add(l[0])),l=Er(e,h+32,u.add(l[1]),s.add(br(e,h+16))),u=(n=i([o,u],2))[0],o=n[1],h+=64}while(h!==f);var p=gr.add(u.and(255).shl(1));return h=d,l[0]=l[0].add(t-1&63),c[0]=c[0].add(l[0]),l[0]=l[0].add(c[0]),o=kr(o.add(s).add(c[0]).add(br(e,h+8)),37).mul(p),s=kr(s.add(c[1]).add(br(e,h+48)),42).mul(p),o=o.xor(l[1].mul(9)),s=s.add(c[0].mul(9).add(br(e,h+40))),u=kr(u.add(l[0]),33).mul(p),c=Er(e,h,c[1].mul(p),o.add(l[0])),l=Er(e,h+32,u.add(l[1]),s.add(br(e,h+16))),u=(r=i([o,u],2))[0],o=r[1],xr(xr(c[0],l[0],p).add(vr(s).mul(pr)).add(u),xr(c[1],l[1],p).add(o),p)},flatten:Mr,getArrayFromDType:A,getTypedArrayFromDType:S,hasEncodingLoss:function(e,t){return!("complex64"===t||"float32"===t&&"complex64"!==e||"int32"===t&&"float32"!==e&&"complex64"!==e||"bool"===t&&"bool"===e)},hexToLong:dr,indexToLoc:function(e,t,n){if(0===t)return[];if(1===t)return[e];for(var r=new Array(t),a=0;a=0)n*=e[a];else if(-1===e[a]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. "+"Found -1 at dim ".concat(r," and dim ").concat(a));r=a}else if(e[a]<0)throw Error("Shapes can not be < 0. Found ".concat(e[a]," at dim ").concat(a));if(-1===r){if(t>0&&t!==n)throw Error("Size(".concat(t,") must match the product of shape ").concat(e));return e}if(0===n)throw Error("Cannot infer the missing size in [".concat(e,"] when ")+"there are 0 elements");if(t%n!=0)throw Error("The implicit shape can't be a fractional number. "+"Got ".concat(t," / ").concat(n));var o=e.slice();return o[r]=t/n,o},isBoolean:D,isFunction:F,isInt:w,isNumber:R,isPromise:G,isScalarShape:function(e){return 0===e.length},isString:T,isTypedArray:Nr,isValidDtype:I,locToIndex:function(e,t,n){if(0===t)return 0;if(1===t)return e[0];for(var r=e[e.length-1],a=0;a=n?o():null!=r?r(s,u):setTimeout(s,u)}};s()}))},rightPad:k,shuffle:h,shuffleCombo:function(e,t){if(e.length!==t.length)throw new Error("Array sizes must match to be shuffled together "+"First array length was ".concat(e.length)+"Second array length was ".concat(t.length));for(var n=e.length,r=0;n>0;)r=Math.random()*n|0,d(e,--n,r),d(t,n,r)},sizeFromShape:v,sizeToSquarishShape:function(e){var t=Math.ceil(Math.sqrt(e));return[t,Math.ceil(e/t)]},squeezeShape:E,sum:function(e){for(var t=0,n=0;n0?p:""," ")}}console.log("%c".concat(s,"\t%c").concat(i,"\t%c").concat(u,"D ").concat(l,"\t%c").concat(c,"\t%c").concat(h,"\t%c").concat(o),"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},e}();function Br(e,t,n){return k(Array.isArray(e)?"".concat(parseFloat(e[0].toFixed(7))," + ")+"".concat(parseFloat(e[1].toFixed(7)),"j"):T(e)?"'".concat(e,"'"):"bool"===n?Fr(e):parseFloat(e.toFixed(7)).toString(),t)}function Fr(e){return 0===e?"false":"true"}function Cr(e,t,n,r,a,o){void 0===o&&(o=!0);var u="complex64"===n?2:1,c=t[0],l=t.length;if(0===l)return"complex64"===n?[Br(Pr(e)[0],0,n)]:"bool"===n?[Fr(e[0])]:[e[0].toString()];if(1===l){if(c>20){var h=3*u,f=Array.from(e.slice(0,h)),d=Array.from(e.slice((c-3)*u,c*u));return"complex64"===n&&(f=Pr(f),d=Pr(d)),["["+f.map((function(e,t){return Br(e,a[t],n)})).join(", ")+", ..., "+d.map((function(e,t){return Br(e,a[c-3+t],n)})).join(", ")+"]"]}return["["+("complex64"===n?Pr(e):Array.from(e)).map((function(e,t){return Br(e,a[t],n)})).join(", ")+"]"]}var p=t.slice(1),g=r.slice(1),m=r[0]*u,v=[];if(c>20){for(var y=0;y<3;y++){var b=(w=y*m)+m;v.push.apply(v,s([],i(Cr(e.slice(w,b),p,n,g,a,!1)),!1))}for(v.push("..."),y=c-3;y0?v[0]+k:""),y=1;y=this.shape[a]){var c="Requested out of range element at ".concat(n,". ")+" Buffer shape=".concat(this.shape);throw new Error(c)}a++}}catch(t){e={error:t}}finally{try{s&&!s.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}for(var l=n[n.length-1],h=0;h1)for(var c=0;c0)throw new Error("Backend '".concat(this.backendName,"' has an internal memory leak ")+"(".concat(i," data ids) after running '").concat(e,"'"))},e.prototype.runKernelFunc=function(e){var t,n,r,a=this,o=[],i=this.isTapeOn(),s=this.state.numBytes,u=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0),null==this.backendName&&this.backend;var c=ra(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(ra(e)){var l=e.kernelName,h=e.inputs,f=e.attrs;null==this.backendName&&this.backend;var d=Bn(l,this.backendName);p(null!=d,(function(){return"Cannot find registered kernel '".concat(l,"' for backend '").concat(a.backendName,"'")})),n=function(){var e=a.backend.numDataIds();r=d.kernelFunc({inputs:h,attrs:f,backend:a.backend});var t=Array.isArray(r)?r:[r];a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(l,e,t);var n=t.map((function(e){return null!=e.rank?e:a.makeTensorFromTensorInfo(e)}));if(i){var s=a.getTensorsForGradient(l,h,n);o=a.saveTensorsForBackwardMode(s)}return n}}else{var g=e.forwardFunc,m=function(e){i&&(o=e.map((function(e){return a.keep(a.clone(e))})))};n=function(){var e=a.backend.numDataIds();r=a.tidy((function(){return g(a.backend,m)}));var t=Array.isArray(r)?r:[r];return a.shouldCheckForMemLeaks()&&a.checkKernelForMemLeak(c,e,t),t}}var v,y=e.inputs,b=e.attrs,w=ra(e)?null:e.backwardsFunc;return this.scopedRun((function(){return a.state.kernelDepth++}),(function(){return a.state.kernelDepth--}),(function(){a.ENV.getBool("DEBUG")||a.state.profiling?(v=a.profiler.profileKernel(c,y,(function(){return n()})),a.ENV.getBool("DEBUG")&&a.profiler.logKernelProfile(v),t=v.outputs):t=n()})),i&&this.addTapeNode(c,y,t,w,o,b),this.state.profiling&&this.state.activeProfile.kernels.push({name:c,bytesAdded:this.state.numBytes-s,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-u,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(y).map((function(e){return null!=y[e]?y[e].shape:null})),outputShapes:t.map((function(e){return e.shape})),kernelTimeMs:v.timeMs,extraInfo:v.extraInfo}),Array.isArray(r)?t:t[0]},e.prototype.saveTensorsForBackwardMode=function(e){var t=this;return e.map((function(e){return t.keep(t.clone(e))}))},e.prototype.getTensorsForGradient=function(e,t,n){var r=Fn(e);if(null!=r){var a=r.inputsToSave||[],o=r.outputsToSave||[],i=void 0;r.saveAllInputs?(p(Array.isArray(t),(function(){return"saveAllInputs is true, expected inputs to be an array."})),i=Object.keys(t).map((function(e){return t[e]}))):i=a.map((function(e){return t[e]}));var s=n.filter((function(e,t){return o[t]}));return i.concat(s)}return[]},e.prototype.makeTensor=function(e,t,n,r){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var a=e;"string"===n&&T(e[0])&&(a=e.map((function(e){return _r(e)})));var o=r.write(a,t,n),i=new Ur(t,n,o,this.nextTensorId());if(this.trackTensor(i,r),"string"===n){var s=this.state.tensorInfo.get(o),u=M(a);this.state.numBytes+=u-s.bytes,s.bytes=u}return i},e.prototype.makeTensorFromDataId=function(e,t,n,r){var a={dataId:e,shape:t,dtype:n=n||"float32"};return this.makeTensorFromTensorInfo(a,r)},e.prototype.makeTensorFromTensorInfo=function(e,t){var n=e.dataId,r=e.shape,a=e.dtype,o=new Ur(r,a,n,this.nextTensorId());return this.trackTensor(o,t),o},e.prototype.makeVariable=function(e,t,n,r){void 0===t&&(t=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==e.dtype&&(e=e.cast(r));var a=new jr(e,t,n,this.nextTensorId());if(null!=this.state.registeredVariables[a.name])throw new Error("Variable with name ".concat(a.name," was already registered"));return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a},e.prototype.trackTensor=function(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;var n=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(n=e.size*N(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof jr||this.track(e)},e.prototype.incRef=function(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)},e.prototype.removeDataId=function(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)},e.prototype.disposeTensor=function(e){if(this.state.tensorInfo.has(e.dataId)){var t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){var n=e.size*N(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}},e.prototype.disposeVariables=function(){for(var e in this.state.registeredVariables){var t=this.state.registeredVariables[e];this.disposeVariable(t)}},e.prototype.disposeVariable=function(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]},e.prototype.memory=function(){var e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e},e.prototype.profile=function(e){return r(this,void 0,void 0,(function(){var t,n,r,u,c,l,h,f,d,p,g;return a(this,(function(a){switch(a.label){case 0:return this.state.profiling=!0,t=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],r=this.state.activeProfile,[4,e()];case 1:r.result=a.sent(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,s([],i(this.state.activeProfile.kernels.map((function(e){return e.totalBytesSnapshot}))),!1)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n,a.label=2;case 2:a.trys.push([2,8,9,10]),u=o(this.state.activeProfile.kernels),c=u.next(),a.label=3;case 3:return c.done?[3,7]:(l=c.value,h=l,[4,l.kernelTimeMs]);case 4:return h.kernelTimeMs=a.sent(),f=l,[4,l.extraInfo];case 5:f.extraInfo=a.sent(),a.label=6;case 6:return c=u.next(),[3,3];case 7:return[3,10];case 8:return d=a.sent(),p={error:d},[3,10];case 9:try{c&&!c.done&&(g=u.return)&&g.call(u)}finally{if(p)throw p.error}return[7];case 10:return[2,this.state.activeProfile]}}))}))},e.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},e.prototype.addTapeNode=function(e,t,n,r,a,o){var i=this,s={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},u=Fn(e);null!=u&&(r=u.gradFunc),null!=r&&(s.gradient=function(e){return e=e.map((function(e,t){if(null==e){var r=n[t],a=U(r.size,r.dtype);return i.makeTensor(a,r.shape,r.dtype)}return e})),r(e.length>1?e:e[0],a,o)}),this.state.activeTape.push(s)},e.prototype.keep=function(e){return e.kept=!0,e},e.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++},e.prototype.endTape=function(){this.state.gradientDepth--},e.prototype.startScope=function(e){var t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t},e.prototype.endScope=function(e){for(var t=this,n=ea(e),r=new Set(n.map((function(e){return e.id}))),a=0;a0,(function(){return"gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '".concat(n.dtype,"'"));var i=this.scopedRun((function(){return a.startTape()}),(function(){return a.endTape()}),(function(){return a.tidy("forward",e)}));p(i instanceof Ur,(function(){return"The result y returned by f() must be a tensor."}));var s=function(e,t,n){for(var r={},a={},o=0;o=0;o--)for(i=(p=e[o]).inputs,l=0;l0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(function(){var e,r,u={};u[i.id]=null==n?(r=z(v(e=i.shape),"float32"),ua.makeTensor(r,e,"float32")):n,function(e,t,n,r){for(var a=function(a){var o=t[a],i=[];if(o.outputs.forEach((function(t){var n=e[t.id];null!=n?i.push(n):i.push(null)})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found "+"for ".concat(o.kernelName,"."));var s=o.gradient(i),u=function(t){if(!(t in s))throw new Error("Cannot backprop through input ".concat(t,". ")+"Available gradients found: ".concat(Object.keys(s),"."));var a=n((function(){return s[t]()}));if("float32"!==a.dtype)throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"".concat(t," must have 'float32' dtype, but has '").concat(a.dtype,"'"));var i=o.inputs[t];if(!b(a.shape,i.shape))throw new Error("Error in gradient for op ".concat(o.kernelName,". The gradient of input ")+"'".concat(t,"' has shape '").concat(a.shape,"', which does not match ")+"the shape of the input '".concat(i.shape,"'"));if(null==e[i.id])e[i.id]=a;else{var u=e[i.id];e[i.id]=r(u,a),u.dispose()}};for(var c in o.inputs)u(c)},o=t.length-1;o>=0;o--)a(o)}(u,s,(function(e){return a.tidy(e)}),ca);var c=t.map((function(e){return u[e.id]}));return 0===a.state.gradientDepth&&(a.state.activeTape.forEach((function(e){var t,n;try{for(var r=o(e.saved),a=r.next();!a.done;a=r.next())a.value.dispose()}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}})),a.state.activeTape=null),{value:i,grads:c}}))},e.prototype.customGrad=function(e){var t=this;return p(F(e),(function(){return"The f passed in customGrad(f) must be a function."})),function(){for(var n,r=[],a=0;a0,(function(){return"Element arr[".concat(n.join("]["),"] should be a primitive, ")+"but is an array of ".concat(e.length," elements")})),p(e.length===t[0],(function(){return"Element arr[".concat(n.join("]["),"] should have ").concat(t[0]," ")+"elements, but has ".concat(e.length," elements")}));for(var r=t.slice(1),a=0;a=0&&(a=r),ga(r,a,t,n),null==e||!Nr(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){var o=null==e?"null":e.constructor.name;throw new Error("Argument '".concat(t,"' passed to '").concat(n,"' must be a ")+"Tensor or TensorLike, but got '".concat(o,"'"))}var i=da(e,a);Nr(e)||Array.isArray(e)||(e=[e]);var s="string"!==a?Sr(e,a):Mr(e,[],!0);return ua.makeTensor(s,i,a)}function va(e,t,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(e))throw new Error("Argument ".concat(t," passed to ").concat(n," must be a ")+"`Tensor[]` or `TensorLike[]`");return e.map((function(e,a){return ma(e,"".concat(t,"[").concat(a,"]"),n,r)}))}fa.registerFlag("DEBUG",(function(){return!1}),(function(e){e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")})),fa.registerFlag("IS_BROWSER",(function(){return la()})),fa.registerFlag("IS_NODE",(function(){return"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node})),fa.registerFlag("IS_CHROME",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)})),fa.registerFlag("IS_SAFARI",(function(){return"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor)})),fa.registerFlag("PROD",(function(){return!1})),fa.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(function(){return fa.getBool("DEBUG")})),fa.registerFlag("DEPRECATION_WARNINGS_ENABLED",(function(){return!0})),fa.registerFlag("IS_TEST",(function(){return!1})),fa.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(function(){return fa.getBool("DEBUG")})),fa.registerFlag("WRAP_TO_IMAGEBITMAP",(function(){return!1})),fa.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(function(){return!1})),fa.registerFlag("USE_SETTIMEOUTCUSTOM",(function(){return!1}));var ya="__op";function ba(e){var t=Object.keys(e);if(1!==t.length)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+"".concat(t.length," keys."));var n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n+=ya;var a=function(){for(var e=[],t=0;t=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(t){return e=t.end?1:0}if(0===t(this.shards[this.previousShardIndex]))return this.previousShardIndex;var n=function(e,t){for(var n=0,r=e.length;n<=r;){var a=Math.floor((r-n)/2)+n,o=t(e[a]);if(0===o)return a;o<0?r=a:n=a+1}return-1}(this.shards,t);return-1===n?-1:(this.previousShardIndex=n,this.previousShardIndex)},e}();function Aa(e,t){var n,r,a,i=new Sa(e),s={},u=0;try{for(var c=o(t),l=c.next();!l.done;l=c.next()){var h=l.value,f=h.name,d=h.dtype,p=h.shape,g=v(p),m=void 0;if("quantization"in h){var y=h.quantization;if("uint8"===y.dtype||"uint16"===y.dtype){if(!("min"in y)||!("scale"in y))throw new Error("Weight ".concat(h.name," with quantization ").concat(y.dtype," ")+"doesn't have corresponding metadata min and scale.")}else{if("float16"!==y.dtype)throw new Error("Weight ".concat(h.name," has unknown ")+"quantization dtype ".concat(y.dtype,". ")+"Supported quantization dtypes are: 'uint8', 'uint16', and 'float16'.");if("float32"!==d)throw new Error("Weight ".concat(h.name," is quantized with ").concat(y.dtype," ")+"which only supports weights of type float32 not ".concat(d,"."))}var b=Ea[y.dtype],w=i.slice(u,u+g*b),k="uint8"===y.dtype?new Uint8Array(w):new Uint16Array(w);if("float32"===d)if("uint8"===y.dtype||"uint16"===y.dtype){m=new Float32Array(k.length);for(var x=0;x>10]+(1023&s)]+t[s>>10];o[i]=u}return new Float32Array(a)}}var Pa=function(){function e(){this.saveRouters=[],this.loadRouters=[]}return e.getInstance=function(){return null==e.instance&&(e.instance=new e),e.instance},e.registerSaveRouter=function(t){e.getInstance().saveRouters.push(t)},e.registerLoadRouter=function(t){e.getInstance().loadRouters.push(t)},e.getSaveHandlers=function(t){return e.getHandlers(t,"save")},e.getLoadHandlers=function(t,n){return e.getHandlers(t,"load",n)},e.getHandlers=function(t,n,r){var a=[];return("load"===n?e.getInstance().loadRouters:e.getInstance().saveRouters).forEach((function(e){var n=e(t,r);null!==n&&a.push(n)})),a},e}(),Oa="tensorflowjs",La="models_store",za="model_info_store";function Ua(){if(!H().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var e="undefined"==typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Wa(e){var t=e.result;t.createObjectStore(La,{keyPath:"modelPath"}),t.createObjectStore(za,{keyPath:"modelPath"})}var Ga=function(){function e(e){if(this.indexedDB=Ua(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,e)]}))}))},e.prototype.load=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){return[2,this.databaseAction(this.modelPath)]}))}))},e.prototype.databaseAction=function(e,t){var n=this;return new Promise((function(e,r){var a=n.indexedDB.open(Oa,1);a.onupgradeneeded=function(){return Wa(a)},a.onsuccess=function(){var o=a.result;if(null==t){var i=o.transaction(La,"readonly"),s=i.objectStore(La).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return o.close(),r(new Error("Cannot find model with path '".concat(n.modelPath,"' ")+"in IndexedDB."));e(s.result.modelArtifacts)},s.onerror=function(e){return o.close(),r(s.error)},i.oncomplete=function(){return o.close()}}else{t.weightData=Sa.join(t.weightData);var u,c,l=Ba(t),h=o.transaction(za,"readwrite"),f=h.objectStore(za);try{u=f.put({modelPath:n.modelPath,modelArtifactsInfo:l})}catch(e){return r(e)}u.onsuccess=function(){var a,i=(c=o.transaction(La,"readwrite")).objectStore(La);try{a=i.put({modelPath:n.modelPath,modelArtifacts:t,modelArtifactsInfo:l})}catch(e){return r(e)}a.onsuccess=function(){return e({modelArtifactsInfo:l})},a.onerror=function(e){var t=(f=h.objectStore(za)).delete(n.modelPath);t.onsuccess=function(){return o.close(),r(a.error)},t.onerror=function(e){return o.close(),r(a.error)}}},u.onerror=function(e){return o.close(),r(u.error)},h.oncomplete=function(){null==c?o.close():c.oncomplete=function(){return o.close()}}}},a.onerror=function(e){return r(a.error)}}))},e}();Ga.URL_SCHEME="indexeddb://";var Ka=function(e){return H().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Ga.URL_SCHEME)?(t=e.slice(Ga.URL_SCHEME.length),new Ga(t)):null;var t};Pa.registerSaveRouter(Ka),Pa.registerLoadRouter(Ka);var qa=function(){function e(){this.indexedDB=Ua()}return e.prototype.listModels=function(){return r(this,void 0,void 0,(function(){var e=this;return a(this,(function(t){return[2,new Promise((function(t,n){var r=e.indexedDB.open(Oa,1);r.onupgradeneeded=function(){return Wa(r)},r.onsuccess=function(){var e=r.result,a=e.transaction(za,"readonly"),i=a.objectStore(za).getAll();i.onsuccess=function(){var e,n,r={};try{for(var a=o(i.result),s=a.next();!s.done;s=a.next()){var u=s.value;r[u.modelPath]=u.modelArtifactsInfo}}catch(t){e={error:t}}finally{try{s&&!s.done&&(n=a.return)&&n.call(a)}finally{if(e)throw e.error}}t(r)},i.onerror=function(t){return e.close(),n(i.error)},a.oncomplete=function(){return e.close()}},r.onerror=function(e){return n(r.error)}}))]}))}))},e.prototype.removeModel=function(e){return r(this,void 0,void 0,(function(){var t=this;return a(this,(function(n){var r;return e=(r=e).startsWith(Ga.URL_SCHEME)?r.slice(Ga.URL_SCHEME.length):r,[2,new Promise((function(n,r){var a=t.indexedDB.open(Oa,1);a.onupgradeneeded=function(){return Wa(a)},a.onsuccess=function(){var t,o=a.result,i=o.transaction(za,"readwrite"),s=i.objectStore(za),u=s.get(e);u.onsuccess=function(){if(null==u.result)return o.close(),r(new Error("Cannot find model with path '".concat(e,"' ")+"in IndexedDB."));var a=s.delete(e),i=function(){var a=(t=o.transaction(La,"readwrite")).objectStore(La).delete(e);a.onsuccess=function(){return n(u.result.modelArtifactsInfo)},a.onerror=function(e){return r(u.error)}};a.onsuccess=i,a.onerror=function(e){return i(),o.close(),r(u.error)}},u.onerror=function(e){return o.close(),r(u.error)},i.oncomplete=function(){null==t?o.close():t.oncomplete=function(){return o.close()}}},a.onerror=function(e){return r(a.error)}}))]}))}))},e}(),Va="/",Ha="tensorflowjs_models",ja="info",Za="model_topology",Ja="weight_specs",Ya="weight_data",Xa="model_metadata";function Qa(e){return{info:[Ha,e,ja].join(Va),topology:[Ha,e,Za].join(Va),weightSpecs:[Ha,e,Ja].join(Va),weightData:[Ha,e,Ya].join(Va),modelMetadata:[Ha,e,Xa].join(Va)}}function $a(e){var t,n;try{for(var r=o(Object.values(e)),a=r.next();!a.done;a=r.next()){var i=a.value;window.localStorage.removeItem(i)}}catch(e){t={error:e}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(t)throw t.error}}}function eo(e){var t=e.split(Va);if(t.length<3)throw new Error("Invalid key format: ".concat(e));return t.slice(1,t.length-1).join(Va)}var to=function(){function e(e){if(!H().getBool("IS_BROWSER")||"undefined"==typeof window||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=Qa(this.modelPath)}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i;return a(this,(function(a){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Ba(e),o=Sa.join(e.weightData);try{return this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(e){if(Ia)return Buffer.from(e).toString("base64");for(var t=new Uint8Array(e),n="",r=0,a=t.length;r0,(function(){return"scheme must not be an empty string."}));var r=e.getInstance();p(null==r.managers[t],(function(){return"A model store manager is already registered for scheme '".concat(t,"'.")})),r.managers[t]=n},e.getManager=function(t){var n=e.getInstance().managers[t];if(null==n)throw new Error("Cannot find model manager for scheme '".concat(t,"'"));return n},e.getSchemes=function(){return Object.keys(e.getInstance().managers)},e}();function io(e){if(-1===e.indexOf(ao))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+"".concat(oo.getSchemes().join(",")));return{scheme:e.split(ao)[0],path:e.split(ao)[1]}}function so(e,t,n){return void 0===n&&(n=!1),r(this,void 0,void 0,(function(){var r,o,i,s,u,c,l,h,f;return a(this,(function(a){switch(a.label){case 0:return p(e!==t,(function(){return"Old path and new path are the same: '".concat(e,"'")})),p((r=Pa.getLoadHandlers(e)).length>0,(function(){return"Copying failed because no load handler is found for source URL ".concat(e,".")})),p(r.length<2,(function(){return"Copying failed because more than one (".concat(r.length,") ")+"load handlers for source URL ".concat(e,".")})),o=r[0],p((i=Pa.getSaveHandlers(t)).length>0,(function(){return"Copying failed because no save handler is found for destination "+"URL ".concat(t,".")})),p(i.length<2,(function(){return"Copying failed because more than one (".concat(r.length,") ")+"save handlers for destination URL ".concat(t,".")})),s=i[0],u=io(e).scheme,c=io(e).path,l=u===io(e).scheme,[4,o.load()];case 1:return h=a.sent(),n&&l?[4,oo.getManager(u).removeModel(c)]:[3,3];case 2:a.sent(),a.label=3;case 3:return[4,s.save(h)];case 4:return f=a.sent(),!n||l?[3,6]:[4,oo.getManager(u).removeModel(c)];case 5:a.sent(),a.label=6;case 6:return[2,f.modelArtifactsInfo]}}))}))}var uo=function(){function e(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}return e.prototype.fetch=function(e,t){return fetch(e,t)},e.prototype.now=function(){return performance.now()},e.prototype.encode=function(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error("Browser's encoder only supports utf-8, but got ".concat(t));return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)},e.prototype.decode=function(e,t){return new TextDecoder(t).decode(e)},e.prototype.setTimeoutCustom=function(e,t){var n=this;"undefined"!=typeof window&&H().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((function(){window.postMessage({name:n.messageName,index:n.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(function(e){e.source===window&&e.data.name===n.messageName&&(e.stopPropagation(),(0,n.functionRefs[e.data.index])(),n.handledMessageCount++,n.handledMessageCount===n.functionRefs.length&&(n.functionRefs=[],n.handledMessageCount=0))}),!0))):setTimeout(e,t)},e.prototype.isTypedArray=function(e){return Ln(e)},e}();if(H().get("IS_BROWSER")){H().setPlatform("browser",new uo);try{oo.registerManager(to.URL_SCHEME,new ro)}catch(e){}try{oo.registerManager(Ga.URL_SCHEME,new qa)}catch(e){}}var co,lo=function(){function e(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}return e.prototype.fetch=function(e,t){return null!=H().global.fetch?H().global.fetch(e,t):(null==co&&(co=require("node-fetch")),co(e,t))},e.prototype.now=function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6},e.prototype.encode=function(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error("Node built-in encoder only supports utf-8, but got ".concat(t));return this.textEncoder.encode(e)},e.prototype.decode=function(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)},e.prototype.isTypedArray=function(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)},e}();function ho(e,t,n){return void 0===t&&(t="float32"),t=t||"float32",W(e),new Or(e,t,n)}H().get("IS_NODE")&&!H().get("IS_BROWSER")&&H().setPlatform("node",new lo);var fo=ba({cast_:function(e,t){var n=ma(e,"x","cast");if(!I(t))throw new Error("Failed to cast to unknown dtype ".concat(t));if("string"===t&&"string"!==n.dtype||"string"!==t&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={x:n},a={dtype:t};return ua.runKernel(de,r,a)}}),po=ba({clone_:function(e){var t={x:ma(e,"x","clone","string_or_numeric")};return ua.runKernel(Ye,t)}});function go(e,t){void 0===t&&(t=!1),console.log(e.toString(t))}function mo(e,t){return ua.tidy(e,t)}function vo(e){ea(e).forEach((function(e){return e.dispose()}))}function yo(e){return ua.keep(e)}ia(),zr={buffer:ho,cast:fo,clone:po,print:go};var bo=ba({add_:function(e,t){var n,r=ma(e,"a","add"),a=ma(t,"b","add"),o={a:r=(n=i(Qr(r,a),2))[0],b:a=n[1]};return ua.runKernel(X,o)}}),wo=ba({floorDiv_:function(e,t){var n,r=ma(e,"a","floorDiv"),a=ma(t,"b","floorDiv"),o={a:r=(n=i(Qr(r,a),2))[0],b:a=n[1]};return ua.runKernel(qe,o)}}),ko=ba({div_:function(e,t){var n,r=ma(e,"a","div"),a=ma(t,"b","div");if(r=(n=i(Qr(r,a),2))[0],a=n[1],"int32"===r.dtype&&"int32"===a.dtype)return wo(r,a);var o={a:r,b:a};return ua.runKernel(Pe,o,{})}}),xo=ba({mul_:function(e,t){var n,r=ma(e,"a","mul"),a=ma(t,"b","mul"),o={a:r=(n=i(Qr(r,a),2))[0],b:a=n[1]};return ua.runKernel(yt,o)}}),Eo=ba({abs_:function(e){var t=ma(e,"x","abs");if("complex64"===t.dtype){var n={x:t};return ua.runKernel(ve,n)}return n={x:t},ua.runKernel("Abs",n)}}),So=ba({acos_:function(e){var t={x:ma(e,"x","acos")};return ua.runKernel(J,t)}}),Ao=ba({acosh_:function(e){var t={x:ma(e,"x","acosh")};return ua.runKernel(Y,t)}}),_o=ba({addN_:function(e){p(Array.isArray(e),(function(){return"The argument passed to tf.addN() must be a list of tensors"})),p(e.length>=1,(function(){return"Must pass at least one tensor to tf.addN(), but got "+"".concat(e.length)}));var t=e.map((function(e,t){return ma(e,"tensors".concat(t),"addN")})),n=t[0];t.forEach((function(e){if(e.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),t.forEach((function(e){if(!b(e.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=t;return ua.runKernel(Q,r)}}),Io=ba({all_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:ma(e,"x","all","bool")},a={axis:t,keepDims:n};return ua.runKernel("All",r,a)}}),No=ba({any_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:ma(e,"x","any","bool")},a={axis:t,keepDims:n};return ua.runKernel("Any",r,a)}}),Mo=ba({argMax_:function(e,t){void 0===t&&(t=0);var n={x:ma(e,"x","argMax")},r={axis:t};return ua.runKernel($,n,r)}}),To=ba({argMin_:function(e,t){void 0===t&&(t=0);var n={x:ma(e,"x","argMin")},r={axis:t};return ua.runKernel(ee,n,r)}}),Do=ba({asin_:function(e){var t={x:ma(e,"x","asin")};return ua.runKernel(te,t)}}),Ro=ba({asinh_:function(e){var t={x:ma(e,"x","asinh")};return ua.runKernel(ne,t)}}),Bo=ba({atan_:function(e){var t={x:ma(e,"x","atan")};return ua.runKernel(re,t)}}),Fo=ba({atan2_:function(e,t){var n,r=ma(e,"a","atan2"),a=ma(t,"b","atan2"),o={a:r=(n=i(Qr(r,a),2))[0],b:a=n[1]};return ua.runKernel(oe,o)}}),Co=ba({atanh_:function(e){var t={x:ma(e,"x","atanh")};return ua.runKernel(ae,t)}});function Po(e,t,n,r,a,o,s){void 0===s&&(s="channelsLast");var u,c=i(Uo(t),2),l=c[0],h=c[1];if("channelsLast"===s)u=[l,h,e[3],e[3]];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));u=[l,h,e[1],e[1]]}return Oo(e,u,n,r,a,o,!1,s)}function Oo(e,t,n,r,a,o,s,u){var c,l;void 0===s&&(s=!1),void 0===u&&(u="channelsLast");var h=i([-1,-1,-1,-1],4),f=h[0],d=h[1],p=h[2],g=h[3];if("channelsLast"===u)f=(c=i(e,4))[0],d=c[1],p=c[2],g=c[3];else{if("channelsFirst"!==u)throw new Error("Unknown dataFormat ".concat(u));f=(l=i(e,4))[0],g=l[1],d=l[2],p=l[3]}var m,v=i(t,4),y=v[0],b=v[1],w=v[3],k=i(Uo(n),2),x=k[0],E=k[1],S=i(Uo(r),2),A=S[0],_=S[1],I=Go(y,A),N=Go(b,_),M=function(e,t,n,r,a,o,i,s,u){var c,l,h;if("number"==typeof e){c={top:e,bottom:e,left:e,right:e,type:0===e?"VALID":"NUMBER"};var f=function(e,t,n,r,a){null==r&&(r=zo(e,t,n));var o=e[1];return[Ko((e[0]-t+2*r)/n+1,a),Ko((o-t+2*r)/n+1,a)]}([t,n],o,r,e,s);l=f[0],h=f[1]}else if("same"===e){l=Math.ceil(t/r),h=Math.ceil(n/a);var d=Math.max(0,(l-1)*r+o-t),p=Math.max(0,(h-1)*a+i-n);c={top:g=Math.floor(d/2),bottom:m=d-g,left:v=Math.floor(p/2),right:y=p-v,type:"SAME"}}else if("valid"===e)c={top:0,bottom:0,left:0,right:0,type:"VALID"},l=Math.ceil((t-o+1)/r),h=Math.ceil((n-i+1)/a);else{if("object"!=typeof e)throw Error("Unknown padding parameter: ".concat(e));var g,m,v,y;c={top:g="channelsLast"===u?e[1][0]:e[2][0],bottom:m="channelsLast"===u?e[1][1]:e[2][1],left:v="channelsLast"===u?e[2][0]:e[3][0],right:y="channelsLast"===u?e[2][1]:e[3][1],type:0===g&&0===m&&0===v&&0===y?"VALID":"EXPLICIT"},l=Ko((t-o+g+m)/r+1,s),h=Ko((n-i+v+y)/a+1,s)}return{padInfo:c,outHeight:l,outWidth:h}}(a,d,p,x,E,I,N,o,u),T=M.padInfo,D=M.outHeight,R=M.outWidth,B=s?w*g:w;return"channelsFirst"===u?m=[f,B,D,R]:"channelsLast"===u&&(m=[f,D,R,B]),{batchSize:f,dataFormat:u,inHeight:d,inWidth:p,inChannels:g,outHeight:D,outWidth:R,outChannels:B,padInfo:T,strideHeight:x,strideWidth:E,filterHeight:y,filterWidth:b,effectiveFilterHeight:I,effectiveFilterWidth:N,dilationHeight:A,dilationWidth:_,inShape:e,outShape:m,filterShape:t}}function Lo(e,t,n,r,a,o,s,u){var c,l;void 0===o&&(o=!1),void 0===s&&(s="channelsLast");var h=i([-1,-1,-1,-1,-1],5),f=h[0],d=h[1],p=h[2],g=h[3],m=h[4];if("channelsLast"===s)f=(c=i(e,5))[0],d=c[1],p=c[2],g=c[3],m=c[4];else{if("channelsFirst"!==s)throw new Error("Unknown dataFormat ".concat(s));f=(l=i(e,5))[0],m=l[1],d=l[2],p=l[3],g=l[4]}var v,y=i(t,5),b=y[0],w=y[1],k=y[2],x=y[4],E=i(Wo(n),3),S=E[0],A=E[1],_=E[2],I=i(Wo(r),3),N=I[0],M=I[1],T=I[2],D=Go(b,N),R=Go(w,M),B=Go(k,T),F=function(e,t,n,r,a,o,i,s,u,c,l){var h,f,d,p;if("valid"===e&&(e=0),"number"==typeof e){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:0===e?"VALID":"NUMBER"};var g=function(e,t,n,r,a,o){null==a&&(a=zo(e,t[0],r[0]));for(var i=[0,0,0,1],s=0;s<3;s++)e[s]+2*a>=t[s]&&(i[s]=Ko((e[s]-t[s]+2*a)/r[s]+1,o));return i}([t,n,r,1],[s,u,c],0,[a,o,i],e,l);f=g[0],d=g[1],p=g[2]}else{if("same"!==e)throw Error("Unknown padding parameter: ".concat(e));var m=((f=Math.ceil(t/a))-1)*a+s-t,v=((d=Math.ceil(n/o))-1)*o+u-n,y=((p=Math.ceil(r/i))-1)*i+c-r,b=Math.floor(m/2),w=m-b,k=Math.floor(v/2),x=v-k,E=Math.floor(y/2);h={top:k,bottom:x,left:E,right:y-E,front:b,back:w,type:"SAME"}}return{padInfo:h,outDepth:f,outHeight:d,outWidth:p}}(a,d,p,g,S,A,_,D,R,B,u),C=F.padInfo,P=F.outDepth,O=F.outHeight,L=F.outWidth,z=o?x*m:x;return"channelsFirst"===s?v=[f,z,P,O,L]:"channelsLast"===s&&(v=[f,P,O,L,z]),{batchSize:f,dataFormat:s,inDepth:d,inHeight:p,inWidth:g,inChannels:m,outDepth:P,outHeight:O,outWidth:L,outChannels:z,padInfo:C,strideDepth:S,strideHeight:A,strideWidth:_,filterDepth:b,filterHeight:w,filterWidth:k,effectiveFilterDepth:D,effectiveFilterHeight:R,effectiveFilterWidth:B,dilationDepth:N,dilationHeight:M,dilationWidth:T,inShape:e,outShape:v,filterShape:t}}function zo(e,t,n,r){void 0===r&&(r=1);var a=Go(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function Uo(e){return"number"==typeof e?[e,e,e]:2===e.length?[e[0],e[1],1]:e}function Wo(e){return"number"==typeof e?[e,e,e]:e}function Go(e,t){return t<=1?e:e+(e-1)*(t-1)}function Ko(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error("Unknown roundingMode ".concat(t))}}function qo(e){var t=i(Uo(e),3),n=t[0],r=t[1],a=t[2];return 1===n&&1===r&&1===a}function Vo(e,t){return qo(e)||qo(t)}function Ho(e){return Uo(e).every((function(e){return e>0}))}function jo(e){if("NHWC"===e)return"channelsLast";if("NCHW"===e)return"channelsFirst";throw new Error("Unknown dataFormat ".concat(e))}function Zo(e,t,n){if(null!=n){if("string"==typeof t)throw Error("Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,"."));if("number"==typeof t)p(w(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}));else{if("object"!=typeof t)throw Error("Error in ".concat(e,": Unknown padding parameter: ").concat(t));t.forEach((function(t){t.forEach((function(t){p(w(t),(function(){return"Error in ".concat(e,": pad must be an integer when using ")+"dimRoundingMode ".concat(n," but got pad ").concat(t,".")}))}))}))}}}var Jo=ba({reshape_:function(e,t){var n={x:ma(e,"x","reshape","string_or_numeric")},r={shape:t};return ua.runKernel(Pt,n,r)}}),Yo=ba({avgPool_:function(e,t,n,r,a){var o=ma(e,"x","avgPool","float32");p(Vo(n,1),(function(){return"Error in avgPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")}));var i=o,s=!1;3===o.rank&&(s=!0,i=Jo(o,[1,o.shape[0],o.shape[1],o.shape[2]])),p(4===i.rank,(function(){return"Error in avgPool: x must be rank 4 but got rank ".concat(i.rank,".")})),Zo("avgPool",r,a);var u={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},l=ua.runKernel(ie,u,c);return l=fo(l,o.dtype),s?Jo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Xo=ba({avgPool3d_:function(e,t,n,r,a,o){void 0===o&&(o="NDHWC");var i=ma(e,"x","avgPool3d","float32"),s=i,u=!1;4===i.rank&&(u=!0,s=Jo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===s.rank,(function(){return"Error in avgPool3d: x must be rank 5 but got rank ".concat(s.rank,".")})),p("NDHWC"===o,(function(){return"Error in avgPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),p("number"==typeof n&&n>0||Array.isArray(n)&&n[0]>0&&n[1]>0&&n[2]>0,(function(){return"Error in avgPool3d: Stride must be > 0, but got '".concat(n,"'")})),Zo("avgPool3d",r,a);var c={x:s},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},h=ua.runKernel(se,c,l);return h=fo(h,s.dtype),u?Jo(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),Qo=ba({concat_:function(e,t){void 0===t&&(t=0),p(e.length>=1,(function(){return"Pass at least one tensor to concat"}));var n=va(e,"tensors","concat","string_or_numeric");if("complex64"===n[0].dtype&&n.forEach((function(e){if("complex64"!==e.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype ".concat(e.dtype,". "))})),1===n.length)return po(n[0]);var r=n,a={axis:t};return ua.runKernel(ye,r,a)}}),$o=ba({matMul_:function(e,t,n,r){var a;void 0===n&&(n=!1),void 0===r&&(r=!1);var o=ma(e,"a","matMul"),s=ma(t,"b","matMul"),u={a:o=(a=i(Qr(o,s),2))[0],b:s=a[1]},c={transposeA:n,transposeB:r};return ua.runKernel(ue,u,c)}}),ei=ba({sigmoid_:function(e){var t={x:ma(e,"x","sigmoid","float32")};return ua.runKernel(Xt,t)}}),ti=ba({slice_:function(e,t,n){var r=ma(e,"x","slice","string_or_numeric");if(0===r.rank)throw new Error("Slicing scalar is not possible");var a={x:r},o={begin:t,size:n};return ua.runKernel(Zt,a,o)}}),ni=ba({tanh_:function(e){var t={x:ma(e,"x","tanh","float32")};return ua.runKernel(gn,t)}}),ri=ba({basicLSTMCell_:function(e,t,n,r,a,o){var i=ma(e,"forgetBias","basicLSTMCell"),s=ma(t,"lstmKernel","basicLSTMCell"),u=ma(n,"lstmBias","basicLSTMCell"),c=ma(r,"data","basicLSTMCell"),l=ma(a,"c","basicLSTMCell"),h=ma(o,"h","basicLSTMCell"),f=Qo([c,h],1),d=$o(f,s),p=bo(d,u),g=p.shape[0],m=p.shape[1]/4,v=[g,m],y=ti(p,[0,0],v),b=ti(p,[0,m],v),w=ti(p,[0,2*m],v),k=ti(p,[0,3*m],v),x=bo(xo(ei(y),ni(b)),xo(l,ei(bo(i,w))));return[x,xo(ni(x),ei(k))]}}),ai=ba({batchToSpaceND_:function(e,t,n){var r=ma(e,"x","batchToSpaceND"),a=t.reduce((function(e,t){return e*t}));p(r.rank>=1+t.length,(function(){return"input rank is ".concat(r.rank," but should be > than blockShape.length ").concat(t.length)})),p(n.length===t.length,(function(){return"crops.length is ".concat(n.length," but should be equal to blockShape.length ").concat(t.length)})),p(r.shape[0]%a==0,(function(){return"input tensor batch is ".concat(r.shape[0]," but is not divisible by the product of ")+"the elements of blockShape ".concat(t.join(" * ")," === ").concat(a)}));var o={x:r},i={blockShape:t,crops:n};return ua.runKernel(ce,o,i)}}),oi=ba({batchNorm_:function(e,t,n,r,a,o){null==o&&(o=.001);var i,s,u=ma(e,"x","batchNorm"),c=ma(t,"mean","batchNorm"),l=ma(n,"variance","batchNorm");null!=a&&(i=ma(a,"scale","batchNorm")),null!=r&&(s=ma(r,"offset","batchNorm")),p(c.rank===l.rank,(function(){return"Batch normalization gradient requires mean and variance to have equal ranks."})),p(null==s||c.rank===s.rank,(function(){return"Batch normalization gradient requires mean and offset to have equal ranks."})),p(null==i||c.rank===i.rank,(function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}));var h=function(e){return 0===e.rank||1===e.rank?Jo(e,[1,1,1,e.size]):2===e.rank?Jo(e,[1,1,e.shape[0],e.shape[1]]):3===e.rank?Jo(e,[1,e.shape[0],e.shape[1],e.shape[2]]):e}(u),f={x:h,scale:i,offset:s,mean:c,variance:l},d={varianceEpsilon:o},g=ua.runKernel(Ve,f,d);return Jo(g,u.shape)}}),ii=ba({batchNorm2d_:function(e,t,n,r,a,o){var i,s,u=ma(e,"x","batchNorm"),c=ma(t,"mean","batchNorm"),l=ma(n,"variance","batchNorm");return null!=a&&(i=ma(a,"scale","batchNorm")),null!=r&&(s=ma(r,"offset","batchNorm")),p(2===u.rank,(function(){return"Error in batchNorm2D: x must be rank 2 but got rank "+"".concat(u.rank,".")})),p(2===c.rank||1===c.rank,(function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(2===l.rank||1===l.rank,(function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(2===i.rank||1===i.rank,(function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(2===s.rank||1===s.rank,(function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 "+"but got rank ".concat(s.rank,".")})),oi(u,c,l,s,i,o)}}),si=ba({batchNorm3d_:function(e,t,n,r,a,o){var i,s,u=ma(e,"x","batchNorm"),c=ma(t,"mean","batchNorm"),l=ma(n,"variance","batchNorm");return null!=a&&(i=ma(a,"scale","batchNorm")),null!=r&&(s=ma(r,"offset","batchNorm")),p(3===u.rank,(function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+"".concat(u.rank,".")})),p(3===c.rank||1===c.rank,(function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(3===l.rank||1===l.rank,(function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(3===i.rank||1===i.rank,(function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(3===s.rank||1===s.rank,(function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 "+"but got rank ".concat(s.rank,".")})),oi(u,c,l,s,i,o)}}),ui=ba({batchNorm4d_:function(e,t,n,r,a,o){var i,s,u=ma(e,"x","batchNorm"),c=ma(t,"mean","batchNorm"),l=ma(n,"variance","batchNorm");return null!=a&&(i=ma(a,"scale","batchNorm")),null!=r&&(s=ma(r,"offset","batchNorm")),p(4===u.rank,(function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+"".concat(u.rank,".")})),p(4===c.rank||1===c.rank,(function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but "+"got rank ".concat(c.rank,".")})),p(4===l.rank||1===l.rank,(function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 "+"but got rank ".concat(l.rank,".")})),null!=i&&p(4===i.rank||1===i.rank,(function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 "+"but got rank ".concat(i.rank,".")})),null!=s&&p(4===s.rank||1===s.rank,(function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 "+"but got rank ".concat(s.rank,".")})),oi(u,c,l,s,i,o)}}),ci=ba({bincount_:function(e,t,n){var r=ma(e,"x","bincount"),a=ma(t,"weights","bincount");p("int32"===r.dtype,(function(){return"Error in bincount: input "+"dtype must be int32, but got ".concat(r.dtype)})),p(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),p(a.size===r.size||0===a.size,(function(){return"Error in bincount: weights must have the same size as input or"+"0-length, but got input shape: ".concat(r.shape,", weights shape: ")+"".concat(a.shape,".")}));var o={x:r,weights:a},i={size:n};return ua.runKernel(le,o,i)}}),li=ba({bitwiseAnd_:function(e,t){var n=ma(e,"x","bitwiseAnd"),r=ma(t,"y","bitwiseAnd");if(!b(n.shape,r.shape))throw new Error("BitwiseAnd: Tensors must have the same shape. x: ".concat(n.shape,", y: ").concat(r.shape));if("int32"!==n.dtype||"int32"!==r.dtype)throw new Error("BitwiseAnd: Only supports 'int32' values in tensor, found type of x: ".concat(n.dtype," and type of y: ").concat(r.dtype));var a={a:n,b:r};return ua.runKernel(he,a)}}),hi=ba({broadcastArgs_:function(e,t){var n=ma(e,"s0","broadcastArgs","int32"),r=ma(t,"s1","broadcastArgs","int32");if(1!==n.rank)throw new Error("broadcastArgs(): first input must be a vector (rank=1). "+"Has rank ".concat(n.rank));if(1!==r.rank)throw new Error("broadcastArgs(): second input must be a vector (rank=1). "+"Has rank ".concat(r.rank));var a={s0:n,s1:r};return ua.runKernel(fe,a)}}),fi=ba({broadcastTo_:function(e,t){var n=ma(e,"broadcastTo","x"),r=n.shape;if(W(t),t.lengthn.rank){for(var a=n.shape.slice();a.length=0;s--)if(o[s]===t[s])i[s]=1;else if(1!==n.shape[s])throw new Error("broadcastTo(): [".concat(r,"] cannot be broadcast to [").concat(t,"]."));var u=i.map((function(e,t){return e>1?t:-1})).filter((function(e){return e>=0}));if(0===u.length)return po(n);var c={x:n},l={reps:i};return ua.runKernel(mn,c,l)}}),di=ba({ceil_:function(e){var t={x:ma(e,"x","ceil","float32")};return ua.runKernel(pe,t)}});function pi(e,t,n){W(e);var r={shape:e,value:t,dtype:n=n||B(t)};return ua.runKernel(We,{},r)}var gi=ba({clipByValue_:function(e,t,n){var r=ma(e,"x","clipByValue");if(p(t<=n,(function(){return"Error in clip: min (".concat(t,") must be ")+"less than or equal to max (".concat(n,").")})),t===n)return pi(r.shape,t,r.dtype);var a={x:r},o={clipValueMin:t,clipValueMax:n};return ua.runKernel(ge,a,o)}}),mi=ba({concat1d_:function(e){return Qo(e,0)}}),vi=ba({concat2d_:function(e,t){return Qo(e,t)}}),yi=ba({concat3d_:function(e,t){return Qo(e,t)}}),bi=ba({concat4d_:function(e,t){return Qo(e,t)}}),wi=ba({conv2d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var s=ma(e,"x","conv2d","float32"),u=ma(t,"filter","conv2d","float32"),c=s,l=!1;3===s.rank&&(l=!0,c=Jo(s,[1,s.shape[0],s.shape[1],s.shape[2]])),p(4===c.rank,(function(){return"Error in conv2d: input must be rank 4, but got rank ".concat(c.rank,".")})),p(4===u.rank,(function(){return"Error in conv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")})),Zo("conv2d",r,i);var h="NHWC"===a?c.shape[3]:c.shape[1];p(h===u.shape[2],(function(){return"Error in conv2d: depth of input (".concat(h,") must match ")+"input depth for filter ".concat(u.shape[2],".")})),p(Vo(n,o),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),p(Ho(o),(function(){return"Error in conv2D: Dilated rates should be larger than 0."})),p(Ho(n),(function(){return"Error in conv2D: Strides should be larger than 0."}));var f={x:c,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:i},g=ua.runKernel(be,f,d);return l?Jo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),ki=ba({conv1d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NWC"),void 0===o&&(o=1);var s=ma(e,"x","conv1d"),u=ma(t,"filter","conv1d"),c=s,l=!1;2===s.rank&&(l=!0,c=Jo(s,[1,s.shape[0],s.shape[1]])),p(3===c.rank,(function(){return"Error in conv1d: input must be rank 3, but got rank ".concat(c.rank,".")})),p(3===u.rank,(function(){return"Error in conv1d: filter must be rank 3, but got rank "+"".concat(u.rank,".")})),Zo("conv1d",r,i),p(c.shape[2]===u.shape[1],(function(){return"Error in conv1d: depth of input (".concat(c.shape[2],") must match ")+"input depth for filter ".concat(u.shape[1],".")})),p(Vo(n,o),(function(){return"Error in conv1D: Either stride or dilation must be 1. "+"Got stride ".concat(n," and dilation '").concat(o,"'")})),p(Ho(o),(function(){return"Error in conv1D: Dilated rates should be larger than 0."})),p(Ho(n),(function(){return"Error in conv1D: Stride should be larger than 0."})),p("NWC"===a,(function(){return"Error in conv1d: got dataFormat of ".concat(a," but only NWC is currently supported.")}));var h=Jo(u,[1,u.shape[0],u.shape[1],u.shape[2]]),f=Jo(c,[c.shape[0],1,c.shape[1],c.shape[2]]),d=wi(f,h,[1,n],r,"NHWC",[1,o],i);return Jo(d,l?[d.shape[2],d.shape[3]]:[d.shape[0],d.shape[2],d.shape[3]])}}),xi=ba({conv2DBackpropInput_:function(e,t,n,r,a,o,i){void 0===o&&(o="NHWC"),p(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var s=e,u=t,c=!1;3===t.rank&&(c=!0,u=Jo(t,[1,t.shape[0],t.shape[1],t.shape[2]]),s=[1,e[0],e[1],e[2]]),p(4===s.length,(function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+"".concat(s.length,".")})),p(4===u.rank,(function(){return"Error in conv2dDerInput: dy must be rank 4, but got "+"rank ".concat(u.rank)})),p(4===n.rank,(function(){return"Error in conv2dDerInput: filter must be rank 4, but got "+"rank ".concat(n.rank)}));var l="NHWC"===o?s[3]:s[1],h="NHWC"===o?u.shape[3]:u.shape[1];p(l===n.shape[2],(function(){return"Error in conv2dDerInput: depth of input (".concat(l,") must ")+"match input depth for filter ".concat(n.shape[2],".")})),p(h===n.shape[3],(function(){return"Error in conv2dDerInput: depth of output (".concat(h,") must ")+"match output depth for filter ".concat(n.shape[3],".")})),Zo("conv2dDerInput",a,i);var f={dy:u,filter:n},d={strides:r,pad:a,dataFormat:o,dimRoundingMode:i,inputShape:s},g=ua.runKernel(ke,f,d);return c?Jo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),Ei=ba({conv2dTranspose_:function(e,t,n,r,a,o){var i=ma(e,"x","conv2dTranspose"),s=ma(t,"filter","conv2dTranspose");return xi(n,i,s,r,a,"NHWC",o)}}),Si=ba({conv3d_:function(e,t,n,r,a,o){void 0===a&&(a="NDHWC"),void 0===o&&(o=[1,1,1]);var i=ma(e,"x","conv3d"),s=ma(t,"filter","conv3d"),u=i,c=!1;4===i.rank&&(c=!0,u=Jo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===u.rank,(function(){return"Error in conv3d: input must be rank 5, but got rank ".concat(u.rank,".")})),p(5===s.rank,(function(){return"Error in conv3d: filter must be rank 5, but got rank "+"".concat(s.rank,".")})),p(u.shape[4]===s.shape[3],(function(){return"Error in conv3d: depth of input (".concat(u.shape[4],") must match ")+"input depth for filter ".concat(s.shape[3],".")})),p(Vo(n,o),(function(){return"Error in conv3D: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(o,"'")})),p("NDHWC"===a,(function(){return"Error in conv3d: got dataFormat of ".concat(a," but only NDHWC is currently supported.")})),p(Ho(o),(function(){return"Error in conv3D: Dilated rates should be larger than 0."})),p(Ho(n),(function(){return"Error in conv3D: Strides should be larger than 0."}));var l={x:u,filter:s},h={strides:n,pad:r,dataFormat:a,dilations:o},f=ua.runKernel(xe,l,h);return c?Jo(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}}),Ai=ba({conv3DBackpropInput_:function(e,t,n,r,a){p(e.length===t.rank,(function(){return"Length of inShape "+"(".concat(e.length,") and rank of dy (").concat(t.rank,") must match")}));var o=e,i=t,s=!1;4===t.rank&&(s=!0,i=Jo(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),o=[1,e[0],e[1],e[2],e[3]]);var u=o[4],c=i.shape[4];p(5===o.length,(function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+"".concat(o.length,".")})),p(5===i.rank,(function(){return"Error in conv3dDerInput: dy must be rank 5, but got "+"rank ".concat(i.rank)})),p(5===n.rank,(function(){return"Error in conv3dDerInput: filter must be rank 5, but got "+"rank ".concat(n.rank)})),p(u===n.shape[3],(function(){return"Error in conv3dDerInput: depth of input (".concat(u,") must ")+"match input depth for filter ".concat(n.shape[3],".")})),p(c===n.shape[4],(function(){return"Error in conv3dDerInput: depth of output (".concat(c,") must ")+"match output depth for filter ".concat(n.shape[4],".")}));var l={dy:i,filter:n},h={pad:a,strides:r,inputShape:o},f=ua.runKernel(Ee,l,h);return s?Jo(f,[f.shape[1],f.shape[2],f.shape[3],f.shape[4]]):f}}),_i=ba({conv3dTranspose_:function(e,t,n,r,a){var o=ma(e,"x","conv3dTranspose"),i=ma(t,"filter","conv3dTranspose");return Ai(n,o,i,r,a)}}),Ii=ba({cos_:function(e){var t={x:ma(e,"x","cos","float32")};return ua.runKernel("Cos",t)}}),Ni=ba({cosh_:function(e){var t={x:ma(e,"x","cosh","float32")};return ua.runKernel(Se,t)}}),Mi=ba({cumprod_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:ma(e,"x","cumprod")},o={axis:t,exclusive:n,reverse:r};return ua.runKernel(Ae,a,o)}}),Ti=ba({cumsum_:function(e,t,n,r){void 0===t&&(t=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var a={x:ma(e,"x","cumsum")},o={axis:t,exclusive:n,reverse:r};return ua.runKernel(_e,a,o)}}),Di=ba({denseBincount_:function(e,t,n,r){void 0===r&&(r=!1);var a=ma(e,"x","denseBincount"),o=ma(t,"weights","denseBincount");p("int32"===a.dtype,(function(){return"Error in denseBincount: input "+"dtype must be int32, but got ".concat(a.dtype)})),p(a.rank<=2,(function(){return"Error in denseBincount: input must be at most rank 2, but got "+"rank ".concat(a.rank,".")})),p(n>=0,(function(){return"size must be non-negative, but got ".concat(n,".")})),p(o.size===a.size||0===o.size,(function(){return"Error in denseBincount: weights must have the same shape as x or "+"0-length, but got x shape: ".concat(a.shape,", weights shape: ")+"".concat(o.shape,".")}));var i={x:a,weights:o},s={size:n,binaryOutput:r};return ua.runKernel(Ne,i,s)}}),Ri=ba({depthToSpace_:function(e,t,n){void 0===n&&(n="NHWC");var r=ma(e,"x","depthToSpace","float32"),a="NHWC"===n?r.shape[1]:r.shape[2],o="NHWC"===n?r.shape[2]:r.shape[3],i="NHWC"===n?r.shape[3]:r.shape[1];p(t>1,(function(){return"blockSize should be > 1 for depthToSpace, but was: ".concat(t)})),p(a*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(a," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),p(o*t>=0,(function(){return"Negative dimension size caused by overflow when multiplying\n ".concat(o," and ").concat(t," for depthToSpace with input shape\n ").concat(r.shape)})),p(i%(t*t)==0,(function(){return"Dimension size must be evenly divisible by ".concat(t*t," but is ").concat(i," for depthToSpace with input shape ").concat(r.shape)}));var s={x:r},u={blockSize:t,dataFormat:n};return ua.runKernel(Me,s,u)}}),Bi=ba({depthwiseConv2d_:function(e,t,n,r,a,o,i){void 0===a&&(a="NHWC"),void 0===o&&(o=[1,1]);var s=ma(e,"x","depthwiseConv2d","float32"),u=ma(t,"filter","depthwiseConv2d","float32"),c=s,l=!1;3===s.rank&&(l=!0,c=Jo(s,[1,s.shape[0],s.shape[1],s.shape[2]])),p(4===c.rank,(function(){return"Error in depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(c.rank,".")})),p(4===u.rank,(function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+"".concat(u.rank,".")}));var h="NHWC"===a?c.shape[3]:c.shape[1];p(h===u.shape[2],(function(){return"Error in depthwiseConv2d: number of input channels "+"(".concat(h,") must match the inChannels dimension in ")+"filter ".concat(u.shape[2],".")})),Zo("depthwiseConv2d",r,i);var f={x:c,filter:u},d={strides:n,pad:r,dataFormat:a,dilations:o,dimRoundingMode:i},g=ua.runKernel(Te,f,d);return l?Jo(g,[g.shape[1],g.shape[2],g.shape[3]]):g}}),Fi=ba({diag_:function(e){var t={x:ma(e,"x","diag")};return ua.runKernel(Be,t)}}),Ci=ba({dilation2d_:function(e,t,n,r,a,o){void 0===a&&(a=[1,1]),void 0===o&&(o="NHWC");var i=ma(e,"x","dilation2d"),s=ma(t,"filter","dilation2d");p(3===i.rank||4===i.rank,(function(){return"Error in dilation2d: input must be rank 3 or 4, but got rank "+"".concat(i.rank,".")})),p(3===s.rank,(function(){return"Error in dilation2d: filter must be rank 3, but got rank "+"".concat(s.rank,".")})),p("NHWC"===o,(function(){return"Error in dilation2d: Only NHWC is currently supported, "+"but got dataFormat of ".concat(o)}));var u=i,c=!1;3===i.rank&&(u=Jo(i,[1,i.shape[0],i.shape[1],i.shape[2]]),c=!0),p(u.shape[3]===s.shape[2],(function(){return"Error in dilation2d: input and filter must have the same depth: ".concat(u.shape[3]," vs ").concat(s.shape[2])}));var l={x:u,filter:s},h={strides:n,pad:r,dilations:a},f=ua.runKernel(Fe,l,h);return c?Jo(f,[f.shape[1],f.shape[2],f.shape[3]]):f}});function Pi(e,t){for(var n=e.length,r=[],a=0;a1&&1===i&&r.unshift(o)}return r}function Oi(e,t){for(var n=[],r=0;r1)&&n.unshift(o)}return n}function Li(e,t){for(var n=Math.max(e.length,t.length),r=new Array(n),a=0;a0,(function(){return"variableGrads() expects at least one of the input variables to "+"be trainable, but none of the ".concat(o," variables is ")+"trainable."}));var i=ua.gradients(e,t,null,!0),s=i.value,u=i.grads;p(u.some((function(e){return null!=e})),(function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."})),p(0===s.rank,(function(){return"The f passed in variableGrads(f) must return a scalar, but it "+"returned a rank-".concat(s.rank," tensor")}));var c={};return t.forEach((function(e,t){null!=u[t]&&(c[e.name]=u[t])})),null!=a&&a.forEach((function(e){return c[e.name]=null})),{value:s,grads:c}}function Ns(e){return ua.customGrad(e)}function Ms(e){if(e.filter((function(e){return null==e})).length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that\n the f you passed encloses all operations that lead from x to y.")}var Ts=ba({neg_:function(e){var t={x:ma(e,"x","neg")};return ua.runKernel("Neg",t)}}),Ds=ba({softplus_:function(e){var t={x:ma(e,"x","softplus")};return ua.runKernel(Qt,t)}}),Rs=ba({logSigmoid_:function(e){var t=ma(e,"x","logSigmoid"),n=Ns((function(e){return{value:Ts(Ds(Ts(e))),gradFunc:function(t){return xo(t,ei(Ts(e)))}}}));return n(t)}}),Bs=ba({sub_:function(e,t){var n,r=ma(e,"a","sub"),a=ma(t,"b","sub"),o={a:r=(n=i(Qr(r,a),2))[0],b:a=n[1]};return ua.runKernel("Sub",o)}}),Fs=ba({logSoftmax_:function(e,t){void 0===t&&(t=-1);var n=ma(e,"logits","logSoftmax");if(-1===t&&(t=n.rank-1),t!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. "+"Logits was rank ".concat(n.rank," and axis was ").concat(t));var r=Ns((function(e,n){var r=Qi(e,t,!0),a=Bs(e,r),o=Bs(fo(a,"float32"),As(as(us(a),t,!0)));return n([o]),{value:o,gradFunc:function(e,n){var r=i(n,1)[0],a=us(r);return Bs(e,xo(as(e,t,!0),a))}}}));return r(n)}}),Cs=ba({logSumExp_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=ma(e,"x","logSumExp"),a=x(t,r.shape),o=Qi(r,a,!0),i=Bs(r,o),s=us(i),u=as(s,a),c=As(u),l=bo(Jo(o,c.shape),c);if(n){var h=Xi(l.shape,a);return Jo(l,h)}return l}}),Ps=ba({logicalAnd_:function(e,t){var n=ma(e,"a","logicalAnd","bool"),r=ma(t,"b","logicalAnd","bool");Li(n.shape,r.shape);var a={a:n,b:r};return ua.runKernel(st,a)}}),Os=ba({logicalNot_:function(e){var t={x:ma(e,"x","logicalNot","bool")};return ua.runKernel(ut,t)}}),Ls=ba({logicalOr_:function(e,t){var n=ma(e,"a","logicalOr","bool"),r=ma(t,"b","logicalOr","bool");Li(n.shape,r.shape);var a={a:n,b:r};return ua.runKernel(ct,a)}}),zs=ba({logicalXor_:function(e,t){var n=ma(e,"a","logicalXor","bool"),r=ma(t,"b","logicalXor","bool");return Li(n.shape,r.shape),Ps(Ls(e,t),Os(Ps(e,t)))}}),Us=2147483648,Ws=ba({searchSorted_:function(e,t,n){void 0===n&&(n="left");var r=ma(e,"sortedSequence","searchSorted"),a=ma(t,"values","searchSorted"),o=r.shape[r.shape.length-1],i=a.shape[a.shape.length-1],s=Jo(r,[-1,o]),u=Jo(a,[-1,i]);if(s.rank<2)throw new Error("Sorted input argument must be at least 2-dimensional");if(s.shape[0]!==u.shape[0])throw new Error("Leading dimension of 'sortedSequence' and 'values' must match.");if(v(u.shape)>=Us)throw new Error("values tensor size must less than ".concat(Us));if(s.shape[1]>=Us)throw new Error("trailing dim_size must less than ".concat(Us," for int32 output type, was ").concat(s.shape[1]));var c={sortedSequence:s,values:u},l={side:n};return ua.runKernel(Vt,c,l)}}),Gs=ba({maxPool_:function(e,t,n,r,a){var o=ma(e,"x","maxPool"),i=o,s=!1;3===o.rank&&(s=!0,i=Jo(o,[1,o.shape[0],o.shape[1],o.shape[2]])),p(4===i.rank,(function(){return"Error in maxPool: input must be rank 4 but got rank ".concat(i.rank,".")})),p(Vo(n,1),(function(){return"Error in maxPool: Either strides or dilations must be 1. "+"Got strides ".concat(n," and dilations '").concat(1,"'")})),Zo("maxPool",r,a);var u={x:i},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},l=ua.runKernel(ht,u,c);return s?Jo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Ks=ba({maxPool3d_:function(e,t,n,r,a,o){void 0===t&&(t=[1,1,1]),void 0===o&&(o="NDHWC");var i=ma(e,"x","maxPool3d"),s=i,u=!1;4===i.rank&&(u=!0,s=Jo(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),p(5===s.rank,(function(){return"Error in maxPool3d: x must be rank 5 but got rank ".concat(s.rank,".")})),p("NDHWC"===o,(function(){return"Error in maxPool3d: Only NDHWC is currently supported, "+"but got dataFormat of ".concat(o)})),Zo("maxPool3d",r,a);var c={x:s},l={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:o},h=ua.runKernel(ft,c,l);return u?Jo(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}}),qs=ba({maxPoolWithArgmax_:function(e,t,n,r,a){void 0===a&&(a=!1);var o={x:ma(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},s=ua.runKernel(dt,o,i);return{result:s[0],indexes:s[1]}}}),Vs=ba({maximum_:function(e,t){var n,r=ma(e,"a","maximum"),a=ma(t,"b","maximum");r=(n=i(Qr(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=fo(r,"int32"),a=fo(a,"int32")),Li(r.shape,a.shape);var o={a:r,b:a};return ua.runKernel(lt,o)}}),Hs=ba({mean_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r={x:ma(e,"x","mean")},a={axis:t,keepDims:n};return ua.runKernel(pt,r,a)}});function js(e,t){if(void 0===t&&(t="float32"),W(e),"complex64"===t){var n=js(e,"float32"),r=js(e,"float32");return wa(n,r)}var a=U(v(e),t);return ua.makeTensor(a,e,t)}function Zs(e,t){if(void 0===t&&(t="float32"),W(e),"complex64"===t){var n=Zs(e,"float32"),r=js(e,"float32");return wa(n,r)}var a=z(v(e),t);return ua.makeTensor(a,e,t)}var Js=ba({minimum_:function(e,t){var n,r=ma(e,"a","minimum"),a=ma(t,"b","minimum");r=(n=i(Qr(r,a),2))[0],a=n[1],"bool"===r.dtype&&(r=fo(r,"int32"),a=fo(a,"int32")),Li(r.shape,a.shape);var o={a:r,b:a};return ua.runKernel(gt,o)}}),Ys=ba({mirrorPad_:function(e,t,n){p("reflect"===n||"symmetric"===n,(function(){return"Invalid mode. Mode must be either reflect or symmetric. "+"Got ".concat(n,".")}));var r=ma(e,"x","mirrorPad");if(0===r.rank)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");p(t.length===r.rank,(function(){return"Padding doesn't match input. Must be ".concat(r.rank,". ")+"Got ".concat(t.length,".")}));for(var a="reflect"===n?1:0,o=function(e){p(2===t[e].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),p(t[e][0]>=0&&t[e][0]<=r.shape[e]-a&&t[e][1]>=0&&t[e][1]<=r.shape[e]-a,(function(){return"Padding in dimension ".concat(e," cannot be greater than or equal ")+"to ".concat(r.shape[e]-a," or less than 0 for input of ")+"shape ".concat(r.shape)}))},i=0;i2)throw new Error("Rank of probabilities must be 1 or 2, but is ".concat(i));n=n||Math.random();var s={logits:1===i?Jo(a,[1,-1]):a},u={numSamples:t,seed:n,normalized:r},c=ua.runKernel(vt,s,u);return 1===i?Jo(c,[c.size]):c}}),tu=ba({notEqual_:function(e,t){var n,r=ma(e,"a","notEqual","string_or_numeric"),a=ma(t,"b","notEqual","string_or_numeric");r=(n=i(Qr(r,a),2))[0],a=n[1],Li(r.shape,a.shape);var o={a:r,b:a};return ua.runKernel(bt,o)}}),nu=ba({oneHot_:function(e,t,n,r,a){if(void 0===n&&(n=1),void 0===r&&(r=0),void 0===a&&(a="int32"),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is ".concat(t));var o={indices:ma(e,"indices","oneHot","int32")},i={dtype:a,depth:t,onValue:n,offValue:r};return ua.runKernel(St,o,i)}}),ru=ba({onesLike_:function(e){var t={x:ma(e,"x","onesLike")};return ua.runKernel(Et,t)}}),au=ba({outerProduct_:function(e,t){var n=ma(e,"v1","outerProduct"),r=ma(t,"v2","outerProduct");p(1===n.rank&&1===r.rank,(function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+"".concat(n.rank," and ").concat(r.rank,".")}));var a=Jo(n,[-1,1]),o=Jo(r,[1,-1]);return $o(a,o)}}),ou=ba({pad_:function(e,t,n){void 0===n&&(n=0);var r=ma(e,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a={paddings:t,constantValue:n},o={x:r};return ua.runKernel(_t,o,a)}}),iu=ba({pad1d_:function(e,t,n){return void 0===n&&(n=0),p(2===t.length,(function(){return"Invalid number of paddings. Must be length of 2."})),ou(e,[t],n)}}),su=ba({pad2d_:function(e,t,n){return void 0===n&&(n=0),p(2===t.length&&2===t[0].length&&2===t[1].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),ou(e,t,n)}}),uu=ba({pad3d_:function(e,t,n){return void 0===n&&(n=0),p(3===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),ou(e,t,n)}}),cu=ba({pad4d_:function(e,t,n){return void 0===n&&(n=0),p(4===t.length&&2===t[0].length&&2===t[1].length&&2===t[2].length&&2===t[3].length,(function(){return"Invalid number of paddings. Must be length of 2 each."})),ou(e,t,n)}}),lu=ba({spaceToBatchND_:function(e,t,n){var r=ma(e,"x","spaceToBatchND");p(r.rank>=1+t.length,(function(){return"input rank ".concat(r.rank," should be > than [blockShape] ").concat(t.length)})),p(n.length===t.length,(function(){return"paddings.shape[0] ".concat(n.length," must be equal to [blockShape] ").concat(t.length)})),p(r.shape.reduce((function(e,r,a){return a>0&&a<=t.length?e&&(r+n[a-1][0]+n[a-1][1])%t[a-1]==0:e}),!0),(function(){return"input spatial dimensions ".concat(r.shape.slice(1)," with paddings ").concat(n.toString()," must be divisible by blockShapes ").concat(t.toString())}));var a={x:r},o={blockShape:t,paddings:n};return ua.runKernel(en,a,o)}}),hu=ba({pool_:function(e,t,n,r,a,o,s){null==a&&(a=[1,1]),null==o&&(o=1),0===r&&(r="valid");var u=ma(e,"x","maxPool"),c=u,l=!1;3===u.rank&&(l=!0,c=Jo(u,[1,u.shape[0],u.shape[1],u.shape[2]])),p(Vo(o,a),(function(){return"Error in pool: Either strides or dilations must be 1. "+"Got strides ".concat(o," and dilations '").concat(a,"'")}));var h,f=Po(c.shape,t,o,a,r),d=[f.dilationHeight,f.dilationWidth];h="same"===r?function(e,t){var n=e.map((function(e,n){return e+(e-1)*(t[n]-1)})).map((function(e){return e-1})),r=n.map((function(e){return Math.floor(e/2)})),a=n.map((function(e,t){return e-r[t]}));return n.map((function(e,t){return[r[t],a[t]]}))}([f.filterHeight,f.filterWidth],d):[[0,0],[0,0]];var g=1===d[0]&&1===d[1],m=i(function(e,t,n){var r=n.map((function(e){return e[0]})),a=n.map((function(e){return e[1]})),o=e.concat(r,a),i=t.map((function(e,t){return(e-o[t]%e)%e})),s=a.map((function(e,t){return e+i[t]}));return[t.map((function(e,t){return[r[t],s[t]]})),t.map((function(e,t){return[0,i[t]]}))]}([f.inHeight,f.inWidth],d,h),2),v=m[0],y=m[1],b=g?r:"valid",w=g?c:lu(c,d,v),k=("avg"===n?function(){return Yo(w,t,o,b,s)}:function(){return Gs(w,t,o,b,s)})(),x=g?k:ai(k,d,y);return l?Jo(x,[x.shape[1],x.shape[2],x.shape[3]]):x}}),fu=ba({prelu_:function(e,t){var n={x:ma(e,"x","prelu"),alpha:ma(t,"alpha","prelu")};return ua.runKernel(It,n)}}),du=ba({prod_:function(e,t,n){void 0===t&&(t=null),void 0===n&&(n=!1);var r=ma(e,"x","prod");"bool"===r.dtype&&(r=fo(r,"int32"));var a={x:r},o={axis:t,keepDims:n};return ua.runKernel(Nt,a,o)}}),pu=ba({raggedGather_:function(e,t,n,r){var a={paramsNestedSplits:e.map((function(e,t){return ma(e,"tensors".concat(t),"raggedGather","int32")})),paramsDenseValues:ma(t,"paramsDenseValues","raggedGather"),indices:ma(n,"indices","raggedGather","int32")},o={outputRaggedRank:r},i=ua.runKernel(Mt,a,o);return{outputNestedSplits:i.slice(0,i.length-1),outputDenseValues:i[i.length-1]}}}),gu=ba({raggedRange_:function(e,t,n){var r=ma(e,"starts","raggedRange"),a={starts:r,limits:ma(t,"limits","raggedRange",r.dtype),deltas:ma(n,"deltas","raggedRange",r.dtype)},o=ua.runKernel(Tt,a);return{rtNestedSplits:o[0],rtDenseValues:o[1]}}}),mu=ba({raggedTensorToTensor_:function(e,t,n,r,a){var o=ma(e,"shape","raggedTensorToTensor","int32"),i=ma(t,"values","raggedTensorToTensor"),s={shape:o,values:i,defaultValue:ma(n,"defaultValue","raggedTensorToTensor",i.dtype),rowPartitionTensors:r.map((function(e,t){return ma(e,"tensors".concat(t),"raggedTensorToTensor","int32")}))},u={rowPartitionTypes:a};return ua.runKernel(Dt,s,u)}}),vu=ba({rand_:function(e,t,n){W(e);var r=v(e),a=null;if(null==n||"float32"===n)a=new Float32Array(r);else if("int32"===n)a=new Int32Array(r);else{if("bool"!==n)throw new Error("Unknown data type ".concat(n));a=new Uint8Array(r)}for(var o=0;o>>0,t=(r*=t)>>>0,t+=4294967296*(r-=t)}return 2.3283064365386963e-10*(t>>>0)});n.next=function(){var e=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=e-(n.c=0|e)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(e),n.s0<0&&(n.s0+=1),n.s1-=r(e),n.s1<0&&(n.s1+=1),n.s2-=r(e),n.s2<0&&(n.s2+=1),r=null}function a(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function o(e,t){var n=new r(e),o=t&&t.state,i=n.next;return i.int32=function(){return 4294967296*n.next()|0},i.double=function(){return i()+11102230246251565e-32*(2097152*i()|0)},i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.alea=o}(0,e)}(yu);var bu=yu.exports,wu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(0|e)?t.x=e:n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xor128=o}(0,e)}(wu);var ku=wu.exports,xu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^e^e<<1)|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(0|e)?t.x=e:n+=e;for(var r=0;r>>4),t.next()}function a(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function o(e,t){var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xorwow=o}(0,e)}(xu);var Eu=xu.exports,Su={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.x,a=t.i;return e=r[a],n=(e^=e>>>7)^e<<24,n^=(e=r[a+1&7])^e>>>10,n^=(e=r[a+3&7])^e>>>3,n^=(e=r[a+4&7])^e<<7,e=r[a+7&7],n^=(e^=e<<13)^e<<9,r[a]=n,t.i=a+1&7,n},function(e,t){var n,r=[];if(t===(0|t))r[0]=t;else for(t=""+t,n=0;n0;--n)e.next()}(t,e)}function a(e,t){return t.x=e.x.slice(),t.i=e.i,t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&(o.x&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xorshift7=o}(0,e)}(Su);var Au=Su.exports,_u={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this;t.next=function(){var e,n,r=t.w,a=t.X,o=t.i;return t.w=r=r+1640531527|0,n=a[o+34&127],e=a[o=o+1&127],n^=n<<13,e^=e<<17,n^=n>>>15,e^=e>>>12,n=a[o]=n^e,t.i=o,n+(r^r>>>16)|0},function(e,t){var n,r,a,o,i,s=[],u=128;for(t===(0|t)?(r=t,t=null):(t+="\0",r=0,u=Math.max(u,t.length)),a=0,o=-32;o>>15,r^=r<<4,r^=r>>>13,o>=0&&(i=i+1640531527|0,a=0==(n=s[127&o]^=r+i)?a+1:0);for(a>=128&&(s[127&(t&&t.length||0)]=-1),a=127,o=512;o>0;--o)r=s[a+34&127],n=s[a=a+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[a]=r^n;e.w=i,e.X=s,e.i=a}(t,e)}function a(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function o(e,t){null==e&&(e=+new Date);var n=new r(e),o=t&&t.state,i=function(){return(n.next()>>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&(o.X&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.xor4096=o}(0,e)}(_u);var Iu=_u.exports,Nu={exports:{}};!function(e){!function(e,t,n){function r(e){var t=this,n="";t.next=function(){var e=t.b,n=t.c,r=t.d,a=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^a,a=a-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^a,t.a=a-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=0|e):n+=e;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21)}while(0===e);return e},i.int32=n.next,i.quick=i,o&&("object"==typeof o&&a(o,n),i.state=function(){return a(n,{})}),i}t&&t.exports?t.exports=o:this.tychei=o}(0,e)}(Nu);var Mu=Nu.exports,Tu={exports:{}};!function(e){!function(t,n,r){var a,o=256,i=r.pow(o,6),s=r.pow(2,52),u=2*s,c=255;function l(e,c,l){var m=[],v=p(d((c=1==c?{entropy:!0}:c||{}).entropy?[e,g(n)]:null==e?function(){try{var e;return a&&(e=a.randomBytes)?e=e(o):(e=new Uint8Array(o),(t.crypto||t.msCrypto).getRandomValues(e)),g(e)}catch(e){var r=t.navigator,i=r&&r.plugins;return[+new Date,t,i,t.screen,g(n)]}}():e,3),m),y=new h(m),b=function(){for(var e=y.g(6),t=i,n=0;e=u;)e/=2,t/=2,n>>>=1;return(e+n)/t};return b.int32=function(){return 0|y.g(4)},b.quick=function(){return y.g(4)/4294967296},b.double=b,p(g(y.S),n),(c.pass||l||function(e,t,n,a){return a&&(a.S&&f(a,y),e.state=function(){return f(y,{})}),n?(r.random=e,t):e})(b,v,"global"in c?c.global:this==r,c.state)}function h(e){var t,n=e.length,r=this,a=0,i=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);an)}var Gu={__proto__:null,TEST_EPSILON_FLOAT16:.1,createVideoElement:function(e){var t=document.createElement("video");return"playsInline"in t&&(t.playsInline=!0),t.muted=!0,t.loop=!0,t.style.position="fixed",t.style.left="0px",t.style.top="0px",t.preload="auto",t.appendChild(e),new Promise((function(e){t.addEventListener("loadeddata",(function(n){return e(t)})),t.load()}))},encodeStrings:function e(t){for(var n=0;nn)throw new Error("Value out of range:".concat(e[r]," low: ").concat(t,", high: ").concat(n))},play:function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,e.play()];case 1:return t.sent(),"requestVideoFrameCallback"in e?[4,new Promise((function(t){e.requestVideoFrameCallback(t)}))]:[3,3];case 2:t.sent(),t.label=3;case 3:return[2]}}))}))},testEpsilon:zu},Ku=function(){function e(e,t,n,r,a){this.mean=e,this.stdDev=t,this.dtype=n,this.nextVal=NaN,this.truncated=r,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var o=a||Math.random();this.random=Lu.alea(o.toString())}return e.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var e=this.nextVal;return this.nextVal=NaN,e}for(var t,n,r=!1;!r;){var a=void 0,o=void 0,i=void 0;do{i=(a=2*this.random()-1)*a+(o=2*this.random()-1)*o}while(i>=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);t=this.mean+this.stdDev*a*s,n=this.mean+this.stdDev*o*s,this.truncated&&!this.isValidTruncated(t)||(r=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(t)},e.prototype.convertValue=function(e){return null==this.dtype||"float32"===this.dtype?e:Math.round(e)},e.prototype.isValidTruncated=function(e){return e<=this.upper&&e>=this.lower},e}(),qu=function(){function e(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;var a=r||Math.random();this.randu=Lu.alea(a.toString()),this.randn=new Ku(0,1,n,!1,this.randu()),this.d=e<1?e+2/3:e-1/3,this.c=1/Math.sqrt(9*this.d)}return e.prototype.nextValue=function(){for(var e,t,n,r,a,o;;){do{r=this.randn.nextValue(),o=1+this.c*r}while(o<=0);if(o*=o*o,t=1-.331*(e=r*r)*e,n=.5*e+this.d*(1-o+Math.log(o)),(a=this.randu())r){var s=e.shape.map((function(e){return e}));s[e.shape.length-1]=t-r,n=Qo([e,js(s)],e.shape.length-1),r=t}else n=e;var u=Gi(n),c=Jo(wa(n,u),[a,r]),l=bc(c),h=Math.floor(r/2)+1,f=Qu(l),d=vs(l),g=xc(f,[h,r-h],f.shape.length-1),m=xc(d,[h,r-h],d.shape.length-1),v=n.shape.slice();return v[n.shape.length-1]=h,Jo(wa(g[0],m[0]),v)}}),Sc=ba({squaredDifference_:function(e,t){var n,r=ma(e,"a","squaredDifference"),a=ma(t,"b","squaredDifference");r=(n=i(Qr(r,a),2))[0],a=n[1],Li(r.shape,a.shape);var o={a:r,b:a};return ua.runKernel(cn,o,{})}}),Ac=ba({squeeze_:function(e,t){var n=ma(e,"x","squeeze","string_or_numeric");return Jo(n,E(n.shape,t).newShape)}}),_c=ba({stack_:function(e,t){void 0===t&&(t=0);var n=va(e,"tensors","stack","string_or_numeric");p(n.length>=1,(function(){return"Pass at least one tensor to tf.stack"})),n.length>0&&p(t<=n[0].rank,(function(){return"Axis must be <= rank of the tensor"}));var r=n,a={axis:t};return ua.runKernel(At,r,a)}}),Ic=ba({step_:function(e,t){void 0===t&&(t=0);var n={x:ma(e,"x","step")},r={alpha:t};return ua.runKernel(Sn,n,r)}}),Nc=ba({stridedSlice_:function(e,t,n,r,a,o,i,s,u){void 0===a&&(a=0),void 0===o&&(o=0),void 0===i&&(i=0),void 0===s&&(s=0),void 0===u&&(u=0);var c={x:ma(e,"x","stridedSlice","string_or_numeric")},l={begin:t,end:n,strides:r,beginMask:a,endMask:o,ellipsisMask:i,newAxisMask:s,shrinkAxisMask:u};return ua.runKernel(hn,c,l)}}),Mc=ba({tan_:function(e){var t={x:ma(e,"x","tan","float32")};return ua.runKernel("Tan",t)}});function Tc(e,t){m(e);var n=da(e,t);if(1!==n.length)throw new Error("tensor1d() requires values to be a flat/TypedArray");return ka(e,null,n,t)}function Dc(e,t,n){if(m(e),null!=t&&2!==t.length)throw new Error("tensor2d() requires shape to have two numbers");var r=da(e,n);if(2!==r.length&&1!==r.length)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return ka(e,t,r,n)}function Rc(e,t,n){if(m(e),null!=t&&3!==t.length)throw new Error("tensor3d() requires shape to have three numbers");var r=da(e,n);if(3!==r.length&&1!==r.length)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(1===r.length&&null==t)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return ka(e,t,r,n)}function Bc(e,t,n){var r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + "+"shape[sliceDim:], got updates.shape: ".concat(n.shape)+", indices.shape: ".concat(t.shape,", shape: ").concat(e)+", sliceDim: ".concat(r,", and batchDim: ").concat(a,".");if(n.rank1?t.shape[r-1]:1,o=n.length,u=1,c=a;c= 0 but got ".concat(t));if(t>a)throw new Error("'k' passed to topk() must be <= the last dimension (".concat(a,") ")+"but got ".concat(t));var o={x:r},s={k:t,sorted:n},u=i(ua.runKernel(vn,o,s),2);return{values:u[0],indices:u[1]}}}),zc=ba({truncatedNormal_:function(e,t,n,r,a){if(void 0===t&&(t=0),void 0===n&&(n=1),W(e),null!=r&&"bool"===r)throw new Error("Unsupported data type $ { dtype }");for(var o=new Ku(t,n,r,!0,a),i=ho(e,r),s=0;s0,(function(){return"The input tensor must be at least 1D"}));var r={x:n},a={axis:t},o=i(ua.runKernel(wn,r,a),2);return{values:o[0],indices:o[1]}}}),Wc=ba({unsortedSegmentSum_:function(e,t,n){var r=ma(e,"x","unsortedSegmentSum"),a=ma(t,"segmentIds","unsortedSegmentSum","int32");p(w(n),(function(){return"numSegments must be of dtype int"}));var o={x:r,segmentIds:a},i={numSegments:n};return ua.runKernel(xn,o,i)}}),Gc=ba({unstack_:function(e,t){void 0===t&&(t=0);var n=ma(e,"x","unstack","string_or_numeric");p(t>=-n.shape.length&&t=0&&e2)throw new Error("sparseIndices should be a scalar, vector, or matrix,"+" but got shape ".concat(e.shape,"."));var a=e.rank>0?e.shape[0]:1,o=e.rank>1?e.shape[1]:1;if(n.length!==o)throw new Error("outputShape has incorrect number of elements:,"+" ".concat(n.length,", should be: ").concat(o,"."));var i=t.size;if(0!==t.rank&&(1!==t.rank||i!==a))throw new Error("sparseValues has incorrect shape "+"".concat(t.shape,", should be [] or [").concat(a,"]"));if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,o,n,i);var s={sparseIndices:a,sparseValues:o,defaultValue:i},u={outputShape:n};return ua.runKernel(un,s,u)}}),Jc=ba({gatherND_:function(e,t){var n=ma(t,"indices","gatherND","int32"),r={params:ma(e,"x","gatherND","string_or_numeric"),indices:n};return ua.runKernel(je,r)}}),Yc=ba({dropout_:function(e,t,n,r){var a=ma(e,"x","dropout");if(p("float32"===a.dtype,(function(){return"x has to be a floating point tensor since it's going to be "+"scaled, but got a ".concat(a.dtype," tensor instead.")})),p(t>=0&&t<1,(function(){return"rate must be a float in the range [0, 1), but got ".concat(t,".")})),0===t)return e instanceof Ur?a.clone():a;var o=function(e,t){if(null==t)return e.shape.slice();if(b(e.shape,t))return t;if(e.shape.length===t.length){for(var n=[],r=0;r0&&(n=as(n,r)),Jo(n,e.shape)}function nl(e,t,n,r){if("linear"===t)return e;if("relu"===t)return ec(e);if("elu"===t)return Hi(e);if("relu6"===t)return tc(e);if("prelu"===t)return fu(e,n);if("leakyrelu"===t)return ks(e,r);if("sigmoid"===t)return ei(e);throw new Error("Unknown fused activation ".concat(t,"."))}var rl=function(e,t){return!(e>0)||"linear"===t},al=ba({fusedConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,u=void 0===s?"NHWC":s,c=e.dilations,l=void 0===c?[1,1]:c,h=e.dimRoundingMode,f=e.bias,d=e.activation,g=void 0===d?"linear":d,m=e.preluActivationWeights,v=e.leakyreluAlpha;if(g=g||"linear",!1===rl(ua.state.gradientDepth,g)){p("NHWC"===u,(function(){return"Error in fused conv2d: got dataFormat of ".concat(u," but ")+"only NHWC is currently supported for the case of gradient depth is 0 and the activation is not linear."}));var y=wi(n,r,a,o,u,l,h);return null!=f&&(y=bo(y,f)),nl(y,g,m,v)}var b=ma(n,"x","conv2d","float32"),w=ma(r,"filter","conv2d","float32"),k=b,x=!1;3===b.rank&&(x=!0,k=Jo(b,[1,b.shape[0],b.shape[1],b.shape[2]])),p(4===k.rank,(function(){return"Error in fused conv2d: input must be rank 4, but got rank "+"".concat(k.rank,".")})),p(4===w.rank,(function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+"".concat(w.rank,".")})),Zo("fused conv2d",o,h);var E="NHWC"===u?k.shape[3]:k.shape[1];p(w.shape[2]===E,(function(){return"Error in conv2d: depth of input (".concat(E,") must match ")+"input depth for filter ".concat(w.shape[2],".")})),p(Vo(a,l),(function(){return"Error in conv2D: Either strides or dilations must be 1. "+"Got strides ".concat(a," and dilations '").concat(l,"'")}));var S,A,_=Oo(k.shape,w.shape,a,l,o,h);if(null!=f&&(t=i(Qr(S=ma(f,"bias","fused conv2d"),b),1),S=t[0],"NHWC"===u?Li(_.outShape,S.shape):(p(S.shape.length<=1,(function(){return"Error in fused conv2d: only supports scalar or 1-D Tensor bias for NCHW format but got the bias of "+"rank-".concat(S.shape.length,".")})),p(0===S.shape.length||S.shape[0]===_.outChannels||1===S.shape[0],(function(){return"Error in fused conv2d: bias shape (".concat(S.shape,") is not ")+"compatible with the number of output channels "+"(".concat(_.outChannels,")")})))),null!=m){var I=m.shape;if(p(I.length<=1||3===I.length,(function(){return"Error in fused conv2d: only supports scalar, 1-D Tensor or 3-D Tensor PReLU activation weights but got a tensor of "+"rank-".concat(I.length,".")})),1===I.length)p(1===I[0]||I[0]===_.outChannels,(function(){return"Error in fused conv2d: PReLU activation weights "+"(".concat(I,") is not compatible with the number of output ")+"channels (".concat(_.outChannels,").")}));else if(3===I.length)try{Li(I,_.outShape)}catch(e){var N="Error in fused conv2d: PReLU activation weights (".concat(I,") ")+"is not compatible with the output shape of the conv2d "+"(".concat(_.outShape,").");throw Error(N)}A=ma(m,"prelu weights","fused conv2d")}var M=function(e,t){p("NHWC"===u,(function(){return"Error in gradient of fused conv2D: got dataFormat of ".concat(u," but only NHWC is currently supported.")}));var n=i(t,4),r=n[0],s=n[1],c=n[2],h=n[3],f=el(e,c,g);p(qo(l),(function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 "+"are not yet supported in gradients. Got dilations '".concat(l,"'")}));var d=[xi(s.shape,f,r,a,o),$c(s,f,r.shape,a,o)];if(null!=h){var m=tl(h,f);d.push(m)}return d},T={x:k,filter:w,bias:S,preluActivationWeights:A},D={strides:a,pad:o,dataFormat:u,dilations:l,dimRoundingMode:h,activation:g,leakyreluAlpha:v};if(null==f){var R=Ns((function(e,t,n){var r=ua.runKernel(Nn,T,D);return n([t,e,r]),x&&(r=Jo(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:M}}));return R(k,w)}var B=Ns((function(e,t,n,r){var a=ua.runKernel(Nn,T,D);return r([t,e,a,n]),x&&(a=Jo(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:M}}));return B(k,w,S)}}),ol=ba({depthwiseConv2dNativeBackpropFilter_:function(e,t,n,r,a,o,i){void 0===o&&(o=[1,1]);var s=e;3===e.rank&&(s=Jo(e,[1,e.shape[0],e.shape[1],e.shape[2]]));var u=t;3===u.rank&&(u=Jo(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var c={x:s,dy:u},l={strides:r,pad:a,dimRoundingMode:i,dilations:o,filterShape:n};return ua.runKernel(De,c,l)}}),il=ba({depthwiseConv2dNativeBackpropInput_:function(e,t,n,r,a,o,i){void 0===o&&(o=[1,1]);var s=t,u=!1;3===t.rank&&(u=!0,s=Jo(t,[1,t.shape[0],t.shape[1],t.shape[2]]));var c={dy:s,filter:n},l={strides:r,pad:a,dimRoundingMode:i,dilations:o,inputShape:e},h=ua.runKernel(Re,c,l);return u?Jo(h,[h.shape[1],h.shape[2],h.shape[3]]):h}}),sl=ba({fusedDepthwiseConv2d_:function(e){var t,n=e.x,r=e.filter,a=e.strides,o=e.pad,s=e.dataFormat,u=void 0===s?"NHWC":s,c=e.dilations,l=void 0===c?[1,1]:c,h=e.dimRoundingMode,f=e.bias,d=e.activation,g=void 0===d?"linear":d,m=e.preluActivationWeights,v=e.leakyreluAlpha;if(!1===rl(ua.state.gradientDepth,g)){var y=Bi(n,r,a,o,u,l,h);return null!=f&&(y=bo(y,f)),nl(y,g,m,v)}var b=ma(n,"x","depthwiseConv2d","float32"),w=ma(r,"filter","depthwiseConv2d","float32"),k=b,x=!1;3===b.rank&&(x=!0,k=Jo(b,[1,b.shape[0],b.shape[1],b.shape[2]])),p(4===k.rank,(function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got "+"rank ".concat(k.rank,".")})),p(4===w.rank,(function(){return"Error in fused depthwiseConv2d: filter must be rank 4, "+"but got rank ".concat(w.rank,".")})),p(k.shape[3]===w.shape[2],(function(){return"Error in fused depthwiseConv2d: number of input channels "+"(".concat(k.shape[3],") must match the inChannels dimension in ")+"filter ".concat(w.shape[2],".")})),null==l&&(l=[1,1]),p(Vo(a,l),(function(){return"Error in fused depthwiseConv2d: Either strides or dilations must "+"be 1. Got strides ".concat(a," and dilations '").concat(l,"'")})),Zo("fused depthwiseConv2d",o,h);var E,S,A=Oo(k.shape,w.shape,a,l,o,h,!0);null!=f&&(t=i(Qr(E=ma(f,"bias","fused conv2d"),b),1),E=t[0],Li(A.outShape,E.shape)),null!=m&&(S=ma(m,"prelu weights","fused depthwiseConv2d"));var _=function(e,t){p(qo(l),(function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations "+"'".concat(l,"'")}));var n=i(t,4),r=n[0],s=n[1],u=n[2],c=n[3],f=el(e,u,g),d=il(s.shape,f,r,a,o,l,h),m=ol(s,f,r.shape,a,o,l,h);return null!=c?[d,m,tl(E,f)]:[d,m]},I={x:k,filter:w,bias:E,preluActivationWeights:S},N={strides:a,pad:o,dataFormat:u,dilations:l,dimRoundingMode:h,activation:g,leakyreluAlpha:v};if(null==f){var M=Ns((function(e,t,n){var r=ua.runKernel(Mn,I,N);return n([t,e,r]),x&&(r=Jo(r,[r.shape[1],r.shape[2],r.shape[3]])),{value:r,gradFunc:_}}));return M(k,w)}var T=Ns((function(e,t,n,r){var a=ua.runKernel(Mn,I,N);return r([t,e,a,n]),x&&(a=Jo(a,[a.shape[1],a.shape[2],a.shape[3]])),{value:a,gradFunc:_}}));return T(k,w,E)}}),ul=ba({fusedMatMul_:function(e){var t,n=e.a,r=e.b,a=e.transposeA,o=void 0!==a&&a,s=e.transposeB,u=void 0!==s&&s,c=e.bias,l=e.activation,h=void 0===l?"linear":l,f=e.preluActivationWeights,d=e.leakyreluAlpha,g=void 0===d?.2:d;if(!1===rl(ua.state.gradientDepth,h)){var m=$o(n,r,o,u);return null!=c&&(m=bo(m,c)),nl(m,h,f,g)}var y=ma(n,"a","fused matMul"),b=ma(r,"b","fused matMul");t=i(Qr(y,b),2),y=t[0],b=t[1];var w=o?y.shape[y.rank-2]:y.shape[y.rank-1],k=u?b.shape[b.rank-1]:b.shape[b.rank-2],x=o?y.shape[y.rank-1]:y.shape[y.rank-2],E=u?b.shape[b.rank-2]:b.shape[b.rank-1],S=y.shape.slice(0,-2),A=b.shape.slice(0,-2),_=v(S),I=v(A);p(w===k,(function(){return"Error in fused matMul: inner shapes (".concat(w,") and (")+"".concat(k,") of Tensors with shapes ").concat(y.shape," and ")+"".concat(b.shape," and transposeA=").concat(o)+" and transposeB=".concat(u," must match.")}));var N,M,T=Li(y.shape.slice(0,-2),b.shape.slice(0,-2)).concat([x,E]),D=Jo(y,o?[_,w,x]:[_,x,w]),R=Jo(b,u?[I,E,k]:[I,k,E]);null!=c&&(N=i(Qr(N=ma(c,"bias","fused matMul"),y),1)[0],Li(T,N.shape)),null!=f&&(M=ma(f,"prelu weights","fused matMul"));var B=function(e,t){var n,r,a=i(t,4),s=a[0],l=a[1],f=a[2],d=a[3],p=el(Jo(e,f.shape),f,h);return o||u?!o&&u?(n=$o(p,l,!1,!1),r=$o(p,s,!0,!1)):o&&!u?(n=$o(l,p,!1,!0),r=$o(s,p,!1,!1)):(n=$o(l,p,!0,!0),r=$o(p,s,!0,!0)):(n=$o(p,l,!1,!0),r=$o(s,p,!0,!1)),null!=c?[n,r,tl(d,p)]:[n,r]},F={a:D,b:R,bias:N,preluActivationWeights:M},C={transposeA:o,transposeB:u,activation:h,leakyreluAlpha:g};if(null==c){var P=Ns((function(e,t,n){var r=ua.runKernel(In,F,C);return n([e,t,r]),{value:Jo(r,T),gradFunc:B}}));return P(D,R)}var O=Ns((function(e,t,n,r){var a=ua.runKernel(In,F,C);return r([e,t,a,n]),{value:Jo(a,T),gradFunc:B}}));return O(D,R,N)}}),cl={__proto__:null,conv2d:al,depthwiseConv2d:sl,matMul:ul},ll=ba({hammingWindow_:function(e){return Qc(e,.54,.46)}}),hl=ba({hannWindow_:function(e){return Qc(e,.5,.5)}}),fl=ba({frame_:function(e,t,n,r,a){void 0===r&&(r=!1),void 0===a&&(a=0);for(var o=0,i=[];o+t<=e.size;)i.push(ti(e,o,t)),o+=n;if(r)for(;o=1&&r[1]>=1,(function(){return"cropSize must be atleast [1,1], but was ".concat(r)})),p("bilinear"===a||"nearest"===a,(function(){return"method must be bilinear or nearest, but was ".concat(a)}));var l={image:i,boxes:s,boxInd:u},h={method:a,extrapolationValue:o,cropSize:r};return ua.runKernel(Ie,l,h)}}),gl=ba({flipLeftRight_:function(e){var t=ma(e,"image","flipLeftRight","float32");p(4===t.rank,(function(){return"Error in flipLeftRight: image must be rank 4,"+"but got rank ".concat(t.rank,".")}));var n={image:t};return ua.runKernel(Ge,n,{})}}),ml=ba({grayscaleToRGB_:function(e){var t=ma(e,"image","grayscaleToRGB"),n=t.rank-1,r=t.shape[n];p(t.rank>=2,(function(){return"Error in grayscaleToRGB: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),p(1===r,(function(){return"Error in grayscaleToRGB: last dimension of a grayscale image "+"should be size 1, but got size ".concat(r,".")}));var a=new Array(t.rank);return a.fill(1,0,n),a[n]=3,hs(t,a)}}),vl=ba({rgbToGrayscale_:function(e){var t=ma(e,"image","RGBToGrayscale"),n=t.rank-1,r=t.shape[n];p(t.rank>=2,(function(){return"Error in RGBToGrayscale: images must be at least rank 2, "+"but got rank ".concat(t.rank,".")})),p(3===r,(function(){return"Error in RGBToGrayscale: last dimension of an RGB image "+"should be size 3, but got size ".concat(r,".")}));var a,o=t.dtype,i=fo(t,"float32"),s=Tc([.2989,.587,.114]);switch(t.rank){case 2:a=Vi("ij,j->i",i,s);break;case 3:a=Vi("ijk,k->ij",i,s);break;case 4:a=Vi("ijkl,l->ijk",i,s);break;case 5:a=Vi("ijklm,m->ijkl",i,s);break;case 6:a=Vi("ijklmn,n->ijklm",i,s);break;default:throw new Error("Not a valid tensor rank.")}return a=cs(a,-1),fo(a,o)}}),yl=ba({rotateWithOffset_:function(e,t,n,r){void 0===n&&(n=0),void 0===r&&(r=.5);var a=ma(e,"image","rotateWithOffset","float32");p(4===a.rank,(function(){return"Error in rotateWithOffset: image must be rank 4,"+"but got rank ".concat(a.rank,".")}));var o={image:a},i={radians:t,fillValue:n,center:r};return ua.runKernel(_n,o,i)}});function bl(e,t,n,r,a,o){null==r&&(r=.5),null==a&&(a=Number.NEGATIVE_INFINITY),null==o&&(o=0);var i=e.shape[0];return n=Math.min(n,i),p(0<=r&&r<=1,(function(){return"iouThreshold must be in [0, 1], but was '".concat(r,"'")})),p(2===e.rank,(function(){return"boxes must be a 2D tensor, but was of rank '".concat(e.rank,"'")})),p(4===e.shape[1],(function(){return"boxes must have 4 columns, but 2nd dimension was ".concat(e.shape[1])})),p(1===t.rank,(function(){return"scores must be a 1D tensor"})),p(t.shape[0]===i,(function(){return"scores has incompatible shape with boxes. Expected ".concat(i,", ")+"but was ".concat(t.shape[0])})),p(0<=o&&o<=1,(function(){return"softNmsSigma must be in [0, 1], but was '".concat(o,"'")})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:o}}var wl=ba({nonMaxSuppression_:function(e,t,n,r,a){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY);var o=ma(e,"boxes","nonMaxSuppression","float32"),i=ma(t,"scores","nonMaxSuppression","float32"),s=bl(o,i,n,r,a),u={maxOutputSize:n=s.maxOutputSize,iouThreshold:r=s.iouThreshold,scoreThreshold:a=s.scoreThreshold};return ua.runKernel(wt,{boxes:o,scores:i},u)}});function kl(e,t,n){var r=function(e,t,n){return function(e,t,n){for(var r=0,a=e.length,o=0,i=!1;r>>1)]);s>0?r=o+1:(a=o,i=!s)}return i?r:-r-1}(e,t,n||xl)}(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function xl(e,t){return e>t?1:ea&&h.push({score:t[f],boxIndex:f,suppressBeginIndex:0});h.sort(Ml);for(var d=o>0?-.5/o:0,p=[],g=[];p.length0;){var m=h.pop(),v=m.score,y=m.boxIndex,b=m.suppressBeginIndex;if(v=b;--k){var x=Il(e,y,p[k]);if(x>=r){w=!0;break}if(m.score=m.score*Nl(r,d,x),m.score<=a)break}m.suppressBeginIndex=p.length,w||(m.score===v?(p.push(y),g.push(m.score)):m.score>a&&kl(h,m,Ml))}var E=p.length,S=n-E;c&&S>0&&(p.push.apply(p,s([],i(new Array(S).fill(0)),!1)),g.push.apply(g,s([],i(new Array(S).fill(0)),!1)));var A={selectedIndices:p};return u&&(A.selectedScores=g),l&&(A.validOutputs=E),A}function Il(e,t,n){var r=e.subarray(4*t,4*t+4),a=e.subarray(4*n,4*n+4),o=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),s=Math.max(r[0],r[2]),u=Math.max(r[1],r[3]),c=Math.min(a[0],a[2]),l=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),f=Math.max(a[1],a[3]),d=(s-o)*(u-i),p=(h-c)*(f-l);if(d<=0||p<=0)return 0;var g=Math.max(o,c),m=Math.max(i,l),v=Math.min(s,h),y=Math.min(u,f),b=Math.max(v-g,0)*Math.max(y-m,0);return b/(d+p-b)}function Nl(e,t,n){var r=Math.exp(t*n*n);return n<=e?r:0}function Ml(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}var Tl=ba({nonMaxSuppressionWithScore_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=0);var i=ma(e,"boxes","nonMaxSuppression"),s=ma(t,"scores","nonMaxSuppression"),u=bl(i,s,n,r,a,o),c={boxes:i,scores:s},l={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:o=u.softNmsSigma},h=ua.runKernel(xt,c,l);return{selectedIndices:h[0],selectedScores:h[1]}}}),Dl=ba({nonMaxSuppressionPadded_:function(e,t,n,r,a,o){void 0===r&&(r=.5),void 0===a&&(a=Number.NEGATIVE_INFINITY),void 0===o&&(o=!1);var i=ma(e,"boxes","nonMaxSuppression"),s=ma(t,"scores","nonMaxSuppression"),u=bl(i,s,n,r,a,null),c={boxes:i,scores:s},l={maxOutputSize:u.maxOutputSize,iouThreshold:u.iouThreshold,scoreThreshold:u.scoreThreshold,padToMaxOutputSize:o},h=ua.runKernel(kt,c,l);return{selectedIndices:h[0],validOutputs:h[1]}}}),Rl=ba({resizeBilinear_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=ma(e,"images","resizeBilinear");p(3===a.rank||4===a.rank,(function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),p(2===t.length,(function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+"".concat(t,".")})),p(!1===r||!1===n,(function(){return"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Jo(a,[1,a.shape[0],a.shape[1],a.shape[2]])),i(t,0);var u={images:o},c={alignCorners:n,halfPixelCenters:r,size:t},l=ua.runKernel(Lt,u,c);return s?Jo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Bl=ba({resizeNearestNeighbor_:function(e,t,n,r){void 0===n&&(n=!1),void 0===r&&(r=!1);var a=ma(e,"images","resizeNearestNeighbor");p(3===a.rank||4===a.rank,(function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got "+"rank ".concat(a.rank,".")})),p(2===t.length,(function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+"".concat(t,".")})),p("float32"===a.dtype||"int32"===a.dtype,(function(){return"`images` must have `int32` or `float32` as dtype"})),p(!1===r||!1===n,(function(){return"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false."}));var o=a,s=!1;3===a.rank&&(s=!0,o=Jo(a,[1,a.shape[0],a.shape[1],a.shape[2]])),i(t,0);var u={images:o},c={alignCorners:n,halfPixelCenters:r,size:t},l=ua.runKernel(Ot,u,c);return s?Jo(l,[l.shape[1],l.shape[2],l.shape[3]]):l}}),Fl=ba({threshold_:function(e,t,n,r){var a;void 0===t&&(t="binary"),void 0===n&&(n=!1),void 0===r&&(r=.5);var o,s,u,c,l=ma(e,"image","threshold"),h=l.shape[0]*l.shape[1],f=xo(Tc([r]),255);if(p(3===l.rank,(function(){return"Error in threshold: image must be rank 3,"+"but got rank ".concat(l.rank,".")})),p(3===l.shape[2]||1===l.shape[2],(function(){return"Error in threshold: image color channel must be equal to 3 or 1"+"but got ".concat(l.shape[2],".")})),p("int32"===l.dtype||"float32"===l.dtype,(function(){return"Error in dtype: image dtype must be int32 or float32,"+"but got dtype ".concat(l.dtype,".")})),p("otsu"===t||"binary"===t,(function(){return"Method must be binary or otsu, but was ".concat(t)})),3===l.shape[2]){o=(a=i(xc(l,[1,1,1],-1),3))[0],s=a[1],u=a[2];var d=xo(o,.2989),g=xo(s,.587),m=xo(u,.114);c=bo(bo(d,g),m)}else c=e;"otsu"===t&&(f=function(e,t){for(var n,r,a,o,i,s,u=Tc([-1]),c=Tc([0]),l=Tc([0]),h=0;h=2,(function(){return"bandPart(): Rank must be at least 2, got ".concat(r.rank,".")}));var a,o,s=r.shape,u=i(r.shape.slice(-2),2),c=u[0],l=u[1];"number"==typeof t?(p(t%1==0,(function(){return"bandPart(): numLower must be an integer, got ".concat(t,".")})),p(t<=c,(function(){return"bandPart(): numLower (".concat(t,")")+" must not be greater than the number of rows (".concat(c,").")})),a=ma(t<0?c:t,"numLower","bandPart")):(p("int32"===t.dtype,(function(){return"bandPart(): numLower's dtype must be an int32."})),a=Wi(xs(t,0),c,Js(t,c))),"number"==typeof n?(p(n%1==0,(function(){return"bandPart(): numUpper must be an integer, got ".concat(n,".")})),p(n<=l,(function(){return"bandPart(): numUpper (".concat(n,")")+" must not be greater than the number of columns (".concat(l,").")})),o=ma(n<0?l:n,"numUpper","bandPart")):(p("int32"===n.dtype,(function(){return"bandPart(): numUpper's dtype must be an int32."})),o=Wi(xs(n,0),l,Js(n,l)));var h=Jo(Xu(0,c,1,"int32"),[-1,1]),f=Xu(0,l,1,"int32"),d=Bs(h,f),g=Ps(Es(d,a),ms(d,Ts(o))),m=js([c,l],r.dtype);return Jo(_c(Gc(Jo(r,[-1,c,l])).map((function(e){return Wi(g,e,m)}))),s)}}),Ol=ba({gramSchmidt_:function(e){var t;if(Array.isArray(e)){t=!1,p(null!=e&&e.length>0,(function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=e[0].shape[0],r=function(t){p(e[t].shape[0]===n,(function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: "+"(".concat(e[t].shape[0]," vs. ").concat(n,")")}))},a=1;a0)for(var n=0;n=r?r:n,l=function(e){var t,c=o,l=u,h=a;t=i(ua.tidy((function(){var t=ti(o,[e,e],[n-e,1]),i=is(t),c=ti(o,[e,e],[1,1]),l=Wi(gs(c,0),Dc([[-1]]),Dc([[1]])),h=Bs(c,xo(l,i)),f=ko(t,h);u=1===f.shape[0]?po(s):Qo([s,ti(f,[1,0],[f.shape[0]-1,f.shape[1]])],0);var d=Ts(ko($o(l,h),i)),p=ti(o,[e,0],[n-e,r]),g=xo(d,u),m=Vc(u);if(0===e)o=Bs(p,$o(g,$o(m,p)));else{var v=Bs(p,$o(g,$o(m,p)));o=Qo([ti(o,[0,0],[e,r]),v],0)}var y=Vc(g),b=ti(a,[0,e],[n,a.shape[1]-e]);if(0===e)a=Bs(b,$o($o(b,u),y));else{var w=Bs(b,$o($o(b,u),y));a=Qo([ti(a,[0,0],[n,e]),w],1)}return[u,o,a]})),3),u=t[0],o=t[1],a=t[2],vo([c,l,h])},h=0;hr&&(a=ti(a,[0,0],[n,r]),o=ti(o,[0,0],[r,r])),[a,o]}))}var zl,Ul=ba({qr_:function(e,t){if(void 0===t&&(t=!1),p(e.rank>=2,(function(){return"qr() requires input tensor to have a rank >= 2, but got rank ".concat(e.rank)})),2===e.rank)return Ll(e,t);var n=e.shape.slice(0,e.shape.length-2).reduce((function(e,t){return e*t})),r=Gc(Jo(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],o=[];return r.forEach((function(e){var n=i(Ll(e,t),2),r=n[0],s=n[1];a.push(r),o.push(s)})),[Jo(_c(a,0),e.shape),Jo(_c(o,0),e.shape)]}});e.Reduction=void 0,(zl=e.Reduction||(e.Reduction={}))[zl.NONE=0]="NONE",zl[zl.MEAN=1]="MEAN",zl[zl.SUM=2]="SUM",zl[zl.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS";var Wl=ba({computeWeightedLoss_:function(t,n,r){void 0===r&&(r=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var a=ma(t,"losses","computeWeightedLoss"),o=null;null!=n&&(o=ma(n,"weights","computeWeightedLoss"));var i=null==o?a:xo(a,o);if(r===e.Reduction.NONE)return i;if(r===e.Reduction.SUM)return as(i);if(r===e.Reduction.MEAN){if(null==o)return Hs(i);var s=a.size/o.size,u=ko(as(i),as(o));return s>1?ko(u,ts(s)):u}if(r===e.Reduction.SUM_BY_NONZERO_WEIGHTS){if(null==o)return ko(as(i),ts(a.size));var c=xo(o,Zs(a.shape)),l=fo(as(tu(c,ts(0))),"float32");return ko(as(i),l)}throw Error("Unknown reduction: ".concat(r))}}),Gl=ba({absoluteDifference_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=ma(t,"labels","absoluteDifference"),i=ma(n,"predictions","absoluteDifference"),s=null;null!=r&&(s=ma(r,"weights","absoluteDifference")),g(o.shape,i.shape,"Error in absoluteDifference: ");var u=Eo(Bs(o,i));return Wl(u,s,a)}}),Kl=ba({cosineDistance_:function(t,n,r,a,o){void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=ma(t,"labels","cosineDistance"),s=ma(n,"predictions","cosineDistance"),u=null;null!=a&&(u=ma(a,"weights","cosineDistance")),g(i.shape,s.shape,"Error in cosineDistance: ");var c=ts(1),l=Bs(c,as(xo(i,s),r,!0));return Wl(l,u,o)}}),ql=ba({hingeLoss_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=ma(t,"labels","hingeLoss"),i=ma(n,"predictions","hingeLoss"),s=null;null!=r&&(s=ma(r,"weights","hingeLoss")),g(o.shape,i.shape,"Error in hingeLoss: ");var u=ts(1);o=Bs(xo(ts(2),o),u);var c=ec(Bs(u,xo(o,i)));return Wl(c,s,a)}}),Vl=ba({huberLoss_:function(t,n,r,a,o){void 0===a&&(a=1),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=ma(t,"labels","huberLoss"),s=ma(n,"predictions","huberLoss"),u=null;null!=r&&(u=ma(r,"weights","huberLoss")),g(i.shape,s.shape,"Error in huberLoss: ");var c=ts(a),l=Eo(Bs(s,i)),h=Js(l,c),f=Bs(l,h),d=bo(xo(ts(.5),rs(h)),xo(c,f));return Wl(d,u,o)}}),Hl=ba({logLoss_:function(t,n,r,a,o){void 0===a&&(a=1e-7),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=ma(t,"labels","logLoss"),s=ma(n,"predictions","logLoss"),u=null;null!=r&&(u=ma(r,"weights","logLoss")),g(i.shape,s.shape,"Error in logLoss: ");var c=ts(1),l=ts(a),h=Ts(xo(i,As(bo(s,l)))),f=xo(Bs(c,i),As(bo(Bs(c,s),l))),d=Bs(h,f);return Wl(d,u,o)}}),jl=ba({meanSquaredError_:function(t,n,r,a){void 0===a&&(a=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var o=ma(t,"labels","meanSquaredError"),i=ma(n,"predictions","meanSquaredError"),s=null;null!=r&&(s=ma(r,"weights","meanSquaredError")),g(o.shape,i.shape,"Error in meanSquaredError: ");var u=Sc(o,i);return Wl(u,s,a)}}),Zl=ba({sigmoidCrossEntropy_:function(t,n,r,a,o){void 0===a&&(a=0),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var i=ma(t,"multiClassLabels","sigmoidCrossEntropy"),s=ma(n,"logits","sigmoidCrossEntropy"),u=null;if(null!=r&&(u=ma(r,"weights","sigmoidCrossEntropy")),g(i.shape,s.shape,"Error in sigmoidCrossEntropy: "),a>0){var c=ts(a),l=ts(1),h=ts(.5);i=bo(xo(i,Bs(l,c)),xo(h,c))}var f=function(e,t){var n=ma(e,"labels","sigmoidCrossEntropyWithLogits"),r=ma(t,"logits","sigmoidCrossEntropyWithLogits");g(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var a=ec(r),o=xo(r,n),i=_s(us(Ts(Eo(r))));return bo(Bs(a,o),i)}(i,s);return Wl(f,u,o)}}),Jl=ba({softmaxCrossEntropy_:function(t,n,r,a,o){void 0===a&&(a=0),void 0===o&&(o=e.Reduction.SUM_BY_NONZERO_WEIGHTS);var s=ma(t,"onehotLabels","softmaxCrossEntropy"),u=ma(n,"logits","softmaxCrossEntropy"),c=null;if(null!=r&&(c=ma(r,"weights","softmaxCrossEntropy")),g(s.shape,u.shape,"Error in softmaxCrossEntropy: "),a>0){var l=ts(a),h=ts(1),f=ts(s.shape[1]);s=bo(xo(s,Bs(h,l)),ko(l,f))}var d=function(e,t,n){if(void 0===n&&(n=-1),-1===n&&(n=t.rank-1),n!==t.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet "+"supported. Labels / logits was rank ".concat(t.rank," ")+"and dim was ".concat(n));var r=Ns((function(e,t,r){var a=Cs(t,[n],!0),o=Bs(fo(t,"float32"),a);r([e,o]);var s=Ts(xo(o,e));return{value:as(s,[n]),gradFunc:function(e,t){var r=i(t,2),a=r[0],o=r[1],s=Xi(e.shape,[n]);return[xo(Jo(e,s),Bs(fo(a,"float32"),us(o))),xo(Jo(e,s),Bs(us(o),fo(a,"float32")))]}}}));return r(e,t)}(s,u);return Wl(d,c,o)}}),Yl=ba({sparseFillEmptyRows_:function(e,t,n,r){var a=ma(e,"indices","sparseFillEmptyRows","int32"),o=ma(t,"values","sparseFillEmptyRows"),i=ma(n,"denseShape","sparseFillEmptyRows","int32"),s=ma(r,"defaultValue","sparseFillEmptyRows",o.dtype);if(2!==a.rank)throw new Error("Indices should be Tensor2D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Values should be Tensor1D but received shape ".concat(o.shape));if(1!==i.rank)throw new Error("Dense shape should be Tensor1D but received shape ".concat(i.shape));if(0!==s.rank)throw new Error("Default value should be a scalar but received shape ".concat(s.shape));var u={indices:a,values:o,denseShape:i,defaultValue:s},c=ua.runKernel(rn,u);return{outputIndices:c[0],outputValues:c[1],emptyRowIndicator:c[2],reverseIndexMap:c[3]}}}),Xl=ba({sparseReshape_:function(e,t,n){var r=ma(e,"inputIndices","sparseReshape","int32"),a=ma(t,"inputShape","sparseReshape","int32"),o=ma(n,"newShape","sparseReshape","int32");if(2!==r.rank)throw new Error("Input indices should be Tensor2D but received shape\n ".concat(r.shape));if(1!==a.rank)throw new Error("Input shape should be Tensor1D but received shape ".concat(a.shape));if(1!==o.rank)throw new Error("New shape should be Tensor1D but received shape ".concat(o.shape));var i={inputIndices:r,inputShape:a,newShape:o},s=ua.runKernel(an,i);return{outputIndices:s[0],outputShape:s[1]}}}),Ql=ba({sparseSegmentMean_:function(e,t,n){var r=ma(e,"data","sparseSegmentMean"),a=ma(t,"indices","sparseSegmentMean","int32"),o=ma(n,"segmentIds","sparseSegmentMean","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var i={data:r,indices:a,segmentIds:o};return ua.runKernel(on,i)}}),$l=ba({sparseSegmentSum_:function(e,t,n){var r=ma(e,"data","sparseSegmentSum"),a=ma(t,"indices","sparseSegmentSum","int32"),o=ma(n,"segmentIds","sparseSegmentSum","int32");if(r.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(1!==a.rank)throw new Error("Indices should be Tensor1D but received shape\n ".concat(a.shape));if(1!==o.rank)throw new Error("Segment ids should be Tensor1D but received shape\n ".concat(o.shape));var i={data:r,indices:a,segmentIds:o};return ua.runKernel(sn,i)}}),eh=ba({stringNGrams_:function(e,t,n,r,a,o,i,s){var u=ma(e,"data","stringNGrams","string");if("string"!==u.dtype)throw new Error("Data must be of datatype string");if(1!==u.shape.length)throw new Error("Data must be a vector, saw: ".concat(u.shape));var c=ma(t,"dataSplits","stringNGrams");if("int32"!==c.dtype)throw new Error("Data splits must be of datatype int32");var l={separator:n,nGramWidths:r,leftPad:a,rightPad:o,padWidth:i,preserveShortSequences:s},h={data:u,dataSplits:c},f=ua.runKernel(fn,h,l);return{nGrams:f[0],nGramsSplits:f[1]}}}),th={fft:bc,ifft:wc,rfft:Ec,irfft:kc},nh={hammingWindow:ll,hannWindow:hl,frame:fl,stft:dl},rh={flipLeftRight:gl,grayscaleToRGB:ml,resizeNearestNeighbor:Bl,resizeBilinear:Rl,rgbToGrayscale:vl,rotateWithOffset:yl,cropAndResize:pl,nonMaxSuppression:wl,nonMaxSuppressionAsync:function(e,t,n,o,i){return void 0===o&&(o=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),r(this,void 0,void 0,(function(){var r,s,u,c,l,h,f;return a(this,(function(a){switch(a.label){case 0:return r=ma(e,"boxes","nonMaxSuppressionAsync"),s=ma(t,"scores","nonMaxSuppressionAsync"),u=bl(r,s,n,o,i),n=u.maxOutputSize,o=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([r.data(),s.data()])];case 1:return c=a.sent(),l=c[0],h=c[1],f=El(l,h,n,o,i).selectedIndices,r!==e&&r.dispose(),s!==t&&s.dispose(),[2,Tc(f,"int32")]}}))}))},nonMaxSuppressionWithScore:Tl,nonMaxSuppressionWithScoreAsync:function(e,t,n,o,i,s){return void 0===o&&(o=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),void 0===s&&(s=0),r(this,void 0,void 0,(function(){var r,u,c,l,h,f,d,p,g;return a(this,(function(a){switch(a.label){case 0:return r=ma(e,"boxes","nonMaxSuppressionAsync"),u=ma(t,"scores","nonMaxSuppressionAsync"),c=bl(r,u,n,o,i,s),n=c.maxOutputSize,o=c.iouThreshold,i=c.scoreThreshold,s=c.softNmsSigma,[4,Promise.all([r.data(),u.data()])];case 1:return l=a.sent(),h=l[0],f=l[1],d=Al(h,f,n,o,i,s),p=d.selectedIndices,g=d.selectedScores,r!==e&&r.dispose(),u!==t&&u.dispose(),[2,{selectedIndices:Tc(p,"int32"),selectedScores:Tc(g)}]}}))}))},nonMaxSuppressionPadded:Dl,nonMaxSuppressionPaddedAsync:function(e,t,n,o,s,u){return void 0===o&&(o=.5),void 0===s&&(s=Number.NEGATIVE_INFINITY),void 0===u&&(u=!1),r(this,void 0,void 0,(function(){var r,c,l,h,f,d,p,g,m,v,y,b;return a(this,(function(a){switch(a.label){case 0:return r=ma(e,"boxes","nonMaxSuppressionAsync"),c=ma(t,"scores","nonMaxSuppressionAsync"),l=bl(r,c,n,o,s,null),h=l.maxOutputSize,f=l.iouThreshold,d=l.scoreThreshold,[4,Promise.all([r.data(),c.data()])];case 1:return p=i.apply(void 0,[a.sent(),2]),g=p[0],m=p[1],v=Sl(g,m,h,f,d,u),y=v.selectedIndices,b=v.validOutputs,r!==e&&r.dispose(),c!==t&&c.dispose(),[2,{selectedIndices:Tc(y,"int32"),validOutputs:ts(b,"int32")}]}}))}))},threshold:Fl,transform:Cl},ah={bandPart:Pl,gramSchmidt:Ol,qr:Ul},oh={absoluteDifference:Gl,computeWeightedLoss:Wl,cosineDistance:Kl,hingeLoss:ql,huberLoss:Vl,logLoss:Hl,meanSquaredError:jl,sigmoidCrossEntropy:Zl,softmaxCrossEntropy:Jl},ih={sparseFillEmptyRows:Yl,sparseReshape:Xl,sparseSegmentMean:Ql,sparseSegmentSum:$l},sh={stringNGrams:eh,stringSplit:ba({stringSplit_:function(e,t,n){void 0===n&&(n=!0);var r=ma(e,"input","stringSplit","string"),a=ma(t,"delimiter","stringSplit","string");if(1!==r.rank)throw new Error("Input should be Tensor1D but received shape ".concat(r.shape));if(0!==a.rank)throw new Error("Delimiter should be a scalar but received shape ".concat(a.shape));var o={skipEmpty:n},i={input:r,delimiter:a},s=ua.runKernel(dn,i,o);return{indices:s[0],values:s[1],shape:s[2]}}}),stringToHashBucketFast:ba({stringToHashBucketFast_:function(e,t){var n=ma(e,"input","stringToHashBucketFast","string"),r={numBuckets:t};if(t<=0)throw new Error("Number of buckets must be at least 1");var a={input:n};return ua.runKernel(pn,a,r)}}),staticRegexReplace:ba({staticRegexReplace_:function(e,t,n,r){void 0===r&&(r=!0);var a=ma(e,"input","staticRegexReplace","string"),o={pattern:t,rewrite:n,replaceGlobal:r};return ua.runKernel(ln,{x:a},o)}})},uh=new Map,ch=new Map,lh=function(){function e(){}return e.prototype.getClassName=function(){return this.constructor.className},e.fromConfig=function(e,t){return new e(t)},e}(),hh=function(){function e(){this.classNameMap={}}return e.getMap=function(){return null==e.instance&&(e.instance=new e),e.instance},e.register=function(t){e.getMap().classNameMap[t.className]=[t,t.fromConfig]},e}();function fh(e,t,n){p(null!=e.className,(function(){return"Class being registered does not have the static className property defined."})),p("string"==typeof e.className,(function(){return"className is required to be a string, but got type "+typeof e.className})),p(e.className.length>0,(function(){return"Class being registered has an empty-string as its className, which is disallowed."})),void 0===t&&(t="Custom"),void 0===n&&(n=e.className);var r=t+">"+n;return hh.register(e),uh.set(r,e),ch.set(e,r),e}var dh={__proto__:null,Serializable:lh,SerializationMap:hh,getRegisteredName:function(e){return ch.has(e)?ch.get(e):e.className},registerClass:fh},ph=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return n(t,e),t.prototype.minimize=function(e,t,n){void 0===t&&(t=!1);var r=this.computeGradients(e,n),a=r.value,o=r.grads;if(null!=n){var i=n.map((function(e){return{name:e.name,tensor:o[e.name]}}));this.applyGradients(i)}else this.applyGradients(o);return vo(o),t?a:(a.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return null==this.iterations_&&(this.iterations_=0),this.iterations_},enumerable:!1,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,t){return Is(e,t)},t.prototype.dispose=function(){null!=this.iterations_&&vo(this.iterations_)},t.prototype.saveIterations=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){return null==this.iterations_&&(this.iterations_=0),[2,{name:"iter",tensor:ts(this.iterations_,"int32")}]}))}))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("setWeights() is not implemented for this optimizer class "+"".concat(this.getClassName()))}))}))},t.prototype.extractIterations=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(n){switch(n.label){case 0:return t=this,[4,e[0].tensor.data()];case 1:return t.iterations_=n.sent()[0],[2,e.slice(1)]}}))}))},t}(lh);Object.defineProperty(ph,Symbol.hasInstance,{value:function(e){return null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients}});var gh=function(e){function t(t,n,r){void 0===r&&(r=null);var a=e.call(this)||this;return a.learningRate=t,a.rho=n,a.epsilon=r,a.accumulatedGrads=[],a.accumulatedUpdates=[],null==r&&(a.epsilon=ua.backend.epsilon()),a}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adadelta"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ua.registeredVariables[n];null==t.accumulatedGrads[r]&&(t.accumulatedGrads[r]={originalName:"".concat(n,"/accum_grad"),variable:mo((function(){return Gi(a).variable(!1)}))}),null==t.accumulatedUpdates[r]&&(t.accumulatedUpdates[r]={originalName:"".concat(n,"/accum_var"),variable:mo((function(){return Gi(a).variable(!1)}))});var o=Array.isArray(e)?e[r].tensor:e[n];if(null!=o){var i=t.accumulatedGrads[r].variable,s=t.accumulatedUpdates[r].variable;mo((function(){var e=bo(xo(i,t.rho),xo(rs(o),1-t.rho)),n=xo(ko(ns(bo(s,t.epsilon)),ns(bo(i,t.epsilon))),o),r=bo(xo(s,t.rho),xo(rs(n),1-t.rho));i.assign(e),s.assign(r);var u=bo(xo(n,-t.learningRate),a);a.assign(u)}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedUpdates&&(vo(this.accumulatedGrads.map((function(e){return e.variable}))),vo(this.accumulatedUpdates.map((function(e){return e.variable}))))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedGrads),!1),i(this.accumulatedUpdates),!1),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t;return a(this,(function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),t=e.length/2,this.accumulatedGrads=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),this.accumulatedUpdates=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.rho,t.epsilon)},t}(ph),mh=function(e){function t(t,n){void 0===n&&(n=.1);var r=e.call(this)||this;return r.learningRate=t,r.initialAccumulatorValue=n,r.accumulatedGrads=[],r}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adagrad"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ua.registeredVariables[n];null==t.accumulatedGrads[r]&&(t.accumulatedGrads[r]={originalName:"".concat(n,"/accumulator"),variable:mo((function(){return pi(a.shape,t.initialAccumulatorValue).variable(!1)}))});var o=Array.isArray(e)?e[r].tensor:e[n];if(null!=o){var i=t.accumulatedGrads[r].variable;mo((function(){var e=bo(i,rs(o));i.assign(e);var n=bo(xo(ko(o,ns(bo(e,ua.backend.epsilon()))),-t.learningRate),a);a.assign(n)}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedGrads&&vo(this.accumulatedGrads.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:return e=t.sent(),this.accumulatedGrads=e.map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,t){return new e(t.learningRate,t.initialAccumulatorValue)},t}(ph),vh=function(e){function t(t,n,r,a){void 0===a&&(a=null);var o=e.call(this)||this;return o.learningRate=t,o.beta1=n,o.beta2=r,o.epsilon=a,o.accumulatedFirstMoment=[],o.accumulatedSecondMoment=[],mo((function(){o.accBeta1=ts(n).variable(),o.accBeta2=ts(r).variable()})),null==a&&(o.epsilon=ua.backend.epsilon()),o}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adam"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this,n=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e);mo((function(){var r=Bs(1,t.accBeta1),a=Bs(1,t.accBeta2);n.forEach((function(n,o){var i=ua.registeredVariables[n];null==t.accumulatedFirstMoment[o]&&(t.accumulatedFirstMoment[o]={originalName:"".concat(n,"/m"),variable:mo((function(){return Gi(i).variable(!1)}))}),null==t.accumulatedSecondMoment[o]&&(t.accumulatedSecondMoment[o]={originalName:"".concat(n,"/v"),variable:mo((function(){return Gi(i).variable(!1)}))});var s=Array.isArray(e)?e[o].tensor:e[n];if(null!=s){var u=t.accumulatedFirstMoment[o].variable,c=t.accumulatedSecondMoment[o].variable,l=bo(xo(u,t.beta1),xo(s,1-t.beta1)),h=bo(xo(c,t.beta2),xo(rs(s),1-t.beta2)),f=ko(l,r),d=ko(h,a);u.assign(l),c.assign(h);var p=bo(xo(ko(f,bo(ns(d),t.epsilon)),-t.learningRate),i);i.assign(p)}})),t.accBeta1.assign(xo(t.accBeta1,t.beta1)),t.accBeta2.assign(xo(t.accBeta2,t.beta2))})),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&vo(this.accumulatedFirstMoment.map((function(e){return e.variable}))),null!=this.accumulatedSecondMoment&&vo(this.accumulatedSecondMoment.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedFirstMoment),!1),i(this.accumulatedSecondMoment),!1),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t,n=this;return a(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),mo((function(){n.accBeta1.assign(es(n.beta1,n.iterations_+1)),n.accBeta2.assign(es(n.beta2,n.iterations_+1))})),t=e.length/2,this.accumulatedFirstMoment=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),this.accumulatedSecondMoment=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)},t}(ph),yh=function(e){function t(t,n,r,a,o){void 0===a&&(a=null),void 0===o&&(o=0);var i=e.call(this)||this;return i.learningRate=t,i.beta1=n,i.beta2=r,i.epsilon=a,i.decay=o,i.accumulatedFirstMoment=[],i.accumulatedWeightedInfNorm=[],mo((function(){i.iteration=ts(0).variable(),i.accBeta1=ts(n).variable()})),null==a&&(i.epsilon=ua.backend.epsilon()),i}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Adamax"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this,n=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e);mo((function(){var r=Bs(1,t.accBeta1),a=ko(-t.learningRate,bo(xo(t.iteration,t.decay),1));n.forEach((function(n,o){var i=ua.registeredVariables[n];null==t.accumulatedFirstMoment[o]&&(t.accumulatedFirstMoment[o]={originalName:"".concat(n,"/m"),variable:Gi(i).variable(!1)}),null==t.accumulatedWeightedInfNorm[o]&&(t.accumulatedWeightedInfNorm[o]={originalName:"".concat(n,"/v"),variable:Gi(i).variable(!1)});var s=Array.isArray(e)?e[o].tensor:e[n];if(null!=s){var u=t.accumulatedFirstMoment[o].variable,c=t.accumulatedWeightedInfNorm[o].variable,l=bo(xo(u,t.beta1),xo(s,1-t.beta1)),h=xo(c,t.beta2),f=Eo(s),d=Vs(h,f);u.assign(l),c.assign(d);var p=bo(xo(ko(a,r),ko(l,bo(d,t.epsilon))),i);i.assign(p)}})),t.iteration.assign(bo(t.iteration,1)),t.accBeta1.assign(xo(t.accBeta1,t.beta1))})),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&vo(this.accumulatedFirstMoment.map((function(e){return e.variable}))),null!=this.accumulatedWeightedInfNorm&&vo(this.accumulatedWeightedInfNorm.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("getWeights() is not implemented for Adamax yet.")}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(e){throw new Error("setWeights() is not implemented for Adamax yet.")}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)},t}(ph),bh=function(e){function t(t){var n=e.call(this)||this;return n.learningRate=t,n.setLearningRate(t),n}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"SGD"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=Array.isArray(e)?e[r].tensor:e[n];if(null!=a){var o=ua.registeredVariables[n];mo((function(){var e=bo(xo(t.c,a),o);o.assign(e)}))}})),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=yo(ts(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:if(0!==(e=t.sent()).length)throw new Error("SGD optimizer does not have settable weights.");return[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,t){return new e(t.learningRate)},t}(ph),wh=function(e){function t(t,n,r){void 0===r&&(r=!1);var a=e.call(this,t)||this;return a.learningRate=t,a.momentum=n,a.useNesterov=r,a.accumulations=[],a.m=ts(a.momentum),a}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"Momentum"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ua.registeredVariables[n];null==t.accumulations[r]&&(t.accumulations[r]={originalName:"".concat(n,"/momentum"),variable:mo((function(){return Gi(a).variable(!1)}))});var o=t.accumulations[r].variable,i=Array.isArray(e)?e[r].tensor:e[n];null!=i&&mo((function(){var e,n=bo(xo(t.m,o),i);e=t.useNesterov?bo(xo(t.c,bo(i,xo(n,t.m))),a):bo(xo(t.c,n),a),o.assign(n),a.assign(e)}))})),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),null!=this.accumulations&&vo(this.accumulations.map((function(e){return e.variable})))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){return a(this,(function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){return a(this,(function(t){switch(t.label){case 0:return[4,this.extractIterations(e)];case 1:return e=t.sent(),this.accumulations=e.map((function(e){return{originalName:e.name,variable:e.tensor.variable(!1)}})),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)},t}(bh),kh=function(e){function t(t,n,r,a,o){void 0===n&&(n=.9),void 0===r&&(r=0),void 0===a&&(a=null),void 0===o&&(o=!1);var i=e.call(this)||this;if(i.learningRate=t,i.decay=n,i.momentum=r,i.epsilon=a,i.accumulatedMeanSquares=[],i.accumulatedMoments=[],i.accumulatedMeanGrads=[],i.centered=o,null==a&&(i.epsilon=ua.backend.epsilon()),null==t)throw new Error("learningRate for RMSPropOptimizer must be defined.");return i}return n(t,e),Object.defineProperty(t,"className",{get:function(){return"RMSProp"},enumerable:!1,configurable:!0}),t.prototype.applyGradients=function(e){var t=this;(Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e)).forEach((function(n,r){var a=ua.registeredVariables[n],o=!1;null==t.accumulatedMeanSquares[r]&&(t.accumulatedMeanSquares[r]={originalName:"".concat(n,"/rms"),variable:mo((function(){return Gi(a).variable(o)}))}),null==t.accumulatedMoments[r]&&(t.accumulatedMoments[r]={originalName:"".concat(n,"/momentum"),variable:mo((function(){return Gi(a).variable(o)}))}),null==t.accumulatedMeanGrads[r]&&t.centered&&(t.accumulatedMeanGrads[r]={originalName:"".concat(n,"/mg"),variable:mo((function(){return Gi(a).variable(o)}))});var i=Array.isArray(e)?e[r].tensor:e[n];if(null!=i){var s=t.accumulatedMeanSquares[r].variable,u=t.accumulatedMoments[r].variable;mo((function(){var e=bo(xo(s,t.decay),xo(rs(i),1-t.decay));if(t.centered){var n=t.accumulatedMeanGrads[r].variable,o=bo(xo(n,t.decay),xo(i,1-t.decay)),c=ko(xo(i,t.learningRate),ns(Bs(e,bo(rs(o),t.epsilon)))),l=bo(xo(u,t.momentum),c);s.assign(e),n.assign(o),u.assign(l);var h=Bs(a,l);a.assign(h)}else{var f=bo(xo(s,t.decay),xo(rs(i),1-t.decay));l=bo(xo(u,t.momentum),ko(xo(i,t.learningRate),ns(bo(f,t.epsilon)))),s.assign(f),u.assign(l),h=Bs(a,l),a.assign(h)}}))}})),this.incrementIterations()},t.prototype.dispose=function(){null!=this.accumulatedMeanSquares&&vo(this.accumulatedMeanSquares.map((function(e){return e.variable}))),null!=this.accumulatedMeanGrads&&this.centered&&vo(this.accumulatedMeanGrads.map((function(e){return e.variable}))),null!=this.accumulatedMoments&&vo(this.accumulatedMoments.map((function(e){return e.variable})))},t.prototype.getWeights=function(){return r(this,void 0,void 0,(function(){var e;return a(this,(function(t){switch(t.label){case 0:return e=s(s([],i(this.accumulatedMeanSquares),!1),i(this.accumulatedMoments),!1),this.centered&&e.push.apply(e,s([],i(this.accumulatedMeanGrads),!1)),[4,this.saveIterations()];case 1:return[2,[t.sent()].concat(e.map((function(e){return{name:e.originalName,tensor:e.variable}})))]}}))}))},t.prototype.setWeights=function(e){return r(this,void 0,void 0,(function(){var t,n;return a(this,(function(r){switch(r.label){case 0:return[4,this.extractIterations(e)];case 1:return e=r.sent(),t=this.centered?e.length/3:e.length/2,n=!1,this.accumulatedMeanSquares=e.slice(0,t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}})),this.accumulatedMoments=e.slice(t,2*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}})),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((function(e){return{originalName:e.name,variable:e.tensor.variable(n)}}))),[2]}}))}))},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)},t}(ph),xh=[gh,mh,vh,yh,wh,kh,bh];function Eh(e){return new Promise((function(e){return setTimeout(e)})).then(e)}var Sh=function(){function e(t){if(!H().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");t.startsWith(e.URL_SCHEME)&&(t=t.slice(e.URL_SCHEME.length)),null!=t&&0!==t.length||(t="model"),this.modelJsonFileName=t+".json",this.weightDataFileName=t+".weights.bin"}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i,s,u;return a(this,(function(a){switch(a.label){case 0:if("undefined"==typeof document)throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(t=Sa.join(e.weightData),n=window.URL.createObjectURL(new Blob([t],{type:"application/octet-stream"})),!(e.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return r=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],o=Ta(e,r),i=window.URL.createObjectURL(new Blob([JSON.stringify(o)],{type:"application/json"})),(s=null==this.modelJsonAnchor?document.createElement("a"):this.modelJsonAnchor).download=this.modelJsonFileName,s.href=i,[4,Eh((function(){return s.dispatchEvent(new MouseEvent("click"))}))];case 2:return a.sent(),null==e.weightData?[3,4]:((u=null==this.weightDataAnchor?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,u.href=n,[4,Eh((function(){return u.dispatchEvent(new MouseEvent("click"))}))]);case 3:a.sent(),a.label=4;case 4:return[2,{modelArtifactsInfo:Ba(e)}]}}))}))},e}();Sh.URL_SCHEME="downloads://";var Ah=function(){function e(e){if(null==e||e.length<1)throw new Error("When calling browserFiles, at least 1 file is required, "+"but received ".concat(e));this.jsonFile=e[0],this.weightsFiles=e.slice(1)}return e.prototype.load=function(){return r(this,void 0,void 0,(function(){var e=this;return a(this,(function(t){return[2,new Promise((function(t,n){var r=new FileReader;r.onload=function(r){var a=JSON.parse(r.target.result),o=a.modelTopology;if(null!=o)if(null!=a.weightsManifest)if(0!==e.weightsFiles.length){var i=Ra(a,(function(t){return e.loadWeights(t)}));t(i)}else t({modelTopology:o});else n(new Error("weightManifest field is missing from file ".concat(e.jsonFile.name)));else n(new Error("modelTopology field is missing from file ".concat(e.jsonFile.name)))},r.onerror=function(t){return n("Failed to read model topology and weights manifest JSON "+"from file '".concat(e.jsonFile.name,"'. BrowserFiles supports loading ")+"Keras-style tf.Model artifacts only.")},r.readAsText(e.jsonFile)}))]}))}))},e.prototype.loadWeights=function(e){var t,n,r=this,a=[],u=[];try{for(var c=o(e),l=c.next();!l.done;l=c.next()){var h=l.value;a.push.apply(a,s([],i(h.weights),!1)),u.push.apply(u,s([],i(h.paths),!1))}}catch(e){t={error:e}}finally{try{l&&!l.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}var f=this.checkManifestAndWeightFiles(e),d=u.map((function(e){return r.loadWeightsFile(e,f[e])}));return Promise.all(d).then((function(e){return[a,e]}))},e.prototype.loadWeightsFile=function(e,t){return new Promise((function(n,r){var a=new FileReader;a.onload=function(e){var t=e.target.result;n(t)},a.onerror=function(t){return r("Failed to weights data from file of path '".concat(e,"'."))},a.readAsArrayBuffer(t)}))},e.prototype.checkManifestAndWeightFiles=function(e){var t,n,r=this,a=[],i=this.weightsFiles.map((function(e){return Ma(e.name)})),s={};try{for(var u=o(e),c=u.next();!c.done;c=u.next())c.value.paths.forEach((function(e){var t=Ma(e);if(-1!==a.indexOf(t))throw new Error("Duplicate file basename found in weights manifest: "+"'".concat(t,"'"));if(a.push(t),-1===i.indexOf(t))throw new Error("Weight file with basename '".concat(t,"' is not provided."));s[e]=r.weightsFiles[i.indexOf(t)]}))}catch(e){t={error:e}}finally{try{c&&!c.done&&(n=u.return)&&n.call(u)}finally{if(t)throw t.error}}if(a.length!==this.weightsFiles.length)throw new Error("Mismatch in the number of files in weights manifest "+"(".concat(a.length,") and the number of weight files provided ")+"(".concat(this.weightsFiles.length,")."));return s},e}();function _h(e,t,n,r){!function(e){p(null!=e&&Array.isArray(e)&&e.length>0,(function(){return"promises must be a none empty array"}))}(e),function(e,t){p(e>=0&&e<=1,(function(){return"Progress fraction must be in range [0, 1], but "+"got startFraction ".concat(e)})),p(t>=0&&t<=1,(function(){return"Progress fraction must be in range [0, 1], but "+"got endFraction ".concat(t)})),p(t>=e,(function(){return"startFraction must be no more than endFraction, but "+"got startFraction ".concat(e," and endFraction ")+"".concat(t)}))}(n=null==n?0:n,r=null==r?1:r);var a=0;return Promise.all(e.map((function(o){return o.then((function(o){var i=n+ ++a/e.length*(r-n);return t(i),o})),o})))}function Ih(e,t){return r(this,void 0,void 0,(function(){var n,r,o,i,s,u,c,l,h;return a(this,(function(a){switch(a.label){case 0:return null==t&&(t={}),n=null==t.fetchFunc?H().platform.fetch:t.fetchFunc,r=e.map((function(e){return n(e,t.requestInit,{isBinary:!0})})),o=0,i=.5,null!=t.onProgress?[3,2]:[4,Promise.all(r)];case 1:return s=a.sent(),[3,4];case 2:return[4,_h(r,t.onProgress,o,i)];case 3:s=a.sent(),a.label=4;case 4:return u=s.map((function(e){return e.arrayBuffer()})),c=.5,l=1,null!=t.onProgress?[3,6]:[4,Promise.all(u)];case 5:return h=a.sent(),[3,8];case 6:return[4,_h(u,t.onProgress,c,l)];case 7:h=a.sent(),a.label=8;case 8:return[2,h]}}))}))}function Nh(e){var t=this;return function(n,o,i){return void 0===o&&(o=""),r(t,void 0,void 0,(function(){var t,r,s,u,c,l,h,f,d,p;return a(this,(function(a){switch(a.label){case 0:if(t=n.map((function(){return!1})),r={},s=null!=i?i.map((function(){return!1})):[],u=[],n.forEach((function(e,n){var a=0;e.weights.forEach((function(e){var o="quantization"in e?e.quantization.dtype:e.dtype,c=Ea[o]*v(e.shape),l=function(){t[n]=!0,null==r[n]&&(r[n]=[]),r[n].push({manifestEntry:e,groupOffset:a,sizeBytes:c})};null!=i?i.forEach((function(t,n){t===e.name&&(l(),s[n]=!0)})):l(),u.push(e.name),a+=c}))})),!s.every((function(e){return e})))throw c=i.filter((function(e,t){return!s[t]})),new Error("Could not find weights in manifest with names: "+"".concat(c.join(", "),". \n")+"Manifest JSON has weights with names: "+"".concat(u.join(", "),"."));return l=t.reduce((function(e,t,n){return t&&e.push(n),e}),[]),h=[],l.forEach((function(e){n[e].paths.forEach((function(e){var t=o+(o.endsWith("/")?"":"/")+e;h.push(t)}))})),[4,e(h)];case 1:return f=a.sent(),d={},p=0,l.forEach((function(e){var t=n[e].paths.length,a=new Sa(f.slice(p,p+t));r[e].forEach((function(e){var t=Aa(a.slice(e.groupOffset,e.groupOffset+e.sizeBytes),[e.manifestEntry]);for(var n in t)d[n]=t[n]})),p+=t})),[2,d]}}))}))}}Pa.registerSaveRouter((function(e){return H().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(Sh.URL_SCHEME)?function(e){return void 0===e&&(e="model"),new Sh(e)}(e.slice(Sh.URL_SCHEME.length)):null}));var Mh=function(){function e(e,t){if(this.DEFAULT_METHOD="POST",null==t&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,null!=t.fetchFunc?(p("function"==typeof t.fetchFunc,(function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"})),this.fetch=t.fetchFunc):this.fetch=H().platform.fetch,p(null!=e&&e.length>0,(function(){return"URL path for http must not be null, undefined or empty."})),Array.isArray(e)&&p(2===e.length,(function(){return"URL paths for http must have a length of 2, "+"(actual length is ".concat(e.length,").")})),this.path=e,null!=t.requestInit&&null!=t.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}return e.prototype.save=function(e){return r(this,void 0,void 0,(function(){var t,n,r,o,i;return a(this,(function(a){switch(a.label){case 0:if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r=Ta(e,n),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:"application/json"}),"model.json"),null!=e.weightData&&(o=Sa.join(e.weightData),t.body.append("model.weights.bin",new Blob([o],{type:"application/octet-stream"}),"model.weights.bin")),[4,this.fetch(this.path,t)];case 1:if((i=a.sent()).ok)return[2,{modelArtifactsInfo:Ba(e),responses:[i]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+"".concat(i.status,"."))}}))}))},e.prototype.load=function(){return r(this,void 0,void 0,(function(){var e,t,n,r,o,i=this;return a(this,(function(a){switch(a.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(e=a.sent()).ok)throw new Error("Request to ".concat(this.path," failed with status code ")+"".concat(e.status,". Please verify this URL points to ")+"the model JSON of the model to load.");a.label=2;case 2:return a.trys.push([2,4,,5]),[4,e.json()];case 3:return t=a.sent(),[3,5];case 4:throw a.sent(),n="Failed to parse model JSON of response from ".concat(this.path,"."),this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(r=t.modelTopology,o=t.weightsManifest,null==r&&null==o)throw new Error("The JSON from HTTP path ".concat(this.path," contains neither model ")+"topology or manifest for weights.");return[2,Ra(t,(function(e){return i.loadWeights(e)}))]}}))}))},e.prototype.loadWeights=function(e){return r(this,void 0,void 0,(function(){var t,n,r,u,c,l,h,f,d,p,g,m,v,y,b,w,k,x,E,S,A,_,I;return a(this,(function(a){switch(a.label){case 0:t=Array.isArray(this.path)?this.path[1]:this.path,n=i(function(e){var t=e.lastIndexOf("/"),n=e.lastIndexOf("?");return[e.substring(0,t)+"/",n>t?e.substring(n):""]}(t),2),r=n[0],u=n[1],c=this.weightPathPrefix||r,l=Fa(e),h=[],f=[];try{for(d=o(e),p=d.next();!p.done;p=d.next()){g=p.value;try{for(_=void 0,m=o(g.paths),v=m.next();!v.done;v=m.next())y=v.value,null!=this.weightUrlConverter?f.push(this.weightUrlConverter(y)):h.push(c+y+u)}catch(e){_={error:e}}finally{try{v&&!v.done&&(I=m.return)&&I.call(m)}finally{if(_)throw _.error}}}}catch(e){S={error:e}}finally{try{p&&!p.done&&(A=d.return)&&A.call(d)}finally{if(S)throw S.error}}return this.weightUrlConverter?(w=(b=h.push).apply,k=[h],x=[[]],[4,Promise.all(f)]):[3,2];case 1:w.apply(b,k.concat([s.apply(void 0,x.concat([i.apply(void 0,[a.sent()]),!1]))])),a.label=2;case 2:return[4,Ih(h,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 3:return E=a.sent(),[2,[l,E]]}}))}))},e}();function Th(e){return null!=e.match(Mh.URL_SCHEME_REGEX)}Mh.URL_SCHEME_REGEX=/^https?:\/\//;var Dh=function(e,t){return("undefined"!=typeof fetch||null!=t&&null!=t.fetchFunc)&&(Array.isArray(e)?e.every((function(e){return Th(e)})):Th(e))?Rh(e,t):null};function Rh(e,t){return new Mh(e,t)}Pa.registerSaveRouter(Dh),Pa.registerLoadRouter(Dh);var Bh=function(){function e(e){this.modelArtifacts=e}return e.prototype.load=function(){return this.modelArtifacts},e}(),Fh=function(){function e(e){this.saveHandler=e}return e.prototype.save=function(e){return this.saveHandler(e)},e}(),Ch=function(e){e.load&&(this.load=function(){return Promise.resolve(e.load())}),e.save&&(this.save=function(t){return Promise.resolve(e.save(t))})};function Ph(e,t,n,r){return 1===arguments.length?null!=e.modelTopology||null!=e.weightSpecs?new Bh(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bh({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bh({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}var Oh,Lh={__proto__:null,CompositeArrayBuffer:Sa,browserFiles:function(e){return new Ah(e)},browserHTTPRequest:function(e,t){return Rh(e,t)},concatenateArrayBuffers:function(e){return Sa.join(e)},copyModel:function(e,t){return r(this,void 0,void 0,(function(){return a(this,(function(n){return[2,so(e,t,!1)]}))}))},decodeWeights:Aa,encodeWeights:function(e,t){return r(this,void 0,void 0,(function(){var n,o,i,s,u,c=this;return a(this,(function(l){switch(l.label){case 0:for(n=[],o=[],i=Array.isArray(e)?e.map((function(e){return e.name})):Object.keys(e),s=function(s){var u=i[s],l=Array.isArray(e)?e[s].tensor:e[u];if("float32"!==l.dtype&&"int32"!==l.dtype&&"bool"!==l.dtype&&"string"!==l.dtype&&"complex64"!==l.dtype)throw new Error("Unsupported dtype in weight '".concat(u,"': ").concat(l.dtype));var h={name:u,shape:l.shape,dtype:l.dtype};if("string"===l.dtype){var f=new Promise((function(e){return r(c,void 0,void 0,(function(){var t,n,r,o,i,s,u;return a(this,(function(a){switch(a.label){case 0:return[4,l.bytes()];case 1:for(t=a.sent(),n=t.reduce((function(e,t){return e+t.length}),0)+4*t.length,r=new Uint8Array(n),o=0,i=0;i0&&Number.isInteger(n),(function(){return"If provided, numClasses must be a positive integer, "+"but got ".concat(n)})),p(1===r.rank,(function(){return"Expected the rank of labels to be 1, but got ".concat(r.rank)})),p(1===a.rank,(function(){return"Expected the rank of predictions to be 1, "+"but got ".concat(a.rank)})),p(r.shape[0]===a.shape[0],(function(){return"Mismatch in the number of examples: "+"".concat(r.shape[0]," vs. ").concat(a.shape[0],". ")+"Labels and predictions should have the same number of elements."})),p(n>0&&Number.isInteger(n),(function(){return"numClasses is required to be a positive integer, but got "+"".concat(n)}));var o=nu(fo(r,"int32"),n),i=nu(fo(a,"int32"),n),s=Vc(o),u=$o(s,i);return fo(u,"int32")}})},Uh=!1;function Wh(e,t){if(void 0===t&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==e)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=!1,r=!1,a=!1,o=!1,s=!1,u=!1;if(e.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&e instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&e instanceof HTMLVideoElement)a=!0;else if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement)o=!0;else if(null!=e.getContext)s=!0;else{if(!("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap))throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, "+"but was ".concat(e.constructor.name));u=!0}if(null!=Bn(An,ua.backendName)){var c={pixels:e},l={numChannels:t};return ua.runKernel(An,c,l)}var h,f,d=i(a?[e.videoWidth,e.videoHeight]:[e.width,e.height],2),p=d[0],g=d[1];if(s)h=e.getContext("2d").getImageData(0,0,p,g).data;else if(r||n)h=e.data;else if(o||a||u){if(null==Oh)if("undefined"==typeof document){if("undefined"==typeof OffscreenCanvas||"undefined"==typeof OffscreenCanvasRenderingContext2D)throw new Error("Cannot parse input in current context. Reason: OffscreenCanvas Context2D rendering is not supported.");Oh=new OffscreenCanvas(1,1).getContext("2d")}else Oh=document.createElement("canvas").getContext("2d",{willReadFrequently:!0});Oh.canvas.width=p,Oh.canvas.height=g,Oh.drawImage(e,0,0,p,g),h=Oh.getImageData(0,0,p,g).data}if(4===t)f=new Int32Array(h);else{var m=p*g;f=new Int32Array(m*t);for(var v=0;v4||2===t)throw new Error("toPixels only supports depth of size "+"1, 3 or 4 but got ".concat(t));if("float32"!==e.dtype&&"int32"!==e.dtype)throw new Error("Unsupported type for toPixels: ".concat(e.dtype,".")+" Please use float32 or int32 tensors.")}var Kh={__proto__:null,draw:function(e,t,n){var r=ma(e,"img","draw");if(!(e instanceof Ur)){var a=r;r=fo(a,"int32"),a.dispose()}Gh(r),function(e){var t=(null==e?void 0:e.alpha)||1;if(t>1||t<0)throw new Error("Alpha value ".concat(t," is suppoed to be in range [0 - 1]."))}(null==n?void 0:n.imageOptions);var o={image:r},i={canvas:t,options:n};ua.runKernel(Ce,o,i)},fromPixels:ba({fromPixels_:Wh}),fromPixelsAsync:function(e,t){return void 0===t&&(t=3),r(this,void 0,void 0,(function(){var n,r;return a(this,(function(a){switch(a.label){case 0:if(n=null,!H().getBool("WRAP_TO_IMAGEBITMAP")||!function(e){return"undefined"!=typeof window&&"undefined"!=typeof ImageBitmap&&window.hasOwnProperty("createImageBitmap")&&!(e instanceof ImageBitmap)&&function(e){return null!=e&&0!==e.width&&0!==e.height}(e)&&!function(e){return null!=e&&e.data instanceof Uint8Array}(e)}(e))return[3,5];r=void 0,a.label=1;case 1:return a.trys.push([1,3,,4]),[4,createImageBitmap(e,{premultiplyAlpha:"none"})];case 2:return r=a.sent(),[3,4];case 3:return a.sent(),r=null,[3,4];case 4:return n=null!=r&&r.width===e.width&&r.height===e.height?r:e,[3,6];case 5:n=e,a.label=6;case 6:return[2,Wh(n,t)]}}))}))},toPixels:function(e,t){return r(this,void 0,void 0,(function(){var n,r,o,s,u,c,l,h,f,d,p,g,m,v,y,b;return a(this,(function(a){switch(a.label){case 0:return n=ma(e,"img","toPixels"),e instanceof Ur||(n=fo(r=n,"int32"),r.dispose()),Gh(n),o=i(n.shape.slice(0,2),2),s=o[0],u=o[1],c=2===n.rank?1:n.shape[2],[4,n.data()];case 1:for(l=a.sent(),h="float32"===n.dtype?255:1,f=new Uint8ClampedArray(u*s*4),d=0;d1)throw new Error("Tensor values for a float32 Tensor must be in the "+"range [0 - 1] but encountered ".concat(m,"."))}else if("int32"===n.dtype&&(m<0||m>255))throw new Error("Tensor values for a int32 Tensor must be in the "+"range [0 - 255] but encountered ".concat(m,"."));1===c?(p[0]=m*h,p[1]=m*h,p[2]=m*h):p[g]=m*h}f[0+(v=4*d)]=Math.round(p[0]),f[v+1]=Math.round(p[1]),f[v+2]=Math.round(p[2]),f[v+3]=Math.round(p[3])}return null!=t&&(Uh||null!=Bn(Ce,ua.backendName)&&(console.warn("tf.browser.toPixels is not efficient to draw tensor on canvas. Please try tf.browser.draw instead."),Uh=!0),t.width=u,t.height=s,y=t.getContext("2d"),b=new ImageData(f,u,s),y.putImageData(b,0,0)),n!==e&&n.dispose(),[2,f]}}))}))}};function qh(e,t){var n=e.shape.length,r=t.shape.length;if(n<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher,"+" but the rank was ".concat(n,"."));if(r<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher,"+" but the rank was ".concat(r,"."));if("int32"!==t.dtype)throw new Error("tf.gatherND() expects the indices to be int32 type,"+" but the dtype was ".concat(t.dtype,"."));if(t.shape[r-1]>n)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+"".concat(t.shape[r-1]," vs. ").concat(n));if(0===v(e.shape))throw new Error("Requested more than 0 entries, but input is empty."+" Input shape: ".concat(e.shape,"."));for(var a=t.shape,o=a[a.length-1],u=1,c=0;c-1)o[c]=0;else{var l=jh(t,n,c),h=r[l];e&1<-1)o[c]=Number.MAX_SAFE_INTEGER;else{var l=jh(t,n,c),h=r[l];e&1<0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var u=r[a];return i<0&&(i+=u),f(0,i,u-1)}function $h(e,t,n,r,a,o){var i=t[a],s=n[a]||1;(e&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var u=r[a];return i<0&&(i+=u),s>0?f(0,i,u):f(-1,i,u-1)}function ef(e,t,n,r,a,o){if(a[t])return n>0?o[t]:o[t+1&1];var i=e<0?r+e:e;return io[1]?o[1]:i}var tf,nf={__proto__:null,assertParamsValid:function(e,t,n){var r=e.shape.length;p(r===t.length,(function(){return"Error in slice".concat(r,"D: Length of begin ").concat(t," must ")+"match the rank of the array (".concat(r,").")})),p(r===n.length,(function(){return"Error in slice".concat(r,"D: Length of size ").concat(n," must ")+"match the rank of the array (".concat(r,").")}));for(var a=function(a){p(t[a]+n[a]<=e.shape[a],(function(){return"Error in slice".concat(r,"D: begin[").concat(a,"] + size[").concat(a,"] ")+"(".concat(t[a]+n[a],") would overflow input.shape[").concat(a,"] (").concat(e.shape[a],")")}))},o=0;o0?e[e.length-1]:1,r=0;r0){var d=t[0],p=n+1;l=Jh(i,d,p,r,e),h=Yh(s,d,p,a,e),f=Hh(o,d,p,e)}else for(var g=0;g1){r=a;break}for(a=r+1;a0||n[a]!==e[a])return!1;return!0},maskToAxes:function(e){for(var t=[],n=0;e>0;)1&e&&t.push(n),e/=2,n++;return t},parseSliceParams:function(e,t,n){var r,a,o=e.shape.length;return(r="number"==typeof t?s([t],i(new Array(o-1).fill(0)),!1):t.length=0?t:(p(-1===t,(function(){return"Negative size values should be exactly -1 but got "+"".concat(t," for the slice() size at index ").concat(n,".")})),e.shape[n]-r[n])})),[r,a]},sliceInfo:function(e,t,n,r,a,o,i,s,u){var c;if(null==r?(c=new Array(t.length)).fill(1):c=r,null!=i&&0!=(i&i-1))throw new Error("Multiple ellipses in slice is not allowed.");for(var l=!1,h={dims:c.length,numAddAxisAfterEllipsis:0,begin:t.slice(),end:n.slice(),strides:c.slice(),beginMask:a,endMask:o,ellipsisMask:i,newAxisMask:s,shrinkAxisMask:u},f=0;f0?0:-1,d.strides[f]>0?w:w-1];if(b&&d.strides[f]<=0)throw Error("only stride 1 allowed on non-range indexing.");m=m&&1===d.strides[f];var E=!!(d.beginMask&1<=w)throw Error("slice index ".concat(d.begin[f]," of dimension ").concat(f," out of bounds."))}else d.begin[f]=ef(d.begin[f],0,d.strides[f],w,k,x),d.end[f]=ef(d.end[f],1,d.strides[f],w,k,x);var A=1===d.strides[f]&&0===d.begin[f]&&d.end[f]===w;p=p&&A,g=g&&(0===f&&1===d.strides[f]||A)}else p=p&&1===d.strides[f]&&E,g=g&&(0===f&&1===d.strides[f]||E);var _,I=void 0,N=!1;if(d.beginValid&&d.endValid?(I=d.end[f]-d.begin[f],N=!0):b?(I=1,N=!0):E&&w>=0&&(I=d.strides[f]<0?-w:w,N=!0),N)_=0===I||I<0!=d.strides[f]<0?0:Math.trunc(I/d.strides[f])+(I%d.strides[f]!=0?1:0),v.push(_);else v.push(-1)}else v.push(b?1:-1)}for(var M=0;M=0?y.push(v[T]):-2===T&&y.push(1)}var D=y.filter((function(e,t){return-2!==d.finalShapeGatherIndices[t]}));return{finalShapeSparse:D,finalShape:y,isIdentity:p,sliceDim0:g,isSimpleSlice:m,begin:d.begin,end:d.end,strides:d.strides}},startForAxis:Qh,startIndicesWithElidedDims:Jh,stopForAxis:$h,stopIndicesWithElidedDims:Yh,stridesForAxis:Xh,stridesWithElidedDims:Hh},rf=function(){function e(){}return e.sgd=function(e){return new bh(e)},e.momentum=function(e,t,n){return void 0===n&&(n=!1),new wh(e,t,n)},e.rmsprop=function(e,t,n,r,a){return void 0===t&&(t=.9),void 0===n&&(n=0),void 0===r&&(r=null),void 0===a&&(a=!1),new kh(e,t,n,r,a)},e.adam=function(e,t,n,r){return void 0===e&&(e=.001),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),new vh(e,t,n,r)},e.adadelta=function(e,t,n){return void 0===e&&(e=.001),void 0===t&&(t=.95),void 0===n&&(n=null),new gh(e,t,n)},e.adamax=function(e,t,n,r,a){return void 0===e&&(e=.002),void 0===t&&(t=.9),void 0===n&&(n=.999),void 0===r&&(r=null),void 0===a&&(a=0),new yh(e,t,n,r,a)},e.adagrad=function(e,t){return void 0===t&&(t=.1),new mh(e,t)},e}(),af=rf,of="undefined"!=typeof requestAnimationFrame?requestAnimationFrame:"undefined"!=typeof setImmediate?setImmediate:function(e){return e()};!function(e){e[e.FIRST_DIM_SIZE=0]="FIRST_DIM_SIZE",e[e.VALUE_ROWIDS=1]="VALUE_ROWIDS",e[e.ROW_LENGTHS=2]="ROW_LENGTHS",e[e.ROW_SPLITS=3]="ROW_SPLITS",e[e.ROW_LIMITS=4]="ROW_LIMITS",e[e.ROW_STARTS=5]="ROW_STARTS"}(tf||(tf={}));var sf=/->/g;function uf(e,t){for(var n=[],r=0;r=0&&t1)throw new Error('Equation must contain exactly one arrow ("'.concat("->",'").'));var r=i(e.split("->"),2),a=r[0],o=r[1];p(-1===a.indexOf("..."),(function(){return'The ellipsis notation ("'.concat("...",'") is not supported yet.')}));var s=a.split(","),u=s.length;if(t!==u)throw new Error("Expected ".concat(u," input tensors, received ").concat(t));if(u>2)throw new Error("Support for more than 2 input tensors is not implemented yet.");for(var c=[],l=function(e){var t=o[e];if(!s.some((function(e){return-1!==e.indexOf(t)})))throw new Error("Output subscripts contain the label ".concat(t," ")+"not present in the input subscripts.");-1===c.indexOf(t)&&c.push(t)},h=0;h=2*t+1||a%2==1?u.push(a):o.push(a);r.push.apply(r,s([],i(o),!1)),r.push(0),r.push.apply(r,s([],i(u),!1))}return r},getRaggedRank:function(e){return 0===e.length?0:e[0]===tf.FIRST_DIM_SIZE?e.length-1:e.length},getReductionAxes:Oi,getReshaped:function(e,t,n,r){void 0===r&&(r=!0);var a=[];if(r)(a=a.concat(t.slice(0))).push(e[0]/n),a=a.concat(e.slice(1));else{a=a.concat(e[0]);for(var o=t.length,i=0;i= ").concat(n)},getSparseReshapeEmptyTensorZeroOutputDimErrorMessage:function(){return"reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero"},getSparseReshapeInputOutputMismatchErrorMessage:function(e,t){var n=v(e),r=v(t);return"Input to reshape is a tensor with ".concat(n," dense values, but the requested shape has ").concat(r,". inputShape=").concat(e," outputShape=").concat(t)},getSparseReshapeInputOutputMultipleErrorMessage:function(e,t){var n=v(e),r=v(t);return"Input to reshape is a SparseTensor with ".concat(n,"\n dense values, but the requested shape requires a multiple of ").concat(r,". inputShape=").concat(e," outputShape= ").concat(t)},getSparseReshapeMultipleNegativeOneOutputDimErrorMessage:function(e,t){return"only one output dimension may be -1, not both ".concat(e," and ").concat(t)},getSparseReshapeNegativeOutputDimErrorMessage:function(e,t){return"size ".concat(e," must be non-negative, not ").concat(t)},getSparseSegmentReductionIndicesOutOfRangeErrorMessage:function(e,t,n){return"Bad: indices[".concat(e,"] == ").concat(t," out of range [0, ").concat(n,")")},getSparseSegmentReductionNegativeSegmentIdsErrorMessage:function(){return"segment ids must be >= 0"},getSparseSegmentReductionNonIncreasingSegmentIdsErrorMessage:function(){return"segment ids are not increasing"},getSparseSegmentReductionSegmentIdOutOfRangeErrorMessage:function(e,t){return"Segment id ".concat(e," out of range [0, ").concat(t,"), possibly because segmentIds input is not sorted.")},getUndoAxesPermutation:function(e){return e.map((function(e,t){return[t,e]})).sort((function(e,t){return e[1]-t[1]})).map((function(e){return e[0]}))},isIdentityPermutation:function(e){return e.every((function(e,t){return e===t}))},log:function(){for(var e=[],t=0;t0?e+t:e}));t[a]=e.shape[n]-o}p(e.shape[n]===t.reduce((function(e,t){return e+t})),(function(){return"The sum of sizes must match the size of the axis dimension."})),r=t}return r},segment_util:{__proto__:null,collectGatherOpShapeInfo:function(e,t,n,r){var a=t.shape.length,o=e.shape.length;if(0!==r&&(r<-a||r>a))throw new Error("Expect batchDims in the range of [-".concat(a,", ").concat(a,"], but got ").concat(r));if(r<0&&(r+=a),r>o)throw new Error("batchDims (".concat(r,") must be less than rank(x) (\n ").concat(o,")."));if(nt||n===e?r=!0:n=C(e,n+1);return n}},shouldFuse:rl,slice_util:nf,splitRealAndImagArrays:function(e){for(var t=new Float32Array(e.length/2),n=new Float32Array(e.length/2),r=0;r=r)throw new Error("defaultValue.shape=".concat(e," and ragged tensor flatValues.shape=").concat(t,", are incompatible: defaultValue.rank = ").concat(n," must be less than ragged tensor input flatValues.rank = ").concat(r,")"));for(var a=0;a=0&&i>=0&&1!==o&&o!==i)throw new Error("defaultValue.shape=".concat(e,", and ragged tensor input flatValues.shape=").concat(t," are incompatible: defaultValue.shape[").concat(a-e.length,"] = ").concat(o," but ragged tensor input.flatValues.shape[").concat(a-e.length,"] = ").concat(i))}}},validateInput:Fc,validateUpdateShape:Bc,warn:Tn},lf={__proto__:null,nonMaxSuppressionV3Impl:El,nonMaxSuppressionV4Impl:Sl,nonMaxSuppressionV5Impl:Al,whereImpl:Kc};!function(){var e,t;try{for(var n=o(xh),r=n.next();!r.done;r=n.next())fh(r.value)}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}}(),e.Abs="Abs",e.Acos=J,e.Acosh=Y,e.AdadeltaOptimizer=gh,e.AdagradOptimizer=mh,e.AdamOptimizer=vh,e.AdamaxOptimizer=yh,e.Add=X,e.AddN=Q,e.All="All",e.Any="Any",e.ArgMax=$,e.ArgMin=ee,e.Asin=te,e.Asinh=ne,e.Atan=re,e.Atan2=oe,e.Atanh=ae,e.AvgPool=ie,e.AvgPool3D=se,e.AvgPool3DGrad="AvgPool3DGrad",e.AvgPoolGrad="AvgPoolGrad",e.BatchMatMul=ue,e.BatchToSpaceND=ce,e.Bincount=le,e.BitwiseAnd=he,e.BroadcastArgs=fe,e.BroadcastTo="BroadcastTo",e.Cast=de,e.Ceil=pe,e.ClipByValue=ge,e.Complex=me,e.ComplexAbs=ve,e.Concat=ye,e.Conv2D=be,e.Conv2DBackpropFilter=we,e.Conv2DBackpropInput=ke,e.Conv3D=xe,e.Conv3DBackpropFilterV2="Conv3DBackpropFilterV2",e.Conv3DBackpropInputV2=Ee,e.Cos="Cos",e.Cosh=Se,e.CropAndResize=Ie,e.Cumprod=Ae,e.Cumsum=_e,e.DataStorage=u,e.DenseBincount=Ne,e.DepthToSpace=Me,e.DepthwiseConv2dNative=Te,e.DepthwiseConv2dNativeBackpropFilter=De,e.DepthwiseConv2dNativeBackpropInput=Re,e.Diag=Be,e.Dilation2D=Fe,e.Dilation2DBackpropFilter="Dilation2DBackpropFilter",e.Dilation2DBackpropInput="Dilation2DBackpropInput",e.Draw=Ce,e.Einsum=Oe,e.Elu="Elu",e.EluGrad="EluGrad",e.Environment=q,e.Equal=Le,e.Erf="Erf",e.Exp="Exp",e.ExpandDims=ze,e.Expm1=Ue,e.FFT="FFT",e.Fill=We,e.FlipLeftRight=Ge,e.Floor=Ke,e.FloorDiv=qe,e.FromPixels=An,e.FusedBatchNorm=Ve,e.FusedConv2D=Nn,e.FusedDepthwiseConv2D=Mn,e.GatherNd=je,e.GatherV2=He,e.Greater=Ze,e.GreaterEqual=Je,e.IFFT=Xe,e.Identity=Ye,e.Imag=Qe,e.IsFinite=$e,e.IsInf=et,e.IsNan=tt,e.KernelBackend=c,e.LRN="LRN",e.LRNGrad="LRNGrad",e.LeakyRelu=nt,e.Less=rt,e.LessEqual=at,e.LinSpace=ot,e.Log="Log",e.Log1p=it,e.LogSoftmax="LogSoftmax",e.LogicalAnd=st,e.LogicalNot=ut,e.LogicalOr=ct,e.LogicalXor="LogicalXor",e.LowerBound="LowerBound",e.MatrixBandPart="MatrixBandPart",e.Max="Max",e.MaxPool=ht,e.MaxPool3D=ft,e.MaxPool3DGrad="MaxPool3DGrad",e.MaxPoolGrad="MaxPoolGrad",e.MaxPoolWithArgmax=dt,e.Maximum=lt,e.Mean=pt,e.Min="Min",e.Minimum=gt,e.MirrorPad=mt,e.Mod="Mod",e.MomentumOptimizer=wh,e.Multinomial=vt,e.Multiply=yt,e.Neg="Neg",e.NonMaxSuppressionV3=wt,e.NonMaxSuppressionV4=kt,e.NonMaxSuppressionV5=xt,e.NotEqual=bt,e.OP_SCOPE_SUFFIX=ya,e.OneHot=St,e.OnesLike=Et,e.Optimizer=ph,e.OptimizerConstructors=rf,e.Pack=At,e.PadV2=_t,e.Pool="Pool",e.Pow="Pow",e.Prelu=It,e.Prod=Nt,e.RMSPropOptimizer=kh,e.RaggedGather=Mt,e.RaggedRange=Tt,e.RaggedTensorToTensor=Dt,e.Range=Rt,e.Real=Bt,e.RealDiv=Pe,e.Reciprocal=Ft,e.Relu=Ct,e.Relu6=zt,e.Reshape=Pt,e.ResizeBilinear=Lt,e.ResizeBilinearGrad="ResizeBilinearGrad",e.ResizeNearestNeighbor=Ot,e.ResizeNearestNeighborGrad="ResizeNearestNeighborGrad",e.Reverse=Ut,e.RotateWithOffset=_n,e.Round=Wt,e.Rsqrt=Gt,e.SGDOptimizer=bh,e.ScatterNd=Kt,e.SearchSorted=Vt,e.Select=Ht,e.Selu=jt,e.Sigmoid=Xt,e.Sign=Yt,e.Sin="Sin",e.Sinh=Jt,e.Slice=Zt,e.Softmax=nn,e.Softplus=Qt,e.SpaceToBatchND=en,e.SparseFillEmptyRows=rn,e.SparseReshape=an,e.SparseSegmentMean=on,e.SparseSegmentSum=sn,e.SparseToDense=un,e.SplitV=tn,e.Sqrt=$t,e.Square="Square",e.SquaredDifference=cn,e.StaticRegexReplace=ln,e.Step=Sn,e.StridedSlice=hn,e.StringNGrams=fn,e.StringSplit=dn,e.StringToHashBucketFast=pn,e.Sub="Sub",e.Sum="Sum",e.Tan="Tan",e.Tanh=gn,e.Tensor=Ur,e.TensorBuffer=Or,e.TensorScatterUpdate=qt,e.Tile=mn,e.TopK=vn,e.Transform=yn,e.Transpose=bn,e.Unique=wn,e.Unpack=kn,e.UnsortedSegmentSum=xn,e.UpperBound="UpperBound",e.Variable=jr,e.ZerosLike=En,e._FusedMatMul=In,e.abs=Eo,e.acos=So,e.acosh=Ao,e.add=bo,e.addN=_o,e.all=Io,e.any=No,e.argMax=Mo,e.argMin=To,e.asin=Do,e.asinh=Ro,e.atan=Bo,e.atan2=Fo,e.atanh=Co,e.avgPool=Yo,e.avgPool3d=Xo,e.backend=function(){return ua.backend},e.backend_util=cf,e.basicLSTMCell=ri,e.batchNorm=oi,e.batchNorm2d=ii,e.batchNorm3d=si,e.batchNorm4d=ui,e.batchToSpaceND=ai,e.bincount=ci,e.bitwiseAnd=li,e.booleanMaskAsync=function(e,t,n){return r(this,void 0,void 0,(function(){var r,o,i,s,u,c,l,h,f,d,m,v,y;return a(this,(function(a){switch(a.label){case 0:for(r=ma(e,"tensor","boolMask"),o=ma(t,"mask","boolMask","bool"),i=null==n?0:n,s=o.rank,u=r.shape,p(s>0,(function(){return"mask cannot be scalar"})),g(u.slice(i,i+s),o.shape,"mask's shape must match the first K dimensions of tensor's shape,"),c=1,l=i;l1,(function(){return"inTopK() expects the predictions to be of rank 2 or higher, "+"but got ".concat(r.rank)})),p(r.rank-1===o.rank,(function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+"".concat(r.rank," and targets rank ").concat(o.rank)})),g(r.shape.slice(0,r.shape.length-1),o.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),s=r.shape[r.shape.length-1],p(n>0&&n<=s,(function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last "+"dimension (".concat(s,"), but got ").concat(n)})),[4,r.data()];case 1:return u=a.sent(),[4,o.data()];case 2:for(c=a.sent(),l=i([u.length/s,s],2),h=l[0],f=l[1],d=S("bool",h),m=0;m= 8" } }, + "node_modules/@tensorflow-models/hand-pose-detection": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tensorflow-models/hand-pose-detection/-/hand-pose-detection-2.0.1.tgz", + "integrity": "sha512-zRA+jz2qOq5FMcyqSFxaQyi6T4YNbMbQhd6SQMI791FQ8yYj23kLgYa73g2NssR5AmM/2ATu9Vcjnf7LUrVLOQ==", + "dependencies": { + "rimraf": "^3.0.2", + "tslib": "^2.6.1" + }, + "peerDependencies": { + "@mediapipe/hands": "~0.4.0", + "@tensorflow/tfjs-backend-webgl": "^4.9.0", + "@tensorflow/tfjs-converter": "^4.9.0", + "@tensorflow/tfjs-core": "^4.9.0" + } + }, + "node_modules/@tensorflow/tfjs-backend-cpu": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.17.0.tgz", + "integrity": "sha512-2VSCHnX9qhYTjw9HiVwTBSnRVlntKXeBlK7aSVsmZfHGwWE2faErTtO7bWmqNqw0U7gyznJbVAjlow/p+0RNGw==", + "dependencies": { + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.17.0" + } + }, + "node_modules/@tensorflow/tfjs-backend-webgl": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.17.0.tgz", + "integrity": "sha512-CC5GsGECCd7eYAUaKq0XJ48FjEZdgXZWPxgUYx4djvfUx5fQPp35hCSP9w/k463jllBMbjl2tKRg8u7Ia/LYzg==", + "dependencies": { + "@tensorflow/tfjs-backend-cpu": "4.17.0", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.17.0" + } + }, + "node_modules/@tensorflow/tfjs-converter": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.17.0.tgz", + "integrity": "sha512-qFxIjPfomCuTrYxsFjtKbi3QfdmTTCWo+RvqD64oCMS0sjp7sUDNhJyKDoLx6LZhXlwXpHIVDJctLMRMwet0Zw==", + "peerDependencies": { + "@tensorflow/tfjs-core": "4.17.0" + } + }, + "node_modules/@tensorflow/tfjs-core": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.17.0.tgz", + "integrity": "sha512-v9Q5430EnRpyhWNd9LVgXadciKvxLiq+sTrLKRowh26BHyAsams4tZIgX3lFKjB7b90p+FYifVMcqLTTHgjGpQ==", + "dependencies": { + "@types/long": "^4.0.1", + "@types/offscreencanvas": "~2019.7.0", + "@types/seedrandom": "^2.4.28", + "@webgpu/types": "0.1.38", + "long": "4.0.0", + "node-fetch": "~2.6.1", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + } + }, + "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==" + }, "node_modules/@types/body-parser": { "version": "1.19.2", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", @@ -254,6 +341,11 @@ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==" }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, "node_modules/@types/mime": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", @@ -265,6 +357,11 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" }, + "node_modules/@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -283,6 +380,11 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, + "node_modules/@types/seedrandom": { + "version": "2.4.34", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz", + "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==" + }, "node_modules/@types/serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", @@ -451,6 +553,11 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@webgpu/types": { + "version": "0.1.38", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.38.tgz", + "integrity": "sha512-7LrhVKz2PRh+DD7+S+PVaFd5HxaWQvoMqBbsV9fNJO1pjUs1P8bM2vQVNfk+3URTqbuTI7gkXi0rfsN0IadoBA==" + }, "node_modules/@webpack-cli/configtest": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.2.0.tgz", @@ -657,8 +764,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/batch": { "version": "0.6.1", @@ -738,7 +844,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -958,8 +1063,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", @@ -1674,8 +1778,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -1731,7 +1834,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2243,7 +2345,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -2502,6 +2603,11 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -2644,7 +2750,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -2720,6 +2825,25 @@ "tslib": "^2.0.3" } }, + "node_modules/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -2942,7 +3066,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3417,7 +3540,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -3498,6 +3620,11 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -4044,11 +4171,15 @@ "node": ">=0.6" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-is": { "version": "1.6.18", @@ -4191,6 +4322,11 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, "node_modules/webpack": { "version": "5.75.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", @@ -4521,6 +4657,15 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/experiments/ribbon02/package.json b/experiments/ribbon02/package.json index eb090863..c1c03b46 100644 --- a/experiments/ribbon02/package.json +++ b/experiments/ribbon02/package.json @@ -12,6 +12,11 @@ "shader": " node ./tasks/shader-watcher.js" }, "dependencies": { + "@mediapipe/hands": "^0.4.1675469240", + "@tensorflow-models/hand-pose-detection": "^2.0.1", + "@tensorflow/tfjs-backend-webgl": "^4.10.0", + "@tensorflow/tfjs-converter": "^4.10.0", + "@tensorflow/tfjs-core": "^4.10.0", "assets-loader": "github:madclem/assets-loader", "gl-matrix": "^3.4.3", "glslify-loader": "^2.0.0", diff --git a/experiments/ribbon02/public/index.html b/experiments/ribbon02/public/index.html index d6c68b22..11a1f6fb 100644 --- a/experiments/ribbon02/public/index.html +++ b/experiments/ribbon02/public/index.html @@ -40,5 +40,6 @@ + diff --git a/experiments/ribbon02/public/style.css b/experiments/ribbon02/public/style.css index 0aa26466..f20c3db0 100644 --- a/experiments/ribbon02/public/style.css +++ b/experiments/ribbon02/public/style.css @@ -14,15 +14,34 @@ body { #main-canvas { width: 100%; height: 100%; + position: absolute; + top: 0; + left: 0; } -video { +#video { + transform: scaleX(-1); + /* visibility: hidden; */ + width: auto; + height: auto; + position: fixed; + bottom: 0; + left: 0; + z-index: 8; +} + +#canvas-hand { + transform: scaleX(-1); position: absolute; - z-index: 9; - width: 320px; - height: 240px; - right: 0; bottom: 0; - transform: scale(-1, 1); - /* display: none; */ + left: 0; + z-index: 9; +} + +.no-hand-detection #canvas-hand { + display: none; +} + +.no-hand-detection #video { + display: none; } diff --git a/experiments/ribbon02/src/Config.js b/experiments/ribbon02/src/Config.js index 4451c33f..6161c9c6 100644 --- a/experiments/ribbon02/src/Config.js +++ b/experiments/ribbon02/src/Config.js @@ -1,9 +1,9 @@ export default { numParticles: 64, numSets: 16, - extreme: false, + extreme: true, autoSave: false, - usePoseDetection: false, + useHandDetection: false, showThumbnail: false, margin: 100, thumbnailSize: 256, diff --git a/experiments/ribbon02/src/SceneApp.js b/experiments/ribbon02/src/SceneApp.js index 0c5a6b98..f5f03bab 100644 --- a/experiments/ribbon02/src/SceneApp.js +++ b/experiments/ribbon02/src/SceneApp.js @@ -34,14 +34,18 @@ import generateAOMap from "./generateAOMap"; import generateBlueNoise from "./generateBlueNoise"; import applyBlur from "./applyBlur"; -// pose detection -import PoseDetection, { POSE_FOUND, POSE_LOST } from "./PoseDetection"; +// hand detection +import HandPoseDetection, { + ON_VIDEO_READY, + ON_HANDS_LOST, + ON_HANDS_DETECTED, +} from "./hand-detection"; // fluid simulation import FluidSimulation from "./fluid-sim"; -const bound = 6; -const debug = false; +const bound = 8; +const debug = true; class SceneApp extends Scene { constructor() { @@ -76,16 +80,81 @@ class SceneApp extends Scene { }); // pose detection - if (Config.usePoseDetection) { - this._initPoseDetection(); + if (Config.useHandDetection) { + this._initHandDetection(); } } + _initHandDetection() { + console.log("Init hand detection"); + + const videoScale = 1; + const targetWidth = 360 * videoScale; + const targetHeight = 240 * videoScale; + + this._handLeft = [999, 999]; + this._handLeftPrev = [999, 999]; + this._handRight = [999, 999]; + this._handRightPrev = [999, 999]; + + this._handDetection = new HandPoseDetection(targetWidth, targetHeight, 1); + this._handDetection.on(ON_VIDEO_READY, this._onVideoReady); + this._handDetection.on(ON_HANDS_DETECTED, this._onHandsDetected); + this._handDetection.on(ON_HANDS_LOST, this._onHandsLost); + + this._handDetection.displayScale = 0.75; + } + + _onVideoReady = () => {}; + + _onHandsDetected = (hands) => { + const { width, height } = this._handDetection; + + hands.forEach((handTrack) => { + const { keypoints, handedness, score } = handTrack; + + if (score > 0.8) { + const hand = this[`_hand${handedness}`]; + const handPrev = this[`_hand${handedness}Prev`]; + const wrist = keypoints.find((k) => k.name === "wrist"); + const x = 1 - wrist.x / width; + const y = 1 - wrist.y / height; + + if (hand[0] > 900) { + hand[0] = x; + hand[1] = y; + handPrev[0] = x; + handPrev[1] = y; + } else { + vec2.copy(handPrev, hand); + hand[0] = x; + hand[1] = y; + + const dir = vec2.sub([], hand, handPrev); + let f = vec2.distance(hand, handPrev); + if (f < 0.05) { + f = smoothstep(0, 0.02, f); + f = Math.pow(f, 1.5); + + this._fluid.updateFlow(hand, dir, 6 * f, 2, 1); + } + } + } + }); + }; + + _onHandsLost = () => { + this._handLeft = [999, 999]; + this._handLeftPrev = [999, 999]; + this._handRight = [999, 999]; + this._handRightPrev = [999, 999]; + }; + _init() { this.resize(); // camera settings - this.camera.setPerspective(60 * RAD, GL.aspectRatio, 2, 20); + this.camera.setPerspective(80 * RAD, GL.aspectRatio, 2, 20); this._index = 0; this._hit = [999, 999, 999]; @@ -198,42 +267,7 @@ class SceneApp extends Scene { this._drawFlowUpdate = new DrawFlowUpdate(); } - _initPoseDetection() { - this._poseDetection = new PoseDetection(); - this._poseDetection.on(POSE_FOUND, this._onPoseFound); - this._poseDetection.on(POSE_LOST, () => { - // this._flowForce.value = 1; - }); - } - - _onPoseFound = (mPoints) => { - let a = mPoints[0].pos[0] - 0.5; - this.orbitalControl.ry.value = a * 2.0; - // if (!this._posePoints || this._posePoints.length !== mPoints.length) { - // this._posePoints = mPoints.map(({ pos }) => pos); - // console.log("mPoints", mPoints); - // } else { - // const threshold = 0.5; - // mPoints.forEach(({ pos, score }, i) => { - // const dir = vec2.sub([0, 0], pos, this._posePoints[i]); - // let speed = vec2.length(dir); - // let f = smoothstep(0.02, 0.05, speed); - // vec2.normalize(dir, dir); - // let _pos = vec2.clone(pos); - // if (Config.mirrored) { - // _pos[0] = 1 - _pos[0]; - // } - - // if (score > threshold && f > 0) { - // let radius = mix(1.0, 3.0, f) * Config.extreme ? 1 : 3; - // // const force = mix(2, 20, f); - // const force = f * Config.extreme ? 1 : 2; - // this._fluid.updateFlow(_pos, dir, force, radius, 0.5); - // } - // vec2.copy(this._posePoints[i], pos); - // }); - // } - }; + _initPoseDetection() {} update() { this._fluid.update(); @@ -371,12 +405,23 @@ class SceneApp extends Scene { .uniform("uFar", far) .draw(); - if (debug) { - g = 400; - GL.viewport(0, 0, g, g); - this._dCopy.draw(this._fluid.velocity); - GL.viewport(g, 0, g, g); - this._dCopy.draw(this._fluid.density); + if (debug && this._handLeft) { + g = 0.05; + let x = this._handLeft[0] * 2 - 1; + let y = this._handLeft[1] * 2 - 1; + + this._dBall.draw([x * bound, y * bound, 0], [g, g, g], [1, 0, 0]); + + x = this._handRight[0] * 2 - 1; + y = this._handRight[1] * 2 - 1; + + this._dBall.draw([x * bound, y * bound, 0], [g, g, g], [1, 0, 0]); + + // g = 400; + // GL.viewport(0, 0, g, g); + // this._dCopy.draw(this._fluid.velocity); + // GL.viewport(g, 0, g, g); + // this._dCopy.draw(this._fluid.density); } } @@ -390,6 +435,7 @@ class SceneApp extends Scene { this._fboRender = new FrameBuffer(GL.width, GL.height); // console.log(GL.aspectRatio, 9 / 16); + console.log(GL.aspectRatio, 4 / 5); } } diff --git a/experiments/ribbon02/src/alfrid/utils/addFullscreen.js b/experiments/ribbon02/src/alfrid/utils/addFullscreen.js new file mode 100644 index 00000000..e69de29b diff --git a/experiments/ribbon02/src/fluid-sim/index.js b/experiments/ribbon02/src/fluid-sim/index.js index 1d969189..01f0da6d 100644 --- a/experiments/ribbon02/src/fluid-sim/index.js +++ b/experiments/ribbon02/src/fluid-sim/index.js @@ -86,7 +86,8 @@ class FluidSimulation { .setMesh(mesh) .setClearColor(0, 0, 0, 1) .uniform("uTimestep", "float", 0.0001) - .uniform("uTimestep", "float", 0.005) + // .uniform("uTimestep", "float", 0.0002) + // .uniform("uTimestep", "float", 0.005) .uniform("uTexelSize", "vec2", this._texelSize); this._drawDivergence = new Draw() diff --git a/experiments/ribbon02/src/hand-detection/JointPairs.js b/experiments/ribbon02/src/hand-detection/JointPairs.js new file mode 100644 index 00000000..7e095deb --- /dev/null +++ b/experiments/ribbon02/src/hand-detection/JointPairs.js @@ -0,0 +1,27 @@ +export default [ + // thumb + ["wrist", "thumb_cmc"], + ["thumb_cmc", "thumb_mcp"], + ["thumb_mcp", "thumb_ip"], + ["thumb_ip", "thumb_tip"], + // index + ["wrist", "index_finger_mcp"], + ["index_finger_mcp", "index_finger_pip"], + ["index_finger_pip", "index_finger_dip"], + ["index_finger_dip", "index_finger_tip"], + // middle + ["wrist", "middle_finger_mcp"], + ["middle_finger_mcp", "middle_finger_pip"], + ["middle_finger_pip", "middle_finger_dip"], + ["middle_finger_dip", "middle_finger_tip"], + // ring + ["wrist", "ring_finger_mcp"], + ["ring_finger_mcp", "ring_finger_pip"], + ["ring_finger_pip", "ring_finger_dip"], + ["ring_finger_dip", "ring_finger_tip"], + // pinky + ["wrist", "pinky_finger_mcp"], + ["pinky_finger_mcp", "pinky_finger_pip"], + ["pinky_finger_pip", "pinky_finger_dip"], + ["pinky_finger_dip", "pinky_finger_tip"], +]; diff --git a/experiments/ribbon02/src/hand-detection/index.js b/experiments/ribbon02/src/hand-detection/index.js new file mode 100644 index 00000000..56d2d121 --- /dev/null +++ b/experiments/ribbon02/src/hand-detection/index.js @@ -0,0 +1,244 @@ +import Emitter from "events"; +import * as handPoseDetection from "@tensorflow-models/hand-pose-detection"; +import JointPairs from "./JointPairs"; +import { EaseNumber } from "alfrid"; + +export const ON_VIDEO_READY = "ON_VIDEO_READY"; +export const ON_HANDS_DETECTED = "ON_HANDS_DETECTED"; +export const ON_HANDS_LOST = "ON_HANDS_LOST"; + +export default class HandPoseDetection extends Emitter { + constructor(mWidth = 360, mHeight = 270, mDisplayScale = 1) { + super(); + this.width = mWidth; + this.height = mHeight; + this.displayScale = mDisplayScale; + this.opacity = new EaseNumber(0.2, 0.05); + + this.initHandDetection(); + + // device list + this.decivesList = []; + if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) { + console.log("enumerateDevices() not supported."); + } else { + // List cameras and microphones. + navigator.mediaDevices + .enumerateDevices() + .then((devices) => { + this.devices = devices.filter((d) => d.kind === "videoinput"); + this.deviceNames = this.devices.map((d) => d.label); + this.deviceIds = this.devices.map((d) => d.deviceId); + }) + .catch((err) => { + console.log(`${err.name}: ${err.message}`); + }); + } + } + + async initHandDetection() { + const model = handPoseDetection.SupportedModels.MediaPipeHands; + const detectorConfig = { + runtime: "mediapipe", // or 'tfjs', + solutionPath: "https://cdn.jsdelivr.net/npm/@mediapipe/hands", + modelType: "full", + }; + this.detector = await handPoseDetection.createDetector( + model, + detectorConfig + ); + + this.setupCamera(); + } + + async setupCamera() { + if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) { + throw new Error( + "Browser API navigator.mediaDevices.getUserMedia not available" + ); + } + + this.video = document.getElementById("video"); + if (!this.video) { + console.error("Video not exist with id : video"); + return; + } + const videoConfig = { + audio: false, + video: { + facingMode: "user", + // Only setting the video to a specified size for large screen, on + // mobile devices accept the default size. + width: this.width, + height: this.height, + frameRate: { + ideal: 60, + }, + }, + }; + + const stream = await navigator.mediaDevices.getUserMedia(videoConfig); + this.video.srcObject = stream; + + await new Promise((resolve) => { + this.video.onloadedmetadata = () => { + resolve(this.video); + }; + }); + + this.video.play(); + + const videoWidth = this.video.videoWidth; + const videoHeight = this.video.videoHeight; + // Must set below two lines, otherwise video element doesn't show. + this.video.width = videoWidth; + this.video.height = videoHeight; + + this.canvas = document.createElement("canvas"); + this.canvas.width = videoWidth; + this.canvas.height = videoHeight; + this.ctx = this.canvas.getContext("2d"); + document.body.appendChild(this.canvas); + + this.video.style.cssText = ` + transform: scaleX(-1); + width: auto; + height: auto; + position: fixed; + bottom: 0; + left: 0; + z-index: 8; + `; + + this.canvas.style.cssText = ` + transform: scaleX(-1); + position: absolute; + bottom: 0; + left: 0; + z-index: 9; + `; + + this.emit(ON_VIDEO_READY, { video: this.video, canvas: this.canvas }); + this.getHands(); + } + + async renderResult() { + const { width, height, ctx } = this; + ctx.clearRect(0, 0, width, height); + if (this.video.readyState < 2) { + await new Promise((resolve) => { + this.video.onloadeddata = () => { + resolve(video); + }; + }); + } + + let hands = null; + const { detector } = this; + if (detector != null) { + // Detectors can throw errors, for example when using custom URLs that + // contain a model that doesn't provide the expected output. + try { + hands = await detector.estimateHands(this.video, { + flipHorizontal: false, + }); + } catch (error) { + detector.dispose(); + detector = null; + alert(error); + } + } + ctx.fillStyle = `rgba(0, 0, 0, ${this.opacity.value})`; + ctx.fillRect(0, 0, width, height); + if (hands && hands.length > 0) { + this.opacity.value = 0.5; + ctx.fillStyle = "rgb(255, 114, 0)"; + hands.forEach(({ keypoints }) => { + keypoints.forEach(({ x, y }) => { + ctx.beginPath(); + ctx.arc(x, y, 2, 0, Math.PI * 2); + ctx.fill(); + }); + + JointPairs.forEach(([a, b]) => { + const pa = keypoints.find((p) => p.name === a); + const pb = keypoints.find((p) => p.name === b); + + this.ctx.strokeStyle = "rgba(255, 255, 255, .5)"; + this.ctx.lineWidth = 2; + this.ctx.beginPath(); + this.ctx.moveTo(pa.x, pa.y); + this.ctx.lineTo(pb.x, pb.y); + this.ctx.stroke(); + }); + }); + + this.emit("ON_HANDS_DETECTED", hands); + } else { + this.opacity.value = 0.2; + // ctx.fillStyle = `rgba(0, 0, 0, 0.2)`; + // ctx.fillRect(0, 0, width, height); + this.emit("ON_HANDS_LOST"); + } + } + + async getHands() { + await this.renderResult(); + + requestAnimationFrame(() => this.getHands()); + } + + async changeDevice(deviceId) { + const videoConfig = { + audio: false, + video: { + facingMode: "user", + // Only setting the video to a specified size for large screen, on + // mobile devices accept the default size. + width: this.width, + height: this.height, + frameRate: { + ideal: 60, + }, + deviceId, + }, + }; + + const stream = await navigator.mediaDevices.getUserMedia(videoConfig); + this.video.srcObject = stream; + + await new Promise((resolve) => { + this.video.onloadedmetadata = () => { + resolve(this.video); + }; + }); + + this.video.play(); + } + + set displayScale(mValue) { + if (!this.video || !this.canvas) { + setTimeout(() => { + this.displayScale = mValue; + }, 1000 / 60); + return; + } + const { width, height } = this; + this.video.style.width = `${width * mValue}px`; + this.video.style.height = `${height * mValue}px`; + this.canvas.style.width = `${width * mValue}px`; + this.canvas.style.height = `${height * mValue}px`; + } + + get deviceId() { + if (!this.video) return null; + if (!this.video.srcObject) return null; + return this.video.srcObject.getVideoTracks()[0].getSettings().deviceId; + } + + get deviceName() { + const id = this.deviceId; + if (id === null) return null; + return this.deviceNames[this.deviceIds.indexOf(id)]; + } +} diff --git a/experiments/ribbon02/src/index.js b/experiments/ribbon02/src/index.js index f08f6f2f..b8e52a59 100644 --- a/experiments/ribbon02/src/index.js +++ b/experiments/ribbon02/src/index.js @@ -28,6 +28,7 @@ import Scene from "./SceneApp"; import { logError } from "./utils"; import preload from "./utils/preload"; import "./utils/Capture"; +import addFullscreen from "./utils/fullscreen"; const isDev = process.env.NODE_ENV === "development"; @@ -47,6 +48,7 @@ const initScene = () => { } scene = new Scene(); + addFullscreen(); }; function _init3D() { diff --git a/experiments/ribbon02/src/shaders/compose.frag b/experiments/ribbon02/src/shaders/compose.frag index ddbba2c8..5ea8be8a 100644 --- a/experiments/ribbon02/src/shaders/compose.frag +++ b/experiments/ribbon02/src/shaders/compose.frag @@ -108,6 +108,10 @@ void main(void) { color.rgb -= d * 0.4; oColor = lookup(color, uLookupMap, 0.35); + + vec3 colorAdj = smoothstep(vec3(0.0), vec3(1.0), oColor.rgb); + oColor.rgb = mix(oColor.rgb, colorAdj, .5); + oColor.rgb *= mix(1.1, 0.5, v); // oColor = vec4(vec3(ao), 1.0); // oColor = vec4(vec3(blurAmount), 1.0); diff --git a/experiments/ribbon02/src/shaders/scramble.frag b/experiments/ribbon02/src/shaders/scramble.frag index 7b979d5a..3de501c8 100644 --- a/experiments/ribbon02/src/shaders/scramble.frag +++ b/experiments/ribbon02/src/shaders/scramble.frag @@ -24,6 +24,7 @@ vec2 _normalize(vec2 v) { } #define PI 3.1415926535897932384626433832795 +#define minY -3.0 void main(void) { vec3 pos = texture(uPosMap, vTextureCoord).xyz; @@ -47,5 +48,9 @@ void main(void) { pos = normalize(pos) * maxRadius; } + if(pos.y < minY) { + pos.y += (minY - pos.y) * 0.1; + } + oColor = vec4(pos, 1.0); } \ No newline at end of file diff --git a/experiments/ribbon02/src/shaders/sim.frag b/experiments/ribbon02/src/shaders/sim.frag index 260f9567..26227f86 100644 --- a/experiments/ribbon02/src/shaders/sim.frag +++ b/experiments/ribbon02/src/shaders/sim.frag @@ -33,6 +33,7 @@ layout (location = 3) out vec4 oFragColor3; #pragma glslify: curlNoise = require(./glsl-utils/curlNoise.glsl) #define PI 3.1415926535897932384626433832795 +#define minY -3.5 void main(void) { vec3 pos = texture(uPosMap, vTextureCoord).xyz; @@ -60,6 +61,11 @@ void main(void) { dir = -normalize(posAdj - uCenter); f = smoothstep(maxRadius - 1.0, maxRadius, d); acc += dir * f * 2.0; + + if(pos.y < minY) { + acc.y += (minY - pos.y) * 0.1; + } + // repel to touch @@ -82,6 +88,8 @@ void main(void) { pos += vel; vel *= .96; + pos.y = max(pos.y, minY); + oFragColor0 = vec4(pos, 1.0); oFragColor1 = vec4(vel, 1.0); diff --git a/experiments/ribbon02/src/utils/addControl.js b/experiments/ribbon02/src/utils/addControl.js index da1e258a..31196226 100644 --- a/experiments/ribbon02/src/utils/addControl.js +++ b/experiments/ribbon02/src/utils/addControl.js @@ -1,5 +1,3 @@ -import { GL } from "alfrid"; - import * as dat from "dat.gui"; import Config from "../Config"; import Settings from "../Settings"; @@ -22,8 +20,8 @@ export default (scene) => { .name("Ribbon length") .onFinishChange(reload); - gui.add(Config, "extreme").onChange(refresh); - gui.add(Config, "usePoseDetection").onChange(reload); + // gui.add(Config, "extreme").onChange(refresh); + gui.add(Config, "useHandDetection").onChange(reload); gui.add(Settings, "reset").name("Reset Default Settings"); // dat.GUI.toggleHide(); diff --git a/experiments/ribbon02/src/utils/fullscreen.js b/experiments/ribbon02/src/utils/fullscreen.js new file mode 100644 index 00000000..05f7cc5c --- /dev/null +++ b/experiments/ribbon02/src/utils/fullscreen.js @@ -0,0 +1,23 @@ +// fullscreen +let canvas; + +// Function to toggle fullscreen mode +function toggleFullScreen() { + if (!!canvas) { + if (!document.fullscreenElement) { + canvas.requestFullscreen(); + } else { + document.exitFullscreen(); + } + } +} + +export default function () { + canvas = document.querySelector("#main-canvas"); + // Add event listener for keydown event on the whole document + document.addEventListener("keydown", function (event) { + if (event.key === "f") { + toggleFullScreen(); + } + }); +} diff --git a/exps/0.html b/exps/0.html index 0fc98a20..3d359ecb 100644 --- a/exps/0.html +++ b/exps/0.html @@ -1 +1 @@ -Sketches | Particles
\ No newline at end of file +Sketches | Particles
\ No newline at end of file diff --git a/exps/0.txt b/exps/0.txt index ee4d42a0..4b0a8871 100644 --- a/exps/0.txt +++ b/exps/0.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","0","d"],{"children":["__PAGE__?{\"id\":\"0\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","0","d"],{"children":["__PAGE__?{\"id\":\"0\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","0","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"0\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","0","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/1.html b/exps/1.html index 4bd5a31a..87f9c676 100644 --- a/exps/1.html +++ b/exps/1.html @@ -1 +1 @@ -Sketches | Reflections
\ No newline at end of file +Sketches | Reflections
\ No newline at end of file diff --git a/exps/1.txt b/exps/1.txt index 3a8fc3a3..bcfefabb 100644 --- a/exps/1.txt +++ b/exps/1.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","1","d"],{"children":["__PAGE__?{\"id\":\"1\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","1","d"],{"children":["__PAGE__?{\"id\":\"1\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","1","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"1\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","1","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Reflections"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Reflections"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverReflection.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Reflections"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverReflection.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/10.html b/exps/10.html index 03c2047b..48c9683b 100644 --- a/exps/10.html +++ b/exps/10.html @@ -1 +1 @@ -Sketches | Le Bel Costume
\ No newline at end of file +Sketches | Le Bel Costume
\ No newline at end of file diff --git a/exps/10.txt b/exps/10.txt index 5842f768..2b3e844b 100644 --- a/exps/10.txt +++ b/exps/10.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","10","d"],{"children":["__PAGE__?{\"id\":\"10\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","10","d"],{"children":["__PAGE__?{\"id\":\"10\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","10","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"10\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","10","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Le Bel Costume"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Le Bel Costume"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wrap/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/costume.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Le Bel Costume"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/costume.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/11.html b/exps/11.html index a4b38cf0..62420c4a 100644 --- a/exps/11.html +++ b/exps/11.html @@ -1 +1 @@ -Sketches | Four seasons
\ No newline at end of file +Sketches | Four seasons
\ No newline at end of file diff --git a/exps/11.txt b/exps/11.txt index e61714a5..98d2c74a 100644 --- a/exps/11.txt +++ b/exps/11.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","11","d"],{"children":["__PAGE__?{\"id\":\"11\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","11","d"],{"children":["__PAGE__?{\"id\":\"11\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","11","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"11\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","11","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Four seasons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Four seasons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blossom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/seasons.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Four seasons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/seasons.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/12.html b/exps/12.html index 4b11e238..f97d6852 100644 --- a/exps/12.html +++ b/exps/12.html @@ -1 +1 @@ -Sketches | River
\ No newline at end of file +Sketches | River
\ No newline at end of file diff --git a/exps/12.txt b/exps/12.txt index 3d21b18b..a3abf53e 100644 --- a/exps/12.txt +++ b/exps/12.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","12","d"],{"children":["__PAGE__?{\"id\":\"12\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","12","d"],{"children":["__PAGE__?{\"id\":\"12\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","12","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/River/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"12\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","12","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | River"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | River"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/River/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/river.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | River"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/river.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/13.html b/exps/13.html index 588c7b6e..5f0fbccb 100644 --- a/exps/13.html +++ b/exps/13.html @@ -1 +1 @@ -Sketches | Crystallize
\ No newline at end of file +Sketches | Crystallize
\ No newline at end of file diff --git a/exps/13.txt b/exps/13.txt index b6cd0aca..88e7fa0c 100644 --- a/exps/13.txt +++ b/exps/13.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","13","d"],{"children":["__PAGE__?{\"id\":\"13\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","13","d"],{"children":["__PAGE__?{\"id\":\"13\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","13","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"13\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","13","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Crystallize"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Crystallize"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/nike/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCrystal.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Crystallize"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCrystal.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/14.html b/exps/14.html index ac42cb1e..de1bf57b 100644 --- a/exps/14.html +++ b/exps/14.html @@ -1 +1 @@ -Sketches | Particle Valley
\ No newline at end of file +Sketches | Particle Valley
\ No newline at end of file diff --git a/exps/14.txt b/exps/14.txt index d45dbdda..75dbbed0 100644 --- a/exps/14.txt +++ b/exps/14.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","14","d"],{"children":["__PAGE__?{\"id\":\"14\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","14","d"],{"children":["__PAGE__?{\"id\":\"14\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","14","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"14\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","14","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Particle Valley"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Particle Valley"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchParticleValley.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Particle Valley"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchParticleValley.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/15.html b/exps/15.html index bc9bdb9f..62eb6f73 100644 --- a/exps/15.html +++ b/exps/15.html @@ -1 +1 @@ -Sketches | Bubbles
\ No newline at end of file +Sketches | Bubbles
\ No newline at end of file diff --git a/exps/15.txt b/exps/15.txt index bffd0750..aa9f665f 100644 --- a/exps/15.txt +++ b/exps/15.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","15","d"],{"children":["__PAGE__?{\"id\":\"15\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","15","d"],{"children":["__PAGE__?{\"id\":\"15\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","15","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"15\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","15","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Bubbles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Bubbles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/particles03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBubbles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Bubbles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBubbles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/16.html b/exps/16.html index afda69d3..0bae515b 100644 --- a/exps/16.html +++ b/exps/16.html @@ -1 +1 @@ -Sketches | Turbulence
\ No newline at end of file +Sketches | Turbulence
\ No newline at end of file diff --git a/exps/16.txt b/exps/16.txt index 13293c3d..c1582fcb 100644 --- a/exps/16.txt +++ b/exps/16.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","16","d"],{"children":["__PAGE__?{\"id\":\"16\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","16","d"],{"children":["__PAGE__?{\"id\":\"16\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","16","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"16\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","16","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Turbulence"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Turbulence"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTurbulence.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Turbulence"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTurbulence.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/17.html b/exps/17.html index 8ccd8635..a5cc226d 100644 --- a/exps/17.html +++ b/exps/17.html @@ -1 +1 @@ -Sketches | Black and Gold
\ No newline at end of file +Sketches | Black and Gold
\ No newline at end of file diff --git a/exps/17.txt b/exps/17.txt index ae4f2763..27f4c4ff 100644 --- a/exps/17.txt +++ b/exps/17.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","17","d"],{"children":["__PAGE__?{\"id\":\"17\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","17","d"],{"children":["__PAGE__?{\"id\":\"17\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","17","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"17\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","17","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black and Gold"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black and Gold"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackGold.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black and Gold"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackGold.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/18.html b/exps/18.html index 0aa2dc50..49956769 100644 --- a/exps/18.html +++ b/exps/18.html @@ -1 +1 @@ -Sketches | Black and Gold
\ No newline at end of file +Sketches | Black and Gold
\ No newline at end of file diff --git a/exps/18.txt b/exps/18.txt index 0debef41..390c4529 100644 --- a/exps/18.txt +++ b/exps/18.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","18","d"],{"children":["__PAGE__?{\"id\":\"18\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","18","d"],{"children":["__PAGE__?{\"id\":\"18\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","18","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"18\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","18","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black and Gold"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black and Gold"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGrass.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black and Gold"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGrass.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/19.html b/exps/19.html index 0672f584..fe0a3d8b 100644 --- a/exps/19.html +++ b/exps/19.html @@ -1 +1 @@ -Sketches | Wolf
\ No newline at end of file +Sketches | Wolf
\ No newline at end of file diff --git a/exps/19.txt b/exps/19.txt index 02cb2193..f4d4d492 100644 --- a/exps/19.txt +++ b/exps/19.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","19","d"],{"children":["__PAGE__?{\"id\":\"19\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","19","d"],{"children":["__PAGE__?{\"id\":\"19\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","19","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"19\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","19","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Wolf"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Wolf"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWolf.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Wolf"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWolf.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/2.html b/exps/2.html index cbd8e94b..4f17cefe 100644 --- a/exps/2.html +++ b/exps/2.html @@ -1 +1 @@ -Sketches | Nefertiti
\ No newline at end of file +Sketches | Nefertiti
\ No newline at end of file diff --git a/exps/2.txt b/exps/2.txt index 84e1f476..9e8b85a6 100644 --- a/exps/2.txt +++ b/exps/2.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","2","d"],{"children":["__PAGE__?{\"id\":\"2\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","2","d"],{"children":["__PAGE__?{\"id\":\"2\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","2","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"2\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","2","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Nefertiti"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Nefertiti"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverNefertiti.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Nefertiti"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverNefertiti.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/20.html b/exps/20.html index 71c587e3..29c643e2 100644 --- a/exps/20.html +++ b/exps/20.html @@ -1 +1 @@ -Sketches | Painting Landscape
\ No newline at end of file +Sketches | Painting Landscape
\ No newline at end of file diff --git a/exps/20.txt b/exps/20.txt index c2590cf4..9b058ded 100644 --- a/exps/20.txt +++ b/exps/20.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","20","d"],{"children":["__PAGE__?{\"id\":\"20\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","20","d"],{"children":["__PAGE__?{\"id\":\"20\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","20","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"20\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","20","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Landscape"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Landscape"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPainting.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Landscape"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPainting.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/21.html b/exps/21.html index 86208d8c..c4a85ca5 100644 --- a/exps/21.html +++ b/exps/21.html @@ -1 +1 @@ -Sketches | Painting Particles
\ No newline at end of file +Sketches | Painting Particles
\ No newline at end of file diff --git a/exps/21.txt b/exps/21.txt index 67753571..b38286a5 100644 --- a/exps/21.txt +++ b/exps/21.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","21","d"],{"children":["__PAGE__?{\"id\":\"21\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","21","d"],{"children":["__PAGE__?{\"id\":\"21\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","21","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"21\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","21","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPaintingParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPaintingParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/22.html b/exps/22.html index 651cdce1..e324427d 100644 --- a/exps/22.html +++ b/exps/22.html @@ -1 +1 @@ -Sketches | Painting Particles
\ No newline at end of file +Sketches | Painting Particles
\ No newline at end of file diff --git a/exps/22.txt b/exps/22.txt index f0a358bc..fbe36ed4 100644 --- a/exps/22.txt +++ b/exps/22.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","22","d"],{"children":["__PAGE__?{\"id\":\"22\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","22","d"],{"children":["__PAGE__?{\"id\":\"22\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","22","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"22\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","22","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNeonDemon.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNeonDemon.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/23.html b/exps/23.html index ef110d19..ac026151 100644 --- a/exps/23.html +++ b/exps/23.html @@ -1 +1 @@ -Sketches | Swirling Particles
\ No newline at end of file +Sketches | Swirling Particles
\ No newline at end of file diff --git a/exps/23.txt b/exps/23.txt index 59b89c30..bcd08ae5 100644 --- a/exps/23.txt +++ b/exps/23.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","23","d"],{"children":["__PAGE__?{\"id\":\"23\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","23","d"],{"children":["__PAGE__?{\"id\":\"23\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","23","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"23\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","23","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirling Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirling Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/swirling/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirling Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/24.html b/exps/24.html index cd50ebbe..2caa429c 100644 --- a/exps/24.html +++ b/exps/24.html @@ -1 +1 @@ -Sketches | Black Rain
\ No newline at end of file +Sketches | Black Rain
\ No newline at end of file diff --git a/exps/24.txt b/exps/24.txt index 0025aa62..8f23a5b6 100644 --- a/exps/24.txt +++ b/exps/24.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","24","d"],{"children":["__PAGE__?{\"id\":\"24\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","24","d"],{"children":["__PAGE__?{\"id\":\"24\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","24","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"24\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","24","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black Rain"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black Rain"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackRain.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black Rain"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackRain.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/25.html b/exps/25.html index d52eeba5..44e87ffd 100644 --- a/exps/25.html +++ b/exps/25.html @@ -1 +1 @@ -Sketches | Splashes
\ No newline at end of file +Sketches | Splashes
\ No newline at end of file diff --git a/exps/25.txt b/exps/25.txt index d1efe60d..5f62c751 100644 --- a/exps/25.txt +++ b/exps/25.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","25","d"],{"children":["__PAGE__?{\"id\":\"25\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","25","d"],{"children":["__PAGE__?{\"id\":\"25\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","25","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"25\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","25","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Splashes"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Splashes"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/splashes/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSplashes.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Splashes"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSplashes.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/26.html b/exps/26.html index 57be7f2d..f17d077a 100644 --- a/exps/26.html +++ b/exps/26.html @@ -1 +1 @@ -Sketches | Comic style
\ No newline at end of file +Sketches | Comic style
\ No newline at end of file diff --git a/exps/26.txt b/exps/26.txt index c6efd1d1..18b02502 100644 --- a/exps/26.txt +++ b/exps/26.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","26","d"],{"children":["__PAGE__?{\"id\":\"26\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","26","d"],{"children":["__PAGE__?{\"id\":\"26\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","26","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"26\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","26","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Comic style"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Comic style"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/comic/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchComic.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Comic style"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchComic.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/27.html b/exps/27.html index f9bb9a3b..bb45efc4 100644 --- a/exps/27.html +++ b/exps/27.html @@ -1 +1 @@ -Sketches | Island
\ No newline at end of file +Sketches | Island
\ No newline at end of file diff --git a/exps/27.txt b/exps/27.txt index 49b02840..1f76c0d6 100644 --- a/exps/27.txt +++ b/exps/27.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","27","d"],{"children":["__PAGE__?{\"id\":\"27\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","27","d"],{"children":["__PAGE__?{\"id\":\"27\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","27","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/island/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"27\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","27","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Island"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Island"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/island/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchIsland.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Island"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchIsland.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/28.html b/exps/28.html index 77638e51..276c9910 100644 --- a/exps/28.html +++ b/exps/28.html @@ -1 +1 @@ -Sketches | Hannya
\ No newline at end of file +Sketches | Hannya
\ No newline at end of file diff --git a/exps/28.txt b/exps/28.txt index 7234a77f..2e52199c 100644 --- a/exps/28.txt +++ b/exps/28.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","28","d"],{"children":["__PAGE__?{\"id\":\"28\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","28","d"],{"children":["__PAGE__?{\"id\":\"28\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","28","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"28\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","28","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Hannya"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Hannya"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHannya.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Hannya"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHannya.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/29.html b/exps/29.html index 95c796ad..fee7d62e 100644 --- a/exps/29.html +++ b/exps/29.html @@ -1 +1 @@ -Sketches | Painting Glass
\ No newline at end of file +Sketches | Painting Glass
\ No newline at end of file diff --git a/exps/29.txt b/exps/29.txt index a765c77b..015128f6 100644 --- a/exps/29.txt +++ b/exps/29.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","29","d"],{"children":["__PAGE__?{\"id\":\"29\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","29","d"],{"children":["__PAGE__?{\"id\":\"29\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","29","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"29\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","29","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Glass"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Glass"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/neon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGlass.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Glass"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGlass.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/3.html b/exps/3.html index 237ae52a..2d648448 100644 --- a/exps/3.html +++ b/exps/3.html @@ -1 +1 @@ -Sketches | Flocking
\ No newline at end of file +Sketches | Flocking
\ No newline at end of file diff --git a/exps/3.txt b/exps/3.txt index 9d68064c..ce712873 100644 --- a/exps/3.txt +++ b/exps/3.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","3","d"],{"children":["__PAGE__?{\"id\":\"3\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","3","d"],{"children":["__PAGE__?{\"id\":\"3\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","3","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"3\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","3","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flocking"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flocking"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverFlocking.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flocking"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverFlocking.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/30.html b/exps/30.html index 4a0d987c..61cef9fb 100644 --- a/exps/30.html +++ b/exps/30.html @@ -1 +1 @@ -Sketches | Maelstrom
\ No newline at end of file +Sketches | Maelstrom
\ No newline at end of file diff --git a/exps/30.txt b/exps/30.txt index af97affa..5657d360 100644 --- a/exps/30.txt +++ b/exps/30.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","30","d"],{"children":["__PAGE__?{\"id\":\"30\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","30","d"],{"children":["__PAGE__?{\"id\":\"30\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","30","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"30\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","30","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maelstrom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maelstrom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPlates.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maelstrom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPlates.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/31.html b/exps/31.html index 257ad116..012608e4 100644 --- a/exps/31.html +++ b/exps/31.html @@ -1 +1 @@ -Sketches | Maelstrom
\ No newline at end of file +Sketches | Maelstrom
\ No newline at end of file diff --git a/exps/31.txt b/exps/31.txt index fd1f0050..f37a13d7 100644 --- a/exps/31.txt +++ b/exps/31.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","31","d"],{"children":["__PAGE__?{\"id\":\"31\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","31","d"],{"children":["__PAGE__?{\"id\":\"31\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","31","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"31\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","31","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maelstrom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maelstrom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaelstrom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maelstrom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaelstrom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/32.html b/exps/32.html index acccfc56..7bda0a47 100644 --- a/exps/32.html +++ b/exps/32.html @@ -1 +1 @@ -Sketches | Pulse
\ No newline at end of file +Sketches | Pulse
\ No newline at end of file diff --git a/exps/32.txt b/exps/32.txt index 75bb48c0..d894e33a 100644 --- a/exps/32.txt +++ b/exps/32.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","32","d"],{"children":["__PAGE__?{\"id\":\"32\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","32","d"],{"children":["__PAGE__?{\"id\":\"32\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","32","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"32\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","32","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Pulse"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Pulse"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPulse.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Pulse"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPulse.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/33.html b/exps/33.html index 807fa58b..e2c99648 100644 --- a/exps/33.html +++ b/exps/33.html @@ -1 +1 @@ -Sketches | Patterns
\ No newline at end of file +Sketches | Patterns
\ No newline at end of file diff --git a/exps/33.txt b/exps/33.txt index 6af08106..5f6f1247 100644 --- a/exps/33.txt +++ b/exps/33.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","33","d"],{"children":["__PAGE__?{\"id\":\"33\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","33","d"],{"children":["__PAGE__?{\"id\":\"33\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","33","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"33\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","33","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Patterns"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Patterns"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPattern.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Patterns"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPattern.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/34.html b/exps/34.html index 666b8621..cc5f9bcf 100644 --- a/exps/34.html +++ b/exps/34.html @@ -1 +1 @@ -Sketches | Disappearing Geometries
\ No newline at end of file +Sketches | Disappearing Geometries
\ No newline at end of file diff --git a/exps/34.txt b/exps/34.txt index a0b9539d..852d9986 100644 --- a/exps/34.txt +++ b/exps/34.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","34","d"],{"children":["__PAGE__?{\"id\":\"34\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","34","d"],{"children":["__PAGE__?{\"id\":\"34\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","34","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"34\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","34","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Disappearing Geometries"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Disappearing Geometries"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGeometries.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Disappearing Geometries"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGeometries.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/35.html b/exps/35.html index 11ed8722..cf2ab4fe 100644 --- a/exps/35.html +++ b/exps/35.html @@ -1 +1 @@ -Sketches | Maurice the Sea Cat
\ No newline at end of file +Sketches | Maurice the Sea Cat
\ No newline at end of file diff --git a/exps/35.txt b/exps/35.txt index 8f25e8c2..e61cb966 100644 --- a/exps/35.txt +++ b/exps/35.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","35","d"],{"children":["__PAGE__?{\"id\":\"35\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","35","d"],{"children":["__PAGE__?{\"id\":\"35\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","35","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"35\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","35","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maurice the Sea Cat"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maurice the Sea Cat"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/maurice/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaurice.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maurice the Sea Cat"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaurice.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/36.html b/exps/36.html index bde32cdd..32fe3170 100644 --- a/exps/36.html +++ b/exps/36.html @@ -1 +1 @@ -Sketches | Codevember 2017
\ No newline at end of file +Sketches | Codevember 2017
\ No newline at end of file diff --git a/exps/36.txt b/exps/36.txt index b0fc05ef..4179478a 100644 --- a/exps/36.txt +++ b/exps/36.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","36","d"],{"children":["__PAGE__?{\"id\":\"36\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","36","d"],{"children":["__PAGE__?{\"id\":\"36\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","36","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"http://yiwenl.github.io/Codevember/2017/","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"36\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","36","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Codevember 2017"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Codevember 2017"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://http//yiwenl.github.io/Codevember/2017/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverCodevember.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Codevember 2017"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverCodevember.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/37.html b/exps/37.html index e0d1add8..1108e0b5 100644 --- a/exps/37.html +++ b/exps/37.html @@ -1 +1 @@ -Sketches | Dissolve
\ No newline at end of file +Sketches | Dissolve
\ No newline at end of file diff --git a/exps/37.txt b/exps/37.txt index a6e02261..06e634e1 100644 --- a/exps/37.txt +++ b/exps/37.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","37","d"],{"children":["__PAGE__?{\"id\":\"37\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","37","d"],{"children":["__PAGE__?{\"id\":\"37\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","37","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"37\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","37","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Dissolve"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Dissolve"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDissolve.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Dissolve"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDissolve.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/38.html b/exps/38.html index cd83ff3d..2494c4de 100644 --- a/exps/38.html +++ b/exps/38.html @@ -1 +1 @@ -Sketches | Substrate sphere
\ No newline at end of file +Sketches | Substrate sphere
\ No newline at end of file diff --git a/exps/38.txt b/exps/38.txt index 9ea974b2..f96b2969 100644 --- a/exps/38.txt +++ b/exps/38.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","38","d"],{"children":["__PAGE__?{\"id\":\"38\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","38","d"],{"children":["__PAGE__?{\"id\":\"38\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","38","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"38\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","38","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Substrate sphere"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Substrate sphere"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSubstrate.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Substrate sphere"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSubstrate.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/39.html b/exps/39.html index a885920c..30bf4e3f 100644 --- a/exps/39.html +++ b/exps/39.html @@ -1 +1 @@ -Sketches | Liquid
\ No newline at end of file +Sketches | Liquid
\ No newline at end of file diff --git a/exps/39.txt b/exps/39.txt index faa474e0..9e698c66 100644 --- a/exps/39.txt +++ b/exps/39.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","39","d"],{"children":["__PAGE__?{\"id\":\"39\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","39","d"],{"children":["__PAGE__?{\"id\":\"39\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","39","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"39\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","39","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/4.html b/exps/4.html index 6571a3a6..b536071a 100644 --- a/exps/4.html +++ b/exps/4.html @@ -1 +1 @@ -Sketches | Rosetta
\ No newline at end of file +Sketches | Rosetta
\ No newline at end of file diff --git a/exps/4.txt b/exps/4.txt index c2a4f881..2ded67ff 100644 --- a/exps/4.txt +++ b/exps/4.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","4","d"],{"children":["__PAGE__?{\"id\":\"4\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","4","d"],{"children":["__PAGE__?{\"id\":\"4\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","4","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"4\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","4","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Rosetta"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Rosetta"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverRosetta.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Rosetta"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverRosetta.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/40.html b/exps/40.html index 38457241..5df0ee2f 100644 --- a/exps/40.html +++ b/exps/40.html @@ -1 +1 @@ -Sketches | Liquid 02
\ No newline at end of file +Sketches | Liquid 02
\ No newline at end of file diff --git a/exps/40.txt b/exps/40.txt index 34cc3948..e1cb8378 100644 --- a/exps/40.txt +++ b/exps/40.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","40","d"],{"children":["__PAGE__?{\"id\":\"40\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","40","d"],{"children":["__PAGE__?{\"id\":\"40\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","40","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"40\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","40","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 02"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 02"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid02.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 02"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid02.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/41.html b/exps/41.html index 57b32707..7034aff7 100644 --- a/exps/41.html +++ b/exps/41.html @@ -1 +1 @@ -Sketches | Liquid 03
\ No newline at end of file +Sketches | Liquid 03
\ No newline at end of file diff --git a/exps/41.txt b/exps/41.txt index 45beea82..69e53479 100644 --- a/exps/41.txt +++ b/exps/41.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","41","d"],{"children":["__PAGE__?{\"id\":\"41\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","41","d"],{"children":["__PAGE__?{\"id\":\"41\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","41","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"41\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","41","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 03"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 03"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid03.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 03"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid03.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/42.html b/exps/42.html index 69199a58..1b7d0af5 100644 --- a/exps/42.html +++ b/exps/42.html @@ -1 +1 @@ -Sketches | Liquid 04
\ No newline at end of file +Sketches | Liquid 04
\ No newline at end of file diff --git a/exps/42.txt b/exps/42.txt index 5ab97a1d..27c573e1 100644 --- a/exps/42.txt +++ b/exps/42.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","42","d"],{"children":["__PAGE__?{\"id\":\"42\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","42","d"],{"children":["__PAGE__?{\"id\":\"42\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","42","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"42\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","42","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 04"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 04"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid04.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 04"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid04.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/43.html b/exps/43.html index b109da9c..4ba81624 100644 --- a/exps/43.html +++ b/exps/43.html @@ -1 +1 @@ -Sketches | Strange Bubbles
\ No newline at end of file +Sketches | Strange Bubbles
\ No newline at end of file diff --git a/exps/43.txt b/exps/43.txt index 55d2ea59..25605e54 100644 --- a/exps/43.txt +++ b/exps/43.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","43","d"],{"children":["__PAGE__?{\"id\":\"43\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","43","d"],{"children":["__PAGE__?{\"id\":\"43\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","43","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"43\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","43","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Strange Bubbles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Strange Bubbles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchStrangeBubbles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Strange Bubbles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchStrangeBubbles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/44.html b/exps/44.html index 5aa1d5b1..65396819 100644 --- a/exps/44.html +++ b/exps/44.html @@ -1 +1 @@ -Sketches | untitled
\ No newline at end of file +Sketches | untitled
\ No newline at end of file diff --git a/exps/44.txt b/exps/44.txt index 8915e5cc..001e6165 100644 --- a/exps/44.txt +++ b/exps/44.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","44","d"],{"children":["__PAGE__?{\"id\":\"44\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","44","d"],{"children":["__PAGE__?{\"id\":\"44\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","44","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"44\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","44","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | untitled"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | untitled"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/camera01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCamera01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | untitled"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCamera01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/45.html b/exps/45.html index c9dec848..7599da8e 100644 --- a/exps/45.html +++ b/exps/45.html @@ -1 +1 @@ -Sketches | Wires
\ No newline at end of file +Sketches | Wires
\ No newline at end of file diff --git a/exps/45.txt b/exps/45.txt index bd14a418..417a6377 100644 --- a/exps/45.txt +++ b/exps/45.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","45","d"],{"children":["__PAGE__?{\"id\":\"45\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","45","d"],{"children":["__PAGE__?{\"id\":\"45\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","45","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"45\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","45","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Wires"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Wires"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wires/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWires.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Wires"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWires.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/46.html b/exps/46.html index 9caf9698..aaed81aa 100644 --- a/exps/46.html +++ b/exps/46.html @@ -1 +1 @@ -Sketches | Waves
\ No newline at end of file +Sketches | Waves
\ No newline at end of file diff --git a/exps/46.txt b/exps/46.txt index 87bbc562..c48b8d21 100644 --- a/exps/46.txt +++ b/exps/46.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","46","d"],{"children":["__PAGE__?{\"id\":\"46\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","46","d"],{"children":["__PAGE__?{\"id\":\"46\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","46","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"46\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","46","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Waves"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Waves"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSoundwaves.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Waves"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSoundwaves.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/47.html b/exps/47.html index 556ff1eb..070d5c93 100644 --- a/exps/47.html +++ b/exps/47.html @@ -1 +1 @@ -Sketches | Swirling
\ No newline at end of file +Sketches | Swirling
\ No newline at end of file diff --git a/exps/47.txt b/exps/47.txt index b3b59797..53abeab3 100644 --- a/exps/47.txt +++ b/exps/47.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","47","d"],{"children":["__PAGE__?{\"id\":\"47\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","47","d"],{"children":["__PAGE__?{\"id\":\"47\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","47","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"47\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","47","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirling"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirling"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirling"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/48.html b/exps/48.html index da567b5b..b376b0e6 100644 --- a/exps/48.html +++ b/exps/48.html @@ -1 +1 @@ -Sketches | Hurricane
\ No newline at end of file +Sketches | Hurricane
\ No newline at end of file diff --git a/exps/48.txt b/exps/48.txt index 955b52ed..341828ae 100644 --- a/exps/48.txt +++ b/exps/48.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","48","d"],{"children":["__PAGE__?{\"id\":\"48\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","48","d"],{"children":["__PAGE__?{\"id\":\"48\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","48","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"48\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","48","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Hurricane"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Hurricane"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHurricane.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Hurricane"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHurricane.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/49.html b/exps/49.html index 49fa7543..f6babb48 100644 --- a/exps/49.html +++ b/exps/49.html @@ -1 +1 @@ -Sketches | Totoro
\ No newline at end of file +Sketches | Totoro
\ No newline at end of file diff --git a/exps/49.txt b/exps/49.txt index 6a04eb2f..2e73a3c7 100644 --- a/exps/49.txt +++ b/exps/49.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","49","d"],{"children":["__PAGE__?{\"id\":\"49\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","49","d"],{"children":["__PAGE__?{\"id\":\"49\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","49","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"49\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","49","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Totoro"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Totoro"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/totoro/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTotoro.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Totoro"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTotoro.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/5.html b/exps/5.html index adb3e021..6dbe319a 100644 --- a/exps/5.html +++ b/exps/5.html @@ -1 +1 @@ -Sketches | Bloom
\ No newline at end of file +Sketches | Bloom
\ No newline at end of file diff --git a/exps/5.txt b/exps/5.txt index 4bf112d5..813f98f3 100644 --- a/exps/5.txt +++ b/exps/5.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","5","d"],{"children":["__PAGE__?{\"id\":\"5\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","5","d"],{"children":["__PAGE__?{\"id\":\"5\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","5","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"5\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","5","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Bloom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Bloom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNike.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Bloom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNike.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/50.html b/exps/50.html index be9d100e..bcac21ca 100644 --- a/exps/50.html +++ b/exps/50.html @@ -1 +1 @@ -Sketches | Light
\ No newline at end of file +Sketches | Light
\ No newline at end of file diff --git a/exps/50.txt b/exps/50.txt index 35052558..54c6375d 100644 --- a/exps/50.txt +++ b/exps/50.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","50","d"],{"children":["__PAGE__?{\"id\":\"50\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","50","d"],{"children":["__PAGE__?{\"id\":\"50\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","50","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/light/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"50\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","50","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Light"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Light"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/light/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchLight.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Light"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchLight.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/51.html b/exps/51.html index ee02192a..08c74d16 100644 --- a/exps/51.html +++ b/exps/51.html @@ -1 +1 @@ -Sketches | Taichi
\ No newline at end of file +Sketches | Taichi
\ No newline at end of file diff --git a/exps/51.txt b/exps/51.txt index 0f6c5af6..a7febb61 100644 --- a/exps/51.txt +++ b/exps/51.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","51","d"],{"children":["__PAGE__?{\"id\":\"51\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","51","d"],{"children":["__PAGE__?{\"id\":\"51\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","51","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"51\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","51","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Taichi"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Taichi"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/taichi/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTaichi.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Taichi"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTaichi.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/52.html b/exps/52.html index be266b66..c1037392 100644 --- a/exps/52.html +++ b/exps/52.html @@ -1 +1 @@ -Sketches | Rubiks Cube
\ No newline at end of file +Sketches | Rubiks Cube
\ No newline at end of file diff --git a/exps/52.txt b/exps/52.txt index a988f808..16513865 100644 --- a/exps/52.txt +++ b/exps/52.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","52","d"],{"children":["__PAGE__?{\"id\":\"52\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","52","d"],{"children":["__PAGE__?{\"id\":\"52\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","52","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"52\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","52","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Rubiks Cube"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Rubiks Cube"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRubix.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Rubiks Cube"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRubix.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/53.html b/exps/53.html index 4902db77..87af0d24 100644 --- a/exps/53.html +++ b/exps/53.html @@ -1 +1 @@ -Sketches | Black Hole
\ No newline at end of file +Sketches | Black Hole
\ No newline at end of file diff --git a/exps/53.txt b/exps/53.txt index c4d542e5..94f47f62 100644 --- a/exps/53.txt +++ b/exps/53.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","53","d"],{"children":["__PAGE__?{\"id\":\"53\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","53","d"],{"children":["__PAGE__?{\"id\":\"53\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","53","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"53\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","53","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black Hole"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black Hole"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackHole.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black Hole"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackHole.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/54.html b/exps/54.html index 39061a35..54dcbf51 100644 --- a/exps/54.html +++ b/exps/54.html @@ -1 +1 @@ -Sketches | Swirly Liquid
\ No newline at end of file +Sketches | Swirly Liquid
\ No newline at end of file diff --git a/exps/54.txt b/exps/54.txt index 722ce43f..350335b2 100644 --- a/exps/54.txt +++ b/exps/54.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","54","d"],{"children":["__PAGE__?{\"id\":\"54\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","54","d"],{"children":["__PAGE__?{\"id\":\"54\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","54","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"54\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","54","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirly Liquid"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirly Liquid"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid06.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirly Liquid"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid06.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/55.html b/exps/55.html index 450e3797..685f270b 100644 --- a/exps/55.html +++ b/exps/55.html @@ -1 +1 @@ -Sketches | Dots
\ No newline at end of file +Sketches | Dots
\ No newline at end of file diff --git a/exps/55.txt b/exps/55.txt index 0e6a79c4..4d096d67 100644 --- a/exps/55.txt +++ b/exps/55.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","55","d"],{"children":["__PAGE__?{\"id\":\"55\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","55","d"],{"children":["__PAGE__?{\"id\":\"55\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","55","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"55\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","55","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Dots"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Dots"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/circles01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchDots.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Dots"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchDots.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/56.html b/exps/56.html index 814be994..042ea873 100644 --- a/exps/56.html +++ b/exps/56.html @@ -1 +1 @@ -Sketches | Words
\ No newline at end of file +Sketches | Words
\ No newline at end of file diff --git a/exps/56.txt b/exps/56.txt index 4ad7471b..365a3e52 100644 --- a/exps/56.txt +++ b/exps/56.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","56","d"],{"children":["__PAGE__?{\"id\":\"56\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","56","d"],{"children":["__PAGE__?{\"id\":\"56\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","56","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"56\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","56","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Words"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Words"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchChars.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Words"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchChars.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/57.html b/exps/57.html index 38761cbb..a20e9eac 100644 --- a/exps/57.html +++ b/exps/57.html @@ -1 +1 @@ -Sketches | Flower
\ No newline at end of file +Sketches | Flower
\ No newline at end of file diff --git a/exps/57.txt b/exps/57.txt index fc27edb1..b6b4f478 100644 --- a/exps/57.txt +++ b/exps/57.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","57","d"],{"children":["__PAGE__?{\"id\":\"57\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","57","d"],{"children":["__PAGE__?{\"id\":\"57\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","57","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"57\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","57","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flower"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flower"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flowers/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFlower.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flower"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFlower.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/58.html b/exps/58.html index 79e9311f..fa88648e 100644 --- a/exps/58.html +++ b/exps/58.html @@ -1 +1 @@ -Sketches | Face Particles
\ No newline at end of file +Sketches | Face Particles
\ No newline at end of file diff --git a/exps/58.txt b/exps/58.txt index 67afa7a1..5e240c98 100644 --- a/exps/58.txt +++ b/exps/58.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","58","d"],{"children":["__PAGE__?{\"id\":\"58\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","58","d"],{"children":["__PAGE__?{\"id\":\"58\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","58","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"58\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","58","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Face Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Face Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Face Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/59.html b/exps/59.html index 2e3af040..6da38c42 100644 --- a/exps/59.html +++ b/exps/59.html @@ -1 +1 @@ -Sketches | Matrix Rain
\ No newline at end of file +Sketches | Matrix Rain
\ No newline at end of file diff --git a/exps/59.txt b/exps/59.txt index 459624f7..78cb3e4d 100644 --- a/exps/59.txt +++ b/exps/59.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","59","d"],{"children":["__PAGE__?{\"id\":\"59\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","59","d"],{"children":["__PAGE__?{\"id\":\"59\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","59","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"59\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","59","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Matrix Rain"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Matrix Rain"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/matrix/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMatrix.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Matrix Rain"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMatrix.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/6.html b/exps/6.html index 2373e140..2f420b20 100644 --- a/exps/6.html +++ b/exps/6.html @@ -1 +1 @@ -Sketches | Feathers
\ No newline at end of file +Sketches | Feathers
\ No newline at end of file diff --git a/exps/6.txt b/exps/6.txt index c167bf50..69dd201b 100644 --- a/exps/6.txt +++ b/exps/6.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","6","d"],{"children":["__PAGE__?{\"id\":\"6\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","6","d"],{"children":["__PAGE__?{\"id\":\"6\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","6","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"6\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","6","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Feathers"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Feathers"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/feathers/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBloom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Feathers"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBloom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/60.html b/exps/60.html index 88c4c21e..cece6455 100644 --- a/exps/60.html +++ b/exps/60.html @@ -1 +1 @@ -Sketches | Face Particles
\ No newline at end of file +Sketches | Face Particles
\ No newline at end of file diff --git a/exps/60.txt b/exps/60.txt index 3e1c9a0a..eb10ce49 100644 --- a/exps/60.txt +++ b/exps/60.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","60","d"],{"children":["__PAGE__?{\"id\":\"60\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","60","d"],{"children":["__PAGE__?{\"id\":\"60\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","60","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"60\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","60","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Face Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Face Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle02.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Face Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle02.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/61.html b/exps/61.html index d08756d0..35e4fb93 100644 --- a/exps/61.html +++ b/exps/61.html @@ -1 +1 @@ -Sketches | Trails
\ No newline at end of file +Sketches | Trails
\ No newline at end of file diff --git a/exps/61.txt b/exps/61.txt index 52d2664a..63b323e1 100644 --- a/exps/61.txt +++ b/exps/61.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","61","d"],{"children":["__PAGE__?{\"id\":\"61\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","61","d"],{"children":["__PAGE__?{\"id\":\"61\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","61","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"61\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","61","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Trails"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Trails"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/trails02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTrails.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Trails"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTrails.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/62.html b/exps/62.html index 44b3cc8c..94fca210 100644 --- a/exps/62.html +++ b/exps/62.html @@ -1 +1 @@ -Sketches | Faceprint
\ No newline at end of file +Sketches | Faceprint
\ No newline at end of file diff --git a/exps/62.txt b/exps/62.txt index 5fb91d68..b363e26d 100644 --- a/exps/62.txt +++ b/exps/62.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","62","d"],{"children":["__PAGE__?{\"id\":\"62\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","62","d"],{"children":["__PAGE__?{\"id\":\"62\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","62","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"62\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","62","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Faceprint"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Faceprint"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceprint.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Faceprint"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceprint.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/63.html b/exps/63.html index d7a3e99e..53c6ad07 100644 --- a/exps/63.html +++ b/exps/63.html @@ -1 +1 @@ -Sketches | Pulse
\ No newline at end of file +Sketches | Pulse
\ No newline at end of file diff --git a/exps/63.txt b/exps/63.txt index f9342255..9882a47c 100644 --- a/exps/63.txt +++ b/exps/63.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","63","d"],{"children":["__PAGE__?{\"id\":\"63\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","63","d"],{"children":["__PAGE__?{\"id\":\"63\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","63","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"63\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","63","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Pulse"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Pulse"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ripples/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRipple.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Pulse"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRipple.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/64.html b/exps/64.html index ae3af091..4c667919 100644 --- a/exps/64.html +++ b/exps/64.html @@ -1 +1 @@ -Sketches | Blocks
\ No newline at end of file +Sketches | Blocks
\ No newline at end of file diff --git a/exps/64.txt b/exps/64.txt index 416f72c5..e747a7b9 100644 --- a/exps/64.txt +++ b/exps/64.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","64","d"],{"children":["__PAGE__?{\"id\":\"64\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","64","d"],{"children":["__PAGE__?{\"id\":\"64\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","64","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"64\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","64","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blocks"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blocks"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlock0.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blocks"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlock0.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/65.html b/exps/65.html index abbcb191..071295f9 100644 --- a/exps/65.html +++ b/exps/65.html @@ -1 +1 @@ -Sketches | Blocks - Hands
\ No newline at end of file +Sketches | Blocks - Hands
\ No newline at end of file diff --git a/exps/65.txt b/exps/65.txt index d930746c..02ceee34 100644 --- a/exps/65.txt +++ b/exps/65.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","65","d"],{"children":["__PAGE__?{\"id\":\"65\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","65","d"],{"children":["__PAGE__?{\"id\":\"65\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","65","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"65\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","65","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blocks - Hands"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blocks - Hands"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlockHand.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blocks - Hands"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlockHand.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/66.html b/exps/66.html index 72537d48..b5d0bbdb 100644 --- a/exps/66.html +++ b/exps/66.html @@ -1 +1 @@ -Sketches | Disintegrate
\ No newline at end of file +Sketches | Disintegrate
\ No newline at end of file diff --git a/exps/66.txt b/exps/66.txt index 5e78dbc2..5ab8b4ef 100644 --- a/exps/66.txt +++ b/exps/66.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","66","d"],{"children":["__PAGE__?{\"id\":\"66\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","66","d"],{"children":["__PAGE__?{\"id\":\"66\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","66","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"66\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","66","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Disintegrate"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Disintegrate"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDisintegrate.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Disintegrate"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDisintegrate.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/67.html b/exps/67.html index 91ab4060..cb6c7558 100644 --- a/exps/67.html +++ b/exps/67.html @@ -1 +1 @@ -Sketches | Inscript
\ No newline at end of file +Sketches | Inscript
\ No newline at end of file diff --git a/exps/67.txt b/exps/67.txt index a16764db..e68a8193 100644 --- a/exps/67.txt +++ b/exps/67.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","67","d"],{"children":["__PAGE__?{\"id\":\"67\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","67","d"],{"children":["__PAGE__?{\"id\":\"67\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","67","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"67\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","67","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Inscript"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Inscript"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/inscript/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverInscript.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Inscript"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverInscript.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/68.html b/exps/68.html index 45570e6c..d7b51d17 100644 --- a/exps/68.html +++ b/exps/68.html @@ -1 +1 @@ -Sketches | White Particles
\ No newline at end of file +Sketches | White Particles
\ No newline at end of file diff --git a/exps/68.txt b/exps/68.txt index 948c4540..009a7a35 100644 --- a/exps/68.txt +++ b/exps/68.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","68","d"],{"children":["__PAGE__?{\"id\":\"68\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","68","d"],{"children":["__PAGE__?{\"id\":\"68\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","68","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"68\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","68","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | White Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | White Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWhiteParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | White Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWhiteParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/69.html b/exps/69.html index 6b1d762d..2a98e1ee 100644 --- a/exps/69.html +++ b/exps/69.html @@ -1 +1 @@ -Sketches | Ribbons
\ No newline at end of file +Sketches | Ribbons
\ No newline at end of file diff --git a/exps/69.txt b/exps/69.txt index 6910fbef..7cae721b 100644 --- a/exps/69.txt +++ b/exps/69.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","69","d"],{"children":["__PAGE__?{\"id\":\"69\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","69","d"],{"children":["__PAGE__?{\"id\":\"69\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","69","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"69\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","69","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Ribbons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Ribbons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRibbon01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Ribbons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRibbon01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/7.html b/exps/7.html index a5ec7007..64ff80f7 100644 --- a/exps/7.html +++ b/exps/7.html @@ -1 +1 @@ -Sketches | Flocking + Clustering
\ No newline at end of file +Sketches | Flocking + Clustering
\ No newline at end of file diff --git a/exps/7.txt b/exps/7.txt index e8371da5..5988750b 100644 --- a/exps/7.txt +++ b/exps/7.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","7","d"],{"children":["__PAGE__?{\"id\":\"7\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","7","d"],{"children":["__PAGE__?{\"id\":\"7\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","7","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"7\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","7","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flocking + Clustering"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flocking + Clustering"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchClustering.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flocking + Clustering"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchClustering.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/70.html b/exps/70.html index a6ae64a6..e87b2f55 100644 --- a/exps/70.html +++ b/exps/70.html @@ -1 +1 @@ -Sketches | Blossom
\ No newline at end of file +Sketches | Blossom
\ No newline at end of file diff --git a/exps/70.txt b/exps/70.txt index 461f165e..1b7f7e3d 100644 --- a/exps/70.txt +++ b/exps/70.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","70","d"],{"children":["__PAGE__?{\"id\":\"70\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","70","d"],{"children":["__PAGE__?{\"id\":\"70\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","70","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"70\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","70","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blossom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blossom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlossom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blossom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlossom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/71.html b/exps/71.html new file mode 100644 index 00000000..e5785108 --- /dev/null +++ b/exps/71.html @@ -0,0 +1 @@ +Sketches | Floating Ribbons
\ No newline at end of file diff --git a/exps/71.txt b/exps/71.txt new file mode 100644 index 00000000..01e10c30 --- /dev/null +++ b/exps/71.txt @@ -0,0 +1,10 @@ +1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","71","d"],{"children":["__PAGE__?{\"id\":\"71\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} +3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","71","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"71\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","71","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] +4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Floating Ribbons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Floating Ribbons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchribbon.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Floating Ribbons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchribbon.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] +8:null diff --git a/exps/8.html b/exps/8.html index b02ad543..631b5d29 100644 --- a/exps/8.html +++ b/exps/8.html @@ -1 +1 @@ -Sketches | Glass Statue
\ No newline at end of file +Sketches | Glass Statue
\ No newline at end of file diff --git a/exps/8.txt b/exps/8.txt index 02725472..67899930 100644 --- a/exps/8.txt +++ b/exps/8.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","8","d"],{"children":["__PAGE__?{\"id\":\"8\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","8","d"],{"children":["__PAGE__?{\"id\":\"8\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","8","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"8\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","8","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Glass Statue"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Glass Statue"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRefraction.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Glass Statue"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRefraction.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/exps/9.html b/exps/9.html index 85a57825..bb99850d 100644 --- a/exps/9.html +++ b/exps/9.html @@ -1 +1 @@ -Sketches | Golden Powder
\ No newline at end of file +Sketches | Golden Powder
\ No newline at end of file diff --git a/exps/9.txt b/exps/9.txt index 70581695..16bb3592 100644 --- a/exps/9.txt +++ b/exps/9.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","9","d"],{"children":["__PAGE__?{\"id\":\"9\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","9","d"],{"children":["__PAGE__?{\"id\":\"9\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","9","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"9\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","9","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Golden Powder"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Golden Powder"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/mask/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/textureProj.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Golden Powder"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/textureProj.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/index.html b/index.html index dbe7767a..421bcb9b 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Sketches | Yi-Wen Lin
\ No newline at end of file +Sketches | Yi-Wen Lin
\ No newline at end of file diff --git a/index.txt b/index.txt index f80f2625..ce68f5a2 100644 --- a/index.txt +++ b/index.txt @@ -1,12 +1,12 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] -5:HL["/Sketches/_next/static/css/128f1c477e287a41.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$L8","$L9",null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/128f1c477e287a41.css","precedence":"next"}]]}]}]}],null] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +5:HL["/Sketches/_next/static/css/0ca7ceed7ee1546e.css","style"] +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$L8","$L9",null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/0ca7ceed7ee1546e.css","precedence":"next"}]]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Yi-Wen Lin"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"http://yiwenl.github.io/Sketches/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] -a:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-a5208d7d8d3321bf.js"],"name":"","async":false} -b:I{"id":6964,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-a5208d7d8d3321bf.js"],"name":"Image","async":false} -9:["$","main",null,{"className":"$undefined","children":[["$","div",null,{"className":"Header_aboutIcon__Ti6_n","children":["$","$La",null,{"href":"/about","as":"/about","children":["$","svg",null,{"height":"32px","viewBox":"0 0 32 32","width":"32px","children":["$","path",null,{"d":"M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"}]}]}]}],["$","div",null,{"className":"page_container__aoG4z","children":["$","div",null,{"className":"Experiments_listContainer__ggDdv","children":[["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/70","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlossom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/69","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRibbon01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/68","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWhiteParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/67","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverInscript.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/66","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDisintegrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/65","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlockHand.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/64","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlock0.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/63","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRipple.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/62","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceprint.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/61","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTrails.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/60","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/59","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMatrix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/58","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/57","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFlower.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/56","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchChars.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/55","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchDots.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/54","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid06.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/53","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackHole.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/52","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRubix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/51","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTaichi.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/50","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchLight.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/49","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTotoro.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/48","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHurricane.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/47","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/46","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSoundwaves.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/45","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWires.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/44","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCamera01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/43","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchStrangeBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/42","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid04.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/41","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid03.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/40","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/39","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/38","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSubstrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/37","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDissolve.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/36","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverCodevember.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/35","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaurice.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/34","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGeometries.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/33","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPattern.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/32","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPulse.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/31","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaelstrom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/30","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPlates.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/29","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGlass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/28","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHannya.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/27","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchIsland.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/26","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchComic.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/25","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSplashes.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/24","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackRain.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/23","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/22","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNeonDemon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/21","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPaintingParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/20","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPainting.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/19","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWolf.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/18","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGrass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/17","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackGold.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/16","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTurbulence.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/15","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/14","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchParticleValley.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/13","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCrystal.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/12","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/river.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/11","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/seasons.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/10","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/costume.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/9","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/textureProj.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/8","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRefraction.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/7","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchClustering.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/6","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBloom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/5","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNike.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/4","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverRosetta.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/3","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverFlocking.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/2","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverNefertiti.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/1","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverReflection.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/0","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverParticles.jpg","alt":"","fill":true}]}]}]}]]}]}]]}] +a:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-4a666375abe83fa7.js"],"name":"","async":false} +b:I{"id":6964,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-4a666375abe83fa7.js"],"name":"Image","async":false} +9:["$","main",null,{"className":"$undefined","children":[["$","div",null,{"className":"Header_aboutIcon__Ti6_n","children":["$","$La",null,{"href":"/about","as":"/about","children":["$","svg",null,{"height":"32px","viewBox":"0 0 32 32","width":"32px","children":["$","path",null,{"d":"M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"}]}]}]}],["$","div",null,{"className":"page_container__aoG4z","children":["$","div",null,{"className":"Experiments_listContainer__ggDdv","children":[["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/71","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchribbon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/70","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlossom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/69","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRibbon01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/68","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWhiteParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/67","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverInscript.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/66","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDisintegrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/65","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlockHand.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/64","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlock0.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/63","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRipple.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/62","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceprint.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/61","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTrails.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/60","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/59","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMatrix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/58","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/57","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFlower.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/56","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchChars.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/55","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchDots.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/54","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid06.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/53","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackHole.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/52","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRubix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/51","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTaichi.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/50","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchLight.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/49","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTotoro.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/48","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHurricane.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/47","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/46","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSoundwaves.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/45","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWires.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/44","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCamera01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/43","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchStrangeBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/42","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid04.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/41","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid03.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/40","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/39","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/38","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSubstrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/37","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDissolve.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/36","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverCodevember.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/35","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaurice.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/34","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGeometries.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/33","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPattern.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/32","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPulse.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/31","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaelstrom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/30","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPlates.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/29","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGlass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/28","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHannya.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/27","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchIsland.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/26","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchComic.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/25","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSplashes.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/24","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackRain.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/23","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/22","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNeonDemon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/21","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPaintingParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/20","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPainting.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/19","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWolf.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/18","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGrass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/17","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackGold.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/16","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTurbulence.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/15","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/14","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchParticleValley.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/13","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCrystal.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/12","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/river.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/11","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/seasons.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/10","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/costume.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/9","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/textureProj.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/8","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRefraction.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/7","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchClustering.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/6","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBloom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/5","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNike.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/4","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverRosetta.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/3","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverFlocking.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/2","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverNefertiti.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/1","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverReflection.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/0","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverParticles.jpg","alt":"","fill":true}]}]}]}]]}]}]]}] 8:null diff --git a/v2/.next/cache/webpack/client-development/0.pack.gz b/v2/.next/cache/webpack/client-development/0.pack.gz index e9bd8f1a..30d8ce8f 100644 Binary files a/v2/.next/cache/webpack/client-development/0.pack.gz and b/v2/.next/cache/webpack/client-development/0.pack.gz differ diff --git a/v2/.next/cache/webpack/client-development/1.pack.gz b/v2/.next/cache/webpack/client-development/1.pack.gz index 7a97e208..66b7f7b2 100644 Binary files a/v2/.next/cache/webpack/client-development/1.pack.gz and b/v2/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/v2/.next/cache/webpack/client-development/4.pack.gz b/v2/.next/cache/webpack/client-development/4.pack.gz index f331f2aa..48300824 100644 Binary files a/v2/.next/cache/webpack/client-development/4.pack.gz and b/v2/.next/cache/webpack/client-development/4.pack.gz differ diff --git a/v2/.next/cache/webpack/client-development/index.pack.gz b/v2/.next/cache/webpack/client-development/index.pack.gz index 19e737b9..a7b436f7 100644 Binary files a/v2/.next/cache/webpack/client-development/index.pack.gz and b/v2/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/v2/.next/cache/webpack/client-development/index.pack.gz.old b/v2/.next/cache/webpack/client-development/index.pack.gz.old index 7acc655f..124bf4fe 100644 Binary files a/v2/.next/cache/webpack/client-development/index.pack.gz.old and b/v2/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/v2/.next/cache/webpack/client-production/10.pack b/v2/.next/cache/webpack/client-production/10.pack new file mode 100644 index 00000000..d61a55d3 Binary files /dev/null and b/v2/.next/cache/webpack/client-production/10.pack differ diff --git a/v2/.next/cache/webpack/client-production/4.pack b/v2/.next/cache/webpack/client-production/4.pack index bc6123bc..d395405d 100644 Binary files a/v2/.next/cache/webpack/client-production/4.pack and b/v2/.next/cache/webpack/client-production/4.pack differ diff --git a/v2/.next/cache/webpack/client-production/index.pack b/v2/.next/cache/webpack/client-production/index.pack index 059d2831..4c601501 100644 Binary files a/v2/.next/cache/webpack/client-production/index.pack and b/v2/.next/cache/webpack/client-production/index.pack differ diff --git a/v2/.next/cache/webpack/client-production/index.pack.old b/v2/.next/cache/webpack/client-production/index.pack.old index 0727bad8..059d2831 100644 Binary files a/v2/.next/cache/webpack/client-production/index.pack.old and b/v2/.next/cache/webpack/client-production/index.pack.old differ diff --git a/v2/.next/cache/webpack/server-development/0.pack.gz b/v2/.next/cache/webpack/server-development/0.pack.gz index bc679fbc..c9a1b28f 100644 Binary files a/v2/.next/cache/webpack/server-development/0.pack.gz and b/v2/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/v2/.next/cache/webpack/server-development/1.pack.gz b/v2/.next/cache/webpack/server-development/1.pack.gz index 53b77dbd..2d5d50bb 100644 Binary files a/v2/.next/cache/webpack/server-development/1.pack.gz and b/v2/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/v2/.next/cache/webpack/server-development/2.pack.gz b/v2/.next/cache/webpack/server-development/2.pack.gz index e1b05f29..3640a4eb 100644 Binary files a/v2/.next/cache/webpack/server-development/2.pack.gz and b/v2/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/v2/.next/cache/webpack/server-development/3.pack.gz b/v2/.next/cache/webpack/server-development/3.pack.gz index a7359fbd..a55bf0d8 100644 Binary files a/v2/.next/cache/webpack/server-development/3.pack.gz and b/v2/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/v2/.next/cache/webpack/server-development/index.pack.gz b/v2/.next/cache/webpack/server-development/index.pack.gz index 00492c55..c402358d 100644 Binary files a/v2/.next/cache/webpack/server-development/index.pack.gz and b/v2/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/v2/.next/cache/webpack/server-development/index.pack.gz.old b/v2/.next/cache/webpack/server-development/index.pack.gz.old index 34858483..30af16fd 100644 Binary files a/v2/.next/cache/webpack/server-development/index.pack.gz.old and b/v2/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/v2/.next/cache/webpack/server-production/4.pack b/v2/.next/cache/webpack/server-production/4.pack index 2cd4c5fc..27330005 100644 Binary files a/v2/.next/cache/webpack/server-production/4.pack and b/v2/.next/cache/webpack/server-production/4.pack differ diff --git a/v2/.next/cache/webpack/server-production/6.pack b/v2/.next/cache/webpack/server-production/6.pack index 9fa3df35..975ecd72 100644 Binary files a/v2/.next/cache/webpack/server-production/6.pack and b/v2/.next/cache/webpack/server-production/6.pack differ diff --git a/v2/.next/cache/webpack/server-production/index.pack b/v2/.next/cache/webpack/server-production/index.pack index 592ab70d..442978fb 100644 Binary files a/v2/.next/cache/webpack/server-production/index.pack and b/v2/.next/cache/webpack/server-production/index.pack differ diff --git a/v2/.next/cache/webpack/server-production/index.pack.old b/v2/.next/cache/webpack/server-production/index.pack.old index fd0c51c6..592ab70d 100644 Binary files a/v2/.next/cache/webpack/server-production/index.pack.old and b/v2/.next/cache/webpack/server-production/index.pack.old differ diff --git a/v2/.next/server/app/exps/[id]/page.js b/v2/.next/server/app/exps/[id]/page.js index 004039ee..70ace0a1 100644 --- a/v2/.next/server/app/exps/[id]/page.js +++ b/v2/.next/server/app/exps/[id]/page.js @@ -191,7 +191,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([\n {\n cover: \"assets/img/sketchCoverParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html\",\n title: \"Particles\"\n },\n {\n cover: \"assets/img/sketchCoverReflection.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html\",\n title: \"Reflections\"\n },\n {\n cover: \"assets/img/sketchCoverNefertiti.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html\",\n title: \"Nefertiti\"\n },\n {\n cover: \"assets/img/sketchCoverFlocking.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html\",\n title: \"Flocking\"\n },\n {\n cover: \"assets/img/sketchCoverRosetta.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html\",\n title: \"Rosetta\"\n },\n {\n cover: \"assets/img/coverSketchNike.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html\",\n title: \"Bloom\"\n },\n {\n cover: \"assets/img/coverSketchBloom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html\",\n title: \"Feathers\"\n },\n {\n cover: \"assets/img/coverSketchClustering.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html\",\n title: \"Flocking + Clustering\"\n },\n {\n cover: \"assets/img/coverSketchRefraction.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html\",\n title: \"Glass Statue\"\n },\n {\n cover: \"assets/img/textureProj.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html\",\n title: \"Golden Powder\"\n },\n {\n cover: \"assets/img/costume.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html\",\n title: \"Le Bel Costume\"\n },\n {\n cover: \"assets/img/seasons.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html\",\n title: \"Four seasons\"\n },\n {\n cover: \"assets/img/river.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/River/dist/index.html\",\n title: \"River\"\n },\n {\n cover: \"assets/img/coverSketchCrystal.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html\",\n title: \"Crystallize\"\n },\n {\n cover: \"assets/img/coverSketchParticleValley.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html\",\n title: \"Particle Valley\"\n },\n {\n cover: \"assets/img/coverSketchBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html\",\n title: \"Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchTurbulence.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html\",\n title: \"Turbulence\"\n },\n {\n cover: \"assets/img/coverSketchBlackGold.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchGrass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchWolf.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html\",\n title: \"Wolf\"\n },\n {\n cover: \"assets/img/coverSketchPainting.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html\",\n title: \"Painting Landscape\"\n },\n {\n cover: \"assets/img/coverSketchPaintingParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchNeonDemon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchSwirl.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html\",\n title: \"Swirling Particles\"\n },\n {\n cover: \"assets/img/coverSketchBlackRain.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html\",\n title: \"Black Rain\"\n },\n {\n cover: \"assets/img/coverSketchSplashes.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html\",\n title: \"Splashes\"\n },\n {\n cover: \"assets/img/coverSketchComic.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html\",\n title: \"Comic style\"\n },\n {\n cover: \"assets/img/coverSketchIsland.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/island/dist/index.html\",\n title: \"Island\"\n },\n {\n cover: \"assets/img/coverSketchHannya.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html\",\n title: \"Hannya\"\n },\n {\n cover: \"assets/img/coverSketchGlass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html\",\n title: \"Painting Glass\"\n },\n {\n cover: \"assets/img/coverSketchPlates.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchMaelstrom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchPulse.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchPattern.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html\",\n title: \"Patterns\"\n },\n {\n cover: \"assets/img/coverSketchGeometries.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html\",\n title: \"Disappearing Geometries\"\n },\n {\n cover: \"assets/img/coverSketchMaurice.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html\",\n title: \"Maurice the Sea Cat\"\n },\n {\n cover: \"assets/img/coverCodevember.jpg\",\n url: \"http://yiwenl.github.io/Codevember/2017/\",\n title: \"Codevember 2017\"\n },\n {\n cover: \"assets/img/coverDissolve.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html\",\n title: \"Dissolve\"\n },\n {\n cover: \"assets/img/coverSketchSubstrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html\",\n title: \"Substrate sphere\"\n },\n {\n cover: \"assets/img/coverSketchFluid01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html\",\n title: \"Liquid\"\n },\n {\n cover: \"assets/img/coverSketchFluid02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html\",\n title: \"Liquid 02\"\n },\n {\n cover: \"assets/img/coverSketchFluid03.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html\",\n title: \"Liquid 03\"\n },\n {\n cover: \"assets/img/coverSketchFluid04.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html\",\n title: \"Liquid 04\"\n },\n {\n cover: \"assets/img/coverSketchStrangeBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html\",\n title: \"Strange Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchCamera01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html\",\n title: \"untitled\"\n },\n {\n cover: \"assets/img/coverSketchWires.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html\",\n title: \"Wires\"\n },\n {\n cover: \"assets/img/coverSketchSoundwaves.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html\",\n title: \"Waves\"\n },\n {\n cover: \"assets/img/coverSketchSwirl01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html\",\n title: \"Swirling\"\n },\n {\n cover: \"assets/img/coverSketchHurricane.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html\",\n title: \"Hurricane\"\n },\n {\n cover: \"assets/img/coverSketchTotoro.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html\",\n title: \"Totoro\"\n },\n {\n cover: \"assets/img/coverSketchLight.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/light/dist/index.html\",\n title: \"Light\"\n },\n {\n cover: \"assets/img/coverSketchTaichi.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html\",\n title: \"Taichi\"\n },\n {\n cover: \"assets/img/coverSketchRubix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html\",\n title: \"Rubiks Cube\"\n },\n {\n cover: \"assets/img/coverSketchBlackHole.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html\",\n title: \"Black Hole\"\n },\n {\n cover: \"assets/img/coverSketchFluid06.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html\",\n title: \"Swirly Liquid\"\n },\n {\n cover: \"assets/img/coverSketchDots.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html\",\n title: \"Dots\"\n },\n {\n cover: \"assets/img/coverSketchChars.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html\",\n title: \"Words\"\n },\n {\n cover: \"assets/img/coverSketchFlower.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html\",\n title: \"Flower\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchMatrix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html\",\n title: \"Matrix Rain\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchTrails.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html\",\n title: \"Trails\"\n },\n {\n cover: \"assets/img/coverSketchFaceprint.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html\",\n title: \"Faceprint\"\n },\n {\n cover: \"assets/img/coverSketchRipple.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchBlock0.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html\",\n title: \"Blocks\"\n },\n {\n cover: \"assets/img/coverSketchBlockHand.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html\",\n title: \"Blocks - Hands\"\n },\n {\n cover: \"assets/img/coverDisintegrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html\",\n title: \"Disintegrate\"\n },\n {\n cover: \"assets/img/coverInscript.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html\",\n title: \"Inscript\"\n },\n {\n cover: \"assets/img/coverSketchWhiteParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html\",\n title: \"White Particles\"\n },\n {\n cover: \"assets/img/coverSketchRibbon01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html\",\n title: \"Ribbons\"\n },\n {\n cover: \"assets/img/coverSketchBlossom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html\",\n title: \"Blossom\"\n }\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL21vZGVsL2RhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlO0lBQ2I7UUFDRUEsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7Q0FDRCxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2tldGNoZXMvLi9zcmMvYXBwL21vZGVsL2RhdGEuanM/ZWFiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBbXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUGFydGljbGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc2VsZnNoYWRpbmdQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUmVmbGVjdGlvbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3JlZmxlY3RpdmVTb3VuZFZpcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSZWZsZWN0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3Zlck5lZmVydGl0aS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL05lZmVydGl0aTEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTmVmZXJ0aXRpXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyRmxvY2tpbmcuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mbG9ja2luZ0JXL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZsb2NraW5nXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUm9zZXR0YS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3Jvc2V0dGEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUm9zZXR0YVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE5pa2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9CbG9vbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9vbVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb29tLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmVhdGhlcnMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmVhdGhlcnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDbHVzdGVyaW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvY2tpbmcwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG9ja2luZyArIENsdXN0ZXJpbmdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hSZWZyYWN0aW9uLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvUmVmYWN0aW9uL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkdsYXNzIFN0YXR1ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy90ZXh0dXJlUHJvai5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hc2svZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiR29sZGVuIFBvd2RlclwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3N0dW1lLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd3JhcC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMZSBCZWwgQ29zdHVtZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9zZWFzb25zLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxvc3NvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGb3VyIHNlYXNvbnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvcml2ZXIuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9SaXZlci9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSaXZlclwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENyeXN0YWwuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9uaWtlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkNyeXN0YWxsaXplXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUGFydGljbGVWYWxsZXkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXJ0aWNsZXNWYWxsZXkvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFydGljbGUgVmFsbGV5XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQnViYmxlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3BhcnRpY2xlczAzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJ1YmJsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hUdXJidWxlbmNlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdHVyYnVsZW5jZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJUdXJidWxlbmNlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxhY2tHb2xkLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tHb2xkL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsYWNrIGFuZCBHb2xkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoR3Jhc3MuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ncmFzc0luc3RhbmNlZDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgYW5kIEdvbGRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXb2xmLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd29sZjIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV29sZlwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhaW50aW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZHJhd2luZ0xhbmRzY2FwZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBMYW5kc2NhcGVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYWludGluZ1BhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N0cm9rZVRvUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhaW50aW5nIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE5lb25EZW1vbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL25lb25EZW1vbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTd2lybC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N3aXJsaW5nL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN3aXJsaW5nIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsYWNrUmFpbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2JsYWNrUmFpbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBSYWluXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3BsYXNoZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zcGxhc2hlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTcGxhc2hlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENvbWljLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY29taWMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQ29taWMgc3R5bGVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hJc2xhbmQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9pc2xhbmQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSXNsYW5kXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoSGFubnlhLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvSGFubnlhL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkhhbm55YVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEdsYXNzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbmVvbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBHbGFzc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBsYXRlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hZWxzdHJvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJNYWVsc3Ryb21cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hNYWVsc3Ryb20uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja0hvbGUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWFlbHN0cm9tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUHVsc2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wdWxzZVBhcnRpY2xlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQdWxzZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhdHRlcm4uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXR0ZXJuQ3ViZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGF0dGVybnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hHZW9tZXRyaWVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvNGRDdWJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc2FwcGVhcmluZyBHZW9tZXRyaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoTWF1cmljZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hdXJpY2UvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWF1cmljZSB0aGUgU2VhIENhdFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlckNvZGV2ZW1iZXIuanBnXCIsXG4gICAgdXJsOiBcImh0dHA6Ly95aXdlbmwuZ2l0aHViLmlvL0NvZGV2ZW1iZXIvMjAxNy9cIixcbiAgICB0aXRsZTogXCJDb2RldmVtYmVyIDIwMTdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJEaXNzb2x2ZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Rpc3NvbHZlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc3NvbHZlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3Vic3RyYXRlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3Vic3RyYXRlU3BoZXJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN1YnN0cmF0ZSBzcGhlcmVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDA0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwNC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTdHJhbmdlQnViYmxlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N0cmFuZ2VCdWJibGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN0cmFuZ2UgQnViYmxlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENhbWVyYTAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY2FtZXJhMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwidW50aXRsZWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXaXJlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dpcmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldpcmVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU291bmR3YXZlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3NvdW5kd2F2ZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV2F2ZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTd2lybDAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3dpcmxpbmcwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTd2lybGluZ1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEh1cnJpY2FuZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3R5cGhvb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSHVycmljYW5lXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVG90b3JvLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdG90b3JvL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRvdG9yb1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaExpZ2h0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbGlnaHQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlnaHRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hUYWljaGkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy90YWljaGkvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVGFpY2hpXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUnViaXguanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ydWJpeEN1YmUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUnViaWtzIEN1YmVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbGFja0hvbGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja2hvbGUwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBIb2xlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwNi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDYvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3dpcmx5IExpcXVpZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaERvdHMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9jaXJjbGVzMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRG90c1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENoYXJzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3V0cmFGbG93L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldvcmRzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmxvd2VyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvd2Vycy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG93ZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGYWNlUGFydGljbGUwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VQYXJ0aWNsZXMwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE1hdHJpeC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hdHJpeC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJNYXRyaXggUmFpblwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZhY2VQYXJ0aWNsZTAyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZVBhcnRpY2xlczAyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZhY2UgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVHJhaWxzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdHJhaWxzMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVHJhaWxzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmFjZXByaW50LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZXByaW50L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZhY2VwcmludFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJpcHBsZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3JpcHBsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUHVsc2VcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9jazAuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibG9ja3MxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb2Nrc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb2NrSGFuZC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Jsb2NrczRfaGFuZHMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxvY2tzIC0gSGFuZHNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJEaXNpbnRlZ3JhdGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mYWNlUGFydGljbGVzMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRGlzaW50ZWdyYXRlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVySW5zY3JpcHQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9pbnNjcmlwdC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJJbnNjcmlwdFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFdoaXRlUGFydGljbGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd2hpdGVQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV2hpdGUgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUmliYm9uMDEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yaWJib24wMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSaWJib25zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxvc3NvbS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2RhcmtCbG9zc29tL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb3Nzb21cIixcbiAgfSxcbl07XG4iXSwibmFtZXMiOlsiY292ZXIiLCJ1cmwiLCJ0aXRsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./src/app/model/data.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([\n {\n cover: \"assets/img/sketchCoverParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html\",\n title: \"Particles\"\n },\n {\n cover: \"assets/img/sketchCoverReflection.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html\",\n title: \"Reflections\"\n },\n {\n cover: \"assets/img/sketchCoverNefertiti.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html\",\n title: \"Nefertiti\"\n },\n {\n cover: \"assets/img/sketchCoverFlocking.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html\",\n title: \"Flocking\"\n },\n {\n cover: \"assets/img/sketchCoverRosetta.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html\",\n title: \"Rosetta\"\n },\n {\n cover: \"assets/img/coverSketchNike.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html\",\n title: \"Bloom\"\n },\n {\n cover: \"assets/img/coverSketchBloom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html\",\n title: \"Feathers\"\n },\n {\n cover: \"assets/img/coverSketchClustering.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html\",\n title: \"Flocking + Clustering\"\n },\n {\n cover: \"assets/img/coverSketchRefraction.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html\",\n title: \"Glass Statue\"\n },\n {\n cover: \"assets/img/textureProj.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html\",\n title: \"Golden Powder\"\n },\n {\n cover: \"assets/img/costume.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html\",\n title: \"Le Bel Costume\"\n },\n {\n cover: \"assets/img/seasons.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html\",\n title: \"Four seasons\"\n },\n {\n cover: \"assets/img/river.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/River/dist/index.html\",\n title: \"River\"\n },\n {\n cover: \"assets/img/coverSketchCrystal.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html\",\n title: \"Crystallize\"\n },\n {\n cover: \"assets/img/coverSketchParticleValley.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html\",\n title: \"Particle Valley\"\n },\n {\n cover: \"assets/img/coverSketchBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html\",\n title: \"Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchTurbulence.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html\",\n title: \"Turbulence\"\n },\n {\n cover: \"assets/img/coverSketchBlackGold.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchGrass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchWolf.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html\",\n title: \"Wolf\"\n },\n {\n cover: \"assets/img/coverSketchPainting.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html\",\n title: \"Painting Landscape\"\n },\n {\n cover: \"assets/img/coverSketchPaintingParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchNeonDemon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchSwirl.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html\",\n title: \"Swirling Particles\"\n },\n {\n cover: \"assets/img/coverSketchBlackRain.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html\",\n title: \"Black Rain\"\n },\n {\n cover: \"assets/img/coverSketchSplashes.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html\",\n title: \"Splashes\"\n },\n {\n cover: \"assets/img/coverSketchComic.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html\",\n title: \"Comic style\"\n },\n {\n cover: \"assets/img/coverSketchIsland.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/island/dist/index.html\",\n title: \"Island\"\n },\n {\n cover: \"assets/img/coverSketchHannya.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html\",\n title: \"Hannya\"\n },\n {\n cover: \"assets/img/coverSketchGlass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html\",\n title: \"Painting Glass\"\n },\n {\n cover: \"assets/img/coverSketchPlates.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchMaelstrom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchPulse.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchPattern.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html\",\n title: \"Patterns\"\n },\n {\n cover: \"assets/img/coverSketchGeometries.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html\",\n title: \"Disappearing Geometries\"\n },\n {\n cover: \"assets/img/coverSketchMaurice.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html\",\n title: \"Maurice the Sea Cat\"\n },\n {\n cover: \"assets/img/coverCodevember.jpg\",\n url: \"http://yiwenl.github.io/Codevember/2017/\",\n title: \"Codevember 2017\"\n },\n {\n cover: \"assets/img/coverDissolve.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html\",\n title: \"Dissolve\"\n },\n {\n cover: \"assets/img/coverSketchSubstrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html\",\n title: \"Substrate sphere\"\n },\n {\n cover: \"assets/img/coverSketchFluid01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html\",\n title: \"Liquid\"\n },\n {\n cover: \"assets/img/coverSketchFluid02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html\",\n title: \"Liquid 02\"\n },\n {\n cover: \"assets/img/coverSketchFluid03.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html\",\n title: \"Liquid 03\"\n },\n {\n cover: \"assets/img/coverSketchFluid04.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html\",\n title: \"Liquid 04\"\n },\n {\n cover: \"assets/img/coverSketchStrangeBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html\",\n title: \"Strange Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchCamera01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html\",\n title: \"untitled\"\n },\n {\n cover: \"assets/img/coverSketchWires.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html\",\n title: \"Wires\"\n },\n {\n cover: \"assets/img/coverSketchSoundwaves.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html\",\n title: \"Waves\"\n },\n {\n cover: \"assets/img/coverSketchSwirl01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html\",\n title: \"Swirling\"\n },\n {\n cover: \"assets/img/coverSketchHurricane.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html\",\n title: \"Hurricane\"\n },\n {\n cover: \"assets/img/coverSketchTotoro.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html\",\n title: \"Totoro\"\n },\n {\n cover: \"assets/img/coverSketchLight.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/light/dist/index.html\",\n title: \"Light\"\n },\n {\n cover: \"assets/img/coverSketchTaichi.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html\",\n title: \"Taichi\"\n },\n {\n cover: \"assets/img/coverSketchRubix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html\",\n title: \"Rubiks Cube\"\n },\n {\n cover: \"assets/img/coverSketchBlackHole.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html\",\n title: \"Black Hole\"\n },\n {\n cover: \"assets/img/coverSketchFluid06.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html\",\n title: \"Swirly Liquid\"\n },\n {\n cover: \"assets/img/coverSketchDots.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html\",\n title: \"Dots\"\n },\n {\n cover: \"assets/img/coverSketchChars.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html\",\n title: \"Words\"\n },\n {\n cover: \"assets/img/coverSketchFlower.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html\",\n title: \"Flower\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchMatrix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html\",\n title: \"Matrix Rain\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchTrails.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html\",\n title: \"Trails\"\n },\n {\n cover: \"assets/img/coverSketchFaceprint.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html\",\n title: \"Faceprint\"\n },\n {\n cover: \"assets/img/coverSketchRipple.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchBlock0.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html\",\n title: \"Blocks\"\n },\n {\n cover: \"assets/img/coverSketchBlockHand.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html\",\n title: \"Blocks - Hands\"\n },\n {\n cover: \"assets/img/coverDisintegrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html\",\n title: \"Disintegrate\"\n },\n {\n cover: \"assets/img/coverInscript.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html\",\n title: \"Inscript\"\n },\n {\n cover: \"assets/img/coverSketchWhiteParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html\",\n title: \"White Particles\"\n },\n {\n cover: \"assets/img/coverSketchRibbon01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html\",\n title: \"Ribbons\"\n },\n {\n cover: \"assets/img/coverSketchBlossom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html\",\n title: \"Blossom\"\n },\n {\n cover: \"assets/img/coverSketchribbon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html\",\n title: \"Floating Ribbons\"\n }\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL21vZGVsL2RhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlO0lBQ2I7UUFDRUEsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0NBQ0QsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3NrZXRjaGVzLy4vc3JjL2FwcC9tb2RlbC9kYXRhLmpzP2VhYjYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclBhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3NlbGZzaGFkaW5nUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclJlZmxlY3Rpb24uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yZWZsZWN0aXZlU291bmRWaXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUmVmbGVjdGlvbnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvc2tldGNoQ292ZXJOZWZlcnRpdGkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9OZWZlcnRpdGkxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk5lZmVydGl0aVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlckZsb2NraW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvY2tpbmdCVy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG9ja2luZ1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclJvc2V0dGEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yb3NldHRhL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlJvc2V0dGFcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hOaWtlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvQmxvb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxvb21cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9vbS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZlYXRoZXJzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZlYXRoZXJzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQ2x1c3RlcmluZy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Zsb2NraW5nMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvY2tpbmcgKyBDbHVzdGVyaW5nXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUmVmcmFjdGlvbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL1JlZmFjdGlvbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJHbGFzcyBTdGF0dWVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvdGV4dHVyZVByb2ouanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXNrL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkdvbGRlbiBQb3dkZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY29zdHVtZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dyYXAvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGUgQmVsIENvc3R1bWVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvc2Vhc29ucy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Jsb3Nzb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRm91ciBzZWFzb25zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3JpdmVyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvUml2ZXIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUml2ZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDcnlzdGFsLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbmlrZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJDcnlzdGFsbGl6ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhcnRpY2xlVmFsbGV5LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcGFydGljbGVzVmFsbGV5L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhcnRpY2xlIFZhbGxleVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJ1YmJsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXJ0aWNsZXMwMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCdWJibGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVHVyYnVsZW5jZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3R1cmJ1bGVuY2UvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVHVyYnVsZW5jZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsYWNrR29sZC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2JsYWNrR29sZC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBhbmQgR29sZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEdyYXNzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZ3Jhc3NJbnN0YW5jZWQyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsYWNrIGFuZCBHb2xkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoV29sZi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dvbGYyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldvbGZcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYWludGluZy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2RyYXdpbmdMYW5kc2NhcGUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgTGFuZHNjYXBlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUGFpbnRpbmdQYXJ0aWNsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zdHJva2VUb1BhcnRpY2xlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hOZW9uRGVtb24uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9uZW9uRGVtb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3dpcmwuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zd2lybGluZy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTd2lybGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbGFja1JhaW4uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja1JhaW4vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgUmFpblwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFNwbGFzaGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3BsYXNoZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3BsYXNoZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDb21pYy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2NvbWljL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkNvbWljIHN0eWxlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoSXNsYW5kLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvaXNsYW5kL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIklzbGFuZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEhhbm55YS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL0hhbm55YS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJIYW5ueWFcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hHbGFzcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL25lb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgR2xhc3NcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQbGF0ZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYWVsc3Ryb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWFlbHN0cm9tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoTWFlbHN0cm9tLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tIb2xlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk1hZWxzdHJvbVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFB1bHNlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcHVsc2VQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUHVsc2VcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYXR0ZXJuLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcGF0dGVybkN1YmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhdHRlcm5zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoR2VvbWV0cmllcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzLzRkQ3ViZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJEaXNhcHBlYXJpbmcgR2VvbWV0cmllc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE1hdXJpY2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXVyaWNlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk1hdXJpY2UgdGhlIFNlYSBDYXRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJDb2RldmVtYmVyLmpwZ1wiLFxuICAgIHVybDogXCJodHRwOi8veWl3ZW5sLmdpdGh1Yi5pby9Db2RldmVtYmVyLzIwMTcvXCIsXG4gICAgdGl0bGU6IFwiQ29kZXZlbWJlciAyMDE3XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyRGlzc29sdmUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9kaXNzb2x2ZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJEaXNzb2x2ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFN1YnN0cmF0ZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N1YnN0cmF0ZVNwaGVyZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTdWJzdHJhdGUgc3BoZXJlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDAyXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDAzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwNC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDA0XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3RyYW5nZUJ1YmJsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zdHJhbmdlQnViYmxlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTdHJhbmdlIEJ1YmJsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDYW1lcmEwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2NhbWVyYTAxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcInVudGl0bGVkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoV2lyZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy93aXJlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJXaXJlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFNvdW5kd2F2ZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zb3VuZHdhdmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldhdmVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3dpcmwwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N3aXJsaW5nMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3dpcmxpbmdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hIdXJyaWNhbmUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy90eXBob29uL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkh1cnJpY2FuZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFRvdG9yby5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3RvdG9yby9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJUb3Rvcm9cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hMaWdodC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2xpZ2h0L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkxpZ2h0XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVGFpY2hpLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdGFpY2hpL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRhaWNoaVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJ1Yml4LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcnViaXhDdWJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlJ1YmlrcyBDdWJlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxhY2tIb2xlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tob2xlMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgSG9sZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZsdWlkMDYuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mbHVpZDA2L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN3aXJseSBMaXF1aWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hEb3RzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY2lyY2xlczAxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRvdHNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDaGFycy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N1dHJhRmxvdy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJXb3Jkc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZsb3dlci5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Zsb3dlcnMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmFjZVBhcnRpY2xlMDEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mYWNlUGFydGljbGVzMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmFjZSBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hNYXRyaXguanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXRyaXgvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWF0cml4IFJhaW5cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGYWNlUGFydGljbGUwMi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VQYXJ0aWNsZXMwMi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFRyYWlscy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3RyYWlsczAyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRyYWlsc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZhY2VwcmludC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VwcmludC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlcHJpbnRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hSaXBwbGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yaXBwbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlB1bHNlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxvY2swLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxvY2tzMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9ja3NcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9ja0hhbmQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibG9ja3M0X2hhbmRzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb2NrcyAtIEhhbmRzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyRGlzaW50ZWdyYXRlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZVBhcnRpY2xlczAzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc2ludGVncmF0ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3Zlckluc2NyaXB0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvaW5zY3JpcHQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSW5zY3JpcHRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXaGl0ZVBhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3doaXRlUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldoaXRlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJpYmJvbjAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcmliYm9uMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUmliYm9uc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb3Nzb20uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9kYXJrQmxvc3NvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9zc29tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNocmliYm9uLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcmliYm9uMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvYXRpbmcgUmliYm9uc1wiLFxuICB9LFxuXTtcbiJdLCJuYW1lcyI6WyJjb3ZlciIsInVybCIsInRpdGxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./src/app/model/data.js\n"); /***/ }), diff --git a/v2/.next/server/app/page.js b/v2/.next/server/app/page.js index b9b2a523..1780cd5f 100644 --- a/v2/.next/server/app/page.js +++ b/v2/.next/server/app/page.js @@ -255,7 +255,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([\n {\n cover: \"assets/img/sketchCoverParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html\",\n title: \"Particles\"\n },\n {\n cover: \"assets/img/sketchCoverReflection.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html\",\n title: \"Reflections\"\n },\n {\n cover: \"assets/img/sketchCoverNefertiti.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html\",\n title: \"Nefertiti\"\n },\n {\n cover: \"assets/img/sketchCoverFlocking.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html\",\n title: \"Flocking\"\n },\n {\n cover: \"assets/img/sketchCoverRosetta.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html\",\n title: \"Rosetta\"\n },\n {\n cover: \"assets/img/coverSketchNike.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html\",\n title: \"Bloom\"\n },\n {\n cover: \"assets/img/coverSketchBloom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html\",\n title: \"Feathers\"\n },\n {\n cover: \"assets/img/coverSketchClustering.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html\",\n title: \"Flocking + Clustering\"\n },\n {\n cover: \"assets/img/coverSketchRefraction.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html\",\n title: \"Glass Statue\"\n },\n {\n cover: \"assets/img/textureProj.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html\",\n title: \"Golden Powder\"\n },\n {\n cover: \"assets/img/costume.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html\",\n title: \"Le Bel Costume\"\n },\n {\n cover: \"assets/img/seasons.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html\",\n title: \"Four seasons\"\n },\n {\n cover: \"assets/img/river.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/River/dist/index.html\",\n title: \"River\"\n },\n {\n cover: \"assets/img/coverSketchCrystal.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html\",\n title: \"Crystallize\"\n },\n {\n cover: \"assets/img/coverSketchParticleValley.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html\",\n title: \"Particle Valley\"\n },\n {\n cover: \"assets/img/coverSketchBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html\",\n title: \"Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchTurbulence.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html\",\n title: \"Turbulence\"\n },\n {\n cover: \"assets/img/coverSketchBlackGold.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchGrass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchWolf.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html\",\n title: \"Wolf\"\n },\n {\n cover: \"assets/img/coverSketchPainting.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html\",\n title: \"Painting Landscape\"\n },\n {\n cover: \"assets/img/coverSketchPaintingParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchNeonDemon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchSwirl.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html\",\n title: \"Swirling Particles\"\n },\n {\n cover: \"assets/img/coverSketchBlackRain.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html\",\n title: \"Black Rain\"\n },\n {\n cover: \"assets/img/coverSketchSplashes.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html\",\n title: \"Splashes\"\n },\n {\n cover: \"assets/img/coverSketchComic.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html\",\n title: \"Comic style\"\n },\n {\n cover: \"assets/img/coverSketchIsland.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/island/dist/index.html\",\n title: \"Island\"\n },\n {\n cover: \"assets/img/coverSketchHannya.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html\",\n title: \"Hannya\"\n },\n {\n cover: \"assets/img/coverSketchGlass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html\",\n title: \"Painting Glass\"\n },\n {\n cover: \"assets/img/coverSketchPlates.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchMaelstrom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchPulse.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchPattern.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html\",\n title: \"Patterns\"\n },\n {\n cover: \"assets/img/coverSketchGeometries.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html\",\n title: \"Disappearing Geometries\"\n },\n {\n cover: \"assets/img/coverSketchMaurice.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html\",\n title: \"Maurice the Sea Cat\"\n },\n {\n cover: \"assets/img/coverCodevember.jpg\",\n url: \"http://yiwenl.github.io/Codevember/2017/\",\n title: \"Codevember 2017\"\n },\n {\n cover: \"assets/img/coverDissolve.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html\",\n title: \"Dissolve\"\n },\n {\n cover: \"assets/img/coverSketchSubstrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html\",\n title: \"Substrate sphere\"\n },\n {\n cover: \"assets/img/coverSketchFluid01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html\",\n title: \"Liquid\"\n },\n {\n cover: \"assets/img/coverSketchFluid02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html\",\n title: \"Liquid 02\"\n },\n {\n cover: \"assets/img/coverSketchFluid03.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html\",\n title: \"Liquid 03\"\n },\n {\n cover: \"assets/img/coverSketchFluid04.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html\",\n title: \"Liquid 04\"\n },\n {\n cover: \"assets/img/coverSketchStrangeBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html\",\n title: \"Strange Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchCamera01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html\",\n title: \"untitled\"\n },\n {\n cover: \"assets/img/coverSketchWires.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html\",\n title: \"Wires\"\n },\n {\n cover: \"assets/img/coverSketchSoundwaves.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html\",\n title: \"Waves\"\n },\n {\n cover: \"assets/img/coverSketchSwirl01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html\",\n title: \"Swirling\"\n },\n {\n cover: \"assets/img/coverSketchHurricane.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html\",\n title: \"Hurricane\"\n },\n {\n cover: \"assets/img/coverSketchTotoro.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html\",\n title: \"Totoro\"\n },\n {\n cover: \"assets/img/coverSketchLight.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/light/dist/index.html\",\n title: \"Light\"\n },\n {\n cover: \"assets/img/coverSketchTaichi.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html\",\n title: \"Taichi\"\n },\n {\n cover: \"assets/img/coverSketchRubix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html\",\n title: \"Rubiks Cube\"\n },\n {\n cover: \"assets/img/coverSketchBlackHole.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html\",\n title: \"Black Hole\"\n },\n {\n cover: \"assets/img/coverSketchFluid06.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html\",\n title: \"Swirly Liquid\"\n },\n {\n cover: \"assets/img/coverSketchDots.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html\",\n title: \"Dots\"\n },\n {\n cover: \"assets/img/coverSketchChars.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html\",\n title: \"Words\"\n },\n {\n cover: \"assets/img/coverSketchFlower.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html\",\n title: \"Flower\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchMatrix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html\",\n title: \"Matrix Rain\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchTrails.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html\",\n title: \"Trails\"\n },\n {\n cover: \"assets/img/coverSketchFaceprint.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html\",\n title: \"Faceprint\"\n },\n {\n cover: \"assets/img/coverSketchRipple.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchBlock0.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html\",\n title: \"Blocks\"\n },\n {\n cover: \"assets/img/coverSketchBlockHand.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html\",\n title: \"Blocks - Hands\"\n },\n {\n cover: \"assets/img/coverDisintegrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html\",\n title: \"Disintegrate\"\n },\n {\n cover: \"assets/img/coverInscript.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html\",\n title: \"Inscript\"\n },\n {\n cover: \"assets/img/coverSketchWhiteParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html\",\n title: \"White Particles\"\n },\n {\n cover: \"assets/img/coverSketchRibbon01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html\",\n title: \"Ribbons\"\n },\n {\n cover: \"assets/img/coverSketchBlossom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html\",\n title: \"Blossom\"\n }\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL21vZGVsL2RhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlO0lBQ2I7UUFDRUEsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7Q0FDRCxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2tldGNoZXMvLi9zcmMvYXBwL21vZGVsL2RhdGEuanM/ZWFiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBbXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUGFydGljbGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc2VsZnNoYWRpbmdQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUmVmbGVjdGlvbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3JlZmxlY3RpdmVTb3VuZFZpcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSZWZsZWN0aW9uc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3Zlck5lZmVydGl0aS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL05lZmVydGl0aTEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTmVmZXJ0aXRpXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyRmxvY2tpbmcuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mbG9ja2luZ0JXL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZsb2NraW5nXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3NrZXRjaENvdmVyUm9zZXR0YS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3Jvc2V0dGEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUm9zZXR0YVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE5pa2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9CbG9vbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9vbVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb29tLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmVhdGhlcnMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmVhdGhlcnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDbHVzdGVyaW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvY2tpbmcwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG9ja2luZyArIENsdXN0ZXJpbmdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hSZWZyYWN0aW9uLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvUmVmYWN0aW9uL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkdsYXNzIFN0YXR1ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy90ZXh0dXJlUHJvai5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hc2svZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiR29sZGVuIFBvd2RlclwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3N0dW1lLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd3JhcC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMZSBCZWwgQ29zdHVtZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9zZWFzb25zLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxvc3NvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGb3VyIHNlYXNvbnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvcml2ZXIuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9SaXZlci9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSaXZlclwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENyeXN0YWwuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9uaWtlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkNyeXN0YWxsaXplXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUGFydGljbGVWYWxsZXkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXJ0aWNsZXNWYWxsZXkvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFydGljbGUgVmFsbGV5XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQnViYmxlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3BhcnRpY2xlczAzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJ1YmJsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hUdXJidWxlbmNlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdHVyYnVsZW5jZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJUdXJidWxlbmNlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxhY2tHb2xkLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tHb2xkL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsYWNrIGFuZCBHb2xkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoR3Jhc3MuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ncmFzc0luc3RhbmNlZDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgYW5kIEdvbGRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXb2xmLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd29sZjIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV29sZlwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhaW50aW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZHJhd2luZ0xhbmRzY2FwZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBMYW5kc2NhcGVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYWludGluZ1BhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N0cm9rZVRvUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhaW50aW5nIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE5lb25EZW1vbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL25lb25EZW1vbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTd2lybC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N3aXJsaW5nL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN3aXJsaW5nIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsYWNrUmFpbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2JsYWNrUmFpbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBSYWluXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3BsYXNoZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zcGxhc2hlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTcGxhc2hlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENvbWljLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY29taWMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQ29taWMgc3R5bGVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hJc2xhbmQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9pc2xhbmQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSXNsYW5kXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoSGFubnlhLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvSGFubnlhL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkhhbm55YVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEdsYXNzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbmVvbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBHbGFzc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBsYXRlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hZWxzdHJvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJNYWVsc3Ryb21cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hNYWVsc3Ryb20uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja0hvbGUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWFlbHN0cm9tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUHVsc2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wdWxzZVBhcnRpY2xlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQdWxzZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhdHRlcm4uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXR0ZXJuQ3ViZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGF0dGVybnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hHZW9tZXRyaWVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvNGRDdWJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc2FwcGVhcmluZyBHZW9tZXRyaWVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoTWF1cmljZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hdXJpY2UvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWF1cmljZSB0aGUgU2VhIENhdFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlckNvZGV2ZW1iZXIuanBnXCIsXG4gICAgdXJsOiBcImh0dHA6Ly95aXdlbmwuZ2l0aHViLmlvL0NvZGV2ZW1iZXIvMjAxNy9cIixcbiAgICB0aXRsZTogXCJDb2RldmVtYmVyIDIwMTdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJEaXNzb2x2ZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Rpc3NvbHZlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc3NvbHZlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3Vic3RyYXRlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3Vic3RyYXRlU3BoZXJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN1YnN0cmF0ZSBzcGhlcmVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDAzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGbHVpZDA0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmx1aWQwNC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJMaXF1aWQgMDRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTdHJhbmdlQnViYmxlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N0cmFuZ2VCdWJibGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN0cmFuZ2UgQnViYmxlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENhbWVyYTAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY2FtZXJhMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwidW50aXRsZWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXaXJlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dpcmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldpcmVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU291bmR3YXZlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3NvdW5kd2F2ZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV2F2ZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hTd2lybDAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3dpcmxpbmcwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTd2lybGluZ1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEh1cnJpY2FuZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3R5cGhvb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSHVycmljYW5lXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVG90b3JvLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdG90b3JvL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRvdG9yb1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaExpZ2h0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbGlnaHQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlnaHRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hUYWljaGkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy90YWljaGkvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVGFpY2hpXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUnViaXguanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ydWJpeEN1YmUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUnViaWtzIEN1YmVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbGFja0hvbGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja2hvbGUwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBIb2xlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwNi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDYvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3dpcmx5IExpcXVpZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaERvdHMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9jaXJjbGVzMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRG90c1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaENoYXJzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3V0cmFGbG93L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldvcmRzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmxvd2VyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvd2Vycy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG93ZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGYWNlUGFydGljbGUwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VQYXJ0aWNsZXMwMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE1hdHJpeC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL21hdHJpeC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJNYXRyaXggUmFpblwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZhY2VQYXJ0aWNsZTAyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZVBhcnRpY2xlczAyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZhY2UgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVHJhaWxzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdHJhaWxzMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVHJhaWxzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmFjZXByaW50LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZXByaW50L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZhY2VwcmludFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJpcHBsZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3JpcHBsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUHVsc2VcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9jazAuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibG9ja3MxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb2Nrc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb2NrSGFuZC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Jsb2NrczRfaGFuZHMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxvY2tzIC0gSGFuZHNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJEaXNpbnRlZ3JhdGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mYWNlUGFydGljbGVzMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRGlzaW50ZWdyYXRlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVySW5zY3JpcHQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9pbnNjcmlwdC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJJbnNjcmlwdFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFdoaXRlUGFydGljbGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvd2hpdGVQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiV2hpdGUgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUmliYm9uMDEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yaWJib24wMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJSaWJib25zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxvc3NvbS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2RhcmtCbG9zc29tL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb3Nzb21cIixcbiAgfSxcbl07XG4iXSwibmFtZXMiOlsiY292ZXIiLCJ1cmwiLCJ0aXRsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./src/app/model/data.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ([\n {\n cover: \"assets/img/sketchCoverParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html\",\n title: \"Particles\"\n },\n {\n cover: \"assets/img/sketchCoverReflection.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html\",\n title: \"Reflections\"\n },\n {\n cover: \"assets/img/sketchCoverNefertiti.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html\",\n title: \"Nefertiti\"\n },\n {\n cover: \"assets/img/sketchCoverFlocking.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html\",\n title: \"Flocking\"\n },\n {\n cover: \"assets/img/sketchCoverRosetta.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html\",\n title: \"Rosetta\"\n },\n {\n cover: \"assets/img/coverSketchNike.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html\",\n title: \"Bloom\"\n },\n {\n cover: \"assets/img/coverSketchBloom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html\",\n title: \"Feathers\"\n },\n {\n cover: \"assets/img/coverSketchClustering.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html\",\n title: \"Flocking + Clustering\"\n },\n {\n cover: \"assets/img/coverSketchRefraction.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html\",\n title: \"Glass Statue\"\n },\n {\n cover: \"assets/img/textureProj.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html\",\n title: \"Golden Powder\"\n },\n {\n cover: \"assets/img/costume.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html\",\n title: \"Le Bel Costume\"\n },\n {\n cover: \"assets/img/seasons.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html\",\n title: \"Four seasons\"\n },\n {\n cover: \"assets/img/river.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/River/dist/index.html\",\n title: \"River\"\n },\n {\n cover: \"assets/img/coverSketchCrystal.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html\",\n title: \"Crystallize\"\n },\n {\n cover: \"assets/img/coverSketchParticleValley.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html\",\n title: \"Particle Valley\"\n },\n {\n cover: \"assets/img/coverSketchBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html\",\n title: \"Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchTurbulence.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html\",\n title: \"Turbulence\"\n },\n {\n cover: \"assets/img/coverSketchBlackGold.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchGrass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html\",\n title: \"Black and Gold\"\n },\n {\n cover: \"assets/img/coverSketchWolf.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html\",\n title: \"Wolf\"\n },\n {\n cover: \"assets/img/coverSketchPainting.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html\",\n title: \"Painting Landscape\"\n },\n {\n cover: \"assets/img/coverSketchPaintingParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchNeonDemon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html\",\n title: \"Painting Particles\"\n },\n {\n cover: \"assets/img/coverSketchSwirl.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html\",\n title: \"Swirling Particles\"\n },\n {\n cover: \"assets/img/coverSketchBlackRain.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html\",\n title: \"Black Rain\"\n },\n {\n cover: \"assets/img/coverSketchSplashes.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html\",\n title: \"Splashes\"\n },\n {\n cover: \"assets/img/coverSketchComic.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html\",\n title: \"Comic style\"\n },\n {\n cover: \"assets/img/coverSketchIsland.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/island/dist/index.html\",\n title: \"Island\"\n },\n {\n cover: \"assets/img/coverSketchHannya.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html\",\n title: \"Hannya\"\n },\n {\n cover: \"assets/img/coverSketchGlass.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html\",\n title: \"Painting Glass\"\n },\n {\n cover: \"assets/img/coverSketchPlates.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchMaelstrom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html\",\n title: \"Maelstrom\"\n },\n {\n cover: \"assets/img/coverSketchPulse.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchPattern.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html\",\n title: \"Patterns\"\n },\n {\n cover: \"assets/img/coverSketchGeometries.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html\",\n title: \"Disappearing Geometries\"\n },\n {\n cover: \"assets/img/coverSketchMaurice.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html\",\n title: \"Maurice the Sea Cat\"\n },\n {\n cover: \"assets/img/coverCodevember.jpg\",\n url: \"http://yiwenl.github.io/Codevember/2017/\",\n title: \"Codevember 2017\"\n },\n {\n cover: \"assets/img/coverDissolve.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html\",\n title: \"Dissolve\"\n },\n {\n cover: \"assets/img/coverSketchSubstrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html\",\n title: \"Substrate sphere\"\n },\n {\n cover: \"assets/img/coverSketchFluid01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html\",\n title: \"Liquid\"\n },\n {\n cover: \"assets/img/coverSketchFluid02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html\",\n title: \"Liquid 02\"\n },\n {\n cover: \"assets/img/coverSketchFluid03.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html\",\n title: \"Liquid 03\"\n },\n {\n cover: \"assets/img/coverSketchFluid04.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html\",\n title: \"Liquid 04\"\n },\n {\n cover: \"assets/img/coverSketchStrangeBubbles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html\",\n title: \"Strange Bubbles\"\n },\n {\n cover: \"assets/img/coverSketchCamera01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html\",\n title: \"untitled\"\n },\n {\n cover: \"assets/img/coverSketchWires.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html\",\n title: \"Wires\"\n },\n {\n cover: \"assets/img/coverSketchSoundwaves.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html\",\n title: \"Waves\"\n },\n {\n cover: \"assets/img/coverSketchSwirl01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html\",\n title: \"Swirling\"\n },\n {\n cover: \"assets/img/coverSketchHurricane.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html\",\n title: \"Hurricane\"\n },\n {\n cover: \"assets/img/coverSketchTotoro.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html\",\n title: \"Totoro\"\n },\n {\n cover: \"assets/img/coverSketchLight.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/light/dist/index.html\",\n title: \"Light\"\n },\n {\n cover: \"assets/img/coverSketchTaichi.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html\",\n title: \"Taichi\"\n },\n {\n cover: \"assets/img/coverSketchRubix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html\",\n title: \"Rubiks Cube\"\n },\n {\n cover: \"assets/img/coverSketchBlackHole.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html\",\n title: \"Black Hole\"\n },\n {\n cover: \"assets/img/coverSketchFluid06.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html\",\n title: \"Swirly Liquid\"\n },\n {\n cover: \"assets/img/coverSketchDots.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html\",\n title: \"Dots\"\n },\n {\n cover: \"assets/img/coverSketchChars.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html\",\n title: \"Words\"\n },\n {\n cover: \"assets/img/coverSketchFlower.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html\",\n title: \"Flower\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchMatrix.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html\",\n title: \"Matrix Rain\"\n },\n {\n cover: \"assets/img/coverSketchFaceParticle02.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html\",\n title: \"Face Particles\"\n },\n {\n cover: \"assets/img/coverSketchTrails.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html\",\n title: \"Trails\"\n },\n {\n cover: \"assets/img/coverSketchFaceprint.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html\",\n title: \"Faceprint\"\n },\n {\n cover: \"assets/img/coverSketchRipple.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html\",\n title: \"Pulse\"\n },\n {\n cover: \"assets/img/coverSketchBlock0.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html\",\n title: \"Blocks\"\n },\n {\n cover: \"assets/img/coverSketchBlockHand.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html\",\n title: \"Blocks - Hands\"\n },\n {\n cover: \"assets/img/coverDisintegrate.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html\",\n title: \"Disintegrate\"\n },\n {\n cover: \"assets/img/coverInscript.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html\",\n title: \"Inscript\"\n },\n {\n cover: \"assets/img/coverSketchWhiteParticles.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html\",\n title: \"White Particles\"\n },\n {\n cover: \"assets/img/coverSketchRibbon01.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html\",\n title: \"Ribbons\"\n },\n {\n cover: \"assets/img/coverSketchBlossom.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html\",\n title: \"Blossom\"\n },\n {\n cover: \"assets/img/coverSketchribbon.jpg\",\n url: \"//yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html\",\n title: \"Floating Ribbons\"\n }\n]);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL21vZGVsL2RhdGEuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLGlFQUFlO0lBQ2I7UUFDRUEsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0lBQ0E7UUFDRUYsT0FBTztRQUNQQyxLQUFLO1FBQ0xDLE9BQU87SUFDVDtJQUNBO1FBQ0VGLE9BQU87UUFDUEMsS0FBSztRQUNMQyxPQUFPO0lBQ1Q7SUFDQTtRQUNFRixPQUFPO1FBQ1BDLEtBQUs7UUFDTEMsT0FBTztJQUNUO0NBQ0QsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3NrZXRjaGVzLy4vc3JjL2FwcC9tb2RlbC9kYXRhLmpzP2VhYjYiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgW1xuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclBhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3NlbGZzaGFkaW5nUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclJlZmxlY3Rpb24uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yZWZsZWN0aXZlU291bmRWaXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUmVmbGVjdGlvbnNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvc2tldGNoQ292ZXJOZWZlcnRpdGkuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9OZWZlcnRpdGkxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk5lZmVydGl0aVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlckZsb2NraW5nLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmxvY2tpbmdCVy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGbG9ja2luZ1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9za2V0Y2hDb3ZlclJvc2V0dGEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yb3NldHRhL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlJvc2V0dGFcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hOaWtlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvQmxvb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxvb21cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9vbS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZlYXRoZXJzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkZlYXRoZXJzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQ2x1c3RlcmluZy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Zsb2NraW5nMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvY2tpbmcgKyBDbHVzdGVyaW5nXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUmVmcmFjdGlvbi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL1JlZmFjdGlvbi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJHbGFzcyBTdGF0dWVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvdGV4dHVyZVByb2ouanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXNrL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkdvbGRlbiBQb3dkZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY29zdHVtZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dyYXAvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGUgQmVsIENvc3R1bWVcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvc2Vhc29ucy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Jsb3Nzb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRm91ciBzZWFzb25zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL3JpdmVyLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvUml2ZXIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUml2ZXJcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDcnlzdGFsLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvbmlrZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJDcnlzdGFsbGl6ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFBhcnRpY2xlVmFsbGV5LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcGFydGljbGVzVmFsbGV5L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhcnRpY2xlIFZhbGxleVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJ1YmJsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9wYXJ0aWNsZXMwMy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCdWJibGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVHVyYnVsZW5jZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3R1cmJ1bGVuY2UvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiVHVyYnVsZW5jZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsYWNrR29sZC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2JsYWNrR29sZC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbGFjayBhbmQgR29sZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEdyYXNzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZ3Jhc3NJbnN0YW5jZWQyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsYWNrIGFuZCBHb2xkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoV29sZi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3dvbGYyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldvbGZcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYWludGluZy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2RyYXdpbmdMYW5kc2NhcGUvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgTGFuZHNjYXBlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoUGFpbnRpbmdQYXJ0aWNsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zdHJva2VUb1BhcnRpY2xlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJQYWludGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hOZW9uRGVtb24uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9uZW9uRGVtb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgUGFydGljbGVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3dpcmwuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zd2lybGluZy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTd2lybGluZyBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbGFja1JhaW4uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibGFja1JhaW4vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgUmFpblwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFNwbGFzaGVzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvc3BsYXNoZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3BsYXNoZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDb21pYy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2NvbWljL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkNvbWljIHN0eWxlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoSXNsYW5kLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvaXNsYW5kL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIklzbGFuZFwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEhhbm55YS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL0hhbm55YS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJIYW5ueWFcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hHbGFzcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL25lb24vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUGFpbnRpbmcgR2xhc3NcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQbGF0ZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYWVsc3Ryb20vZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWFlbHN0cm9tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoTWFlbHN0cm9tLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tIb2xlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk1hZWxzdHJvbVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFB1bHNlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcHVsc2VQYXJ0aWNsZXMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUHVsc2VcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hQYXR0ZXJuLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcGF0dGVybkN1YmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlBhdHRlcm5zXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoR2VvbWV0cmllcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzLzRkQ3ViZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJEaXNhcHBlYXJpbmcgR2VvbWV0cmllc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaE1hdXJpY2UuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXVyaWNlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIk1hdXJpY2UgdGhlIFNlYSBDYXRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJDb2RldmVtYmVyLmpwZ1wiLFxuICAgIHVybDogXCJodHRwOi8veWl3ZW5sLmdpdGh1Yi5pby9Db2RldmVtYmVyLzIwMTcvXCIsXG4gICAgdGl0bGU6IFwiQ29kZXZlbWJlciAyMDE3XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyRGlzc29sdmUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9kaXNzb2x2ZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJEaXNzb2x2ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFN1YnN0cmF0ZS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N1YnN0cmF0ZVNwaGVyZS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTdWJzdHJhdGUgc3BoZXJlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDAyXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwMy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDAzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmx1aWQwNC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZsdWlkMDQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTGlxdWlkIDA0XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3RyYW5nZUJ1YmJsZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zdHJhbmdlQnViYmxlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJTdHJhbmdlIEJ1YmJsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDYW1lcmEwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2NhbWVyYTAxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcInVudGl0bGVkXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoV2lyZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy93aXJlcy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJXaXJlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFNvdW5kd2F2ZXMuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9zb3VuZHdhdmVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldhdmVzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoU3dpcmwwMS5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N3aXJsaW5nMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiU3dpcmxpbmdcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hIdXJyaWNhbmUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy90eXBob29uL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkh1cnJpY2FuZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFRvdG9yby5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3RvdG9yby9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJUb3Rvcm9cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hMaWdodC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2xpZ2h0L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkxpZ2h0XCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoVGFpY2hpLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvdGFpY2hpL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRhaWNoaVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJ1Yml4LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcnViaXhDdWJlL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlJ1YmlrcyBDdWJlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxhY2tIb2xlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxhY2tob2xlMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiQmxhY2sgSG9sZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZsdWlkMDYuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mbHVpZDA2L2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlN3aXJseSBMaXF1aWRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hEb3RzLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvY2lyY2xlczAxL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRvdHNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hDaGFycy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3N1dHJhRmxvdy9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJXb3Jkc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZsb3dlci5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2Zsb3dlcnMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvd2VyXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoRmFjZVBhcnRpY2xlMDEuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9mYWNlUGFydGljbGVzMDEvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmFjZSBQYXJ0aWNsZXNcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hNYXRyaXguanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9tYXRyaXgvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiTWF0cml4IFJhaW5cIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hGYWNlUGFydGljbGUwMi5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VQYXJ0aWNsZXMwMi9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFRyYWlscy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3RyYWlsczAyL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlRyYWlsc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEZhY2VwcmludC5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL2ZhY2VwcmludC9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJGYWNlcHJpbnRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hSaXBwbGUuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9yaXBwbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIlB1bHNlXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNoQmxvY2swLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvYmxvY2tzMS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9ja3NcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hCbG9ja0hhbmQuanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9ibG9ja3M0X2hhbmRzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkJsb2NrcyAtIEhhbmRzXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyRGlzaW50ZWdyYXRlLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvZmFjZVBhcnRpY2xlczAzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIkRpc2ludGVncmF0ZVwiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3Zlckluc2NyaXB0LmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvaW5zY3JpcHQvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiSW5zY3JpcHRcIixcbiAgfSxcbiAge1xuICAgIGNvdmVyOiBcImFzc2V0cy9pbWcvY292ZXJTa2V0Y2hXaGl0ZVBhcnRpY2xlcy5qcGdcIixcbiAgICB1cmw6IFwiLy95aXdlbmwuZ2l0aHViLmlvL1NrZXRjaGVzL2V4cGVyaW1lbnRzL3doaXRlUGFydGljbGVzL2Rpc3QvaW5kZXguaHRtbFwiLFxuICAgIHRpdGxlOiBcIldoaXRlIFBhcnRpY2xlc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaFJpYmJvbjAxLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcmliYm9uMDMvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiUmliYm9uc1wiLFxuICB9LFxuICB7XG4gICAgY292ZXI6IFwiYXNzZXRzL2ltZy9jb3ZlclNrZXRjaEJsb3Nzb20uanBnXCIsXG4gICAgdXJsOiBcIi8veWl3ZW5sLmdpdGh1Yi5pby9Ta2V0Y2hlcy9leHBlcmltZW50cy9kYXJrQmxvc3NvbS9kaXN0L2luZGV4Lmh0bWxcIixcbiAgICB0aXRsZTogXCJCbG9zc29tXCIsXG4gIH0sXG4gIHtcbiAgICBjb3ZlcjogXCJhc3NldHMvaW1nL2NvdmVyU2tldGNocmliYm9uLmpwZ1wiLFxuICAgIHVybDogXCIvL3lpd2VubC5naXRodWIuaW8vU2tldGNoZXMvZXhwZXJpbWVudHMvcmliYm9uMDIvZGlzdC9pbmRleC5odG1sXCIsXG4gICAgdGl0bGU6IFwiRmxvYXRpbmcgUmliYm9uc1wiLFxuICB9LFxuXTtcbiJdLCJuYW1lcyI6WyJjb3ZlciIsInVybCIsInRpdGxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./src/app/model/data.js\n"); /***/ }), diff --git a/v2/.next/server/vendor-chunks/next.js b/v2/.next/server/vendor-chunks/next.js index 0f620a2b..9752b21e 100644 --- a/v2/.next/server/vendor-chunks/next.js +++ b/v2/.next/server/vendor-chunks/next.js @@ -16,7 +16,7 @@ exports.modules = { \***********************************************************************************************************************************************************/ /***/ ((module) => { -eval("// Exports\nmodule.exports = {\n\t\"style\": {\"fontFamily\":\"'__Inter_e66fe9', '__Inter_Fallback_e66fe9'\",\"fontStyle\":\"normal\"},\n\t\"className\": \"__className_e66fe9\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzP3tcInBhdGhcIjpcInNyYy9hcHAvbGF5b3V0LmpzXCIsXCJpbXBvcnRcIjpcIkludGVyXCIsXCJhcmd1bWVudHNcIjpbe1wic3Vic2V0c1wiOltcImxhdGluXCJdfV0sXCJ2YXJpYWJsZU5hbWVcIjpcImludGVyXCJ9IiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxXQUFXLGdGQUFnRjtBQUMzRjtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2tldGNoZXMvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzPzdjMzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwic3R5bGVcIjoge1wiZm9udEZhbWlseVwiOlwiJ19fSW50ZXJfZTY2ZmU5JywgJ19fSW50ZXJfRmFsbGJhY2tfZTY2ZmU5J1wiLFwiZm9udFN0eWxlXCI6XCJub3JtYWxcIn0sXG5cdFwiY2xhc3NOYW1lXCI6IFwiX19jbGFzc05hbWVfZTY2ZmU5XCJcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.js\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}\n"); +eval("// Exports\nmodule.exports = {\n\t\"style\": {\"fontFamily\":\"'__Inter_Fallback_725fdb', '__Inter_Fallback_Fallback_725fdb'\",\"fontStyle\":\"normal\"},\n\t\"className\": \"__className_725fdb\"\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzP3tcInBhdGhcIjpcInNyYy9hcHAvbGF5b3V0LmpzXCIsXCJpbXBvcnRcIjpcIkludGVyXCIsXCJhcmd1bWVudHNcIjpbe1wic3Vic2V0c1wiOltcImxhdGluXCJdfV0sXCJ2YXJpYWJsZU5hbWVcIjpcImludGVyXCJ9IiwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxXQUFXLGtHQUFrRztBQUM3RztBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vc2tldGNoZXMvLi9ub2RlX21vZHVsZXMvbmV4dC9mb250L2dvb2dsZS90YXJnZXQuY3NzPzdjMzEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0c1xubW9kdWxlLmV4cG9ydHMgPSB7XG5cdFwic3R5bGVcIjoge1wiZm9udEZhbWlseVwiOlwiJ19fSW50ZXJfRmFsbGJhY2tfNzI1ZmRiJywgJ19fSW50ZXJfRmFsbGJhY2tfRmFsbGJhY2tfNzI1ZmRiJ1wiLFwiZm9udFN0eWxlXCI6XCJub3JtYWxcIn0sXG5cdFwiY2xhc3NOYW1lXCI6IFwiX19jbGFzc05hbWVfNzI1ZmRiXCJcbn07XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.js\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}\n"); /***/ }), diff --git a/v2/.next/server/webpack-runtime.js b/v2/.next/server/webpack-runtime.js index f92d6c3b..7da1f593 100644 --- a/v2/.next/server/webpack-runtime.js +++ b/v2/.next/server/webpack-runtime.js @@ -130,7 +130,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("7b9031d53a6dba63") +/******/ __webpack_require__.h = () => ("30989668a37ea181") /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ diff --git a/v2/.next/static/chunks/webpack.js b/v2/.next/static/chunks/webpack.js index c60278d9..2c0fe302 100644 --- a/v2/.next/static/chunks/webpack.js +++ b/v2/.next/static/chunks/webpack.js @@ -180,7 +180,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ !function() { -/******/ __webpack_require__.h = function() { return "1c16d350ebea0283"; } +/******/ __webpack_require__.h = function() { return "fe81321650cb985b"; } /******/ }(); /******/ /******/ /* webpack/runtime/global */ diff --git a/v2/.next/static/webpack/454303fd20abdc81.webpack.hot-update.json b/v2/.next/static/webpack/a48e26c898b9f3a1.webpack.hot-update.json similarity index 100% rename from v2/.next/static/webpack/454303fd20abdc81.webpack.hot-update.json rename to v2/.next/static/webpack/a48e26c898b9f3a1.webpack.hot-update.json diff --git a/v2/.next/static/webpack/ac9262be5d513d4d.webpack.hot-update.json b/v2/.next/static/webpack/ac9262be5d513d4d.webpack.hot-update.json new file mode 100644 index 00000000..fbc8eff4 --- /dev/null +++ b/v2/.next/static/webpack/ac9262be5d513d4d.webpack.hot-update.json @@ -0,0 +1 @@ +{"c":["app/page","app/layout","webpack"],"r":[],"m":["(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&server=false!","(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=false!"]} \ No newline at end of file diff --git a/v2/.next/static/webpack/app/layout.ac9262be5d513d4d.hot-update.js b/v2/.next/static/webpack/app/layout.ac9262be5d513d4d.hot-update.js new file mode 100644 index 00000000..542da44f --- /dev/null +++ b/v2/.next/static/webpack/app/layout.ac9262be5d513d4d.hot-update.js @@ -0,0 +1,21 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/layout",{ + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false! ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.js\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"} */ \"(app-pages-browser)/./node_modules/next/font/google/target.css?{\\\"path\\\":\\\"src/app/layout.js\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"]}],\\\"variableName\\\":\\\"inter\\\"}\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/globals.css */ \"(app-pages-browser)/./src/app/globals.css\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lMkZVc2VycyUyRnlpd2VubCUyRkRldmVsb3BtZW50JTJGU2tldGNoZXMlMkZ2MiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZmb250JTJGZ29vZ2xlJTJGdGFyZ2V0LmNzcyUzRiU3QiUyMnBhdGglMjIlM0ElMjJzcmMlMkZhcHAlMkZsYXlvdXQuanMlMjIlMkMlMjJpbXBvcnQlMjIlM0ElMjJJbnRlciUyMiUyQyUyMmFyZ3VtZW50cyUyMiUzQSU1QiU3QiUyMnN1YnNldHMlMjIlM0ElNUIlMjJsYXRpbiUyMiU1RCU3RCU1RCUyQyUyMnZhcmlhYmxlTmFtZSUyMiUzQSUyMmludGVyJTIyJTdEJm1vZHVsZXM9JTJGVXNlcnMlMkZ5aXdlbmwlMkZEZXZlbG9wbWVudCUyRlNrZXRjaGVzJTJGdjIlMkZzcmMlMkZhcHAlMkZnbG9iYWxzLmNzcyZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLHdiQUE4TztBQUM5TyIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzIzNGMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMveWl3ZW5sL0RldmVsb3BtZW50L1NrZXRjaGVzL3YyL25vZGVfbW9kdWxlcy9uZXh0L2ZvbnQvZ29vZ2xlL3RhcmdldC5jc3M/e1xcXCJwYXRoXFxcIjpcXFwic3JjL2FwcC9sYXlvdXQuanNcXFwiLFxcXCJpbXBvcnRcXFwiOlxcXCJJbnRlclxcXCIsXFxcImFyZ3VtZW50c1xcXCI6W3tcXFwic3Vic2V0c1xcXCI6W1xcXCJsYXRpblxcXCJdfV0sXFxcInZhcmlhYmxlTmFtZVxcXCI6XFxcImludGVyXFxcIn1cIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy95aXdlbmwvRGV2ZWxvcG1lbnQvU2tldGNoZXMvdjIvc3JjL2FwcC9nbG9iYWxzLmNzc1wiKSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/v2/.next/static/webpack/app/page.ac9262be5d513d4d.hot-update.js b/v2/.next/static/webpack/app/page.ac9262be5d513d4d.hot-update.js new file mode 100644 index 00000000..a184e267 --- /dev/null +++ b/v2/.next/static/webpack/app/page.ac9262be5d513d4d.hot-update.js @@ -0,0 +1,21 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("app/page",{ + +/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!": +/*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false! ***! + \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { + +eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/image-component.js */ \"(app-pages-browser)/./node_modules/next/dist/client/image-component.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/link.js */ \"(app-pages-browser)/./node_modules/next/dist/client/link.js\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./src/app/page.module.css */ \"(app-pages-browser)/./src/app/page.module.css\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./src/app/styles/Header.module.css */ \"(app-pages-browser)/./src/app/styles/Header.module.css\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./src/app/styles/Experiments.module.css */ \"(app-pages-browser)/./src/app/styles/Experiments.module.css\", 23))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lMkZVc2VycyUyRnlpd2VubCUyRkRldmVsb3BtZW50JTJGU2tldGNoZXMlMkZ2MiUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGaW1hZ2UtY29tcG9uZW50LmpzJm1vZHVsZXM9JTJGVXNlcnMlMkZ5aXdlbmwlMkZEZXZlbG9wbWVudCUyRlNrZXRjaGVzJTJGdjIlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmxpbmsuanMmbW9kdWxlcz0lMkZVc2VycyUyRnlpd2VubCUyRkRldmVsb3BtZW50JTJGU2tldGNoZXMlMkZ2MiUyRnNyYyUyRmFwcCUyRnBhZ2UubW9kdWxlLmNzcyZtb2R1bGVzPSUyRlVzZXJzJTJGeWl3ZW5sJTJGRGV2ZWxvcG1lbnQlMkZTa2V0Y2hlcyUyRnYyJTJGc3JjJTJGYXBwJTJGc3R5bGVzJTJGSGVhZGVyLm1vZHVsZS5jc3MmbW9kdWxlcz0lMkZVc2VycyUyRnlpd2VubCUyRkRldmVsb3BtZW50JTJGU2tldGNoZXMlMkZ2MiUyRnNyYyUyRmFwcCUyRnN0eWxlcyUyRkV4cGVyaW1lbnRzLm1vZHVsZS5jc3Mmc2VydmVyPWZhbHNlISIsIm1hcHBpbmdzIjoiQUFBQSxvT0FBMkg7QUFDM0gsOE1BQWdIO0FBQ2hILGtMQUFrRztBQUNsRyxvTUFBMkc7QUFDM0ciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz83MDljIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3lpd2VubC9EZXZlbG9wbWVudC9Ta2V0Y2hlcy92Mi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9pbWFnZS1jb21wb25lbnQuanNcIik7XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy95aXdlbmwvRGV2ZWxvcG1lbnQvU2tldGNoZXMvdjIvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvbGluay5qc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3lpd2VubC9EZXZlbG9wbWVudC9Ta2V0Y2hlcy92Mi9zcmMvYXBwL3BhZ2UubW9kdWxlLmNzc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3lpd2VubC9EZXZlbG9wbWVudC9Ta2V0Y2hlcy92Mi9zcmMvYXBwL3N0eWxlcy9IZWFkZXIubW9kdWxlLmNzc1wiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL3lpd2VubC9EZXZlbG9wbWVudC9Ta2V0Y2hlcy92Mi9zcmMvYXBwL3N0eWxlcy9FeHBlcmltZW50cy5tb2R1bGUuY3NzXCIpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!\n")); + +/***/ }) + +}); \ No newline at end of file diff --git a/v2/.next/static/webpack/webpack.454303fd20abdc81.hot-update.js b/v2/.next/static/webpack/webpack.a48e26c898b9f3a1.hot-update.js similarity index 91% rename from v2/.next/static/webpack/webpack.454303fd20abdc81.hot-update.js rename to v2/.next/static/webpack/webpack.a48e26c898b9f3a1.hot-update.js index 281165a5..015f34ad 100644 --- a/v2/.next/static/webpack/webpack.454303fd20abdc81.hot-update.js +++ b/v2/.next/static/webpack/webpack.a48e26c898b9f3a1.hot-update.js @@ -11,7 +11,7 @@ self["webpackHotUpdate_N_E"]("webpack",{}, /******/ function(__webpack_require__) { // webpackRuntimeModules /******/ /* webpack/runtime/getFullHash */ /******/ !function() { -/******/ __webpack_require__.h = function() { return "1c16d350ebea0283"; } +/******/ __webpack_require__.h = function() { return "fe81321650cb985b"; } /******/ }(); /******/ /******/ } diff --git a/v2/.next/static/webpack/webpack.ac9262be5d513d4d.hot-update.js b/v2/.next/static/webpack/webpack.ac9262be5d513d4d.hot-update.js new file mode 100644 index 00000000..55f7559d --- /dev/null +++ b/v2/.next/static/webpack/webpack.ac9262be5d513d4d.hot-update.js @@ -0,0 +1,18 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +self["webpackHotUpdate_N_E"]("webpack",{}, +/******/ function(__webpack_require__) { // webpackRuntimeModules +/******/ /* webpack/runtime/getFullHash */ +/******/ !function() { +/******/ __webpack_require__.h = function() { return "a48e26c898b9f3a1"; } +/******/ }(); +/******/ +/******/ } +); \ No newline at end of file diff --git a/v2/.next/trace b/v2/.next/trace index 204fa532..56f2eee1 100644 --- a/v2/.next/trace +++ b/v2/.next/trace @@ -1,5 +1,13 @@ -[{"traceId":"d0f3df446cb0f25a","name":"hot-reloader","id":1,"timestamp":1640944401395,"duration":17,"tags":{"version":"13.5.3"},"startTime":1708271409073},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"start","id":2,"timestamp":1640944401969,"duration":0,"tags":{},"startTime":1708271409074},{"traceId":"d0f3df446cb0f25a","parentId":2,"name":"get-version-info","id":3,"timestamp":1640944402040,"duration":450550,"tags":{},"startTime":1708271409074},{"traceId":"d0f3df446cb0f25a","parentId":2,"name":"clean","id":4,"timestamp":1640944852655,"duration":29700,"tags":{},"startTime":1708271409524},{"traceId":"d0f3df446cb0f25a","parentId":5,"name":"create-pages-mapping","id":6,"timestamp":1640944883058,"duration":122,"tags":{},"startTime":1708271409555},{"traceId":"d0f3df446cb0f25a","parentId":5,"name":"create-entrypoints","id":7,"timestamp":1640944883194,"duration":1307699,"tags":{},"startTime":1708271409555},{"traceId":"d0f3df446cb0f25a","parentId":5,"name":"generate-webpack-config","id":8,"timestamp":1640946190944,"duration":65375,"tags":{},"startTime":1708271410863},{"traceId":"d0f3df446cb0f25a","parentId":2,"name":"get-webpack-config","id":5,"timestamp":1640944883005,"duration":1373325,"tags":{},"startTime":1708271409555},{"traceId":"d0f3df446cb0f25a","parentId":9,"name":"make","id":10,"timestamp":1640946295183,"duration":515,"tags":{},"startTime":1708271410967},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"chunk-graph","id":12,"timestamp":1640946296813,"duration":437,"tags":{},"startTime":1708271410968},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"optimize-modules","id":14,"timestamp":1640946297305,"duration":10,"tags":{},"startTime":1708271410969},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"optimize-chunks","id":15,"timestamp":1640946297362,"duration":89,"tags":{},"startTime":1708271410969},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"optimize-tree","id":16,"timestamp":1640946297480,"duration":52,"tags":{},"startTime":1708271410969},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"optimize-chunk-modules","id":17,"timestamp":1640946297601,"duration":55,"tags":{},"startTime":1708271410969},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"optimize","id":13,"timestamp":1640946297284,"duration":432,"tags":{},"startTime":1708271410969},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"module-hash","id":18,"timestamp":1640946298125,"duration":39,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"code-generation","id":19,"timestamp":1640946298179,"duration":97,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"hash","id":20,"timestamp":1640946298381,"duration":234,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"code-generation-jobs","id":21,"timestamp":1640946298615,"duration":52,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"module-assets","id":22,"timestamp":1640946298656,"duration":33,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":11,"name":"create-chunk-assets","id":23,"timestamp":1640946298693,"duration":88,"tags":{},"startTime":1708271410970},{"traceId":"d0f3df446cb0f25a","parentId":9,"name":"NextJsBuildManifest-generateClientManifest","id":25,"timestamp":1640946350908,"duration":410,"tags":{},"startTime":1708271411023},{"traceId":"d0f3df446cb0f25a","parentId":9,"name":"NextJsBuildManifest-createassets","id":24,"timestamp":1640946350716,"duration":610,"tags":{},"startTime":1708271411022},{"traceId":"d0f3df446cb0f25a","parentId":9,"name":"seal","id":11,"timestamp":1640946296679,"duration":55219,"tags":{},"startTime":1708271410968},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-compilation","id":9,"timestamp":1640946292150,"duration":59881,"tags":{"name":"client"},"startTime":1708271410964},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"emit","id":26,"timestamp":1640946352215,"duration":2162,"tags":{},"startTime":1708271411024},{"traceId":"d0f3df446cb0f25a","parentId":27,"name":"make","id":28,"timestamp":1640946359100,"duration":705,"tags":{},"startTime":1708271411031},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"chunk-graph","id":30,"timestamp":1640946359920,"duration":16,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"optimize-modules","id":32,"timestamp":1640946359946,"duration":2,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"optimize-chunks","id":33,"timestamp":1640946359976,"duration":360,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"optimize-tree","id":34,"timestamp":1640946360355,"duration":3,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"optimize-chunk-modules","id":35,"timestamp":1640946360384,"duration":3,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"optimize","id":31,"timestamp":1640946359942,"duration":467,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"module-hash","id":36,"timestamp":1640946360465,"duration":8,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"code-generation","id":37,"timestamp":1640946360478,"duration":3,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"hash","id":38,"timestamp":1640946360498,"duration":25,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"code-generation-jobs","id":39,"timestamp":1640946360523,"duration":17,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"module-assets","id":40,"timestamp":1640946360538,"duration":6,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":29,"name":"create-chunk-assets","id":41,"timestamp":1640946360547,"duration":6,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":27,"name":"seal","id":29,"timestamp":1640946359900,"duration":954,"tags":{},"startTime":1708271411032},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-compilation","id":27,"timestamp":1640946358669,"duration":2242,"tags":{"name":"server"},"startTime":1708271411030},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"emit","id":42,"timestamp":1640946360940,"duration":751,"tags":{},"startTime":1708271411033},{"traceId":"d0f3df446cb0f25a","parentId":43,"name":"make","id":44,"timestamp":1640946364533,"duration":70,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"chunk-graph","id":46,"timestamp":1640946364824,"duration":11,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"optimize-modules","id":48,"timestamp":1640946364843,"duration":2,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"optimize-chunks","id":49,"timestamp":1640946364867,"duration":4,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"optimize-tree","id":50,"timestamp":1640946364877,"duration":2,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"optimize-chunk-modules","id":51,"timestamp":1640946364886,"duration":2,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"optimize","id":47,"timestamp":1640946364840,"duration":56,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"module-hash","id":52,"timestamp":1640946364936,"duration":3,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"code-generation","id":53,"timestamp":1640946364943,"duration":3,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"hash","id":54,"timestamp":1640946364961,"duration":29,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"code-generation-jobs","id":55,"timestamp":1640946364990,"duration":8,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"module-assets","id":56,"timestamp":1640946364996,"duration":4,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":45,"name":"create-chunk-assets","id":57,"timestamp":1640946365002,"duration":5,"tags":{},"startTime":1708271411037},{"traceId":"d0f3df446cb0f25a","parentId":43,"name":"seal","id":45,"timestamp":1640946364810,"duration":387,"tags":{},"startTime":1708271411036},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-compilation","id":43,"timestamp":1640946363784,"duration":1429,"tags":{"name":"edge-server"},"startTime":1708271411035},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"emit","id":58,"timestamp":1640946365228,"duration":447,"tags":{},"startTime":1708271411037}] -[{"traceId":"d0f3df446cb0f25a","parentId":62,"name":"make","id":63,"timestamp":1640946583757,"duration":223,"tags":{},"startTime":1708271411255},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"chunk-graph","id":65,"timestamp":1640946584087,"duration":19,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"optimize-modules","id":67,"timestamp":1640946584118,"duration":4,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"optimize-chunks","id":68,"timestamp":1640946584133,"duration":5,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"optimize-tree","id":69,"timestamp":1640946584146,"duration":4,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"optimize-chunk-modules","id":70,"timestamp":1640946584162,"duration":3,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"optimize","id":66,"timestamp":1640946584114,"duration":69,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"module-hash","id":71,"timestamp":1640946584255,"duration":6,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"code-generation","id":72,"timestamp":1640946584267,"duration":5,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"hash","id":73,"timestamp":1640946584293,"duration":33,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"code-generation-jobs","id":74,"timestamp":1640946584326,"duration":12,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"module-assets","id":75,"timestamp":1640946584335,"duration":5,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":64,"name":"create-chunk-assets","id":76,"timestamp":1640946584343,"duration":11,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":62,"name":"NextJsBuildManifest-generateClientManifest","id":78,"timestamp":1640946584570,"duration":49,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":62,"name":"NextJsBuildManifest-createassets","id":77,"timestamp":1640946584536,"duration":85,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":62,"name":"seal","id":64,"timestamp":1640946584065,"duration":738,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":59,"name":"webpack-compilation","id":62,"timestamp":1640946583228,"duration":1593,"tags":{"name":"client"},"startTime":1708271411255},{"traceId":"d0f3df446cb0f25a","parentId":59,"name":"emit","id":79,"timestamp":1640946584842,"duration":41573,"tags":{},"startTime":1708271411256},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-client","id":59,"timestamp":1640946580897,"duration":46069,"tags":{"trigger":"manual"},"startTime":1708271411253},{"traceId":"d0f3df446cb0f25a","parentId":80,"name":"make","id":81,"timestamp":1640946628013,"duration":93,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"chunk-graph","id":83,"timestamp":1640946628182,"duration":16,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"optimize-modules","id":85,"timestamp":1640946628207,"duration":4,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"optimize-chunks","id":86,"timestamp":1640946628244,"duration":19,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"optimize-tree","id":87,"timestamp":1640946628269,"duration":2,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"optimize-chunk-modules","id":88,"timestamp":1640946628281,"duration":2,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"optimize","id":84,"timestamp":1640946628204,"duration":90,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"module-hash","id":89,"timestamp":1640946628339,"duration":4,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"code-generation","id":90,"timestamp":1640946628347,"duration":3,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"hash","id":91,"timestamp":1640946628366,"duration":31,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"code-generation-jobs","id":92,"timestamp":1640946628398,"duration":9,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"module-assets","id":93,"timestamp":1640946628404,"duration":4,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":82,"name":"create-chunk-assets","id":94,"timestamp":1640946628411,"duration":6,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":80,"name":"seal","id":82,"timestamp":1640946628164,"duration":370,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":60,"name":"webpack-compilation","id":80,"timestamp":1640946627571,"duration":980,"tags":{"name":"server"},"startTime":1708271411299},{"traceId":"d0f3df446cb0f25a","parentId":60,"name":"emit","id":95,"timestamp":1640946628560,"duration":14752,"tags":{},"startTime":1708271411300},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-server","id":60,"timestamp":1640946581000,"duration":62639,"tags":{"trigger":"manual"},"startTime":1708271411253},{"traceId":"d0f3df446cb0f25a","parentId":96,"name":"make","id":97,"timestamp":1640946644879,"duration":78,"tags":{},"startTime":1708271411316},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"chunk-graph","id":99,"timestamp":1640946645106,"duration":14,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"optimize-modules","id":101,"timestamp":1640946645131,"duration":3,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"optimize-chunks","id":102,"timestamp":1640946645143,"duration":4,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"optimize-tree","id":103,"timestamp":1640946645155,"duration":4,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"optimize-chunk-modules","id":104,"timestamp":1640946645233,"duration":7,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"optimize","id":100,"timestamp":1640946645127,"duration":124,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"module-hash","id":105,"timestamp":1640946645305,"duration":4,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"code-generation","id":106,"timestamp":1640946645315,"duration":4,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"hash","id":107,"timestamp":1640946645336,"duration":26,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"code-generation-jobs","id":108,"timestamp":1640946645363,"duration":10,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"module-assets","id":109,"timestamp":1640946645370,"duration":4,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":98,"name":"create-chunk-assets","id":110,"timestamp":1640946645377,"duration":7,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":96,"name":"seal","id":98,"timestamp":1640946645089,"duration":448,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":61,"name":"webpack-compilation","id":96,"timestamp":1640946644459,"duration":1093,"tags":{"name":"edge-server"},"startTime":1708271411316},{"traceId":"d0f3df446cb0f25a","parentId":61,"name":"emit","id":111,"timestamp":1640946645562,"duration":5467,"tags":{},"startTime":1708271411317},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-edge-server","id":61,"timestamp":1640946581034,"duration":70436,"tags":{"trigger":"manual"},"startTime":1708271411253}] -[{"traceId":"d0f3df446cb0f25a","parentId":114,"name":"add-entry","id":115,"timestamp":1640949553851,"duration":132338,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271414225},{"traceId":"d0f3df446cb0f25a","parentId":113,"name":"make","id":114,"timestamp":1640949550941,"duration":171249,"tags":{},"startTime":1708271414223},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"chunk-graph","id":121,"timestamp":1640949727656,"duration":3564,"tags":{},"startTime":1708271414399},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"optimize-modules","id":123,"timestamp":1640949731265,"duration":10,"tags":{},"startTime":1708271414403},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"optimize-chunks","id":124,"timestamp":1640949731312,"duration":3382,"tags":{},"startTime":1708271414403},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"optimize-tree","id":125,"timestamp":1640949734728,"duration":61,"tags":{},"startTime":1708271414406},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"optimize-chunk-modules","id":126,"timestamp":1640949734817,"duration":57,"tags":{},"startTime":1708271414406},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"optimize","id":122,"timestamp":1640949731246,"duration":4209,"tags":{},"startTime":1708271414403},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"module-hash","id":127,"timestamp":1640949738316,"duration":4811,"tags":{},"startTime":1708271414410},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"code-generation","id":128,"timestamp":1640949743144,"duration":2246,"tags":{},"startTime":1708271414415},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"hash","id":129,"timestamp":1640949749302,"duration":3259,"tags":{},"startTime":1708271414421},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"code-generation-jobs","id":130,"timestamp":1640949752561,"duration":232,"tags":{},"startTime":1708271414424},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"module-assets","id":131,"timestamp":1640949752780,"duration":121,"tags":{},"startTime":1708271414424},{"traceId":"d0f3df446cb0f25a","parentId":120,"name":"create-chunk-assets","id":132,"timestamp":1640949752905,"duration":25782,"tags":{},"startTime":1708271414425},{"traceId":"d0f3df446cb0f25a","parentId":113,"name":"seal","id":120,"timestamp":1640949726907,"duration":53262,"tags":{},"startTime":1708271414399},{"traceId":"d0f3df446cb0f25a","parentId":112,"name":"webpack-compilation","id":113,"timestamp":1640949550009,"duration":231863,"tags":{"name":"server"},"startTime":1708271414222},{"traceId":"d0f3df446cb0f25a","parentId":112,"name":"emit","id":133,"timestamp":1640949782037,"duration":9063,"tags":{},"startTime":1708271414454},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-server","id":112,"timestamp":1640949548171,"duration":243917,"tags":{"trigger":"manual"},"startTime":1708271414220},{"traceId":"d0f3df446cb0f25a","parentId":135,"name":"add-entry","id":136,"timestamp":1640949801746,"duration":103110,"tags":{"request":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1708271414473},{"traceId":"d0f3df446cb0f25a","parentId":135,"name":"add-entry","id":140,"timestamp":1640949801860,"duration":108015,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!"},"startTime":1708271414473},{"traceId":"d0f3df446cb0f25a","parentId":135,"name":"add-entry","id":138,"timestamp":1640949801837,"duration":125076,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"},"startTime":1708271414473},{"traceId":"d0f3df446cb0f25a","parentId":135,"name":"add-entry","id":139,"timestamp":1640949801851,"duration":125770,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1708271414473},{"traceId":"d0f3df446cb0f25a","parentId":135,"name":"add-entry","id":137,"timestamp":1640949801821,"duration":125836,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1708271414473},{"traceId":"d0f3df446cb0f25a","parentId":134,"name":"make","id":135,"timestamp":1640949797840,"duration":129887,"tags":{},"startTime":1708271414469},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"chunk-graph","id":142,"timestamp":1640949930104,"duration":1842,"tags":{},"startTime":1708271414602},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"optimize-modules","id":144,"timestamp":1640949931961,"duration":3,"tags":{},"startTime":1708271414604},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"optimize-chunks","id":145,"timestamp":1640949931998,"duration":40,"tags":{},"startTime":1708271414604},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"optimize-tree","id":146,"timestamp":1640949932059,"duration":4,"tags":{},"startTime":1708271414604},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"optimize-chunk-modules","id":147,"timestamp":1640949932083,"duration":3,"tags":{},"startTime":1708271414604},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"optimize","id":143,"timestamp":1640949931956,"duration":694,"tags":{},"startTime":1708271414604},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"module-hash","id":148,"timestamp":1640949935354,"duration":3119,"tags":{},"startTime":1708271414607},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"code-generation","id":149,"timestamp":1640949938491,"duration":1413,"tags":{},"startTime":1708271414610},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"hash","id":150,"timestamp":1640949941809,"duration":5901,"tags":{},"startTime":1708271414613},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"code-generation-jobs","id":151,"timestamp":1640949947710,"duration":179,"tags":{},"startTime":1708271414619},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"module-assets","id":152,"timestamp":1640949947882,"duration":266,"tags":{},"startTime":1708271414619},{"traceId":"d0f3df446cb0f25a","parentId":141,"name":"create-chunk-assets","id":153,"timestamp":1640949948153,"duration":10752,"tags":{},"startTime":1708271414620},{"traceId":"d0f3df446cb0f25a","parentId":134,"name":"NextJsBuildManifest-generateClientManifest","id":155,"timestamp":1640949960128,"duration":435,"tags":{},"startTime":1708271414632},{"traceId":"d0f3df446cb0f25a","parentId":134,"name":"NextJsBuildManifest-createassets","id":154,"timestamp":1640949959782,"duration":787,"tags":{},"startTime":1708271414631},{"traceId":"d0f3df446cb0f25a","parentId":134,"name":"seal","id":141,"timestamp":1640949929608,"duration":33184,"tags":{},"startTime":1708271414601},{"traceId":"d0f3df446cb0f25a","parentId":119,"name":"webpack-compilation","id":134,"timestamp":1640949795681,"duration":167145,"tags":{"name":"client"},"startTime":1708271414467},{"traceId":"d0f3df446cb0f25a","parentId":119,"name":"emit","id":156,"timestamp":1640949962859,"duration":6752,"tags":{},"startTime":1708271414634},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-client","id":119,"timestamp":1640949694004,"duration":277286,"tags":{"trigger":"manual"},"startTime":1708271414366}] -[{"traceId":"d0f3df446cb0f25a","parentId":159,"name":"add-entry","id":160,"timestamp":1640950193095,"duration":13895,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271414865},{"traceId":"d0f3df446cb0f25a","parentId":159,"name":"add-entry","id":161,"timestamp":1640950193142,"duration":28758,"tags":{"request":"next-app-loader?name=app%2Ffavicon.ico%2Froute&page=%2Ffavicon.ico%2Froute&appPaths=&pagePath=private-next-app-dir%2Ffavicon.ico&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271414865},{"traceId":"d0f3df446cb0f25a","parentId":158,"name":"make","id":159,"timestamp":1640950191830,"duration":43542,"tags":{},"startTime":1708271414863},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"chunk-graph","id":166,"timestamp":1640950239128,"duration":1457,"tags":{},"startTime":1708271414911},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"optimize-modules","id":168,"timestamp":1640950240608,"duration":47,"tags":{},"startTime":1708271414912},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"optimize-chunks","id":169,"timestamp":1640950240712,"duration":1144,"tags":{},"startTime":1708271414912},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"optimize-tree","id":170,"timestamp":1640950241874,"duration":4,"tags":{},"startTime":1708271414913},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"optimize-chunk-modules","id":171,"timestamp":1640950241888,"duration":3,"tags":{},"startTime":1708271414914},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"optimize","id":167,"timestamp":1640950240601,"duration":1889,"tags":{},"startTime":1708271414912},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"module-hash","id":172,"timestamp":1640950243489,"duration":597,"tags":{},"startTime":1708271414915},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"code-generation","id":173,"timestamp":1640950244094,"duration":3313,"tags":{},"startTime":1708271414916},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"hash","id":174,"timestamp":1640950248467,"duration":1266,"tags":{},"startTime":1708271414920},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"code-generation-jobs","id":175,"timestamp":1640950249733,"duration":127,"tags":{},"startTime":1708271414921},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"module-assets","id":176,"timestamp":1640950249852,"duration":74,"tags":{},"startTime":1708271414921},{"traceId":"d0f3df446cb0f25a","parentId":165,"name":"create-chunk-assets","id":177,"timestamp":1640950249929,"duration":3850,"tags":{},"startTime":1708271414922},{"traceId":"d0f3df446cb0f25a","parentId":158,"name":"seal","id":165,"timestamp":1640950238345,"duration":16812,"tags":{},"startTime":1708271414910},{"traceId":"d0f3df446cb0f25a","parentId":157,"name":"webpack-compilation","id":158,"timestamp":1640950191416,"duration":64952,"tags":{"name":"server"},"startTime":1708271414863},{"traceId":"d0f3df446cb0f25a","parentId":157,"name":"emit","id":178,"timestamp":1640950256383,"duration":4743,"tags":{},"startTime":1708271414928},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-server","id":157,"timestamp":1640950188472,"duration":73188,"tags":{"trigger":"manual"},"startTime":1708271414860}] -[{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"client-success","id":179,"timestamp":1640950541674,"duration":0,"tags":{},"startTime":1708271415213},{"traceId":"d0f3df446cb0f25a","parentId":182,"name":"add-entry","id":184,"timestamp":1640952502665,"duration":65663,"tags":{"request":"next-app-loader?name=app%2Ffavicon.ico%2Froute&page=%2Ffavicon.ico%2Froute&appPaths=&pagePath=private-next-app-dir%2Ffavicon.ico&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271417174},{"traceId":"d0f3df446cb0f25a","parentId":182,"name":"add-entry","id":183,"timestamp":1640952502444,"duration":66350,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271417174},{"traceId":"d0f3df446cb0f25a","parentId":182,"name":"add-entry","id":185,"timestamp":1640952503079,"duration":85063,"tags":{"request":"next-app-loader?name=app%2Fexps%2F%5Bid%5D%2Fpage&page=%2Fexps%2F%5Bid%5D%2Fpage&appPaths=%2Fexps%2F%5Bid%5D%2Fpage&pagePath=private-next-app-dir%2Fexps%2F%5Bid%5D%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1708271417175},{"traceId":"d0f3df446cb0f25a","parentId":181,"name":"make","id":182,"timestamp":1640952497877,"duration":94375,"tags":{},"startTime":1708271417169},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"chunk-graph","id":194,"timestamp":1640952594488,"duration":2014,"tags":{},"startTime":1708271417266},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"optimize-modules","id":196,"timestamp":1640952596543,"duration":11,"tags":{},"startTime":1708271417268},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"optimize-chunks","id":197,"timestamp":1640952596596,"duration":1418,"tags":{},"startTime":1708271417268},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"optimize-tree","id":198,"timestamp":1640952598042,"duration":70,"tags":{},"startTime":1708271417270},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"optimize-chunk-modules","id":199,"timestamp":1640952598142,"duration":59,"tags":{},"startTime":1708271417270},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"optimize","id":195,"timestamp":1640952596525,"duration":2258,"tags":{},"startTime":1708271417268},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"module-hash","id":200,"timestamp":1640952599784,"duration":358,"tags":{},"startTime":1708271417271},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"code-generation","id":201,"timestamp":1640952600156,"duration":930,"tags":{},"startTime":1708271417272},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"hash","id":202,"timestamp":1640952602343,"duration":2086,"tags":{},"startTime":1708271417274},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"code-generation-jobs","id":203,"timestamp":1640952604429,"duration":163,"tags":{},"startTime":1708271417276},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"module-assets","id":204,"timestamp":1640952604578,"duration":60,"tags":{},"startTime":1708271417276},{"traceId":"d0f3df446cb0f25a","parentId":193,"name":"create-chunk-assets","id":205,"timestamp":1640952604642,"duration":613,"tags":{},"startTime":1708271417276},{"traceId":"d0f3df446cb0f25a","parentId":181,"name":"seal","id":193,"timestamp":1640952593929,"duration":12384,"tags":{},"startTime":1708271417266},{"traceId":"d0f3df446cb0f25a","parentId":180,"name":"webpack-compilation","id":181,"timestamp":1640952497048,"duration":110810,"tags":{"name":"server"},"startTime":1708271417169},{"traceId":"d0f3df446cb0f25a","parentId":180,"name":"emit","id":206,"timestamp":1640952607988,"duration":1643,"tags":{},"startTime":1708271417280},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-server","id":180,"timestamp":1640952491308,"duration":119120,"tags":{"trigger":"manual"},"startTime":1708271417163},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":209,"timestamp":1640952617882,"duration":18726,"tags":{"request":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":213,"timestamp":1640952618030,"duration":19756,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":211,"timestamp":1640952617930,"duration":26715,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":212,"timestamp":1640952617938,"duration":26717,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":210,"timestamp":1640952617920,"duration":38165,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":208,"name":"add-entry","id":214,"timestamp":1640952618043,"duration":39370,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1708271417290},{"traceId":"d0f3df446cb0f25a","parentId":207,"name":"make","id":208,"timestamp":1640952613433,"duration":44076,"tags":{},"startTime":1708271417285},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"chunk-graph","id":216,"timestamp":1640952658828,"duration":968,"tags":{},"startTime":1708271417330},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"optimize-modules","id":218,"timestamp":1640952659812,"duration":4,"tags":{},"startTime":1708271417331},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"optimize-chunks","id":219,"timestamp":1640952659849,"duration":37,"tags":{},"startTime":1708271417331},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"optimize-tree","id":220,"timestamp":1640952659908,"duration":4,"tags":{},"startTime":1708271417332},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"optimize-chunk-modules","id":221,"timestamp":1640952659939,"duration":3,"tags":{},"startTime":1708271417332},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"optimize","id":217,"timestamp":1640952659806,"duration":663,"tags":{},"startTime":1708271417331},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"module-hash","id":222,"timestamp":1640952661068,"duration":222,"tags":{},"startTime":1708271417333},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"code-generation","id":223,"timestamp":1640952661297,"duration":639,"tags":{},"startTime":1708271417333},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"hash","id":224,"timestamp":1640952663242,"duration":3028,"tags":{},"startTime":1708271417335},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"code-generation-jobs","id":225,"timestamp":1640952666271,"duration":102,"tags":{},"startTime":1708271417338},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"module-assets","id":226,"timestamp":1640952666367,"duration":61,"tags":{},"startTime":1708271417338},{"traceId":"d0f3df446cb0f25a","parentId":215,"name":"create-chunk-assets","id":227,"timestamp":1640952666432,"duration":5577,"tags":{},"startTime":1708271417338},{"traceId":"d0f3df446cb0f25a","parentId":207,"name":"NextJsBuildManifest-generateClientManifest","id":229,"timestamp":1640952673871,"duration":422,"tags":{},"startTime":1708271417345},{"traceId":"d0f3df446cb0f25a","parentId":207,"name":"NextJsBuildManifest-createassets","id":228,"timestamp":1640952673594,"duration":704,"tags":{},"startTime":1708271417345},{"traceId":"d0f3df446cb0f25a","parentId":207,"name":"seal","id":215,"timestamp":1640952658311,"duration":17758,"tags":{},"startTime":1708271417330},{"traceId":"d0f3df446cb0f25a","parentId":192,"name":"webpack-compilation","id":207,"timestamp":1640952612811,"duration":63290,"tags":{"name":"client"},"startTime":1708271417284},{"traceId":"d0f3df446cb0f25a","parentId":192,"name":"emit","id":230,"timestamp":1640952676137,"duration":3721,"tags":{},"startTime":1708271417348},{"traceId":"d0f3df446cb0f25a","parentId":1,"name":"webpack-invalidated-client","id":192,"timestamp":1640952589528,"duration":92143,"tags":{"trigger":"manual"},"startTime":1708271417261}] +[{"traceId":"7cd6fd9d8b50b713","name":"hot-reloader","id":1,"timestamp":326181672172,"duration":23,"tags":{"version":"13.5.3"},"startTime":1710752016516},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"start","id":2,"timestamp":326181672607,"duration":1,"tags":{},"startTime":1710752016517},{"traceId":"7cd6fd9d8b50b713","parentId":2,"name":"get-version-info","id":3,"timestamp":326181672697,"duration":492667,"tags":{},"startTime":1710752016517},{"traceId":"7cd6fd9d8b50b713","parentId":2,"name":"clean","id":4,"timestamp":326182165442,"duration":8659,"tags":{},"startTime":1710752017009},{"traceId":"7cd6fd9d8b50b713","parentId":5,"name":"create-pages-mapping","id":6,"timestamp":326182174856,"duration":109,"tags":{},"startTime":1710752017019},{"traceId":"7cd6fd9d8b50b713","parentId":5,"name":"create-entrypoints","id":7,"timestamp":326182174979,"duration":824397,"tags":{},"startTime":1710752017019},{"traceId":"7cd6fd9d8b50b713","parentId":5,"name":"generate-webpack-config","id":8,"timestamp":326182999462,"duration":73352,"tags":{},"startTime":1710752017843},{"traceId":"7cd6fd9d8b50b713","parentId":2,"name":"get-webpack-config","id":5,"timestamp":326182174803,"duration":898025,"tags":{},"startTime":1710752017019},{"traceId":"7cd6fd9d8b50b713","parentId":9,"name":"make","id":10,"timestamp":326183108212,"duration":523,"tags":{},"startTime":1710752017952},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"chunk-graph","id":12,"timestamp":326183109833,"duration":338,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"optimize-modules","id":14,"timestamp":326183110225,"duration":12,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"optimize-chunks","id":15,"timestamp":326183110274,"duration":97,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"optimize-tree","id":16,"timestamp":326183110401,"duration":51,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"optimize-chunk-modules","id":17,"timestamp":326183110530,"duration":54,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"optimize","id":13,"timestamp":326183110202,"duration":448,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"module-hash","id":18,"timestamp":326183111012,"duration":38,"tags":{},"startTime":1710752017955},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"code-generation","id":19,"timestamp":326183111061,"duration":113,"tags":{},"startTime":1710752017955},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"hash","id":20,"timestamp":326183111283,"duration":236,"tags":{},"startTime":1710752017955},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"code-generation-jobs","id":21,"timestamp":326183111519,"duration":60,"tags":{},"startTime":1710752017955},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"module-assets","id":22,"timestamp":326183111568,"duration":33,"tags":{},"startTime":1710752017955},{"traceId":"7cd6fd9d8b50b713","parentId":11,"name":"create-chunk-assets","id":23,"timestamp":326183111605,"duration":91,"tags":{},"startTime":1710752017956},{"traceId":"7cd6fd9d8b50b713","parentId":9,"name":"NextJsBuildManifest-generateClientManifest","id":25,"timestamp":326183295826,"duration":404,"tags":{},"startTime":1710752018140},{"traceId":"7cd6fd9d8b50b713","parentId":9,"name":"NextJsBuildManifest-createassets","id":24,"timestamp":326183295631,"duration":606,"tags":{},"startTime":1710752018140},{"traceId":"7cd6fd9d8b50b713","parentId":9,"name":"seal","id":11,"timestamp":326183109667,"duration":187068,"tags":{},"startTime":1710752017954},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-compilation","id":9,"timestamp":326183105308,"duration":191618,"tags":{"name":"client"},"startTime":1710752017949},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"emit","id":26,"timestamp":326183297108,"duration":3572,"tags":{},"startTime":1710752018141},{"traceId":"7cd6fd9d8b50b713","parentId":27,"name":"make","id":28,"timestamp":326183305388,"duration":627,"tags":{},"startTime":1710752018149},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"chunk-graph","id":30,"timestamp":326183306131,"duration":12,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"optimize-modules","id":32,"timestamp":326183306151,"duration":2,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"optimize-chunks","id":33,"timestamp":326183306180,"duration":367,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"optimize-tree","id":34,"timestamp":326183306566,"duration":3,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"optimize-chunk-modules","id":35,"timestamp":326183306591,"duration":3,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"optimize","id":31,"timestamp":326183306148,"duration":470,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"module-hash","id":36,"timestamp":326183306675,"duration":5,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"code-generation","id":37,"timestamp":326183306684,"duration":3,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"hash","id":38,"timestamp":326183306705,"duration":26,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"code-generation-jobs","id":39,"timestamp":326183306731,"duration":20,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"module-assets","id":40,"timestamp":326183306747,"duration":11,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":29,"name":"create-chunk-assets","id":41,"timestamp":326183306761,"duration":7,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":27,"name":"seal","id":29,"timestamp":326183306113,"duration":964,"tags":{},"startTime":1710752018150},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-compilation","id":27,"timestamp":326183304963,"duration":2176,"tags":{"name":"server"},"startTime":1710752018149},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"emit","id":42,"timestamp":326183307167,"duration":607,"tags":{},"startTime":1710752018151},{"traceId":"7cd6fd9d8b50b713","parentId":43,"name":"make","id":44,"timestamp":326183310433,"duration":76,"tags":{},"startTime":1710752018154},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"chunk-graph","id":46,"timestamp":326183310754,"duration":11,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"optimize-modules","id":48,"timestamp":326183310774,"duration":2,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"optimize-chunks","id":49,"timestamp":326183310801,"duration":5,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"optimize-tree","id":50,"timestamp":326183310812,"duration":2,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"optimize-chunk-modules","id":51,"timestamp":326183310821,"duration":2,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"optimize","id":47,"timestamp":326183310771,"duration":60,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"module-hash","id":52,"timestamp":326183310874,"duration":4,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"code-generation","id":53,"timestamp":326183310883,"duration":3,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"hash","id":54,"timestamp":326183310911,"duration":31,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"code-generation-jobs","id":55,"timestamp":326183310942,"duration":8,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"module-assets","id":56,"timestamp":326183310948,"duration":3,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":45,"name":"create-chunk-assets","id":57,"timestamp":326183310953,"duration":5,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":43,"name":"seal","id":45,"timestamp":326183310740,"duration":425,"tags":{},"startTime":1710752018155},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-compilation","id":43,"timestamp":326183309847,"duration":1334,"tags":{"name":"edge-server"},"startTime":1710752018154},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"emit","id":58,"timestamp":326183311198,"duration":407,"tags":{},"startTime":1710752018155}] +[{"traceId":"7cd6fd9d8b50b713","parentId":62,"name":"make","id":63,"timestamp":326183538183,"duration":334,"tags":{},"startTime":1710752018382},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"chunk-graph","id":65,"timestamp":326183538948,"duration":52,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"optimize-modules","id":67,"timestamp":326183539034,"duration":8,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"optimize-chunks","id":68,"timestamp":326183539063,"duration":16,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"optimize-tree","id":69,"timestamp":326183539100,"duration":9,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"optimize-chunk-modules","id":70,"timestamp":326183539133,"duration":8,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"optimize","id":66,"timestamp":326183539023,"duration":160,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"module-hash","id":71,"timestamp":326183539351,"duration":12,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"code-generation","id":72,"timestamp":326183539378,"duration":11,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"hash","id":73,"timestamp":326183539433,"duration":76,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"code-generation-jobs","id":74,"timestamp":326183539510,"duration":27,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"module-assets","id":75,"timestamp":326183539528,"duration":13,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":64,"name":"create-chunk-assets","id":76,"timestamp":326183539547,"duration":18,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":62,"name":"NextJsBuildManifest-generateClientManifest","id":78,"timestamp":326183540069,"duration":120,"tags":{},"startTime":1710752018384},{"traceId":"7cd6fd9d8b50b713","parentId":62,"name":"NextJsBuildManifest-createassets","id":77,"timestamp":326183540003,"duration":192,"tags":{},"startTime":1710752018384},{"traceId":"7cd6fd9d8b50b713","parentId":62,"name":"seal","id":64,"timestamp":326183538865,"duration":1557,"tags":{},"startTime":1710752018383},{"traceId":"7cd6fd9d8b50b713","parentId":59,"name":"webpack-compilation","id":62,"timestamp":326183536714,"duration":3755,"tags":{"name":"client"},"startTime":1710752018381},{"traceId":"7cd6fd9d8b50b713","parentId":59,"name":"emit","id":79,"timestamp":326183540511,"duration":60213,"tags":{},"startTime":1710752018384},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-client","id":59,"timestamp":326183530648,"duration":70742,"tags":{"trigger":"manual"},"startTime":1710752018375},{"traceId":"7cd6fd9d8b50b713","parentId":80,"name":"make","id":81,"timestamp":326183602653,"duration":188,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"chunk-graph","id":83,"timestamp":326183602954,"duration":20,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"optimize-modules","id":85,"timestamp":326183602985,"duration":3,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"optimize-chunks","id":86,"timestamp":326183603046,"duration":31,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"optimize-tree","id":87,"timestamp":326183603086,"duration":4,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"optimize-chunk-modules","id":88,"timestamp":326183603100,"duration":4,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"optimize","id":84,"timestamp":326183602981,"duration":139,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"module-hash","id":89,"timestamp":326183603182,"duration":17,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"code-generation","id":90,"timestamp":326183603204,"duration":5,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"hash","id":91,"timestamp":326183603228,"duration":50,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"code-generation-jobs","id":92,"timestamp":326183603278,"duration":12,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"module-assets","id":93,"timestamp":326183603286,"duration":5,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":82,"name":"create-chunk-assets","id":94,"timestamp":326183603294,"duration":9,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":80,"name":"seal","id":82,"timestamp":326183602933,"duration":540,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":60,"name":"webpack-compilation","id":80,"timestamp":326183602114,"duration":1387,"tags":{"name":"server"},"startTime":1710752018446},{"traceId":"7cd6fd9d8b50b713","parentId":60,"name":"emit","id":95,"timestamp":326183603516,"duration":17281,"tags":{},"startTime":1710752018447},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-server","id":60,"timestamp":326183531052,"duration":90112,"tags":{"trigger":"manual"},"startTime":1710752018375},{"traceId":"7cd6fd9d8b50b713","parentId":96,"name":"make","id":97,"timestamp":326183622242,"duration":104,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"chunk-graph","id":99,"timestamp":326183622492,"duration":14,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"optimize-modules","id":101,"timestamp":326183622515,"duration":3,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"optimize-chunks","id":102,"timestamp":326183622527,"duration":5,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"optimize-tree","id":103,"timestamp":326183622539,"duration":3,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"optimize-chunk-modules","id":104,"timestamp":326183622556,"duration":4,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"optimize","id":100,"timestamp":326183622512,"duration":58,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"module-hash","id":105,"timestamp":326183622627,"duration":4,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"code-generation","id":106,"timestamp":326183622636,"duration":3,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"hash","id":107,"timestamp":326183622655,"duration":27,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"code-generation-jobs","id":108,"timestamp":326183622683,"duration":10,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"module-assets","id":109,"timestamp":326183622691,"duration":4,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":98,"name":"create-chunk-assets","id":110,"timestamp":326183622697,"duration":7,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":96,"name":"seal","id":98,"timestamp":326183622476,"duration":402,"tags":{},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":61,"name":"webpack-compilation","id":96,"timestamp":326183621809,"duration":1084,"tags":{"name":"edge-server"},"startTime":1710752018466},{"traceId":"7cd6fd9d8b50b713","parentId":61,"name":"emit","id":111,"timestamp":326183622905,"duration":896,"tags":{},"startTime":1710752018467},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-edge-server","id":61,"timestamp":326183531143,"duration":93126,"tags":{"trigger":"manual"},"startTime":1710752018375}] +[{"traceId":"7cd6fd9d8b50b713","parentId":115,"name":"build-module-json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","id":116,"timestamp":326189103874,"duration":21468,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","layer":"rsc"},"startTime":1710752023958},{"traceId":"7cd6fd9d8b50b713","parentId":117,"name":"read-resource","id":118,"timestamp":326189140833,"duration":814,"tags":{},"startTime":1710752023995},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-ico?__next_metadata__","id":117,"timestamp":326189133077,"duration":10435,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-metadata-image-loader.js?type=favicon&segment=&basePath=&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js!/Users/yiwenl/Development/Sketches/v2/src/app/favicon.ico?__next_metadata__","layer":"rsc"},"startTime":1710752023987},{"traceId":"7cd6fd9d8b50b713","parentId":121,"name":"next-swc-transform","id":122,"timestamp":326189147025,"duration":7947,"tags":{},"startTime":1710752024001},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"next-swc-loader","id":121,"timestamp":326189146601,"duration":8378,"tags":{},"startTime":1710752024001},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":119,"timestamp":326189144515,"duration":12768,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/page.js","layer":"rsc"},"startTime":1710752023999},{"traceId":"7cd6fd9d8b50b713","parentId":123,"name":"next-swc-transform","id":124,"timestamp":326189147134,"duration":10178,"tags":{},"startTime":1710752024001},{"traceId":"7cd6fd9d8b50b713","parentId":120,"name":"next-swc-loader","id":123,"timestamp":326189147049,"duration":10266,"tags":{},"startTime":1710752024001},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":120,"timestamp":326189146338,"duration":11672,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/layout.js","layer":"rsc"},"startTime":1710752024000},{"traceId":"7cd6fd9d8b50b713","parentId":130,"name":"next-swc-transform","id":131,"timestamp":326189149563,"duration":8464,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":125,"name":"next-swc-loader","id":130,"timestamp":326189149502,"duration":8526,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":125,"timestamp":326189149202,"duration":10196,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-kind.js","layer":"rsc"},"startTime":1710752024003},{"traceId":"7cd6fd9d8b50b713","parentId":132,"name":"next-swc-transform","id":133,"timestamp":326189149603,"duration":9845,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"next-swc-loader","id":132,"timestamp":326189149564,"duration":9886,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":126,"timestamp":326189149299,"duration":14162,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/app-render/entry-base.js","layer":"rsc"},"startTime":1710752024003},{"traceId":"7cd6fd9d8b50b713","parentId":138,"name":"next-swc-transform","id":139,"timestamp":326189149700,"duration":18651,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":129,"name":"next-swc-loader","id":138,"timestamp":326189149671,"duration":18686,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":129,"timestamp":326189149442,"duration":19896,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","layer":"ssr"},"startTime":1710752024003},{"traceId":"7cd6fd9d8b50b713","parentId":134,"name":"next-swc-transform","id":135,"timestamp":326189149640,"duration":19724,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":127,"name":"next-swc-loader","id":134,"timestamp":326189149605,"duration":19760,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":127,"timestamp":326189149356,"duration":20327,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/error-boundary.js","layer":"rsc"},"startTime":1710752024003},{"traceId":"7cd6fd9d8b50b713","parentId":136,"name":"next-swc-transform","id":137,"timestamp":326189149670,"duration":20038,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":128,"name":"next-swc-loader","id":136,"timestamp":326189149641,"duration":20067,"tags":{},"startTime":1710752024004},{"traceId":"7cd6fd9d8b50b713","parentId":116,"name":"build-module-js","id":128,"timestamp":326189149400,"duration":21337,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/not-found-error.js","layer":"rsc"},"startTime":1710752024003},{"traceId":"7cd6fd9d8b50b713","parentId":129,"name":"build-module-js","id":140,"timestamp":326189174834,"duration":257,"tags":{"name":"next/dist/compiled/next-server/app-page.runtime.dev.js","layer":"null"},"startTime":1710752024029},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-external","id":143,"timestamp":326189175581,"duration":10,"tags":{"name":"../../client/components/static-generation-async-storage.external","layer":"null"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-external","id":145,"timestamp":326189175647,"duration":11,"tags":{"name":"../../client/components/request-async-storage.external","layer":"null"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-external","id":146,"timestamp":326189175662,"duration":5,"tags":{"name":"../../client/components/action-async-storage.external","layer":"null"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":153,"name":"next-swc-transform","id":154,"timestamp":326189175920,"duration":1636,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":142,"name":"next-swc-loader","id":153,"timestamp":326189175884,"duration":1677,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":142,"timestamp":326189175520,"duration":2482,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/render-from-template-context.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":159,"name":"next-swc-transform","id":160,"timestamp":326189176058,"duration":1971,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":148,"name":"next-swc-loader","id":159,"timestamp":326189176024,"duration":2006,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":148,"timestamp":326189175705,"duration":2562,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":157,"name":"next-swc-transform","id":158,"timestamp":326189176022,"duration":2421,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":147,"name":"next-swc-loader","id":157,"timestamp":326189175962,"duration":2483,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":147,"timestamp":326189175671,"duration":4347,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/static-generation-bailout.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":155,"name":"next-swc-transform","id":156,"timestamp":326189175957,"duration":4112,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":144,"name":"next-swc-loader","id":155,"timestamp":326189175922,"duration":4148,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":144,"timestamp":326189175601,"duration":4776,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/layout-router.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":151,"name":"next-swc-transform","id":152,"timestamp":326189175882,"duration":5528,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":141,"name":"next-swc-loader","id":151,"timestamp":326189175798,"duration":5614,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":141,"timestamp":326189175398,"duration":6275,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/app-router.js","layer":"rsc"},"startTime":1710752024029},{"traceId":"7cd6fd9d8b50b713","parentId":163,"name":"next-swc-transform","id":164,"timestamp":326189176128,"duration":5565,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":150,"name":"next-swc-loader","id":163,"timestamp":326189176084,"duration":5610,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":150,"timestamp":326189175771,"duration":6446,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/searchparams-bailout-proxy.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":161,"name":"next-swc-transform","id":162,"timestamp":326189176083,"duration":6149,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":149,"name":"next-swc-loader","id":161,"timestamp":326189176059,"duration":6174,"tags":{},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":149,"timestamp":326189175744,"duration":7144,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/hooks-server-context.js","layer":"rsc"},"startTime":1710752024030},{"traceId":"7cd6fd9d8b50b713","parentId":168,"name":"next-swc-transform","id":169,"timestamp":326189177501,"duration":6474,"tags":{},"startTime":1710752024032},{"traceId":"7cd6fd9d8b50b713","parentId":167,"name":"next-swc-loader","id":168,"timestamp":326189177438,"duration":6540,"tags":{},"startTime":1710752024031},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":167,"timestamp":326189177374,"duration":7191,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/app-render/rsc/preloads.js","layer":"rsc"},"startTime":1710752024031},{"traceId":"7cd6fd9d8b50b713","parentId":165,"name":"read-resource","id":166,"timestamp":326189177355,"duration":9271,"tags":{},"startTime":1710752024031},{"traceId":"7cd6fd9d8b50b713","parentId":120,"name":"build-module-css","id":165,"timestamp":326189176910,"duration":10083,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/globals.css","layer":"rsc"},"startTime":1710752024031},{"traceId":"7cd6fd9d8b50b713","parentId":177,"name":"next-swc-transform","id":178,"timestamp":326189185834,"duration":3485,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":172,"name":"next-swc-loader","id":177,"timestamp":326189185811,"duration":3510,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"build-module-js","id":172,"timestamp":326189185653,"duration":4572,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/components/ExperimentList.js","layer":"rsc"},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":175,"name":"next-swc-transform","id":176,"timestamp":326189185810,"duration":4473,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":171,"name":"next-swc-loader","id":175,"timestamp":326189185784,"duration":4501,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"build-module-js","id":171,"timestamp":326189185625,"duration":5191,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/components/Header.js","layer":"rsc"},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":173,"name":"next-swc-transform","id":174,"timestamp":326189185782,"duration":5063,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":170,"name":"next-swc-loader","id":173,"timestamp":326189185738,"duration":5109,"tags":{},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"build-module-js","id":170,"timestamp":326189185581,"duration":7273,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/model/data.js","layer":"rsc"},"startTime":1710752024040},{"traceId":"7cd6fd9d8b50b713","parentId":179,"name":"read-resource","id":180,"timestamp":326189188917,"duration":5695,"tags":{},"startTime":1710752024043},{"traceId":"7cd6fd9d8b50b713","parentId":182,"name":"next-swc-transform","id":183,"timestamp":326189194502,"duration":11173,"tags":{},"startTime":1710752024049},{"traceId":"7cd6fd9d8b50b713","parentId":181,"name":"next-swc-loader","id":182,"timestamp":326189194465,"duration":11218,"tags":{},"startTime":1710752024049},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":181,"timestamp":326189194423,"duration":11541,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/not-found-boundary.js","layer":"rsc"},"startTime":1710752024049},{"traceId":"7cd6fd9d8b50b713","parentId":186,"name":"next-swc-transform","id":187,"timestamp":326189207134,"duration":1513,"tags":{},"startTime":1710752024061},{"traceId":"7cd6fd9d8b50b713","parentId":185,"name":"next-swc-loader","id":186,"timestamp":326189207100,"duration":1549,"tags":{},"startTime":1710752024061},{"traceId":"7cd6fd9d8b50b713","parentId":172,"name":"build-module-js","id":185,"timestamp":326189207024,"duration":2208,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/components/ExperimentItem.js","layer":"rsc"},"startTime":1710752024061},{"traceId":"7cd6fd9d8b50b713","parentId":193,"name":"next-swc-transform","id":194,"timestamp":326189208279,"duration":1808,"tags":{},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"next-swc-loader","id":193,"timestamp":326189208247,"duration":1848,"tags":{},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":117,"name":"build-module-js","id":188,"timestamp":326189208124,"duration":3551,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/lib/metadata/get-metadata-route.js","layer":"rsc"},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":196,"name":"next-swc-transform","id":197,"timestamp":326189209606,"duration":4042,"tags":{},"startTime":1710752024064},{"traceId":"7cd6fd9d8b50b713","parentId":195,"name":"next-swc-loader","id":196,"timestamp":326189209573,"duration":4078,"tags":{},"startTime":1710752024064},{"traceId":"7cd6fd9d8b50b713","parentId":127,"name":"build-module-js","id":195,"timestamp":326189209384,"duration":4530,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js","layer":"rsc"},"startTime":1710752024063},{"traceId":"7cd6fd9d8b50b713","parentId":184,"name":"postcss-process","id":198,"timestamp":326189353140,"duration":15897,"tags":{},"startTime":1710752024208},{"traceId":"7cd6fd9d8b50b713","parentId":179,"name":"postcss-loader","id":184,"timestamp":326189194677,"duration":174575,"tags":{},"startTime":1710752024049},{"traceId":"7cd6fd9d8b50b713","parentId":179,"name":"css-loader","id":199,"timestamp":326189369353,"duration":16771,"tags":{"astUsed":"true"},"startTime":1710752024224},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"build-module-css","id":179,"timestamp":326189187014,"duration":199530,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/page.module.css","layer":"rsc"},"startTime":1710752024041},{"traceId":"7cd6fd9d8b50b713","parentId":189,"name":"read-resource","id":190,"timestamp":326189208191,"duration":178477,"tags":{},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":200,"name":"postcss-process","id":201,"timestamp":326189386692,"duration":3007,"tags":{},"startTime":1710752024241},{"traceId":"7cd6fd9d8b50b713","parentId":189,"name":"postcss-loader","id":200,"timestamp":326189386683,"duration":3125,"tags":{},"startTime":1710752024241},{"traceId":"7cd6fd9d8b50b713","parentId":189,"name":"css-loader","id":202,"timestamp":326189389817,"duration":4986,"tags":{"astUsed":"true"},"startTime":1710752024244},{"traceId":"7cd6fd9d8b50b713","parentId":172,"name":"build-module-css","id":189,"timestamp":326189208164,"duration":187044,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/styles/Experiments.module.css","layer":"rsc"},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":191,"name":"read-resource","id":192,"timestamp":326189208218,"duration":187010,"tags":{},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":203,"name":"postcss-process","id":204,"timestamp":326189395248,"duration":771,"tags":{},"startTime":1710752024250},{"traceId":"7cd6fd9d8b50b713","parentId":191,"name":"postcss-loader","id":203,"timestamp":326189395239,"duration":933,"tags":{},"startTime":1710752024250},{"traceId":"7cd6fd9d8b50b713","parentId":191,"name":"css-loader","id":205,"timestamp":326189396184,"duration":1038,"tags":{"astUsed":"true"},"startTime":1710752024251},{"traceId":"7cd6fd9d8b50b713","parentId":171,"name":"build-module-css","id":191,"timestamp":326189208198,"duration":189394,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/styles/Header.module.css","layer":"rsc"},"startTime":1710752024062},{"traceId":"7cd6fd9d8b50b713","parentId":207,"name":"next-swc-transform","id":208,"timestamp":326189398486,"duration":3324,"tags":{},"startTime":1710752024253},{"traceId":"7cd6fd9d8b50b713","parentId":206,"name":"next-swc-loader","id":207,"timestamp":326189398423,"duration":3394,"tags":{},"startTime":1710752024253},{"traceId":"7cd6fd9d8b50b713","parentId":126,"name":"build-module-js","id":206,"timestamp":326189398316,"duration":3849,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-server-dom-webpack-server-edge.js","layer":"rsc"},"startTime":1710752024253},{"traceId":"7cd6fd9d8b50b713","parentId":212,"name":"next-swc-transform","id":213,"timestamp":326189403325,"duration":1984,"tags":{},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":209,"name":"next-swc-loader","id":212,"timestamp":326189403277,"duration":2037,"tags":{},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":185,"name":"build-module-js","id":209,"timestamp":326189403047,"duration":2677,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/next.config.js","layer":"rsc"},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":214,"name":"next-swc-transform","id":215,"timestamp":326189403354,"duration":2390,"tags":{},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":210,"name":"next-swc-loader","id":214,"timestamp":326189403327,"duration":2418,"tags":{},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":171,"name":"build-module-js","id":210,"timestamp":326189403122,"duration":2783,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/link.js","layer":"rsc"},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":216,"name":"next-swc-transform","id":217,"timestamp":326189403439,"duration":4396,"tags":{},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"next-swc-loader","id":216,"timestamp":326189403413,"duration":4425,"tags":{},"startTime":1710752024258}] +[{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":211,"timestamp":326189403156,"duration":11195,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/server-utils.js","layer":"rsc"},"startTime":1710752024258},{"traceId":"7cd6fd9d8b50b713","parentId":219,"name":"next-swc-transform","id":220,"timestamp":326189406121,"duration":16410,"tags":{},"startTime":1710752024261},{"traceId":"7cd6fd9d8b50b713","parentId":218,"name":"next-swc-loader","id":219,"timestamp":326189406079,"duration":16459,"tags":{},"startTime":1710752024261},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":218,"timestamp":326189406007,"duration":18530,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/lib/metadata/is-metadata-route.js","layer":"rsc"},"startTime":1710752024260},{"traceId":"7cd6fd9d8b50b713","parentId":227,"name":"next-swc-transform","id":228,"timestamp":326189421397,"duration":3963,"tags":{},"startTime":1710752024276},{"traceId":"7cd6fd9d8b50b713","parentId":222,"name":"next-swc-loader","id":227,"timestamp":326189421374,"duration":3989,"tags":{},"startTime":1710752024276},{"traceId":"7cd6fd9d8b50b713","parentId":119,"name":"build-module-js","id":222,"timestamp":326189419251,"duration":6302,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/shared/react-jsx-dev-runtime.js","layer":"rsc"},"startTime":1710752024274},{"traceId":"7cd6fd9d8b50b713","parentId":225,"name":"next-swc-transform","id":226,"timestamp":326189421369,"duration":4200,"tags":{},"startTime":1710752024276},{"traceId":"7cd6fd9d8b50b713","parentId":221,"name":"next-swc-loader","id":225,"timestamp":326189421318,"duration":4253,"tags":{},"startTime":1710752024276},{"traceId":"7cd6fd9d8b50b713","parentId":128,"name":"build-module-js","id":221,"timestamp":326189419175,"duration":6530,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react.js","layer":"rsc"},"startTime":1710752024274},{"traceId":"7cd6fd9d8b50b713","parentId":236,"name":"next-swc-transform","id":237,"timestamp":326189425178,"duration":1527,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":230,"name":"next-swc-loader","id":236,"timestamp":326189425158,"duration":1552,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":230,"timestamp":326189424955,"duration":2104,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/isomorphic/path.js","layer":"rsc"},"startTime":1710752024279},{"traceId":"7cd6fd9d8b50b713","parentId":238,"name":"next-swc-transform","id":239,"timestamp":326189425196,"duration":1886,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":231,"name":"next-swc-loader","id":238,"timestamp":326189425179,"duration":1905,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":231,"timestamp":326189424979,"duration":2352,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/page-path/normalize-path-sep.js","layer":"rsc"},"startTime":1710752024279},{"traceId":"7cd6fd9d8b50b713","parentId":234,"name":"next-swc-transform","id":235,"timestamp":326189425157,"duration":2238,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":229,"name":"next-swc-loader","id":234,"timestamp":326189425118,"duration":2278,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":229,"timestamp":326189424905,"duration":2963,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/hash.js","layer":"rsc"},"startTime":1710752024279},{"traceId":"7cd6fd9d8b50b713","parentId":242,"name":"next-swc-transform","id":243,"timestamp":326189425229,"duration":3773,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":233,"name":"next-swc-loader","id":242,"timestamp":326189425213,"duration":3790,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":233,"timestamp":326189425021,"duration":4570,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/app-paths.js","layer":"rsc"},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":240,"name":"next-swc-transform","id":241,"timestamp":326189425213,"duration":4433,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":232,"name":"next-swc-loader","id":240,"timestamp":326189425197,"duration":4450,"tags":{},"startTime":1710752024280},{"traceId":"7cd6fd9d8b50b713","parentId":188,"name":"build-module-js","id":232,"timestamp":326189424999,"duration":6304,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/route-regex.js","layer":"rsc"},"startTime":1710752024279},{"traceId":"7cd6fd9d8b50b713","parentId":223,"name":"read-resource","id":224,"timestamp":326189421064,"duration":10535,"tags":{},"startTime":1710752024276},{"traceId":"7cd6fd9d8b50b713","parentId":245,"name":"next-swc-transform","id":246,"timestamp":326189428920,"duration":24320,"tags":{},"startTime":1710752024283},{"traceId":"7cd6fd9d8b50b713","parentId":244,"name":"next-swc-loader","id":245,"timestamp":326189428880,"duration":24365,"tags":{},"startTime":1710752024283},{"traceId":"7cd6fd9d8b50b713","parentId":210,"name":"build-module-js","id":244,"timestamp":326189428808,"duration":24763,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/link.js","layer":"rsc"},"startTime":1710752024283},{"traceId":"7cd6fd9d8b50b713","parentId":258,"name":"next-swc-transform","id":259,"timestamp":326189452470,"duration":1974,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":251,"name":"next-swc-loader","id":258,"timestamp":326189452453,"duration":1993,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":251,"timestamp":326189452235,"duration":2764,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/route-matcher.js","layer":"rsc"},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":256,"name":"next-swc-transform","id":257,"timestamp":326189452453,"duration":2565,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":250,"name":"next-swc-loader","id":256,"timestamp":326189452432,"duration":2586,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":250,"timestamp":326189452206,"duration":3239,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/path-match.js","layer":"rsc"},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":254,"name":"next-swc-transform","id":255,"timestamp":326189452431,"duration":3048,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":249,"name":"next-swc-loader","id":254,"timestamp":326189452386,"duration":3093,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":249,"timestamp":326189452138,"duration":4359,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/lib/constants.js","layer":"rsc"},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":262,"name":"next-swc-transform","id":263,"timestamp":326189452504,"duration":4569,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":253,"name":"next-swc-loader","id":262,"timestamp":326189452489,"duration":4586,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":253,"timestamp":326189452276,"duration":4990,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js","layer":"rsc"},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":265,"name":"next-swc-transform","id":266,"timestamp":326189454089,"duration":3187,"tags":{},"startTime":1710752024309},{"traceId":"7cd6fd9d8b50b713","parentId":264,"name":"next-swc-loader","id":265,"timestamp":326189454055,"duration":3222,"tags":{},"startTime":1710752024309},{"traceId":"7cd6fd9d8b50b713","parentId":185,"name":"build-module-js","id":264,"timestamp":326189453980,"duration":3387,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/image.js","layer":"rsc"},"startTime":1710752024309},{"traceId":"7cd6fd9d8b50b713","parentId":260,"name":"next-swc-transform","id":261,"timestamp":326189452488,"duration":4941,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":252,"name":"next-swc-loader","id":260,"timestamp":326189452471,"duration":4961,"tags":{},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":252,"timestamp":326189452257,"duration":8171,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js","layer":"rsc"},"startTime":1710752024307},{"traceId":"7cd6fd9d8b50b713","parentId":268,"name":"next-swc-transform","id":269,"timestamp":326189456954,"duration":4259,"tags":{},"startTime":1710752024312},{"traceId":"7cd6fd9d8b50b713","parentId":267,"name":"next-swc-loader","id":268,"timestamp":326189456926,"duration":4292,"tags":{},"startTime":1710752024311},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-js","id":267,"timestamp":326189456846,"duration":4761,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","layer":"rsc"},"startTime":1710752024311},{"traceId":"7cd6fd9d8b50b713","parentId":271,"name":"next-swc-transform","id":272,"timestamp":326189460961,"duration":1599,"tags":{},"startTime":1710752024316},{"traceId":"7cd6fd9d8b50b713","parentId":270,"name":"next-swc-loader","id":271,"timestamp":326189460924,"duration":1639,"tags":{},"startTime":1710752024315},{"traceId":"7cd6fd9d8b50b713","parentId":167,"name":"build-module-js","id":270,"timestamp":326189460789,"duration":1953,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-dom.js","layer":"rsc"},"startTime":1710752024315},{"traceId":"7cd6fd9d8b50b713","parentId":280,"name":"next-swc-transform","id":281,"timestamp":326189463316,"duration":1373,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":275,"name":"next-swc-loader","id":280,"timestamp":326189463301,"duration":1390,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":233,"name":"build-module-js","id":275,"timestamp":326189463167,"duration":1724,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","layer":"rsc"},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":276,"name":"next-swc-transform","id":277,"timestamp":326189463281,"duration":1632,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":273,"name":"next-swc-loader","id":276,"timestamp":326189463251,"duration":1662,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":233,"name":"build-module-js","id":273,"timestamp":326189463104,"duration":1993,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/segment.js","layer":"rsc"},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":278,"name":"next-swc-transform","id":279,"timestamp":326189463300,"duration":1808,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":274,"name":"next-swc-loader","id":278,"timestamp":326189463282,"duration":1827,"tags":{},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":232,"name":"build-module-js","id":274,"timestamp":326189463144,"duration":2273,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/escape-regexp.js","layer":"rsc"},"startTime":1710752024318},{"traceId":"7cd6fd9d8b50b713","parentId":283,"name":"next-swc-transform","id":284,"timestamp":326189464309,"duration":3091,"tags":{},"startTime":1710752024319},{"traceId":"7cd6fd9d8b50b713","parentId":282,"name":"next-swc-loader","id":283,"timestamp":326189464284,"duration":3120,"tags":{},"startTime":1710752024319},{"traceId":"7cd6fd9d8b50b713","parentId":251,"name":"build-module-js","id":282,"timestamp":326189464238,"duration":4779,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/utils.js","layer":"rsc"},"startTime":1710752024319},{"traceId":"7cd6fd9d8b50b713","parentId":295,"name":"next-swc-transform","id":296,"timestamp":326189465614,"duration":3428,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":288,"name":"next-swc-loader","id":295,"timestamp":326189465600,"duration":3444,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":252,"name":"build-module-js","id":288,"timestamp":326189465511,"duration":3886,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/parse-url.js","layer":"rsc"},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":291,"name":"next-swc-transform","id":292,"timestamp":326189465583,"duration":3884,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":286,"name":"next-swc-loader","id":291,"timestamp":326189465562,"duration":3907,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":264,"name":"build-module-js","id":286,"timestamp":326189465464,"duration":4547,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-external.js","layer":"rsc"},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":293,"name":"next-swc-transform","id":294,"timestamp":326189465599,"duration":4435,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":287,"name":"next-swc-loader","id":293,"timestamp":326189465584,"duration":4452,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":252,"name":"build-module-js","id":287,"timestamp":326189465484,"duration":5060,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/app-router-headers.js","layer":"rsc"},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":289,"name":"next-swc-transform","id":290,"timestamp":326189465561,"duration":5003,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":285,"name":"next-swc-loader","id":289,"timestamp":326189465537,"duration":5027,"tags":{},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":232,"name":"build-module-js","id":285,"timestamp":326189465434,"duration":5993,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/helpers/interception-routes.js","layer":"rsc"},"startTime":1710752024320},{"traceId":"7cd6fd9d8b50b713","parentId":298,"name":"next-swc-transform","id":299,"timestamp":326189472534,"duration":1245,"tags":{},"startTime":1710752024327},{"traceId":"7cd6fd9d8b50b713","parentId":297,"name":"next-swc-loader","id":298,"timestamp":326189472506,"duration":1276,"tags":{},"startTime":1710752024327},{"traceId":"7cd6fd9d8b50b713","parentId":252,"name":"build-module-js","id":297,"timestamp":326189472354,"duration":1692,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/api-utils/get-cookie-parser.js","layer":"rsc"},"startTime":1710752024327},{"traceId":"7cd6fd9d8b50b713","parentId":211,"name":"build-module-url","id":303,"timestamp":326189475056,"duration":23,"tags":{"name":"url","layer":"null"},"startTime":1710752024330},{"traceId":"7cd6fd9d8b50b713","parentId":301,"name":"next-swc-transform","id":302,"timestamp":326189474760,"duration":1401,"tags":{},"startTime":1710752024329},{"traceId":"7cd6fd9d8b50b713","parentId":300,"name":"next-swc-loader","id":301,"timestamp":326189474730,"duration":1433,"tags":{},"startTime":1710752024329},{"traceId":"7cd6fd9d8b50b713","parentId":128,"name":"build-module-cjs","id":300,"timestamp":326189474301,"duration":2283,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_interop_require_default.cjs","layer":"rsc"},"startTime":1710752024329},{"traceId":"7cd6fd9d8b50b713","parentId":230,"name":"build-module-path","id":304,"timestamp":326189476613,"duration":9,"tags":{"name":"path","layer":"null"},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":315,"name":"next-swc-transform","id":316,"timestamp":326189476806,"duration":928,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":308,"name":"next-swc-loader","id":315,"timestamp":326189476790,"duration":950,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":288,"name":"build-module-js","id":308,"timestamp":326189476706,"duration":1531,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js","layer":"rsc"},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":311,"name":"next-swc-transform","id":312,"timestamp":326189476771,"duration":1820,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":306,"name":"next-swc-loader","id":311,"timestamp":326189476752,"duration":1844,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":288,"name":"build-module-js","id":306,"timestamp":326189476664,"duration":2598,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/querystring.js","layer":"rsc"},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":309,"name":"next-swc-transform","id":310,"timestamp":326189476751,"duration":2558,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":305,"name":"next-swc-loader","id":309,"timestamp":326189476725,"duration":2587,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":286,"name":"build-module-js","id":305,"timestamp":326189476631,"duration":2898,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/image-component.js","layer":"rsc"},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":318,"name":"next-swc-transform","id":319,"timestamp":326189477183,"duration":2376,"tags":{},"startTime":1710752024332},{"traceId":"7cd6fd9d8b50b713","parentId":317,"name":"next-swc-loader","id":318,"timestamp":326189477161,"duration":2398,"tags":{},"startTime":1710752024332},{"traceId":"7cd6fd9d8b50b713","parentId":286,"name":"build-module-js","id":317,"timestamp":326189477135,"duration":2629,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/utils/warn-once.js","layer":"rsc"},"startTime":1710752024332},{"traceId":"7cd6fd9d8b50b713","parentId":313,"name":"next-swc-transform","id":314,"timestamp":326189476789,"duration":3200,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":307,"name":"next-swc-loader","id":313,"timestamp":326189476772,"duration":3218,"tags":{},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":286,"name":"build-module-js","id":307,"timestamp":326189476688,"duration":5780,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/get-img-props.js","layer":"rsc"},"startTime":1710752024331},{"traceId":"7cd6fd9d8b50b713","parentId":322,"name":"next-swc-transform","id":323,"timestamp":326189483400,"duration":905,"tags":{},"startTime":1710752024338}] +[{"traceId":"7cd6fd9d8b50b713","parentId":320,"name":"next-swc-loader","id":322,"timestamp":326189483372,"duration":1043,"tags":{},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":307,"name":"build-module-js","id":320,"timestamp":326189483314,"duration":1451,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-blur-svg.js","layer":"rsc"},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":324,"name":"next-swc-transform","id":325,"timestamp":326189483421,"duration":1361,"tags":{},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":321,"name":"next-swc-loader","id":324,"timestamp":326189483401,"duration":1382,"tags":{},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":307,"name":"build-module-js","id":321,"timestamp":326189483350,"duration":1693,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-config.js","layer":"rsc"},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":327,"name":"next-swc-transform","id":328,"timestamp":326189483750,"duration":1358,"tags":{},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":326,"name":"next-swc-loader","id":327,"timestamp":326189483721,"duration":1388,"tags":{},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":286,"name":"build-module-js","id":326,"timestamp":326189483694,"duration":2056,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-loader.js","layer":"rsc"},"startTime":1710752024338},{"traceId":"7cd6fd9d8b50b713","parentId":330,"name":"next-swc-transform","id":331,"timestamp":326189484251,"duration":3765,"tags":{},"startTime":1710752024339},{"traceId":"7cd6fd9d8b50b713","parentId":329,"name":"next-swc-loader","id":330,"timestamp":326189484219,"duration":3801,"tags":{},"startTime":1710752024339},{"traceId":"7cd6fd9d8b50b713","parentId":250,"name":"build-module-js","id":329,"timestamp":326189484182,"duration":8298,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/path-to-regexp/index.js","layer":"rsc"},"startTime":1710752024339},{"traceId":"7cd6fd9d8b50b713","parentId":333,"name":"next-swc-transform","id":334,"timestamp":326189492688,"duration":913,"tags":{},"startTime":1710752024347},{"traceId":"7cd6fd9d8b50b713","parentId":332,"name":"next-swc-loader","id":333,"timestamp":326189492636,"duration":967,"tags":{},"startTime":1710752024347},{"traceId":"7cd6fd9d8b50b713","parentId":326,"name":"build-module-js","id":332,"timestamp":326189492563,"duration":1560,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/match-remote-pattern.js","layer":"rsc"},"startTime":1710752024347},{"traceId":"7cd6fd9d8b50b713","parentId":336,"name":"next-swc-transform","id":337,"timestamp":326189493020,"duration":1288,"tags":{},"startTime":1710752024348},{"traceId":"7cd6fd9d8b50b713","parentId":335,"name":"next-swc-loader","id":336,"timestamp":326189492989,"duration":1320,"tags":{},"startTime":1710752024348},{"traceId":"7cd6fd9d8b50b713","parentId":297,"name":"build-module-js","id":335,"timestamp":326189492949,"duration":2490,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/cookie/index.js","layer":"rsc"},"startTime":1710752024348},{"traceId":"7cd6fd9d8b50b713","parentId":339,"name":"next-swc-transform","id":340,"timestamp":326189496421,"duration":15474,"tags":{},"startTime":1710752024351},{"traceId":"7cd6fd9d8b50b713","parentId":338,"name":"next-swc-loader","id":339,"timestamp":326189496389,"duration":15511,"tags":{},"startTime":1710752024351},{"traceId":"7cd6fd9d8b50b713","parentId":332,"name":"build-module-js","id":338,"timestamp":326189496335,"duration":30887,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/micromatch/index.js","layer":"rsc"},"startTime":1710752024351},{"traceId":"7cd6fd9d8b50b713","parentId":338,"name":"build-module-util","id":341,"timestamp":326189528866,"duration":26,"tags":{"name":"util","layer":"null"},"startTime":1710752024384},{"traceId":"7cd6fd9d8b50b713","parentId":247,"name":"font-loader","id":248,"timestamp":326189449027,"duration":594479,"tags":{},"startTime":1710752024304},{"traceId":"7cd6fd9d8b50b713","parentId":247,"name":"postcss","id":342,"timestamp":326190043693,"duration":1776,"tags":{},"startTime":1710752024899},{"traceId":"7cd6fd9d8b50b713","parentId":223,"name":"next-font-loader","id":247,"timestamp":326189431698,"duration":613917,"tags":{},"startTime":1710752024286},{"traceId":"7cd6fd9d8b50b713","parentId":223,"name":"css-loader","id":343,"timestamp":326190045547,"duration":2928,"tags":{"astUsed":"true"},"startTime":1710752024901},{"traceId":"7cd6fd9d8b50b713","parentId":120,"name":"build-module-js\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","id":223,"timestamp":326189419282,"duration":630205,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.js\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}","layer":"rsc"},"startTime":1710752024274},{"traceId":"7cd6fd9d8b50b713","parentId":114,"name":"add-entry","id":115,"timestamp":326189086683,"duration":965533,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752023941},{"traceId":"7cd6fd9d8b50b713","parentId":113,"name":"build-module-css&server=true!","id":348,"timestamp":326190076061,"duration":4756,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&server=true!","layer":"ssr"},"startTime":1710752024932},{"traceId":"7cd6fd9d8b50b713","parentId":113,"name":"build-module-js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=true!","id":349,"timestamp":326190080865,"duration":273,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=true!","layer":"ssr"},"startTime":1710752024936},{"traceId":"7cd6fd9d8b50b713","parentId":113,"name":"build-module-js&server=true!","id":350,"timestamp":326190081156,"duration":4123,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=true!","layer":"ssr"},"startTime":1710752024937},{"traceId":"7cd6fd9d8b50b713","parentId":361,"name":"next-swc-transform","id":362,"timestamp":326190094906,"duration":3431,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":352,"name":"next-swc-loader","id":361,"timestamp":326190094873,"duration":3473,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":352,"timestamp":326190094300,"duration":5036,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/not-found-boundary.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":359,"name":"next-swc-transform","id":360,"timestamp":326190094870,"duration":4512,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":351,"name":"next-swc-loader","id":359,"timestamp":326190094701,"duration":4683,"tags":{},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":351,"timestamp":326190093180,"duration":6985,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/error-boundary.js","layer":"ssr"},"startTime":1710752024949},{"traceId":"7cd6fd9d8b50b713","parentId":363,"name":"next-swc-transform","id":364,"timestamp":326190094931,"duration":5289,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"next-swc-loader","id":363,"timestamp":326190094907,"duration":5315,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":348,"name":"build-module-js","id":353,"timestamp":326190094370,"duration":7379,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/image-component.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":371,"name":"next-swc-transform","id":372,"timestamp":326190095059,"duration":6709,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":357,"name":"next-swc-loader","id":371,"timestamp":326190095021,"duration":6748,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":357,"timestamp":326190094641,"duration":7387,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/render-from-template-context.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":365,"name":"next-swc-transform","id":366,"timestamp":326190094975,"duration":9890,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"next-swc-loader","id":365,"timestamp":326190094932,"duration":9937,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":348,"name":"build-module-js","id":354,"timestamp":326190094469,"duration":13000,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/link.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":373,"name":"next-swc-transform","id":374,"timestamp":326190095080,"duration":12428,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":358,"name":"next-swc-loader","id":373,"timestamp":326190095060,"duration":12450,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":358,"timestamp":326190094668,"duration":13284,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/static-generation-searchparams-bailout-provider.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":369,"name":"next-swc-transform","id":370,"timestamp":326190095020,"duration":13026,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"next-swc-loader","id":369,"timestamp":326190095000,"duration":13051,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":356,"timestamp":326190094577,"duration":15273,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/layout-router.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":367,"name":"next-swc-transform","id":368,"timestamp":326190094998,"duration":14915,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"next-swc-loader","id":367,"timestamp":326190094977,"duration":14938,"tags":{},"startTime":1710752024951},{"traceId":"7cd6fd9d8b50b713","parentId":350,"name":"build-module-js","id":355,"timestamp":326190094517,"duration":17449,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/app-router.js","layer":"ssr"},"startTime":1710752024950},{"traceId":"7cd6fd9d8b50b713","parentId":385,"name":"next-swc-transform","id":386,"timestamp":326190116395,"duration":1378,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":377,"name":"next-swc-loader","id":385,"timestamp":326190116379,"duration":1398,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":377,"timestamp":326190116015,"duration":2032,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/utils/warn-once.js","layer":"ssr"},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":387,"name":"next-swc-transform","id":388,"timestamp":326190116411,"duration":1803,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":378,"name":"next-swc-loader","id":387,"timestamp":326190116396,"duration":1823,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":378,"timestamp":326190116037,"duration":2750,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-loader.js","layer":"ssr"},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":383,"name":"next-swc-transform","id":384,"timestamp":326190116378,"duration":2465,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":376,"name":"next-swc-loader","id":383,"timestamp":326190116359,"duration":2486,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":376,"timestamp":326190115988,"duration":3139,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-config.js","layer":"ssr"},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":394,"name":"next-swc-transform","id":395,"timestamp":326190117665,"duration":3520,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":390,"name":"next-swc-loader","id":394,"timestamp":326190117644,"duration":3544,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":358,"name":"build-module-js","id":390,"timestamp":326190117542,"duration":3976,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/searchparams-bailout-proxy.js","layer":"ssr"},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":396,"name":"next-swc-transform","id":397,"timestamp":326190117683,"duration":3978,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":391,"name":"next-swc-loader","id":396,"timestamp":326190117666,"duration":3997,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":391,"timestamp":326190117567,"duration":4498,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/app-router-headers.js","layer":"ssr"},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":392,"name":"next-swc-transform","id":393,"timestamp":326190117643,"duration":4469,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":389,"name":"next-swc-loader","id":392,"timestamp":326190117609,"duration":4504,"tags":{},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":389,"timestamp":326190117499,"duration":6742,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/utils.js","layer":"ssr"},"startTime":1710752024973},{"traceId":"7cd6fd9d8b50b713","parentId":381,"name":"next-swc-transform","id":382,"timestamp":326190116357,"duration":7985,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":375,"name":"next-swc-loader","id":381,"timestamp":326190116316,"duration":8028,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":375,"timestamp":326190115913,"duration":10046,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/get-img-props.js","layer":"ssr"},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":402,"name":"next-swc-transform","id":403,"timestamp":326190120962,"duration":7362,"tags":{},"startTime":1710752024977},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"next-swc-loader","id":402,"timestamp":326190120944,"duration":7385,"tags":{},"startTime":1710752024977},{"traceId":"7cd6fd9d8b50b713","parentId":352,"name":"build-module-js","id":399,"timestamp":326190120780,"duration":8577,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/navigation.js","layer":"ssr"},"startTime":1710752024976},{"traceId":"7cd6fd9d8b50b713","parentId":400,"name":"next-swc-transform","id":401,"timestamp":326190120943,"duration":8456,"tags":{},"startTime":1710752024977},{"traceId":"7cd6fd9d8b50b713","parentId":398,"name":"next-swc-loader","id":400,"timestamp":326190120916,"duration":8484,"tags":{},"startTime":1710752024977},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":398,"timestamp":326190120748,"duration":9423,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/head.js","layer":"ssr"},"startTime":1710752024976},{"traceId":"7cd6fd9d8b50b713","parentId":379,"name":"read-resource","id":380,"timestamp":326190116281,"duration":13997,"tags":{},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-cjs","id":379,"timestamp":326190116056,"duration":14473,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_interop_require_default.cjs","layer":"ssr"},"startTime":1710752024972},{"traceId":"7cd6fd9d8b50b713","parentId":426,"name":"next-swc-transform","id":427,"timestamp":326190126736,"duration":5060,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":407,"name":"next-swc-loader","id":426,"timestamp":326190126718,"duration":5080,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":407,"timestamp":326190126279,"duration":5847,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/has-base-path.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":422,"name":"next-swc-transform","id":423,"timestamp":326190126699,"duration":5440,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":405,"name":"next-swc-loader","id":422,"timestamp":326190126677,"duration":5463,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":405,"timestamp":326190126220,"duration":6270,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/add-locale.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":420,"name":"next-swc-transform","id":421,"timestamp":326190126676,"duration":5835,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":404,"name":"next-swc-loader","id":420,"timestamp":326190126609,"duration":5903,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":404,"timestamp":326190126128,"duration":6916,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/resolve-href.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":424,"name":"next-swc-transform","id":425,"timestamp":326190126718,"duration":6349,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":406,"name":"next-swc-loader","id":424,"timestamp":326190126700,"duration":6367,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":406,"timestamp":326190126248,"duration":7351,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/use-intersection.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":428,"name":"next-swc-transform","id":429,"timestamp":326190126753,"duration":6875,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":408,"name":"next-swc-loader","id":428,"timestamp":326190126737,"duration":6892,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":408,"timestamp":326190126301,"duration":7661,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/infinite-promise.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":430,"name":"next-swc-transform","id":431,"timestamp":326190126770,"duration":7212,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":409,"name":"next-swc-loader","id":430,"timestamp":326190126753,"duration":7229,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":409,"timestamp":326190126319,"duration":8030,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/get-domain-locale.js","layer":"ssr"},"startTime":1710752024982}] +[{"traceId":"7cd6fd9d8b50b713","parentId":432,"name":"next-swc-transform","id":433,"timestamp":326190126807,"duration":7727,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":410,"name":"next-swc-loader","id":432,"timestamp":326190126771,"duration":7765,"tags":{},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":410,"timestamp":326190126337,"duration":8513,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/match-segments.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":438,"name":"next-swc-transform","id":439,"timestamp":326190126877,"duration":7986,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":413,"name":"next-swc-loader","id":438,"timestamp":326190126858,"duration":8007,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":413,"timestamp":326190126402,"duration":8749,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/add-base-path.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":434,"name":"next-swc-transform","id":435,"timestamp":326190126836,"duration":8339,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":411,"name":"next-swc-loader","id":434,"timestamp":326190126810,"duration":8365,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":411,"timestamp":326190126368,"duration":9258,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/redirect-boundary.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":436,"name":"next-swc-transform","id":437,"timestamp":326190126857,"duration":8792,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":412,"name":"next-swc-loader","id":436,"timestamp":326190126837,"duration":8812,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":412,"timestamp":326190126385,"duration":9795,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/use-reducer-with-devtools.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":440,"name":"next-swc-transform","id":441,"timestamp":326190126895,"duration":9309,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":414,"name":"next-swc-loader","id":440,"timestamp":326190126878,"duration":9326,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":414,"timestamp":326190126419,"duration":10202,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/app-router-announcer.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":442,"name":"next-swc-transform","id":443,"timestamp":326190126912,"duration":9721,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":415,"name":"next-swc-loader","id":442,"timestamp":326190126896,"duration":9738,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":415,"timestamp":326190126435,"duration":10475,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/remove-base-path.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":446,"name":"next-swc-transform","id":447,"timestamp":326190126946,"duration":9975,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":417,"name":"next-swc-loader","id":446,"timestamp":326190126931,"duration":9992,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":417,"timestamp":326190126468,"duration":10634,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/is-local-url.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":448,"name":"next-swc-transform","id":449,"timestamp":326190126963,"duration":10658,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":418,"name":"next-swc-loader","id":448,"timestamp":326190126947,"duration":10675,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":418,"timestamp":326190126485,"duration":11353,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/handle-smooth-scroll.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":450,"name":"next-swc-transform","id":451,"timestamp":326190126981,"duration":10867,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":419,"name":"next-swc-loader","id":450,"timestamp":326190126964,"duration":10885,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":419,"timestamp":326190126501,"duration":11675,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/is-bot.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":444,"name":"next-swc-transform","id":445,"timestamp":326190126930,"duration":11267,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":416,"name":"next-swc-loader","id":444,"timestamp":326190126913,"duration":11284,"tags":{},"startTime":1710752024983},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":416,"timestamp":326190126451,"duration":12244,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/format-url.js","layer":"ssr"},"startTime":1710752024982},{"traceId":"7cd6fd9d8b50b713","parentId":453,"name":"next-swc-transform","id":454,"timestamp":326190131052,"duration":7782,"tags":{},"startTime":1710752024987},{"traceId":"7cd6fd9d8b50b713","parentId":452,"name":"next-swc-loader","id":453,"timestamp":326190131026,"duration":7810,"tags":{},"startTime":1710752024987},{"traceId":"7cd6fd9d8b50b713","parentId":378,"name":"build-module-js","id":452,"timestamp":326190130714,"duration":8409,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/match-remote-pattern.js","layer":"ssr"},"startTime":1710752024986},{"traceId":"7cd6fd9d8b50b713","parentId":467,"name":"next-swc-transform","id":468,"timestamp":326190140355,"duration":3295,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":456,"name":"next-swc-loader","id":467,"timestamp":326190140334,"duration":3319,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":375,"name":"build-module-js","id":456,"timestamp":326190139526,"duration":4435,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/image-blur-svg.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":471,"name":"next-swc-transform","id":472,"timestamp":326190140403,"duration":3575,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":458,"name":"next-swc-loader","id":471,"timestamp":326190140381,"duration":3598,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":458,"timestamp":326190139575,"duration":4671,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/create-record-from-thenable.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":469,"name":"next-swc-transform","id":470,"timestamp":326190140380,"duration":3882,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":457,"name":"next-swc-loader","id":469,"timestamp":326190140356,"duration":3906,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":354,"name":"build-module-js","id":457,"timestamp":326190139554,"duration":5031,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/router-reducer-types.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":465,"name":"next-swc-transform","id":466,"timestamp":326190140331,"duration":4272,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":455,"name":"next-swc-loader","id":465,"timestamp":326190140283,"duration":4321,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":390,"name":"build-module-js","id":455,"timestamp":326190139466,"duration":5533,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/static-generation-bailout.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":475,"name":"next-swc-transform","id":476,"timestamp":326190140441,"duration":4569,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":460,"name":"next-swc-loader","id":475,"timestamp":326190140421,"duration":4590,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":460,"timestamp":326190139616,"duration":5596,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":479,"name":"next-swc-transform","id":480,"timestamp":326190140481,"duration":4749,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":462,"name":"next-swc-loader","id":479,"timestamp":326190140461,"duration":4770,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":462,"timestamp":326190139673,"duration":5891,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":473,"name":"next-swc-transform","id":474,"timestamp":326190140420,"duration":5158,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"next-swc-loader","id":473,"timestamp":326190140403,"duration":5176,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":459,"timestamp":326190139599,"duration":6323,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/router-reducer.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":477,"name":"next-swc-transform","id":478,"timestamp":326190140460,"duration":5581,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":461,"name":"next-swc-loader","id":477,"timestamp":326190140442,"duration":5600,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":461,"timestamp":326190139656,"duration":6861,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":481,"name":"next-swc-transform","id":482,"timestamp":326190140507,"duration":6020,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":463,"name":"next-swc-loader","id":481,"timestamp":326190140481,"duration":6047,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":463,"timestamp":326190139689,"duration":7023,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/create-href-from-url.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":483,"name":"next-swc-transform","id":484,"timestamp":326190140523,"duration":8616,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"next-swc-loader","id":483,"timestamp":326190140508,"duration":8635,"tags":{},"startTime":1710752024996},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":464,"timestamp":326190139708,"duration":11121,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/hot-reloader-client.js","layer":"ssr"},"startTime":1710752024995},{"traceId":"7cd6fd9d8b50b713","parentId":487,"name":"next-swc-transform","id":488,"timestamp":326190147340,"duration":3702,"tags":{},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":485,"name":"next-swc-loader","id":487,"timestamp":326190147306,"duration":3737,"tags":{},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":356,"name":"build-module-js","id":485,"timestamp":326190146971,"duration":4267,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/get-segment-value.js","layer":"ssr"},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":489,"name":"next-swc-transform","id":490,"timestamp":326190147360,"duration":3893,"tags":{},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":486,"name":"next-swc-loader","id":489,"timestamp":326190147341,"duration":3913,"tags":{},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":486,"timestamp":326190147018,"duration":4476,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js","layer":"ssr"},"startTime":1710752025003},{"traceId":"7cd6fd9d8b50b713","parentId":494,"name":"next-swc-transform","id":495,"timestamp":326190152019,"duration":1952,"tags":{},"startTime":1710752025008},{"traceId":"7cd6fd9d8b50b713","parentId":491,"name":"next-swc-loader","id":494,"timestamp":326190151986,"duration":1988,"tags":{},"startTime":1710752025008},{"traceId":"7cd6fd9d8b50b713","parentId":404,"name":"build-module-js","id":491,"timestamp":326190151700,"duration":2719,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/querystring.js","layer":"ssr"},"startTime":1710752025007},{"traceId":"7cd6fd9d8b50b713","parentId":455,"name":"build-module-external","id":496,"timestamp":326190154477,"duration":24,"tags":{"name":"./static-generation-async-storage.external","layer":"null"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":507,"name":"next-swc-transform","id":508,"timestamp":326190154765,"duration":1577,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":498,"name":"next-swc-loader","id":507,"timestamp":326190154747,"duration":1598,"tags":{},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":461,"name":"build-module-js","id":498,"timestamp":326190154547,"duration":2141,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/hash.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":511,"name":"next-swc-transform","id":512,"timestamp":326190154799,"duration":1904,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":500,"name":"next-swc-loader","id":511,"timestamp":326190154784,"duration":1920,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"build-module-js","id":500,"timestamp":326190154588,"duration":2424,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/not-found.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":505,"name":"next-swc-transform","id":506,"timestamp":326190154745,"duration":2281,"tags":{},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":497,"name":"next-swc-loader","id":505,"timestamp":326190154713,"duration":2313,"tags":{},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":455,"name":"build-module-js","id":497,"timestamp":326190154505,"duration":2729,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/hooks-server-context.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":509,"name":"next-swc-transform","id":510,"timestamp":326190154783,"duration":2470,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":499,"name":"next-swc-loader","id":509,"timestamp":326190154767,"duration":2488,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"build-module-js","id":499,"timestamp":326190154570,"duration":3089,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/redirect.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":515,"name":"next-swc-transform","id":516,"timestamp":326190154831,"duration":3571,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":502,"name":"next-swc-loader","id":515,"timestamp":326190154816,"duration":3587,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"build-module-js","id":502,"timestamp":326190154626,"duration":4011,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/bailout-to-client-rendering.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":513,"name":"next-swc-transform","id":514,"timestamp":326190154815,"duration":3853,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":501,"name":"next-swc-loader","id":513,"timestamp":326190154800,"duration":3869,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"build-module-js","id":501,"timestamp":326190154608,"duration":4253,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/client-hook-in-server-component-error.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":517,"name":"next-swc-transform","id":518,"timestamp":326190154846,"duration":4033,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":503,"name":"next-swc-loader","id":517,"timestamp":326190154831,"duration":4048,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":398,"name":"build-module-js","id":503,"timestamp":326190154644,"duration":5602,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/side-effect.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":519,"name":"next-swc-transform","id":520,"timestamp":326190154860,"duration":5634,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":504,"name":"next-swc-loader","id":519,"timestamp":326190154846,"duration":5650,"tags":{},"startTime":1710752025011},{"traceId":"7cd6fd9d8b50b713","parentId":398,"name":"build-module-js","id":504,"timestamp":326190154661,"duration":6000,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/amp-mode.js","layer":"ssr"},"startTime":1710752025010},{"traceId":"7cd6fd9d8b50b713","parentId":533,"name":"next-swc-transform","id":534,"timestamp":326190156149,"duration":4590,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":523,"name":"next-swc-loader","id":533,"timestamp":326190156131,"duration":4609,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":407,"name":"build-module-js","id":523,"timestamp":326190155945,"duration":4937,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":535,"name":"next-swc-transform","id":536,"timestamp":326190156165,"duration":4726,"tags":{},"startTime":1710752025012}] +[{"traceId":"7cd6fd9d8b50b713","parentId":524,"name":"next-swc-loader","id":535,"timestamp":326190156150,"duration":4866,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":404,"name":"build-module-js","id":524,"timestamp":326190155964,"duration":5171,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/omit.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":531,"name":"next-swc-transform","id":532,"timestamp":326190156131,"duration":5017,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":522,"name":"next-swc-loader","id":531,"timestamp":326190156114,"duration":5035,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":406,"name":"build-module-js","id":522,"timestamp":326190155923,"duration":5479,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/request-idle-callback.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":529,"name":"next-swc-transform","id":530,"timestamp":326190156113,"duration":5302,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":521,"name":"next-swc-loader","id":529,"timestamp":326190156087,"duration":5329,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":405,"name":"build-module-js","id":521,"timestamp":326190155874,"duration":5869,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/normalize-trailing-slash.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":539,"name":"next-swc-transform","id":540,"timestamp":326190156197,"duration":5559,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":528,"name":"next-swc-loader","id":539,"timestamp":326190156182,"duration":5575,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":413,"name":"build-module-js","id":528,"timestamp":326190156026,"duration":5867,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":537,"name":"next-swc-transform","id":538,"timestamp":326190156182,"duration":5727,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":525,"name":"next-swc-loader","id":537,"timestamp":326190156166,"duration":5743,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":404,"name":"build-module-js","id":525,"timestamp":326190155983,"duration":6168,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/interpolate-as.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":551,"name":"next-swc-transform","id":552,"timestamp":326190158092,"duration":4802,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":541,"name":"next-swc-loader","id":551,"timestamp":326190158057,"duration":4840,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":461,"name":"build-module-js","id":541,"timestamp":326190157858,"duration":5264,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/app-call-server.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":553,"name":"next-swc-transform","id":554,"timestamp":326190158111,"duration":5028,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":542,"name":"next-swc-loader","id":553,"timestamp":326190158093,"duration":5047,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":462,"name":"build-module-js","id":542,"timestamp":326190157890,"duration":5592,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/fill-lazy-items-till-leaf-with-head.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":555,"name":"next-swc-transform","id":556,"timestamp":326190158127,"duration":5376,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":543,"name":"next-swc-loader","id":555,"timestamp":326190158112,"duration":5392,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":462,"name":"build-module-js","id":543,"timestamp":326190157911,"duration":6049,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":559,"name":"next-swc-transform","id":560,"timestamp":326190158157,"duration":5821,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":545,"name":"next-swc-loader","id":559,"timestamp":326190158143,"duration":5836,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":545,"timestamp":326190157946,"duration":6433,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":561,"name":"next-swc-transform","id":562,"timestamp":326190158172,"duration":6218,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":546,"name":"next-swc-loader","id":561,"timestamp":326190158158,"duration":6233,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":546,"timestamp":326190157962,"duration":6609,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":557,"name":"next-swc-transform","id":558,"timestamp":326190158142,"duration":6467,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"next-swc-loader","id":557,"timestamp":326190158128,"duration":6482,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":544,"timestamp":326190157929,"duration":7519,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":563,"name":"next-swc-transform","id":564,"timestamp":326190158187,"duration":7280,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":547,"name":"next-swc-loader","id":563,"timestamp":326190158173,"duration":7295,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":547,"timestamp":326190157978,"duration":7885,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":565,"name":"next-swc-transform","id":566,"timestamp":326190158203,"duration":7694,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":548,"name":"next-swc-loader","id":565,"timestamp":326190158188,"duration":7709,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":548,"timestamp":326190157994,"duration":8222,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/prefetch-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":492,"name":"read-resource","id":493,"timestamp":326190151764,"duration":14580,"tags":{},"startTime":1710752025007},{"traceId":"7cd6fd9d8b50b713","parentId":452,"name":"build-module-js","id":492,"timestamp":326190151748,"duration":27945,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/micromatch/index.js","layer":"ssr"},"startTime":1710752025007},{"traceId":"7cd6fd9d8b50b713","parentId":567,"name":"next-swc-transform","id":568,"timestamp":326190158217,"duration":21643,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":549,"name":"next-swc-loader","id":567,"timestamp":326190158203,"duration":21659,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":549,"timestamp":326190158010,"duration":22424,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/fast-refresh-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":569,"name":"next-swc-transform","id":570,"timestamp":326190158232,"duration":22282,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":550,"name":"next-swc-loader","id":569,"timestamp":326190158218,"duration":22298,"tags":{},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":459,"name":"build-module-js","id":550,"timestamp":326190158025,"duration":23332,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js","layer":"ssr"},"startTime":1710752025014},{"traceId":"7cd6fd9d8b50b713","parentId":499,"name":"build-module-external","id":571,"timestamp":326190185555,"duration":22,"tags":{"name":"./request-async-storage.external","layer":"null"},"startTime":1710752025041},{"traceId":"7cd6fd9d8b50b713","parentId":526,"name":"read-resource","id":527,"timestamp":326190156015,"duration":31249,"tags":{},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":410,"name":"build-module-js","id":526,"timestamp":326190156002,"duration":31514,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/app-render/get-segment-param.js","layer":"ssr"},"startTime":1710752025012},{"traceId":"7cd6fd9d8b50b713","parentId":575,"name":"next-swc-transform","id":576,"timestamp":326190186434,"duration":2756,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":572,"name":"next-swc-loader","id":575,"timestamp":326190186387,"duration":2807,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":521,"name":"build-module-js","id":572,"timestamp":326190185584,"duration":3810,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js","layer":"ssr"},"startTime":1710752025041},{"traceId":"7cd6fd9d8b50b713","parentId":577,"name":"next-swc-transform","id":578,"timestamp":326190186456,"duration":3226,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":573,"name":"next-swc-loader","id":577,"timestamp":326190186436,"duration":3249,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":525,"name":"build-module-js","id":573,"timestamp":326190185639,"duration":4332,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/route-matcher.js","layer":"ssr"},"startTime":1710752025041},{"traceId":"7cd6fd9d8b50b713","parentId":579,"name":"next-swc-transform","id":580,"timestamp":326190186473,"duration":4462,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":574,"name":"next-swc-loader","id":579,"timestamp":326190186457,"duration":4480,"tags":{},"startTime":1710752025042},{"traceId":"7cd6fd9d8b50b713","parentId":525,"name":"build-module-js","id":574,"timestamp":326190185664,"duration":5972,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/route-regex.js","layer":"ssr"},"startTime":1710752025041},{"traceId":"7cd6fd9d8b50b713","parentId":604,"name":"next-swc-transform","id":605,"timestamp":326190188769,"duration":3626,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":581,"name":"next-swc-loader","id":604,"timestamp":326190188731,"duration":3666,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":543,"name":"build-module-js","id":581,"timestamp":326190188364,"duration":4154,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/segment.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":610,"name":"next-swc-transform","id":611,"timestamp":326190188826,"duration":3707,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":598,"name":"next-swc-loader","id":610,"timestamp":326190188810,"duration":3724,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":598,"timestamp":326190188583,"duration":4230,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parseStack.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":606,"name":"next-swc-transform","id":607,"timestamp":326190188790,"duration":4048,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"next-swc-loader","id":606,"timestamp":326190188770,"duration":4068,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":596,"timestamp":326190188539,"duration":4680,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/ReactDevOverlay.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":608,"name":"next-swc-transform","id":609,"timestamp":326190188809,"duration":4432,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":597,"name":"next-swc-loader","id":608,"timestamp":326190188791,"duration":4451,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":597,"timestamp":326190188560,"duration":5085,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/error-overlay-reducer.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":612,"name":"next-swc-transform","id":613,"timestamp":326190188842,"duration":5178,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":599,"name":"next-swc-loader","id":612,"timestamp":326190188826,"duration":5195,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":599,"timestamp":326190188611,"duration":5833,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/use-error-handler.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":614,"name":"next-swc-transform","id":615,"timestamp":326190188858,"duration":5600,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":600,"name":"next-swc-loader","id":614,"timestamp":326190188843,"duration":5616,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":600,"timestamp":326190188628,"duration":6127,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/parse-component-stack.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":616,"name":"next-swc-transform","id":617,"timestamp":326190188878,"duration":5963,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":601,"name":"next-swc-loader","id":616,"timestamp":326190188862,"duration":5981,"tags":{},"startTime":1710752025045},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":601,"timestamp":326190188650,"duration":6750,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/use-websocket.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":619,"name":"next-swc-transform","id":620,"timestamp":326190192084,"duration":5944,"tags":{},"startTime":1710752025048},{"traceId":"7cd6fd9d8b50b713","parentId":618,"name":"next-swc-loader","id":619,"timestamp":326190192052,"duration":5979,"tags":{},"startTime":1710752025048},{"traceId":"7cd6fd9d8b50b713","parentId":521,"name":"build-module-js","id":618,"timestamp":326190191765,"duration":6451,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/parse-path.js","layer":"ssr"},"startTime":1710752025048},{"traceId":"7cd6fd9d8b50b713","parentId":639,"name":"next-swc-transform","id":640,"timestamp":326190196451,"duration":2009,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":624,"name":"next-swc-loader","id":639,"timestamp":326190196437,"duration":2027,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":545,"name":"build-module-js","id":624,"timestamp":326190195748,"duration":3085,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/apply-flight-data.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":637,"name":"next-swc-transform","id":638,"timestamp":326190196437,"duration":2416,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":623,"name":"next-swc-loader","id":637,"timestamp":326190196422,"duration":2433,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":545,"name":"build-module-js","id":623,"timestamp":326190195730,"duration":3408,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":635,"name":"next-swc-transform","id":636,"timestamp":326190196421,"duration":2737,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":622,"name":"next-swc-loader","id":635,"timestamp":326190196403,"duration":2756,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":545,"name":"build-module-js","id":622,"timestamp":326190195708,"duration":3893,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/apply-router-state-patch-to-tree.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":633,"name":"next-swc-transform","id":634,"timestamp":326190196402,"duration":3888,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":621,"name":"next-swc-loader","id":633,"timestamp":326190196374,"duration":3919,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":621,"timestamp":326190195630,"duration":5961,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/dev/error-overlay/format-webpack-messages.js","layer":"ssr"},"startTime":1710752025051},{"traceId":"7cd6fd9d8b50b713","parentId":643,"name":"next-swc-transform","id":644,"timestamp":326190196482,"duration":5129,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":626,"name":"next-swc-loader","id":643,"timestamp":326190196468,"duration":5144,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":626,"timestamp":326190195781,"duration":6036,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/read-record-value.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":641,"name":"next-swc-transform","id":642,"timestamp":326190196467,"duration":5370,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":625,"name":"next-swc-loader","id":641,"timestamp":326190196452,"duration":5386,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":545,"name":"build-module-js","id":625,"timestamp":326190195764,"duration":6384,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/handle-mutable.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":645,"name":"next-swc-transform","id":646,"timestamp":326190196497,"duration":5670,"tags":{},"startTime":1710752025052}] +[{"traceId":"7cd6fd9d8b50b713","parentId":627,"name":"next-swc-loader","id":645,"timestamp":326190196482,"duration":5822,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":627,"timestamp":326190195797,"duration":6771,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/invalidate-cache-below-flight-segmentpath.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":649,"name":"next-swc-transform","id":650,"timestamp":326190196525,"duration":6064,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":629,"name":"next-swc-loader","id":649,"timestamp":326190196511,"duration":6078,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":629,"timestamp":326190195827,"duration":7057,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/create-optimistic-tree.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":651,"name":"next-swc-transform","id":652,"timestamp":326190196539,"duration":6357,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":630,"name":"next-swc-loader","id":651,"timestamp":326190196525,"duration":6371,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":630,"timestamp":326190195842,"duration":7250,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/should-hard-navigate.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":647,"name":"next-swc-transform","id":648,"timestamp":326190196511,"duration":6596,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":628,"name":"next-swc-loader","id":647,"timestamp":326190196497,"duration":6611,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":628,"timestamp":326190195812,"duration":7599,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/fill-cache-with-data-property.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":653,"name":"next-swc-transform","id":654,"timestamp":326190196553,"duration":6872,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":631,"name":"next-swc-loader","id":653,"timestamp":326190196539,"duration":6886,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":631,"timestamp":326190195856,"duration":7926,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/get-prefetch-cache-entry-status.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":582,"name":"read-resource","id":583,"timestamp":326190188434,"duration":15847,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":543,"name":"build-module-js","id":582,"timestamp":326190188413,"duration":16185,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/helpers/interception-routes.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":584,"name":"read-resource","id":585,"timestamp":326190188458,"duration":16177,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":584,"timestamp":326190188446,"duration":16290,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/image-config-context.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":588,"name":"read-resource","id":589,"timestamp":326190188493,"duration":16248,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":588,"timestamp":326190188481,"duration":16320,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/router-context.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":592,"name":"read-resource","id":593,"timestamp":326190188523,"duration":16284,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":592,"timestamp":326190188515,"duration":16342,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":590,"name":"read-resource","id":591,"timestamp":326190188508,"duration":16357,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":355,"name":"build-module-js","id":590,"timestamp":326190188498,"duration":16406,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/hooks-client-context.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":586,"name":"read-resource","id":587,"timestamp":326190188476,"duration":16433,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":357,"name":"build-module-js","id":586,"timestamp":326190188464,"duration":16489,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/app-router-context.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":594,"name":"read-resource","id":595,"timestamp":326190188535,"duration":16424,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-js","id":594,"timestamp":326190188527,"duration":16467,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-dom.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":602,"name":"read-resource","id":603,"timestamp":326190188673,"duration":16328,"tags":{},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":602,"timestamp":326190188666,"duration":16448,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/dev/hot-reloader-types.js","layer":"ssr"},"startTime":1710752025044},{"traceId":"7cd6fd9d8b50b713","parentId":655,"name":"next-swc-transform","id":656,"timestamp":326190196567,"duration":8565,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":632,"name":"next-swc-loader","id":655,"timestamp":326190196554,"duration":8579,"tags":{},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":544,"name":"build-module-js","id":632,"timestamp":326190195871,"duration":9437,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/reducers/prune-prefetch-cache.js","layer":"ssr"},"startTime":1710752025052},{"traceId":"7cd6fd9d8b50b713","parentId":666,"name":"next-swc-transform","id":667,"timestamp":326190200087,"duration":8122,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":657,"name":"next-swc-loader","id":666,"timestamp":326190200056,"duration":8156,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":574,"name":"build-module-js","id":657,"timestamp":326190199716,"duration":8680,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/escape-regexp.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":668,"name":"next-swc-transform","id":669,"timestamp":326190200112,"duration":8298,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":664,"name":"next-swc-loader","id":668,"timestamp":326190200089,"duration":8322,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":502,"name":"build-module-js","id":664,"timestamp":326190199816,"duration":8791,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/lazy-dynamic/dynamic-no-ssr.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":670,"name":"next-swc-transform","id":671,"timestamp":326190200129,"duration":8502,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":665,"name":"next-swc-loader","id":670,"timestamp":326190200113,"duration":8519,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":548,"name":"build-module-js","id":665,"timestamp":326190199855,"duration":9320,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/promise-queue.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":673,"name":"next-swc-transform","id":674,"timestamp":326190207307,"duration":2168,"tags":{},"startTime":1710752025063},{"traceId":"7cd6fd9d8b50b713","parentId":672,"name":"next-swc-loader","id":673,"timestamp":326190207271,"duration":2205,"tags":{},"startTime":1710752025063},{"traceId":"7cd6fd9d8b50b713","parentId":404,"name":"build-module-js","id":672,"timestamp":326190206554,"duration":3073,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/index.js","layer":"ssr"},"startTime":1710752025062},{"traceId":"7cd6fd9d8b50b713","parentId":662,"name":"read-resource","id":663,"timestamp":326190199805,"duration":11679,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":398,"name":"build-module-js","id":662,"timestamp":326190199796,"duration":11764,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/head-manager-context.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":660,"name":"read-resource","id":661,"timestamp":326190199790,"duration":11775,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":398,"name":"build-module-js","id":660,"timestamp":326190199780,"duration":11835,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/amp-context.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":658,"name":"read-resource","id":659,"timestamp":326190199771,"duration":11883,"tags":{},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":399,"name":"build-module-js","id":658,"timestamp":326190199758,"duration":11940,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/contexts/server-inserted-html.js","layer":"ssr"},"startTime":1710752025056},{"traceId":"7cd6fd9d8b50b713","parentId":680,"name":"next-swc-transform","id":681,"timestamp":326190210933,"duration":1672,"tags":{},"startTime":1710752025067},{"traceId":"7cd6fd9d8b50b713","parentId":677,"name":"next-swc-loader","id":680,"timestamp":326190210894,"duration":1714,"tags":{},"startTime":1710752025067},{"traceId":"7cd6fd9d8b50b713","parentId":582,"name":"build-module-js","id":677,"timestamp":326190210814,"duration":2107,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/app-paths.js","layer":"ssr"},"startTime":1710752025067},{"traceId":"7cd6fd9d8b50b713","parentId":685,"name":"next-swc-transform","id":686,"timestamp":326190212022,"duration":1632,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":682,"name":"next-swc-loader","id":685,"timestamp":326190211991,"duration":1665,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":599,"name":"build-module-js","id":682,"timestamp":326190211794,"duration":2072,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/is-next-router-error.js","layer":"ssr"},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":689,"name":"next-swc-transform","id":690,"timestamp":326190212059,"duration":1823,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":684,"name":"next-swc-loader","id":689,"timestamp":326190212043,"duration":1840,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":599,"name":"build-module-js","id":684,"timestamp":326190211848,"duration":2285,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/hydration-error-info.js","layer":"ssr"},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":687,"name":"next-swc-transform","id":688,"timestamp":326190212042,"duration":2105,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":683,"name":"next-swc-loader","id":687,"timestamp":326190212023,"duration":2125,"tags":{},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":601,"name":"build-module-js","id":683,"timestamp":326190211823,"duration":2569,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/get-socket-url.js","layer":"ssr"},"startTime":1710752025068},{"traceId":"7cd6fd9d8b50b713","parentId":675,"name":"read-resource","id":676,"timestamp":326190209735,"duration":4692,"tags":{},"startTime":1710752025066},{"traceId":"7cd6fd9d8b50b713","parentId":461,"name":"build-module-js","id":675,"timestamp":326190209713,"duration":4780,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-server-dom-webpack-client-edge.js","layer":"ssr"},"startTime":1710752025066},{"traceId":"7cd6fd9d8b50b713","parentId":694,"name":"next-swc-transform","id":695,"timestamp":326190213375,"duration":1914,"tags":{},"startTime":1710752025069},{"traceId":"7cd6fd9d8b50b713","parentId":691,"name":"next-swc-loader","id":694,"timestamp":326190213345,"duration":1946,"tags":{},"startTime":1710752025069},{"traceId":"7cd6fd9d8b50b713","parentId":624,"name":"build-module-js","id":691,"timestamp":326190213220,"duration":2498,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/fill-cache-with-new-subtree-data.js","layer":"ssr"},"startTime":1710752025069},{"traceId":"7cd6fd9d8b50b713","parentId":678,"name":"read-resource","id":679,"timestamp":326190210873,"duration":4893,"tags":{},"startTime":1710752025067},{"traceId":"7cd6fd9d8b50b713","parentId":584,"name":"build-module-js","id":678,"timestamp":326190210861,"duration":5124,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js","layer":"ssr"},"startTime":1710752025067},{"traceId":"7cd6fd9d8b50b713","parentId":712,"name":"next-swc-transform","id":713,"timestamp":326190214966,"duration":1507,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":699,"name":"next-swc-loader","id":712,"timestamp":326190214954,"duration":1523,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":699,"timestamp":326190214644,"duration":2148,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/styles/Base.js","layer":"ssr"},"startTime":1710752025070},{"traceId":"7cd6fd9d8b50b713","parentId":708,"name":"next-swc-transform","id":709,"timestamp":326190214940,"duration":1876,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":697,"name":"next-swc-loader","id":708,"timestamp":326190214925,"duration":1892,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":697,"timestamp":326190214602,"duration":2680,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RootLayoutError.js","layer":"ssr"},"startTime":1710752025070},{"traceId":"7cd6fd9d8b50b713","parentId":706,"name":"next-swc-transform","id":707,"timestamp":326190214924,"duration":2403,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":696,"name":"next-swc-loader","id":706,"timestamp":326190214901,"duration":2428,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":696,"timestamp":326190214571,"duration":3135,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/BuildError.js","layer":"ssr"},"startTime":1710752025070},{"traceId":"7cd6fd9d8b50b713","parentId":714,"name":"next-swc-transform","id":715,"timestamp":326190214979,"duration":4425,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"next-swc-loader","id":714,"timestamp":326190214967,"duration":4439,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":700,"timestamp":326190214668,"duration":5030,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/styles/ComponentStyles.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":718,"name":"next-swc-transform","id":719,"timestamp":326190215003,"duration":4709,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":702,"name":"next-swc-loader","id":718,"timestamp":326190214992,"duration":4722,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":702,"timestamp":326190214702,"duration":5284,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/ShadowPortal.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":720,"name":"next-swc-transform","id":721,"timestamp":326190215018,"duration":4977,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":703,"name":"next-swc-loader","id":720,"timestamp":326190215004,"duration":4992,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":664,"name":"build-module-js","id":703,"timestamp":326190214718,"duration":5363,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/lazy-dynamic/no-ssr-error.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":710,"name":"next-swc-transform","id":711,"timestamp":326190214953,"duration":5167,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"next-swc-loader","id":710,"timestamp":326190214941,"duration":5180,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":698,"timestamp":326190214625,"duration":6280,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/Errors.js","layer":"ssr"},"startTime":1710752025070},{"traceId":"7cd6fd9d8b50b713","parentId":724,"name":"next-swc-transform","id":725,"timestamp":326190215045,"duration":5957,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":705,"name":"next-swc-loader","id":724,"timestamp":326190215033,"duration":5970,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":672,"name":"build-module-js","id":705,"timestamp":326190214754,"duration":6380,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/is-dynamic.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":716,"name":"next-swc-transform","id":717,"timestamp":326190214991,"duration":6179,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":701,"name":"next-swc-loader","id":716,"timestamp":326190214979,"duration":6192,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":596,"name":"build-module-js","id":701,"timestamp":326190214687,"duration":6777,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/styles/CssReset.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":727,"name":"next-swc-transform","id":728,"timestamp":326190216315,"duration":5157,"tags":{},"startTime":1710752025072},{"traceId":"7cd6fd9d8b50b713","parentId":726,"name":"next-swc-loader","id":727,"timestamp":326190216287,"duration":5186,"tags":{},"startTime":1710752025072},{"traceId":"7cd6fd9d8b50b713","parentId":677,"name":"build-module-js","id":726,"timestamp":326190216071,"duration":5489,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","layer":"ssr"},"startTime":1710752025072},{"traceId":"7cd6fd9d8b50b713","parentId":722,"name":"next-swc-transform","id":723,"timestamp":326190215032,"duration":6555,"tags":{},"startTime":1710752025071}] +[{"traceId":"7cd6fd9d8b50b713","parentId":704,"name":"next-swc-loader","id":722,"timestamp":326190215018,"duration":6694,"tags":{},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":672,"name":"build-module-js","id":704,"timestamp":326190214737,"duration":7506,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js","layer":"ssr"},"startTime":1710752025071},{"traceId":"7cd6fd9d8b50b713","parentId":692,"name":"read-resource","id":693,"timestamp":326190213269,"duration":12496,"tags":{},"startTime":1710752025069},{"traceId":"7cd6fd9d8b50b713","parentId":353,"name":"build-module-cjs","id":692,"timestamp":326190213257,"duration":12970,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","layer":"ssr"},"startTime":1710752025069},{"traceId":"7cd6fd9d8b50b713","parentId":733,"name":"next-swc-transform","id":734,"timestamp":326190227491,"duration":1280,"tags":{},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":730,"name":"next-swc-loader","id":733,"timestamp":326190227474,"duration":1300,"tags":{},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":699,"name":"build-module-js","id":730,"timestamp":326190227401,"duration":1668,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/noop-template.js","layer":"ssr"},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":731,"name":"next-swc-transform","id":732,"timestamp":326190227473,"duration":1819,"tags":{},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":729,"name":"next-swc-loader","id":731,"timestamp":326190227436,"duration":1858,"tags":{},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":691,"name":"build-module-js","id":729,"timestamp":326190227354,"duration":2179,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/router-reducer/invalidate-cache-by-router-state.js","layer":"ssr"},"startTime":1710752025083},{"traceId":"7cd6fd9d8b50b713","parentId":737,"name":"next-swc-transform","id":738,"timestamp":326190227970,"duration":2195,"tags":{},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":735,"name":"next-swc-loader","id":737,"timestamp":326190227939,"duration":2227,"tags":{},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"build-module-js","id":735,"timestamp":326190227835,"duration":2602,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/getErrorByType.js","layer":"ssr"},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":739,"name":"next-swc-transform","id":740,"timestamp":326190227990,"duration":2489,"tags":{},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":736,"name":"next-swc-loader","id":739,"timestamp":326190227971,"duration":2508,"tags":{},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"build-module-js","id":736,"timestamp":326190227876,"duration":3073,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/nodeStackFrames.js","layer":"ssr"},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":742,"name":"next-swc-transform","id":743,"timestamp":326190228723,"duration":2264,"tags":{},"startTime":1710752025085},{"traceId":"7cd6fd9d8b50b713","parentId":741,"name":"next-swc-loader","id":742,"timestamp":326190228689,"duration":2299,"tags":{},"startTime":1710752025085},{"traceId":"7cd6fd9d8b50b713","parentId":601,"name":"build-module-js","id":741,"timestamp":326190228625,"duration":2548,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/dev/noop-turbopack-hmr.js","layer":"ssr"},"startTime":1710752025084},{"traceId":"7cd6fd9d8b50b713","parentId":751,"name":"next-swc-transform","id":752,"timestamp":326190229995,"duration":1976,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":745,"name":"next-swc-loader","id":751,"timestamp":326190229977,"duration":1998,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":745,"timestamp":326190229810,"duration":2457,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/styles.js","layer":"ssr"},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":749,"name":"next-swc-transform","id":750,"timestamp":326190229975,"duration":2307,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":744,"name":"next-swc-loader","id":749,"timestamp":326190229946,"duration":2338,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":744,"timestamp":326190229774,"duration":2723,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/styles.js","layer":"ssr"},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":755,"name":"next-swc-transform","id":756,"timestamp":326190230027,"duration":2523,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":747,"name":"next-swc-loader","id":755,"timestamp":326190230010,"duration":2541,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":747,"timestamp":326190229851,"duration":2894,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/styles.js","layer":"ssr"},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":753,"name":"next-swc-transform","id":754,"timestamp":326190230010,"duration":2748,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":746,"name":"next-swc-loader","id":753,"timestamp":326190229996,"duration":2762,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":746,"timestamp":326190229830,"duration":3106,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/styles.js","layer":"ssr"},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":757,"name":"next-swc-transform","id":758,"timestamp":326190230040,"duration":3156,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":748,"name":"next-swc-loader","id":757,"timestamp":326190230028,"duration":3170,"tags":{},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"build-module-js","id":748,"timestamp":326190229868,"duration":3526,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/icons/CloseIcon.js","layer":"ssr"},"startTime":1710752025086},{"traceId":"7cd6fd9d8b50b713","parentId":760,"name":"next-swc-transform","id":761,"timestamp":326190231659,"duration":3138,"tags":{},"startTime":1710752025088},{"traceId":"7cd6fd9d8b50b713","parentId":759,"name":"next-swc-loader","id":760,"timestamp":326190231620,"duration":3179,"tags":{},"startTime":1710752025087},{"traceId":"7cd6fd9d8b50b713","parentId":464,"name":"build-module-js","id":759,"timestamp":326190231527,"duration":3509,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/strip-ansi/index.js","layer":"ssr"},"startTime":1710752025087},{"traceId":"7cd6fd9d8b50b713","parentId":765,"name":"next-swc-transform","id":766,"timestamp":326190235933,"duration":2202,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":762,"name":"next-swc-loader","id":765,"timestamp":326190235907,"duration":2232,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":697,"name":"build-module-js","id":762,"timestamp":326190235822,"duration":2579,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/index.js","layer":"ssr"},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":767,"name":"next-swc-transform","id":768,"timestamp":326190235951,"duration":2562,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":763,"name":"next-swc-loader","id":767,"timestamp":326190235934,"duration":2581,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":697,"name":"build-module-js","id":763,"timestamp":326190235860,"duration":2824,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/index.js","layer":"ssr"},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":772,"name":"next-swc-transform","id":773,"timestamp":326190236512,"duration":2224,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":771,"name":"next-swc-loader","id":772,"timestamp":326190236487,"duration":2251,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"build-module-js","id":771,"timestamp":326190236444,"duration":2504,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/index.js","layer":"ssr"},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":769,"name":"next-swc-transform","id":770,"timestamp":326190235967,"duration":3007,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":764,"name":"next-swc-loader","id":769,"timestamp":326190235952,"duration":3023,"tags":{},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":735,"name":"build-module-js","id":764,"timestamp":326190235882,"duration":3703,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/stack-frame.js","layer":"ssr"},"startTime":1710752025092},{"traceId":"7cd6fd9d8b50b713","parentId":778,"name":"next-swc-transform","id":779,"timestamp":326190238072,"duration":2317,"tags":{},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"next-swc-loader","id":778,"timestamp":326190238054,"duration":2337,"tags":{},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":697,"name":"build-module-js","id":775,"timestamp":326190237947,"duration":2686,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/index.js","layer":"ssr"},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":776,"name":"next-swc-transform","id":777,"timestamp":326190238053,"duration":2594,"tags":{},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":774,"name":"next-swc-loader","id":776,"timestamp":326190237993,"duration":2655,"tags":{},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":696,"name":"build-module-js","id":774,"timestamp":326190237908,"duration":2921,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/index.js","layer":"ssr"},"startTime":1710752025094},{"traceId":"7cd6fd9d8b50b713","parentId":783,"name":"next-swc-transform","id":784,"timestamp":326190239855,"duration":1578,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":780,"name":"next-swc-loader","id":783,"timestamp":326190239831,"duration":1603,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":780,"timestamp":326190239698,"duration":1944,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/index.js","layer":"ssr"},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":787,"name":"next-swc-transform","id":788,"timestamp":326190239887,"duration":1791,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":782,"name":"next-swc-loader","id":787,"timestamp":326190239873,"duration":1806,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":698,"name":"build-module-js","id":782,"timestamp":326190239752,"duration":2195,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/hot-linked-text/index.js","layer":"ssr"},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":785,"name":"next-swc-transform","id":786,"timestamp":326190239872,"duration":2902,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"next-swc-loader","id":785,"timestamp":326190239856,"duration":2920,"tags":{},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":700,"name":"build-module-js","id":781,"timestamp":326190239730,"duration":3605,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/index.js","layer":"ssr"},"startTime":1710752025096},{"traceId":"7cd6fd9d8b50b713","parentId":789,"name":"read-resource","id":790,"timestamp":326190242095,"duration":4195,"tags":{},"startTime":1710752025098},{"traceId":"7cd6fd9d8b50b713","parentId":598,"name":"build-module-js","id":789,"timestamp":326190242077,"duration":5039,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","layer":"ssr"},"startTime":1710752025098},{"traceId":"7cd6fd9d8b50b713","parentId":800,"name":"next-swc-transform","id":801,"timestamp":326190245269,"duration":2149,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":796,"name":"next-swc-loader","id":800,"timestamp":326190245252,"duration":2168,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":763,"name":"build-module-js","id":796,"timestamp":326190245141,"duration":2601,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/Overlay.js","layer":"ssr"},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":798,"name":"next-swc-transform","id":799,"timestamp":326190245251,"duration":3734,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":795,"name":"next-swc-loader","id":798,"timestamp":326190245218,"duration":3769,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":762,"name":"build-module-js","id":795,"timestamp":326190245088,"duration":4435,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/Terminal.js","layer":"ssr"},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":802,"name":"next-swc-transform","id":803,"timestamp":326190245284,"duration":4268,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":797,"name":"next-swc-loader","id":802,"timestamp":326190245270,"duration":4283,"tags":{},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":771,"name":"build-module-js","id":797,"timestamp":326190245165,"duration":4885,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/LeftRightDialogHeader/LeftRightDialogHeader.js","layer":"ssr"},"startTime":1710752025101},{"traceId":"7cd6fd9d8b50b713","parentId":812,"name":"next-swc-transform","id":813,"timestamp":326190246092,"duration":3970,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":805,"name":"next-swc-loader","id":812,"timestamp":326190246076,"duration":3986,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"build-module-js","id":805,"timestamp":326190245934,"duration":4289,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogBody.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":816,"name":"next-swc-transform","id":817,"timestamp":326190246120,"duration":4114,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":807,"name":"next-swc-loader","id":816,"timestamp":326190246107,"duration":4128,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"build-module-js","id":807,"timestamp":326190245973,"duration":4411,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogHeader.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":814,"name":"next-swc-transform","id":815,"timestamp":326190246106,"duration":4287,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":806,"name":"next-swc-loader","id":814,"timestamp":326190246092,"duration":4302,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"build-module-js","id":806,"timestamp":326190245954,"duration":4588,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/DialogContent.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":791,"name":"read-resource","id":792,"timestamp":326190243671,"duration":7332,"tags":{},"startTime":1710752025100},{"traceId":"7cd6fd9d8b50b713","parentId":665,"name":"build-module-cjs","id":791,"timestamp":326190243655,"duration":7439,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_class_private_field_loose_key.cjs","layer":"ssr"},"startTime":1710752025100},{"traceId":"7cd6fd9d8b50b713","parentId":793,"name":"read-resource","id":794,"timestamp":326190243686,"duration":7413,"tags":{},"startTime":1710752025100},{"traceId":"7cd6fd9d8b50b713","parentId":665,"name":"build-module-cjs","id":793,"timestamp":326190243677,"duration":7501,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_class_private_field_loose_base.cjs","layer":"ssr"},"startTime":1710752025100},{"traceId":"7cd6fd9d8b50b713","parentId":810,"name":"next-swc-transform","id":811,"timestamp":326190246075,"duration":5126,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":804,"name":"next-swc-loader","id":810,"timestamp":326190246045,"duration":5157,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"build-module-js","id":804,"timestamp":326190245903,"duration":5614,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/Dialog.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":820,"name":"next-swc-transform","id":821,"timestamp":326190246148,"duration":5401,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":809,"name":"next-swc-loader","id":820,"timestamp":326190246134,"duration":5416,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":774,"name":"build-module-js","id":809,"timestamp":326190246008,"duration":5773,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/styles.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":818,"name":"next-swc-transform","id":819,"timestamp":326190246134,"duration":5665,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":808,"name":"next-swc-loader","id":818,"timestamp":326190246121,"duration":5679,"tags":{},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":775,"name":"build-module-js","id":808,"timestamp":326190245990,"duration":6064,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Dialog/styles.js","layer":"ssr"},"startTime":1710752025102},{"traceId":"7cd6fd9d8b50b713","parentId":830,"name":"next-swc-transform","id":831,"timestamp":326190248101,"duration":3965,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":824,"name":"next-swc-loader","id":830,"timestamp":326190248087,"duration":3981,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":780,"name":"build-module-js","id":824,"timestamp":326190247894,"duration":4413,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/Toast.js","layer":"ssr"},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":832,"name":"next-swc-transform","id":833,"timestamp":326190248115,"duration":4236,"tags":{},"startTime":1710752025104}] +[{"traceId":"7cd6fd9d8b50b713","parentId":825,"name":"next-swc-loader","id":832,"timestamp":326190248102,"duration":4388,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":782,"name":"build-module-js","id":825,"timestamp":326190247913,"duration":4801,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/hot-linked-text/get-words-and-whitespaces.js","layer":"ssr"},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":826,"name":"next-swc-transform","id":827,"timestamp":326190248064,"duration":9235,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":822,"name":"next-swc-loader","id":826,"timestamp":326190248033,"duration":9270,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":774,"name":"build-module-js","id":822,"timestamp":326190247830,"duration":9878,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/VersionStalenessInfo/VersionStalenessInfo.js","layer":"ssr"},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":828,"name":"next-swc-transform","id":829,"timestamp":326190248086,"duration":9638,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":823,"name":"next-swc-loader","id":828,"timestamp":326190248065,"duration":9660,"tags":{},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":780,"name":"build-module-js","id":823,"timestamp":326190247872,"duration":10046,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Toast/styles.js","layer":"ssr"},"startTime":1710752025104},{"traceId":"7cd6fd9d8b50b713","parentId":838,"name":"next-swc-transform","id":839,"timestamp":326190254287,"duration":3708,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":834,"name":"next-swc-loader","id":838,"timestamp":326190254250,"duration":3746,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"build-module-js","id":834,"timestamp":326190253864,"duration":4374,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/group-stack-frames-by-framework.js","layer":"ssr"},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":844,"name":"next-swc-transform","id":845,"timestamp":326190254336,"duration":3970,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":837,"name":"next-swc-loader","id":844,"timestamp":326190254321,"duration":3985,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"build-module-js","id":837,"timestamp":326190253952,"duration":4593,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/ComponentStackFrameRow.js","layer":"ssr"},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":840,"name":"next-swc-transform","id":841,"timestamp":326190254305,"duration":4259,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":835,"name":"next-swc-loader","id":840,"timestamp":326190254288,"duration":4276,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"build-module-js","id":835,"timestamp":326190253910,"duration":4916,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/CallStackFrame.js","layer":"ssr"},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":842,"name":"next-swc-transform","id":843,"timestamp":326190254320,"duration":4527,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":836,"name":"next-swc-loader","id":842,"timestamp":326190254305,"duration":4543,"tags":{},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"build-module-js","id":836,"timestamp":326190253933,"duration":5208,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/GroupedStackFrames.js","layer":"ssr"},"startTime":1710752025110},{"traceId":"7cd6fd9d8b50b713","parentId":846,"name":"read-resource","id":847,"timestamp":326190259331,"duration":2352,"tags":{},"startTime":1710752025115},{"traceId":"7cd6fd9d8b50b713","parentId":699,"name":"build-module-cjs","id":846,"timestamp":326190259304,"duration":2532,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/@swc/helpers/cjs/_tagged_template_literal_loose.cjs","layer":"ssr"},"startTime":1710752025115},{"traceId":"7cd6fd9d8b50b713","parentId":855,"name":"next-swc-transform","id":856,"timestamp":326190261576,"duration":990,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":854,"name":"next-swc-loader","id":855,"timestamp":326190261557,"duration":1013,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":795,"name":"build-module-js","id":854,"timestamp":326190261518,"duration":1411,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Terminal/EditorLink.js","layer":"ssr"},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":852,"name":"next-swc-transform","id":853,"timestamp":326190261253,"duration":1708,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":849,"name":"next-swc-loader","id":852,"timestamp":326190261236,"duration":1727,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":796,"name":"build-module-js","id":849,"timestamp":326190261172,"duration":2073,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/body-locker.js","layer":"ssr"},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":859,"name":"next-swc-transform","id":860,"timestamp":326190261934,"duration":1791,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":857,"name":"next-swc-loader","id":859,"timestamp":326190261915,"duration":1812,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":837,"name":"build-module-js","id":857,"timestamp":326190261862,"duration":2142,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/helpers/use-open-in-editor.js","layer":"ssr"},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":864,"name":"next-swc-transform","id":865,"timestamp":326190262055,"duration":1965,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":863,"name":"next-swc-loader","id":864,"timestamp":326190262039,"duration":1982,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":804,"name":"build-module-js","id":863,"timestamp":326190262018,"duration":2208,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/hooks/use-on-click-outside.js","layer":"ssr"},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":861,"name":"next-swc-transform","id":862,"timestamp":326190261951,"duration":2300,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":858,"name":"next-swc-loader","id":861,"timestamp":326190261935,"duration":2316,"tags":{},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":836,"name":"build-module-js","id":858,"timestamp":326190261888,"duration":2696,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/container/RuntimeError/FrameworkIcon.js","layer":"ssr"},"startTime":1710752025118},{"traceId":"7cd6fd9d8b50b713","parentId":867,"name":"next-swc-transform","id":868,"timestamp":326190264849,"duration":723,"tags":{},"startTime":1710752025121},{"traceId":"7cd6fd9d8b50b713","parentId":866,"name":"next-swc-loader","id":867,"timestamp":326190264820,"duration":757,"tags":{},"startTime":1710752025121},{"traceId":"7cd6fd9d8b50b713","parentId":781,"name":"build-module-js","id":866,"timestamp":326190264650,"duration":1202,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/index.js","layer":"ssr"},"startTime":1710752025121},{"traceId":"7cd6fd9d8b50b713","parentId":872,"name":"read-resource","id":873,"timestamp":326190266780,"duration":244,"tags":{},"startTime":1710752025123},{"traceId":"7cd6fd9d8b50b713","parentId":795,"name":"build-module-js","id":872,"timestamp":326190266761,"duration":1662,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/anser/index.js","layer":"ssr"},"startTime":1710752025123},{"traceId":"7cd6fd9d8b50b713","parentId":870,"name":"next-swc-transform","id":871,"timestamp":326190266352,"duration":3050,"tags":{},"startTime":1710752025122},{"traceId":"7cd6fd9d8b50b713","parentId":869,"name":"next-swc-loader","id":870,"timestamp":326190266320,"duration":3086,"tags":{},"startTime":1710752025122},{"traceId":"7cd6fd9d8b50b713","parentId":866,"name":"build-module-js","id":869,"timestamp":326190266272,"duration":3766,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/CodeFrame/CodeFrame.js","layer":"ssr"},"startTime":1710752025122},{"traceId":"7cd6fd9d8b50b713","parentId":850,"name":"next-swc-transform","id":851,"timestamp":326190261235,"duration":12953,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":848,"name":"next-swc-loader","id":850,"timestamp":326190261202,"duration":12990,"tags":{},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":796,"name":"build-module-js","id":848,"timestamp":326190261125,"duration":19840,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/client/components/react-dev-overlay/internal/components/Overlay/maintain--tab-focus.js","layer":"ssr"},"startTime":1710752025117},{"traceId":"7cd6fd9d8b50b713","parentId":876,"name":"read-resource","id":877,"timestamp":326190282613,"duration":217,"tags":{},"startTime":1710752025139},{"traceId":"7cd6fd9d8b50b713","parentId":848,"name":"build-module-js","id":876,"timestamp":326190282600,"duration":686,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/css.escape/css.escape.js","layer":"ssr"},"startTime":1710752025139},{"traceId":"7cd6fd9d8b50b713","parentId":874,"name":"read-resource","id":875,"timestamp":326190282563,"duration":773,"tags":{},"startTime":1710752025139},{"traceId":"7cd6fd9d8b50b713","parentId":848,"name":"build-module-js","id":874,"timestamp":326190282535,"duration":4776,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/platform/platform.js","layer":"ssr"},"startTime":1710752025138},{"traceId":"7cd6fd9d8b50b713","parentId":113,"name":"make","id":114,"timestamp":326189083972,"duration":1203401,"tags":{},"startTime":1710752023938},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"chunk-graph","id":879,"timestamp":326190292150,"duration":2752,"tags":{},"startTime":1710752025148},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"optimize-modules","id":881,"timestamp":326190294918,"duration":3,"tags":{},"startTime":1710752025151},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"optimize-chunks","id":882,"timestamp":326190294931,"duration":1881,"tags":{},"startTime":1710752025151},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"optimize-tree","id":883,"timestamp":326190296825,"duration":5,"tags":{},"startTime":1710752025153},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"optimize-chunk-modules","id":884,"timestamp":326190296841,"duration":3,"tags":{},"startTime":1710752025153},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"optimize","id":880,"timestamp":326190294912,"duration":2457,"tags":{},"startTime":1710752025151},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"module-hash","id":885,"timestamp":326190298955,"duration":4194,"tags":{},"startTime":1710752025155},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"code-generation","id":886,"timestamp":326190303161,"duration":7699,"tags":{},"startTime":1710752025159},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"hash","id":887,"timestamp":326190312923,"duration":2504,"tags":{},"startTime":1710752025169},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"code-generation-jobs","id":888,"timestamp":326190315427,"duration":174,"tags":{},"startTime":1710752025171},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"module-assets","id":889,"timestamp":326190315594,"duration":56,"tags":{},"startTime":1710752025172},{"traceId":"7cd6fd9d8b50b713","parentId":878,"name":"create-chunk-assets","id":890,"timestamp":326190315654,"duration":54218,"tags":{},"startTime":1710752025172},{"traceId":"7cd6fd9d8b50b713","parentId":113,"name":"seal","id":878,"timestamp":326190291535,"duration":79647,"tags":{},"startTime":1710752025148},{"traceId":"7cd6fd9d8b50b713","parentId":112,"name":"webpack-compilation","id":113,"timestamp":326189083110,"duration":1289876,"tags":{"name":"server"},"startTime":1710752023937},{"traceId":"7cd6fd9d8b50b713","parentId":112,"name":"emit","id":891,"timestamp":326190373014,"duration":9663,"tags":{},"startTime":1710752025229},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-server","id":112,"timestamp":326189081646,"duration":1301417,"tags":{"trigger":"manual"},"startTime":1710752023936},{"traceId":"7cd6fd9d8b50b713","parentId":897,"name":"build-module-css&server=false!","id":899,"timestamp":326190391554,"duration":1875,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&server=false!","layer":"app-pages-browser"},"startTime":1710752025248},{"traceId":"7cd6fd9d8b50b713","parentId":898,"name":"build-module-js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=false!","id":900,"timestamp":326190393463,"duration":551,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=false!","layer":"app-pages-browser"},"startTime":1710752025250},{"traceId":"7cd6fd9d8b50b713","parentId":893,"name":"add-entry","id":898,"timestamp":326190388316,"duration":101940,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&server=false!"},"startTime":1710752025244},{"traceId":"7cd6fd9d8b50b713","parentId":893,"name":"add-entry","id":894,"timestamp":326190388231,"duration":108813,"tags":{"request":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1710752025244},{"traceId":"7cd6fd9d8b50b713","parentId":893,"name":"add-entry","id":896,"timestamp":326190388297,"duration":135183,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"},"startTime":1710752025244},{"traceId":"7cd6fd9d8b50b713","parentId":893,"name":"add-entry","id":895,"timestamp":326190388283,"duration":136239,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1710752025244},{"traceId":"7cd6fd9d8b50b713","parentId":893,"name":"add-entry","id":897,"timestamp":326190388307,"duration":140493,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&server=false!"},"startTime":1710752025244},{"traceId":"7cd6fd9d8b50b713","parentId":892,"name":"make","id":893,"timestamp":326190385511,"duration":143314,"tags":{},"startTime":1710752025242},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"chunk-graph","id":902,"timestamp":326190531251,"duration":1693,"tags":{},"startTime":1710752025388},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"optimize-modules","id":904,"timestamp":326190532981,"duration":6,"tags":{},"startTime":1710752025389},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"optimize-chunks","id":905,"timestamp":326190533004,"duration":78,"tags":{},"startTime":1710752025389},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"optimize-tree","id":906,"timestamp":326190533117,"duration":6,"tags":{},"startTime":1710752025389},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"optimize-chunk-modules","id":907,"timestamp":326190533132,"duration":2,"tags":{},"startTime":1710752025389},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"optimize","id":903,"timestamp":326190532971,"duration":733,"tags":{},"startTime":1710752025389},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"module-hash","id":908,"timestamp":326190534853,"duration":3140,"tags":{},"startTime":1710752025391},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"code-generation","id":909,"timestamp":326190538007,"duration":1736,"tags":{},"startTime":1710752025394},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"hash","id":910,"timestamp":326190541992,"duration":7072,"tags":{},"startTime":1710752025398},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"code-generation-jobs","id":911,"timestamp":326190549063,"duration":115,"tags":{},"startTime":1710752025405},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"module-assets","id":912,"timestamp":326190549171,"duration":123,"tags":{},"startTime":1710752025406},{"traceId":"7cd6fd9d8b50b713","parentId":901,"name":"create-chunk-assets","id":913,"timestamp":326190549298,"duration":6842,"tags":{},"startTime":1710752025406},{"traceId":"7cd6fd9d8b50b713","parentId":892,"name":"NextJsBuildManifest-generateClientManifest","id":915,"timestamp":326190556627,"duration":105,"tags":{},"startTime":1710752025413},{"traceId":"7cd6fd9d8b50b713","parentId":892,"name":"NextJsBuildManifest-createassets","id":914,"timestamp":326190556454,"duration":288,"tags":{},"startTime":1710752025413},{"traceId":"7cd6fd9d8b50b713","parentId":892,"name":"seal","id":901,"timestamp":326190530686,"duration":27839,"tags":{},"startTime":1710752025387},{"traceId":"7cd6fd9d8b50b713","parentId":347,"name":"webpack-compilation","id":892,"timestamp":326190385259,"duration":173300,"tags":{"name":"client"},"startTime":1710752025241},{"traceId":"7cd6fd9d8b50b713","parentId":347,"name":"emit","id":916,"timestamp":326190558576,"duration":5688,"tags":{},"startTime":1710752025415},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-client","id":347,"timestamp":326190072908,"duration":492165,"tags":{"trigger":"manual"},"startTime":1710752024929}] +[{"traceId":"7cd6fd9d8b50b713","parentId":921,"name":"build-module-json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","id":922,"timestamp":326190797362,"duration":5006,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Ffavicon.ico%2Froute&page=%2Ffavicon.ico%2Froute&appPaths=&pagePath=private-next-app-dir%2Ffavicon.ico&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","layer":"rsc"},"startTime":1710752025654},{"traceId":"7cd6fd9d8b50b713","parentId":919,"name":"add-entry","id":920,"timestamp":326190793116,"duration":14768,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752025650},{"traceId":"7cd6fd9d8b50b713","parentId":925,"name":"next-swc-transform","id":926,"timestamp":326190822422,"duration":2752,"tags":{},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":923,"name":"next-swc-loader","id":925,"timestamp":326190822324,"duration":2858,"tags":{},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":922,"name":"build-module-js","id":923,"timestamp":326190822193,"duration":3481,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/node-polyfill-headers.js","layer":"rsc"},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":927,"name":"next-swc-transform","id":928,"timestamp":326190822451,"duration":3361,"tags":{},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":924,"name":"next-swc-loader","id":927,"timestamp":326190822426,"duration":3388,"tags":{},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":922,"name":"build-module-js","id":924,"timestamp":326190822279,"duration":4061,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/future/route-modules/app-route/module.compiled.js","layer":"rsc"},"startTime":1710752025679},{"traceId":"7cd6fd9d8b50b713","parentId":929,"name":"read-resource","id":930,"timestamp":326190823165,"duration":4112,"tags":{},"startTime":1710752025680},{"traceId":"7cd6fd9d8b50b713","parentId":924,"name":"build-module-js","id":931,"timestamp":326190827946,"duration":26,"tags":{"name":"next/dist/compiled/next-server/app-route.runtime.dev.js","layer":"null"},"startTime":1710752025685},{"traceId":"7cd6fd9d8b50b713","parentId":922,"name":"build-module-ico?__next_metadata_route__","id":929,"timestamp":326190822714,"duration":6828,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-metadata-route-loader.js?page=%2Ffavicon.ico%2Froute&isDynamic=0!/Users/yiwenl/Development/Sketches/v2/src/app/favicon.ico?__next_metadata_route__","layer":"app-metadata-route"},"startTime":1710752025680},{"traceId":"7cd6fd9d8b50b713","parentId":933,"name":"next-swc-transform","id":934,"timestamp":326190838578,"duration":1927,"tags":{},"startTime":1710752025695},{"traceId":"7cd6fd9d8b50b713","parentId":932,"name":"next-swc-loader","id":933,"timestamp":326190838525,"duration":2004,"tags":{},"startTime":1710752025695},{"traceId":"7cd6fd9d8b50b713","parentId":929,"name":"build-module-js","id":932,"timestamp":326190838182,"duration":3014,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/server.js","layer":"app-metadata-route"},"startTime":1710752025695},{"traceId":"7cd6fd9d8b50b713","parentId":941,"name":"next-swc-transform","id":942,"timestamp":326190843893,"duration":1399,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":936,"name":"next-swc-loader","id":941,"timestamp":326190843873,"duration":1441,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":932,"name":"build-module-js","id":936,"timestamp":326190843759,"duration":2646,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/spec-extension/image-response.js","layer":"app-metadata-route"},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":945,"name":"next-swc-transform","id":946,"timestamp":326190843928,"duration":2587,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":938,"name":"next-swc-loader","id":945,"timestamp":326190843913,"duration":2606,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":932,"name":"build-module-js","id":938,"timestamp":326190843807,"duration":3262,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/spec-extension/user-agent.js","layer":"app-metadata-route"},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":943,"name":"next-swc-transform","id":944,"timestamp":326190843911,"duration":3295,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":937,"name":"next-swc-loader","id":943,"timestamp":326190843895,"duration":3314,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":932,"name":"build-module-js","id":937,"timestamp":326190843783,"duration":4249,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/spec-extension/request.js","layer":"app-metadata-route"},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":939,"name":"next-swc-transform","id":940,"timestamp":326190843871,"duration":4192,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":935,"name":"next-swc-loader","id":939,"timestamp":326190843831,"duration":4234,"tags":{},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":932,"name":"build-module-js","id":935,"timestamp":326190843704,"duration":5424,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/spec-extension/response.js","layer":"app-metadata-route"},"startTime":1710752025701},{"traceId":"7cd6fd9d8b50b713","parentId":936,"name":"build-module-js","id":947,"timestamp":326190850578,"duration":29,"tags":{"name":"next/dist/compiled/@vercel/og/index.node.js","layer":"null"},"startTime":1710752025707},{"traceId":"7cd6fd9d8b50b713","parentId":951,"name":"next-swc-transform","id":952,"timestamp":326190854481,"duration":2250,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":948,"name":"next-swc-loader","id":951,"timestamp":326190854407,"duration":2330,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":937,"name":"build-module-js","id":948,"timestamp":326190853748,"duration":3873,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/error.js","layer":"app-metadata-route"},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":958,"name":"next-swc-transform","id":959,"timestamp":326190855226,"duration":2485,"tags":{},"startTime":1710752025712},{"traceId":"7cd6fd9d8b50b713","parentId":957,"name":"next-swc-loader","id":958,"timestamp":326190855106,"duration":2608,"tags":{},"startTime":1710752025712},{"traceId":"7cd6fd9d8b50b713","parentId":937,"name":"build-module-js","id":957,"timestamp":326190854985,"duration":3026,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/spec-extension/cookies.js","layer":"app-metadata-route"},"startTime":1710752025712},{"traceId":"7cd6fd9d8b50b713","parentId":953,"name":"next-swc-transform","id":954,"timestamp":326190854520,"duration":3518,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":949,"name":"next-swc-loader","id":953,"timestamp":326190854488,"duration":3551,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":937,"name":"build-module-js","id":949,"timestamp":326190854043,"duration":4732,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/utils.js","layer":"app-metadata-route"},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":955,"name":"next-swc-transform","id":956,"timestamp":326190854544,"duration":4344,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":950,"name":"next-swc-loader","id":955,"timestamp":326190854522,"duration":4367,"tags":{},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":937,"name":"build-module-js","id":950,"timestamp":326190854297,"duration":6042,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/server/web/next-url.js","layer":"app-metadata-route"},"startTime":1710752025711},{"traceId":"7cd6fd9d8b50b713","parentId":964,"name":"next-swc-transform","id":965,"timestamp":326190867692,"duration":1470,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":960,"name":"next-swc-loader","id":964,"timestamp":326190867632,"duration":1539,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":950,"name":"build-module-js","id":960,"timestamp":326190867364,"duration":2222,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/get-hostname.js","layer":"app-metadata-route"},"startTime":1710752025724},{"traceId":"7cd6fd9d8b50b713","parentId":968,"name":"next-swc-transform","id":969,"timestamp":326190867737,"duration":2001,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":962,"name":"next-swc-loader","id":968,"timestamp":326190867719,"duration":2021,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":950,"name":"build-module-js","id":962,"timestamp":326190867584,"duration":2842,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/get-next-pathname-info.js","layer":"app-metadata-route"},"startTime":1710752025724},{"traceId":"7cd6fd9d8b50b713","parentId":970,"name":"next-swc-transform","id":971,"timestamp":326190867755,"duration":2705,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":963,"name":"next-swc-loader","id":970,"timestamp":326190867739,"duration":2723,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":950,"name":"build-module-js","id":963,"timestamp":326190867606,"duration":3165,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/format-next-pathname-info.js","layer":"app-metadata-route"},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":966,"name":"next-swc-transform","id":967,"timestamp":326190867717,"duration":3070,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":961,"name":"next-swc-loader","id":966,"timestamp":326190867695,"duration":3094,"tags":{},"startTime":1710752025725},{"traceId":"7cd6fd9d8b50b713","parentId":950,"name":"build-module-js","id":961,"timestamp":326190867550,"duration":3466,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/i18n/detect-domain-locale.js","layer":"app-metadata-route"},"startTime":1710752025724},{"traceId":"7cd6fd9d8b50b713","parentId":982,"name":"next-swc-transform","id":983,"timestamp":326190873513,"duration":1332,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":975,"name":"next-swc-loader","id":982,"timestamp":326190873496,"duration":1355,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":963,"name":"build-module-js","id":975,"timestamp":326190873380,"duration":1871,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/remove-trailing-slash.js","layer":"app-metadata-route"},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":978,"name":"next-swc-transform","id":979,"timestamp":326190873476,"duration":1844,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":973,"name":"next-swc-loader","id":978,"timestamp":326190873457,"duration":1866,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":962,"name":"build-module-js","id":973,"timestamp":326190873332,"duration":2554,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/remove-path-prefix.js","layer":"app-metadata-route"},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":976,"name":"next-swc-transform","id":977,"timestamp":326190873454,"duration":2456,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":972,"name":"next-swc-loader","id":976,"timestamp":326190873420,"duration":2504,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":962,"name":"build-module-js","id":972,"timestamp":326190873280,"duration":2913,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/i18n/normalize-locale-path.js","layer":"app-metadata-route"},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":980,"name":"next-swc-transform","id":981,"timestamp":326190873494,"duration":2713,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":974,"name":"next-swc-loader","id":980,"timestamp":326190873478,"duration":2730,"tags":{},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":962,"name":"build-module-js","id":974,"timestamp":326190873358,"duration":3029,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/path-has-prefix.js","layer":"app-metadata-route"},"startTime":1710752025730},{"traceId":"7cd6fd9d8b50b713","parentId":991,"name":"next-swc-transform","id":992,"timestamp":326190873765,"duration":2921,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":986,"name":"next-swc-loader","id":991,"timestamp":326190873751,"duration":2938,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":963,"name":"build-module-js","id":986,"timestamp":326190873690,"duration":3236,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/add-locale.js","layer":"app-metadata-route"},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":987,"name":"next-swc-transform","id":988,"timestamp":326190873732,"duration":3208,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":984,"name":"next-swc-loader","id":987,"timestamp":326190873710,"duration":3230,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":963,"name":"build-module-js","id":984,"timestamp":326190873647,"duration":3470,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/add-path-prefix.js","layer":"app-metadata-route"},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":989,"name":"next-swc-transform","id":990,"timestamp":326190873749,"duration":3382,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":985,"name":"next-swc-loader","id":989,"timestamp":326190873734,"duration":3399,"tags":{},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":963,"name":"build-module-js","id":985,"timestamp":326190873672,"duration":3602,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/add-path-suffix.js","layer":"app-metadata-route"},"startTime":1710752025731},{"traceId":"7cd6fd9d8b50b713","parentId":994,"name":"next-swc-transform","id":995,"timestamp":326190878016,"duration":1044,"tags":{},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":993,"name":"next-swc-loader","id":994,"timestamp":326190877983,"duration":1080,"tags":{},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":974,"name":"build-module-js","id":993,"timestamp":326190877935,"duration":1404,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/shared/lib/router/utils/parse-path.js","layer":"app-metadata-route"},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":1000,"name":"next-swc-transform","id":1001,"timestamp":326190878980,"duration":5194,"tags":{},"startTime":1710752025736},{"traceId":"7cd6fd9d8b50b713","parentId":999,"name":"next-swc-loader","id":1000,"timestamp":326190878949,"duration":5234,"tags":{},"startTime":1710752025736},{"traceId":"7cd6fd9d8b50b713","parentId":957,"name":"build-module-js","id":999,"timestamp":326190878904,"duration":7488,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@edge-runtime/cookies/index.js","layer":"app-metadata-route"},"startTime":1710752025736},{"traceId":"7cd6fd9d8b50b713","parentId":997,"name":"next-swc-transform","id":998,"timestamp":326190878328,"duration":8320,"tags":{},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":996,"name":"next-swc-loader","id":997,"timestamp":326190878303,"duration":8348,"tags":{},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":938,"name":"build-module-js","id":996,"timestamp":326190878271,"duration":15365,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/ua-parser-js/ua-parser.js","layer":"app-metadata-route"},"startTime":1710752025735},{"traceId":"7cd6fd9d8b50b713","parentId":919,"name":"add-entry","id":921,"timestamp":326190793169,"duration":100517,"tags":{"request":"next-app-loader?name=app%2Ffavicon.ico%2Froute&page=%2Ffavicon.ico%2Froute&appPaths=&pagePath=private-next-app-dir%2Ffavicon.ico&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752025650},{"traceId":"7cd6fd9d8b50b713","parentId":918,"name":"build-module-css&server=true!","id":1006,"timestamp":326190896770,"duration":992,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=true!","layer":"ssr"},"startTime":1710752025754},{"traceId":"7cd6fd9d8b50b713","parentId":918,"name":"build-module-css&server=true!","id":1007,"timestamp":326190897783,"duration":125,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=true!","layer":"ssr"},"startTime":1710752025755},{"traceId":"7cd6fd9d8b50b713","parentId":918,"name":"make","id":919,"timestamp":326190791574,"duration":109590,"tags":{},"startTime":1710752025648},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"chunk-graph","id":1009,"timestamp":326190903165,"duration":1247,"tags":{},"startTime":1710752025760},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"optimize-modules","id":1011,"timestamp":326190904437,"duration":3,"tags":{},"startTime":1710752025761},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"optimize-chunks","id":1012,"timestamp":326190904453,"duration":1156,"tags":{},"startTime":1710752025761},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"optimize-tree","id":1013,"timestamp":326190905624,"duration":3,"tags":{},"startTime":1710752025763},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"optimize-chunk-modules","id":1014,"timestamp":326190905637,"duration":2,"tags":{},"startTime":1710752025763},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"optimize","id":1010,"timestamp":326190904429,"duration":2112,"tags":{},"startTime":1710752025761},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"module-hash","id":1015,"timestamp":326190909276,"duration":495,"tags":{},"startTime":1710752025766},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"code-generation","id":1016,"timestamp":326190909779,"duration":1696,"tags":{},"startTime":1710752025767},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"hash","id":1017,"timestamp":326190913349,"duration":1023,"tags":{},"startTime":1710752025770},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"code-generation-jobs","id":1018,"timestamp":326190914372,"duration":102,"tags":{},"startTime":1710752025771},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"module-assets","id":1019,"timestamp":326190914460,"duration":50,"tags":{},"startTime":1710752025771},{"traceId":"7cd6fd9d8b50b713","parentId":1008,"name":"create-chunk-assets","id":1020,"timestamp":326190914514,"duration":11349,"tags":{},"startTime":1710752025771},{"traceId":"7cd6fd9d8b50b713","parentId":918,"name":"seal","id":1008,"timestamp":326190902585,"duration":26011,"tags":{},"startTime":1710752025760},{"traceId":"7cd6fd9d8b50b713","parentId":917,"name":"webpack-compilation","id":918,"timestamp":326190791312,"duration":138473,"tags":{"name":"server"},"startTime":1710752025648},{"traceId":"7cd6fd9d8b50b713","parentId":917,"name":"emit","id":1021,"timestamp":326190929806,"duration":3489,"tags":{},"startTime":1710752025787},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-server","id":917,"timestamp":326190789010,"duration":144601,"tags":{"trigger":"manual"},"startTime":1710752025646}] +[{"traceId":"7cd6fd9d8b50b713","parentId":1023,"name":"add-entry","id":1024,"timestamp":326190937988,"duration":3246,"tags":{"request":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1710752025795},{"traceId":"7cd6fd9d8b50b713","parentId":1023,"name":"add-entry","id":1027,"timestamp":326190938049,"duration":5938,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!"},"startTime":1710752025795},{"traceId":"7cd6fd9d8b50b713","parentId":1023,"name":"add-entry","id":1026,"timestamp":326190938040,"duration":5976,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"},"startTime":1710752025795},{"traceId":"7cd6fd9d8b50b713","parentId":1023,"name":"add-entry","id":1025,"timestamp":326190938029,"duration":6083,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1710752025795},{"traceId":"7cd6fd9d8b50b713","parentId":1023,"name":"add-entry","id":1028,"timestamp":326190938063,"duration":6085,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1710752025795},{"traceId":"7cd6fd9d8b50b713","parentId":1022,"name":"make","id":1023,"timestamp":326190936405,"duration":7782,"tags":{},"startTime":1710752025793},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"chunk-graph","id":1030,"timestamp":326190945729,"duration":1066,"tags":{},"startTime":1710752025803},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"optimize-modules","id":1032,"timestamp":326190946818,"duration":3,"tags":{},"startTime":1710752025804},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"optimize-chunks","id":1033,"timestamp":326190946831,"duration":26,"tags":{},"startTime":1710752025804},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"optimize-tree","id":1034,"timestamp":326190946870,"duration":3,"tags":{},"startTime":1710752025804},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"optimize-chunk-modules","id":1035,"timestamp":326190946881,"duration":4,"tags":{},"startTime":1710752025804},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"optimize","id":1031,"timestamp":326190946810,"duration":444,"tags":{},"startTime":1710752025804},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"module-hash","id":1036,"timestamp":326190947944,"duration":214,"tags":{},"startTime":1710752025805},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"code-generation","id":1037,"timestamp":326190948170,"duration":639,"tags":{},"startTime":1710752025805},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"hash","id":1038,"timestamp":326190949760,"duration":1645,"tags":{},"startTime":1710752025807},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"code-generation-jobs","id":1039,"timestamp":326190951405,"duration":73,"tags":{},"startTime":1710752025808},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"module-assets","id":1040,"timestamp":326190951472,"duration":70,"tags":{},"startTime":1710752025809},{"traceId":"7cd6fd9d8b50b713","parentId":1029,"name":"create-chunk-assets","id":1041,"timestamp":326190951546,"duration":1071,"tags":{},"startTime":1710752025809},{"traceId":"7cd6fd9d8b50b713","parentId":1022,"name":"NextJsBuildManifest-generateClientManifest","id":1043,"timestamp":326190953312,"duration":1848,"tags":{},"startTime":1710752025810},{"traceId":"7cd6fd9d8b50b713","parentId":1022,"name":"NextJsBuildManifest-createassets","id":1042,"timestamp":326190953270,"duration":1898,"tags":{},"startTime":1710752025810},{"traceId":"7cd6fd9d8b50b713","parentId":1022,"name":"seal","id":1029,"timestamp":326190945185,"duration":10747,"tags":{},"startTime":1710752025802},{"traceId":"7cd6fd9d8b50b713","parentId":1005,"name":"webpack-compilation","id":1022,"timestamp":326190936024,"duration":19968,"tags":{"name":"client"},"startTime":1710752025793},{"traceId":"7cd6fd9d8b50b713","parentId":1005,"name":"emit","id":1044,"timestamp":326190956018,"duration":2965,"tags":{},"startTime":1710752025813},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-client","id":1005,"timestamp":326190895565,"duration":64007,"tags":{"trigger":"manual"},"startTime":1710752025753}] +[{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"client-success","id":1045,"timestamp":326191198316,"duration":0,"tags":{},"startTime":1710752026056},{"traceId":"7cd6fd9d8b50b713","parentId":1048,"name":"add-entry","id":1050,"timestamp":326193403936,"duration":43896,"tags":{"request":"next-app-loader?name=app%2Ffavicon.ico%2Froute&page=%2Ffavicon.ico%2Froute&appPaths=&pagePath=private-next-app-dir%2Ffavicon.ico&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752028265},{"traceId":"7cd6fd9d8b50b713","parentId":1048,"name":"add-entry","id":1049,"timestamp":326193403688,"duration":44443,"tags":{"request":"next-app-loader?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752028264},{"traceId":"7cd6fd9d8b50b713","parentId":1051,"name":"build-module-json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","id":1052,"timestamp":326193434756,"duration":22017,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fexps%2F%5Bid%5D%2Fpage&page=%2Fexps%2F%5Bid%5D%2Fpage&appPaths=%2Fexps%2F%5Bid%5D%2Fpage&pagePath=private-next-app-dir%2Fexps%2F%5Bid%5D%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!","layer":"rsc"},"startTime":1710752028295},{"traceId":"7cd6fd9d8b50b713","parentId":1054,"name":"next-swc-transform","id":1055,"timestamp":326193459127,"duration":1138,"tags":{},"startTime":1710752028320},{"traceId":"7cd6fd9d8b50b713","parentId":1053,"name":"next-swc-loader","id":1054,"timestamp":326193459053,"duration":1216,"tags":{},"startTime":1710752028320},{"traceId":"7cd6fd9d8b50b713","parentId":1052,"name":"build-module-js","id":1053,"timestamp":326193458985,"duration":2136,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/src/app/exps/[id]/page.js","layer":"rsc"},"startTime":1710752028320},{"traceId":"7cd6fd9d8b50b713","parentId":1048,"name":"add-entry","id":1051,"timestamp":326193403961,"duration":59334,"tags":{"request":"next-app-loader?name=app%2Fexps%2F%5Bid%5D%2Fpage&page=%2Fexps%2F%5Bid%5D%2Fpage&appPaths=%2Fexps%2F%5Bid%5D%2Fpage&pagePath=private-next-app-dir%2Fexps%2F%5Bid%5D%2Fpage.js&appDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=export&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1710752028265},{"traceId":"7cd6fd9d8b50b713","parentId":1047,"name":"build-module-css&server=true!","id":1063,"timestamp":326193464807,"duration":454,"tags":{"name":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=true!","layer":"ssr"},"startTime":1710752028326},{"traceId":"7cd6fd9d8b50b713","parentId":1047,"name":"make","id":1048,"timestamp":326193399326,"duration":68046,"tags":{},"startTime":1710752028260},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"chunk-graph","id":1065,"timestamp":326193468746,"duration":1439,"tags":{},"startTime":1710752028329},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"optimize-modules","id":1067,"timestamp":326193470208,"duration":4,"tags":{},"startTime":1710752028331},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"optimize-chunks","id":1068,"timestamp":326193470222,"duration":1034,"tags":{},"startTime":1710752028331},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"optimize-tree","id":1069,"timestamp":326193471272,"duration":4,"tags":{},"startTime":1710752028332},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"optimize-chunk-modules","id":1070,"timestamp":326193471292,"duration":3,"tags":{},"startTime":1710752028332},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"optimize","id":1066,"timestamp":326193470201,"duration":1755,"tags":{},"startTime":1710752028331},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"module-hash","id":1071,"timestamp":326193472621,"duration":250,"tags":{},"startTime":1710752028333},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"code-generation","id":1072,"timestamp":326193472878,"duration":1021,"tags":{},"startTime":1710752028334},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"hash","id":1073,"timestamp":326193474651,"duration":908,"tags":{},"startTime":1710752028335},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"code-generation-jobs","id":1074,"timestamp":326193475558,"duration":81,"tags":{},"startTime":1710752028336},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"module-assets","id":1075,"timestamp":326193475633,"duration":36,"tags":{},"startTime":1710752028336},{"traceId":"7cd6fd9d8b50b713","parentId":1064,"name":"create-chunk-assets","id":1076,"timestamp":326193475672,"duration":2313,"tags":{},"startTime":1710752028336},{"traceId":"7cd6fd9d8b50b713","parentId":1047,"name":"seal","id":1064,"timestamp":326193468181,"duration":10447,"tags":{},"startTime":1710752028329},{"traceId":"7cd6fd9d8b50b713","parentId":1046,"name":"webpack-compilation","id":1047,"timestamp":326193398314,"duration":81745,"tags":{"name":"server"},"startTime":1710752028259},{"traceId":"7cd6fd9d8b50b713","parentId":1046,"name":"emit","id":1077,"timestamp":326193480073,"duration":1612,"tags":{},"startTime":1710752028341},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-server","id":1046,"timestamp":326193392590,"duration":89386,"tags":{"trigger":"manual"},"startTime":1710752028253},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1080,"timestamp":326193486676,"duration":9436,"tags":{"request":"/Users/yiwenl/Development/Sketches/v2/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1710752028347},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1084,"timestamp":326193486745,"duration":11310,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Ffont%2Fgoogle%2Ftarget.css%3F%7B%22path%22%3A%22src%2Fapp%2Flayout.js%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fglobals.css&server=false!"},"startTime":1710752028348},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1082,"timestamp":326193486733,"duration":21499,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fstatic-generation-searchparams-bailout-provider.js&server=false!"},"startTime":1710752028348},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1083,"timestamp":326193486740,"duration":21497,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fimage-component.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fpage.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FHeader.module.css&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1710752028348},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1081,"timestamp":326193486713,"duration":22985,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1710752028347},{"traceId":"7cd6fd9d8b50b713","parentId":1079,"name":"add-entry","id":1085,"timestamp":326193486749,"duration":24345,"tags":{"request":"next-flight-client-entry-loader?modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Flink.js&modules=%2FUsers%2Fyiwenl%2FDevelopment%2FSketches%2Fv2%2Fsrc%2Fapp%2Fstyles%2FExperiments.module.css&server=false!"},"startTime":1710752028348},{"traceId":"7cd6fd9d8b50b713","parentId":1078,"name":"make","id":1079,"timestamp":326193483954,"duration":27165,"tags":{},"startTime":1710752028345},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"chunk-graph","id":1087,"timestamp":326193512829,"duration":1608,"tags":{},"startTime":1710752028374},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"optimize-modules","id":1089,"timestamp":326193514460,"duration":3,"tags":{},"startTime":1710752028375},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"optimize-chunks","id":1090,"timestamp":326193514475,"duration":24,"tags":{},"startTime":1710752028375},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"optimize-tree","id":1091,"timestamp":326193514512,"duration":5,"tags":{},"startTime":1710752028375},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"optimize-chunk-modules","id":1092,"timestamp":326193514527,"duration":3,"tags":{},"startTime":1710752028375},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"optimize","id":1088,"timestamp":326193514452,"duration":796,"tags":{},"startTime":1710752028375},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"module-hash","id":1093,"timestamp":326193516271,"duration":240,"tags":{},"startTime":1710752028377},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"code-generation","id":1094,"timestamp":326193516518,"duration":997,"tags":{},"startTime":1710752028377},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"hash","id":1095,"timestamp":326193519068,"duration":2358,"tags":{},"startTime":1710752028380},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"code-generation-jobs","id":1096,"timestamp":326193521426,"duration":139,"tags":{},"startTime":1710752028382},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"module-assets","id":1097,"timestamp":326193521493,"duration":138,"tags":{},"startTime":1710752028382},{"traceId":"7cd6fd9d8b50b713","parentId":1086,"name":"create-chunk-assets","id":1098,"timestamp":326193521635,"duration":14012,"tags":{},"startTime":1710752028382},{"traceId":"7cd6fd9d8b50b713","parentId":1078,"name":"NextJsBuildManifest-generateClientManifest","id":1100,"timestamp":326193536440,"duration":80,"tags":{},"startTime":1710752028397},{"traceId":"7cd6fd9d8b50b713","parentId":1078,"name":"NextJsBuildManifest-createassets","id":1099,"timestamp":326193536400,"duration":125,"tags":{},"startTime":1710752028397},{"traceId":"7cd6fd9d8b50b713","parentId":1078,"name":"seal","id":1086,"timestamp":326193512121,"duration":25538,"tags":{},"startTime":1710752028373},{"traceId":"7cd6fd9d8b50b713","parentId":1062,"name":"webpack-compilation","id":1078,"timestamp":326193483744,"duration":53937,"tags":{"name":"client"},"startTime":1710752028345},{"traceId":"7cd6fd9d8b50b713","parentId":1062,"name":"emit","id":1101,"timestamp":326193537697,"duration":2900,"tags":{},"startTime":1710752028399},{"traceId":"7cd6fd9d8b50b713","parentId":1,"name":"webpack-invalidated-client","id":1062,"timestamp":326193464277,"duration":77424,"tags":{"trigger":"manual"},"startTime":1710752028325}] diff --git a/v2/out/404.html b/v2/out/404.html index 048130db..759cac6f 100644 --- a/v2/out/404.html +++ b/v2/out/404.html @@ -1 +1 @@ -404: This page could not be found.Create Next App

404

This page could not be found.

\ No newline at end of file +404: This page could not be found.Create Next App

404

This page could not be found.

\ No newline at end of file diff --git a/v2/out/_next/static/chunks/app/page-a5208d7d8d3321bf.js b/v2/out/_next/static/chunks/app/page-4a666375abe83fa7.js similarity index 65% rename from v2/out/_next/static/chunks/app/page-a5208d7d8d3321bf.js rename to v2/out/_next/static/chunks/app/page-4a666375abe83fa7.js index b329aa9c..d443474e 100644 --- a/v2/out/_next/static/chunks/app/page-a5208d7d8d3321bf.js +++ b/v2/out/_next/static/chunks/app/page-4a666375abe83fa7.js @@ -1 +1 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{4482:function(e,n,t){Promise.resolve().then(t.t.bind(t,6964,23)),Promise.resolve().then(t.t.bind(t,4724,23)),Promise.resolve().then(t.t.bind(t,4557,23)),Promise.resolve().then(t.t.bind(t,9671,23)),Promise.resolve().then(t.t.bind(t,6466,23))},9671:function(e){e.exports={container:"page_container__aoG4z"}},4557:function(e){e.exports={listContainer:"Experiments_listContainer__ggDdv",itemContainer:"Experiments_itemContainer__Pl143",imageWrapper:"Experiments_imageWrapper__SHDbU",experimentContainer:"Experiments_experimentContainer__Cy57P",closeButton:"Experiments_closeButton__t_4Ah",videoContainer:"Experiments_videoContainer__EuAMk",show:"Experiments_show___22MS"}},6466:function(e){e.exports={aboutIcon:"Header_aboutIcon__Ti6_n"}}},function(e){e.O(0,[724,964,971,864,744],function(){return e(e.s=4482)}),_N_E=e.O()}]); \ No newline at end of file +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{6410:function(e,n,t){Promise.resolve().then(t.t.bind(t,6964,23)),Promise.resolve().then(t.t.bind(t,4724,23)),Promise.resolve().then(t.t.bind(t,6466,23)),Promise.resolve().then(t.t.bind(t,4557,23)),Promise.resolve().then(t.t.bind(t,9671,23))},9671:function(e){e.exports={container:"page_container__aoG4z"}},4557:function(e){e.exports={listContainer:"Experiments_listContainer__ggDdv",itemContainer:"Experiments_itemContainer__Pl143",imageWrapper:"Experiments_imageWrapper__SHDbU",experimentContainer:"Experiments_experimentContainer__Cy57P",closeButton:"Experiments_closeButton__t_4Ah",videoContainer:"Experiments_videoContainer__EuAMk",show:"Experiments_show___22MS"}},6466:function(e){e.exports={aboutIcon:"Header_aboutIcon__Ti6_n"}}},function(e){e.O(0,[724,964,971,864,744],function(){return e(e.s=6410)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/v2/out/_next/static/chunks/webpack-046d65963a7db67b.js b/v2/out/_next/static/chunks/webpack-046d65963a7db67b.js new file mode 100644 index 00000000..7da0e261 --- /dev/null +++ b/v2/out/_next/static/chunks/webpack-046d65963a7db67b.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,r,n,o,u,i,c,f,a={},d={};function l(e){var t=d[e];if(void 0!==t)return t.exports;var r=d[e]={exports:{}},n=!0;try{a[e](r,r.exports,l),n=!1}finally{n&&delete d[e]}return r.exports}l.m=a,e=[],l.O=function(t,r,n,o){if(r){o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u=o&&Object.keys(l.O).every(function(e){return l.O[e](r[f])})?r.splice(f--,1):(c=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o];return}for(var i=1/0,u=0;u=o&&Object.keys(d.O).every(function(e){return d.O[e](r[f])})?r.splice(f--,1):(c=!1,oSketches | Yi-Wen Lin

A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas.


Source code could be found here :


Built with my WebGL Tools :


\ No newline at end of file +Sketches | Yi-Wen Lin

A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas.


Source code could be found here :


Built with my WebGL Tools :


\ No newline at end of file diff --git a/v2/out/about.txt b/v2/out/about.txt index 64614e4f..869750e7 100644 --- a/v2/out/about.txt +++ b/v2/out/about.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["about",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/5c1e33a82820daa7.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","301:static/chunks/app/about/page-3e269e269dbe8b08.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","about","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"About_closeButton__2cb0K","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","div",null,{"className":"About_descContainer__Op5uD","children":[["$","p",null,{"className":"About-Desc","children":"A place for my sketches, most of them are not optimised so it take a bit of time to load, please be patient. And apologies for some of the sketches might not work across different devices and platforms. This is more a playground for me to tryout ideas."}],["$","p",null,{"children":["$","br",null,{}]}],["$","p",null,{"className":"About_linkTitle__XgjCK","children":"Source code could be found here :"}],["$","a",null,{"href":"https://github.com/yiwenl/Sketches","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"https://github.com/yiwenl/Sketches"}]}],["$","p",null,{"children":["$","br",null,{}]}],["$","p",null,{"className":"About_linkTitle__XgjCK","children":"Built with my WebGL Tools : "}],["$","a",null,{"href":"https://github.com/yiwenl/Alfrid","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"https://github.com/yiwenl/Alfrid"}]}],["$","p",null,{"children":["$","br",null,{}]}],["$","a",null,{"href":"https://wensday.co/","target":"_blank","className":"About_link__oTWhj","children":["$","p",null,{"className":"About_link__oTWhj","children":"wensday.co"}]}],["$","a",null,{"href":"https://twitter.com/yiwen_lin","target":"_blank","children":["$","p",null,{"className":"About_link__oTWhj","children":"@yiwen_lin"}]}]]}]]}],null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/5c1e33a82820daa7.css","precedence":"next"}]]}],"segment":"about"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Yi-Wen Lin"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"http://yiwenl.github.io/Sketches/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/assets/img/coverSketchribbon.jpg b/v2/out/assets/img/coverSketchribbon.jpg new file mode 100644 index 00000000..05fe88ed Binary files /dev/null and b/v2/out/assets/img/coverSketchribbon.jpg differ diff --git a/v2/out/exps/0.html b/v2/out/exps/0.html index 0fc98a20..3d359ecb 100644 --- a/v2/out/exps/0.html +++ b/v2/out/exps/0.html @@ -1 +1 @@ -Sketches | Particles
\ No newline at end of file +Sketches | Particles
\ No newline at end of file diff --git a/v2/out/exps/0.txt b/v2/out/exps/0.txt index ee4d42a0..4b0a8871 100644 --- a/v2/out/exps/0.txt +++ b/v2/out/exps/0.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","0","d"],{"children":["__PAGE__?{\"id\":\"0\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","0","d"],{"children":["__PAGE__?{\"id\":\"0\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","0","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"0\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","0","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/selfshadingParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/1.html b/v2/out/exps/1.html index 4bd5a31a..87f9c676 100644 --- a/v2/out/exps/1.html +++ b/v2/out/exps/1.html @@ -1 +1 @@ -Sketches | Reflections
\ No newline at end of file +Sketches | Reflections
\ No newline at end of file diff --git a/v2/out/exps/1.txt b/v2/out/exps/1.txt index 3a8fc3a3..bcfefabb 100644 --- a/v2/out/exps/1.txt +++ b/v2/out/exps/1.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","1","d"],{"children":["__PAGE__?{\"id\":\"1\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","1","d"],{"children":["__PAGE__?{\"id\":\"1\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","1","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"1\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","1","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Reflections"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Reflections"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/reflectiveSoundVis/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverReflection.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Reflections"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverReflection.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/10.html b/v2/out/exps/10.html index 03c2047b..48c9683b 100644 --- a/v2/out/exps/10.html +++ b/v2/out/exps/10.html @@ -1 +1 @@ -Sketches | Le Bel Costume
\ No newline at end of file +Sketches | Le Bel Costume
\ No newline at end of file diff --git a/v2/out/exps/10.txt b/v2/out/exps/10.txt index 5842f768..2b3e844b 100644 --- a/v2/out/exps/10.txt +++ b/v2/out/exps/10.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","10","d"],{"children":["__PAGE__?{\"id\":\"10\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","10","d"],{"children":["__PAGE__?{\"id\":\"10\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","10","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wrap/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"10\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","10","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Le Bel Costume"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Le Bel Costume"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wrap/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/costume.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Le Bel Costume"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/costume.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/11.html b/v2/out/exps/11.html index a4b38cf0..62420c4a 100644 --- a/v2/out/exps/11.html +++ b/v2/out/exps/11.html @@ -1 +1 @@ -Sketches | Four seasons
\ No newline at end of file +Sketches | Four seasons
\ No newline at end of file diff --git a/v2/out/exps/11.txt b/v2/out/exps/11.txt index e61714a5..98d2c74a 100644 --- a/v2/out/exps/11.txt +++ b/v2/out/exps/11.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","11","d"],{"children":["__PAGE__?{\"id\":\"11\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","11","d"],{"children":["__PAGE__?{\"id\":\"11\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","11","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blossom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"11\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","11","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Four seasons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Four seasons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blossom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/seasons.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Four seasons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/seasons.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/12.html b/v2/out/exps/12.html index 4b11e238..f97d6852 100644 --- a/v2/out/exps/12.html +++ b/v2/out/exps/12.html @@ -1 +1 @@ -Sketches | River
\ No newline at end of file +Sketches | River
\ No newline at end of file diff --git a/v2/out/exps/12.txt b/v2/out/exps/12.txt index 3d21b18b..a3abf53e 100644 --- a/v2/out/exps/12.txt +++ b/v2/out/exps/12.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","12","d"],{"children":["__PAGE__?{\"id\":\"12\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","12","d"],{"children":["__PAGE__?{\"id\":\"12\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","12","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/River/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"12\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","12","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | River"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | River"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/River/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/river.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | River"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/river.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/13.html b/v2/out/exps/13.html index 588c7b6e..5f0fbccb 100644 --- a/v2/out/exps/13.html +++ b/v2/out/exps/13.html @@ -1 +1 @@ -Sketches | Crystallize
\ No newline at end of file +Sketches | Crystallize
\ No newline at end of file diff --git a/v2/out/exps/13.txt b/v2/out/exps/13.txt index b6cd0aca..88e7fa0c 100644 --- a/v2/out/exps/13.txt +++ b/v2/out/exps/13.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","13","d"],{"children":["__PAGE__?{\"id\":\"13\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","13","d"],{"children":["__PAGE__?{\"id\":\"13\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","13","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/nike/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"13\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","13","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Crystallize"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Crystallize"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/nike/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCrystal.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Crystallize"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCrystal.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/14.html b/v2/out/exps/14.html index ac42cb1e..de1bf57b 100644 --- a/v2/out/exps/14.html +++ b/v2/out/exps/14.html @@ -1 +1 @@ -Sketches | Particle Valley
\ No newline at end of file +Sketches | Particle Valley
\ No newline at end of file diff --git a/v2/out/exps/14.txt b/v2/out/exps/14.txt index d45dbdda..75dbbed0 100644 --- a/v2/out/exps/14.txt +++ b/v2/out/exps/14.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","14","d"],{"children":["__PAGE__?{\"id\":\"14\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","14","d"],{"children":["__PAGE__?{\"id\":\"14\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","14","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"14\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","14","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Particle Valley"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Particle Valley"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/particlesValley/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchParticleValley.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Particle Valley"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchParticleValley.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/15.html b/v2/out/exps/15.html index bc9bdb9f..62eb6f73 100644 --- a/v2/out/exps/15.html +++ b/v2/out/exps/15.html @@ -1 +1 @@ -Sketches | Bubbles
\ No newline at end of file +Sketches | Bubbles
\ No newline at end of file diff --git a/v2/out/exps/15.txt b/v2/out/exps/15.txt index bffd0750..aa9f665f 100644 --- a/v2/out/exps/15.txt +++ b/v2/out/exps/15.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","15","d"],{"children":["__PAGE__?{\"id\":\"15\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","15","d"],{"children":["__PAGE__?{\"id\":\"15\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","15","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/particles03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"15\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","15","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Bubbles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Bubbles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/particles03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBubbles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Bubbles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBubbles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/16.html b/v2/out/exps/16.html index afda69d3..0bae515b 100644 --- a/v2/out/exps/16.html +++ b/v2/out/exps/16.html @@ -1 +1 @@ -Sketches | Turbulence
\ No newline at end of file +Sketches | Turbulence
\ No newline at end of file diff --git a/v2/out/exps/16.txt b/v2/out/exps/16.txt index 13293c3d..c1582fcb 100644 --- a/v2/out/exps/16.txt +++ b/v2/out/exps/16.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","16","d"],{"children":["__PAGE__?{\"id\":\"16\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","16","d"],{"children":["__PAGE__?{\"id\":\"16\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","16","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"16\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","16","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Turbulence"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Turbulence"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/turbulence/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTurbulence.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Turbulence"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTurbulence.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/17.html b/v2/out/exps/17.html index 8ccd8635..a5cc226d 100644 --- a/v2/out/exps/17.html +++ b/v2/out/exps/17.html @@ -1 +1 @@ -Sketches | Black and Gold
\ No newline at end of file +Sketches | Black and Gold
\ No newline at end of file diff --git a/v2/out/exps/17.txt b/v2/out/exps/17.txt index ae4f2763..27f4c4ff 100644 --- a/v2/out/exps/17.txt +++ b/v2/out/exps/17.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","17","d"],{"children":["__PAGE__?{\"id\":\"17\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","17","d"],{"children":["__PAGE__?{\"id\":\"17\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","17","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"17\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","17","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black and Gold"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black and Gold"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackGold/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackGold.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black and Gold"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackGold.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/18.html b/v2/out/exps/18.html index 0aa2dc50..49956769 100644 --- a/v2/out/exps/18.html +++ b/v2/out/exps/18.html @@ -1 +1 @@ -Sketches | Black and Gold
\ No newline at end of file +Sketches | Black and Gold
\ No newline at end of file diff --git a/v2/out/exps/18.txt b/v2/out/exps/18.txt index 0debef41..390c4529 100644 --- a/v2/out/exps/18.txt +++ b/v2/out/exps/18.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","18","d"],{"children":["__PAGE__?{\"id\":\"18\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","18","d"],{"children":["__PAGE__?{\"id\":\"18\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","18","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"18\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","18","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black and Gold"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black and Gold"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/grassInstanced2/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGrass.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black and Gold"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGrass.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/19.html b/v2/out/exps/19.html index 0672f584..fe0a3d8b 100644 --- a/v2/out/exps/19.html +++ b/v2/out/exps/19.html @@ -1 +1 @@ -Sketches | Wolf
\ No newline at end of file +Sketches | Wolf
\ No newline at end of file diff --git a/v2/out/exps/19.txt b/v2/out/exps/19.txt index 02cb2193..f4d4d492 100644 --- a/v2/out/exps/19.txt +++ b/v2/out/exps/19.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","19","d"],{"children":["__PAGE__?{\"id\":\"19\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","19","d"],{"children":["__PAGE__?{\"id\":\"19\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","19","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"19\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","19","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Wolf"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Wolf"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wolf2/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWolf.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Wolf"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWolf.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/2.html b/v2/out/exps/2.html index cbd8e94b..4f17cefe 100644 --- a/v2/out/exps/2.html +++ b/v2/out/exps/2.html @@ -1 +1 @@ -Sketches | Nefertiti
\ No newline at end of file +Sketches | Nefertiti
\ No newline at end of file diff --git a/v2/out/exps/2.txt b/v2/out/exps/2.txt index 84e1f476..9e8b85a6 100644 --- a/v2/out/exps/2.txt +++ b/v2/out/exps/2.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","2","d"],{"children":["__PAGE__?{\"id\":\"2\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","2","d"],{"children":["__PAGE__?{\"id\":\"2\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","2","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"2\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","2","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Nefertiti"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Nefertiti"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Nefertiti1/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverNefertiti.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Nefertiti"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverNefertiti.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/20.html b/v2/out/exps/20.html index 71c587e3..29c643e2 100644 --- a/v2/out/exps/20.html +++ b/v2/out/exps/20.html @@ -1 +1 @@ -Sketches | Painting Landscape
\ No newline at end of file +Sketches | Painting Landscape
\ No newline at end of file diff --git a/v2/out/exps/20.txt b/v2/out/exps/20.txt index c2590cf4..9b058ded 100644 --- a/v2/out/exps/20.txt +++ b/v2/out/exps/20.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","20","d"],{"children":["__PAGE__?{\"id\":\"20\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","20","d"],{"children":["__PAGE__?{\"id\":\"20\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","20","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"20\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","20","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Landscape"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Landscape"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/drawingLandscape/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPainting.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Landscape"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPainting.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/21.html b/v2/out/exps/21.html index 86208d8c..c4a85ca5 100644 --- a/v2/out/exps/21.html +++ b/v2/out/exps/21.html @@ -1 +1 @@ -Sketches | Painting Particles
\ No newline at end of file +Sketches | Painting Particles
\ No newline at end of file diff --git a/v2/out/exps/21.txt b/v2/out/exps/21.txt index 67753571..b38286a5 100644 --- a/v2/out/exps/21.txt +++ b/v2/out/exps/21.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","21","d"],{"children":["__PAGE__?{\"id\":\"21\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","21","d"],{"children":["__PAGE__?{\"id\":\"21\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","21","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"21\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","21","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/strokeToParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPaintingParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPaintingParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/22.html b/v2/out/exps/22.html index 651cdce1..e324427d 100644 --- a/v2/out/exps/22.html +++ b/v2/out/exps/22.html @@ -1 +1 @@ -Sketches | Painting Particles
\ No newline at end of file +Sketches | Painting Particles
\ No newline at end of file diff --git a/v2/out/exps/22.txt b/v2/out/exps/22.txt index f0a358bc..fbe36ed4 100644 --- a/v2/out/exps/22.txt +++ b/v2/out/exps/22.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","22","d"],{"children":["__PAGE__?{\"id\":\"22\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","22","d"],{"children":["__PAGE__?{\"id\":\"22\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","22","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"22\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","22","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/neonDemon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNeonDemon.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNeonDemon.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/23.html b/v2/out/exps/23.html index ef110d19..ac026151 100644 --- a/v2/out/exps/23.html +++ b/v2/out/exps/23.html @@ -1 +1 @@ -Sketches | Swirling Particles
\ No newline at end of file +Sketches | Swirling Particles
\ No newline at end of file diff --git a/v2/out/exps/23.txt b/v2/out/exps/23.txt index 59b89c30..bcd08ae5 100644 --- a/v2/out/exps/23.txt +++ b/v2/out/exps/23.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","23","d"],{"children":["__PAGE__?{\"id\":\"23\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","23","d"],{"children":["__PAGE__?{\"id\":\"23\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","23","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/swirling/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"23\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","23","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirling Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirling Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/swirling/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirling Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/24.html b/v2/out/exps/24.html index cd50ebbe..2caa429c 100644 --- a/v2/out/exps/24.html +++ b/v2/out/exps/24.html @@ -1 +1 @@ -Sketches | Black Rain
\ No newline at end of file +Sketches | Black Rain
\ No newline at end of file diff --git a/v2/out/exps/24.txt b/v2/out/exps/24.txt index 0025aa62..8f23a5b6 100644 --- a/v2/out/exps/24.txt +++ b/v2/out/exps/24.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","24","d"],{"children":["__PAGE__?{\"id\":\"24\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","24","d"],{"children":["__PAGE__?{\"id\":\"24\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","24","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"24\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","24","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black Rain"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black Rain"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackRain/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackRain.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black Rain"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackRain.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/25.html b/v2/out/exps/25.html index d52eeba5..44e87ffd 100644 --- a/v2/out/exps/25.html +++ b/v2/out/exps/25.html @@ -1 +1 @@ -Sketches | Splashes
\ No newline at end of file +Sketches | Splashes
\ No newline at end of file diff --git a/v2/out/exps/25.txt b/v2/out/exps/25.txt index d1efe60d..5f62c751 100644 --- a/v2/out/exps/25.txt +++ b/v2/out/exps/25.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","25","d"],{"children":["__PAGE__?{\"id\":\"25\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","25","d"],{"children":["__PAGE__?{\"id\":\"25\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","25","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/splashes/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"25\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","25","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Splashes"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Splashes"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/splashes/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSplashes.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Splashes"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSplashes.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/26.html b/v2/out/exps/26.html index 57be7f2d..f17d077a 100644 --- a/v2/out/exps/26.html +++ b/v2/out/exps/26.html @@ -1 +1 @@ -Sketches | Comic style
\ No newline at end of file +Sketches | Comic style
\ No newline at end of file diff --git a/v2/out/exps/26.txt b/v2/out/exps/26.txt index c6efd1d1..18b02502 100644 --- a/v2/out/exps/26.txt +++ b/v2/out/exps/26.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","26","d"],{"children":["__PAGE__?{\"id\":\"26\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","26","d"],{"children":["__PAGE__?{\"id\":\"26\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","26","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/comic/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"26\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","26","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Comic style"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Comic style"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/comic/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchComic.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Comic style"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchComic.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/27.html b/v2/out/exps/27.html index f9bb9a3b..bb45efc4 100644 --- a/v2/out/exps/27.html +++ b/v2/out/exps/27.html @@ -1 +1 @@ -Sketches | Island
\ No newline at end of file +Sketches | Island
\ No newline at end of file diff --git a/v2/out/exps/27.txt b/v2/out/exps/27.txt index 49b02840..1f76c0d6 100644 --- a/v2/out/exps/27.txt +++ b/v2/out/exps/27.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","27","d"],{"children":["__PAGE__?{\"id\":\"27\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","27","d"],{"children":["__PAGE__?{\"id\":\"27\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","27","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/island/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"27\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","27","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Island"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Island"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/island/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchIsland.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Island"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchIsland.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/28.html b/v2/out/exps/28.html index 77638e51..276c9910 100644 --- a/v2/out/exps/28.html +++ b/v2/out/exps/28.html @@ -1 +1 @@ -Sketches | Hannya
\ No newline at end of file +Sketches | Hannya
\ No newline at end of file diff --git a/v2/out/exps/28.txt b/v2/out/exps/28.txt index 7234a77f..2e52199c 100644 --- a/v2/out/exps/28.txt +++ b/v2/out/exps/28.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","28","d"],{"children":["__PAGE__?{\"id\":\"28\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","28","d"],{"children":["__PAGE__?{\"id\":\"28\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","28","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"28\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","28","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Hannya"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Hannya"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Hannya/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHannya.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Hannya"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHannya.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/29.html b/v2/out/exps/29.html index 95c796ad..fee7d62e 100644 --- a/v2/out/exps/29.html +++ b/v2/out/exps/29.html @@ -1 +1 @@ -Sketches | Painting Glass
\ No newline at end of file +Sketches | Painting Glass
\ No newline at end of file diff --git a/v2/out/exps/29.txt b/v2/out/exps/29.txt index a765c77b..015128f6 100644 --- a/v2/out/exps/29.txt +++ b/v2/out/exps/29.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","29","d"],{"children":["__PAGE__?{\"id\":\"29\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","29","d"],{"children":["__PAGE__?{\"id\":\"29\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","29","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/neon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"29\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","29","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Painting Glass"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Painting Glass"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/neon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGlass.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Painting Glass"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGlass.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/3.html b/v2/out/exps/3.html index 237ae52a..2d648448 100644 --- a/v2/out/exps/3.html +++ b/v2/out/exps/3.html @@ -1 +1 @@ -Sketches | Flocking
\ No newline at end of file +Sketches | Flocking
\ No newline at end of file diff --git a/v2/out/exps/3.txt b/v2/out/exps/3.txt index 9d68064c..ce712873 100644 --- a/v2/out/exps/3.txt +++ b/v2/out/exps/3.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","3","d"],{"children":["__PAGE__?{\"id\":\"3\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","3","d"],{"children":["__PAGE__?{\"id\":\"3\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","3","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"3\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","3","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flocking"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flocking"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flockingBW/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverFlocking.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flocking"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverFlocking.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/30.html b/v2/out/exps/30.html index 4a0d987c..61cef9fb 100644 --- a/v2/out/exps/30.html +++ b/v2/out/exps/30.html @@ -1 +1 @@ -Sketches | Maelstrom
\ No newline at end of file +Sketches | Maelstrom
\ No newline at end of file diff --git a/v2/out/exps/30.txt b/v2/out/exps/30.txt index af97affa..5657d360 100644 --- a/v2/out/exps/30.txt +++ b/v2/out/exps/30.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","30","d"],{"children":["__PAGE__?{\"id\":\"30\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","30","d"],{"children":["__PAGE__?{\"id\":\"30\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","30","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"30\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","30","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maelstrom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maelstrom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/maelstrom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPlates.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maelstrom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPlates.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/31.html b/v2/out/exps/31.html index 257ad116..012608e4 100644 --- a/v2/out/exps/31.html +++ b/v2/out/exps/31.html @@ -1 +1 @@ -Sketches | Maelstrom
\ No newline at end of file +Sketches | Maelstrom
\ No newline at end of file diff --git a/v2/out/exps/31.txt b/v2/out/exps/31.txt index fd1f0050..f37a13d7 100644 --- a/v2/out/exps/31.txt +++ b/v2/out/exps/31.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","31","d"],{"children":["__PAGE__?{\"id\":\"31\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","31","d"],{"children":["__PAGE__?{\"id\":\"31\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","31","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"31\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","31","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maelstrom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maelstrom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackHole/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaelstrom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maelstrom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaelstrom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/32.html b/v2/out/exps/32.html index acccfc56..7bda0a47 100644 --- a/v2/out/exps/32.html +++ b/v2/out/exps/32.html @@ -1 +1 @@ -Sketches | Pulse
\ No newline at end of file +Sketches | Pulse
\ No newline at end of file diff --git a/v2/out/exps/32.txt b/v2/out/exps/32.txt index 75bb48c0..d894e33a 100644 --- a/v2/out/exps/32.txt +++ b/v2/out/exps/32.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","32","d"],{"children":["__PAGE__?{\"id\":\"32\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","32","d"],{"children":["__PAGE__?{\"id\":\"32\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","32","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"32\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","32","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Pulse"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Pulse"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/pulseParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPulse.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Pulse"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPulse.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/33.html b/v2/out/exps/33.html index 807fa58b..e2c99648 100644 --- a/v2/out/exps/33.html +++ b/v2/out/exps/33.html @@ -1 +1 @@ -Sketches | Patterns
\ No newline at end of file +Sketches | Patterns
\ No newline at end of file diff --git a/v2/out/exps/33.txt b/v2/out/exps/33.txt index 6af08106..5f6f1247 100644 --- a/v2/out/exps/33.txt +++ b/v2/out/exps/33.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","33","d"],{"children":["__PAGE__?{\"id\":\"33\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","33","d"],{"children":["__PAGE__?{\"id\":\"33\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","33","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"33\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","33","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Patterns"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Patterns"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/patternCubes/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPattern.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Patterns"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchPattern.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/34.html b/v2/out/exps/34.html index 666b8621..cc5f9bcf 100644 --- a/v2/out/exps/34.html +++ b/v2/out/exps/34.html @@ -1 +1 @@ -Sketches | Disappearing Geometries
\ No newline at end of file +Sketches | Disappearing Geometries
\ No newline at end of file diff --git a/v2/out/exps/34.txt b/v2/out/exps/34.txt index a0b9539d..852d9986 100644 --- a/v2/out/exps/34.txt +++ b/v2/out/exps/34.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","34","d"],{"children":["__PAGE__?{\"id\":\"34\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","34","d"],{"children":["__PAGE__?{\"id\":\"34\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","34","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"34\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","34","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Disappearing Geometries"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Disappearing Geometries"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/4dCube/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGeometries.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Disappearing Geometries"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchGeometries.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/35.html b/v2/out/exps/35.html index 11ed8722..cf2ab4fe 100644 --- a/v2/out/exps/35.html +++ b/v2/out/exps/35.html @@ -1 +1 @@ -Sketches | Maurice the Sea Cat
\ No newline at end of file +Sketches | Maurice the Sea Cat
\ No newline at end of file diff --git a/v2/out/exps/35.txt b/v2/out/exps/35.txt index 8f25e8c2..e61cb966 100644 --- a/v2/out/exps/35.txt +++ b/v2/out/exps/35.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","35","d"],{"children":["__PAGE__?{\"id\":\"35\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","35","d"],{"children":["__PAGE__?{\"id\":\"35\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","35","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/maurice/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"35\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","35","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Maurice the Sea Cat"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Maurice the Sea Cat"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/maurice/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaurice.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Maurice the Sea Cat"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMaurice.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/36.html b/v2/out/exps/36.html index bde32cdd..32fe3170 100644 --- a/v2/out/exps/36.html +++ b/v2/out/exps/36.html @@ -1 +1 @@ -Sketches | Codevember 2017
\ No newline at end of file +Sketches | Codevember 2017
\ No newline at end of file diff --git a/v2/out/exps/36.txt b/v2/out/exps/36.txt index b0fc05ef..4179478a 100644 --- a/v2/out/exps/36.txt +++ b/v2/out/exps/36.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","36","d"],{"children":["__PAGE__?{\"id\":\"36\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","36","d"],{"children":["__PAGE__?{\"id\":\"36\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","36","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"http://yiwenl.github.io/Codevember/2017/","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"36\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","36","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Codevember 2017"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Codevember 2017"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://http//yiwenl.github.io/Codevember/2017/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverCodevember.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Codevember 2017"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverCodevember.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/37.html b/v2/out/exps/37.html index e0d1add8..1108e0b5 100644 --- a/v2/out/exps/37.html +++ b/v2/out/exps/37.html @@ -1 +1 @@ -Sketches | Dissolve
\ No newline at end of file +Sketches | Dissolve
\ No newline at end of file diff --git a/v2/out/exps/37.txt b/v2/out/exps/37.txt index a6e02261..06e634e1 100644 --- a/v2/out/exps/37.txt +++ b/v2/out/exps/37.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","37","d"],{"children":["__PAGE__?{\"id\":\"37\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","37","d"],{"children":["__PAGE__?{\"id\":\"37\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","37","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"37\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","37","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Dissolve"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Dissolve"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/dissolve/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDissolve.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Dissolve"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDissolve.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/38.html b/v2/out/exps/38.html index cd83ff3d..2494c4de 100644 --- a/v2/out/exps/38.html +++ b/v2/out/exps/38.html @@ -1 +1 @@ -Sketches | Substrate sphere
\ No newline at end of file +Sketches | Substrate sphere
\ No newline at end of file diff --git a/v2/out/exps/38.txt b/v2/out/exps/38.txt index 9ea974b2..f96b2969 100644 --- a/v2/out/exps/38.txt +++ b/v2/out/exps/38.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","38","d"],{"children":["__PAGE__?{\"id\":\"38\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","38","d"],{"children":["__PAGE__?{\"id\":\"38\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","38","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"38\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","38","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Substrate sphere"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Substrate sphere"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/substrateSphere/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSubstrate.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Substrate sphere"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSubstrate.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/39.html b/v2/out/exps/39.html index a885920c..30bf4e3f 100644 --- a/v2/out/exps/39.html +++ b/v2/out/exps/39.html @@ -1 +1 @@ -Sketches | Liquid
\ No newline at end of file +Sketches | Liquid
\ No newline at end of file diff --git a/v2/out/exps/39.txt b/v2/out/exps/39.txt index faa474e0..9e698c66 100644 --- a/v2/out/exps/39.txt +++ b/v2/out/exps/39.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","39","d"],{"children":["__PAGE__?{\"id\":\"39\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","39","d"],{"children":["__PAGE__?{\"id\":\"39\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","39","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"39\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","39","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/4.html b/v2/out/exps/4.html index 6571a3a6..b536071a 100644 --- a/v2/out/exps/4.html +++ b/v2/out/exps/4.html @@ -1 +1 @@ -Sketches | Rosetta
\ No newline at end of file +Sketches | Rosetta
\ No newline at end of file diff --git a/v2/out/exps/4.txt b/v2/out/exps/4.txt index c2a4f881..2ded67ff 100644 --- a/v2/out/exps/4.txt +++ b/v2/out/exps/4.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","4","d"],{"children":["__PAGE__?{\"id\":\"4\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","4","d"],{"children":["__PAGE__?{\"id\":\"4\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","4","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"4\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","4","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Rosetta"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Rosetta"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/rosetta/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverRosetta.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Rosetta"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/sketchCoverRosetta.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/40.html b/v2/out/exps/40.html index 38457241..5df0ee2f 100644 --- a/v2/out/exps/40.html +++ b/v2/out/exps/40.html @@ -1 +1 @@ -Sketches | Liquid 02
\ No newline at end of file +Sketches | Liquid 02
\ No newline at end of file diff --git a/v2/out/exps/40.txt b/v2/out/exps/40.txt index 34cc3948..e1cb8378 100644 --- a/v2/out/exps/40.txt +++ b/v2/out/exps/40.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","40","d"],{"children":["__PAGE__?{\"id\":\"40\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","40","d"],{"children":["__PAGE__?{\"id\":\"40\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","40","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"40\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","40","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 02"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 02"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid02.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 02"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid02.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/41.html b/v2/out/exps/41.html index 57b32707..7034aff7 100644 --- a/v2/out/exps/41.html +++ b/v2/out/exps/41.html @@ -1 +1 @@ -Sketches | Liquid 03
\ No newline at end of file +Sketches | Liquid 03
\ No newline at end of file diff --git a/v2/out/exps/41.txt b/v2/out/exps/41.txt index 45beea82..69e53479 100644 --- a/v2/out/exps/41.txt +++ b/v2/out/exps/41.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","41","d"],{"children":["__PAGE__?{\"id\":\"41\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","41","d"],{"children":["__PAGE__?{\"id\":\"41\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","41","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"41\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","41","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 03"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 03"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid03.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 03"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid03.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/42.html b/v2/out/exps/42.html index 69199a58..1b7d0af5 100644 --- a/v2/out/exps/42.html +++ b/v2/out/exps/42.html @@ -1 +1 @@ -Sketches | Liquid 04
\ No newline at end of file +Sketches | Liquid 04
\ No newline at end of file diff --git a/v2/out/exps/42.txt b/v2/out/exps/42.txt index 5ab97a1d..27c573e1 100644 --- a/v2/out/exps/42.txt +++ b/v2/out/exps/42.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","42","d"],{"children":["__PAGE__?{\"id\":\"42\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","42","d"],{"children":["__PAGE__?{\"id\":\"42\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","42","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"42\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","42","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Liquid 04"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Liquid 04"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid04/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid04.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Liquid 04"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid04.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/43.html b/v2/out/exps/43.html index b109da9c..4ba81624 100644 --- a/v2/out/exps/43.html +++ b/v2/out/exps/43.html @@ -1 +1 @@ -Sketches | Strange Bubbles
\ No newline at end of file +Sketches | Strange Bubbles
\ No newline at end of file diff --git a/v2/out/exps/43.txt b/v2/out/exps/43.txt index 55d2ea59..25605e54 100644 --- a/v2/out/exps/43.txt +++ b/v2/out/exps/43.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","43","d"],{"children":["__PAGE__?{\"id\":\"43\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","43","d"],{"children":["__PAGE__?{\"id\":\"43\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","43","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"43\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","43","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Strange Bubbles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Strange Bubbles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/strangeBubbles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchStrangeBubbles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Strange Bubbles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchStrangeBubbles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/44.html b/v2/out/exps/44.html index 5aa1d5b1..65396819 100644 --- a/v2/out/exps/44.html +++ b/v2/out/exps/44.html @@ -1 +1 @@ -Sketches | untitled
\ No newline at end of file +Sketches | untitled
\ No newline at end of file diff --git a/v2/out/exps/44.txt b/v2/out/exps/44.txt index 8915e5cc..001e6165 100644 --- a/v2/out/exps/44.txt +++ b/v2/out/exps/44.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","44","d"],{"children":["__PAGE__?{\"id\":\"44\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","44","d"],{"children":["__PAGE__?{\"id\":\"44\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","44","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/camera01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"44\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","44","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | untitled"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | untitled"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/camera01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCamera01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | untitled"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchCamera01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/45.html b/v2/out/exps/45.html index c9dec848..7599da8e 100644 --- a/v2/out/exps/45.html +++ b/v2/out/exps/45.html @@ -1 +1 @@ -Sketches | Wires
\ No newline at end of file +Sketches | Wires
\ No newline at end of file diff --git a/v2/out/exps/45.txt b/v2/out/exps/45.txt index bd14a418..417a6377 100644 --- a/v2/out/exps/45.txt +++ b/v2/out/exps/45.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","45","d"],{"children":["__PAGE__?{\"id\":\"45\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","45","d"],{"children":["__PAGE__?{\"id\":\"45\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","45","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/wires/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"45\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","45","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Wires"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Wires"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/wires/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWires.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Wires"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWires.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/46.html b/v2/out/exps/46.html index 9caf9698..aaed81aa 100644 --- a/v2/out/exps/46.html +++ b/v2/out/exps/46.html @@ -1 +1 @@ -Sketches | Waves
\ No newline at end of file +Sketches | Waves
\ No newline at end of file diff --git a/v2/out/exps/46.txt b/v2/out/exps/46.txt index 87bbc562..c48b8d21 100644 --- a/v2/out/exps/46.txt +++ b/v2/out/exps/46.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","46","d"],{"children":["__PAGE__?{\"id\":\"46\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","46","d"],{"children":["__PAGE__?{\"id\":\"46\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","46","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"46\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","46","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Waves"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Waves"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/soundwaves/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSoundwaves.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Waves"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSoundwaves.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/47.html b/v2/out/exps/47.html index 556ff1eb..070d5c93 100644 --- a/v2/out/exps/47.html +++ b/v2/out/exps/47.html @@ -1 +1 @@ -Sketches | Swirling
\ No newline at end of file +Sketches | Swirling
\ No newline at end of file diff --git a/v2/out/exps/47.txt b/v2/out/exps/47.txt index b3b59797..53abeab3 100644 --- a/v2/out/exps/47.txt +++ b/v2/out/exps/47.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","47","d"],{"children":["__PAGE__?{\"id\":\"47\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","47","d"],{"children":["__PAGE__?{\"id\":\"47\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","47","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"47\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","47","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirling"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirling"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/swirling01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirling"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchSwirl01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/48.html b/v2/out/exps/48.html index da567b5b..b376b0e6 100644 --- a/v2/out/exps/48.html +++ b/v2/out/exps/48.html @@ -1 +1 @@ -Sketches | Hurricane
\ No newline at end of file +Sketches | Hurricane
\ No newline at end of file diff --git a/v2/out/exps/48.txt b/v2/out/exps/48.txt index 955b52ed..341828ae 100644 --- a/v2/out/exps/48.txt +++ b/v2/out/exps/48.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","48","d"],{"children":["__PAGE__?{\"id\":\"48\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","48","d"],{"children":["__PAGE__?{\"id\":\"48\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","48","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"48\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","48","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Hurricane"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Hurricane"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/typhoon/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHurricane.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Hurricane"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchHurricane.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/49.html b/v2/out/exps/49.html index 49fa7543..f6babb48 100644 --- a/v2/out/exps/49.html +++ b/v2/out/exps/49.html @@ -1 +1 @@ -Sketches | Totoro
\ No newline at end of file +Sketches | Totoro
\ No newline at end of file diff --git a/v2/out/exps/49.txt b/v2/out/exps/49.txt index 6a04eb2f..2e73a3c7 100644 --- a/v2/out/exps/49.txt +++ b/v2/out/exps/49.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","49","d"],{"children":["__PAGE__?{\"id\":\"49\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","49","d"],{"children":["__PAGE__?{\"id\":\"49\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","49","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/totoro/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"49\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","49","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Totoro"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Totoro"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/totoro/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTotoro.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Totoro"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTotoro.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/5.html b/v2/out/exps/5.html index adb3e021..6dbe319a 100644 --- a/v2/out/exps/5.html +++ b/v2/out/exps/5.html @@ -1 +1 @@ -Sketches | Bloom
\ No newline at end of file +Sketches | Bloom
\ No newline at end of file diff --git a/v2/out/exps/5.txt b/v2/out/exps/5.txt index 4bf112d5..813f98f3 100644 --- a/v2/out/exps/5.txt +++ b/v2/out/exps/5.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","5","d"],{"children":["__PAGE__?{\"id\":\"5\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","5","d"],{"children":["__PAGE__?{\"id\":\"5\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","5","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"5\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","5","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Bloom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Bloom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Bloom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNike.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Bloom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchNike.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/50.html b/v2/out/exps/50.html index be9d100e..bcac21ca 100644 --- a/v2/out/exps/50.html +++ b/v2/out/exps/50.html @@ -1 +1 @@ -Sketches | Light
\ No newline at end of file +Sketches | Light
\ No newline at end of file diff --git a/v2/out/exps/50.txt b/v2/out/exps/50.txt index 35052558..54c6375d 100644 --- a/v2/out/exps/50.txt +++ b/v2/out/exps/50.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","50","d"],{"children":["__PAGE__?{\"id\":\"50\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","50","d"],{"children":["__PAGE__?{\"id\":\"50\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","50","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/light/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"50\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","50","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Light"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Light"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/light/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchLight.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Light"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchLight.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/51.html b/v2/out/exps/51.html index ee02192a..08c74d16 100644 --- a/v2/out/exps/51.html +++ b/v2/out/exps/51.html @@ -1 +1 @@ -Sketches | Taichi
\ No newline at end of file +Sketches | Taichi
\ No newline at end of file diff --git a/v2/out/exps/51.txt b/v2/out/exps/51.txt index 0f6c5af6..a7febb61 100644 --- a/v2/out/exps/51.txt +++ b/v2/out/exps/51.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","51","d"],{"children":["__PAGE__?{\"id\":\"51\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","51","d"],{"children":["__PAGE__?{\"id\":\"51\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","51","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/taichi/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"51\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","51","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Taichi"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Taichi"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/taichi/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTaichi.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Taichi"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTaichi.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/52.html b/v2/out/exps/52.html index be266b66..c1037392 100644 --- a/v2/out/exps/52.html +++ b/v2/out/exps/52.html @@ -1 +1 @@ -Sketches | Rubiks Cube
\ No newline at end of file +Sketches | Rubiks Cube
\ No newline at end of file diff --git a/v2/out/exps/52.txt b/v2/out/exps/52.txt index a988f808..16513865 100644 --- a/v2/out/exps/52.txt +++ b/v2/out/exps/52.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","52","d"],{"children":["__PAGE__?{\"id\":\"52\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","52","d"],{"children":["__PAGE__?{\"id\":\"52\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","52","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"52\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","52","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Rubiks Cube"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Rubiks Cube"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/rubixCube/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRubix.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Rubiks Cube"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRubix.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/53.html b/v2/out/exps/53.html index 4902db77..87af0d24 100644 --- a/v2/out/exps/53.html +++ b/v2/out/exps/53.html @@ -1 +1 @@ -Sketches | Black Hole
\ No newline at end of file +Sketches | Black Hole
\ No newline at end of file diff --git a/v2/out/exps/53.txt b/v2/out/exps/53.txt index c4d542e5..94f47f62 100644 --- a/v2/out/exps/53.txt +++ b/v2/out/exps/53.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","53","d"],{"children":["__PAGE__?{\"id\":\"53\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","53","d"],{"children":["__PAGE__?{\"id\":\"53\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","53","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"53\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","53","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Black Hole"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Black Hole"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blackhole01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackHole.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Black Hole"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlackHole.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/54.html b/v2/out/exps/54.html index 39061a35..54dcbf51 100644 --- a/v2/out/exps/54.html +++ b/v2/out/exps/54.html @@ -1 +1 @@ -Sketches | Swirly Liquid
\ No newline at end of file +Sketches | Swirly Liquid
\ No newline at end of file diff --git a/v2/out/exps/54.txt b/v2/out/exps/54.txt index 722ce43f..350335b2 100644 --- a/v2/out/exps/54.txt +++ b/v2/out/exps/54.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","54","d"],{"children":["__PAGE__?{\"id\":\"54\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","54","d"],{"children":["__PAGE__?{\"id\":\"54\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","54","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"54\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","54","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Swirly Liquid"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Swirly Liquid"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/fluid06/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid06.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Swirly Liquid"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFluid06.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/55.html b/v2/out/exps/55.html index 450e3797..685f270b 100644 --- a/v2/out/exps/55.html +++ b/v2/out/exps/55.html @@ -1 +1 @@ -Sketches | Dots
\ No newline at end of file +Sketches | Dots
\ No newline at end of file diff --git a/v2/out/exps/55.txt b/v2/out/exps/55.txt index 0e6a79c4..4d096d67 100644 --- a/v2/out/exps/55.txt +++ b/v2/out/exps/55.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","55","d"],{"children":["__PAGE__?{\"id\":\"55\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","55","d"],{"children":["__PAGE__?{\"id\":\"55\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","55","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/circles01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"55\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","55","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Dots"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Dots"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/circles01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchDots.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Dots"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchDots.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/56.html b/v2/out/exps/56.html index 814be994..042ea873 100644 --- a/v2/out/exps/56.html +++ b/v2/out/exps/56.html @@ -1 +1 @@ -Sketches | Words
\ No newline at end of file +Sketches | Words
\ No newline at end of file diff --git a/v2/out/exps/56.txt b/v2/out/exps/56.txt index 4ad7471b..365a3e52 100644 --- a/v2/out/exps/56.txt +++ b/v2/out/exps/56.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","56","d"],{"children":["__PAGE__?{\"id\":\"56\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","56","d"],{"children":["__PAGE__?{\"id\":\"56\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","56","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"56\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","56","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Words"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Words"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/sutraFlow/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchChars.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Words"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchChars.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/57.html b/v2/out/exps/57.html index 38761cbb..a20e9eac 100644 --- a/v2/out/exps/57.html +++ b/v2/out/exps/57.html @@ -1 +1 @@ -Sketches | Flower
\ No newline at end of file +Sketches | Flower
\ No newline at end of file diff --git a/v2/out/exps/57.txt b/v2/out/exps/57.txt index fc27edb1..b6b4f478 100644 --- a/v2/out/exps/57.txt +++ b/v2/out/exps/57.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","57","d"],{"children":["__PAGE__?{\"id\":\"57\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","57","d"],{"children":["__PAGE__?{\"id\":\"57\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","57","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flowers/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"57\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","57","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flower"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flower"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flowers/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFlower.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flower"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFlower.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/58.html b/v2/out/exps/58.html index 79e9311f..fa88648e 100644 --- a/v2/out/exps/58.html +++ b/v2/out/exps/58.html @@ -1 +1 @@ -Sketches | Face Particles
\ No newline at end of file +Sketches | Face Particles
\ No newline at end of file diff --git a/v2/out/exps/58.txt b/v2/out/exps/58.txt index 67afa7a1..5e240c98 100644 --- a/v2/out/exps/58.txt +++ b/v2/out/exps/58.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","58","d"],{"children":["__PAGE__?{\"id\":\"58\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","58","d"],{"children":["__PAGE__?{\"id\":\"58\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","58","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"58\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","58","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Face Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Face Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Face Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/59.html b/v2/out/exps/59.html index 2e3af040..6da38c42 100644 --- a/v2/out/exps/59.html +++ b/v2/out/exps/59.html @@ -1 +1 @@ -Sketches | Matrix Rain
\ No newline at end of file +Sketches | Matrix Rain
\ No newline at end of file diff --git a/v2/out/exps/59.txt b/v2/out/exps/59.txt index 459624f7..78cb3e4d 100644 --- a/v2/out/exps/59.txt +++ b/v2/out/exps/59.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","59","d"],{"children":["__PAGE__?{\"id\":\"59\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","59","d"],{"children":["__PAGE__?{\"id\":\"59\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","59","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/matrix/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"59\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","59","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Matrix Rain"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Matrix Rain"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/matrix/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMatrix.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Matrix Rain"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchMatrix.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/6.html b/v2/out/exps/6.html index 2373e140..2f420b20 100644 --- a/v2/out/exps/6.html +++ b/v2/out/exps/6.html @@ -1 +1 @@ -Sketches | Feathers
\ No newline at end of file +Sketches | Feathers
\ No newline at end of file diff --git a/v2/out/exps/6.txt b/v2/out/exps/6.txt index c167bf50..69dd201b 100644 --- a/v2/out/exps/6.txt +++ b/v2/out/exps/6.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","6","d"],{"children":["__PAGE__?{\"id\":\"6\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","6","d"],{"children":["__PAGE__?{\"id\":\"6\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","6","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/feathers/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"6\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","6","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Feathers"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Feathers"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/feathers/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBloom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Feathers"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBloom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/60.html b/v2/out/exps/60.html index 88c4c21e..cece6455 100644 --- a/v2/out/exps/60.html +++ b/v2/out/exps/60.html @@ -1 +1 @@ -Sketches | Face Particles
\ No newline at end of file +Sketches | Face Particles
\ No newline at end of file diff --git a/v2/out/exps/60.txt b/v2/out/exps/60.txt index 3e1c9a0a..eb10ce49 100644 --- a/v2/out/exps/60.txt +++ b/v2/out/exps/60.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","60","d"],{"children":["__PAGE__?{\"id\":\"60\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","60","d"],{"children":["__PAGE__?{\"id\":\"60\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","60","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"60\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","60","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Face Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Face Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle02.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Face Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceParticle02.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/61.html b/v2/out/exps/61.html index d08756d0..35e4fb93 100644 --- a/v2/out/exps/61.html +++ b/v2/out/exps/61.html @@ -1 +1 @@ -Sketches | Trails
\ No newline at end of file +Sketches | Trails
\ No newline at end of file diff --git a/v2/out/exps/61.txt b/v2/out/exps/61.txt index 52d2664a..63b323e1 100644 --- a/v2/out/exps/61.txt +++ b/v2/out/exps/61.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","61","d"],{"children":["__PAGE__?{\"id\":\"61\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","61","d"],{"children":["__PAGE__?{\"id\":\"61\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","61","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/trails02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"61\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","61","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Trails"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Trails"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/trails02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTrails.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Trails"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchTrails.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/62.html b/v2/out/exps/62.html index 44b3cc8c..94fca210 100644 --- a/v2/out/exps/62.html +++ b/v2/out/exps/62.html @@ -1 +1 @@ -Sketches | Faceprint
\ No newline at end of file +Sketches | Faceprint
\ No newline at end of file diff --git a/v2/out/exps/62.txt b/v2/out/exps/62.txt index 5fb91d68..b363e26d 100644 --- a/v2/out/exps/62.txt +++ b/v2/out/exps/62.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","62","d"],{"children":["__PAGE__?{\"id\":\"62\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","62","d"],{"children":["__PAGE__?{\"id\":\"62\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","62","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"62\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","62","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Faceprint"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Faceprint"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceprint/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceprint.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Faceprint"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchFaceprint.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/63.html b/v2/out/exps/63.html index d7a3e99e..53c6ad07 100644 --- a/v2/out/exps/63.html +++ b/v2/out/exps/63.html @@ -1 +1 @@ -Sketches | Pulse
\ No newline at end of file +Sketches | Pulse
\ No newline at end of file diff --git a/v2/out/exps/63.txt b/v2/out/exps/63.txt index f9342255..9882a47c 100644 --- a/v2/out/exps/63.txt +++ b/v2/out/exps/63.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","63","d"],{"children":["__PAGE__?{\"id\":\"63\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","63","d"],{"children":["__PAGE__?{\"id\":\"63\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","63","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ripples/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"63\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","63","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Pulse"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Pulse"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ripples/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRipple.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Pulse"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRipple.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/64.html b/v2/out/exps/64.html index ae3af091..4c667919 100644 --- a/v2/out/exps/64.html +++ b/v2/out/exps/64.html @@ -1 +1 @@ -Sketches | Blocks
\ No newline at end of file +Sketches | Blocks
\ No newline at end of file diff --git a/v2/out/exps/64.txt b/v2/out/exps/64.txt index 416f72c5..e747a7b9 100644 --- a/v2/out/exps/64.txt +++ b/v2/out/exps/64.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","64","d"],{"children":["__PAGE__?{\"id\":\"64\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","64","d"],{"children":["__PAGE__?{\"id\":\"64\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","64","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"64\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","64","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blocks"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blocks"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blocks1/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlock0.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blocks"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlock0.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/65.html b/v2/out/exps/65.html index abbcb191..071295f9 100644 --- a/v2/out/exps/65.html +++ b/v2/out/exps/65.html @@ -1 +1 @@ -Sketches | Blocks - Hands
\ No newline at end of file +Sketches | Blocks - Hands
\ No newline at end of file diff --git a/v2/out/exps/65.txt b/v2/out/exps/65.txt index d930746c..02ceee34 100644 --- a/v2/out/exps/65.txt +++ b/v2/out/exps/65.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","65","d"],{"children":["__PAGE__?{\"id\":\"65\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","65","d"],{"children":["__PAGE__?{\"id\":\"65\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","65","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"65\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","65","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blocks - Hands"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blocks - Hands"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/blocks4_hands/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlockHand.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blocks - Hands"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlockHand.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/66.html b/v2/out/exps/66.html index 72537d48..b5d0bbdb 100644 --- a/v2/out/exps/66.html +++ b/v2/out/exps/66.html @@ -1 +1 @@ -Sketches | Disintegrate
\ No newline at end of file +Sketches | Disintegrate
\ No newline at end of file diff --git a/v2/out/exps/66.txt b/v2/out/exps/66.txt index 5e78dbc2..5ab8b4ef 100644 --- a/v2/out/exps/66.txt +++ b/v2/out/exps/66.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","66","d"],{"children":["__PAGE__?{\"id\":\"66\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","66","d"],{"children":["__PAGE__?{\"id\":\"66\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","66","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"66\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","66","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Disintegrate"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Disintegrate"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/faceParticles03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDisintegrate.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Disintegrate"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverDisintegrate.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/67.html b/v2/out/exps/67.html index 91ab4060..cb6c7558 100644 --- a/v2/out/exps/67.html +++ b/v2/out/exps/67.html @@ -1 +1 @@ -Sketches | Inscript
\ No newline at end of file +Sketches | Inscript
\ No newline at end of file diff --git a/v2/out/exps/67.txt b/v2/out/exps/67.txt index a16764db..e68a8193 100644 --- a/v2/out/exps/67.txt +++ b/v2/out/exps/67.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","67","d"],{"children":["__PAGE__?{\"id\":\"67\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","67","d"],{"children":["__PAGE__?{\"id\":\"67\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","67","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/inscript/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"67\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","67","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Inscript"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Inscript"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/inscript/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverInscript.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Inscript"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverInscript.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/68.html b/v2/out/exps/68.html index 45570e6c..d7b51d17 100644 --- a/v2/out/exps/68.html +++ b/v2/out/exps/68.html @@ -1 +1 @@ -Sketches | White Particles
\ No newline at end of file +Sketches | White Particles
\ No newline at end of file diff --git a/v2/out/exps/68.txt b/v2/out/exps/68.txt index 948c4540..009a7a35 100644 --- a/v2/out/exps/68.txt +++ b/v2/out/exps/68.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","68","d"],{"children":["__PAGE__?{\"id\":\"68\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","68","d"],{"children":["__PAGE__?{\"id\":\"68\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","68","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"68\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","68","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | White Particles"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | White Particles"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/whiteParticles/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWhiteParticles.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | White Particles"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchWhiteParticles.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/69.html b/v2/out/exps/69.html index 6b1d762d..2a98e1ee 100644 --- a/v2/out/exps/69.html +++ b/v2/out/exps/69.html @@ -1 +1 @@ -Sketches | Ribbons
\ No newline at end of file +Sketches | Ribbons
\ No newline at end of file diff --git a/v2/out/exps/69.txt b/v2/out/exps/69.txt index 6910fbef..7cae721b 100644 --- a/v2/out/exps/69.txt +++ b/v2/out/exps/69.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","69","d"],{"children":["__PAGE__?{\"id\":\"69\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","69","d"],{"children":["__PAGE__?{\"id\":\"69\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","69","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"69\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","69","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Ribbons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Ribbons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ribbon03/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRibbon01.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Ribbons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRibbon01.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/7.html b/v2/out/exps/7.html index a5ec7007..64ff80f7 100644 --- a/v2/out/exps/7.html +++ b/v2/out/exps/7.html @@ -1 +1 @@ -Sketches | Flocking + Clustering
\ No newline at end of file +Sketches | Flocking + Clustering
\ No newline at end of file diff --git a/v2/out/exps/7.txt b/v2/out/exps/7.txt index e8371da5..5988750b 100644 --- a/v2/out/exps/7.txt +++ b/v2/out/exps/7.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","7","d"],{"children":["__PAGE__?{\"id\":\"7\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","7","d"],{"children":["__PAGE__?{\"id\":\"7\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","7","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"7\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","7","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Flocking + Clustering"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Flocking + Clustering"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/flocking01/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchClustering.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Flocking + Clustering"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchClustering.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/70.html b/v2/out/exps/70.html index a6ae64a6..e87b2f55 100644 --- a/v2/out/exps/70.html +++ b/v2/out/exps/70.html @@ -1 +1 @@ -Sketches | Blossom
\ No newline at end of file +Sketches | Blossom
\ No newline at end of file diff --git a/v2/out/exps/70.txt b/v2/out/exps/70.txt index 461f165e..1b7f7e3d 100644 --- a/v2/out/exps/70.txt +++ b/v2/out/exps/70.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","70","d"],{"children":["__PAGE__?{\"id\":\"70\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","70","d"],{"children":["__PAGE__?{\"id\":\"70\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","70","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"70\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","70","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Blossom"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Blossom"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlossom.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Blossom"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchBlossom.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/71.html b/v2/out/exps/71.html new file mode 100644 index 00000000..e5785108 --- /dev/null +++ b/v2/out/exps/71.html @@ -0,0 +1 @@ +Sketches | Floating Ribbons
\ No newline at end of file diff --git a/v2/out/exps/71.txt b/v2/out/exps/71.txt new file mode 100644 index 00000000..01e10c30 --- /dev/null +++ b/v2/out/exps/71.txt @@ -0,0 +1,10 @@ +1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","71","d"],{"children":["__PAGE__?{\"id\":\"71\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} +3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","71","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"71\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","71","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] +4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Floating Ribbons"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Floating Ribbons"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchribbon.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Floating Ribbons"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchribbon.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] +8:null diff --git a/v2/out/exps/8.html b/v2/out/exps/8.html index b02ad543..631b5d29 100644 --- a/v2/out/exps/8.html +++ b/v2/out/exps/8.html @@ -1 +1 @@ -Sketches | Glass Statue
\ No newline at end of file +Sketches | Glass Statue
\ No newline at end of file diff --git a/v2/out/exps/8.txt b/v2/out/exps/8.txt index 02725472..67899930 100644 --- a/v2/out/exps/8.txt +++ b/v2/out/exps/8.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","8","d"],{"children":["__PAGE__?{\"id\":\"8\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","8","d"],{"children":["__PAGE__?{\"id\":\"8\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","8","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"8\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","8","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Glass Statue"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Glass Statue"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/Refaction/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRefraction.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Glass Statue"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/coverSketchRefraction.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/exps/9.html b/v2/out/exps/9.html index 85a57825..bb99850d 100644 --- a/v2/out/exps/9.html +++ b/v2/out/exps/9.html @@ -1 +1 @@ -Sketches | Golden Powder
\ No newline at end of file +Sketches | Golden Powder
\ No newline at end of file diff --git a/v2/out/exps/9.txt b/v2/out/exps/9.txt index 70581695..16bb3592 100644 --- a/v2/out/exps/9.txt +++ b/v2/out/exps/9.txt @@ -1,9 +1,9 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["exps",{"children":[["id","9","d"],{"children":["__PAGE__?{\"id\":\"9\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["exps",{"children":[["id","9","d"],{"children":["__PAGE__?{\"id\":\"9\"}",{}]}]}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] 5:HL["/Sketches/_next/static/css/fee6e1e47e444c7f.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} 9:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","86:static/chunks/app/exps/[id]/page-5ba3c70a9b8c2ace.js"],"name":"","async":false} 3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children","exps","children",["id","9","d"],"children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","childProp":{"current":["$L8",["$","div",null,{"children":[["$","$L9",null,{"href":"/","as":"/","className":"Experiments_closeButton__t_4Ah","children":["$","svg",null,{"width":"512px","height":"512px","viewBox":"0 0 512 512","children":["$","path",null,{"d":"M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5 c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9 c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"}]}]}],["$","iframe",null,{"src":"//yiwenl.github.io/Sketches/experiments/mask/dist/index.html","scrolling":"no","className":"Experiments_experimentContainer__Cy57P"}]]}],null],"segment":"__PAGE__?{\"id\":\"9\"}"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/fee6e1e47e444c7f.css","precedence":"next"}]]}],"segment":["id","9","d"]},"styles":[]}],"segment":"exps"},"styles":[]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Golden Powder"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Golden Powder"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"https://yiwenl.github.io/Sketches/experiments/mask/dist/index.html"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/assets/img/textureProj.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Golden Powder"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/assets/img/textureProj.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] diff --git a/v2/out/index.html b/v2/out/index.html index dbe7767a..421bcb9b 100644 --- a/v2/out/index.html +++ b/v2/out/index.html @@ -1 +1 @@ -Sketches | Yi-Wen Lin
\ No newline at end of file +Sketches | Yi-Wen Lin
\ No newline at end of file diff --git a/v2/out/index.txt b/v2/out/index.txt index f80f2625..ce68f5a2 100644 --- a/v2/out/index.txt +++ b/v2/out/index.txt @@ -1,12 +1,12 @@ 1:HL["/Sketches/_next/static/media/c9a5bc6a7c948fb0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] 2:HL["/Sketches/_next/static/css/621c5c879ad47958.css","style"] -0:["_88qPvTYfVTYhejRF2dQQ",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] -5:HL["/Sketches/_next/static/css/128f1c477e287a41.css","style"] -6:I{"id":1443,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -7:I{"id":8639,"chunks":["272:static/chunks/webpack-a152ec07d901b60e.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} -3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$L8","$L9",null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/128f1c477e287a41.css","precedence":"next"}]]}]}]}],null] +0:["jw2nfhuNebHld9Zdcf9Rw",[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],"$L3",[[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/621c5c879ad47958.css","precedence":"next"}]],"$L4"]]]] +5:HL["/Sketches/_next/static/css/0ca7ceed7ee1546e.css","style"] +6:I{"id":1443,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +7:I{"id":8639,"chunks":["272:static/chunks/webpack-046d65963a7db67b.js","971:static/chunks/fd9d1056-e4abb10dc68a7173.js","864:static/chunks/864-3bd7dda8c3c18211.js"],"name":"","async":false} +3:[null,["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__className_9d9bb5","children":["$","$L6",null,{"parallelRouterKey":"children","segmentPath":["children"],"loading":"$undefined","loadingStyles":"$undefined","hasLoading":false,"error":"$undefined","errorStyles":"$undefined","template":["$","$L7",null,{}],"templateStyles":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"childProp":{"current":["$L8","$L9",null],"segment":"__PAGE__"},"styles":[["$","link","0",{"rel":"stylesheet","href":"/Sketches/_next/static/css/0ca7ceed7ee1546e.css","precedence":"next"}]]}]}]}],null] 4:[["$","meta","0",{"charSet":"utf-8"}],["$","title","1",{"children":"Sketches | Yi-Wen Lin"}],["$","meta","2",{"name":"description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","3",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1"}],["$","meta","4",{"property":"og:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","5",{"property":"og:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","6",{"property":"og:url","content":"http://yiwenl.github.io/Sketches/"}],["$","meta","7",{"property":"og:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","meta","8",{"property":"og:type","content":"website"}],["$","meta","9",{"name":"twitter:card","content":"photo"}],["$","meta","10",{"name":"twitter:creator","content":"@yiwenl"}],["$","meta","11",{"name":"twitter:title","content":"Sketches | Yi-Wen Lin"}],["$","meta","12",{"name":"twitter:description","content":"WebGL Sketches by Yi-Wen Lin"}],["$","meta","13",{"name":"twitter:image","content":"https://yiwenl.github.io/Sketches/coverSketches.jpg"}],["$","link","14",{"rel":"icon","href":"/Sketches/favicon.ico","type":"image/x-icon","sizes":"48x48"}],["$","meta","15",{"name":"next-size-adjust"}]] -a:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-a5208d7d8d3321bf.js"],"name":"","async":false} -b:I{"id":6964,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-a5208d7d8d3321bf.js"],"name":"Image","async":false} -9:["$","main",null,{"className":"$undefined","children":[["$","div",null,{"className":"Header_aboutIcon__Ti6_n","children":["$","$La",null,{"href":"/about","as":"/about","children":["$","svg",null,{"height":"32px","viewBox":"0 0 32 32","width":"32px","children":["$","path",null,{"d":"M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"}]}]}]}],["$","div",null,{"className":"page_container__aoG4z","children":["$","div",null,{"className":"Experiments_listContainer__ggDdv","children":[["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/70","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlossom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/69","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRibbon01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/68","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWhiteParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/67","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverInscript.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/66","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDisintegrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/65","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlockHand.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/64","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlock0.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/63","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRipple.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/62","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceprint.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/61","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTrails.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/60","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/59","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMatrix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/58","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/57","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFlower.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/56","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchChars.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/55","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchDots.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/54","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid06.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/53","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackHole.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/52","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRubix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/51","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTaichi.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/50","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchLight.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/49","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTotoro.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/48","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHurricane.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/47","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/46","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSoundwaves.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/45","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWires.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/44","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCamera01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/43","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchStrangeBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/42","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid04.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/41","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid03.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/40","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/39","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/38","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSubstrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/37","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDissolve.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/36","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverCodevember.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/35","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaurice.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/34","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGeometries.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/33","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPattern.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/32","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPulse.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/31","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaelstrom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/30","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPlates.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/29","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGlass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/28","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHannya.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/27","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchIsland.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/26","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchComic.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/25","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSplashes.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/24","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackRain.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/23","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/22","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNeonDemon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/21","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPaintingParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/20","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPainting.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/19","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWolf.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/18","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGrass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/17","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackGold.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/16","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTurbulence.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/15","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/14","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchParticleValley.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/13","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCrystal.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/12","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/river.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/11","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/seasons.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/10","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/costume.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/9","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/textureProj.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/8","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRefraction.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/7","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchClustering.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/6","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBloom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/5","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNike.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/4","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverRosetta.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/3","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverFlocking.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/2","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverNefertiti.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/1","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverReflection.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/0","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverParticles.jpg","alt":"","fill":true}]}]}]}]]}]}]]}] +a:I{"id":4724,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-4a666375abe83fa7.js"],"name":"","async":false} +b:I{"id":6964,"chunks":["724:static/chunks/724-31645b2737313652.js","964:static/chunks/964-a1b35991d315467b.js","931:static/chunks/app/page-4a666375abe83fa7.js"],"name":"Image","async":false} +9:["$","main",null,{"className":"$undefined","children":[["$","div",null,{"className":"Header_aboutIcon__Ti6_n","children":["$","$La",null,{"href":"/about","as":"/about","children":["$","svg",null,{"height":"32px","viewBox":"0 0 32 32","width":"32px","children":["$","path",null,{"d":"M4,10h24c1.104,0,2-0.896,2-2s-0.896-2-2-2H4C2.896,6,2,6.896,2,8S2.896,10,4,10z M28,14H4c-1.104,0-2,0.896-2,2 s0.896,2,2,2h24c1.104,0,2-0.896,2-2S29.104,14,28,14z M28,22H4c-1.104,0-2,0.896-2,2s0.896,2,2,2h24c1.104,0,2-0.896,2-2 S29.104,22,28,22z"}]}]}]}],["$","div",null,{"className":"page_container__aoG4z","children":["$","div",null,{"className":"Experiments_listContainer__ggDdv","children":[["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/71","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchribbon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/70","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlossom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/69","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRibbon01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/68","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWhiteParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/67","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverInscript.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/66","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDisintegrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/65","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlockHand.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/64","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlock0.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/63","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRipple.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/62","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceprint.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/61","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTrails.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/60","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/59","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMatrix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/58","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFaceParticle01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/57","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFlower.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/56","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchChars.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/55","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchDots.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/54","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid06.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/53","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackHole.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/52","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRubix.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/51","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTaichi.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/50","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchLight.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/49","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTotoro.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/48","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHurricane.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/47","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/46","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSoundwaves.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/45","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWires.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/44","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCamera01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/43","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchStrangeBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/42","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid04.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/41","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid03.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/40","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid02.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/39","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchFluid01.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/38","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSubstrate.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/37","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverDissolve.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/36","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverCodevember.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/35","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaurice.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/34","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGeometries.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/33","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPattern.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/32","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPulse.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/31","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchMaelstrom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/30","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPlates.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/29","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGlass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/28","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchHannya.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/27","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchIsland.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/26","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchComic.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/25","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSplashes.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/24","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackRain.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/23","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchSwirl.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/22","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNeonDemon.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/21","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPaintingParticles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/20","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchPainting.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/19","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchWolf.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/18","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchGrass.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/17","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBlackGold.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/16","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchTurbulence.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/15","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBubbles.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/14","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchParticleValley.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/13","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchCrystal.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/12","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/river.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/11","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/seasons.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/10","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/costume.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/9","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/textureProj.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/8","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchRefraction.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/7","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchClustering.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/6","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchBloom.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/5","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/coverSketchNike.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/4","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverRosetta.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/3","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverFlocking.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/2","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverNefertiti.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/1","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverReflection.jpg","alt":"","fill":true}]}]}]}],["$","div",null,{"className":"Experiments_itemContainer__Pl143","children":["$","$La",null,{"href":"/exps/[id]","as":"/exps/0","children":["$","div",null,{"className":"Experiments_imageWrapper__SHDbU","style":{"width":280,"height":280},"children":["$","$Lb",null,{"src":"/Sketches/assets/img/sketchCoverParticles.jpg","alt":"","fill":true}]}]}]}]]}]}]]}] 8:null diff --git a/v2/public/assets/img/coverSketchribbon.jpg b/v2/public/assets/img/coverSketchribbon.jpg new file mode 100644 index 00000000..05fe88ed Binary files /dev/null and b/v2/public/assets/img/coverSketchribbon.jpg differ diff --git a/v2/src/app/model/data.js b/v2/src/app/model/data.js index f1abf26e..a4f70ce4 100644 --- a/v2/src/app/model/data.js +++ b/v2/src/app/model/data.js @@ -354,4 +354,9 @@ export default [ url: "//yiwenl.github.io/Sketches/experiments/darkBlossom/dist/index.html", title: "Blossom", }, + { + cover: "assets/img/coverSketchribbon.jpg", + url: "//yiwenl.github.io/Sketches/experiments/ribbon02/dist/index.html", + title: "Floating Ribbons", + }, ];