diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..6149caa Binary files /dev/null and b/.DS_Store differ diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml index 68fdd1e..2547858 100644 --- a/.github/workflows/jekyll-gh-pages.yml +++ b/.github/workflows/jekyll-gh-pages.yml @@ -42,7 +42,10 @@ jobs: source: ./ destination: ./_site - name: Upload artifact - uses: actions/upload-pages-artifact@v1 + uses: actions/upload-pages-artifact@v3 + with: + name: github-pages + path: ./_site # Deployment job deploy: @@ -54,4 +57,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/jekyll.yml b/.github/workflows/jekyll.yml index b2b5b5a..f87c618 100644 --- a/.github/workflows/jekyll.yml +++ b/.github/workflows/jekyll.yml @@ -34,11 +34,10 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup Ruby - uses: ruby/setup-ruby@8575951200e472d5f2d95c625da0c7bec8217c42 # v1.161.0 + uses: ruby/setup-ruby@v1 with: - ruby-version: '3.1' # Not needed with a .ruby-version file - bundler-cache: true # runs 'bundle install' and caches installed gems automatically - cache-version: 0 # Increment this number if you need to re-download cached gems + ruby-version: '3.1' + bundler-cache: true - name: Setup Pages id: pages uses: actions/configure-pages@v4 @@ -50,6 +49,9 @@ jobs: - name: Upload artifact # Automatically uploads an artifact from the './_site' directory by default uses: actions/upload-pages-artifact@v3 + with: + name: github-pages + path: ./_site # Deployment job deploy: diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..35f53e3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "cSpell.words": [ + "gmodal", + "insidehouse", + "passmodal", + "phishmodal" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 0dbe05c..031a78b 100644 --- a/README.md +++ b/README.md @@ -1,183 +1,9 @@ -# IMPORTANT +# READ ME -- Go to settings and configure pages, deploy from the branch, and then select the root folder. IF YOU DO NOT DO THIS YOUR PAGE WILL NOT BUILD. +## Description +Codemaxxers is a web-based RPG game we made for Del Norte Highschool's APCSP, APCSA, and CSSE classes. Our goal was to make an interactive way that current and future classes could learn while having fun. We have a single-player mode that emphasizes our Pokemon inspired fight. Our multiplayer mode is meant for friends to prove who is the better coder. -- Incase of issues with the user for your repository not being able to be resolved resulting in the page not building do the following: instead of the usual `repository: yourNameHere` in the repository section write `repository: usr/yourNameHere` - -## File Names - -- To name a file, use the following structure (Note that dates should never be in the future and should always be in the format YYYY-MM-DD): - -- Make sure that notebooks are in the notebook folder and posts are in the posts folder. - - - For markdown files in _posts: - - year-month-day-fileName.md - - GOOD EXAMPLE: 2021-08-02-First-Day.md - - BAD EXAMPLE: 2021-8-2-first-day.md - - BAD EXAMPLE: first-day.md - - BAD EXAMPLE: 2069-12-31-First-Day.md - - - For jupyter notebooks in _notebooks: - - year-month-day-fileName.ipynb - - GOOD EXAMPLE: 2021-08-02-First-Day.ipynb - - BAD EXAMPLE: 2021-8-2-first-day.ipynb - - BAD EXAMPLE: first-day.ipynb - - BAD EXAMPLE: 2069-12-31-First-Day.ipynb - - -## NIGHTHAWK-Pages CHANGES - -### NEW FOR NIGHTHAWK-Pages - TAGS - -- Tags are used to organize pages by their tag the way to add tags is to add the following to your front matter such as the example seen here `categories: [C1.4]` each item in the same category will be lumped together to be seen easily on the tags page. - -### NEW FOR NIGHTHAWK-Pages - SEARCH -- All pages can be searched for using the built in search bar. This search bar will search for any word in the title of a page or in the page itself. This allows for easily finding pages and information that you are looking for. However, sometimes this may not be desirable so to hide a page from search you can add `search_exclude: true` to the front matter of the page. This will hide the page from appearing when the viewer uses search. - -### NEW FOR NIGHTHAWK-Pages - NAVIGATION BAR - -- To add pages to the navigation bar add them to general main directory then add the alpha tag that will order them in the way that you desire such as AA Being the first page and ZZ being the last page. - -### NEW FOR NIGHTHAWK-Pages - HOME PAGE - -- There is a new designed home page with all pages having images and a description of what the page is about. This is to help the viewer understand what the page is about and what they can expect to find on the page. The way to add images to a page is to have the following front matter `image: /images/file.jpg` and then the name of the image that you want to use. The image must be in the `images` folder. Furthermore if you would like the file to not show up on the main page `hide: true` can be added to the front matter. - -### NEW FOR NIGHTHAWK-Pages - SASS CHANGES - -- NIGHTHAWK-Pages supports a variety of different themes that are each overlaid on top of minima. To use each theme, go to the custom-styles.scss file and simply uncomment the theme you want to use. To toggle the theme off, comment the line that imports the theme in the file. To add your own themes, find the desired theme’s Github repository and make a new folder in the sass directory that’s named the name of your theme. Copy the import statement format from the other styles on custom-styles.scss, add your own import statement, and you're done. Note that adding your own themes may cause things to break and a given theme’s compatibility with NIGHTHAWK-Pages may be suboptimal. To add your own styling twist, add your own .scss file to custom-styles via import. Here is an example import `@import "minima/NIGHTHAWK-Pages-styles";`. Note that you can also add your own SCSS in the file itself in area labeled specifically for that purpose. Also you can mix different styles together in NIGHTHAWK-Pages however the effects may vary. - -### NEW FOR NIGHTHAWK-Pages - INCLUDES - -- NIGHTHAWK-Pages uses liquid to import many common page elements that are present throughout the repository. These common elements are imported from the _includes directory. If you want to add one of these common elements, use liquid syntax to import the desired element to your file. Here’s an example of liquid syntax used to import: `{%- include post_list.html -%}` Note that the liquid syntax is surrounded by curly braces and percent signs. This can be used anywhere in the repository. - -### NEW FOR NIGHTHAWK-Pages - LAYOUTS -- To create your own page layout, make your own html page inside the _layouts directory, and when you want to use that layout in a file, use the following front matter `layout: [your layout here]` Using another pre-existing layout uses the same front matter syntax as defined above. This layout will have to be written in your own custom liquid defining the structure of the page. - - -### NEW FOR NIGHTHAWK-Pages - CONFIG.YML - -- NIGHTHAWK-Pages allows for social links to be added at the bottom of every page, along with other things. To change the pre-set social links and names, go to the _config.yml file and change the desired category to the desired nomenclature. There are only a few supported social links that you can choose from. - - -## Blog site using GitHub Pages and Jekyll - -> This site is intended for Students. This is to record plans, complete hacks, and do work for your learnings. - -- This can be customized to support computer science as you work through pathway (JavaScript, Python/Flask, Java/Spring) -- All tangible artifact work is in a _posts|_notebooks. -- Front matter (aka meta data) in ipynb and md files is used to organize information according to week and column in running web site. - -## GitHub Pages -All `GitHub Pages` websites are managed on GitHub infrastructure. GitHub uses `Jekyll` to transform your content into static websites and blogs. Each time we change files in GitHub it initiates a GitHub Action that rebuilds and publishes the site with Jekyll. -- GitHub Pages is powered by: [Jekyll](https://jekyllrb.com/). -- Published teacher website: [nighthawkcoders.github.io/teacher](https://nighthawkcoders.github.io/teacher/) - -## Preparing a Preview Site - -In all development, it is recommended to test your code before deployment. The GitHub Pages development process is optimized by testing your development on your local machine, prior to files on GitHub - -Development Cycle. For GitHub pages, the tooling described below will create a development cycle `make-code-save-preview`. In the development cycle, it is a requirement to preview work locally, prior to doing a VSCode `commit` to git. - -Deployment Cycle. In the deployment cycle, `sync-github-action-review`, it is a requirement to complete the development cycle prior to doing a VSCode `sync`. The sync triggers github repository update. The action starts the jekyll build to publish the website. Any step can have errors and will require you to do a review. - -### WSL and/or Ubuntu installation requirements - -- The result of these step is Ubuntu tools to run preview server. These procedures were created using [jekyllrb.com](https://jekyllrb.com/docs/installation/ubuntu/) -- Run scripts in scripts directory of student repo: setup_ubuntu.sh and activate.sh. Expected name of the repository to run these scripts is 'student'. - -### MacOs installation requirements - -- Ihe result of these step are MacOS tools to run preview server. These procedures were created using [jekyllrb.com](https://jekyllrb.com/docs/installation/macos/). Run scripts in scripts directory of student repo: setup_macos.sh and activate_macos.sh. Expected name of the repository to run these scripts is 'student'. - -### Preview - -- The result of these step is server running on: http://0.0.0.0:4100/teacher/. Regeneration messages will run in terminal on any save. Press the Enter or Return key in the terminal at any time to enter commands. - -- Complete installation - -```bash -bundle install -``` - -- Run Server. This requires running terminal commands `make`, `make stop`, `make clean`, or `make convert` to manage the running server. Logging of details will appear in terminal. A `Makefile` has been created in project to support commands and start processes. - - - Start preview server in terminal - - ```bash - cd ~/vscode/teacher # my project location, adapt as necessary - make - ``` - - - Terminal output of shows server address. Cmd or Ctl click http location to open preview server in browser. Example Server address message... - - ```text - Server address: http://0.0.0.0:4100/teacher/ - ``` - - - Save on ipynb or md activiates "regeneration". Refresh browser to see updates. Example terminal message... - ``` - Regenerating: 1 file(s) changed at 2023-07-31 06:54:32 - _notebooks/2024-01-04-cockpit-setup.ipynb - ``` - - - Terminal message are generated from background processes. Click return or enter to obtain prompt and use terminal as needed for other tasks. Alway return to root of project `cd ~/vscode/teacher` for all "make" actions. - - - - Stop preview server, but leave constructed files in project for your review. - - ```bash - make stop - ``` - - - Stop server and "clean" constructed files, best choice when renaming files to eliminate potential duplicates in constructed files. - - ```bash - make clean - ``` - - - Test notebook conversions, best choice to see if IPYNB conversion is acting up. - - ```bash - make convert - ``` - -### Meta Data (Front Matter) - -- Meta data also known as front matter is a set of key value pairs that can provide additional information to github pages about .md and .ipynb files. This can and probably will be used in other file types (ie doc, pdf), if we added them to the system. - -- In the front matter you can also define things like a title and description for the page. Additional front matter is defined to place content on "Computer Science Lab Notebook" page. The `courses:` key will place data on a specific page with the nested `week:` placing data on a specific row on the page. The `type:` key in front matter will place blog under the plans, hacks(ToDo), and tangibles column. - -- In our files the front matter is defined at the top of the page or the first markdown cell. - - - First open one of the .md or .ipynb files already included in either your _posts|_notebooks folder. - - - In the .md file you should notice something similar to this at the top of the page. To see this in your .ipynb files you will need to double click the markdown cell at the top of the file. - - ```yaml - --- - toc: true - comments: false - layout: post - title: Daily Plan Sample - description: Example Blog!!! This shows planning and notes from hacks. - type: plans - courses: { compsci: {week: 0} } - --- - ``` - -- Front matter will always have '---' at the top and bottom to distinguish it and each key value pair will be separated by a ':'. - -- Here we can modify things like the title and description. - -- The type value will tells us which column this is going to appear under, supported values: `plans`, `hacks`, `tangibles`. - -- The courses tells us which menu item it will be under, in this case the `compsci` menu, and the `week` tells it what row (week) it will appear under that menu. - -- In our examples, hacks(ToDo) contains references to our IPYNB files; these are stored in GitHub under the `_notebooks` folder. The plans and tangibles contains references to our MD files; these are stored in GitHub under the `_posts` folder. - -### Key files in Computer Science Lab Notebook - -- `compsci.md` - this is the "Computer Science Lab Notebook" page and is the link `https://nighthawkcoders.github.io/student/compsci`. It contains the Title and Number of units on the page. -- `_data/compsci.yml` - this contains the supporting data that helps organize the units on the page. -- `_layouts`\schedule.html - this contains code, in the Liquid language, that generates the HTML for all the rows and columns. -- fyi, the schedule.html could work for another type of page. For instance, you could make a csa.md, _data/csa.yml, and tag files with `csa: {week: 0}` under courses. \ No newline at end of file +# Table of Contents +- [Multiplayer]() +- [Fight feature]() +- [Main game]() diff --git a/_includes/side-bar.html b/_includes/side-bar.html index 55defe5..b80d07a 100644 --- a/_includes/side-bar.html +++ b/_includes/side-bar.html @@ -1,8 +1,10 @@ + +
- \ No newline at end of file + + + + + \ No newline at end of file diff --git a/_layouts/battle.html b/_layouts/battle.html new file mode 100644 index 0000000..27edd60 --- /dev/null +++ b/_layouts/battle.html @@ -0,0 +1,32 @@ + + + + {%- include head.html -%} + + + + + + + + + \ No newline at end of file diff --git a/_layouts/landing.html b/_layouts/landing.html index 089238b..ee64654 100644 --- a/_layouts/landing.html +++ b/_layouts/landing.html @@ -7,9 +7,10 @@
diff --git a/_layouts/menulayout.html b/_layouts/menulayout.html new file mode 100644 index 0000000..50c4ca8 --- /dev/null +++ b/_layouts/menulayout.html @@ -0,0 +1,35 @@ + + + + {%- include head.html -%} + + +
+ {{ content }} +
+
+ + + + \ No newline at end of file diff --git a/_layouts/multiplayer.html b/_layouts/multiplayer.html new file mode 100644 index 0000000..2bcb5dd --- /dev/null +++ b/_layouts/multiplayer.html @@ -0,0 +1,32 @@ + + + + {%- include head.html -%} + + + + + + + + + \ No newline at end of file diff --git a/_layouts/star.html b/_layouts/star.html index 5b7affb..e162d09 100644 --- a/_layouts/star.html +++ b/_layouts/star.html @@ -4,78 +4,29 @@ {%- include head.html -%} - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ content }}
diff --git a/_sass/minima/Nighthawkpages-styles.css b/_sass/minima/Nighthawkpages-styles.css new file mode 100644 index 0000000..de79172 --- /dev/null +++ b/_sass/minima/Nighthawkpages-styles.css @@ -0,0 +1,268 @@ +.post img { + display: block; + vertical-align: top; + margin-left: auto; + margin-right: auto; +} + +img.emoji { + display: inline !important; + vertical-align: baseline !important; +} + +.post figcaption { + text-align: center; + font-size: 0.8rem; + font-style: italic; + color: light-grey; +} + +.page-content { + -webkit-font-smoothing: antialiased !important; + text-rendering: optimizeLegibility !important; + font-family: "Segoe UI", SegoeUI, Roboto, "Segoe WP", "Helvetica Neue", "Helvetica", "Tahoma", "Arial", sans-serif !important; +} + +.post-content p, .post-content li { + font-size: 20px; + color: #515151; +} + +.post-link { + font-weight: normal; +} + +h1 { + margin-top: 2.5rem !important; +} + +h2 { + margin-top: 2rem !important; +} + +h3, h4 { + margin-top: 1.5rem !important; +} + +p { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +h1, h2, h3, h4 { + font-weight: normal !important; + margin-bottom: 0.5rem !important; +} +h1 code, h2 code, h3 code, h4 code { + font-size: 100%; +} + +pre { + margin-bottom: 1.5rem !important; +} + +.post-title { + margin-top: 0.5rem !important; +} + +li h3, li h4 { + margin-top: 0.05rem !important; + margin-bottom: 0.05rem !important; +} +li .post-meta-description { + color: rgb(88, 88, 88); + font-size: 15px; + margin-top: 0.05rem !important; + margin-bottom: 0.05rem !important; +} + +details.description[open] summary::after { + content: attr(data-open); +} + +details.description:not([open]) summary::after { + content: attr(data-close); +} + +.notebook-badge-image { + border: 0 !important; +} + +.footnotes { + font-size: 12px !important; +} +.footnotes p, .footnotes li { + font-size: 12px !important; +} + +.social-media-list .svg-icon { + width: 25px !important; + height: 23px !important; +} + +.anchor-link { + opacity: 0; + padding-left: 0.375em; + \-webkit-text-stroke: 1.75px white; + \-webkit-transition: opacity 0.2s ease-in-out 0.1s; + \-moz-transition: opacity 0.2s ease-in-out 0.1s; + \-ms-transition: opacity 0.2s ease-in-out 0.1s; +} + +h1:hover .anchor-link, +h2:hover .anchor-link, +h3:hover .anchor-link, +h4:hover .anchor-link, +h5:hover .anchor-link, +h6:hover .anchor-link { + opacity: 1; +} + +.category-tags { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + font-size: 105%; +} + +.post-meta-title, .post-meta { + margin-top: 0.25em !important; + margin-bottom: 0.25em !important; + font-size: 105%; +} + +.page-description { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + color: #585858; + font-size: 115%; +} + +.category-tags-icon { + font-size: 75% !important; + padding-left: 0.375em; + opacity: 35%; +} + +.category-tags-link { + color: rgb(187, 129, 129) !important; + font-size: 13px !important; +} + +.js-search-results { + padding-top: 0.2rem; +} + +.search-results-list-item { + padding-bottom: 1rem; +} + +.search-results-list-item .search-result-title { + font-size: 16px; + color: #d9230f; +} + +.search-result-rel-url { + color: silver; +} + +.search-results-list-item a { + display: block; + color: #777; +} + +.search-results-list-item a:hover, .search-results-list-item a:focus { + text-decoration: none; +} + +.search-results-list-item a:hover .search-result-title { + text-decoration: underline; +} + +.search-result-rel-date { + color: rgb(109, 120, 138); + font-size: 14px; +} + +.search-result-preview { + color: #777; + font-size: 16px; + margin-top: 0.02rem !important; + margin-bottom: 0.02rem !important; +} + +.search-result-highlight { + color: #2e0137; + font-weight: bold; +} + +table { + white-space: normal; + max-width: 100%; + font-size: 100%; + border: none; +} +table th { + text-align: center !important; +} + +::-webkit-scrollbar { + width: 14px; + height: 18px; +} + +::-webkit-scrollbar-thumb { + height: 6px; + border: 4px solid rgba(0, 0, 0, 0); + background-clip: padding-box; + -webkit-border-radius: 7px; + background-color: #9D9D9D; + -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05); +} + +::-webkit-scrollbar-button { + width: 0; + height: 0; + display: none; +} + +::-webkit-scrollbar-corner { + background-color: transparent; +} + +.output_text.output_execute_result pre { + white-space: pre-wrap; +} + +.output_wrapper { + overflow: auto; +} + +.svg-icon.orange { + width: 30px; + height: 23px; +} + +.code_cell { + margin: 1.5rem 0px !important; +} + +pre code { + font-size: 15px !important; +} + +.youtube-iframe-wrapper { + position: relative; + padding-bottom: 56.1%; + height: 0; + overflow: hidden; +} + +.youtube-iframe-wrapper iframe, +.youtube-iframe-wrapper object, +.youtube-iframe-wrapper embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +}/*# sourceMappingURL=Nighthawkpages-styles.css.map */ \ No newline at end of file diff --git a/_sass/minima/Nighthawkpages-styles.css.map b/_sass/minima/Nighthawkpages-styles.css.map new file mode 100644 index 0000000..d2acb0a --- /dev/null +++ b/_sass/minima/Nighthawkpages-styles.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["Nighthawkpages-styles.scss","Nighthawkpages-styles.css"],"names":[],"mappings":"AAGA;EACE,cAAA;EAEA,mBAAA;EACA,iBAAA;EACA,kBAAA;ACHF;;ADMA;EACA,0BAAA;EACA,mCAAA;ACHA;;ADMA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;ACHA;;ADMA;EACE,8CAAA;EACA,6CAAA;EACA,6HAAA;ACHF;;ADOA;EACA,eAAA;EACA,cAAA;ACJA;;ADOA;EACA,mBAAA;ACJA;;ADQA;EACA,6BAAA;ACLA;;ADQA;EACA,2BAAA;ACLA;;ADQA;EACA,6BAAA;ACLA;;ADQA;EACA,2BAAA;EACA,8BAAA;ACLA;;ADQA;EACA,8BAAA;EACA,gCAAA;ACLA;ADMA;EACA,eAAA;ACJA;;ADQA;EACA,gCAAA;ACLA;;ADSA;EAAc,6BAAA;ACLd;;ADQA;EACA,8BAAA;EACA,iCAAA;ACLA;ADOA;EACA,sBAAA;EACA,eAAA;EACA,8BAAA;EACA,iCAAA;ACLA;;ADYA;EACA,wBAAA;ACTA;;ADYA;EACA,yBAAA;ACTA;;ADaA;EACA,oBAAA;ACVA;;ADcA;EACA,0BAAA;ACXA;ADYA;EACA,0BAAA;ACVA;;ADgBA;EACA,sBAAA;EACA,uBAAA;ACbA;;ADmBA;EACA,UAAA;EACA,qBAAA;EACA,kCAAA;EACA,kDAAA;EACA,+CAAA;EACA,8CAAA;AChBA;;ADmBA;;;;;;EAMA,UAAA;AChBA;;ADqBA;EACA,8BAAA;EACA,iCAAA;EACA,eAAA;AClBA;;ADsBA;EACA,6BAAA;EACA,gCAAA;EACA,eAAA;ACnBA;;ADsBA;EACA,6BAAA;EACA,gCAAA;EACA,cAAA;EACA,eAAA;ACnBA;;ADuBA;EACA,yBAAA;EACA,qBAAA;EACA,YAAA;ACpBA;;ADsBA;EACA,oCAAA;EACA,0BAAA;ACnBA;;ADuBA;EAAoB,mBAAA;ACnBpB;;ADoBA;EAA2B,oBAAA;AChB3B;;ADiBA;EACA,eAAA;EACA,cAAA;ACdA;;ADgBA;EAAwB,aAAA;ACZxB;;ADaA;EAA6B,cAAA;EAAgB,WAAA;ACR7C;;ADSA;EAAsE,qBAAA;ACLtE;;ADMA;EAAwD,0BAAA;ACFxD;;ADIA;EACA,yBAAA;EACA,eAAA;ACDA;;ADIA;EACA,WAAA;EACA,eAAA;EACA,8BAAA;EACA,iCAAA;ACDA;;ADGA;EACA,cAAA;EACA,iBAAA;ACAA;;ADGA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;EACA,YAAA;ACAA;ADCA;EACA,6BAAA;ACCA;;ADIA;EACA,WAAA;EACA,YAAA;ACDA;;ADGA;EACA,WAAA;EACA,kCAAA;EACA,4BAAA;EACA,0BAAA;EACA,yBAAA;EACA,kGAAA;ACAA;;ADEA;EACA,QAAA;EACA,SAAA;EACA,aAAA;ACCA;;ADCA;EACA,6BAAA;ACEA;;ADGA;EACA,qBAAA;ACAA;;ADQA;EACA,cAAA;ACLA;;ADSA;EACA,WAAA;EACA,YAAA;ACNA;;ADSA;EACA,6BAAA;ACNA;;ADSA;EACA,0BAAA;ACNA;;ADUA;EACA,kBAAA;EACA,qBAAA;EACA,SAAA;EACA,gBAAA;ACPA;;ADUA;;;EAGA,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;ACPA","file":"Nighthawkpages-styles.css"} \ No newline at end of file diff --git a/_sass/minima/custom-styles.css b/_sass/minima/custom-styles.css new file mode 100644 index 0000000..aceaa83 --- /dev/null +++ b/_sass/minima/custom-styles.css @@ -0,0 +1,847 @@ +/*-----------------------------------*/ +/*--- IMPORT STYLES FOR Mortpages ---*/ +/*-----------------------------------*/ +/*--- CUSTOM STYLES FOR Nighthawkpages ---*/ +/*-----------------------------------*/ +/*----- ADD YOUR STYLES BELOW -------*/ +/*----------------------------------------------------*/ +/*----- Styling to change website to look good -------*/ +/*----------------------------------------------------*/ +body { + font: 100% Helvetica, sans-serif; + background-color: #F3F3F3; + color: #333; + overflow-x: hidden; + margin: 0; + padding: 0; + width: 100vw; +} + +/* Import Google font - Poppins */ +.P-contain { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + max-width: 900px; /* Adjust as needed */ + margin: 0 auto; + padding: 20px; +} + +.P-contain div { + width: calc(33.33% - 20px); /* Adjust for spacing */ + margin-bottom: 20px; + box-sizing: border-box; + padding: 20px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: Arial, Helvetica, sans-serif; +} + +body { + min-height: 100vh; +} + +/* Pre css */ +.flex { + display: flex; + align-items: center; +} + +.nav_image { + display: flex; + min-width: 55px; + justify-content: center; +} + +.nav_image img { + height: 35px; + width: 35px; + border-radius: 50%; + -o-object-fit: cover; + object-fit: cover; +} + +.container { + display: flex; + flex-wrap: wrap; /* Allow content to wrap onto multiple lines */ +} + +h1, h2, h3, h4, h5, h6, p, ul, li { + font-family: Arial, Helvetica, sans-serif; +} + +/* Sidebar */ +.sidebar { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 270px; + background: #202124; + padding: 15px 1px; + padding-right: 10px; + box-shadow: 0 0 6px rgba(0, 0, 0, 0); + transition: all 0.4s ease; + color: #FFFFFF; +} + +.sidebar.close { + width: 75px; +} + +.logo_name { + font-size: 22px; + color: white; + font-weight: 500px; + transition: all 0.3s ease; +} + +.sidebar.close .logo_name, +.sidebar.close #lock-icon, +.sidebar.close #sidebar-close { + opacity: 0; + pointer-events: none; +} + +#lock-icon, +#sidebar-close { + padding: 10px; + color: #4070f4; + font-size: 25px; + cursor: pointer; + margin-left: -4px; + transition: all 0.3s ease; +} + +#sidebar-close { + display: none; + color: #333; +} + +.menu_container { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-top: 10px; + overflow-y: auto; + height: calc(100% - 82px); +} + +.menu_container::-webkit-scrollbar { + display: none; +} + +.menu_title { + position: relative; + height: 50px; + width: 55px; +} + +.menu_title .title { + margin-left: 15px; + transition: all 0.3s ease; +} + +.sidebar.close .title { + opacity: 0; +} + +.menu_title .line { + position: absolute; + left: 50%; + height: 3px; + width: 20px; + border-radius: 25px; + background: black; + transition: all 0.3s ease; +} + +.menu_title .line { + opacity: 0; +} + +.sidebar.close .line { + opacity: 1; +} + +.item { + list-style: none; +} + +.link { + text-decoration: none; + border-radius: 8px; + margin-bottom: 8px; + color: white !important; + transition: all 0.4s ease; +} + +.link:hover { + color: #fff; + background-color: #010101; + transition: all 0.4s ease; + text-decoration: none; +} + +.link span { + white-space: nowrap; +} + +.link i { + height: 50px; + min-width: 55px; + display: flex; + font-size: 22px; + align-items: center; + justify-content: center; + border-radius: 4px; +} + +.title { + color: white !important; +} + +.line { + background: black !important; + color: black !important; +} + +.sidebar_profile { + padding-top: 15px; + margin-top: 15px; + gap: 15px; + border-top: 2px solid black; +} + +.sidebar_profile .name { + font-size: 18px; + color: black !important; +} + +.sidebar_profile .email { + font-size: 15px; + color: #FFFFFF; +} + +/* Navbar */ +#sidebar-open { + font-size: 30px; + color: #333; + cursor: pointer; + margin-right: 20px; + display: none; +} + +.search_box { + height: 46px; + max-width: 500px; + width: 100%; + border: 1px solid #aaa; + outline: none; + border-radius: 8px; + padding: 0 15px; + font-size: 18px; + color: #333; +} + +.navbar img { + height: 40px; + width: 40px; +} + +.data_text { + margin-left: 10px; +} + +/* Responsive */ +@media screen and (max-width: 1100px) { + .navbar { + left: 65%; + } +} +@media screen and (max-width: 800px) { + .sidebar { + left: 0; + z-index: 1000; + } + .sidebar.close { + left: -100%; + } + #sidebar-close { + display: block; + } + #lock-icon { + display: none; + } + .navbar { + left: 0; + max-width: 100%; + transform: translateX(0%); + } + #sidebar-open { + display: block; + } +} +.card { + margin-top: 10px; + margin-bottom: 10px; + padding: 10px; + border: 1px #fff solid; + color: #fff; + text-align: center; + margin: auto; + width: 30vw; + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); /* Adjust blur amount as needed */ + border-radius: 10px; /* Add border radius for rounded corners */ +} +.card h1 { + font-weight: bold; +} +.card button { + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + padding: 5px; + border: 1px #fff solid; + transition: 0.3s ease-in-out all; +} +.card button:hover { + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + background-color: rgba(255, 255, 255, 0.5); /* Adjust opacity as needed */ + padding: 5px; + border: 1px #fff solid; + transition: 0.3s ease-in-out all; +} + +.card:hover { + background-color: rgba(255, 255, 255, 0.3); + transition: 0.3s ease-in-out all; +} + +body { + color: #fff !important; + min-height: 100vh; + background: radial-gradient(ellipse at bottom, #162941 0%, #0c0d13 100%); + overflow: hidden; +} + +.stars { + display: flex; + justify-content: center; + align-items: center; + position: fixed; + top: -440px; + left: 395px; + width: 100%; + height: 120%; + transform: rotate(-45deg); + z-index: -10; +} + +.star { + --star-color: #6dd7fd; + --star-tail-length: 6em; + --star-tail-height: 2px; + --star-width: calc(var(--star-tail-length) / 6); + --fall-duration: 26s; + --tail-fade-duration: var(--fall-duration); + position: absolute; + top: var(--top-offset); + left: 0; + width: var(--star-tail-length); + height: var(--star-tail-height); + color: var(--star-color); + background: linear-gradient(45deg, currentColor, transparent); + border-radius: 50%; + filter: drop-shadow(0 0 6px currentColor); + transform: translate3d(104em, 0, 0); + animation: fall var(--fall-duration) var(--fall-delay) linear infinite, tail-fade var(--tail-fade-duration) var(--fall-delay) ease-out infinite; +} +@media screen and (max-width: 1750px) { + .star { + animation: fall var(--fall-duration) var(--fall-delay) linear infinite; + } +} +.star:nth-child(1) { + --star-tail-length: 6.51em; + --top-offset: 34.79vh; + --fall-duration: 8.736s; + --fall-delay: 4.059s; +} +.star:nth-child(2) { + --star-tail-length: 6.54em; + --top-offset: 11.07vh; + --fall-duration: 6.33s; + --fall-delay: 6.102s; +} +.star:nth-child(3) { + --star-tail-length: 7.41em; + --top-offset: 84.21vh; + --fall-duration: 7.609s; + --fall-delay: 3.312s; +} +.star:nth-child(4) { + --star-tail-length: 6.22em; + --top-offset: 14.46vh; + --fall-duration: 7.244s; + --fall-delay: 3.588s; +} +.star:nth-child(5) { + --star-tail-length: 5.63em; + --top-offset: 71.27vh; + --fall-duration: 7.978s; + --fall-delay: 7.882s; +} +.star:nth-child(6) { + --star-tail-length: 5.74em; + --top-offset: 42.8vh; + --fall-duration: 9.025s; + --fall-delay: 7.57s; +} +.star:nth-child(7) { + --star-tail-length: 5.71em; + --top-offset: 81.91vh; + --fall-duration: 7.306s; + --fall-delay: 4.262s; +} +.star:nth-child(8) { + --star-tail-length: 6.61em; + --top-offset: 46.47vh; + --fall-duration: 7.146s; + --fall-delay: 5.579s; +} +.star:nth-child(9) { + --star-tail-length: 7.05em; + --top-offset: 75.1vh; + --fall-duration: 7.266s; + --fall-delay: 5.947s; +} +.star:nth-child(10) { + --star-tail-length: 7.45em; + --top-offset: 51.53vh; + --fall-duration: 6.554s; + --fall-delay: 4.497s; +} +.star:nth-child(11) { + --star-tail-length: 5.06em; + --top-offset: 34.6vh; + --fall-duration: 9.157s; + --fall-delay: 1.992s; +} +.star:nth-child(12) { + --star-tail-length: 5.45em; + --top-offset: 40.37vh; + --fall-duration: 9.73s; + --fall-delay: 7.662s; +} +.star:nth-child(13) { + --star-tail-length: 5.3em; + --top-offset: 24.12vh; + --fall-duration: 8.491s; + --fall-delay: 0.309s; +} +.star:nth-child(14) { + --star-tail-length: 6.02em; + --top-offset: 95.08vh; + --fall-duration: 7.502s; + --fall-delay: 3.526s; +} +.star:nth-child(15) { + --star-tail-length: 5.73em; + --top-offset: 55.83vh; + --fall-duration: 6.48s; + --fall-delay: 7.585s; +} +.star:nth-child(16) { + --star-tail-length: 6.4em; + --top-offset: 17.1vh; + --fall-duration: 8.771s; + --fall-delay: 0.467s; +} +.star:nth-child(17) { + --star-tail-length: 6.26em; + --top-offset: 70.31vh; + --fall-duration: 6.341s; + --fall-delay: 7.332s; +} +.star:nth-child(18) { + --star-tail-length: 5.36em; + --top-offset: 11.04vh; + --fall-duration: 8.437s; + --fall-delay: 4.097s; +} +.star:nth-child(19) { + --star-tail-length: 7.04em; + --top-offset: 66.49vh; + --fall-duration: 6.241s; + --fall-delay: 7.537s; +} +.star:nth-child(20) { + --star-tail-length: 6.41em; + --top-offset: 73.83vh; + --fall-duration: 7.538s; + --fall-delay: 7.467s; +} +.star:nth-child(21) { + --star-tail-length: 5.53em; + --top-offset: 63.65vh; + --fall-duration: 7.887s; + --fall-delay: 5.714s; +} +.star:nth-child(22) { + --star-tail-length: 5.07em; + --top-offset: 58.76vh; + --fall-duration: 6.988s; + --fall-delay: 6.886s; +} +.star:nth-child(23) { + --star-tail-length: 5.35em; + --top-offset: 87.25vh; + --fall-duration: 7.317s; + --fall-delay: 1.186s; +} +.star:nth-child(24) { + --star-tail-length: 6.88em; + --top-offset: 20.75vh; + --fall-duration: 9.337s; + --fall-delay: 7.735s; +} +.star:nth-child(25) { + --star-tail-length: 5.38em; + --top-offset: 15.05vh; + --fall-duration: 8.389s; + --fall-delay: 6.267s; +} +.star:nth-child(26) { + --star-tail-length: 6.98em; + --top-offset: 60.81vh; + --fall-duration: 9.557s; + --fall-delay: 5.06s; +} +.star:nth-child(27) { + --star-tail-length: 7em; + --top-offset: 54.45vh; + --fall-duration: 9.507s; + --fall-delay: 1.939s; +} +.star:nth-child(28) { + --star-tail-length: 5.25em; + --top-offset: 38.35vh; + --fall-duration: 7.615s; + --fall-delay: 3.841s; +} +.star:nth-child(29) { + --star-tail-length: 6.46em; + --top-offset: 31.94vh; + --fall-duration: 8.795s; + --fall-delay: 4.026s; +} +.star:nth-child(30) { + --star-tail-length: 6.57em; + --top-offset: 60.7vh; + --fall-duration: 8.948s; + --fall-delay: 4.682s; +} +.star:nth-child(31) { + --star-tail-length: 6.36em; + --top-offset: 16.23vh; + --fall-duration: 6.978s; + --fall-delay: 7.225s; +} +.star:nth-child(32) { + --star-tail-length: 5.67em; + --top-offset: 76.61vh; + --fall-duration: 8.959s; + --fall-delay: 4.947s; +} +.star:nth-child(33) { + --star-tail-length: 5.2em; + --top-offset: 15.45vh; + --fall-duration: 7.847s; + --fall-delay: 2.796s; +} +.star:nth-child(34) { + --star-tail-length: 7.29em; + --top-offset: 1.47vh; + --fall-duration: 8.612s; + --fall-delay: 7.75s; +} +.star:nth-child(35) { + --star-tail-length: 5.98em; + --top-offset: 3.97vh; + --fall-duration: 9.137s; + --fall-delay: 6.866s; +} +.star:nth-child(36) { + --star-tail-length: 6.07em; + --top-offset: 88.25vh; + --fall-duration: 8.507s; + --fall-delay: 5.205s; +} +.star:nth-child(37) { + --star-tail-length: 5.4em; + --top-offset: 35.82vh; + --fall-duration: 8.245s; + --fall-delay: 2.781s; +} +.star:nth-child(38) { + --star-tail-length: 7.32em; + --top-offset: 83.48vh; + --fall-duration: 8.38s; + --fall-delay: 4.455s; +} +.star:nth-child(39) { + --star-tail-length: 6.19em; + --top-offset: 73.48vh; + --fall-duration: 8.799s; + --fall-delay: 7.377s; +} +.star:nth-child(40) { + --star-tail-length: 5.35em; + --top-offset: 18.82vh; + --fall-duration: 7.977s; + --fall-delay: 0.038s; +} +.star:nth-child(41) { + --star-tail-length: 7.27em; + --top-offset: 55.62vh; + --fall-duration: 9.795s; + --fall-delay: 6.555s; +} +.star:nth-child(42) { + --star-tail-length: 6.52em; + --top-offset: 15.5vh; + --fall-duration: 9.72s; + --fall-delay: 5.504s; +} +.star:nth-child(43) { + --star-tail-length: 6.38em; + --top-offset: 65.41vh; + --fall-duration: 9.495s; + --fall-delay: 4.552s; +} +.star:nth-child(44) { + --star-tail-length: 5.4em; + --top-offset: 65.81vh; + --fall-duration: 6.233s; + --fall-delay: 5.838s; +} +.star:nth-child(45) { + --star-tail-length: 6.84em; + --top-offset: 38.14vh; + --fall-duration: 6.906s; + --fall-delay: 4.337s; +} +.star:nth-child(46) { + --star-tail-length: 7.16em; + --top-offset: 67.63vh; + --fall-duration: 8.88s; + --fall-delay: 7.2s; +} +.star:nth-child(47) { + --star-tail-length: 7.33em; + --top-offset: 40.81vh; + --fall-duration: 9.85s; + --fall-delay: 7.353s; +} +.star:nth-child(48) { + --star-tail-length: 5.51em; + --top-offset: 39.02vh; + --fall-duration: 8.259s; + --fall-delay: 3.834s; +} +.star:nth-child(49) { + --star-tail-length: 7.49em; + --top-offset: 1.51vh; + --fall-duration: 9.833s; + --fall-delay: 0.126s; +} +.star:nth-child(50) { + --star-tail-length: 6.6em; + --top-offset: 55.01vh; + --fall-duration: 9.54s; + --fall-delay: 7.234s; +} +.star::before, .star::after { + position: absolute; + content: ""; + top: 0; + left: calc(var(--star-width) / -2); + width: var(--star-width); + height: 100%; + background: linear-gradient(45deg, transparent, currentColor, transparent); + border-radius: inherit; + animation: blink 12s linear infinite; +} +.star::before { + transform: rotate(45deg); +} +.star::after { + transform: rotate(-45deg); +} + +@keyframes fall { + to { + transform: translate3d(-30em, 0, 0); + } +} +@keyframes tail-fade { + 0%, 50% { + width: var(--star-tail-length); + opacity: 1; + } + 70%, 80% { + width: 0; + opacity: 0.4; + } + 100% { + width: 0; + opacity: 0; + } +} +@keyframes blink { + 50% { + opacity: 0.6; + } +} +.container { + display: flex; + flex-wrap: wrap; + justify-content: center; /* Center the divs horizontally */ + margin-top: 20px; /* Adjust top margin as needed */ + margin-left: 270px; +} + +.logo_items { + margin-left: 5%; +} + +.summary-row { + display: flex; + justify-content: space-between; /* Space out the cards within each row */ +} + +.summary-card { + width: 300px; /* Adjust width as needed */ + padding: 20px; + background-color: #E5E4E2; + border-radius: 10px; + margin-left: 50px; /* Adjust margin to match sidebar width */ + text-align: center; + margin-bottom: 20px; /* Adjust bottom margin as needed */ + float: right; +} + +.summary-card h2 { + margin-top: 0; +} + +.summary-card img { + width: 50px; /* Adjust icon size as needed */ + margin-bottom: 10px; +} + +h2 { + color: black; +} + +p { + color: black; +} + +.page-content { + padding: 0px !important; +} + +.container-profile { + display: flex; + flex-wrap: wrap; + justify-content: left; + height: 18vh; /* 20% of the viewport height */ + position: absolute; + top: 0; + z-index: -1; + width: 100%; + background-color: #2a2930; +} + +.sumText { + margin-left: 330px; + color: white; +} + +#initName { + height: 50px; + font-size: 36px; + margin-bottom: 10px; +} + +#detailText { + font-size: 22.5px; +} + +.allBoxes { + margin-top: 12%; +} + +.summary-row { + margin-top: 2%; +} + +body { + margin: 0; + padding: 0; + font-family: sans-serif; +} + +.logo { + width: 105px !important; + height: auto !important; +} + +.logo_name { + font-size: 65px; + margin-left: 10px; +} + +.logo_items flex { + margin-left: 10px; +} + +#sidebar_close { + height: 50px; +} + +/*-----------------------------------*/ +/*----- ADD YOUR STYLES BELOW -------*/ +/*-----------------------------------*/ +.chatbox { + padding: 25px; +} + +.send { + width: 10%; + display: inline; +} + +.User { + text-align: right; +} + +.AI { + text-align: left; +} + +.whiteText { + color: white; +} + +.AI-input { + width: 89%; + border-radius: 5px; + display: inline; +}/*# sourceMappingURL=custom-styles.css.map */ \ No newline at end of file diff --git a/_sass/minima/custom-styles.css.map b/_sass/minima/custom-styles.css.map new file mode 100644 index 0000000..8dfcd77 --- /dev/null +++ b/_sass/minima/custom-styles.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["custom-styles.scss","hot-ppl.scss","custom-styles.css","index_background.scss","profile.scss"],"names":[],"mappings":"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uBAAA;EACA,oBAAA;AD4UR;AChVM;EACE,0BAAA;EACA,qBAAA;EACA,sBAAA;EACA,oBAAA;ADkVR;ACtVM;EACE,yBAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADwVR;AC5VM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD8VR;AClWM;EACE,0BAAA;EACA,qBAAA;EACA,sBAAA;EACA,oBAAA;ADoWR;ACxWM;EACE,yBAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;AD0WR;AC9WM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADgXR;ACpXM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADsXR;AC1XM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD4XR;AChYM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADkYR;ACtYM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADwYR;AC5YM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD8YR;AClZM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADoZR;ACxZM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD0ZR;AC9ZM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADgaR;ACpaM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,mBAAA;ADsaR;AC1aM;EACE,uBAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD4aR;AChbM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADkbR;ACtbM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADwbR;AC5bM;EACE,0BAAA;EACA,oBAAA;EACA,uBAAA;EACA,oBAAA;AD8bR;AClcM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;ADocR;ACxcM;EACE,0BAAA;EACA,qBAAA;EACA,uBAAA;EACA,oBAAA;AD0cR;A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","file":"custom-styles.css"} \ No newline at end of file diff --git a/_sass/minima/custom-styles.scss b/_sass/minima/custom-styles.scss index 75582f8..7145143 100644 --- a/_sass/minima/custom-styles.scss +++ b/_sass/minima/custom-styles.scss @@ -56,3 +56,7 @@ border-radius: 5px; display: inline; } + +.whiteText { + color: white; + } \ No newline at end of file diff --git a/_sass/minima/custom-variables.css b/_sass/minima/custom-variables.css new file mode 100644 index 0000000..3e3682c --- /dev/null +++ b/_sass/minima/custom-variables.css @@ -0,0 +1 @@ +/*# sourceMappingURL=custom-variables.css.map */ \ No newline at end of file diff --git a/_sass/minima/custom-variables.css.map b/_sass/minima/custom-variables.css.map new file mode 100644 index 0000000..5c4fcf1 --- /dev/null +++ b/_sass/minima/custom-variables.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"custom-variables.css"} \ No newline at end of file diff --git a/_sass/minima/hacker/rouge-base16-dark.css b/_sass/minima/hacker/rouge-base16-dark.css new file mode 100644 index 0000000..f85dbea --- /dev/null +++ b/_sass/minima/hacker/rouge-base16-dark.css @@ -0,0 +1,69 @@ +/* + generated by rouge http://rouge.jneen.net/ + original base16 by Chris Kempson (https://github.com/chriskempson/base16) +*/ +.highlight { + color: #d0d0d0; +} +.highlight table td { + padding: 5px; +} +.highlight table pre { + margin: 0; +} +.highlight .w { + color: #d0d0d0; +} +.highlight .err { + color: #151515; + background-color: #ac4142; +} +.highlight .c, .highlight .cd, .highlight .cm, .highlight .c1, .highlight .cs { + color: #888; +} +.highlight .cp { + color: #f4bf75; +} +.highlight .o, .highlight .ow { + color: #f4bf75; +} +.highlight .p, .highlight .pi { + color: #d0d0d0; +} +.highlight .gi { + color: #90a959; +} +.highlight .gd { + color: #ac4142; +} +.highlight .gh { + color: #6a9fb5; + font-weight: bold; +} +.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { + color: #aa759f; +} +.highlight .kc, .highlight .kt, .highlight .kd { + color: #d28445; +} +.highlight .s, .highlight .sb, .highlight .sc, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { + color: #90a959; +} +.highlight .sr { + color: #75b5aa; +} +.highlight .si, .highlight .se { + color: #8f5536; +} +.highlight .nt, .highlight .nn, .highlight .nc, .highlight .no { + color: #f4bf75; +} +.highlight .na { + color: #6a9fb5; +} +.highlight .m, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mb, .highlight .mx { + color: #90a959; +} +.highlight .ss { + color: #90a959; +}/*# sourceMappingURL=rouge-base16-dark.css.map */ \ No newline at end of file diff --git a/_sass/minima/hacker/rouge-base16-dark.css.map b/_sass/minima/hacker/rouge-base16-dark.css.map new file mode 100644 index 0000000..ea2ba36 --- /dev/null +++ b/_sass/minima/hacker/rouge-base16-dark.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["rouge-base16-dark.scss","_default_colors.scss","rouge-base16-dark.css"],"names":[],"mappings":"AAAA;;;CAAA;AAOA;EAmBE,cCzBK;ACKP;AFsBE;EAAW,YAAA;AEnBb;AFoBE;EAAY,SAAA;AEjBd;AFkBE;EACE,cC9BG;ACcP;AFkBE;EACE,cC9BO;ED+BP,yBCnCY;ACmBhB;AFkBE;EACE,WC9BG;ACcP;AFkBE;EACE,cC7BI;ACaR;AFkBE;EACE,cChCI;ACgBR;AFkBE;EACE,cC9CG;AC8BP;AFkBE;EACE,cC/Ce;AC+BnB;AFkBE;EACE,cCrDY;ACqChB;AFkBE;EACE,cC9CU;ED+CV,iBAAA;AEhBJ;AFkBE;EACE,cC1DM;AC0CV;AFkBE;EACI,cClDO;ACkCb;AFkBE;EACE,cC/De;AC+CnB;AFkBE;EACE,cC5DU;AC4Cd;AFkBE;EACE,cC7DW;AC6Cf;AFkBE;EACE,cC/DI;AC+CR;AFkBE;EACE,cCpEU;ACoDd;AFkBE;EACE,cC9Ee;AC8DnB;AFkBE;EACE,cCjFe;ACiEnB","file":"rouge-base16-dark.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/daylight.css b/_sass/minima/hamilton/daylight.css new file mode 100644 index 0000000..9e4c5ca --- /dev/null +++ b/_sass/minima/hamilton/daylight.css @@ -0,0 +1,275 @@ +.highlight table td { + padding: 5px; +} + +.highlight table pre { + margin: 0; +} + +.highlight .cm { + color: #999988; + font-style: italic; +} + +.highlight .cp { + color: #999999; + font-weight: bold; +} + +.highlight .c1 { + color: #999988; + font-style: italic; +} + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #999988; + font-style: italic; +} + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} + +.highlight .gd { + color: #000000; + background-color: #ffdddd; +} + +.highlight .ge { + color: #000000; + font-style: italic; +} + +.highlight .gr { + color: #aa0000; +} + +.highlight .gh { + color: #999999; +} + +.highlight .gi { + color: #000000; + background-color: #ddffdd; +} + +.highlight .go { + color: #888888; +} + +.highlight .gp { + color: #555555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #aaaaaa; +} + +.highlight .gt { + color: #aa0000; +} + +.highlight .kc { + color: #000000; + font-weight: bold; +} + +.highlight .kd { + color: #000000; + font-weight: bold; +} + +.highlight .kn { + color: #000000; + font-weight: bold; +} + +.highlight .kp { + color: #000000; + font-weight: bold; +} + +.highlight .kr { + color: #000000; + font-weight: bold; +} + +.highlight .kt { + color: #445588; + font-weight: bold; +} + +.highlight .k, .highlight .kv { + color: #000000; + font-weight: bold; +} + +.highlight .mf { + color: #009999; +} + +.highlight .mh { + color: #009999; +} + +.highlight .il { + color: #009999; +} + +.highlight .mi { + color: #009999; +} + +.highlight .mo { + color: #009999; +} + +.highlight .m, .highlight .mb, .highlight .mx { + color: #009999; +} + +.highlight .sb { + color: #d14; +} + +.highlight .sc { + color: #d14; +} + +.highlight .sd { + color: #d14; +} + +.highlight .s2 { + color: #d14; +} + +.highlight .se { + color: #d14; +} + +.highlight .sh { + color: #d14; +} + +.highlight .si { + color: #d14; +} + +.highlight .sx { + color: #d14; +} + +.highlight .sr { + color: #009926; +} + +.highlight .s1 { + color: #d14; +} + +.highlight .ss { + color: #990073; +} + +.highlight .s, .highlight .sa, .highlight .dl { + color: #d14; +} + +.highlight .na { + color: #008080; +} + +.highlight .bp { + color: #999999; +} + +.highlight .nb { + color: #0086B3; +} + +.highlight .nc { + color: #445588; + font-weight: bold; +} + +.highlight .no { + color: #008080; +} + +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} + +.highlight .ni { + color: #800080; +} + +.highlight .ne { + color: #990000; + font-weight: bold; +} + +.highlight .nf, .highlight .fm { + color: #990000; + font-weight: bold; +} + +.highlight .nl { + color: #990000; + font-weight: bold; +} + +.highlight .nn { + color: #555555; +} + +.highlight .nt { + color: #000080; +} + +.highlight .vc { + color: #008080; +} + +.highlight .vg { + color: #008080; +} + +.highlight .vi { + color: #008080; +} + +.highlight .nv, .highlight .vm { + color: #008080; +} + +.highlight .ow { + color: #000000; + font-weight: bold; +} + +.highlight .o { + color: #000000; + font-weight: bold; +} + +.highlight .w { + color: #bbbbbb; +} + +.highlight { + background-color: #f8f8f8; +}/*# sourceMappingURL=daylight.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/daylight.css.map b/_sass/minima/hamilton/daylight.css.map new file mode 100644 index 0000000..7706f76 --- /dev/null +++ b/_sass/minima/hamilton/daylight.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["daylight.scss","daylight.css"],"names":[],"mappings":"AAyBA;EAAsB,YAAA;ACvBtB;;ADwBA;EAAuB,SAAA;ACpBvB;;ADqBA;EACE,cAAA;EACA,kBAAA;AClBF;;ADoBA;EACE,cAAA;EACA,iBAAA;ACjBF;;ADmBA;EACE,cAAA;EACA,kBAAA;AChBF;;ADkBA;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;ACfF;;ADiBA;EACE,cAAA;EACA,kBAAA;ACdF;;ADgBA;EACE,cAAA;EACA,yBAAA;ACbF;;ADeA;EACE,cAAA;EACA,yBAAA;ACZF;;ADcA;EACE,cAAA;EACA,kBAAA;ACXF;;ADaA;EACE,cAAA;ACVF;;ADYA;EACE,cAAA;ACTF;;ADWA;EACE,cAAA;EACA,yBAAA;ACRF;;ADUA;EACE,cAAA;ACPF;;ADSA;EACE,cAAA;ACNF;;ADQA;EACE,iBAAA;ACLF;;ADOA;EACE,cAAA;ACJF;;ADMA;EACE,cAAA;ACHF;;ADKA;EACE,cAAA;EACA,iBAAA;ACFF;;ADIA;EACE,cAAA;EACA,iBAAA;ACDF;;ADGA;EACE,cAAA;EACA,iBAAA;ACAF;;ADEA;EACE,cAAA;EACA,iBAAA;ACCF;;ADCA;EACE,cAAA;EACA,iBAAA;ACEF;;ADAA;EACE,cAAA;EACA,iBAAA;ACGF;;ADDA;EACE,cAAA;EACA,iBAAA;ACIF;;ADFA;EACE,cAAA;ACKF;;ADHA;EACE,cAAA;ACMF;;ADJA;EACE,cAAA;ACOF;;ADLA;EACE,cAAA;ACQF;;ADNA;EACE,cAAA;ACSF;;ADPA;EACE,cAAA;ACUF;;ADRA;EACE,WAAA;ACWF;;ADTA;EACE,WAAA;ACYF;;ADVA;EACE,WAAA;ACaF;;ADXA;EACE,WAAA;ACcF;;ADZA;EACE,WAAA;ACeF;;ADbA;EACE,WAAA;ACgBF;;ADdA;EACE,WAAA;ACiBF;;ADfA;EACE,WAAA;ACkBF;;ADhBA;EACE,cAAA;ACmBF;;ADjBA;EACE,WAAA;ACoBF;;ADlBA;EACE,cAAA;ACqBF;;ADnBA;EACE,WAAA;ACsBF;;ADpBA;EACE,cAAA;ACuBF;;ADrBA;EACE,cAAA;ACwBF;;ADtBA;EACE,cAAA;ACyBF;;ADvBA;EACE,cAAA;EACA,iBAAA;AC0BF;;ADxBA;EACE,cAAA;AC2BF;;ADzBA;EACE,cAAA;EACA,iBAAA;AC4BF;;AD1BA;EACE,cAAA;AC6BF;;AD3BA;EACE,cAAA;EACA,iBAAA;AC8BF;;AD5BA;EACE,cAAA;EACA,iBAAA;AC+BF;;AD7BA;EACE,cAAA;EACA,iBAAA;ACgCF;;AD9BA;EACE,cAAA;ACiCF;;AD/BA;EACE,cAAA;ACkCF;;ADhCA;EACE,cAAA;ACmCF;;ADjCA;EACE,cAAA;ACoCF;;ADlCA;EACE,cAAA;ACqCF;;ADnCA;EACE,cAAA;ACsCF;;ADpCA;EACE,cAAA;EACA,iBAAA;ACuCF;;ADrCA;EACE,cAAA;EACA,iBAAA;ACwCF;;ADtCA;EACE,cAAA;ACyCF;;ADvCA;EACE,yBAAA;AC0CF","file":"daylight.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/functions.css b/_sass/minima/hamilton/functions.css new file mode 100644 index 0000000..f0a7171 --- /dev/null +++ b/_sass/minima/hamilton/functions.css @@ -0,0 +1 @@ +/*# sourceMappingURL=functions.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/functions.css.map b/_sass/minima/hamilton/functions.css.map new file mode 100644 index 0000000..a68463d --- /dev/null +++ b/_sass/minima/hamilton/functions.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"functions.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/midnight.css b/_sass/minima/hamilton/midnight.css new file mode 100644 index 0000000..6f7c6fc --- /dev/null +++ b/_sass/minima/hamilton/midnight.css @@ -0,0 +1,276 @@ +.highlight table td { + padding: 5px; +} + +.highlight table pre { + margin: 0; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #75715e; + font-style: italic; +} + +.highlight .cm { + color: #75715e; + font-style: italic; +} + +.highlight .c1 { + color: #75715e; + font-style: italic; +} + +.highlight .cp { + color: #75715e; + font-weight: bold; +} + +.highlight .cs { + color: #75715e; + font-weight: bold; + font-style: italic; +} + +.highlight .err { + color: #960050; + background-color: #1e0010; +} + +.highlight .gi { + color: #ffffff; + background-color: #324932; +} + +.highlight .gd { + color: #ffffff; + background-color: #493131; +} + +.highlight .ge { + color: #000000; + font-style: italic; +} + +.highlight .gr { + color: #aa0000; +} + +.highlight .gt { + color: #aa0000; +} + +.highlight .gh { + color: #999999; +} + +.highlight .go { + color: #888888; +} + +.highlight .gp { + color: #555555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #aaaaaa; +} + +.highlight .k, .highlight .kv { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kc { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kd { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kp { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kr { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kt { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kn { + color: #f92672; + font-weight: bold; +} + +.highlight .ow { + color: #f92672; + font-weight: bold; +} + +.highlight .o { + color: #f92672; + font-weight: bold; +} + +.highlight .mf { + color: #ae81ff; +} + +.highlight .mh { + color: #ae81ff; +} + +.highlight .il { + color: #ae81ff; +} + +.highlight .mi { + color: #ae81ff; +} + +.highlight .mo { + color: #ae81ff; +} + +.highlight .m, .highlight .mb, .highlight .mx { + color: #ae81ff; +} + +.highlight .se { + color: #ae81ff; +} + +.highlight .sb { + color: #e6db74; +} + +.highlight .sc { + color: #e6db74; +} + +.highlight .sd { + color: #e6db74; +} + +.highlight .s2 { + color: #e6db74; +} + +.highlight .sh { + color: #e6db74; +} + +.highlight .si { + color: #e6db74; +} + +.highlight .sx { + color: #e6db74; +} + +.highlight .sr { + color: #e6db74; +} + +.highlight .s1 { + color: #e6db74; +} + +.highlight .ss { + color: #e6db74; +} + +.highlight .s, .highlight .sa, .highlight .dl { + color: #e6db74; +} + +.highlight .na { + color: #a6e22e; +} + +.highlight .nc { + color: #a6e22e; + font-weight: bold; +} + +.highlight .nd { + color: #a6e22e; + font-weight: bold; +} + +.highlight .ne { + color: #a6e22e; + font-weight: bold; +} + +.highlight .nf, .highlight .fm { + color: #a6e22e; + font-weight: bold; +} + +.highlight .no { + color: #66d9ef; +} + +.highlight .bp { + color: #f8f8f2; +} + +.highlight .nb { + color: #f8f8f2; +} + +.highlight .ni { + color: #f8f8f2; +} + +.highlight .nn { + color: #f8f8f2; +} + +.highlight .vc { + color: #f8f8f2; +} + +.highlight .vg { + color: #f8f8f2; +} + +.highlight .vi { + color: #f8f8f2; +} + +.highlight .nv, .highlight .vm { + color: #f8f8f2; +} + +.highlight .w { + color: #f8f8f2; +} + +.highlight .nl { + color: #f8f8f2; + font-weight: bold; +} + +.highlight .nt { + color: #f92672; +} + +.highlight { + color: #f8f8f2; + background-color: #49483e; +}/*# sourceMappingURL=midnight.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/midnight.css.map b/_sass/minima/hamilton/midnight.css.map new file mode 100644 index 0000000..0db83a2 --- /dev/null +++ b/_sass/minima/hamilton/midnight.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["midnight.scss","midnight.css"],"names":[],"mappings":"AAyBA;EAAsB,YAAA;ACvBtB;;ADwBA;EAAuB,SAAA;ACpBvB;;ADqBA;EACE,cAAA;EACA,kBAAA;AClBF;;ADoBA;EACE,cAAA;EACA,kBAAA;ACjBF;;ADmBA;EACE,cAAA;EACA,kBAAA;AChBF;;ADkBA;EACE,cAAA;EACA,iBAAA;ACfF;;ADiBA;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;ACdF;;ADgBA;EACE,cAAA;EACA,yBAAA;ACbF;;ADeA;EACE,cAAA;EACA,yBAAA;ACZF;;ADcA;EACE,cAAA;EACA,yBAAA;ACXF;;ADaA;EACE,cAAA;EACA,kBAAA;ACVF;;ADYA;EACE,cAAA;ACTF;;ADWA;EACE,cAAA;ACRF;;ADUA;EACE,cAAA;ACPF;;ADSA;EACE,cAAA;ACNF;;ADQA;EACE,cAAA;ACLF;;ADOA;EACE,iBAAA;ACJF;;ADMA;EACE,cAAA;ACHF;;ADKA;EACE,cAAA;EACA,iBAAA;ACFF;;ADIA;EACE,cAAA;EACA,iBAAA;ACDF;;ADGA;EACE,cAAA;EACA,iBAAA;ACAF;;ADEA;EACE,cAAA;EACA,iBAAA;ACCF;;ADCA;EACE,cAAA;EACA,iBAAA;ACEF;;ADAA;EACE,cAAA;EACA,iBAAA;ACGF;;ADDA;EACE,cAAA;EACA,iBAAA;ACIF;;ADFA;EACE,cAAA;EACA,iBAAA;ACKF;;ADHA;EACE,cAAA;EACA,iBAAA;ACMF;;ADJA;EACE,cAAA;ACOF;;ADLA;EACE,cAAA;ACQF;;ADNA;EACE,cAAA;ACSF;;ADPA;EACE,cAAA;ACUF;;ADRA;EACE,cAAA;ACWF;;ADTA;EACE,cAAA;ACYF;;ADVA;EACE,cAAA;ACaF;;ADXA;EACE,cAAA;ACcF;;ADZA;EACE,cAAA;ACeF;;ADbA;EACE,cAAA;ACgBF;;ADdA;EACE,cAAA;ACiBF;;ADfA;EACE,cAAA;ACkBF;;ADhBA;EACE,cAAA;ACmBF;;ADjBA;EACE,cAAA;ACoBF;;ADlBA;EACE,cAAA;ACqBF;;ADnBA;EACE,cAAA;ACsBF;;ADpBA;EACE,cAAA;ACuBF;;ADrBA;EACE,cAAA;ACwBF;;ADtBA;EACE,cAAA;ACyBF;;ADvBA;EACE,cAAA;EACA,iBAAA;AC0BF;;ADxBA;EACE,cAAA;EACA,iBAAA;AC2BF;;ADzBA;EACE,cAAA;EACA,iBAAA;AC4BF;;AD1BA;EACE,cAAA;EACA,iBAAA;AC6BF;;AD3BA;EACE,cAAA;AC8BF;;AD5BA;EACE,cAAA;AC+BF;;AD7BA;EACE,cAAA;ACgCF;;AD9BA;EACE,cAAA;ACiCF;;AD/BA;EACE,cAAA;ACkCF;;ADhCA;EACE,cAAA;ACmCF;;ADjCA;EACE,cAAA;ACoCF;;ADlCA;EACE,cAAA;ACqCF;;ADnCA;EACE,cAAA;ACsCF;;ADpCA;EACE,cAAA;ACuCF;;ADrCA;EACE,cAAA;EACA,iBAAA;ACwCF;;ADtCA;EACE,cAAA;ACyCF;;ADvCA;EACE,cAAA;EACA,yBAAA;AC0CF","file":"midnight.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/normalize.css b/_sass/minima/hamilton/normalize.css new file mode 100644 index 0000000..8a64864 --- /dev/null +++ b/_sass/minima/hamilton/normalize.css @@ -0,0 +1,309 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +/* Document + ========================================================================== */ +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ +/** + * Remove the margin in all browsers. + */ +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ +/** + * Remove the gray background on active links in IE 10. + */ +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ +/** + * Remove the border on images inside links in IE 10. + */ +img { + border-style: none; +} + +/* Forms + ========================================================================== */ +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ +button::-moz-focus-inner, +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ +button:-moz-focusring, +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ +[type=checkbox], +[type=radio] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ +[type=search] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ +[type=search]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ +/** + * Add the correct display in IE 10+. + */ +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ +[hidden] { + display: none; +}/*# sourceMappingURL=normalize.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/normalize.css.map b/_sass/minima/hamilton/normalize.css.map new file mode 100644 index 0000000..8b78d01 --- /dev/null +++ b/_sass/minima/hamilton/normalize.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["normalize.scss","normalize.css"],"names":[],"mappings":"AAAA,2EAAA;AAEA;+EAAA;AAGA;;;EAAA;AAKA;EACE,iBAAA,EAAA,MAAA;EACA,8BAAA,EAAA,MAAA;ACFF;;ADKA;+EAAA;AAGA;;EAAA;AAIA;EACE,SAAA;ACJF;;ADOA;;EAAA;AAIA;EACE,cAAA;ACLF;;ADQA;;;EAAA;AAKA;EACE,cAAA;EACA,gBAAA;ACNF;;ADSA;+EAAA;AAGA;;;EAAA;AAKA;EACE,uBAAA,EAAA,MAAA;EACA,SAAA,EAAA,MAAA;EACA,iBAAA,EAAA,MAAA;ACRF;;ADWA;;;EAAA;AAKA;EACE,iCAAA,EAAA,MAAA;EACA,cAAA,EAAA,MAAA;ACTF;;ADYA;+EAAA;AAGA;;EAAA;AAIA;EACE,6BAAA;ACXF;;ADcA;;;EAAA;AAKA;EACE,mBAAA,EAAA,MAAA;EACA,0BAAA,EAAA,MAAA;EACA,yCAAA;UAAA,iCAAA,EAAA,MAAA;ACZF;;ADeA;;EAAA;AAIA;;EAEE,mBAAA;ACbF;;ADgBA;;;EAAA;AAKA;;;EAGE,iCAAA,EAAA,MAAA;EACA,cAAA,EAAA,MAAA;ACdF;;ADiBA;;EAAA;AAIA;EACE,cAAA;ACfF;;ADkBA;;;EAAA;AAKA;;EAEE,cAAA;EACA,cAAA;EACA,kBAAA;EACA,wBAAA;AChBF;;ADmBA;EACE,eAAA;AChBF;;ADmBA;EACE,WAAA;AChBF;;ADmBA;+EAAA;AAGA;;EAAA;AAIA;EACE,kBAAA;AClBF;;ADqBA;+EAAA;AAGA;;;EAAA;AAKA;;;;;EAKE,oBAAA,EAAA,MAAA;EACA,eAAA,EAAA,MAAA;EACA,iBAAA,EAAA,MAAA;EACA,SAAA,EAAA,MAAA;ACpBF;;ADuBA;;;EAAA;AAKA;QACQ,MAAA;EACN,iBAAA;ACrBF;;ADwBA;;;EAAA;AAKA;SACS,MAAA;EACP,oBAAA;ACtBF;;ADyBA;;EAAA;AAIA;;;;EAIE,0BAAA;ACvBF;;AD0BA;;EAAA;AAIA;;;;EAIE,kBAAA;EACA,UAAA;ACxBF;;AD2BA;;EAAA;AAIA;;;;EAIE,8BAAA;ACzBF;;AD4BA;;EAAA;AAIA;EACE,8BAAA;AC1BF;;AD6BA;;;;;EAAA;AAOA;EACE,sBAAA,EAAA,MAAA;EACA,cAAA,EAAA,MAAA;EACA,cAAA,EAAA,MAAA;EACA,eAAA,EAAA,MAAA;EACA,UAAA,EAAA,MAAA;EACA,mBAAA,EAAA,MAAA;AC3BF;;AD8BA;;EAAA;AAIA;EACE,wBAAA;AC5BF;;AD+BA;;EAAA;AAIA;EACE,cAAA;AC7BF;;ADgCA;;;EAAA;AAKA;;EAEE,sBAAA,EAAA,MAAA;EACA,UAAA,EAAA,MAAA;AC9BF;;ADiCA;;EAAA;AAIA;;EAEE,YAAA;AC/BF;;ADkCA;;;EAAA;AAKA;EACE,6BAAA,EAAA,MAAA;EACA,oBAAA,EAAA,MAAA;AChCF;;ADmCA;;EAAA;AAIA;EACE,wBAAA;ACjCF;;ADoCA;;;EAAA;AAKA;EACE,0BAAA,EAAA,MAAA;EACA,aAAA,EAAA,MAAA;AClCF;;ADqCA;+EAAA;AAGA;;EAAA;AAIA;EACE,cAAA;ACpCF;;ADuCA;;EAAA;AAIA;EACE,kBAAA;ACrCF;;ADwCA;+EAAA;AAGA;;EAAA;AAIA;EACE,aAAA;ACvCF;;AD0CA;;EAAA;AAIA;EACE,aAAA;ACxCF","file":"normalize.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/override-variables.css b/_sass/minima/hamilton/override-variables.css new file mode 100644 index 0000000..8fb4de7 --- /dev/null +++ b/_sass/minima/hamilton/override-variables.css @@ -0,0 +1 @@ +/*# sourceMappingURL=override-variables.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/override-variables.css.map b/_sass/minima/hamilton/override-variables.css.map new file mode 100644 index 0000000..89c0eb1 --- /dev/null +++ b/_sass/minima/hamilton/override-variables.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"override-variables.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/daylight.css b/_sass/minima/hamilton/skins/daylight.css new file mode 100644 index 0000000..9e4c5ca --- /dev/null +++ b/_sass/minima/hamilton/skins/daylight.css @@ -0,0 +1,275 @@ +.highlight table td { + padding: 5px; +} + +.highlight table pre { + margin: 0; +} + +.highlight .cm { + color: #999988; + font-style: italic; +} + +.highlight .cp { + color: #999999; + font-weight: bold; +} + +.highlight .c1 { + color: #999988; + font-style: italic; +} + +.highlight .cs { + color: #999999; + font-weight: bold; + font-style: italic; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #999988; + font-style: italic; +} + +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} + +.highlight .gd { + color: #000000; + background-color: #ffdddd; +} + +.highlight .ge { + color: #000000; + font-style: italic; +} + +.highlight .gr { + color: #aa0000; +} + +.highlight .gh { + color: #999999; +} + +.highlight .gi { + color: #000000; + background-color: #ddffdd; +} + +.highlight .go { + color: #888888; +} + +.highlight .gp { + color: #555555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #aaaaaa; +} + +.highlight .gt { + color: #aa0000; +} + +.highlight .kc { + color: #000000; + font-weight: bold; +} + +.highlight .kd { + color: #000000; + font-weight: bold; +} + +.highlight .kn { + color: #000000; + font-weight: bold; +} + +.highlight .kp { + color: #000000; + font-weight: bold; +} + +.highlight .kr { + color: #000000; + font-weight: bold; +} + +.highlight .kt { + color: #445588; + font-weight: bold; +} + +.highlight .k, .highlight .kv { + color: #000000; + font-weight: bold; +} + +.highlight .mf { + color: #009999; +} + +.highlight .mh { + color: #009999; +} + +.highlight .il { + color: #009999; +} + +.highlight .mi { + color: #009999; +} + +.highlight .mo { + color: #009999; +} + +.highlight .m, .highlight .mb, .highlight .mx { + color: #009999; +} + +.highlight .sb { + color: #d14; +} + +.highlight .sc { + color: #d14; +} + +.highlight .sd { + color: #d14; +} + +.highlight .s2 { + color: #d14; +} + +.highlight .se { + color: #d14; +} + +.highlight .sh { + color: #d14; +} + +.highlight .si { + color: #d14; +} + +.highlight .sx { + color: #d14; +} + +.highlight .sr { + color: #009926; +} + +.highlight .s1 { + color: #d14; +} + +.highlight .ss { + color: #990073; +} + +.highlight .s, .highlight .sa, .highlight .dl { + color: #d14; +} + +.highlight .na { + color: #008080; +} + +.highlight .bp { + color: #999999; +} + +.highlight .nb { + color: #0086B3; +} + +.highlight .nc { + color: #445588; + font-weight: bold; +} + +.highlight .no { + color: #008080; +} + +.highlight .nd { + color: #3c5d5d; + font-weight: bold; +} + +.highlight .ni { + color: #800080; +} + +.highlight .ne { + color: #990000; + font-weight: bold; +} + +.highlight .nf, .highlight .fm { + color: #990000; + font-weight: bold; +} + +.highlight .nl { + color: #990000; + font-weight: bold; +} + +.highlight .nn { + color: #555555; +} + +.highlight .nt { + color: #000080; +} + +.highlight .vc { + color: #008080; +} + +.highlight .vg { + color: #008080; +} + +.highlight .vi { + color: #008080; +} + +.highlight .nv, .highlight .vm { + color: #008080; +} + +.highlight .ow { + color: #000000; + font-weight: bold; +} + +.highlight .o { + color: #000000; + font-weight: bold; +} + +.highlight .w { + color: #bbbbbb; +} + +.highlight { + background-color: #f8f8f8; +}/*# sourceMappingURL=daylight.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/daylight.css.map b/_sass/minima/hamilton/skins/daylight.css.map new file mode 100644 index 0000000..7706f76 --- /dev/null +++ b/_sass/minima/hamilton/skins/daylight.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["daylight.scss","daylight.css"],"names":[],"mappings":"AAyBA;EAAsB,YAAA;ACvBtB;;ADwBA;EAAuB,SAAA;ACpBvB;;ADqBA;EACE,cAAA;EACA,kBAAA;AClBF;;ADoBA;EACE,cAAA;EACA,iBAAA;ACjBF;;ADmBA;EACE,cAAA;EACA,kBAAA;AChBF;;ADkBA;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;ACfF;;ADiBA;EACE,cAAA;EACA,kBAAA;ACdF;;ADgBA;EACE,cAAA;EACA,yBAAA;ACbF;;ADeA;EACE,cAAA;EACA,yBAAA;ACZF;;ADcA;EACE,cAAA;EACA,kBAAA;ACXF;;ADaA;EACE,cAAA;ACVF;;ADYA;EACE,cAAA;ACTF;;ADWA;EACE,cAAA;EACA,yBAAA;ACRF;;ADUA;EACE,cAAA;ACPF;;ADSA;EACE,cAAA;ACNF;;ADQA;EACE,iBAAA;ACLF;;ADOA;EACE,cAAA;ACJF;;ADMA;EACE,cAAA;ACHF;;ADKA;EACE,cAAA;EACA,iBAAA;ACFF;;ADIA;EACE,cAAA;EACA,iBAAA;ACDF;;ADGA;EACE,cAAA;EACA,iBAAA;ACAF;;ADEA;EACE,cAAA;EACA,iBAAA;ACCF;;ADCA;EACE,cAAA;EACA,iBAAA;ACEF;;ADAA;EACE,cAAA;EACA,iBAAA;ACGF;;ADDA;EACE,cAAA;EACA,iBAAA;ACIF;;ADFA;EACE,cAAA;ACKF;;ADHA;EACE,cAAA;ACMF;;ADJA;EACE,cAAA;ACOF;;ADLA;EACE,cAAA;ACQF;;ADNA;EACE,cAAA;ACSF;;ADPA;EACE,cAAA;ACUF;;ADRA;EACE,WAAA;ACWF;;ADTA;EACE,WAAA;ACYF;;ADVA;EACE,WAAA;ACaF;;ADXA;EACE,WAAA;ACcF;;ADZA;EACE,WAAA;ACeF;;ADbA;EACE,WAAA;ACgBF;;ADdA;EACE,WAAA;ACiBF;;ADfA;EACE,WAAA;ACkBF;;ADhBA;EACE,cAAA;ACmBF;;ADjBA;EACE,WAAA;ACoBF;;ADlBA;EACE,cAAA;ACqBF;;ADnBA;EACE,WAAA;ACsBF;;ADpBA;EACE,cAAA;ACuBF;;ADrBA;EACE,cAAA;ACwBF;;ADtBA;EACE,cAAA;ACyBF;;ADvBA;EACE,cAAA;EACA,iBAAA;AC0BF;;ADxBA;EACE,cAAA;AC2BF;;ADzBA;EACE,cAAA;EACA,iBAAA;AC4BF;;AD1BA;EACE,cAAA;AC6BF;;AD3BA;EACE,cAAA;EACA,iBAAA;AC8BF;;AD5BA;EACE,cAAA;EACA,iBAAA;AC+BF;;AD7BA;EACE,cAAA;EACA,iBAAA;ACgCF;;AD9BA;EACE,cAAA;ACiCF;;AD/BA;EACE,cAAA;ACkCF;;ADhCA;EACE,cAAA;ACmCF;;ADjCA;EACE,cAAA;ACoCF;;ADlCA;EACE,cAAA;ACqCF;;ADnCA;EACE,cAAA;ACsCF;;ADpCA;EACE,cAAA;EACA,iBAAA;ACuCF;;ADrCA;EACE,cAAA;EACA,iBAAA;ACwCF;;ADtCA;EACE,cAAA;ACyCF;;ADvCA;EACE,yBAAA;AC0CF","file":"daylight.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/midnight.css b/_sass/minima/hamilton/skins/midnight.css new file mode 100644 index 0000000..6f7c6fc --- /dev/null +++ b/_sass/minima/hamilton/skins/midnight.css @@ -0,0 +1,276 @@ +.highlight table td { + padding: 5px; +} + +.highlight table pre { + margin: 0; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cpf { + color: #75715e; + font-style: italic; +} + +.highlight .cm { + color: #75715e; + font-style: italic; +} + +.highlight .c1 { + color: #75715e; + font-style: italic; +} + +.highlight .cp { + color: #75715e; + font-weight: bold; +} + +.highlight .cs { + color: #75715e; + font-weight: bold; + font-style: italic; +} + +.highlight .err { + color: #960050; + background-color: #1e0010; +} + +.highlight .gi { + color: #ffffff; + background-color: #324932; +} + +.highlight .gd { + color: #ffffff; + background-color: #493131; +} + +.highlight .ge { + color: #000000; + font-style: italic; +} + +.highlight .gr { + color: #aa0000; +} + +.highlight .gt { + color: #aa0000; +} + +.highlight .gh { + color: #999999; +} + +.highlight .go { + color: #888888; +} + +.highlight .gp { + color: #555555; +} + +.highlight .gs { + font-weight: bold; +} + +.highlight .gu { + color: #aaaaaa; +} + +.highlight .k, .highlight .kv { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kc { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kd { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kp { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kr { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kt { + color: #66d9ef; + font-weight: bold; +} + +.highlight .kn { + color: #f92672; + font-weight: bold; +} + +.highlight .ow { + color: #f92672; + font-weight: bold; +} + +.highlight .o { + color: #f92672; + font-weight: bold; +} + +.highlight .mf { + color: #ae81ff; +} + +.highlight .mh { + color: #ae81ff; +} + +.highlight .il { + color: #ae81ff; +} + +.highlight .mi { + color: #ae81ff; +} + +.highlight .mo { + color: #ae81ff; +} + +.highlight .m, .highlight .mb, .highlight .mx { + color: #ae81ff; +} + +.highlight .se { + color: #ae81ff; +} + +.highlight .sb { + color: #e6db74; +} + +.highlight .sc { + color: #e6db74; +} + +.highlight .sd { + color: #e6db74; +} + +.highlight .s2 { + color: #e6db74; +} + +.highlight .sh { + color: #e6db74; +} + +.highlight .si { + color: #e6db74; +} + +.highlight .sx { + color: #e6db74; +} + +.highlight .sr { + color: #e6db74; +} + +.highlight .s1 { + color: #e6db74; +} + +.highlight .ss { + color: #e6db74; +} + +.highlight .s, .highlight .sa, .highlight .dl { + color: #e6db74; +} + +.highlight .na { + color: #a6e22e; +} + +.highlight .nc { + color: #a6e22e; + font-weight: bold; +} + +.highlight .nd { + color: #a6e22e; + font-weight: bold; +} + +.highlight .ne { + color: #a6e22e; + font-weight: bold; +} + +.highlight .nf, .highlight .fm { + color: #a6e22e; + font-weight: bold; +} + +.highlight .no { + color: #66d9ef; +} + +.highlight .bp { + color: #f8f8f2; +} + +.highlight .nb { + color: #f8f8f2; +} + +.highlight .ni { + color: #f8f8f2; +} + +.highlight .nn { + color: #f8f8f2; +} + +.highlight .vc { + color: #f8f8f2; +} + +.highlight .vg { + color: #f8f8f2; +} + +.highlight .vi { + color: #f8f8f2; +} + +.highlight .nv, .highlight .vm { + color: #f8f8f2; +} + +.highlight .w { + color: #f8f8f2; +} + +.highlight .nl { + color: #f8f8f2; + font-weight: bold; +} + +.highlight .nt { + color: #f92672; +} + +.highlight { + color: #f8f8f2; + background-color: #49483e; +}/*# sourceMappingURL=midnight.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/midnight.css.map b/_sass/minima/hamilton/skins/midnight.css.map new file mode 100644 index 0000000..0db83a2 --- /dev/null +++ b/_sass/minima/hamilton/skins/midnight.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["midnight.scss","midnight.css"],"names":[],"mappings":"AAyBA;EAAsB,YAAA;ACvBtB;;ADwBA;EAAuB,SAAA;ACpBvB;;ADqBA;EACE,cAAA;EACA,kBAAA;AClBF;;ADoBA;EACE,cAAA;EACA,kBAAA;ACjBF;;ADmBA;EACE,cAAA;EACA,kBAAA;AChBF;;ADkBA;EACE,cAAA;EACA,iBAAA;ACfF;;ADiBA;EACE,cAAA;EACA,iBAAA;EACA,kBAAA;ACdF;;ADgBA;EACE,cAAA;EACA,yBAAA;ACbF;;ADeA;EACE,cAAA;EACA,yBAAA;ACZF;;ADcA;EACE,cAAA;EACA,yBAAA;ACXF;;ADaA;EACE,cAAA;EACA,kBAAA;ACVF;;ADYA;EACE,cAAA;ACTF;;ADWA;EACE,cAAA;ACRF;;ADUA;EACE,cAAA;ACPF;;ADSA;EACE,cAAA;ACNF;;ADQA;EACE,cAAA;ACLF;;ADOA;EACE,iBAAA;ACJF;;ADMA;EACE,cAAA;ACHF;;ADKA;EACE,cAAA;EACA,iBAAA;ACFF;;ADIA;EACE,cAAA;EACA,iBAAA;ACDF;;ADGA;EACE,cAAA;EACA,iBAAA;ACAF;;ADEA;EACE,cAAA;EACA,iBAAA;ACCF;;ADCA;EACE,cAAA;EACA,iBAAA;ACEF;;ADAA;EACE,cAAA;EACA,iBAAA;ACGF;;ADDA;EACE,cAAA;EACA,iBAAA;ACIF;;ADFA;EACE,cAAA;EACA,iBAAA;ACKF;;ADHA;EACE,cAAA;EACA,iBAAA;ACMF;;ADJA;EACE,cAAA;ACOF;;ADLA;EACE,cAAA;ACQF;;ADNA;EACE,cAAA;ACSF;;ADPA;EACE,cAAA;ACUF;;ADRA;EACE,cAAA;ACWF;;ADTA;EACE,cAAA;ACYF;;ADVA;EACE,cAAA;ACaF;;ADXA;EACE,cAAA;ACcF;;ADZA;EACE,cAAA;ACeF;;ADbA;EACE,cAAA;ACgBF;;ADdA;EACE,cAAA;ACiBF;;ADfA;EACE,cAAA;ACkBF;;ADhBA;EACE,cAAA;ACmBF;;ADjBA;EACE,cAAA;ACoBF;;ADlBA;EACE,cAAA;ACqBF;;ADnBA;EACE,cAAA;ACsBF;;ADpBA;EACE,cAAA;ACuBF;;ADrBA;EACE,cAAA;ACwBF;;ADtBA;EACE,cAAA;ACyBF;;ADvBA;EACE,cAAA;EACA,iBAAA;AC0BF;;ADxBA;EACE,cAAA;EACA,iBAAA;AC2BF;;ADzBA;EACE,cAAA;EACA,iBAAA;AC4BF;;AD1BA;EACE,cAAA;EACA,iBAAA;AC6BF;;AD3BA;EACE,cAAA;AC8BF;;AD5BA;EACE,cAAA;AC+BF;;AD7BA;EACE,cAAA;ACgCF;;AD9BA;EACE,cAAA;ACiCF;;AD/BA;EACE,cAAA;ACkCF;;ADhCA;EACE,cAAA;ACmCF;;ADjCA;EACE,cAAA;ACoCF;;ADlCA;EACE,cAAA;ACqCF;;ADnCA;EACE,cAAA;ACsCF;;ADpCA;EACE,cAAA;ACuCF;;ADrCA;EACE,cAAA;EACA,iBAAA;ACwCF;;ADtCA;EACE,cAAA;ACyCF;;ADvCA;EACE,cAAA;EACA,yBAAA;AC0CF","file":"midnight.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/sunrise.css b/_sass/minima/hamilton/skins/sunrise.css new file mode 100644 index 0000000..8d4e638 --- /dev/null +++ b/_sass/minima/hamilton/skins/sunrise.css @@ -0,0 +1,113 @@ +.highlight table td { + padding: 5px; +} + +.highlight table pre { + margin: 0; +} + +.highlight, .highlight .w { + color: #282828; + background-color: #fbf1c7; +} + +.highlight .err { + color: #9d0006; + background-color: #be9b11; + font-weight: bold; +} + +.highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs { + color: #928374; + font-style: italic; +} + +.highlight .cp { + color: #427b58; +} + +.highlight .nt { + color: #9d0006; +} + +.highlight .o, .highlight .ow { + color: #282828; +} + +.highlight .p, .highlight .pi { + color: #282828; +} + +.highlight .gi { + color: #79740e; + background-color: #fbf1c7; +} + +.highlight .gd { + color: #9d0006; + background-color: #fbf1c7; +} + +.highlight .gh { + color: #79740e; + font-weight: bold; +} + +.highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv { + color: #9d0006; +} + +.highlight .kc { + color: #8f3f71; +} + +.highlight .kt { + color: #b57614; +} + +.highlight .kd { + color: #af3a03; +} + +.highlight .s, .highlight .sa, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 { + color: #79740e; + font-style: italic; +} + +.highlight .si { + color: #79740e; + font-style: italic; +} + +.highlight .sr { + color: #79740e; + font-style: italic; +} + +.highlight .se { + color: #af3a03; +} + +.highlight .nn { + color: #427b58; +} + +.highlight .nc { + color: #427b58; +} + +.highlight .no { + color: #8f3f71; +} + +.highlight .na { + color: #79740e; +} + +.highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx { + color: #8f3f71; +} + +.highlight .ss { + color: #076678; +}/*# sourceMappingURL=sunrise.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/skins/sunrise.css.map b/_sass/minima/hamilton/skins/sunrise.css.map new file mode 100644 index 0000000..14bf553 --- /dev/null +++ b/_sass/minima/hamilton/skins/sunrise.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["sunrise.scss","sunrise.css"],"names":[],"mappings":"AAyBA;EAAsB,YAAA;ACvBtB;;ADwBA;EAAuB,SAAA;ACpBvB;;ADqBA;EACE,cAAA;EACA,yBAAA;AClBF;;ADoBA;EACE,cAAA;EACA,yBAAA;EACA,iBAAA;ACjBF;;ADmBA;EACE,cAAA;EACA,kBAAA;AChBF;;ADkBA;EACE,cAAA;ACfF;;ADiBA;EACE,cAAA;ACdF;;ADgBA;EACE,cAAA;ACbF;;ADeA;EACE,cAAA;ACZF;;ADcA;EACE,cAAA;EACA,yBAAA;ACXF;;ADaA;EACE,cAAA;EACA,yBAAA;ACVF;;ADYA;EACE,cAAA;EACA,iBAAA;ACTF;;ADWA;EACE,cAAA;ACRF;;ADUA;EACE,cAAA;ACPF;;ADSA;EACE,cAAA;ACNF;;ADQA;EACE,cAAA;ACLF;;ADOA;EACE,cAAA;EACA,kBAAA;ACJF;;ADMA;EACE,cAAA;EACA,kBAAA;ACHF;;ADKA;EACE,cAAA;EACA,kBAAA;ACFF;;ADIA;EACE,cAAA;ACDF;;ADGA;EACE,cAAA;ACAF;;ADEA;EACE,cAAA;ACCF;;ADCA;EACE,cAAA;ACEF;;ADAA;EACE,cAAA;ACGF;;ADDA;EACE,cAAA;ACIF;;ADFA;EACE,cAAA;ACKF","file":"sunrise.css"} \ No newline at end of file diff --git a/_sass/minima/hamilton/variables.css b/_sass/minima/hamilton/variables.css new file mode 100644 index 0000000..1451a15 --- /dev/null +++ b/_sass/minima/hamilton/variables.css @@ -0,0 +1 @@ +/*# sourceMappingURL=variables.css.map */ \ No newline at end of file diff --git a/_sass/minima/hamilton/variables.css.map b/_sass/minima/hamilton/variables.css.map new file mode 100644 index 0000000..639caba --- /dev/null +++ b/_sass/minima/hamilton/variables.css.map @@ -0,0 +1 @@ +{"version":3,"sources":[],"names":[],"mappings":"","file":"variables.css"} \ No newline at end of file diff --git a/_sass/minima/hot-ppl.css b/_sass/minima/hot-ppl.css new file mode 100644 index 0000000..806c6ac --- /dev/null +++ b/_sass/minima/hot-ppl.css @@ -0,0 +1,279 @@ +body { + font: 100% Helvetica, sans-serif; + background-color: #F3F3F3; + color: #333; + overflow-x: hidden; + margin: 0; + padding: 0; + width: 100vw; +} + +/* Import Google font - Poppins */ +.P-contain { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + max-width: 900px; /* Adjust as needed */ + margin: 0 auto; + padding: 20px; +} + +.P-contain div { + width: calc(33.33% - 20px); /* Adjust for spacing */ + margin-bottom: 20px; + box-sizing: border-box; + padding: 20px; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; + font-family: Arial, Helvetica, sans-serif; +} + +body { + min-height: 100vh; +} + +/* Pre css */ +.flex { + display: flex; + align-items: center; +} + +.nav_image { + display: flex; + min-width: 55px; + justify-content: center; +} + +.nav_image img { + height: 35px; + width: 35px; + border-radius: 50%; + -o-object-fit: cover; + object-fit: cover; +} + +.container { + display: flex; + flex-wrap: wrap; /* Allow content to wrap onto multiple lines */ +} + +h1, h2, h3, h4, h5, h6, p, ul, li { + font-family: Arial, Helvetica, sans-serif; +} + +/* Sidebar */ +.sidebar { + position: fixed; + top: 0; + left: 0; + height: 100%; + width: 270px; + background: #202124; + padding: 15px 1px; + padding-right: 10px; + box-shadow: 0 0 6px rgba(0, 0, 0, 0); + transition: all 0.4s ease; + color: #FFFFFF; +} + +.sidebar.close { + width: 75px; +} + +.logo_name { + font-size: 22px; + color: white; + font-weight: 500px; + transition: all 0.3s ease; +} + +.sidebar.close .logo_name, +.sidebar.close #lock-icon, +.sidebar.close #sidebar-close { + opacity: 0; + pointer-events: none; +} + +#lock-icon, +#sidebar-close { + padding: 10px; + color: #4070f4; + font-size: 25px; + cursor: pointer; + margin-left: -4px; + transition: all 0.3s ease; +} + +#sidebar-close { + display: none; + color: #333; +} + +.menu_container { + display: flex; + flex-direction: column; + justify-content: space-between; + margin-top: 10px; + overflow-y: auto; + height: calc(100% - 82px); +} + +.menu_container::-webkit-scrollbar { + display: none; +} + +.menu_title { + position: relative; + height: 50px; + width: 55px; +} + +.menu_title .title { + margin-left: 15px; + transition: all 0.3s ease; +} + +.sidebar.close .title { + opacity: 0; +} + +.menu_title .line { + position: absolute; + left: 50%; + height: 3px; + width: 20px; + border-radius: 25px; + background: black; + transition: all 0.3s ease; +} + +.menu_title .line { + opacity: 0; +} + +.sidebar.close .line { + opacity: 1; +} + +.item { + list-style: none; +} + +.link { + text-decoration: none; + border-radius: 8px; + margin-bottom: 8px; + color: white !important; + transition: all 0.4s ease; +} + +.link:hover { + color: #fff; + background-color: #010101; + transition: all 0.4s ease; + text-decoration: none; +} + +.link span { + white-space: nowrap; +} + +.link i { + height: 50px; + min-width: 55px; + display: flex; + font-size: 22px; + align-items: center; + justify-content: center; + border-radius: 4px; +} + +.title { + color: white !important; +} + +.line { + background: black !important; + color: black !important; +} + +.sidebar_profile { + padding-top: 15px; + margin-top: 15px; + gap: 15px; + border-top: 2px solid black; +} + +.sidebar_profile .name { + font-size: 18px; + color: black !important; +} + +.sidebar_profile .email { + font-size: 15px; + color: #FFFFFF; +} + +/* Navbar */ +#sidebar-open { + font-size: 30px; + color: #333; + cursor: pointer; + margin-right: 20px; + display: none; +} + +.search_box { + height: 46px; + max-width: 500px; + width: 100%; + border: 1px solid #aaa; + outline: none; + border-radius: 8px; + padding: 0 15px; + font-size: 18px; + color: #333; +} + +.navbar img { + height: 40px; + width: 40px; +} + +.data_text { + margin-left: 10px; +} + +/* Responsive */ +@media screen and (max-width: 1100px) { + .navbar { + left: 65%; + } +} +@media screen and (max-width: 800px) { + .sidebar { + left: 0; + z-index: 1000; + } + .sidebar.close { + left: -100%; + } + #sidebar-close { + display: block; + } + #lock-icon { + display: none; + } + .navbar { + left: 0; + max-width: 100%; + transform: translateX(0%); + } + #sidebar-open { + display: block; + } +}/*# sourceMappingURL=hot-ppl.css.map */ \ No newline at end of file diff --git a/_sass/minima/hot-ppl.css.map b/_sass/minima/hot-ppl.css.map new file mode 100644 index 0000000..a024841 --- /dev/null +++ b/_sass/minima/hot-ppl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["hot-ppl.scss","hot-ppl.css"],"names":[],"mappings":"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","file":"hot-ppl.css"} \ No newline at end of file diff --git a/_sass/minima/hot-ppl.scss b/_sass/minima/hot-ppl.scss index dc7b536..3d6c5ed 100644 --- a/_sass/minima/hot-ppl.scss +++ b/_sass/minima/hot-ppl.scss @@ -66,21 +66,20 @@ h1,h2,h3,h4,h5,h6,p,ul,li { left: 0; height: 100%; width: 270px; - background: #4A4744; + background: #202124; padding: 15px 1px; padding-right: 10px; box-shadow: 0 0 6px rgba(0, 0, 0, 0); transition: all 0.4s ease; + color: #FFFFFF; } .sidebar.close { width: calc(55px + 20px); } -.logo_items { - gap: 8px; -} + .logo_name { font-size: 22px; - color: black; + color: white; font-weight: 500px; transition: all 0.3s ease; } @@ -107,7 +106,7 @@ h1,h2,h3,h4,h5,h6,p,ul,li { display: flex; flex-direction: column; justify-content: space-between; - margin-top: 40px; + margin-top: 10px; overflow-y: auto; height: calc(100% - 82px); } @@ -148,13 +147,14 @@ h1,h2,h3,h4,h5,h6,p,ul,li { text-decoration: none; border-radius: 8px; margin-bottom: 8px; - color: black !important; + color: white !important; transition: all 0.4s ease; } .link:hover { color: #fff; - background-color: #F6F6F6; + background-color: #010101; transition: all 0.4s ease; + text-decoration: none } .link span { white-space: nowrap; @@ -170,7 +170,7 @@ h1,h2,h3,h4,h5,h6,p,ul,li { } .title { - color: black !important; + color: white !important; } .line { @@ -228,7 +228,6 @@ h1,h2,h3,h4,h5,h6,p,ul,li { .navbar img { height: 40px; width: 40px; - margin-left: 20px; } .data_text { margin-left: 10px; diff --git a/_sass/minima/index_background.css b/_sass/minima/index_background.css new file mode 100644 index 0000000..b5feef5 --- /dev/null +++ b/_sass/minima/index_background.css @@ -0,0 +1,422 @@ +.card { + margin-top: 10px; + margin-bottom: 10px; + padding: 10px; + border: 1px #fff solid; + color: #fff; + text-align: center; + margin: auto; + width: 30vw; + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); /* Adjust blur amount as needed */ + border-radius: 10px; /* Add border radius for rounded corners */ +} +.card h1 { + font-weight: bold; +} +.card button { + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + padding: 5px; + border: 1px #fff solid; + transition: 0.3s ease-in-out all; +} +.card button:hover { + background-color: rgba(255, 255, 255, 0.2); /* Adjust opacity as needed */ + background-color: rgba(255, 255, 255, 0.5); /* Adjust opacity as needed */ + padding: 5px; + border: 1px #fff solid; + transition: 0.3s ease-in-out all; +} + +.card:hover { + background-color: rgba(255, 255, 255, 0.3); + transition: 0.3s ease-in-out all; +} + +body { + color: #fff !important; + min-height: 100vh; + background: radial-gradient(ellipse at bottom, #162941 0%, #0c0d13 100%); + overflow: hidden; +} + +.stars { + display: flex; + justify-content: center; + align-items: center; + position: fixed; + top: -440px; + left: 395px; + width: 100%; + height: 120%; + transform: rotate(-45deg); + z-index: -10; +} + +.star { + --star-color: #6dd7fd; + --star-tail-length: 6em; + --star-tail-height: 2px; + --star-width: calc(var(--star-tail-length) / 6); + --fall-duration: 26s; + --tail-fade-duration: var(--fall-duration); + position: absolute; + top: var(--top-offset); + left: 0; + width: var(--star-tail-length); + height: var(--star-tail-height); + color: var(--star-color); + background: linear-gradient(45deg, currentColor, transparent); + border-radius: 50%; + filter: drop-shadow(0 0 6px currentColor); + transform: translate3d(104em, 0, 0); + animation: fall var(--fall-duration) var(--fall-delay) linear infinite, tail-fade var(--tail-fade-duration) var(--fall-delay) ease-out infinite; +} +@media screen and (max-width: 1750px) { + .star { + animation: fall var(--fall-duration) var(--fall-delay) linear infinite; + } +} +.star:nth-child(1) { + --star-tail-length: 5.11em; + --top-offset: 66.52vh; + --fall-duration: 6.76s; + --fall-delay: 4.701s; +} +.star:nth-child(2) { + --star-tail-length: 6.17em; + --top-offset: 68.7vh; + --fall-duration: 9.373s; + --fall-delay: 4.855s; +} +.star:nth-child(3) { + --star-tail-length: 6.25em; + --top-offset: 41.77vh; + --fall-duration: 7.589s; + --fall-delay: 1.876s; +} +.star:nth-child(4) { + --star-tail-length: 5.09em; + --top-offset: 83.72vh; + --fall-duration: 8.233s; + --fall-delay: 6.405s; +} +.star:nth-child(5) { + --star-tail-length: 5.44em; + --top-offset: 56.55vh; + --fall-duration: 8.757s; + --fall-delay: 7.416s; +} +.star:nth-child(6) { + --star-tail-length: 5.34em; + --top-offset: 4.33vh; + --fall-duration: 9.596s; + --fall-delay: 4.044s; +} +.star:nth-child(7) { + --star-tail-length: 5.22em; + --top-offset: 41.07vh; + --fall-duration: 8.271s; + --fall-delay: 4.162s; +} +.star:nth-child(8) { + --star-tail-length: 6.37em; + --top-offset: 39.51vh; + --fall-duration: 8.005s; + --fall-delay: 2.816s; +} +.star:nth-child(9) { + --star-tail-length: 5.8em; + --top-offset: 80.86vh; + --fall-duration: 6.538s; + --fall-delay: 4.425s; +} +.star:nth-child(10) { + --star-tail-length: 5.4em; + --top-offset: 89.5vh; + --fall-duration: 9.925s; + --fall-delay: 0.946s; +} +.star:nth-child(11) { + --star-tail-length: 6.13em; + --top-offset: 64.57vh; + --fall-duration: 9.094s; + --fall-delay: 6.908s; +} +.star:nth-child(12) { + --star-tail-length: 6.76em; + --top-offset: 52.71vh; + --fall-duration: 6.734s; + --fall-delay: 0.88s; +} +.star:nth-child(13) { + --star-tail-length: 5.95em; + --top-offset: 28.14vh; + --fall-duration: 7.371s; + --fall-delay: 6.385s; +} +.star:nth-child(14) { + --star-tail-length: 6.14em; + --top-offset: 97.71vh; + --fall-duration: 6.94s; + --fall-delay: 6.953s; +} +.star:nth-child(15) { + --star-tail-length: 6.75em; + --top-offset: 4.88vh; + --fall-duration: 8.191s; + --fall-delay: 4.908s; +} +.star:nth-child(16) { + --star-tail-length: 5.97em; + --top-offset: 89.32vh; + --fall-duration: 8.737s; + --fall-delay: 1.235s; +} +.star:nth-child(17) { + --star-tail-length: 6.93em; + --top-offset: 95.29vh; + --fall-duration: 6.171s; + --fall-delay: 7.812s; +} +.star:nth-child(18) { + --star-tail-length: 6.65em; + --top-offset: 35.04vh; + --fall-duration: 6.291s; + --fall-delay: 6.312s; +} +.star:nth-child(19) { + --star-tail-length: 6.79em; + --top-offset: 26.67vh; + --fall-duration: 8.349s; + --fall-delay: 1.643s; +} +.star:nth-child(20) { + --star-tail-length: 5.44em; + --top-offset: 91.81vh; + --fall-duration: 9.112s; + --fall-delay: 5.095s; +} +.star:nth-child(21) { + --star-tail-length: 5.93em; + --top-offset: 40.47vh; + --fall-duration: 7.409s; + --fall-delay: 3.098s; +} +.star:nth-child(22) { + --star-tail-length: 6.64em; + --top-offset: 7.11vh; + --fall-duration: 9.098s; + --fall-delay: 5.117s; +} +.star:nth-child(23) { + --star-tail-length: 5.24em; + --top-offset: 46.41vh; + --fall-duration: 7.408s; + --fall-delay: 5.097s; +} +.star:nth-child(24) { + --star-tail-length: 6.08em; + --top-offset: 61.28vh; + --fall-duration: 8.329s; + --fall-delay: 6.435s; +} +.star:nth-child(25) { + --star-tail-length: 7.44em; + --top-offset: 59.08vh; + --fall-duration: 6.139s; + --fall-delay: 7.8s; +} +.star:nth-child(26) { + --star-tail-length: 7.46em; + --top-offset: 67.56vh; + --fall-duration: 7.189s; + --fall-delay: 4.218s; +} +.star:nth-child(27) { + --star-tail-length: 5.76em; + --top-offset: 26.52vh; + --fall-duration: 8.621s; + --fall-delay: 3.377s; +} +.star:nth-child(28) { + --star-tail-length: 5.94em; + --top-offset: 53.87vh; + --fall-duration: 6.703s; + --fall-delay: 2.616s; +} +.star:nth-child(29) { + --star-tail-length: 6.8em; + --top-offset: 42.65vh; + --fall-duration: 7.77s; + --fall-delay: 0.166s; +} +.star:nth-child(30) { + --star-tail-length: 6.67em; + --top-offset: 14.87vh; + --fall-duration: 9.826s; + --fall-delay: 4.366s; +} +.star:nth-child(31) { + --star-tail-length: 6.84em; + --top-offset: 24.98vh; + --fall-duration: 7.028s; + --fall-delay: 0.567s; +} +.star:nth-child(32) { + --star-tail-length: 6.69em; + --top-offset: 70.58vh; + --fall-duration: 8.201s; + --fall-delay: 1.256s; +} +.star:nth-child(33) { + --star-tail-length: 5.11em; + --top-offset: 47.49vh; + --fall-duration: 6.492s; + --fall-delay: 2.221s; +} +.star:nth-child(34) { + --star-tail-length: 5.28em; + --top-offset: 23.98vh; + --fall-duration: 6.494s; + --fall-delay: 3.846s; +} +.star:nth-child(35) { + --star-tail-length: 6.21em; + --top-offset: 9.3vh; + --fall-duration: 8.181s; + --fall-delay: 1.011s; +} +.star:nth-child(36) { + --star-tail-length: 6.05em; + --top-offset: 63.52vh; + --fall-duration: 6.039s; + --fall-delay: 6.295s; +} +.star:nth-child(37) { + --star-tail-length: 5.42em; + --top-offset: 14.95vh; + --fall-duration: 7.866s; + --fall-delay: 3.557s; +} +.star:nth-child(38) { + --star-tail-length: 6.79em; + --top-offset: 26.93vh; + --fall-duration: 6.291s; + --fall-delay: 4.457s; +} +.star:nth-child(39) { + --star-tail-length: 6.12em; + --top-offset: 54.6vh; + --fall-duration: 9.834s; + --fall-delay: 6.595s; +} +.star:nth-child(40) { + --star-tail-length: 5.71em; + --top-offset: 12.27vh; + --fall-duration: 6.516s; + --fall-delay: 7.488s; +} +.star:nth-child(41) { + --star-tail-length: 6.55em; + --top-offset: 86.09vh; + --fall-duration: 9.563s; + --fall-delay: 6.292s; +} +.star:nth-child(42) { + --star-tail-length: 6.5em; + --top-offset: 95.39vh; + --fall-duration: 6s; + --fall-delay: 1.802s; +} +.star:nth-child(43) { + --star-tail-length: 6.34em; + --top-offset: 37.32vh; + --fall-duration: 6.314s; + --fall-delay: 0.129s; +} +.star:nth-child(44) { + --star-tail-length: 6.28em; + --top-offset: 46.1vh; + --fall-duration: 8.752s; + --fall-delay: 1.307s; +} +.star:nth-child(45) { + --star-tail-length: 5.03em; + --top-offset: 62.26vh; + --fall-duration: 9.858s; + --fall-delay: 3.242s; +} +.star:nth-child(46) { + --star-tail-length: 6.05em; + --top-offset: 91.84vh; + --fall-duration: 7.862s; + --fall-delay: 6.576s; +} +.star:nth-child(47) { + --star-tail-length: 6.05em; + --top-offset: 70.54vh; + --fall-duration: 6.127s; + --fall-delay: 6.02s; +} +.star:nth-child(48) { + --star-tail-length: 5.02em; + --top-offset: 86.6vh; + --fall-duration: 9.243s; + --fall-delay: 3.286s; +} +.star:nth-child(49) { + --star-tail-length: 6.55em; + --top-offset: 37.26vh; + --fall-duration: 9.787s; + --fall-delay: 0.44s; +} +.star:nth-child(50) { + --star-tail-length: 7.05em; + --top-offset: 35.36vh; + --fall-duration: 7.061s; + --fall-delay: 7.258s; +} +.star::before, .star::after { + position: absolute; + content: ""; + top: 0; + left: calc(var(--star-width) / -2); + width: var(--star-width); + height: 100%; + background: linear-gradient(45deg, transparent, currentColor, transparent); + border-radius: inherit; + animation: blink 12s linear infinite; +} +.star::before { + transform: rotate(45deg); +} +.star::after { + transform: rotate(-45deg); +} + +@keyframes fall { + to { + transform: translate3d(-30em, 0, 0); + } +} +@keyframes tail-fade { + 0%, 50% { + width: var(--star-tail-length); + opacity: 1; + } + 70%, 80% { + width: 0; + opacity: 0.4; + } + 100% { + width: 0; + opacity: 0; + } +} +@keyframes blink { + 50% { + opacity: 0.6; + } +}/*# sourceMappingURL=index_background.css.map */ \ No newline at end of file diff --git a/_sass/minima/index_background.css.map b/_sass/minima/index_background.css.map new file mode 100644 index 0000000..30bb958 --- /dev/null +++ b/_sass/minima/index_background.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["index_background.scss","index_background.css"],"names":[],"mappings":"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","file":"index_background.css"} \ No newline at end of file diff --git a/_sass/minima/minimal-mistakes.css b/_sass/minima/minimal-mistakes.css new file mode 100644 index 0000000..3e5dd1f --- /dev/null +++ b/_sass/minima/minimal-mistakes.css @@ -0,0 +1,4922 @@ +@charset "UTF-8"; +/*! + * Minimal Mistakes Jekyll Theme 4.24.0 by Michael Rose + * Copyright 2013-2020 Michael Rose - mademistakes.com | @mmistakes + * Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE) +*/ +/* Variables */ +/* ========================================================================== + Variables + ========================================================================== */ +/* + Typography + ========================================================================== */ +/* paragraph indention */ +/* system typefaces */ +/* sans serif typefaces */ +/* serif typefaces */ +/* type scale */ +/* headline scale */ +/* + Colors + ========================================================================== */ +/* YIQ color contrast */ +/* brands */ +/* links */ +/* notices */ +/* syntax highlighting (base16) */ +/* + Breakpoints + ========================================================================== */ +/* + Grid + ========================================================================== */ +/* + Other + ========================================================================== */ +/* Mixins and functions */ +/* Magnific Popup CSS */ +.mfp-counter { + font-family: Georgia, Times, serif; +} + +.mfp-bg { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1042; + overflow: hidden; + position: fixed; + background: #000; + opacity: 0.8; + filter: alpha(opacity=80); +} + +.mfp-wrap { + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 1043; + position: fixed; + outline: none !important; + -webkit-backface-visibility: hidden; +} + +.mfp-container { + text-align: center; + position: absolute; + width: 100%; + height: 100%; + left: 0; + top: 0; + padding: 0 8px; + box-sizing: border-box; +} + +.mfp-container:before { + content: ""; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.mfp-align-top .mfp-container:before { + display: none; +} + +.mfp-content { + position: relative; + display: inline-block; + vertical-align: middle; + margin: 0 auto; + text-align: left; + z-index: 1045; +} + +.mfp-inline-holder .mfp-content, +.mfp-ajax-holder .mfp-content { + width: 100%; + cursor: auto; +} + +.mfp-ajax-cur { + cursor: progress; +} + +.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close { + cursor: zoom-out; +} + +.mfp-zoom { + cursor: pointer; + cursor: zoom-in; +} + +.mfp-auto-cursor .mfp-content { + cursor: auto; +} + +.mfp-close, +.mfp-arrow, +.mfp-preloader, +.mfp-counter { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.mfp-loading.mfp-figure { + display: none; +} + +.mfp-hide { + display: none !important; +} + +.mfp-preloader { + color: #ccc; + position: absolute; + top: 50%; + width: auto; + text-align: center; + margin-top: -0.8em; + left: 8px; + right: 8px; + z-index: 1044; +} +.mfp-preloader a { + color: #ccc; +} +.mfp-preloader a:hover { + color: #fff; +} + +.mfp-s-ready .mfp-preloader { + display: none; +} + +.mfp-s-error .mfp-content { + display: none; +} + +button.mfp-close, button.mfp-arrow { + overflow: visible; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; + display: block; + outline: none; + padding: 0; + z-index: 1046; + box-shadow: none; +} +button::-moz-focus-inner { + padding: 0; + border: 0; +} + +.mfp-close { + width: 44px; + height: 44px; + line-height: 44px; + position: absolute; + right: 0; + top: 0; + text-decoration: none; + text-align: center; + opacity: 1; + filter: alpha(opacity=100); + padding: 0 0 18px 10px; + color: #fff; + font-style: normal; + font-size: 28px; + font-family: Georgia, Times, serif; +} +.mfp-close:hover, .mfp-close:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-close:active { + top: 1px; +} + +.mfp-close-btn-in .mfp-close { + color: #fff; +} + +.mfp-image-holder .mfp-close, +.mfp-iframe-holder .mfp-close { + color: #fff; + right: -6px; + text-align: right; + padding-right: 6px; + width: 100%; +} + +.mfp-counter { + position: absolute; + top: 0; + right: 0; + color: #ccc; + font-size: 12px; + line-height: 18px; +} + +.mfp-arrow { + position: absolute; + opacity: 1; + filter: alpha(opacity=100); + margin: 0; + top: 50%; + margin-top: -55px; + padding: 0; + width: 90px; + height: 110px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.mfp-arrow:active { + margin-top: -54px; +} +.mfp-arrow:hover, .mfp-arrow:focus { + opacity: 1; + filter: alpha(opacity=100); +} +.mfp-arrow:before, .mfp-arrow:after, +.mfp-arrow .mfp-b, +.mfp-arrow .mfp-a { + content: ""; + display: block; + width: 0; + height: 0; + position: absolute; + left: 0; + top: 0; + margin-top: 35px; + margin-left: 35px; + border: medium inset transparent; +} +.mfp-arrow:after, +.mfp-arrow .mfp-a { + border-top-width: 13px; + border-bottom-width: 13px; + top: 8px; +} +.mfp-arrow:before, +.mfp-arrow .mfp-b { + border-top-width: 21px; + border-bottom-width: 21px; + opacity: 0.7; +} + +.mfp-arrow-left { + left: 0; +} +.mfp-arrow-left:after, +.mfp-arrow-left .mfp-a { + border-right: 17px solid #fff; + margin-left: 31px; +} +.mfp-arrow-left:before, +.mfp-arrow-left .mfp-b { + margin-left: 25px; + border-right: 27px solid #fff; +} + +.mfp-arrow-right { + right: 0; +} +.mfp-arrow-right:after, +.mfp-arrow-right .mfp-a { + border-left: 17px solid #fff; + margin-left: 39px; +} +.mfp-arrow-right:before, +.mfp-arrow-right .mfp-b { + border-left: 27px solid #fff; +} + +.mfp-iframe-holder { + padding-top: 40px; + padding-bottom: 40px; +} +.mfp-iframe-holder .mfp-content { + line-height: 0; + width: 100%; + max-width: 900px; +} +.mfp-iframe-holder .mfp-close { + top: -40px; +} + +.mfp-iframe-scaler { + width: 100%; + height: 0; + overflow: hidden; + padding-top: 56.25%; +} +.mfp-iframe-scaler iframe { + position: absolute; + display: block; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #000; +} + +/* Main image in popup */ +img.mfp-img { + width: auto; + max-width: 100%; + height: auto; + display: block; + line-height: 0; + box-sizing: border-box; + padding: 40px 0 40px; + margin: 0 auto; +} + +/* The shadow behind the image */ +.mfp-figure { + line-height: 0; +} +.mfp-figure:after { + content: ""; + position: absolute; + left: 0; + top: 40px; + bottom: 40px; + display: block; + right: 0; + width: auto; + height: auto; + z-index: -1; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.6); + background: #444; +} +.mfp-figure small { + color: #bdbdbd; + display: block; + font-size: 12px; + line-height: 14px; +} +.mfp-figure figure { + margin: 0; +} +.mfp-figure figcaption { + margin-top: 0; + margin-bottom: 0; +} + +.mfp-bottom-bar { + margin-top: -36px; + position: absolute; + top: 100%; + left: 0; + width: 100%; + cursor: auto; +} + +.mfp-title { + text-align: left; + line-height: 18px; + color: #f3f3f3; + word-wrap: break-word; + padding-right: 36px; +} + +.mfp-image-holder .mfp-content { + max-width: 100%; +} + +.mfp-gallery .mfp-image-holder .mfp-figure { + cursor: pointer; +} + +@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) { + /** + * Remove all paddings around the image on small screen + */ + .mfp-img-mobile .mfp-image-holder { + padding-left: 0; + padding-right: 0; + } + .mfp-img-mobile img.mfp-img { + padding: 0; + } + .mfp-img-mobile .mfp-figure:after { + top: 0; + bottom: 0; + } + .mfp-img-mobile .mfp-figure small { + display: inline; + margin-left: 5px; + } + .mfp-img-mobile .mfp-bottom-bar { + background: rgba(0, 0, 0, 0.6); + bottom: 0; + margin: 0; + top: auto; + padding: 3px 5px; + position: fixed; + box-sizing: border-box; + } + .mfp-img-mobile .mfp-bottom-bar:empty { + padding: 0; + } + .mfp-img-mobile .mfp-counter { + right: 5px; + top: 3px; + } + .mfp-img-mobile .mfp-close { + top: 0; + right: 0; + width: 35px; + height: 35px; + line-height: 35px; + background: rgba(0, 0, 0, 0.6); + position: fixed; + text-align: center; + padding: 0; + } +} +@media all and (max-width: 900px) { + .mfp-arrow { + transform: scale(0.75); + } + .mfp-arrow-left { + transform-origin: 0; + } + .mfp-arrow-right { + transform-origin: 100%; + } + .mfp-container { + padding-left: 6px; + padding-right: 6px; + } +} +.mfp-ie7 .mfp-img { + padding: 0; +} +.mfp-ie7 .mfp-bottom-bar { + width: 600px; + left: 50%; + margin-left: -300px; + margin-top: 5px; + padding-bottom: 5px; +} +.mfp-ie7 .mfp-container { + padding: 0; +} +.mfp-ie7 .mfp-content { + padding-top: 44px; +} +.mfp-ie7 .mfp-close { + top: 0; + right: 0; + padding-top: 0; +} + +/* ========================================================================== + MIXINS + ========================================================================== */ +button:focus, a:focus { + /* Default*/ + outline: thin dotted #6f777d; + /* Webkit*/ + outline: 5px auto #6f777d; + outline-offset: -2px; +} + +/* + em function + ========================================================================== */ +/* + Bourbon clearfix + ========================================================================== */ +/* + * Provides an easy way to include a clearfix for containing floats. + * link http://cssmojo.com/latest_new_clearfix_so_far/ + * + * example scss - Usage + * + * .element { + * @include clearfix; + * } + * + * example css - CSS Output + * + * .element::after { + * clear: both; + * content: ""; + * display: table; + * } +*/ +/* + Compass YIQ Color Contrast + https://github.com/easy-designs/yiq-color-contrast + ========================================================================== */ +/* Core CSS */ +/* ========================================================================== + STYLE RESETS + ========================================================================== */ +* { + box-sizing: border-box; +} + +html { + /* apply a natural box layout model to all elements */ + box-sizing: border-box; + background-color: #fff; + font-size: 16px; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +@media (min-width: 48em) { + html { + font-size: 18px; + } +} +@media (min-width: 64em) { + html { + font-size: 20px; + } +} +@media (min-width: 80em) { + html { + font-size: 22px; + } +} + +/* Remove margin */ +body { + margin: 0; +} + +/* Selected elements */ +::-moz-selection { + color: #fff; + background: #000; +} + +::selection { + color: #fff; + background: #000; +} + +/* Display HTML5 elements in IE6-9 and FF3 */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +nav, +section { + display: block; +} + +/* Display block in IE6-9 and FF3 */ +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* Prevents modern browsers from displaying 'audio' without controls */ +audio:not([controls]) { + display: none; +} + +a { + color: #2f7d95; +} + +/* Apply focus state */ +/* Remove outline from links */ +a:hover, +a:active { + outline: 0; +} + +/* Prevent sub and sup affecting line-height in all browsers */ +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* img border in anchor's and image quality */ +img { + /* Responsive images (ensure images don't scale beyond their parents) */ + max-width: 100%; /* part 1: Set a maximum relative to the parent*/ + width: auto\9 ; /* IE7-8 need help adjusting responsive images*/ + height: auto; /* part 2: Scale the height according to the width, otherwise you get stretching*/ + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +/* Prevent max-width from affecting Google Maps */ +#map_canvas img, +.google-maps img { + max-width: none; +} + +/* Consistent form font size in all browsers, margin changes, misc */ +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; /* inner spacing ie IE6/7*/ + line-height: normal; /* FF3/4 have !important on line-height in UA stylesheet*/ +} + +button::-moz-focus-inner, +input::-moz-focus-inner { /* inner padding and border oddities in FF3/4*/ + padding: 0; + border: 0; +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; /* corrects inability to style clickable `input` types in iOS*/ + cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ +} + +label, +select, +button, +input[type=button], +input[type=reset], +input[type=submit], +input[type=radio], +input[type=checkbox] { + cursor: pointer; /* improves usability and consistency of cursor style between image-type `input` and others*/ +} + +input[type=search] { /* Appearance in Safari/Chrome*/ + box-sizing: border-box; + -webkit-appearance: textfield; +} + +input[type=search]::-webkit-search-decoration, +input[type=search]::-webkit-search-cancel-button { + -webkit-appearance: none; /* inner-padding issues in Chrome OSX, Safari 5*/ +} + +textarea { + overflow: auto; /* remove vertical scrollbar in IE6-9*/ + vertical-align: top; /* readability and alignment cross-browser*/ +} + +/* ========================================================================== + BASE ELEMENTS + ========================================================================== */ +html { + /* sticky footer fix */ + position: relative; + min-height: 100%; +} + +body { + margin: 0; + padding: 0; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + line-height: 1.5; +} +body.overflow--hidden { + /* when primary navigation is visible, the content in the background won't scroll */ + overflow: hidden; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 2em 0 0.5em; + line-height: 1.2; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-weight: bold; +} + +h1 { + margin-top: 0; + font-size: 1.563em; +} + +h2 { + font-size: 1.25em; +} + +h3 { + font-size: 1.125em; +} + +h4 { + font-size: 1.0625em; +} + +h5 { + font-size: 1.03125em; +} + +h6 { + font-size: 1em; +} + +small, +.small { + font-size: 0.75em; +} + +p { + margin-bottom: 1.3em; +} + +u, +ins { + text-decoration: none; + border-bottom: 1px solid #3d4144; +} +u a, +ins a { + color: inherit; +} + +del a { + color: inherit; +} + +/* reduce orphans and widows when printing */ +p, +pre, +blockquote, +ul, +ol, +dl, +figure, +table, +fieldset { + orphans: 3; + widows: 3; +} + +/* abbreviations */ +abbr[title], +abbr[data-original-title] { + text-decoration: none; + cursor: help; + border-bottom: 1px dotted #3d4144; +} + +/* blockquotes */ +blockquote { + margin: 2em 1em 2em 0; + padding-left: 1em; + padding-right: 1em; + font-style: italic; + border-left: 0.25em solid #6f777d; +} +blockquote cite { + font-style: italic; +} +blockquote cite:before { + content: "—"; + padding-right: 5px; +} + +/* links */ +a:visited { + color: #4e91a5; +} +a:hover { + color: #235e70; + outline: 0; +} + +/* buttons */ +/* code */ +tt, +code, +kbd, +samp, +pre { + font-family: Monaco, Consolas, "Lucida Console", monospace; +} + +pre { + overflow-x: auto; /* add scrollbars to wide code blocks*/ +} + +/* horizontal rule */ +hr { + display: block; + margin: 1em 0; + border: 0; + border-top: 1px solid #f2f3f3; +} + +/* lists */ +ul li, +ol li { + margin-bottom: 0.5em; +} + +li ul, +li ol { + margin-top: 0.5em; +} + +/* + Media and embeds + ========================================================================== */ +/* Figures and images */ +figure { + display: flex; + justify-content: space-between; + align-items: flex-start; + flex-wrap: wrap; + margin: 2em 0; +} +figure img, +figure iframe, +figure .fluid-width-video-wrapper { + margin-bottom: 1em; +} +figure img { + width: 100%; + border-radius: 4px; + transition: all 0.2s ease-in-out; +} +figure > a { + display: block; +} +@media (min-width: 37.5em) { + figure.half > a, + figure.half > img { + width: calc(50% - 0.5em); + } +} +figure.half figcaption { + width: 100%; +} +@media (min-width: 37.5em) { + figure.third > a, + figure.third > img { + width: calc(33.3333% - 0.5em); + } +} +figure.third figcaption { + width: 100%; +} + +/* Figure captions */ +figcaption { + margin-bottom: 0.5em; + color: #646769; + font-family: Georgia, Times, serif; + font-size: 0.75em; +} +figcaption a { + transition: all 0.2s ease-in-out; +} +figcaption a:hover { + color: #235e70; +} + +/* Fix IE9 SVG bug */ +svg:not(:root) { + overflow: hidden; +} + +/* + Navigation lists + ========================================================================== */ +/** + * Removes margins, padding, and bullet points from navigation lists + * + * Example usage: + * + */ +nav { + /* override white-space for nested lists */ +} +nav ul { + margin: 0; + padding: 0; +} +nav li { + list-style: none; +} +nav a { + text-decoration: none; +} +nav ul li, +nav ol li { + margin-bottom: 0; +} +nav li ul, +nav li ol { + margin-top: 0; +} + +/* + Global animation transition + ========================================================================== */ +b, +i, +strong, +em, +blockquote, +p, +q, +span, +figure, +img, +h1, +h2, +header, +input, +a, +tr, +td, +form button, +input[type=submit], +.btn, +.highlight, +.archive__item-teaser { + transition: all 0.2s ease-in-out; +} + +/* ========================================================================== + Forms + ========================================================================== */ +form { + margin: 0 0 5px 0; + padding: 1em; + background-color: #f2f3f3; +} +form fieldset { + margin-bottom: 5px; + padding: 0; + border-width: 0; +} +form legend { + display: block; + width: 100%; + margin-bottom: 10px; + *margin-left: -7px; + padding: 0; + color: #3d4144; + border: 0; + white-space: normal; +} +form p { + margin-bottom: 2.5px; +} +form ul { + list-style-type: none; + margin: 0 0 5px 0; + padding: 0; +} +form br { + display: none; +} + +label, +input, +button, +select, +textarea { + vertical-align: baseline; + *vertical-align: middle; +} + +input, +button, +select, +textarea { + box-sizing: border-box; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 0.25em; + color: #3d4144; + cursor: pointer; +} +label small { + font-size: 0.75em; +} +label input, +label textarea, +label select { + display: block; +} + +input, +textarea, +select { + display: inline-block; + width: 100%; + padding: 0.25em; + margin-bottom: 0.5em; + color: #3d4144; + background-color: #fff; + border: #f2f3f3; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +input[type=image], +input[type=checkbox], +input[type=radio] { + width: auto; + height: auto; + padding: 0; + margin: 3px 0; + *margin-top: 0; + line-height: normal; + cursor: pointer; + border-radius: 0; + border: 0 \9 ; + box-shadow: none; +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0; + *width: 13px; + *height: 13px; +} + +input[type=image] { + border: 0; +} + +input[type=file] { + width: auto; + padding: initial; + line-height: initial; + border: initial; + background-color: transparent; + background-color: initial; + box-shadow: none; +} + +input[type=button], +input[type=reset], +input[type=submit] { + width: auto; + height: auto; + cursor: pointer; + *overflow: visible; +} + +select, +input[type=file] { + *margin-top: 4px; +} + +select { + width: auto; + background-color: #fff; +} + +select[multiple], +select[size] { + height: auto; +} + +textarea { + resize: vertical; + height: auto; + overflow: auto; + vertical-align: top; +} + +input[type=hidden] { + display: none; +} + +.form { + position: relative; +} + +.radio, +.checkbox { + padding-left: 18px; + font-weight: normal; +} + +.radio input[type=radio], +.checkbox input[type=checkbox] { + float: left; + margin-left: -18px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +/* + Disabled state + ========================================================================== */ +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + opacity: 0.5; + cursor: not-allowed; +} + +/* + Focus & active state + ========================================================================== */ +input:focus, +textarea:focus { + border-color: #6f777d; + outline: 0; + outline: thin dotted \9 ; + box-shadow: inset 0 1px 3px rgba(61, 65, 68, 0.06), 0 0 5px rgba(111, 119, 125, 0.7); +} + +input[type=file]:focus, +input[type=radio]:focus, +input[type=checkbox]:focus, +select:focus { + box-shadow: none; +} + +/* + Help text + ========================================================================== */ +.help-block, +.help-inline { + color: #646769; +} + +.help-block { + display: block; + margin-bottom: 1em; + line-height: 1em; +} + +.help-inline { + display: inline-block; + vertical-align: middle; + padding-left: 5px; +} + +/* + .form-group + ========================================================================== */ +.form-group { + margin-bottom: 5px; + padding: 0; + border-width: 0; +} + +/* + .form-inline + ========================================================================== */ +.form-inline input, +.form-inline textarea, +.form-inline select { + display: inline-block; + margin-bottom: 0; +} + +.form-inline label { + display: inline-block; +} + +.form-inline .radio, +.form-inline .checkbox, +.form-inline .radio { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-inline .radio input[type=radio], +.form-inline .checkbox input[type=checkbox] { + float: left; + margin-left: 0; + margin-right: 3px; +} + +/* + .form-search + ========================================================================== */ +.form-search input, +.form-search textarea, +.form-search select { + display: inline-block; + margin-bottom: 0; +} + +.form-search .search-query { + padding-left: 14px; + padding-right: 14px; + margin-bottom: 0; + border-radius: 14px; +} + +.form-search label { + display: inline-block; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type=radio], +.form-search .checkbox input[type=checkbox] { + float: left; + margin-left: 0; + margin-right: 3px; +} + +/* + .form--loading + ========================================================================== */ +.form--loading:before { + content: ""; +} + +.form--loading .form__spinner { + display: block; +} + +.form:before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(255, 255, 255, 0.7); + z-index: 10; +} + +.form__spinner { + display: none; + position: absolute; + top: 50%; + left: 50%; + z-index: 11; +} + +/* ========================================================================== + ANIMATIONS + ========================================================================== */ +@keyframes intro { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +/* Components */ +/* ========================================================================== + BUTTONS + ========================================================================== */ +/* + Default button + ========================================================================== */ +.btn { + /* default */ + display: inline-block; + margin-bottom: 0.25em; + padding: 0.5em 1em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; + font-weight: bold; + text-align: center; + text-decoration: none; + border-width: 0; + border-radius: 4px; + cursor: pointer; + /* button colors */ + /* fills width of parent container */ + /* disabled */ + /* extra large button */ + /* large button */ + /* small button */ +} +.btn .icon { + margin-right: 0.5em; +} +.btn .icon + .hidden { + margin-left: -0.5em; /* override for hidden text*/ +} +.btn--primary { + background-color: #6f777d; + color: #fff; +} +.btn--primary:visited { + background-color: #6f777d; + color: #fff; +} +.btn--primary:hover { + background-color: #595f64; + color: #fff; +} +.btn--inverse { + background-color: #fff; + color: #3d4144; + border: 1px solid #f2f3f3; +} +.btn--inverse:visited { + background-color: #fff; + color: #3d4144; +} +.btn--inverse:hover { + background-color: #cccccc; + color: #3d4144; +} +.btn--light-outline { + background-color: transparent; + color: #fff; + border: 1px solid #fff; +} +.btn--light-outline:visited { + background-color: transparent; + color: #fff; +} +.btn--light-outline:hover { + background-color: rgba(0, 0, 0, 0.2); + color: #fff; +} +.btn--success { + background-color: #3fa63f; + color: #fff; +} +.btn--success:visited { + background-color: #3fa63f; + color: #fff; +} +.btn--success:hover { + background-color: #328532; + color: #fff; +} +.btn--warning { + background-color: #d67f05; + color: #fff; +} +.btn--warning:visited { + background-color: #d67f05; + color: #fff; +} +.btn--warning:hover { + background-color: #ab6604; + color: #fff; +} +.btn--danger { + background-color: #ee5f5b; + color: #fff; +} +.btn--danger:visited { + background-color: #ee5f5b; + color: #fff; +} +.btn--danger:hover { + background-color: #be4c49; + color: #fff; +} +.btn--info { + background-color: #3b9cba; + color: #fff; +} +.btn--info:visited { + background-color: #3b9cba; + color: #fff; +} +.btn--info:hover { + background-color: #2f7d95; + color: #fff; +} +.btn--facebook { + background-color: #3b5998; + color: #fff; +} +.btn--facebook:visited { + background-color: #3b5998; + color: #fff; +} +.btn--facebook:hover { + background-color: #2f477a; + color: #fff; +} +.btn--twitter { + background-color: #55acee; + color: #fff; +} +.btn--twitter:visited { + background-color: #55acee; + color: #fff; +} +.btn--twitter:hover { + background-color: #448abe; + color: #fff; +} +.btn--linkedin { + background-color: #007bb6; + color: #fff; +} +.btn--linkedin:visited { + background-color: #007bb6; + color: #fff; +} +.btn--linkedin:hover { + background-color: #006292; + color: #fff; +} +.btn--block { + display: block; + width: 100%; +} +.btn--block + .btn--block { + margin-top: 0.25em; +} +.btn--disabled { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + box-shadow: none; + opacity: 0.65; +} +.btn--x-large { + font-size: 1.25em; +} +.btn--large { + font-size: 1em; +} +.btn--small { + font-size: 0.6875em; +} + +/* ========================================================================== + NOTICE TEXT BLOCKS + ========================================================================== */ +/** + * Default Kramdown usage (no indents!): + *
+ * #### Headline for the Notice + * Text for the notice + *
+ */ +/* Default notice */ +.notice { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #f2f3f3; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(189, 193, 196, 0.25); +} +.notice h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice a { + color: #aaaeb0; +} +.notice a:hover { + color: #5f6162; +} +blockquote.notice { + border-left-color: #aaaeb0; +} + +.notice code { + background-color: #f8f9f9; +} +.notice pre code { + background-color: inherit; +} +.notice ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* Primary notice */ +.notice--primary { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #e2e4e5; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(111, 119, 125, 0.25); +} +.notice--primary h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice--primary h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice--primary p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice--primary h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice--primary a { + color: #646b71; +} +.notice--primary a:hover { + color: #383c3f; +} +blockquote.notice--primary { + border-left-color: #646b71; +} + +.notice--primary code { + background-color: #f1f1f2; +} +.notice--primary pre code { + background-color: inherit; +} +.notice--primary ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* Info notice */ +.notice--info { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #d8ebf1; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(59, 156, 186, 0.25); +} +.notice--info h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice--info h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice--info p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice--info h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice--info a { + color: #358ca7; +} +.notice--info a:hover { + color: #1e4e5d; +} +blockquote.notice--info { + border-left-color: #358ca7; +} + +.notice--info code { + background-color: #ebf5f8; +} +.notice--info pre code { + background-color: inherit; +} +.notice--info ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* Warning notice */ +.notice--warning { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #f7e5cd; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(214, 127, 5, 0.25); +} +.notice--warning h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice--warning h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice--warning p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice--warning h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice--warning a { + color: #c17205; +} +.notice--warning a:hover { + color: #6b4003; +} +blockquote.notice--warning { + border-left-color: #c17205; +} + +.notice--warning code { + background-color: #fbf2e6; +} +.notice--warning pre code { + background-color: inherit; +} +.notice--warning ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* Success notice */ +.notice--success { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #d9edd9; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(63, 166, 63, 0.25); +} +.notice--success h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice--success h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice--success p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice--success h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice--success a { + color: #399539; +} +.notice--success a:hover { + color: #205320; +} +blockquote.notice--success { + border-left-color: #399539; +} + +.notice--success code { + background-color: #ecf6ec; +} +.notice--success pre code { + background-color: inherit; +} +.notice--success ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* Danger notice */ +.notice--danger { + margin: 2em 0 !important; /* override*/ + padding: 1em; + color: #3d4144; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em !important; + text-indent: initial; /* override*/ + background-color: #fcdfde; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(238, 95, 91, 0.25); +} +.notice--danger h4 { + margin-top: 0 !important; /* override*/ + margin-bottom: 0.75em; + line-height: inherit; +} +.page__content .notice--danger h4 { + /* using at-root to override .page-content h4 font size*/ + margin-bottom: 0; + font-size: 1em; +} + +.notice--danger p:last-child { + margin-bottom: 0 !important; /* override*/ +} +.notice--danger h4 + p { + /* remove space above paragraphs that appear directly after notice headline*/ + margin-top: 0; + padding-top: 0; +} +.notice--danger a { + color: #d65652; +} +.notice--danger a:hover { + color: #77302e; +} +blockquote.notice--danger { + border-left-color: #d65652; +} + +.notice--danger code { + background-color: #fdefef; +} +.notice--danger pre code { + background-color: inherit; +} +.notice--danger ul:last-child { + margin-bottom: 0; /* override*/ +} + +/* ========================================================================== + MASTHEAD + ========================================================================== */ +.masthead { + position: relative; + border-bottom: 1px solid #f2f3f3; + animation: intro 0.3s both; + animation-delay: 0.15s; + z-index: 20; +} +.masthead__inner-wrap { + clear: both; + margin-left: auto; + margin-right: auto; + padding: 1em; + max-width: 100%; + display: flex; + justify-content: space-between; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; +} +.masthead__inner-wrap::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 80em) { + .masthead__inner-wrap { + max-width: 1280px; + } +} +.masthead__inner-wrap nav { + z-index: 10; +} +.masthead__inner-wrap a { + text-decoration: none; +} + +.site-logo img { + max-height: 2rem; +} + +.site-title { + display: flex; + align-self: center; + font-weight: bold; +} + +.site-subtitle { + display: block; + font-size: 0.625em; +} + +.masthead__menu { + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; +} +.masthead__menu .site-nav { + margin-left: 0; +} +@media (min-width: 37.5em) { + .masthead__menu .site-nav { + float: right; + } +} +.masthead__menu ul { + margin: 0; + padding: 0; + clear: both; + list-style-type: none; +} + +.masthead__menu-item { + display: block; + list-style-type: none; + white-space: nowrap; +} +.masthead__menu-item--lg { + padding-right: 2em; + font-weight: 700; +} + +/* ========================================================================== + NAVIGATION + ========================================================================== */ +/* + Breadcrumb navigation links + ========================================================================== */ +.breadcrumbs { + clear: both; + margin: 0 auto; + max-width: 100%; + padding-left: 1em; + padding-right: 1em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + animation: intro 0.3s both; + animation-delay: 0.3s; +} +.breadcrumbs::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 80em) { + .breadcrumbs { + max-width: 1280px; + } +} +.breadcrumbs ol { + padding: 0; + list-style: none; + font-size: 0.75em; +} +@media (min-width: 64em) { + .breadcrumbs ol { + float: right; + width: calc(100% - 200px); + } +} +@media (min-width: 80em) { + .breadcrumbs ol { + width: calc(100% - 300px); + } +} +.breadcrumbs li { + display: inline; +} +.breadcrumbs .current { + font-weight: bold; +} + +/* + Post pagination navigation links + ========================================================================== */ +.pagination { + clear: both; + float: left; + margin-top: 1em; + padding-top: 1em; + width: 100%; + /* next/previous buttons */ +} +.pagination::after { + clear: both; + content: ""; + display: table; +} +.pagination ul { + margin: 0; + padding: 0; + list-style-type: none; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; +} +.pagination li { + display: block; + float: left; + margin-left: -1px; +} +.pagination li a { + display: block; + margin-bottom: 0.25em; + padding: 0.5em 1em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 14px; + font-weight: bold; + line-height: 1.5; + text-align: center; + text-decoration: none; + color: #646769; + border: 1px solid #b6b6b6; + border-radius: 0; +} +.pagination li a:hover { + color: #235e70; +} +.pagination li a.current, .pagination li a.current.disabled { + color: #fff; + background: #6f777d; +} +.pagination li a.disabled { + color: rgba(100, 103, 105, 0.5); + pointer-events: none; + cursor: not-allowed; +} +.pagination li:first-child { + margin-left: 0; +} +.pagination li:first-child a { + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination li:last-child a { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination--pager { + display: block; + padding: 1em 2em; + float: left; + width: 50%; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 1em; + font-weight: bold; + text-align: center; + text-decoration: none; + color: #646769; + border: 1px solid #b6b6b6; + border-radius: 4px; +} +.pagination--pager:hover { + background-color: #646769; + color: #fff; +} +.pagination--pager:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.pagination--pager:last-child { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.pagination--pager.disabled { + color: rgba(100, 103, 105, 0.5); + pointer-events: none; + cursor: not-allowed; +} + +.page__content + .pagination, +.page__meta + .pagination, +.comment__date + .pagination, +.page__share + .pagination, +.page__comments + .pagination { + margin-top: 2em; + padding-top: 2em; + border-top: 1px solid #f2f3f3; +} + +/* + Priority plus navigation + ========================================================================== */ +.greedy-nav { + position: relative; + display: flex; + align-items: center; + min-height: 2em; + background: #fff; +} +.greedy-nav a { + display: block; + margin: 0 1rem; + color: #6f777d; + text-decoration: none; + transition: none; +} +.greedy-nav a:hover { + color: #53595e; +} +.greedy-nav a.site-logo { + margin-left: 0; + margin-right: 0.5rem; +} +.greedy-nav a.site-title { + margin-left: 0; +} +.greedy-nav img { + transition: none; +} +.greedy-nav__toggle { + align-self: center; + height: 2rem; + border: 0; + outline: none; + background-color: transparent; + cursor: pointer; +} +.greedy-nav .visible-links { + display: flex; + justify-content: flex-end; + flex: 1; + overflow: hidden; +} +.greedy-nav .visible-links li { + flex: none; +} +.greedy-nav .visible-links a { + position: relative; +} +.greedy-nav .visible-links a:before { + content: ""; + position: absolute; + left: 0; + bottom: 0; + height: 4px; + background: #6f777d; + width: 100%; + transition: all 0.2s ease-in-out; + transform: scaleX(0) translate3d(0, 0, 0); +} +.greedy-nav .visible-links a:hover:before { + transform: scaleX(1); +} +.greedy-nav .hidden-links { + position: absolute; + top: 100%; + right: 0; + margin-top: 15px; + padding: 5px; + border: 1px solid #f2f3f3; + border-radius: 4px; + background: #fff; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} +.greedy-nav .hidden-links.hidden { + display: none; +} +.greedy-nav .hidden-links a { + margin: 0; + padding: 10px 20px; + font-size: 1em; +} +.greedy-nav .hidden-links a:hover { + color: #53595e; + background: #dbdddf; +} +.greedy-nav .hidden-links:before { + content: ""; + position: absolute; + top: -11px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #f2f3f3 transparent; + display: block; + z-index: 0; +} +.greedy-nav .hidden-links:after { + content: ""; + position: absolute; + top: -10px; + right: 10px; + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #fff transparent; + display: block; + z-index: 1; +} +.greedy-nav .hidden-links li { + display: block; + border-bottom: 1px solid #f2f3f3; +} +.greedy-nav .hidden-links li:last-child { + border-bottom: none; +} + +.no-js .greedy-nav .visible-links { + flex-wrap: wrap; + overflow: visible; +} + +/* + Navigation list + ========================================================================== */ +.nav__list { + margin-bottom: 1.5em; +} +.nav__list input[type=checkbox], +.nav__list label { + display: none; +} +@media (max-width: 63.9375em) { + .nav__list { + /* selected*/ + /* on hover show expand*/ + } + .nav__list label { + position: relative; + display: inline-block; + padding: 0.5em 2.5em 0.5em 1em; + color: #7a8288; + font-size: 0.75em; + font-weight: bold; + border: 1px solid #bdc1c4; + border-radius: 4px; + z-index: 20; + transition: 0.2s ease-out; + cursor: pointer; + } + .nav__list label:before, .nav__list label:after { + content: ""; + position: absolute; + right: 1em; + top: 1.25em; + width: 0.75em; + height: 0.125em; + line-height: 1; + background-color: #7a8288; + transition: 0.2s ease-out; + } + .nav__list label:after { + transform: rotate(90deg); + } + .nav__list label:hover { + color: #fff; + border-color: #7a8288; + background-color: #333333; + } + .nav__list label:hover:before, .nav__list label:hover:after { + background-color: #fff; + } + .nav__list input:checked + label { + color: white; + background-color: #333333; + } + .nav__list input:checked + label:before, .nav__list input:checked + label:after { + background-color: #fff; + } + .nav__list label:hover:after { + transform: rotate(90deg); + } + .nav__list input:checked + label:hover:after { + transform: rotate(0); + } + .nav__list ul { + margin-bottom: 1em; + } + .nav__list a { + display: block; + padding: 0.25em 0; + } +} +@media (max-width: 63.9375em) and (min-width: 64em) { + .nav__list a { + padding-top: 0.125em; + padding-bottom: 0.125em; + } +} +@media (max-width: 63.9375em) { + .nav__list a:hover { + text-decoration: underline; + } +} + +.nav__list .nav__items { + margin: 0; + font-size: 1.25rem; +} +.nav__list .nav__items a { + color: inherit; +} +.nav__list .nav__items .active { + margin-left: -0.5em; + padding-left: 0.5em; + padding-right: 0.5em; + font-weight: bold; +} +@media (max-width: 63.9375em) { + .nav__list .nav__items { + position: relative; + max-height: 0; + opacity: 0%; + overflow: hidden; + z-index: 10; + transition: 0.3s ease-in-out; + transform: translate(0, 10%); + } +} + +@media (max-width: 63.9375em) { + .nav__list input:checked ~ .nav__items { + transition: 0.5s ease-in-out; + max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/ + overflow: visible; + opacity: 1; + margin-top: 1em; + transform: translate(0, 0); + } +} +.nav__title { + margin: 0; + padding: 0.5rem 0.75rem; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 1em; + font-weight: bold; +} + +.nav__sub-title { + display: block; + margin: 0.5rem 0; + padding: 0.25rem 0; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; + font-weight: bold; + text-transform: uppercase; + border-bottom: 1px solid #f2f3f3; +} + +/* + Table of contents navigation + ========================================================================== */ +.toc { + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + color: #7a8288; + background-color: #fff; + border: 1px solid #f2f3f3; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} +.toc .nav__title { + color: #fff; + font-size: 0.75em; + background: #6f777d; + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.toc .active a { + background-color: #e2e4e5; + color: #3d4144; +} + +.toc__menu { + margin: 0; + padding: 0; + width: 100%; + list-style: none; + font-size: 0.75em; +} +@media (min-width: 64em) { + .toc__menu { + font-size: 0.6875em; + } +} +.toc__menu a { + display: block; + padding: 0.25rem 0.75rem; + color: #646769; + font-weight: bold; + line-height: 1.5; + border-bottom: 1px solid #f2f3f3; +} +.toc__menu a:hover { + color: #3d4144; +} +.toc__menu li ul > li a { + padding-left: 1.25rem; + font-weight: normal; +} +.toc__menu li ul li ul > li a { + padding-left: 1.75rem; +} +.toc__menu li ul li ul li ul > li a { + padding-left: 2.25rem; +} +.toc__menu li ul li ul li ul li ul > li a { + padding-left: 2.75rem; +} +.toc__menu li ul li ul li ul li ul li ul > li a { + padding-left: 3.25rem; +} + +/* ========================================================================== + FOOTER + ========================================================================== */ +.page__footer { + clear: both; + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + margin-top: 3em; + color: #646769; + animation: intro 0.3s both; + animation-delay: 0.45s; + background-color: #f2f3f3; +} +.page__footer::after { + clear: both; + content: ""; + display: table; +} +.page__footer footer { + clear: both; + margin-left: auto; + margin-right: auto; + margin-top: 2em; + max-width: 100%; + padding: 0 1em 2em; +} +.page__footer footer::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 80em) { + .page__footer footer { + max-width: 1280px; + } +} +.page__footer a { + color: inherit; + text-decoration: none; +} +.page__footer a:hover { + text-decoration: underline; +} +.page__footer .fas, +.page__footer .fab, +.page__footer .far, +.page__footer .fal { + color: #646769; +} + +.page__footer-copyright { + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.6875em; +} + +.page__footer-follow ul { + margin: 0; + padding: 0; + list-style-type: none; +} +.page__footer-follow li { + display: inline-block; + padding-top: 5px; + padding-bottom: 5px; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; + text-transform: uppercase; +} +.page__footer-follow li + li:before { + content: ""; + padding-right: 5px; +} +.page__footer-follow a { + padding-right: 10px; + font-weight: bold; +} +.page__footer-follow .social-icons a { + white-space: nowrap; +} + +/* ========================================================================== + SEARCH + ========================================================================== */ +.layout--search .archive__item-teaser { + margin-bottom: 0.25em; +} + +.search__toggle { + margin-left: 1rem; + margin-right: 1rem; + height: 2rem; + border: 0; + outline: none; + color: #6f777d; + background-color: transparent; + cursor: pointer; + transition: 0.2s; +} +.search__toggle:hover { + color: #53595e; +} + +.search-icon { + width: 100%; + height: 100%; +} + +.search-content { + display: none; + visibility: hidden; + padding-top: 1em; + padding-bottom: 1em; +} +.search-content__inner-wrap { + width: 100%; + margin-left: auto; + margin-right: auto; + padding-left: 1em; + padding-right: 1em; + animation: intro 0.3s both; + animation-delay: 0.15s; +} +@media (min-width: 80em) { + .search-content__inner-wrap { + max-width: 1280px; + } +} +.search-content__form { + background-color: transparent; +} +.search-content .search-input { + display: block; + margin-bottom: 0; + padding: 0; + border: none; + outline: none; + box-shadow: none; + background-color: transparent; + font-size: 1.563em; +} +@media (min-width: 64em) { + .search-content .search-input { + font-size: 1.953em; + } +} +@media (min-width: 80em) { + .search-content .search-input { + font-size: 2.441em; + } +} +.search-content.is--visible { + display: block; + visibility: visible; +} +.search-content.is--visible::after { + content: ""; + display: block; +} +.search-content .results__found { + margin-top: 0.5em; + font-size: 0.75em; +} +.search-content .archive__item { + margin-bottom: 2em; +} +@media (min-width: 64em) { + .search-content .archive__item { + width: 75%; + } +} +@media (min-width: 80em) { + .search-content .archive__item { + width: 50%; + } +} +.search-content .archive__item-title { + margin-top: 0; +} +.search-content .archive__item-excerpt { + margin-bottom: 0; +} + +/* Algolia search */ +.ais-search-box { + max-width: 100% !important; + margin-bottom: 2em; +} + +.archive__item-title .ais-Highlight { + color: #6f777d; + font-style: normal; + text-decoration: underline; +} + +.archive__item-excerpt .ais-Highlight { + color: #6f777d; + font-style: normal; + font-weight: bold; +} + +/* ========================================================================== + Syntax highlighting + ========================================================================== */ +div.highlighter-rouge, +figure.highlight { + position: relative; + margin-bottom: 1em; + background: #263238; + color: #eeffff; + font-family: Monaco, Consolas, "Lucida Console", monospace; + font-size: 0.75em; + line-height: 1.8; + border-radius: 4px; +} +div.highlighter-rouge > pre, +div.highlighter-rouge pre.highlight, +figure.highlight > pre, +figure.highlight pre.highlight { + margin: 0; + padding: 1em; +} + +.highlight table { + margin-bottom: 0; + font-size: 1em; + border: 0; +} +.highlight table td { + padding: 0; + width: calc(100% - 1em); + border: 0; + /* line numbers*/ + /* code */ +} +.highlight table td.gutter, .highlight table td.rouge-gutter { + padding-right: 1em; + width: 1em; + color: #b2ccd6; + border-right: 1px solid #b2ccd6; + text-align: right; +} +.highlight table td.code, .highlight table td.rouge-code { + padding-left: 1em; +} +.highlight table pre { + margin: 0; +} + +.highlight pre { + width: 100%; +} + +.highlight .hll { + background-color: #eeffff; +} + +.highlight .c { + /* Comment */ + color: #b2ccd6; +} +.highlight .err { + /* Error */ + color: #f07178; +} +.highlight .k { + /* Keyword */ + color: #c792ea; +} +.highlight .l { + /* Literal */ + color: #f78c6c; +} +.highlight .n { + /* Name */ + color: #eeffff; +} +.highlight .o { + /* Operator */ + color: #89ddff; +} +.highlight .p { + /* Punctuation */ + color: #eeffff; +} +.highlight .cm { + /* Comment.Multiline */ + color: #b2ccd6; +} +.highlight .cp { + /* Comment.Preproc */ + color: #b2ccd6; +} +.highlight .c1 { + /* Comment.Single */ + color: #b2ccd6; +} +.highlight .cs { + /* Comment.Special */ + color: #b2ccd6; +} +.highlight .gd { + /* Generic.Deleted */ + color: #f07178; +} +.highlight .ge { + /* Generic.Emph */ + font-style: italic; +} +.highlight .gh { + /* Generic.Heading */ + color: #eeffff; + font-weight: bold; +} +.highlight .gi { + /* Generic.Inserted */ + color: #c3e88d; +} +.highlight .gp { + /* Generic.Prompt */ + color: #b2ccd6; + font-weight: bold; +} +.highlight .gs { + /* Generic.Strong */ + font-weight: bold; +} +.highlight .gu { + /* Generic.Subheading */ + color: #89ddff; + font-weight: bold; +} +.highlight .kc { + /* Keyword.Constant */ + color: #c792ea; +} +.highlight .kd { + /* Keyword.Declaration */ + color: #c792ea; +} +.highlight .kn { + /* Keyword.Namespace */ + color: #89ddff; +} +.highlight .kp { + /* Keyword.Pseudo */ + color: #c792ea; +} +.highlight .kr { + /* Keyword.Reserved */ + color: #c792ea; +} +.highlight .kt { + /* Keyword.Type */ + color: #ffcb6b; +} +.highlight .ld { + /* Literal.Date */ + color: #c3e88d; +} +.highlight .m { + /* Literal.Number */ + color: #f78c6c; +} +.highlight .s { + /* Literal.String */ + color: #c3e88d; +} +.highlight .na { + /* Name.Attribute */ + color: #82aaff; +} +.highlight .nb { + /* Name.Builtin */ + color: #eeffff; +} +.highlight .nc { + /* Name.Class */ + color: #ffcb6b; +} +.highlight .no { + /* Name.Constant */ + color: #f07178; +} +.highlight .nd { + /* Name.Decorator */ + color: #89ddff; +} +.highlight .ni { + /* Name.Entity */ + color: #eeffff; +} +.highlight .ne { + /* Name.Exception */ + color: #f07178; +} +.highlight .nf { + /* Name.Function */ + color: #82aaff; +} +.highlight .nl { + /* Name.Label */ + color: #eeffff; +} +.highlight .nn { + /* Name.Namespace */ + color: #ffcb6b; +} +.highlight .nx { + /* Name.Other */ + color: #82aaff; +} +.highlight .py { + /* Name.Property */ + color: #eeffff; +} +.highlight .nt { + /* Name.Tag */ + color: #89ddff; +} +.highlight .nv { + /* Name.Variable */ + color: #f07178; +} +.highlight .ow { + /* Operator.Word */ + color: #89ddff; +} +.highlight .w { + /* Text.Whitespace */ + color: #eeffff; +} +.highlight .mf { + /* Literal.Number.Float */ + color: #f78c6c; +} +.highlight .mh { + /* Literal.Number.Hex */ + color: #f78c6c; +} +.highlight .mi { + /* Literal.Number.Integer */ + color: #f78c6c; +} +.highlight .mo { + /* Literal.Number.Oct */ + color: #f78c6c; +} +.highlight .sb { + /* Literal.String.Backtick */ + color: #c3e88d; +} +.highlight .sc { + /* Literal.String.Char */ + color: #eeffff; +} +.highlight .sd { + /* Literal.String.Doc */ + color: #b2ccd6; +} +.highlight .s2 { + /* Literal.String.Double */ + color: #c3e88d; +} +.highlight .se { + /* Literal.String.Escape */ + color: #f78c6c; +} +.highlight .sh { + /* Literal.String.Heredoc */ + color: #c3e88d; +} +.highlight .si { + /* Literal.String.Interpol */ + color: #f78c6c; +} +.highlight .sx { + /* Literal.String.Other */ + color: #c3e88d; +} +.highlight .sr { + /* Literal.String.Regex */ + color: #c3e88d; +} +.highlight .s1 { + /* Literal.String.Single */ + color: #c3e88d; +} +.highlight .ss { + /* Literal.String.Symbol */ + color: #c3e88d; +} +.highlight .bp { + /* Name.Builtin.Pseudo */ + color: #eeffff; +} +.highlight .vc { + /* Name.Variable.Class */ + color: #f07178; +} +.highlight .vg { + /* Name.Variable.Global */ + color: #f07178; +} +.highlight .vi { + /* Name.Variable.Instance */ + color: #f07178; +} +.highlight .il { + /* Literal.Number.Integer.Long */ + color: #f78c6c; +} + +.gist th, .gist td { + border-bottom: 0; +} + +/* Utility classes */ +/* ========================================================================== + UTILITY CLASSES + ========================================================================== */ +/* + Visibility + ========================================================================== */ +/* http://www.456bereastreet.com/archive/200711/screen_readers_sometimes_ignore_displaynone/ */ +.hidden, +.is--hidden { + display: none; + visibility: hidden; +} + +/* for preloading images */ +.load { + display: none; +} + +.transparent { + opacity: 0; +} + +/* https://developer.yahoo.com/blogs/ydn/clip-hidden-content-better-accessibility-53456.html */ +.visually-hidden, +.screen-reader-text, +.screen-reader-text span, +.screen-reader-shortcut { + position: absolute !important; + clip: rect(1px, 1px, 1px, 1px); + height: 1px !important; + width: 1px !important; + border: 0 !important; + overflow: hidden; +} + +body:hover .visually-hidden a, +body:hover .visually-hidden input, +body:hover .visually-hidden button { + display: none !important; +} + +/* screen readers */ +.screen-reader-text:focus, +.screen-reader-shortcut:focus { + clip: auto !important; + height: auto !important; + width: auto !important; + display: block; + font-size: 1em; + font-weight: bold; + padding: 15px 23px 14px; + background: #fff; + z-index: 100000; + text-decoration: none; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); +} + +/* + Skip links + ========================================================================== */ +.skip-link { + position: fixed; + z-index: 20; + margin: 0; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + white-space: nowrap; +} + +.skip-link li { + height: 0; + width: 0; + list-style: none; +} + +/* + Type + ========================================================================== */ +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-right { + text-align: right; +} + +.text-justify { + text-align: justify; +} + +.text-nowrap { + white-space: nowrap; +} + +/* + Task lists + ========================================================================== */ +.task-list { + padding: 0; +} +.task-list li { + list-style-type: none; +} +.task-list .task-list-item-checkbox { + margin-right: 0.5em; + opacity: 1; +} + +.task-list .task-list { + margin-left: 1em; +} + +/* + Alignment + ========================================================================== */ +/* clearfix */ +.cf { + clear: both; +} + +.wrapper { + margin-left: auto; + margin-right: auto; + width: 100%; +} + +/* + Images + ========================================================================== */ +/* image align left */ +.align-left { + display: block; + margin-left: auto; + margin-right: auto; +} +@media (min-width: 37.5em) { + .align-left { + float: left; + margin-right: 1em; + } +} + +/* image align right */ +.align-right { + display: block; + margin-left: auto; + margin-right: auto; +} +@media (min-width: 37.5em) { + .align-right { + float: right; + margin-left: 1em; + } +} + +/* image align center */ +.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +/* file page content container */ +@media (min-width: 64em) { + .full { + margin-right: -20.3389830508% !important; + } +} + +/* + Icons + ========================================================================== */ +.icon { + display: inline-block; + fill: currentColor; + width: 1em; + height: 1.1em; + line-height: 1; + position: relative; + top: -0.1em; + vertical-align: middle; +} + +/* social icons*/ +.social-icons .fas, +.social-icons .fab, +.social-icons .far, +.social-icons .fal { + color: #3d4144; +} +.social-icons .fa-behance, +.social-icons .fa-behance-square { + color: #1769ff; +} +.social-icons .fa-bitbucket { + color: #205081; +} +.social-icons .fa-dribbble, +.social-icons .fa-dribble-square { + color: #ea4c89; +} +.social-icons .fa-facebook, +.social-icons .fa-facebook-square, +.social-icons .fa-facebook-f { + color: #3b5998; +} +.social-icons .fa-flickr { + color: #ff0084; +} +.social-icons .fa-foursquare { + color: #0072b1; +} +.social-icons .fa-github, +.social-icons .fa-github-alt, +.social-icons .fa-github-square { + color: #171516; +} +.social-icons .fa-gitlab { + color: #e24329; +} +.social-icons .fa-instagram { + color: #517fa4; +} +.social-icons .fa-keybase { + color: #ef7639; +} +.social-icons .fa-lastfm, +.social-icons .fa-lastfm-square { + color: #d51007; +} +.social-icons .fa-linkedin, +.social-icons .fa-linkedin-in { + color: #007bb6; +} +.social-icons .fa-mastodon, +.social-icons .fa-mastodon-square { + color: #2b90d9; +} +.social-icons .fa-pinterest, +.social-icons .fa-pinterest-p, +.social-icons .fa-pinterest-square { + color: #cb2027; +} +.social-icons .fa-reddit { + color: #ff4500; +} +.social-icons .fa-rss, +.social-icons .fa-rss-square { + color: #fa9b39; +} +.social-icons .fa-soundcloud { + color: #ff3300; +} +.social-icons .fa-stack-exchange, +.social-icons .fa-stack-overflow { + color: #fe7a15; +} +.social-icons .fa-tumblr, +.social-icons .fa-tumblr-square { + color: #32506d; +} +.social-icons .fa-twitter, +.social-icons .fa-twitter-square { + color: #55acee; +} +.social-icons .fa-vimeo, +.social-icons .fa-vimeo-square, +.social-icons .fa-vimeo-v { + color: #1ab7ea; +} +.social-icons .fa-vine { + color: #00bf8f; +} +.social-icons .fa-youtube { + color: #bb0000; +} +.social-icons .fa-xing, +.social-icons .fa-xing-square { + color: #006567; +} + +/* + Navicons + ========================================================================== */ +.navicon { + position: relative; + width: 1.5rem; + height: 0.25rem; + background: #6f777d; + margin: auto; + transition: 0.3s; +} +.navicon:before, .navicon:after { + content: ""; + position: absolute; + left: 0; + width: 1.5rem; + height: 0.25rem; + background: #6f777d; + transition: 0.3s; +} +.navicon:before { + top: -0.5rem; +} +.navicon:after { + bottom: -0.5rem; +} + +.close .navicon { + /* hide the middle line*/ + background: transparent; + /* overlay the lines by setting both their top values to 0*/ + /* rotate the lines to form the x shape*/ +} +.close .navicon:before, .close .navicon:after { + transform-origin: 50% 50%; + top: 0; + width: 1.5rem; +} +.close .navicon:before { + transform: rotate3d(0, 0, 1, 45deg); +} +.close .navicon:after { + transform: rotate3d(0, 0, 1, -45deg); +} + +@supports (pointer-events: none) { + .greedy-nav__toggle:before { + content: ""; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + background-color: #fff; + transition: all 0.2s ease-in-out; + pointer-events: none; + } +} +.greedy-nav__toggle.close:before { + opacity: 0.9; + transition: all 0.2s ease-in-out; + pointer-events: auto; +} + +.greedy-nav__toggle:hover .navicon, +.greedy-nav__toggle:hover .navicon:before, +.greedy-nav__toggle:hover .navicon:after { + background: #53595e; +} +.greedy-nav__toggle:hover.close .navicon { + background: transparent; +} + +/* + Sticky, fixed to top content + ========================================================================== */ +@media (min-width: 64em) { + .sticky { + clear: both; + position: sticky; + top: 2em; + } + .sticky::after { + clear: both; + content: ""; + display: table; + } + .sticky > * { + display: block; + } +} + +/* + Wells + ========================================================================== */ +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +/* + Modals + ========================================================================== */ +.show-modal { + overflow: hidden; + position: relative; +} +.show-modal:before { + position: absolute; + content: ""; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; + background-color: rgba(255, 255, 255, 0.85); +} +.show-modal .modal { + display: block; +} + +.modal { + display: none; + position: fixed; + width: 300px; + top: 50%; + left: 50%; + margin-left: -150px; + margin-top: -150px; + min-height: 0; + z-index: 9999; + background: #fff; + border: 1px solid #f2f3f3; + border-radius: 4px; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.125); +} +.modal__title { + margin: 0; + padding: 0.5em 1em; +} +.modal__supporting-text { + padding: 0 1em 0.5em 1em; +} +.modal__actions { + padding: 0.5em 1em; + border-top: 1px solid #f2f3f3; +} + +/* + Footnotes + ========================================================================== */ +.footnote { + color: #9ba1a6; + text-decoration: none; +} + +.footnotes { + color: #9ba1a6; +} +.footnotes ol, +.footnotes li, +.footnotes p { + margin-bottom: 0; + font-size: 0.75em; +} + +a.reversefootnote { + color: #7a8288; + text-decoration: none; +} +a.reversefootnote:hover { + text-decoration: underline; +} + +/* + Required + ========================================================================== */ +.required { + color: #ee5f5b; + font-weight: bold; +} + +/* + Google Custom Search Engine + ========================================================================== */ +.gsc-control-cse table, +.gsc-control-cse tr, +.gsc-control-cse td { + border: 0; /* remove table borders widget */ +} + +/* + Responsive Video Embed + ========================================================================== */ +.responsive-video-container { + position: relative; + margin-bottom: 1em; + padding-bottom: 56.25%; + height: 0; + overflow: hidden; + max-width: 100%; +} +.responsive-video-container iframe, +.responsive-video-container object, +.responsive-video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +:-webkit-full-screen-ancestor .masthead, +:-webkit-full-screen-ancestor .page__footer { + position: static; +} + +/* Layout specific */ +/* ========================================================================== + SINGLE PAGE/POST + ========================================================================== */ +#main { + clear: both; + margin-left: auto; + margin-right: auto; + padding-left: 1em; + padding-right: 1em; + animation: intro 0.3s both; + max-width: 100%; + animation-delay: 0.15s; +} +#main::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 80em) { + #main { + max-width: 1280px; + } +} + +body { + display: flex; + min-height: 100vh; + flex-direction: column; +} + +.initial-content, +.search-content { + flex: 1 0 auto; +} + +@media (min-width: 64em) { + .page { + float: right; + width: calc(100% - 200px); + padding-right: 200px; + } +} +@media (min-width: 80em) { + .page { + width: calc(100% - 300px); + padding-right: 300px; + } +} +.page .page__inner-wrap { + float: left; + margin-top: 1em; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; +} +.page .page__inner-wrap .page__content, +.page .page__inner-wrap .page__meta, +.page .page__inner-wrap .comment__date, +.page .page__inner-wrap .page__share { + position: relative; + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; +} + +.page__title { + margin-top: 0; + line-height: 1; +} +.page__title a { + color: #3d4144; + text-decoration: none; +} +.page__title + .page__meta, .page__title + .comment__date { + margin-top: -0.5em; +} + +.page__lead { + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 1.25em; +} + +.page__content { + /* paragraph indents */ + /* blockquote citations */ +} +.page__content h2 { + padding-bottom: 0.5em; + border-bottom: 1px solid #f2f3f3; +} +.page__content h1 .header-link, .page__content h2 .header-link, .page__content h3 .header-link, .page__content h4 .header-link, .page__content h5 .header-link, .page__content h6 .header-link { + position: relative; + left: 0.5em; + opacity: 0; + font-size: 0.8em; + transition: opacity 0.2s ease-in-out 0.1s; +} +.page__content h1:hover .header-link, .page__content h2:hover .header-link, .page__content h3:hover .header-link, .page__content h4:hover .header-link, .page__content h5:hover .header-link, .page__content h6:hover .header-link { + opacity: 1; +} +.page__content p, +.page__content li, +.page__content dl { + font-size: 1em; +} +.page__content p { + margin: 0 0 1.3em; + /* sibling indentation*/ +} +.page__content a:not(.btn):hover { + text-decoration: underline; +} +.page__content a:not(.btn):hover img { + box-shadow: 0 0 10px rgba(0, 0, 0, 0.25); +} +.page__content :not(pre) > code { + padding-top: 0.1rem; + padding-bottom: 0.1rem; + font-size: 0.8em; + background: #fafafa; + border-radius: 4px; +} +.page__content :not(pre) > code::before, .page__content :not(pre) > code::after { + letter-spacing: -0.2em; + content: " "; /* non-breaking space*/ +} +.page__content dt { + margin-top: 1em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-weight: bold; +} +.page__content dd { + margin-left: 1em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; +} +.page__content .small { + font-size: 0.75em; +} +.page__content blockquote + .small { + margin-top: -1.5em; + padding-left: 1.25rem; +} + +.page__hero { + position: relative; + margin-bottom: 2em; + clear: both; + animation: intro 0.3s both; + animation-delay: 0.25s; +} +.page__hero::after { + clear: both; + content: ""; + display: table; +} +.page__hero--overlay { + position: relative; + margin-bottom: 2em; + padding: 3em 0; + clear: both; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + animation: intro 0.3s both; + animation-delay: 0.25s; +} +.page__hero--overlay::after { + clear: both; + content: ""; + display: table; +} +.page__hero--overlay a { + color: #fff; +} +.page__hero--overlay .wrapper { + padding-left: 1em; + padding-right: 1em; +} +@media (min-width: 80em) { + .page__hero--overlay .wrapper { + max-width: 1280px; + } +} +.page__hero--overlay .page__title, +.page__hero--overlay .page__meta, +.page__hero--overlay .comment__date, +.page__hero--overlay .page__lead, +.page__hero--overlay .btn { + color: #fff; + text-shadow: 1px 1px 4px rgba(0, 0, 0, 0.5); +} +.page__hero--overlay .page__lead { + max-width: 768px; +} +.page__hero--overlay .page__title { + font-size: 1.953em; +} +@media (min-width: 37.5em) { + .page__hero--overlay .page__title { + font-size: 2.441em; + } +} + +.page__hero-image { + width: 100%; + height: auto; + -ms-interpolation-mode: bicubic; +} + +.page__hero-caption { + position: absolute; + bottom: 0; + right: 0; + margin: 0 auto; + padding: 2px 5px; + color: #fff; + font-family: Georgia, Times, serif; + font-size: 0.6875em; + background: #000; + text-align: right; + z-index: 5; + opacity: 0.5; + border-radius: 4px 0 0 0; +} +@media (min-width: 64em) { + .page__hero-caption { + padding: 5px 10px; + } +} +.page__hero-caption a { + color: #fff; + text-decoration: none; +} + +/* + Social sharing + ========================================================================== */ +.page__share { + margin-top: 2em; + padding-top: 1em; + border-top: 1px solid #f2f3f3; +} +@media (max-width: 37.5em) { + .page__share .btn span { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; + } +} + +.page__share-title { + margin-bottom: 10px; + font-size: 0.75em; + text-transform: uppercase; +} + +/* + Page meta + ========================================================================== */ +.page__meta, .comment__date { + margin-top: 2em; + color: #646769; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; +} +.page__meta p, .comment__date p { + margin: 0; +} +.page__meta a, .comment__date a { + color: inherit; +} + +.page__meta-title { + margin-bottom: 10px; + font-size: 0.75em; + text-transform: uppercase; +} + +.page__meta-sep::before { + content: "•"; + padding-left: 0.5em; + padding-right: 0.5em; +} + +/* + Page taxonomy + ========================================================================== */ +.page__taxonomy .sep { + display: none; +} +.page__taxonomy strong { + margin-right: 10px; +} + +.page__taxonomy-item { + display: inline-block; + margin-right: 5px; + margin-bottom: 8px; + padding: 5px 10px; + text-decoration: none; + border: 1px solid #b6b6b6; + border-radius: 4px; +} +.page__taxonomy-item:hover { + text-decoration: none; + color: #235e70; +} + +.taxonomy__section { + margin-bottom: 2em; + padding-bottom: 1em; +} +.taxonomy__section:not(:last-child) { + border-bottom: solid 1px #f2f3f3; +} +.taxonomy__section .archive__item-title { + margin-top: 0; +} +.taxonomy__section .archive__subtitle { + clear: both; + border: 0; +} +.taxonomy__section + .taxonomy__section { + margin-top: 2em; +} + +.taxonomy__title { + margin-bottom: 0.5em; + color: #646769; +} + +.taxonomy__count { + color: #646769; +} + +.taxonomy__index { + display: grid; + grid-column-gap: 2em; + grid-template-columns: repeat(2, 1fr); + margin: 1.414em 0; + padding: 0; + font-size: 0.75em; + list-style: none; +} +@media (min-width: 64em) { + .taxonomy__index { + grid-template-columns: repeat(3, 1fr); + } +} +.taxonomy__index a { + display: flex; + padding: 0.25em 0; + justify-content: space-between; + color: inherit; + text-decoration: none; + border-bottom: 1px solid #f2f3f3; +} + +.back-to-top { + display: block; + clear: both; + color: #646769; + font-size: 0.6em; + text-transform: uppercase; + text-align: right; + text-decoration: none; +} + +/* + Comments + ========================================================================== */ +.page__comments { + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; +} + +.page__comments-title { + margin-top: 2rem; + margin-bottom: 10px; + padding-top: 2rem; + font-size: 0.75em; + border-top: 1px solid #f2f3f3; + text-transform: uppercase; +} + +.page__comments-form { + transition: all 0.2s ease-in-out; +} +.page__comments-form.disabled input, +.page__comments-form.disabled button, +.page__comments-form.disabled textarea, +.page__comments-form.disabled label { + pointer-events: none; + cursor: not-allowed; + filter: alpha(opacity=65); + box-shadow: none; + opacity: 0.65; +} + +.comment { + clear: both; + margin: 1em 0; +} +.comment::after { + clear: both; + content: ""; + display: table; +} +.comment:not(:last-child) { + border-bottom: 1px solid #f2f3f3; +} + +.comment__avatar-wrapper { + float: left; + width: 60px; + height: 60px; +} +@media (min-width: 64em) { + .comment__avatar-wrapper { + width: 100px; + height: 100px; + } +} + +.comment__avatar { + width: 40px; + height: 40px; + border-radius: 50%; +} +@media (min-width: 64em) { + .comment__avatar { + width: 80px; + height: 80px; + padding: 5px; + border: 1px solid #f2f3f3; + } +} + +.comment__content-wrapper { + float: right; + width: calc(100% - 60px); +} +@media (min-width: 64em) { + .comment__content-wrapper { + width: calc(100% - 100px); + } +} + +.comment__author { + margin: 0; +} +.comment__author a { + text-decoration: none; +} + +.comment__date { + margin: 0; +} +.comment__date a { + text-decoration: none; +} + +/* + Related + ========================================================================== */ +.page__related { + clear: both; + float: left; + margin-top: 2em; + padding-top: 1em; + border-top: 1px solid #f2f3f3; +} +.page__related::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 64em) { + .page__related { + float: right; + width: calc(100% - 200px); + } +} +@media (min-width: 80em) { + .page__related { + width: calc(100% - 300px); + } +} +.page__related a { + color: inherit; + text-decoration: none; +} + +.page__related-title { + margin-bottom: 10px; + font-size: 0.75em; + text-transform: uppercase; +} + +/* + Wide Pages + ========================================================================== */ +@media (min-width: 64em) { + .wide .page { + padding-right: 0; + } +} +@media (min-width: 80em) { + .wide .page { + padding-right: 0; + } +} +@media (min-width: 64em) { + .wide .page__related { + padding-right: 0; + } +} +@media (min-width: 80em) { + .wide .page__related { + padding-right: 0; + } +} + +/* ========================================================================== + ARCHIVE + ========================================================================== */ +.archive { + margin-top: 1em; + margin-bottom: 2em; +} +@media (min-width: 64em) { + .archive { + float: right; + width: calc(100% - 200px); + padding-right: 200px; + } +} +@media (min-width: 80em) { + .archive { + width: calc(100% - 300px); + padding-right: 300px; + } +} + +.archive__item { + position: relative; +} +.archive__item a { + position: relative; + z-index: 10; +} +.archive__item a[rel=permalink] { + position: static; +} + +.archive__subtitle { + margin: 1.414em 0 0.5em; + padding-bottom: 0.5em; + font-size: 1em; + color: #646769; + border-bottom: 1px solid #f2f3f3; +} +.archive__subtitle + .list__item .archive__item-title { + margin-top: 0.5em; +} + +.archive__item-title { + margin-bottom: 0.25em; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + line-height: initial; + overflow: hidden; + text-overflow: ellipsis; +} +.archive__item-title a[rel=permalink]::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} +.archive__item-title a + a { + opacity: 0.5; +} + +/* remove border*/ +.page__content .archive__item-title { + margin-top: 1em; + border-bottom: none; +} + +.archive__item-excerpt { + margin-top: 0; + font-size: 0.75em; +} +.archive__item-excerpt + p { + text-indent: 0; +} +.archive__item-excerpt a { + position: relative; +} + +.archive__item-teaser { + position: relative; + border-radius: 4px; + overflow: hidden; +} +.archive__item-teaser img { + width: 100%; +} + +.archive__item-caption { + position: absolute; + bottom: 0; + right: 0; + margin: 0 auto; + padding: 2px 5px; + color: #fff; + font-family: Georgia, Times, serif; + font-size: 0.625em; + background: #000; + text-align: right; + z-index: 5; + opacity: 0.5; + border-radius: 4px 0 0 0; +} +@media (min-width: 64em) { + .archive__item-caption { + padding: 5px 10px; + } +} +.archive__item-caption a { + color: #fff; + text-decoration: none; +} + +/* + List view + ========================================================================== */ +.list__item .page__meta, .list__item .comment__date { + margin: 0 0 4px; + font-size: 0.6em; +} + +/* + Grid view + ========================================================================== */ +.archive .grid__wrapper { + /* extend grid elements to the right */ +} +@media (min-width: 64em) { + .archive .grid__wrapper { + margin-right: -200px; + } +} +@media (min-width: 80em) { + .archive .grid__wrapper { + margin-right: -300px; + } +} + +.grid__item { + margin-bottom: 2em; +} +@media (min-width: 37.5em) { + .grid__item { + float: left; + width: 48.9795918367%; + } + .grid__item:nth-child(2n+1) { + clear: both; + margin-left: 0; + } + .grid__item:nth-child(2n+2) { + clear: none; + margin-left: 2.0408163265%; + } +} +@media (min-width: 48em) { + .grid__item { + margin-left: 0; /* override margin*/ + margin-right: 0; /* override margin*/ + width: 23.7288135593%; + } + .grid__item:nth-child(2n+1) { + clear: none; + } + .grid__item:nth-child(4n+1) { + clear: both; + } + .grid__item:nth-child(4n+2) { + clear: none; + margin-left: 1.6949152542%; + } + .grid__item:nth-child(4n+3) { + clear: none; + margin-left: 1.6949152542%; + } + .grid__item:nth-child(4n+4) { + clear: none; + margin-left: 1.6949152542%; + } +} +.grid__item .page__meta, .grid__item .comment__date { + margin: 0 0 4px; + font-size: 0.6em; +} +.grid__item .page__meta-sep { + display: block; +} +.grid__item .page__meta-sep::before { + display: none; +} +.grid__item .archive__item-title { + margin-top: 0.5em; + font-size: 1em; +} +.grid__item .archive__item-excerpt { + display: none; +} +@media (min-width: 48em) { + .grid__item .archive__item-excerpt { + display: block; + font-size: 0.75em; + } +} +@media (min-width: 37.5em) { + .grid__item .archive__item-teaser { + max-height: 200px; + } +} +@media (min-width: 48em) { + .grid__item .archive__item-teaser { + max-height: 120px; + } +} + +/* + Features + ========================================================================== */ +.feature__wrapper { + clear: both; + margin-bottom: 2em; + border-bottom: 1px solid #f2f3f3; +} +.feature__wrapper::after { + clear: both; + content: ""; + display: table; +} +.feature__wrapper .archive__item-title { + margin-bottom: 0; +} + +.feature__item { + position: relative; + margin-bottom: 2em; + font-size: 1.125em; +} +@media (min-width: 37.5em) { + .feature__item { + float: left; + margin-bottom: 0; + width: 32.2033898305%; + } + .feature__item:nth-child(3n+1) { + clear: both; + margin-left: 0; + } + .feature__item:nth-child(3n+2) { + clear: none; + margin-left: 1.6949152542%; + } + .feature__item:nth-child(3n+3) { + clear: none; + margin-left: 1.6949152542%; + } + .feature__item .feature__item-teaser { + max-height: 200px; + overflow: hidden; + } +} +.feature__item .archive__item-body { + padding-left: 1.6949152542%; + padding-right: 1.6949152542%; +} +.feature__item a.btn::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} +.feature__item--left { + position: relative; + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; + font-size: 1.125em; +} +.feature__item--left .archive__item { + float: left; +} +.feature__item--left .archive__item-teaser { + margin-bottom: 2em; +} +.feature__item--left a.btn::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} +@media (min-width: 37.5em) { + .feature__item--left .archive__item-teaser { + float: left; + width: 40.6779661017%; + } + .feature__item--left .archive__item-body { + float: right; + padding-left: 1.6949152542%; + padding-right: 1.6949152542%; + width: 57.6271186441%; + } +} +.feature__item--right { + position: relative; + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; + font-size: 1.125em; +} +.feature__item--right .archive__item { + float: left; +} +.feature__item--right .archive__item-teaser { + margin-bottom: 2em; +} +.feature__item--right a.btn::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} +@media (min-width: 37.5em) { + .feature__item--right { + text-align: right; + } + .feature__item--right .archive__item-teaser { + float: right; + width: 40.6779661017%; + } + .feature__item--right .archive__item-body { + float: left; + width: 57.6271186441%; + padding-left: 1.6949152542%; + padding-right: 1.6949152542%; + } +} +.feature__item--center { + position: relative; + float: left; + margin-left: 0; + margin-right: 0; + width: 100%; + clear: both; + font-size: 1.125em; +} +.feature__item--center .archive__item { + float: left; + width: 100%; +} +.feature__item--center .archive__item-teaser { + margin-bottom: 2em; +} +.feature__item--center a.btn::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; +} +@media (min-width: 37.5em) { + .feature__item--center { + text-align: center; + } + .feature__item--center .archive__item-teaser { + margin: 0 auto; + width: 40.6779661017%; + } + .feature__item--center .archive__item-body { + margin: 0 auto; + width: 57.6271186441%; + } +} + +/* Place inside an archive layout */ +.archive .feature__wrapper .archive__item-title { + margin-top: 0.25em; + font-size: 1em; +} +.archive .feature__item, +.archive .feature__item--left, +.archive .feature__item--center, +.archive .feature__item--right { + font-size: 1em; +} + +/* + Wide Pages + ========================================================================== */ +@media (min-width: 64em) { + .wide .archive { + padding-right: 0; + } +} +@media (min-width: 80em) { + .wide .archive { + padding-right: 0; + } +} + +/* Place inside a single layout */ +.layout--single .feature__wrapper { + display: inline-block; +} + +/* ========================================================================== + SIDEBAR + ========================================================================== */ +/* + Default + ========================================================================== */ +.sidebar { + clear: both; +} +.sidebar::after { + clear: both; + content: ""; + display: table; +} +@media (min-width: 64em) { + .sidebar { + float: left; + width: calc(200px - 1em); + opacity: 0.75; + transition: opacity 0.2s ease-in-out; + } + .sidebar:hover { + opacity: 1; + } + .sidebar.sticky { + overflow-y: auto; + /* calculate height of nav list + viewport height - nav height - masthead x-padding + */ + max-height: calc(100vh - 2em - 2em); + } +} +@media (min-width: 80em) { + .sidebar { + width: calc(300px - 1em); + } +} +.sidebar > * { + margin-top: 1em; + margin-bottom: 1em; +} +.sidebar h2, +.sidebar h3, +.sidebar h4, +.sidebar h5, +.sidebar h6 { + margin-bottom: 0; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; +} +.sidebar p, +.sidebar li { + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 0.75em; + line-height: 1.5; +} +.sidebar img { + width: 100%; +} +.sidebar img.emoji { + width: 20px; + height: 20px; +} + +.sidebar__right { + margin-bottom: 1em; +} +@media (min-width: 64em) { + .sidebar__right { + position: absolute; + top: 0; + right: 0; + width: 200px; + margin-right: -200px; + padding-left: 1em; + z-index: 10; + } + .sidebar__right.sticky { + clear: both; + position: sticky; + top: 2em; + float: right; + } + .sidebar__right.sticky::after { + clear: both; + content: ""; + display: table; + } + .sidebar__right.sticky .toc .toc__menu { + overflow-y: auto; + max-height: calc(100vh - 7em); + } +} +@media (min-width: 80em) { + .sidebar__right { + width: 300px; + margin-right: -300px; + } +} + +@media (min-width: 64em) { + .splash .sidebar__right { + position: relative; + float: right; + margin-right: 0; + } +} +@media (min-width: 80em) { + .splash .sidebar__right { + margin-right: 0; + } +} + +/* + Author profile and links + ========================================================================== */ +.author__avatar { + display: table-cell; + vertical-align: top; + width: 36px; + height: 36px; +} +@media (min-width: 64em) { + .author__avatar { + display: block; + width: auto; + height: auto; + } +} +.author__avatar img { + max-width: 110px; + border-radius: 50%; +} +@media (min-width: 64em) { + .author__avatar img { + padding: 5px; + border: 1px solid #f2f3f3; + } +} + +.author__content { + display: table-cell; + vertical-align: top; + padding-left: 15px; + padding-right: 25px; + line-height: 1; +} +@media (min-width: 64em) { + .author__content { + display: block; + width: 100%; + padding-left: 0; + padding-right: 0; + } +} +.author__content a { + color: inherit; + text-decoration: none; +} + +.author__name { + margin: 0; +} +@media (min-width: 64em) { + .author__name { + margin-top: 10px; + margin-bottom: 10px; + } +} + +.sidebar .author__name { + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + font-size: 1em; +} + +.author__bio { + margin: 0; +} +@media (min-width: 64em) { + .author__bio { + margin-top: 10px; + margin-bottom: 20px; + } +} + +.author__urls-wrapper { + position: relative; + display: table-cell; + vertical-align: middle; + font-family: -apple-system, BlinkMacSystemFont, "Roboto", "Segoe UI", "Helvetica Neue", "Lucida Grande", Arial, sans-serif; + z-index: 20; + cursor: pointer; +} +.author__urls-wrapper li:last-child a { + margin-bottom: 0; +} +.author__urls-wrapper .author__urls span.label { + padding-left: 5px; +} +@media (min-width: 64em) { + .author__urls-wrapper { + display: block; + } +} +.author__urls-wrapper button { + position: relative; + margin-bottom: 0; +} +@supports (pointer-events: none) { + .author__urls-wrapper button:before { + content: ""; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + pointer-events: none; + } +} +.author__urls-wrapper button.open:before { + pointer-events: auto; +} +@media (min-width: 64em) { + .author__urls-wrapper button { + display: none; + } +} + +.author__urls { + display: none; + position: absolute; + right: 0; + margin-top: 15px; + padding: 10px; + list-style-type: none; + border: 1px solid #f2f3f3; + border-radius: 4px; + background: #fff; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + cursor: default; +} +.author__urls.is--visible { + display: block; +} +@media (min-width: 64em) { + .author__urls { + display: block; + position: relative; + margin: 0; + padding: 0; + border: 0; + background: transparent; + box-shadow: none; + } +} +.author__urls:before { + display: block; + content: ""; + position: absolute; + top: -11px; + left: calc(50% - 10px); + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #f2f3f3 transparent; + z-index: 0; +} +@media (min-width: 64em) { + .author__urls:before { + display: none; + } +} +.author__urls:after { + display: block; + content: ""; + position: absolute; + top: -10px; + left: calc(50% - 10px); + width: 0; + border-style: solid; + border-width: 0 10px 10px; + border-color: #fff transparent; + z-index: 1; +} +@media (min-width: 64em) { + .author__urls:after { + display: none; + } +} +.author__urls ul { + padding: 10px; + list-style-type: none; +} +.author__urls li { + white-space: nowrap; +} +.author__urls a { + display: block; + margin-bottom: 5px; + padding-right: 5px; + padding-top: 2px; + padding-bottom: 2px; + color: inherit; + font-size: 1em; + text-decoration: none; +} +.author__urls a:hover { + text-decoration: underline; +} + +/* + Wide Pages + ========================================================================== */ +.wide .sidebar__right { + margin-bottom: 1em; +} +@media (min-width: 64em) { + .wide .sidebar__right { + position: initial; + top: initial; + right: initial; + width: initial; + margin-right: initial; + padding-left: initial; + z-index: initial; + } + .wide .sidebar__right.sticky { + float: none; + } +} +@media (min-width: 80em) { + .wide .sidebar__right { + width: initial; + margin-right: initial; + } +} + +/* ========================================================================== + PRINT STYLES + ========================================================================== */ +@media print { + [hidden] { + display: none; + } + * { + box-sizing: border-box; + } + html { + margin: 0; + padding: 0; + min-height: auto !important; + font-size: 16px; + } + body { + margin: 0 auto; + background: #fff !important; + color: #000 !important; + font-size: 1rem; + line-height: 1.5; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + } + h1, + h2, + h3, + h4, + h5, + h6 { + color: #000; + line-height: 1.2; + margin-bottom: 0.75rem; + margin-top: 0; + } + h1 { + font-size: 2.5rem; + } + h2 { + font-size: 2rem; + } + h3 { + font-size: 1.75rem; + } + h4 { + font-size: 1.5rem; + } + h5 { + font-size: 1.25rem; + } + h6 { + font-size: 1rem; + } + a, + a:visited { + color: #000; + text-decoration: underline; + word-wrap: break-word; + } + table { + border-collapse: collapse; + } + thead { + display: table-header-group; + } + table, + th, + td { + border-bottom: 1px solid #000; + } + td, + th { + padding: 8px 16px; + } + img { + border: 0; + display: block; + max-width: 100% !important; + vertical-align: middle; + } + hr { + border: 0; + border-bottom: 2px solid #bbb; + height: 0; + margin: 2.25rem 0; + padding: 0; + } + dt { + font-weight: bold; + } + dd { + margin: 0; + margin-bottom: 0.75rem; + } + abbr[title], + acronym[title] { + border: 0; + text-decoration: none; + } + table, + blockquote, + pre, + code, + figure, + li, + hr, + ul, + ol, + a, + tr { + page-break-inside: avoid; + } + h2, + h3, + h4, + p, + a { + orphans: 3; + widows: 3; + } + h1, + h2, + h3, + h4, + h5, + h6 { + page-break-after: avoid; + page-break-inside: avoid; + } + h1 + p, + h2 + p, + h3 + p { + page-break-before: avoid; + } + img { + page-break-after: auto; + page-break-before: auto; + page-break-inside: avoid; + } + pre { + white-space: pre-wrap !important; + word-wrap: break-word; + } + a[href^="http://"]:after, + a[href^="https://"]:after, + a[href^="ftp://"]:after { + content: " (" attr(href) ")"; + font-size: 80%; + } + abbr[title]:after, + acronym[title]:after { + content: " (" attr(title) ")"; + } + #main { + max-width: 100%; + } + .page { + margin: 0; + padding: 0; + width: 100%; + } + .page-break, + .page-break-before { + page-break-before: always; + } + .page-break-after { + page-break-after: always; + } + .no-print { + display: none; + } + a.no-reformat:after { + content: ""; + } + abbr[title].no-reformat:after, + acronym[title].no-reformat:after { + content: ""; + } + .page__hero-caption { + color: #000 !important; + background: #fff !important; + opacity: 1; + } + .page__hero-caption a { + color: #000 !important; + } + /* + Hide the following elements on print + ========================================================================== */ + .masthead, + .toc, + .page__share, + .page__related, + .pagination, + .ads, + .page__footer, + .page__comments-form, + .author__avatar, + .author__content, + .author__urls-wrapper, + .nav__list, + .sidebar, + .adsbygoogle { + display: none !important; + height: 1px !important; + } +}/*# sourceMappingURL=minimal-mistakes.css.map */ \ No newline at end of file diff --git a/_sass/minima/minimal-mistakes.css.map b/_sass/minima/minimal-mistakes.css.map new file mode 100644 index 0000000..de34a41 --- /dev/null +++ b/_sass/minima/minimal-mistakes.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["minimal-mistakes.css","minimal-mistakes.scss","minimal-mistakes/_variables.scss","minimal-mistakes/vendor/magnific-popup/_magnific-popup.scss","minimal-mistakes/vendor/magnific-popup/_settings.scss","minimal-mistakes/_mixins.scss","minimal-mistakes/_reset.scss","minimal-mistakes/vendor/breakpoint/_breakpoint.scss","minimal-mistakes/_base.scss","minimal-mistakes/_forms.scss","minimal-mistakes/_animations.scss","minimal-mistakes/_buttons.scss","minimal-mistakes/_notices.scss","minimal-mistakes/_masthead.scss","minimal-mistakes/_navigation.scss","minimal-mistakes/_footer.scss","minimal-mistakes/_search.scss","minimal-mistakes/_syntax.scss","minimal-mistakes/_utilities.scss","minimal-mistakes/_page.scss","minimal-mistakes/_archive.scss","minimal-mistakes/_sidebar.scss","minimal-mistakes/_print.scss"],"names":[],"mappings":"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Y;ES1BZ,iBAAA;EACA,kBAAA;EACA,qBAAA;EACA,eAAA;EACA,kBTkJc;ESjJd,eAAA;EAUA,kBAAA;EAiCA,oCAAA;EAUA,aAAA;EASA,uBAAA;EAKA,iBAAA;EAKA,iBAAA;AXyxCF;AW/1CE;EACE,mBAAA;AXi2CJ;AW91CE;EACE,mBAAA,EAAA,4BAAA;AXg2CJ;AW/0CI;EN6CF,yBMzDA;EN0DA,WAAA;ALqyCF;AW10CM;ENoCJ,yBMzDA;EN0DA,WAAA;ALyyCF;AW10CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;AL6yCF;AW31CI;EN6CF,sBMzDA;EN0DA,cAAA;EM3CM,yBAAA;AX61CR;AWv1CM;ENoCJ,sBMzDA;EN0DA,cAAA;ALszCF;AWv1CM;ENgCJ,yBM/B8B;ENgC9B,cAAA;AL0zCF;AWx2CI;EN6CF,6BMzDA;EN0DA,WAAA;EMxCM,sBAAA;AXu2CR;AWp2CM;ENoCJ,6BMzDA;EN0DA,WAAA;ALm0CF;AWp2CM;ENgCJ,oCM/B8B;ENgC9B,WAAA;ALu0CF;AWr3CI;EN6CF,yBMzDA;EN0DA,WAAA;AL20CF;AWh3CM;ENoCJ,yBMzDA;EN0DA,WAAA;AL+0CF;AWh3CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;ALm1CF;AWj4CI;EN6CF,yBMzDA;EN0DA,WAAA;ALu1CF;AW53CM;ENoCJ,yBMzDA;EN0DA,WAAA;AL21CF;AW53CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;AL+1CF;AW74CI;EN6CF,yBMzDA;EN0DA,WAAA;ALm2CF;AWx4CM;ENoCJ,yBMzDA;EN0DA,WAAA;ALu2CF;AWx4CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;AL22CF;AWz5CI;EN6CF,yBMzDA;EN0DA,WAAA;AL+2CF;AWp5CM;ENoCJ,yBMzDA;EN0DA,WAAA;ALm3CF;AWp5CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;ALu3CF;AWr6CI;EN6CF,yBMzDA;EN0DA,WAAA;AL23CF;AWh6CM;ENoCJ,yBMzDA;EN0DA,WAAA;AL+3CF;AWh6CM;ENgCJ,yBM/B8B;ENgC9B,WAAA;ALm4CF;AWj7CI;EN6CF,yBMzDA;EN0DA,WAAA;ALu4CF;AW56CM;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EAGE,chB5Ia;AF+iGjB;AkBh6FE;EACE,chB/IW;AFijGf;AkB/5FE;EACE,chBlJe;AFmjGnB;AkB95FE;;;EAGE,chBvJW;AFujGf;AkB75FE;EACE,chB1JW;AFyjGf;AkB55FE;EACE,chB7Jc;AF2jGlB;AkB35FE;EACE,chBhKY;AF6jGhB;AkB15FE;;EAEE,chBpKW;AFgkGf;AkBz5FE;;EAEE,chBxKa;AFmkGjB;AkBx5FE;;EAEE,chB5Ka;AFskGjB;AkBv5FE;;;EAGE,chBjLc;AF0kGlB;AkBt5FE;EACE,chBpLW;AF4kGf;AkBr5FE;;EAEE,chBxLQ;AF+kGZ;AkBp5FE;EACE,chB3Le;AFilGnB;AkBn5FE;;EAEE,chB/LkB;AFolGtB;AkBl5FE;;EAEE,chBnMW;AFulGf;AkBj5FE;;EAEE,chBvMY;AF0lGhB;AkBh5FE;;;EAGE,chB5MU;AF8lGd;AkB/4FE;EACE,chB/MS;AFgmGb;AkB94FE;EACE,chBlNY;AFkmGhB;AkB74FE;;EAEE,chBtNS;AFqmGb;;AkB34FA;;+EAAA;AAIA;EACE,kBAAA;EACA,ahBrKc;EgBsKd,ehBrKe;EgBsKf,mBhBxQc;EgByQd,YAAA;EAEA,gBAAA;AlB64FF;AkB34FE;EAEE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,ahBjLY;EgBkLZ,ehBjLa;EgBkLb,mBhBpRY;EgBsRZ,gBAAA;AlB44FJ;AkBz4FE;EACE,YAAA;AlB24FJ;AkBx4FE;EACE,eAAA;AlB04FJ;;AkBt4FA;EACE,wBAAA;EACA,uBAAA;EAEA,2DAAA;EAUA,wCAAA;AlB+3FF;AkBx4FE;EAIE,yBAAA;EACA,MAAA;EACA,ahB5MY;AFqlGhB;AkBr4FE;EAEE,mCAAA;AlBu4FJ;AkBr4FE;EAEE,oCAAA;AlBu4FJ;;AkBj4FI;EADF;IAEI,WAAA;IACA,eAAA;IACA,MAAA;IACA,OAAA;IACA,WAAA;IACA,YAAA;IACA,UAAA;IACA,sBhB9Ua;IgBgVb,gChBpOc;IgBqOd,oBAAA;ElBq4FJ;AACF;AkBj4FI;EACE,YAAA;EAEA,gChB7Oc;EgB8Od,oBAAA;AlBm4FN;;AkB73FE;;;EAGE,mBAAA;AlBg4FJ;AkB53FI;EACE,uBAAA;AlB83FN;;AkBz3FA;;+EAAA;AX5WI;EWgXJ;IbnYE,WAAA;IauYE,gBAAA;IACA,QAAA;ElB23FF;EKjwGA;IACE,WAAA;IACA,WAAA;IACA,cAAA;ELmwGF;EkB93FE;IACE,cAAA;ElBg4FJ;AACF;;AkB53FA;;+EAAA;AAIA;EACE,gBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,yBAAA;EACA,kBhBlSc;EgBmSd,+CAAA;AlB83FF;;AkB33FA;;+EAAA;AAIA;EACE,gBAAA;EACA,kBAAA;AlB63FF;AkB33FE;EACE,kBAAA;EACA,WAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;EACA,YAAA;EACA,2CAAA;AlB63FJ;AkB13FE;EACE,cAAA;AlB43FJ;;AkBx3FA;EACE,aAAA;EACA,eAAA;EACA,YAAA;EACA,QAAA;EACA,SAAA;EACA,mBAAA;EACA,kBAAA;EACA,aAAA;EACA,aAAA;EACA,gBAAA;EACA,yBAAA;EACA,kBhB1Uc;EgB2Ud,0ChB1UW;AFqsGb;AkBz3FE;EACE,SAAA;EACA,kBAAA;AlB23FJ;AkBx3FE;EACE,wBAAA;AlB03FJ;AkBv3FE;EACE,kBAAA;EACA,6BAAA;AlBy3FJ;;AkBr3FA;;+EAAA;AAIA;EACE,cAAA;EACA,qBAAA;AlBu3FF;;AkBp3FA;EACE,cAAA;AlBu3FF;AkBr3FE;;;EAGE,gBAAA;EACA,iBhBxeU;AF+1Gd;;AkBn3FA;EACE,chB7dK;EgB8dL,qBAAA;AlBs3FF;AkBp3FE;EACE,0BAAA;AlBs3FJ;;AkBl3FA;;+EAAA;AAIA;EACE,chBxda;EgBydb,iBAAA;AlBo3FF;;AkBj3FA;;+EAAA;AAKE;;;EAGE,SAAA,EAAA,gCAAA;AlBk3FJ;;AkB92FA;;+EAAA;AAIA;EACE,kBAAA;EACA,kBAAA;EACA,sBAAA;EACA,SAAA;EACA,gBAAA;EACA,eAAA;AlBg3FF;AkB92FE;;;EAGE,kBAAA;EACA,MAAA;EACA,OAAA;EACA,WAAA;EACA,YAAA;AlBg3FJ;;AkB12FE;;EAEE,gBAAA;AlB62FJ;;ACz5GA,oBAAA;AkBlCA;;+EAAA;AAIA;EdyCE,WAAA;EcvCA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EAEA,0BjBiKiB;EiBhKjB,eAAA;EAEA,sBAAA;AnB87GF;AK75GE;EACE,WAAA;EACA,WAAA;EACA,cAAA;AL+5GJ;AOj5GI;EY5DJ;IAaI,iBjBqIM;EF+zGR;AACF;;AmBj8GA;EAGE,aAAA;EACA,iBAAA;EAIQ,sBAAA;AnBo8GV;;AmBj8GA;;EAEE,cAAA;AnBo8GF;;AOt6GI;EY3BJ;IAEI,YAAA;IACA,yBAAA;IACA,oBjBoHyB;EFg1G3B;AACF;AO96GI;EY3BJ;IAQI,yBAAA;IACA,oBjBgHkB;EFq1GpB;AACF;AmBn8GE;EACE,WAAA;EACA,eAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;AnBq8GJ;AmBn8GI;;;;EAGE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;AnBs8GN;;AmBj8GA;EACE,aAAA;EACA,cAAA;AnBo8GF;AmBl8GE;EACE,cjBjBQ;EiBkBR,qBAAA;AnBo8GJ;AmBj8GE;EACE,kBAAA;AnBm8GJ;;AmB/7GA;EACE,0HjBrEW;EiBsEX,iBjB/CY;AFi/Gd;;AmB/7GA;EA6BE,sBAAA;EAqDA,yBAAA;AnBk3GF;AmBn8GE;EACE,qBAAA;EACA,gCAAA;AnBq8GJ;AmBj8GE;EACC,kBAAA;EACA,WAAA;EACA,UAAA;EACA,gBAAA;EAIA,yCAAA;AnBm8GH;AmBh8GE;EACC,UAAA;AnBk8GH;AmB97GE;;;EAGE,cAAA;AnBg8GJ;AmB57GE;EACE,iBAAA;EAEA,uBAAA;AnB67GJ;AmBn7GI;EACE,0BAAA;AnBq7GN;AmBn7GM;EACE,wCAAA;AnBq7GR;AmBh7GE;EACE,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,mBjBjFoB;EiBkFpB,kBjBmBY;AF+5GhB;AmBh7GI;EAEE,sBAAA;EACA,YAAA,EAAA,sBAAA;AnBi7GN;AmB76GE;EACE,eAAA;EACA,0HjB7IS;EiB8IT,iBAAA;AnB+6GJ;AmB56GE;EACE,gBAAA;EACA,0HjBnJS;EiBoJT,iBjB3HU;AFyiHd;AmB36GE;EACE,iBjB/HU;AF4iHd;AmBz6GE;EACE,kBAAA;EACA,qBAAA;AnB26GJ;;AmBv6GA;EACE,kBAAA;EACA,kBAAA;EdvIA,WAAA;Ec0IA,0BjBXiB;EiBajB,sBAAA;AnB06GF;AKpjHE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALsjHJ;AmB76GE;EACE,kBAAA;EACA,kBAAA;EACA,cAAA;EdjJF,WAAA;EcmJE,sBAAA;EACA,4BAAA;EACA,2BAAA;EAEA,0BjBxBe;EiB0Bf,sBAAA;AnB+6GJ;AKtkHE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALwkHJ;AmBl7GI;EACE,WAAA;AnBo7GN;AmBj7GI;EACE,iBAAA;EACA,kBAAA;AnBm7GN;AOjkHI;EY4IA;IAKI,iBjB3DE;EF++GR;AACF;AmBj7GI;;;;;EAIE,WAAA;EACA,2CAAA;AnBo7GN;AmBj7GI;EACE,gBjB3EG;AF8/GT;AmBh7GI;EACE,kBjB7LQ;AF+mHd;AOplHI;EYiKA;IAII,kBjBjMM;EFonHZ;AACF;;AmB96GA;EACE,WAAA;EACA,YAAA;EACA,+BAAA;AnBi7GF;;AmB96GA;EACE,kBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;EACA,gBAAA;EACA,WAAA;EACA,kCjBzOM;EiB0ON,mBjB/MY;EiBgNZ,gBAAA;EACA,iBAAA;EACA,UAAA;EACA,YAAA;EACA,wBAAA;AnBi7GF;AO/mHI;EYiLJ;IAgBI,iBAAA;EnBk7GF;AACF;AmBh7GE;EACE,WAAA;EACA,qBAAA;AnBk7GJ;;AmB96GA;;+EAAA;AAIA;EACE,eAAA;EACA,gBAAA;EACA,6BAAA;AnBg7GF;AOjoHI;EYoNA;IACE,SAAA;IACA,mBAAA;IACA,WAAA;IACA,YAAA;IACA,gBAAA;IACA,UAAA;IACA,kBAAA;IACA,UAAA;EnBg7GJ;AACF;;AmB56GA;EACE,mBAAA;EACA,iBjB1PY;EiB2PZ,yBAAA;AnB+6GF;;AmB56GA;;+EAAA;AAIA;EACE,eAAA;EACA,cjB1OiB;EiB2OjB,0HjB9RW;EiB+RX,iBjBtQY;AForHd;AmB56GE;EACE,SAAA;AnB86GJ;AmB36GE;EACE,cAAA;AnB66GJ;;AmBz6GA;EACE,mBAAA;EACA,iBjBnRY;EiBoRZ,yBAAA;AnB46GF;;AmBz6GA;EACE,YAAA;EACA,mBAAA;EACA,oBAAA;AnB46GF;;AmBz6GA;;+EAAA;AAKE;EACE,aAAA;AnB06GJ;AmBv6GE;EACE,kBAAA;AnBy6GJ;;AmBr6GA;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBjBtLc;AF8lHhB;AmBt6GE;EACE,qBAAA;EACA,cjB7Oe;AFqpHnB;;AmBp6GA;EACE,kBAAA;EACA,mBAAA;AnBu6GF;AmBr6GE;EACE,gCAAA;AnBu6GJ;AmBp6GE;EACE,aAAA;AnBs6GJ;AmBn6GE;EACE,WAAA;EACA,SAAA;AnBq6GJ;AmBl6GE;EACE,eAAA;AnBo6GJ;;AmBh6GA;EACE,oBAAA;EACA,cjBxTiB;AF2tHnB;;AmBh6GA;EACE,cjB5TiB;AF+tHnB;;AmBh6GA;EACE,aAAA;EACA,oBAAA;EACA,qCAAA;EACA,iBAAA;EACA,UAAA;EACA,iBAAA;EACA,gBAAA;AnBm6GF;AO5uHI;EYkUJ;IAUI,qCAAA;EnBo6GF;AACF;AmBl6GE;EAGE,aAAA;EACA,iBAAA;EAGA,8BAAA;EACA,cAAA;EACA,qBAAA;EACA,gCAAA;AnBo6GJ;;AmBh6GA;EACE,cAAA;EACA,WAAA;EACA,cjB7ViB;EiB8VjB,gBAAA;EACA,yBAAA;EACA,iBAAA;EACA,qBAAA;AnBm6GF;;AmBh6GA;;+EAAA;AAIA;EACE,WAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;AnBk6GF;;AmB/5GA;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,iBjB9YY;EiB+YZ,6BAAA;EACA,yBAAA;AnBk6GF;;AmB/5GA;EAEE,gCjBnRkB;AFqrHpB;AmB/5GI;;;;EAIE,oBAAA;EACA,mBAAA;EACA,yBAAA;EACA,gBAAA;EACA,aAAA;AnBi6GN;;AmB55GA;EdjaE,WAAA;EcmaA,aAAA;AnB+5GF;AKh0HE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALk0HJ;AmBl6GE;EACE,gCAAA;AnBo6GJ;;AmBh6GA;EACE,WAAA;EACA,WAAA;EACA,YAAA;AnBm6GF;AO7zHI;EYuZJ;IAMI,YAAA;IACA,aAAA;EnBo6GF;AACF;;AmBj6GA;EACE,WAAA;EACA,YAAA;EACA,kBAAA;AnBo6GF;AOz0HI;EYkaJ;IAMI,WAAA;IACA,YAAA;IACA,YAAA;IACA,yBAAA;EnBq6GF;AACF;;AmBl6GA;EACE,YAAA;EACA,wBAAA;AnBq6GF;AOt1HI;EY+aJ;IAKI,yBAAA;EnBs6GF;AACF;;AmBn6GA;EACE,SAAA;AnBs6GF;AmBp6GE;EACE,qBAAA;AnBs6GJ;;AmBl6GA;EAEE,SAAA;AnBo6GF;AmBl6GE;EACE,qBAAA;AnBo6GJ;;AmBh6GA;;+EAAA;AAIA;EdheE,WAAA;EckeA,WAAA;EACA,eAAA;EACA,gBAAA;EACA,6BAAA;AnBk6GF;AKr4HE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALu4HJ;AOz3HI;EY6cJ;IAQI,YAAA;IACA,yBAAA;EnBw6GF;AACF;AO/3HI;EY6cJ;IAaI,yBAAA;EnBy6GF;AACF;AmBv6GE;EACE,cAAA;EACA,qBAAA;AnBy6GJ;;AmBr6GA;EACE,mBAAA;EACA,iBjB5fY;EiB6fZ,yBAAA;AnBw6GF;;AmBr6GA;;+EAAA;AZzeI;EY8eF;IAEI,gBAAA;EnBs6GJ;AACF;AOv5HI;EY8eF;IAMI,gBAAA;EnBu6GJ;AACF;AO55HI;EYwfF;IAEI,gBAAA;EnBs6GJ;AACF;AOj6HI;EYwfF;IAMI,gBAAA;EnBu6GJ;AACF;;AoBt+HA;;+EAAA;AAIA;EACE,eAAA;EACA,kBAAA;ApBw+HF;AO96HI;Ea5DJ;IAKI,YAAA;IACA,yBAAA;IACA,oBlBkJyB;EFu1H3B;AACF;AOr7HI;Ea5DJ;IAWI,yBAAA;IACA,oBlB8IkB;EF41HpB;AACF;;AoBv+HA;EACE,kBAAA;ApB0+HF;AoBx+HE;EACE,kBAAA;EACA,WAAA;ApB0+HJ;AoBv+HE;EACE,gBAAA;ApBy+HJ;;AoBr+HA;EACE,uBAAA;EACA,qBAAA;EACA,clBIY;EkBHZ,clB8BiB;EkB7BjB,gCAAA;ApBw+HF;AoBt+HE;EACE,iBAAA;ApBw+HJ;;AoBp+HA;EACE,qBAAA;EACA,0HlB/BW;EkBgCX,oBAAA;EACA,gBAAA;EACA,uBAAA;ApBu+HF;AoBr+HE;EACE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;ApBu+HJ;AoBp+HE;EACE,YAAA;ApBs+HJ;;AoBl+HA,iBAAA;AAEE;EACE,eAAA;EACA,mBAAA;ApBo+HJ;;AoBh+HA;EACE,aAAA;EACA,iBlBnCY;AFsgId;AoBj+HE;EACE,cAAA;ApBm+HJ;AoBh+HE;EACE,kBAAA;ApBk+HJ;;AoB99HA;EACE,kBAAA;EACA,kBlB4Ec;EkB3Ed,gBAAA;ApBi+HF;AoB/9HE;EACE,WAAA;ApBi+HJ;;AoB79HA;EACE,kBAAA;EACA,SAAA;EACA,QAAA;EACA,cAAA;EACA,gBAAA;EACA,WAAA;EACA,kClBzFM;EkB0FN,kBlB9DY;EkB+DZ,gBAAA;EACA,iBAAA;EACA,UAAA;EACA,YAAA;EACA,wBAAA;ApBg+HF;AO9gII;EaiCJ;IAgBI,iBAAA;EpBi+HF;AACF;AoB/9HE;EACE,WAAA;EACA,qBAAA;ApBi+HJ;;AoB79HA;;+EAAA;AAKE;EACE,eAAA;EACA,gBAAA;ApB89HJ;;AoB19HA;;+EAAA;AAKE;EACE,sCAAA;ApB29HJ;AOtiII;Ea0EF;IAII,oBAAA;EpB49HJ;AACF;AO3iII;Ea0EF;IAQI,oBAAA;EpB69HJ;AACF;;AoBz9HA;EACE,kBAAA;ApB49HF;AOpjII;EauFJ;IAII,WAAA;IACA,qBAAA;EpB69HF;EoB39HE;IACE,WAAA;IACA,cAAA;EpB69HJ;EoB19HE;IACE,WAAA;IACA,0BAAA;EpB49HJ;AACF;AOlkII;EauFJ;IAmBI,cAAA,EAAA,mBAAA;IACA,eAAA,EAAA,mBAAA;IACA,qBAAA;EpB49HF;EoB19HE;IACE,WAAA;EpB49HJ;EoBz9HE;IACE,WAAA;EpB29HJ;EoBx9HE;IACE,WAAA;IACA,0BAAA;EpB09HJ;EoBv9HE;IACE,WAAA;IACA,0BAAA;EpBy9HJ;EoBt9HE;IACE,WAAA;IACA,0BAAA;EpBw9HJ;AACF;AoBr9HE;EACE,eAAA;EACA,gBAAA;ApBu9HJ;AoBp9HE;EACE,cAAA;ApBs9HJ;AoBp9HI;EACE,aAAA;ApBs9HN;AoBl9HE;EACE,iBAAA;EACA,clB7KU;AFioId;AoBj9HE;EACE,aAAA;ApBm9HJ;AO5mII;EawJF;IAII,cAAA;IACA,iBlBpLQ;EFwoIZ;AACF;AOlnII;EaiKF;IAEI,iBAAA;EpBm9HJ;AACF;AOvnII;EaiKF;IAMI,iBAAA;EpBo9HJ;AACF;;AoBh9HA;;+EAAA;AAIA;EfnME,WAAA;EeqMA,kBAAA;EACA,gCAAA;ApBk9HF;AKtpIE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALwpIJ;AoBr9HE;EACE,gBAAA;ApBu9HJ;;AoBn9HA;EACE,kBAAA;EACA,kBAAA;EACA,kBAAA;ApBs9HF;AOnpII;Ea0LJ;IAMI,WAAA;IACA,gBAAA;IACA,qBAAA;EpBu9HF;EoBr9HE;IACE,WAAA;IACA,cAAA;EpBu9HJ;EoBp9HE;IACE,WAAA;IACA,0BAAA;EpBs9HJ;EoBn9HE;IACE,WAAA;IACA,0BAAA;EpBq9HJ;EoBl9HE;IACE,iBAAA;IACA,gBAAA;EpBo9HJ;AACF;AoBj9HE;EACE,2BAAA;EACA,4BAAA;ApBm9HJ;AoBh9HE;EACE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;ApBk9HJ;AoB/8HE;EACE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;ApBi9HJ;AoB/8HI;EACE,WAAA;ApBi9HN;AoB98HI;EACE,kBAAA;ApBg9HN;AoB78HI;EACE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;ApB+8HN;AO7sII;EakQE;IACE,WAAA;IACA,qBAAA;EpB88HN;EoB38HI;IACE,YAAA;IACA,2BAAA;IACA,4BAAA;IACA,qBAAA;EpB68HN;AACF;AoBz8HE;EACE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;ApB28HJ;AoBz8HI;EACE,WAAA;ApB28HN;AoBx8HI;EACE,kBAAA;ApB08HN;AoBv8HI;EACE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;ApBy8HN;AOhvII;EagRF;IA2BI,iBAAA;EpBy8HJ;EoBv8HI;IACE,YAAA;IACA,qBAAA;EpBy8HN;EoBt8HI;IACE,WAAA;IACA,qBAAA;IACA,2BAAA;IACA,4BAAA;EpBw8HN;AACF;AoBp8HE;EACE,kBAAA;EACA,WAAA;EACA,cAAA;EACA,eAAA;EACA,WAAA;EACA,WAAA;EACA,kBAAA;ApBs8HJ;AoBp8HI;EACE,WAAA;EACA,WAAA;ApBs8HN;AoBn8HI;EACE,kBAAA;ApBq8HN;AoBl8HI;EACE,WAAA;EACA,kBAAA;EACA,OAAA;EACA,MAAA;EACA,QAAA;EACA,SAAA;ApBo8HN;AOvxII;Ea2TF;IA4BI,kBAAA;EpBo8HJ;EoBl8HI;IACE,cAAA;IACA,qBAAA;EpBo8HN;EoBj8HI;IACE,cAAA;IACA,qBAAA;EpBm8HN;AACF;;AoB97HA,mCAAA;AAII;EACE,kBAAA;EACA,cAAA;ApB87HN;AoB17HE;;;;EAIE,cAAA;ApB47HJ;;AoBx7HA;;+EAAA;AbxXI;Ea6XF;IAEI,gBAAA;EpBy7HJ;AACF;AOzzII;Ea6XF;IAMI,gBAAA;EpB07HJ;AACF;;AoBt7HA,iCAAA;AAGC;EACC,qBAAA;ApBu7HF;;AqBn4IA;;+EAAA;AAIA;;+EAAA;AAIA;EhBqCE,WAAA;ALg2IF;AK91IE;EACE,WAAA;EACA,WAAA;EACA,cAAA;ALg2IJ;AOl1II;EcxDJ;IAWI,WAAA;IACA,wBAAA;IACA,aAAA;IAEA,oCAAA;ErBm4IF;EqBj4IE;IACE,UAAA;ErBm4IJ;EqBh4IE;IACE,gBAAA;IACA;;KAAA;IAGA,mCAAA;ErBk4IJ;AACF;AOr2II;EcxDJ;IA+BI,wBAAA;ErBk4IF;AACF;AqBh4IE;EACE,eAAA;EACA,kBAAA;ArBk4IJ;AqB/3IE;;;;;EAKE,gBAAA;EACA,0HnBrCS;AFs6Ib;AqB93IE;;EAEE,0HnB1CS;EmB2CT,iBnBlBU;EmBmBV,gBAAA;ArBg4IJ;AqB73IE;EACE,WAAA;ArB+3IJ;AqB73II;EACE,WAAA;EACA,YAAA;ArB+3IN;;AqB13IA;EACE,kBAAA;ArB63IF;AOv4II;EcSJ;IAII,kBAAA;IACA,MAAA;IACA,QAAA;IACA,YnB6EyB;ImB5EzB,oBAAA;IACA,iBAAA;IACA,WAAA;ErB83IF;EqB53IE;IhBxCF,WAAA;IgB2CI,gBAAA;IACA,QAAA;IACA,YAAA;ErB83IJ;EKz6IA;IACE,WAAA;IACA,WAAA;IACA,cAAA;EL26IF;EqBh4IM;IACE,gBAAA;IACA,6BAAA;ErBk4IR;AACF;AOl6II;EcSJ;IA6BI,YnBwDkB;ImBvDlB,oBAAA;ErBg4IF;AACF;;AOx6II;Ec2CJ;IAEI,kBAAA;IACA,YAAA;IACA,eAAA;ErBg4IF;AACF;AOh7II;Ec2CJ;IAQI,eAAA;ErBi4IF;AACF;;AqB93IA;;+EAAA;AAIA;EACE,mBAAA;EACA,mBAAA;EACA,WAAA;EACA,YAAA;ArBg4IF;AO/7II;Ec2DJ;IAOI,cAAA;IACA,WAAA;IACA,YAAA;ErBi4IF;AACF;AqB/3IE;EACE,gBAAA;EACA,kBAAA;ArBi4IJ;AO18II;EcuEF;IAKI,YAAA;IACA,yBAAA;ErBk4IJ;AACF;;AqB93IA;EACE,mBAAA;EACA,mBAAA;EACA,kBAAA;EACA,mBAAA;EACA,cAAA;ArBi4IF;AOx9II;EckFJ;IAQI,cAAA;IACA,WAAA;IACA,eAAA;IACA,gBAAA;ErBk4IF;AACF;AqBh4IE;EACE,cAAA;EACA,qBAAA;ArBk4IJ;;AqB93IA;EACE,SAAA;ArBi4IF;AOx+II;EcsGJ;IAII,gBAAA;IACA,mBAAA;ErBk4IF;AACF;;AqBh4IA;EACE,0HnB/JW;EmBgKX,cnBxIY;AF2gJd;;AqBh4IA;EACE,SAAA;ArBm4IF;AOv/II;EcmHJ;IAII,gBAAA;IACA,mBAAA;ErBo4IF;AACF;;AqBj4IA;EACE,kBAAA;EACA,mBAAA;EACA,sBAAA;EACA,0HnBhLW;EmBiLX,WAAA;EACA,eAAA;ArBo4IF;AqBj4II;EACE,gBAAA;ArBm4IN;AqB93II;EACE,iBAAA;ArBg4IN;AO5gJI;Ec4HJ;IAqBI,cAAA;ErB+3IF;AACF;AqB73IE;EACE,kBAAA;EACA,gBAAA;ArB+3IJ;AqB53IM;EADF;IAEI,WAAA;IACA,eAAA;IACA,MAAA;IACA,OAAA;IACA,WAAA;IACA,YAAA;IACA,oBAAA;ErB+3IN;AACF;AqB33IM;EACE,oBAAA;ArB63IR;AOniJI;EcoJF;IAuBI,aAAA;ErB43IJ;AACF;;AqBx3IA;EACE,aAAA;EACA,kBAAA;EACA,QAAA;EACA,gBAAA;EACA,aAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBnBnFc;EmBoFd,gBnB1LiB;EmB2LjB,6EAAA;EACA,eAAA;ArB23IF;AqBz3IE;EACE,cAAA;ArB23IJ;AOzjJI;EcgLJ;IAkBI,cAAA;IACA,kBAAA;IACA,SAAA;IACA,UAAA;IACA,SAAA;IACA,uBAAA;IACA,gBAAA;ErB23IF;AACF;AqBz3IE;EACE,cAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;EACA,sBAAA;EACA,QAAA;EACA,mBAAA;EACA,yBAAA;EACA,iCAAA;EACA,UAAA;ArB23IJ;AOhlJI;Ec2MF;IAaI,aAAA;ErB43IJ;AACF;AqBz3IE;EACE,cAAA;EACA,WAAA;EACA,kBAAA;EACA,UAAA;EACA,sBAAA;EACA,QAAA;EACA,mBAAA;EACA,yBAAA;EACA,8BAAA;EACA,UAAA;ArB23IJ;AOjmJI;Ec4NF;IAaI,aAAA;ErB43IJ;AACF;AqBz3IE;EACE,aAAA;EACA,qBAAA;ArB23IJ;AqBx3IE;EACE,mBAAA;ArB03IJ;AqBv3IE;EACE,cAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,mBAAA;EACA,cAAA;EACA,cnBrRU;EmBsRV,qBAAA;ArBy3IJ;AqBv3II;EACE,0BAAA;ArBy3IN;;AqBp3IA;;+EAAA;AAIA;EACE,kBAAA;ArBs3IF;AOjoJI;Ec0QJ;IAII,iBAAA;IACA,YAAA;IACA,cAAA;IACA,cAAA;IACA,qBAAA;IACA,qBAAA;IACA,gBAAA;ErBu3IF;EqBr3IE;IACE,WAAA;ErBu3IJ;AACF;AO/oJI;Ec0QJ;IAkBI,cAAA;IACA,qBAAA;ErBu3IF;AACF;;AsBrtJA;;+EAAA;AAIA;EAEE;IACE,aAAA;EtBstJF;EsBntJA;IAGE,sBAAA;EtBqtJF;EsBltJA;IACE,SAAA;IACA,UAAA;IACA,2BAAA;IACA,eAAA;EtBotJF;EsBjtJA;IACE,cAAA;IACA,2BAAA;IACA,sBAAA;IACA,eAAA;IACA,gBAAA;IACA,kCAAA;IACA,mCAAA;IACA,kCAAA;EtBmtJF;EsBhtJA;;;;;;IAME,WAAA;IACA,gBAAA;IACA,sBAAA;IACA,aAAA;EtBktJF;EsB/sJA;IACE,iBAAA;EtBitJF;EsB9sJA;IACE,eAAA;EtBgtJF;EsB7sJA;IACE,kBAAA;EtB+sJF;EsB5sJA;IACE,iBAAA;EtB8sJF;EsB3sJA;IACE,kBAAA;EtB6sJF;EsB1sJA;IACE,eAAA;EtB4sJF;EsBzsJA;;IAEE,WAAA;IACA,0BAAA;IACA,qBAAA;EtB2sJF;EsBxsJA;IACE,yBAAA;EtB0sJF;EsBvsJA;IACE,2BAAA;EtBysJF;EsBtsJA;;;IAGE,6BAAA;EtBwsJF;EsBrsJA;;IAEE,iBAAA;EtBusJF;EsBpsJA;IACE,SAAA;IACA,cAAA;IACA,0BAAA;IACA,sBAAA;EtBssJF;EsBnsJA;IACE,SAAA;IACA,6BAAA;IACA,SAAA;IACA,iBAAA;IACA,UAAA;EtBqsJF;EsBlsJA;IACE,iBAAA;EtBosJF;EsBjsJA;IACE,SAAA;IACA,sBAAA;EtBmsJF;EsBhsJA;;IAEE,SAAA;IACA,qBAAA;EtBksJF;EsB/rJA;;;;;;;;;;;IAWE,wBAAA;EtBisJF;EsB9rJA;;;;;IAKE,UAAA;IACA,SAAA;EtBgsJF;EsB7rJA;;;;;;IAME,uBAAA;IACA,wBAAA;EtB+rJF;EsB5rJA;;;IAGE,wBAAA;EtB8rJF;EsB3rJA;IACE,sBAAA;IACA,uBAAA;IACA,wBAAA;EtB6rJF;EsB1rJA;IACE,gCAAA;IACA,qBAAA;EtB4rJF;EsBzrJA;;;IAGE,4BAAA;IACA,cAAA;EtB2rJF;EsBxrJA;;IAEE,6BAAA;EtB0rJF;EsBvrJA;IACE,eAAA;EtByrJF;EsBtrJA;IACE,SAAA;IACA,UAAA;IACA,WAAA;EtBwrJF;EsBrrJA;;IAEE,yBAAA;EtBurJF;EsBprJA;IACE,wBAAA;EtBsrJF;EsBnrJA;IACE,aAAA;EtBqrJF;EsBlrJA;IACE,WAAA;EtBorJF;EsBjrJA;;IAEE,WAAA;EtBmrJF;EsBhrJA;IACE,sBAAA;IACA,2BAAA;IACA,UAAA;EtBkrJF;EsBhrJE;IACE,sBAAA;EtBkrJJ;EsB9qJF;;iFAAA;EAIE;;;;;;;;;;;;;;IAcE,wBAAA;IACA,sBAAA;EtB+qJF;AACF","file":"minimal-mistakes.css"} \ No newline at end of file diff --git a/_sass/minima/profile.css b/_sass/minima/profile.css new file mode 100644 index 0000000..e80753a --- /dev/null +++ b/_sass/minima/profile.css @@ -0,0 +1,107 @@ +.container { + display: flex; + flex-wrap: wrap; + justify-content: center; /* Center the divs horizontally */ + margin-top: 20px; /* Adjust top margin as needed */ + margin-left: 270px; +} + +.logo_items { + margin-left: 5%; +} + +.summary-row { + display: flex; + justify-content: space-between; /* Space out the cards within each row */ +} + +.summary-card { + width: 300px; /* Adjust width as needed */ + padding: 20px; + background-color: #E5E4E2; + border-radius: 10px; + margin-left: 50px; /* Adjust margin to match sidebar width */ + text-align: center; + margin-bottom: 20px; /* Adjust bottom margin as needed */ + float: right; +} + +.summary-card h2 { + margin-top: 0; +} + +.summary-card img { + width: 50px; /* Adjust icon size as needed */ + margin-bottom: 10px; +} + +h2 { + color: black; +} + +p { + color: black; +} + +.page-content { + padding: 0px !important; +} + +.container-profile { + display: flex; + flex-wrap: wrap; + justify-content: left; + height: 18vh; /* 20% of the viewport height */ + position: absolute; + top: 0; + z-index: -1; + width: 100%; + background-color: #2a2930; +} + +.sumText { + margin-left: 330px; + color:white; +} + +#initName { + height: 50px; + font-size: 36px; + margin-bottom: 10px; +} + +#detailText { + font-size: 22.5px; +} + +.allBoxes { + margin-top: 12%; +} + +.summary-row { + margin-top: 2%; +} + +body { + margin: 0; + padding: 0; + font-family: sans-serif; +} + +.logo { + width: 105px !important; + height: auto !important; +} + +.logo_name { + font-size: 65px; + margin-left: 10px; +} + +.logo_items flex { + margin-left: 10px; +} + +#sidebar_close { + height: 50px; +}/*# sourceMappingURL=profile.css.map */ \ No newline at end of file diff --git a/_sass/minima/profile.css.map b/_sass/minima/profile.css.map new file mode 100644 index 0000000..1eeac24 --- /dev/null +++ b/_sass/minima/profile.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["profile.scss","profile.css"],"names":[],"mappings":"AAAE;EACE,aAAA;EACA,eAAA;EACA,uBAAA,EAAA,iCAAA;EACA,gBAAA,EAAA,gCAAA;EACA,kBAAA;ACCJ;;ADEE;EACE,eAAA;ACCJ;;ADEE;EACE,aAAA;EACA,8BAAA,EAAA,wCAAA;ACCJ;;ADEE;EACE,YAAA,EAAA,2BAAA;EACA,aAAA;EACA,yBAAA;EACA,mBAAA;EACA,iBAAA,EAAA,yCAAA;EACA,kBAAA;EACA,mBAAA,EAAA,mCAAA;EACA,YAAA;ACCJ;;ADEE;EACE,aAAA;ACCJ;;ADEE;EACE,WAAA,EAAA,+BAAA;EACA,mBAAA;ACCJ;;ADEE;EACE,YAAA;ACCJ;;ADEE;EACE,YAAA;ACCJ;;ADEE;EACE,uBAAA;ACCJ;;ADEE;EACE,aAAA;EACA,eAAA;EACA,qBAAA;EACA,YAAA,EAAA,+BAAA;EACA,kBAAA;EACA,MAAA;EACA,WAAA;EACA,WAAA;EACA,yBAAA;ACCJ;;ADEE;EACE,kBAAA;ACCJ;;ADEE;EACE,YAAA;EACA,eAAA;EACA,mBAAA;ACCJ;;ADEE;EACE,iBAAA;ACCJ;;ADEE;EACE,eAAA;ACCJ;;ADEE;EACE,cAAA;ACCJ;;ADEE;EACE,SAAA;EACA,UAAA;EACA,uBAAA;ACCJ;;ADEE;EACE,uBAAA;EACA,uBAAA;ACCJ;;ADEE;EACE,eAAA;EACA,iBAAA;ACCJ;;ADEE;EACE,iBAAA;ACCJ;;ADEE;EACE,YAAA;ACCJ","file":"profile.css"} \ No newline at end of file diff --git a/_sass/minima/profile.scss b/_sass/minima/profile.scss index c095a41..bb916c6 100644 --- a/_sass/minima/profile.scss +++ b/_sass/minima/profile.scss @@ -5,6 +5,10 @@ margin-top: 20px; /* Adjust top margin as needed */ margin-left: 270px; } + + .logo_items { + margin-left: 5%; + } .summary-row { display: flex; @@ -19,6 +23,7 @@ margin-left: 50px; /* Adjust margin to match sidebar width */ text-align: center; margin-bottom: 20px; /* Adjust bottom margin as needed */ + float: right; } .summary-card h2 { @@ -37,3 +42,66 @@ p { color: black; } + + .page-content { + padding: 0px !important; + } + + .container-profile { + display: flex; + flex-wrap: wrap; + justify-content: left; + height: 18vh; /* 20% of the viewport height */ + position: absolute; + top: 0; + z-index: -1; + width: 100%; + background-color: #2a2930; + } + + .sumText { + margin-left: 330px; + color:white; + } + + #initName { + height: 50px; + font-size: 36px; + margin-bottom: 10px; + } + + #detailText { + font-size: 22.5px; + } + + .allBoxes { + margin-top: 12%; + } + + .summary-row { + margin-top: 2%; + } + + body { + margin: 0; + padding: 0; + font-family: sans-serif; + } + + .logo { + width: 105px !important; + height: auto !important; + } + + .logo_name { + font-size: 65px; + margin-left: 10px; + } + + .logo_items flex { + margin-left: 10px; + } + + #sidebar_close { + height: 50px; + } \ No newline at end of file diff --git a/assets/css/character.css b/assets/css/character.css new file mode 100644 index 0000000..00ef6f7 --- /dev/null +++ b/assets/css/character.css @@ -0,0 +1,87 @@ +.scroll { + overflow-y: auto; /* Enable vertical scrollbar if content overflows */ +} + +.page-content { + margin-left: 270px; +} + +.flex-container { + display: flex; + flex-direction: row; +} + +.equipped-slot { + margin-right: 20px; +} + +#profile-container, #equip-spot { + display: flex; + align-items: flex-start; /* Align items to the top */ + margin: 50px auto; + padding: 20px; + max-width: 800px; /* Adjust as needed */ + border: 1px solid #ccc; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + animation: fade-in 1s ease-in-out; /* Apply fade-in animation */ +} + +#inventory { + align-items: flex-start; /* Align items to the top */ + margin: 50px auto; + padding: 20px; + max-width: 800px; /* Adjust as needed */ + border: 1px solid #ccc; + border-radius: 8px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + animation: fade-in 1s ease-in-out; /* Apply fade-in animation */ + +} + +#equipped { + display: flex; + align-items: flex-start; /* Align items to the left */ + margin-right: 20px; +} + +#playerImage { + width: 40%; + height: auto; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); + margin-right: 20px; +} + +#characterHealth, +#characterDamage { + color: white; + margin-left: 0% !important; +} + +#equip-spot { + width: 200px; + border: 2px dashed #ccc; + text-align: center; + margin-top: 20px; + margin-bottom: 0px; +} + +.item-stats { + background-color: rgba(0, 0, 0, 0.8); + color: white; + position: absolute; + padding: 5px; + border-radius: 5px; + z-index: 1; /* Ensure it's on top of other elements */ +} + +#equippedArmor { + width: 80px; + height: auto; + margin-right: 10px; +} + +@keyframes fade-in { + from { opacity: 0; } + to { opacity: 1; } +} \ No newline at end of file diff --git a/assets/css/chatbot.css b/assets/css/chatbot.css new file mode 100644 index 0000000..d15eba7 --- /dev/null +++ b/assets/css/chatbot.css @@ -0,0 +1,151 @@ +:root { + --body-bg: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); + --msger-bg: #fff; + --border: 2px solid #ddd; + --left-msg-bg: #ececec; + --right-msg-bg: #579ffb; +} + +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + margin: 0; + padding: 0; + box-sizing: inherit; +} + +body { + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + background-image: var(--body-bg); + font-family: Helvetica, sans-serif; +} + +.msger { + display: flex; + flex-flow: column wrap; + justify-content: space-between; + width: 1000px; + margin: 25px 10px; + height: calc(867px); + border: var(--border); + border-radius: 5px; + background: var(--msger-bg); + box-shadow: 0 15px 15px -5px rgba(0, 0, 0, 0.2); +} + +.msger-header { + display: flex; + justify-content: space-between; + padding: 10px; + border-bottom: var(--border); + background: #eee; + color: #666; +} + +.msger-chat { + flex: 1; + overflow-y: auto; + padding: 10px; +} +.msger-chat::-webkit-scrollbar { + width: 6px; +} +.msger-chat::-webkit-scrollbar-track { + background: #ddd; +} +.msger-chat::-webkit-scrollbar-thumb { + background: #bdbdbd; +} +.msg { + display: flex; + align-items: flex-end; + margin-bottom: 10px; +} +.msg:last-of-type { + margin: 0; +} +.msg-img { + width: 64px; + height: 64px; + margin-right: 10px; + background: #ddd; + background-repeat: no-repeat; + background-position: center; + background-size: cover; + border-radius: 50%; +} +.msg-bubble { + max-width: 450px; + padding: 15px; + border-radius: 15px; + background: var(--left-msg-bg); +} +.msg-info { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 10px; +} +.msg-info-name { + margin-right: 10px; + font-weight: bold; +} +.msg-info-time { + font-size: 0.85em; +} + +.left-msg .msg-bubble { + border-bottom-left-radius: 0; +} + +.right-msg { + flex-direction: row-reverse; +} +.right-msg .msg-bubble { + background: var(--right-msg-bg); + color: #fff; + border-bottom-right-radius: 0; +} +.right-msg .msg-img { + margin: 0 0 0 10px; +} + +.msger-inputarea { + display: flex; + padding: 10px; + border-top: var(--border); + background: #eee; +} +.msger-inputarea * { + padding: 10px; + border: none; + border-radius: 3px; + font-size: 1em; +} +.msger-input { + flex: 1; + background: #ddd; +} +.msger-send-btn { + margin-left: 10px; + background: rgb(0, 196, 65); + color: #fff; + font-weight: bold; + cursor: pointer; + transition: background 0.23s; +} +.msger-send-btn:hover { + background: rgb(0, 180, 50); +} + +.msger-chat { + background-color: #fcfcfe; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cg fill-rule='evenodd'%3E%3Cg fill='%23dddddd' fill-opacity='0.4'%3E%3Cpath d='M24.37 16c.2.65.39 1.32.54 2H21.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06A5 5 0 0 1-17.45 28v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H-20a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1L.9 19.22a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0L2.26 23h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM-13.82 27l16.37 4.91L18.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H-13.1z'/%3E%3Cpath id='path6_fill-copy' d='M284.37 16c.2.65.39 1.32.54 2H281.17l1.17 2.34.45.9-.24.11V28a5 5 0 0 1-2.23 8.94l-.02.06a8 8 0 0 1-7.75 6h-20a8 8 0 0 1-7.74-6l-.02-.06a5 5 0 0 1-2.24-8.94v-6.76l-.79-1.58-.44-.9.9-.44.63-.32H240a23.01 23.01 0 0 1 44.37-2zm-36.82 2a1 1 0 0 0-.44.1l-3.1 1.56.89 1.79 1.31-.66a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .9 0l2.21-1.1a3 3 0 0 1 2.69 0l2.2 1.1a1 1 0 0 0 .86.02l2.88-1.27a3 3 0 0 1 2.43 0l2.88 1.27a1 1 0 0 0 .85-.02l3.1-1.55-.89-1.79-1.42.71a3 3 0 0 1-2.56.06l-2.77-1.23a1 1 0 0 0-.4-.09h-.01a1 1 0 0 0-.4.09l-2.78 1.23a3 3 0 0 1-2.56-.06l-2.3-1.15a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01a1 1 0 0 0-.44.1l-2.21 1.11a3 3 0 0 1-2.69 0l-2.2-1.1a1 1 0 0 0-.45-.11h-.01zm0-2h-4.9a21.01 21.01 0 0 1 39.61 0h-2.09l-.06-.13-.26.13h-32.31zm30.35 7.68l1.36-.68h1.3v2h-36v-1.15l.34-.17 1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.69 0l1.36-.68h2.59l1.36.68a3 3 0 0 0 2.56.06l1.67-.74h3.23l1.67.74a3 3 0 0 0 2.56-.06zM246.18 27l16.37 4.91L278.93 27h-32.75zm-.63 2h.34l16.66 5 16.67-5h.33a3 3 0 1 1 0 6h-34a3 3 0 1 1 0-6zm1.35 8a6 6 0 0 0 5.65 4h20a6 6 0 0 0 5.66-4H246.9z'/%3E%3Cpath d='M159.5 21.02A9 9 0 0 0 151 15h-42a9 9 0 0 0-8.5 6.02 6 6 0 0 0 .02 11.96A8.99 8.99 0 0 0 109 45h42a9 9 0 0 0 8.48-12.02 6 6 0 0 0 .02-11.96zM151 17h-42a7 7 0 0 0-6.33 4h54.66a7 7 0 0 0-6.33-4zm-9.34 26a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-4.34a8.98 8.98 0 0 0 3.34-7h-2a7 7 0 0 1-7 7h-7a7 7 0 1 1 0-14h42a7 7 0 1 1 0 14h-9.34zM109 27a9 9 0 0 0-7.48 4H101a4 4 0 1 1 0-8h58a4 4 0 0 1 0 8h-.52a9 9 0 0 0-7.48-4h-42z'/%3E%3Cpath d='M39 115a8 8 0 1 0 0-16 8 8 0 0 0 0 16zm6-8a6 6 0 1 1-12 0 6 6 0 0 1 12 0zm-3-29v-2h8v-6H40a4 4 0 0 0-4 4v10H22l-1.33 4-.67 2h2.19L26 130h26l3.81-40H58l-.67-2L56 84H42v-6zm-4-4v10h2V74h8v-2h-8a2 2 0 0 0-2 2zm2 12h14.56l.67 2H22.77l.67-2H40zm13.8 4H24.2l3.62 38h22.36l3.62-38z'/%3E%3Cpath d='M129 92h-6v4h-6v4h-6v14h-3l.24 2 3.76 32h36l3.76-32 .24-2h-3v-14h-6v-4h-6v-4h-8zm18 22v-12h-4v4h3v8h1zm-3 0v-6h-4v6h4zm-6 6v-16h-4v19.17c1.6-.7 2.97-1.8 4-3.17zm-6 3.8V100h-4v23.8a10.04 10.04 0 0 0 4 0zm-6-.63V104h-4v16a10.04 10.04 0 0 0 4 3.17zm-6-9.17v-6h-4v6h4zm-6 0v-8h3v-4h-4v12h1zm27-12v-4h-4v4h3v4h1v-4zm-6 0v-8h-4v4h3v4h1zm-6-4v-4h-4v8h1v-4h3zm-6 4v-4h-4v8h1v-4h3zm7 24a12 12 0 0 0 11.83-10h7.92l-3.53 30h-32.44l-3.53-30h7.92A12 12 0 0 0 130 126z'/%3E%3Cpath d='M212 86v2h-4v-2h4zm4 0h-2v2h2v-2zm-20 0v.1a5 5 0 0 0-.56 9.65l.06.25 1.12 4.48a2 2 0 0 0 1.94 1.52h.01l7.02 24.55a2 2 0 0 0 1.92 1.45h4.98a2 2 0 0 0 1.92-1.45l7.02-24.55a2 2 0 0 0 1.95-1.52L224.5 96l.06-.25a5 5 0 0 0-.56-9.65V86a14 14 0 0 0-28 0zm4 0h6v2h-9a3 3 0 1 0 0 6H223a3 3 0 1 0 0-6H220v-2h2a12 12 0 1 0-24 0h2zm-1.44 14l-1-4h24.88l-1 4h-22.88zm8.95 26l-6.86-24h18.7l-6.86 24h-4.98zM150 242a22 22 0 1 0 0-44 22 22 0 0 0 0 44zm24-22a24 24 0 1 1-48 0 24 24 0 0 1 48 0zm-28.38 17.73l2.04-.87a6 6 0 0 1 4.68 0l2.04.87a2 2 0 0 0 2.5-.82l1.14-1.9a6 6 0 0 1 3.79-2.75l2.15-.5a2 2 0 0 0 1.54-2.12l-.19-2.2a6 6 0 0 1 1.45-4.46l1.45-1.67a2 2 0 0 0 0-2.62l-1.45-1.67a6 6 0 0 1-1.45-4.46l.2-2.2a2 2 0 0 0-1.55-2.13l-2.15-.5a6 6 0 0 1-3.8-2.75l-1.13-1.9a2 2 0 0 0-2.5-.8l-2.04.86a6 6 0 0 1-4.68 0l-2.04-.87a2 2 0 0 0-2.5.82l-1.14 1.9a6 6 0 0 1-3.79 2.75l-2.15.5a2 2 0 0 0-1.54 2.12l.19 2.2a6 6 0 0 1-1.45 4.46l-1.45 1.67a2 2 0 0 0 0 2.62l1.45 1.67a6 6 0 0 1 1.45 4.46l-.2 2.2a2 2 0 0 0 1.55 2.13l2.15.5a6 6 0 0 1 3.8 2.75l1.13 1.9a2 2 0 0 0 2.5.8zm2.82.97a4 4 0 0 1 3.12 0l2.04.87a4 4 0 0 0 4.99-1.62l1.14-1.9a4 4 0 0 1 2.53-1.84l2.15-.5a4 4 0 0 0 3.09-4.24l-.2-2.2a4 4 0 0 1 .97-2.98l1.45-1.67a4 4 0 0 0 0-5.24l-1.45-1.67a4 4 0 0 1-.97-2.97l.2-2.2a4 4 0 0 0-3.09-4.25l-2.15-.5a4 4 0 0 1-2.53-1.84l-1.14-1.9a4 4 0 0 0-5-1.62l-2.03.87a4 4 0 0 1-3.12 0l-2.04-.87a4 4 0 0 0-4.99 1.62l-1.14 1.9a4 4 0 0 1-2.53 1.84l-2.15.5a4 4 0 0 0-3.09 4.24l.2 2.2a4 4 0 0 1-.97 2.98l-1.45 1.67a4 4 0 0 0 0 5.24l1.45 1.67a4 4 0 0 1 .97 2.97l-.2 2.2a4 4 0 0 0 3.09 4.25l2.15.5a4 4 0 0 1 2.53 1.84l1.14 1.9a4 4 0 0 0 5 1.62l2.03-.87zM152 207a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6 2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-11 1a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-6 0a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3-5a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-8 8a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm3 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm0 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4 7a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5-2a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm5 4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm6-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm4-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-5-4a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm-24 6a1 1 0 1 1 2 0 1 1 0 0 1-2 0zm16 5a5 5 0 1 0 0-10 5 5 0 0 0 0 10zm7-5a7 7 0 1 1-14 0 7 7 0 0 1 14 0zm86-29a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1 246 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM275 214a29 29 0 0 0-57.97 0h57.96zM72.33 198.12c-.21-.32-.34-.7-.34-1.12v-12h-2v12a4.01 4.01 0 0 0 7.09 2.54c.57-.69.91-1.57.91-2.54v-12h-2v12a1.99 1.99 0 0 1-2 2 2 2 0 0 1-1.66-.88zM75 176c.38 0 .74-.04 1.1-.12a4 4 0 0 0 6.19 2.4A13.94 13.94 0 0 1 84 185v24a6 6 0 0 1-6 6h-3v9a5 5 0 1 1-10 0v-9h-3a6 6 0 0 1-6-6v-24a14 14 0 0 1 14-14 5 5 0 0 0 5 5zm-17 15v12a1.99 1.99 0 0 0 1.22 1.84 2 2 0 0 0 2.44-.72c.21-.32.34-.7.34-1.12v-12h2v12a3.98 3.98 0 0 1-5.35 3.77 3.98 3.98 0 0 1-.65-.3V209a4 4 0 0 0 4 4h16a4 4 0 0 0 4-4v-24c.01-1.53-.23-2.88-.72-4.17-.43.1-.87.16-1.28.17a6 6 0 0 1-5.2-3 7 7 0 0 1-6.47-4.88A12 12 0 0 0 58 185v6zm9 24v9a3 3 0 1 0 6 0v-9h-6z'/%3E%3Cpath d='M-17 191a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm19 9a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1zm-14 5a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm-25 1a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm5 4a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm9 0a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm15 1a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm12-2a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2H4zm-11-14a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-19 0a1 1 0 0 0 0 2h2a1 1 0 0 0 0-2h-2zm6 5a1 1 0 0 1 1-1h2a1 1 0 0 1 0 2h-2a1 1 0 0 1-1-1zm-25 15c0-.47.01-.94.03-1.4a5 5 0 0 1-1.7-8 3.99 3.99 0 0 1 1.88-5.18 5 5 0 0 1 3.4-6.22 3 3 0 0 1 1.46-1.05 5 5 0 0 1 7.76-3.27A30.86 30.86 0 0 1-14 184c6.79 0 13.06 2.18 18.17 5.88a5 5 0 0 1 7.76 3.27 3 3 0 0 1 1.47 1.05 5 5 0 0 1 3.4 6.22 4 4 0 0 1 1.87 5.18 4.98 4.98 0 0 1-1.7 8c.02.46.03.93.03 1.4v1h-62v-1zm.83-7.17a30.9 30.9 0 0 0-.62 3.57 3 3 0 0 1-.61-4.2c.37.28.78.49 1.23.63zm1.49-4.61c-.36.87-.68 1.76-.96 2.68a2 2 0 0 1-.21-3.71c.33.4.73.75 1.17 1.03zm2.32-4.54c-.54.86-1.03 1.76-1.49 2.68a3 3 0 0 1-.07-4.67 3 3 0 0 0 1.56 1.99zm1.14-1.7c.35-.5.72-.98 1.1-1.46a1 1 0 1 0-1.1 1.45zm5.34-5.77c-1.03.86-2 1.79-2.9 2.77a3 3 0 0 0-1.11-.77 3 3 0 0 1 4-2zm42.66 2.77c-.9-.98-1.87-1.9-2.9-2.77a3 3 0 0 1 4.01 2 3 3 0 0 0-1.1.77zm1.34 1.54c.38.48.75.96 1.1 1.45a1 1 0 1 0-1.1-1.45zm3.73 5.84c-.46-.92-.95-1.82-1.5-2.68a3 3 0 0 0 1.57-1.99 3 3 0 0 1-.07 4.67zm1.8 4.53c-.29-.9-.6-1.8-.97-2.67.44-.28.84-.63 1.17-1.03a2 2 0 0 1-.2 3.7zm1.14 5.51c-.14-1.21-.35-2.4-.62-3.57.45-.14.86-.35 1.23-.63a2.99 2.99 0 0 1-.6 4.2zM15 214a29 29 0 0 0-57.97 0h57.96z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); +} diff --git a/assets/css/fight.css b/assets/css/fight.css new file mode 100644 index 0000000..c19dda2 --- /dev/null +++ b/assets/css/fight.css @@ -0,0 +1,206 @@ +@import url('https://fonts.googleapis.com/css2?family=DotGothic16&display=swap'); + +.fight-container { + display: flex; + justify-content: space-around; + align-items: flex-start; /* Align items to the top */ + margin-top: 50px; +} + +.player-box, +.enemy-box { + width: 400px; + height: 300px; /* Increased height for player box */ + border-radius: 8px; + overflow: hidden; + position: relative; +} + +.fade-in { + opacity: 0; + transition: opacity 0.5s ease-in-out; +} + +.fade-in.visible { + opacity: 1; +} + +@keyframes flash { + 0% { opacity: 1; } + 50% { opacity: 0; } + 100% { opacity: 1; } +} + +.flashing { + animation: flash 0.5s infinite alternate; /* Use alternate to switch back and forth */ +} +.question-box { + position: absolute; + right: 40%; + top: 10%; + width: 350px; + padding: 20px; + background-color: #f0f0f0; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + font-family: "DotGothic16", sans-serif; + color: black; +} + +.death { + transition: opacity 0.5s ease-in-out; + opacity: 0; +} + +.question-box h1 { + margin-top: 0; + color: #333; +} + +#answers div { + margin-top: 10px; + padding: 5px; + background-color: #ddd; + border-radius: 5px; + cursor: pointer; +} + +#answers div:hover { + background-color: #ccc; +} + +.alert { + display: flex; + justify-content: space-around; + align-items: center; + background-color: #f7f7f7; + padding: 30px; + border-radius: 8px; + position: absolute; + top: 40vh; + left: 45vw; +} + +.player-box { + width: 150px; +} + +.player-box img, +.enemy-box img { + width: 100%; + height: 100%; /* Keep the image fill the box */ + object-fit: cover; +} + +.controller { + background-color: #f7f7f7; + padding: 20px; + border-radius: 8px; + margin-top: 40vh; + margin-left: 3vw; + margin-right: 80vw; + height: 175px; + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(2, 1fr); + grid-gap: 10px; +} + +.move { + /* background-color: #e0e0e0; */ + color: #333; + text-align: center; + padding: 15px; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s; + font-family: "DotGothic16", sans-serif; +} + +.moveATK { + background-color: #1e1e1e; + color: #333; + text-align: center; + padding: 15px; + border-radius: 8px; + width: 150px; + cursor: pointer; + transition: background-color 0.3s; +} + +.move:hover { + background-color: #ccc; +} + + +h1 { + margin: 0; + font-size: 1.2em; + font-family: "DotGothic16", sans-serif; +} + +.player-box { + margin-bottom: 50px; /* Add margin to push it down */ + transform: translate(5vw, 50vh); /* Move the player image down */ +} + +.enemy-box { + order: 2; /* Order the enemy box to appear second */ + transform: translate(1vw, 40vh); /* Move the player image down */ +} + +p { + margin: 5px 0 0; + font-size: 0.9em; + font-family: "DotGothic16", sans-serif; +} + +b { + color: #ff6347; +} + +#response-box { + color: white; +} + +/* Shadow/platform effect */ +.player-box::after, +.enemy-box::after { + content: ""; + position: absolute; + bottom: -10px; + left: 0; + width: 100%; + height: 20px; + background: rgba(255, 255, 255, 0.5); + border-radius: 50%; + z-index: -1; + box-shadow: 0px 0px 10px 5px rgba(255, 255, 255, 0.5); +} + +.health-box { + display: flex; + justify-content: space-around; + align-items: center; + background-color: #f7f7f7; + position: absolute; + padding: 10px; + border-radius: 8px; + margin-top: 40vh; + margin-left: 18vw; + margin-right: 52vw; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(2, 1fr); + grid-gap: 10px; +} + +.backgroundStyle { + background-color: #e0e0e0; + color: #333; + text-align: center; + padding: 10px; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s; + font-family: "DotGothic16", sans-serif; +} diff --git a/assets/css/multiplayer.css b/assets/css/multiplayer.css new file mode 100644 index 0000000..950c04b --- /dev/null +++ b/assets/css/multiplayer.css @@ -0,0 +1,221 @@ +@import url('https://fonts.googleapis.com/css2?family=DotGothic16&display=swap'); + +.fight-container { + display: flex; + justify-content: space-around; + align-items: flex-start; /* Align items to the top */ + margin-top: 50px; +} + + +.player-box, +.enemy-box { + width: 400px; + height: 300px; /* Increased height for player box */ + border-radius: 8px; + overflow: hidden; + position: relative; +} + +.fade-in { + opacity: 0; + transition: opacity 0.5s ease-in-out; +} + +.fade-in.visible { + opacity: 1; +} + +@keyframes flash { + 0% { opacity: 1; } + 50% { opacity: 0; } + 100% { opacity: 1; } +} + +.flashing { + animation: flash 0.5s infinite alternate; /* Use alternate to switch back and forth */ +} +.question-box { + position: absolute; + right: 40%; + top: 10%; + width: 350px; + padding: 20px; + background-color: #f0f0f0; + border-radius: 8px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + font-family: "DotGothic16", sans-serif; + color: black; +} + +.death { + transition: opacity 0.5s ease-in-out; + opacity: 0; +} + +.question-box h1 { + margin-top: 0; + color: #333; +} + +#answers div { + margin-top: 10px; + padding: 5px; + background-color: #ddd; + border-radius: 5px; + cursor: pointer; +} + +#answers div:hover { + background-color: #ccc; +} + +.alert { + display: flex; + justify-content: space-around; + align-items: center; + background-color: #f7f7f7; + padding: 30px; + border-radius: 8px; + position: absolute; + top: 40vh; + left: 45vw; +} + +.player-box { + width: 150px; +} + +.player-box img, +.enemy-box img { + width: 100%; + height: 100%; /* Keep the image fill the box */ + object-fit: cover; +} + +.controller { + background-color: #f7f7f7; + padding: 20px; + border-radius: 8px; + margin-top: 40vh; + margin-left: 3vw; + margin-right: 80vw; + height: 175px; + display: grid; + width: 8%; +} + + +.controllerSIGN { + background-color: #f7f7f7; + padding: 20px; + border-radius: 8px; + margin-top: 40vh; + margin-left: 5%; + margin-right: 80vw; + height: 175px; + display: grid; + width: 90%; +} + +.move { + /* background-color: #e0e0e0; */ + color: #333; + text-align: center; + padding: 15px; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s; + font-family: "DotGothic16", sans-serif; + font-size: 1.5em; +} + +.moveATK { + background-color: #1e1e1e; + color: #333; + text-align: center; + padding: 15px; + border-radius: 8px; + width: 150px; + cursor: pointer; + transition: background-color 0.3s; +} + +.move:hover { + background-color: #ccc; +} + + +h1 { + margin: 0; + font-size: 2em; + font-family: "DotGothic16", sans-serif; + +} + +.player-box { + margin-bottom: 50px; /* Add margin to push it down */ + transform: translate(5vw, 50vh); /* Move the player image down */ +} + +.enemy-box { + order: 2; /* Order the enemy box to appear second */ + transform: translate(1vw, 40vh); /* Move the player image down */ +} + +p { + margin: 5px 0 0; + font-size: 0.9em; + font-family: "DotGothic16", sans-serif; +} + +b { + color: #ff6347; +} + +#response-box { + color: white; +} + +/* Shadow/platform effect */ +.player-box::after, +.enemy-box::after { + content: ""; + position: absolute; + bottom: -10px; + left: 0; + width: 100%; + height: 20px; + background: rgba(255, 255, 255, 0.5); + border-radius: 50%; + z-index: -1; + box-shadow: 0px 0px 10px 5px rgba(255, 255, 255, 0.5); +} + +.health-box { + display: flex; + justify-content: space-around; + align-items: center; + background-color: #f7f7f7; + position: absolute; + padding: 10px; + border-radius: 8px; + margin-top: 40vh; + margin-left: 18vw; + margin-right: 52vw; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: repeat(2, 1fr); + grid-gap: 10px; +} + +.backgroundStyle { + background-color: #e0e0e0; + color: #333; + text-align: center; + padding: 10px; + border-radius: 8px; + cursor: pointer; + transition: background-color 0.3s; + font-family: "DotGothic16", sans-serif; + height: 100%; +} diff --git a/assets/icons/icons8-chat-bot-64.png b/assets/icons/icons8-chat-bot-64.png new file mode 100644 index 0000000..70a5fbe Binary files /dev/null and b/assets/icons/icons8-chat-bot-64.png differ diff --git a/assets/icons/icons8-person-94.png b/assets/icons/icons8-person-94.png new file mode 100644 index 0000000..4b6a353 Binary files /dev/null and b/assets/icons/icons8-person-94.png differ diff --git a/assets/js/character.js b/assets/js/character.js new file mode 100644 index 0000000..169b5d4 --- /dev/null +++ b/assets/js/character.js @@ -0,0 +1,497 @@ +var uri; +if (location.hostname === "localhost") { + uri = "http://localhost:8032"; +} else if (location.hostname === "127.0.0.1") { + uri = "http://localhost:8032"; +} else { + uri = "https://codemaxxerbackend.onrender.com"; +} + +html = ` +
+
+
+

Player Stats


+

+

+
+

Equipped Gear

+
+
+
+
+
+

Armor

+
+
+
+

Weapons

+
+
+ +
Drop Here to Equip
+
+
+`; + +keyHTML = ` +
+

Keys:

+

+
+
+ +` + +window.onload = function () { + keyFetch(); +}; + +let keyNumber; + +function keyFetch() { + var keyMenu = document.getElementById('key-div'); + keyMenu.innerHTML = keyHTML; + + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + + fetch(uri + "/api/person/jwt", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + //alert("Please log into or make an account"); + window.location.href = "login"; + break; + case 403: + //alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + //alert("User not found. Please check your credentials."); + break; + // Add more cases for other status codes as needed + default: + //alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + // Success!!! + }) + .then(data => { + console.log(data); + console.log("keys collected:" + data.keysCollected); + document.getElementById('key_num').innerText = data.keysCollected; + keyNumber = data.keysCollected; + + //call showKeys with the updated number of keys + const numOfKeys = parseInt(data.keysCollected, 10); + //const numOfKeys = 3; + console.log("Parsed number of keys:", numOfKeys); + showKeys(numOfKeys); + }) + .catch(error => { + console.log('Fetch error:', error); + }); +} + +function showKeys(numKeys){ + console.log("test: " + numKeys); + const key_div = document.getElementById('keys'); + for (let i=0; i < numKeys; i++){ + const key = document.createElement('img'); + key.className = "key_img" + key.src = "https://raw.githubusercontent.com/Codemaxxers/codemaxxerFrontend/main/images/key.png"; + key.width = "10"; + key.width = "40"; + console.log(key.src); + key_div.appendChild(key); + } +} + +let keyRemove = 1; + +function removeKey() { + + if(keyNumber > 0){ + const myHeaders = new Headers(); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/removeKey?numKeys=${keyRemove}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('key removed failed', error)); + return; + } +} + +function useKey(){ + document.getElementById("keyPopup").style.display = "block"; +} + +function innitFetch() { + var weaponMenu = document.getElementById('weaponMenu'); + weaponMenu.innerHTML = html; + + var requestOptions = { + method: 'GET', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + "/api/person/characterData", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + alert("Please log into or make an account"); + window.location.href = "login"; + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + default: + alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + }) + .then(data => { + var characterHealthElement = document.getElementById('characterHealth'); + characterHealthElement.innerHTML = '' + " " + (parseInt(data.statsArray[0][0]) + parseInt(data.statsArray[0][1])); + + var characterDamageElement = document.getElementById('characterDamage'); + characterDamageElement.innerHTML = '' + " " + (parseInt(data.statsArray[1][0]) + parseInt(data.statsArray[1][1])); + + // DISPLAY INVENTORY + var inventoryDiv = document.getElementById('inventory'); + for (var i = 0; i < data.inventory.length; i++) { + var itemId = data.inventory[i]; + var itemType; + var itemRange = Math.floor(itemId / 1000); // Determine the range based on item ID + + if (itemRange >= 1 && itemRange < 2) { + itemType = 'armor'; + } else if (itemRange >= 2 && itemRange < 3) { + itemType = 'weapons'; + } else if (itemRange >= 3 && itemRange < 4) { + itemType = 'accessories'; + } else { + // Invalid item ID + continue; + } + + var inventorySection = document.querySelector('.inventory' + itemType.charAt(0).toUpperCase() + itemType.slice(1)); // Get corresponding inventory section + var itemImg = document.createElement('img'); + itemImg.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/" + itemType + "/" + itemId + ".png"; + itemImg.style.width = "80px"; // Adjust the width as needed + itemImg.style.height = "auto"; // Adjust the height as needed + itemImg.style.marginRight = "10px"; // Adjust margin as needed + itemImg.draggable = true; // Enable dragging + itemImg.dataset.inventoryID = itemId; // Store item ID as data attribute + + inventorySection.appendChild(itemImg); + } + // END OF DISPLAY OF INVENTORY + + + + + var flexContainer = document.querySelector('.flex-container'); + + // IF ARMOR IS EQUIPPED, ADD TO EQUIPPED GEAR + if (data.armorGearIdEquipped != 0) { + var flexContainer = document.querySelector('.flex-container'); + var armorDiv = document.createElement('armorDiv'); + armorDiv.innerHTML = ` +
+

Armor

+ +
+
+ +
+ `; + flexContainer.appendChild(armorDiv); + + // DISPLAY EQUIPPED ARMOR + var equippedArmor = document.getElementById('equippedArmor'); + if (data.armorGearIdEquipped) { + equippedArmor.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/armor/" + data.armorGearIdEquipped + ".png"; + } + } + + if (data.weaponGearIdEquipped != 0) { + // Select the flex-container element + var flexContainer = document.querySelector('.flex-container'); + // Create a new div element to contain the provided HTML code + var weaponDiv = document.createElement('weaponDiv'); + weaponDiv.innerHTML = ` +
+

Weapon

+ +
+
+ +
+ `; + // Append the newly created div element to the flex-container + flexContainer.appendChild(weaponDiv); + + // DISPLAY EQUIPPED WEAPON + var equippedWeapon = document.getElementById('equippedWeapon'); + if (data.weaponGearIdEquipped) { + equippedWeapon.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/weapons/" + data.weaponGearIdEquipped + ".png"; + } + } + + console.log(data); + + // Remove fade-in animation after content is loaded + setTimeout(function() { + var profileContainer = document.getElementById('profile-container'); + var inventory = document.getElementById('inventory'); + var equipSpot = document.getElementById('equip-spot'); + profileContainer.classList.remove('fade-in'); + inventory.classList.remove('fade-in'); + equipSpot.classList.remove('fade-in'); + }, 1000); // Adjust the delay time as needed + }) + + .catch(error => console.log('error', error)); + + // Add event listener to the inventory container for event delegation + document.getElementById('inventory').addEventListener('dragstart', function(event) { + event.dataTransfer.setData('text/plain', event.target.dataset.inventoryID); // Set data to be transferred + }); +} + +function allowDrop(event) { + event.preventDefault(); +} + +document.getElementById('inventory').addEventListener('mouseover', function(event) { + var target = event.target; + var itemID = parseInt(target.dataset.inventoryID); + if (target.tagName === 'IMG') { + // Remove existing stats + var existingStats = document.querySelector('.item-stats'); + if (existingStats) { + existingStats.remove(); + } + + var stats = document.createElement('div'); + var itemType = Math.floor(itemID / 1000); // Determine the item type based on ID range + if (itemType === 1) { // Armor + fetchArmorStats(itemID) + .then(armor => { + stats.textContent = `${armor.name} - ${armor.healthAdded} Health`; + }) + .catch(error => { + stats.textContent = "[Insert Armor Stats Here]"; + console.log('error', error); + }); + } else if (itemType === 2) { // Weapon + fetchWeaponStats(itemID) + .then(weapon => { + stats.textContent = `${weapon.name} - ${weapon.damageAdded} Damage`; + }) + .catch(error => { + stats.textContent = "[Insert Weapon Stats Here]"; + console.log('error', error); + }); + } + stats.classList.add('item-stats'); // Add a class for easier identification and removal + stats.style.top = target.offsetTop + "px"; + stats.style.left = (target.offsetLeft + target.offsetWidth + 10) + "px"; + document.body.appendChild(stats); + } +}); + + +// Update the drop function to equip weapons +function drop(event) { + console.log('Dropped'); + event.preventDefault(); + var itemID = parseInt(event.dataTransfer.getData('text/plain')); // Get the data transferred + console.log('Dropped item with ID:', itemID); + + var itemType = Math.floor(itemID / 1000); // Determine the item type based on ID range + if (itemType === 1) { // Armor + equipArmor(itemID); + } else if (itemType === 2) { // Weapon + equipWeapon(itemID); + } +} + + +// Add event listener to the inventory container for event delegation +document.getElementById('inventory').addEventListener('mouseleave', function(event) { + var target = event.relatedTarget || event.toElement; + if (!target || !target.classList.contains('item-stats')) { + var stats = document.querySelector('.item-stats'); + if (stats) { + stats.remove(); + } + } +}); + + // Function to equip weapons +function equipWeapon(gearID) { + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/equipWeapon?weaponID=${gearID}`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Weapon equipped successfully."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error equipping weapon:', error)); +} + +function unequipWeapon() { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/unequipWeapon`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + +function equipArmor(gearID) { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/equipArmor?armorID=${gearID}`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + switch (response.status) { + case 401: + alert("Incorrect username or password"); + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + // Add more cases for other status codes as needed + default: + alert("Login failed. Please try again later."); + } + return Promise.reject('Login failed'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + + +function unequipArmor() { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/unequipArmor`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + +function fetchWeaponStats(weaponID) { + return fetch('gear.json') + .then(response => { + if (!response.ok) { + throw new Error('Failed to fetch weapon stats'); + } + return response.json(); + }) + .then(data => { + // Find weapon stats by weaponID + const weaponStats = data.items.find(item => item.gearID === weaponID); + if (!weaponStats) { + throw new Error('Weapon stats not found '); + } + return weaponStats; + }); +} + +// Function to fetch armor stats +function fetchArmorStats(armorID) { + return fetch('gear.json') + .then(response => { + if (!response.ok) { + throw new Error('Failed to fetch armor stats'); + } + return response.json(); + }) + .then(data => { + // Find armor stats by armorID + const armorStats = data.items.find(item => item.gearID === armorID); + if (!armorStats) { + throw new Error('Armor stats not found '); + } + return armorStats; + }); +} + +innitFetch(); \ No newline at end of file diff --git a/assets/js/chatbot.js b/assets/js/chatbot.js new file mode 100644 index 0000000..c9078e2 --- /dev/null +++ b/assets/js/chatbot.js @@ -0,0 +1,299 @@ +fetchUserData(); +let chatHistoryMode = false; + +// Define and select essential elements from the DOM for interaction +const elements = { + form: document.querySelector(".msger-inputarea"), // The form where users input their messages + input: document.querySelector(".msger-input"), // The text input field within the form + chat: document.querySelector(".msger-chat"), // The chat display area + spinner: document.getElementById("waiting"), // A loading spinner element + deleteChat: document.getElementById("delete_chat"), // The button to delete chat history + retrieveChatHistory: document.getElementById("retieve_chat_history"), // The button to retrieve chat history + personid: document.getElementById("initId"), // personid hidden field +}; + +// Define URLs for various API endpoints +//uri = "http://localhost:8032"; +uri = "https://codemaxxerbackend.onrender.com"; +const urls = { + chat: uri+"/aichatbot/chat?message=", // Endpoint for sending a chat message + clearHistory: uri+"/aichatbot/chat/history/clear?personid=", // Endpoint for clearing chat history + retrieveHistory: uri+"/aichatbot/chat/history?personid=", // Endpoint for retrieving chat history + deleteChat: uri+"/aichatbot/chat/history/delete/", //Endpoint for deleting a chat + }; + +// Define assets such as images and names for the bot and user +const assets = { + botImg: "assets/icons/icons8-chat-bot-64.png", // Bot image icon + personImg: "assets/icons/icons8-person-94.png", // User image icon + botName: "Chat Bot", // Bot name + personName: "You", // User name + botTitle: "AI Bot", // Bot title for image tooltip + personTitle: "You", // User title for image tooltip +}; + +// Event listener for the delete chat button +elements.deleteChat.addEventListener("click", async (event) => { + event.preventDefault(); // Prevent the default form submission + + await fetchData(`${urls.clearHistory}${elements.personid.value}`, "DELETE"); // Send a DELETE request to clear chat history + elements.chat.innerHTML = ""; // Clear the chat display area + appendMessage(assets.botName, assets.botImg, "left", "Your chat history has been cleared! Go ahead and send me a new message. 😄", assets.botTitle, "", formatDate(new Date())); // Inform the user that the chat history is cleared +}); + +// Event listener for the retrieve chat history button +elements.retrieveChatHistory.addEventListener("click", async (event) => { + chatHistoryMode = true; + event.preventDefault(); // Prevent the default form submission + //const chatHistory = await fetchData(`${urls.retrieveHistory}`); // Fetch chat history + //const chats = JSON.parse(chatHistory).chats; // Parse the chat history + const chats = await fetchData(`${urls.retrieveHistory}${elements.personid.value}`); // Fetch chat history + console.log(chats); + elements.chat.innerHTML = ""; // Clear the chat display area + appendMessage(assets.botName, assets.botImg, "left", "Your chat history!", assets.botTitle, "", formatDate(new Date())); // Inform the user that the chat history is loaded + + chats.forEach(chat => { // Loop through each chat message + console.log(chat); + appendMessage(assets.personName, assets.personImg, "right", chat['chatMessage'], assets.personTitle, chat['id'], formatMessageDate(chat['timestamp'])); // Append user's message + appendMessage(assets.botName, assets.botImg, "left", chat['chatReponse'], assets.botTitle, chat['id'], formatMessageDate(chat['timestamp'])); // Append bot's response + }); +}); + + +// State variable to keep track of the current response function +let instantChatResponseFlag = false; + +// Event listener for the toggle button + +document.getElementById("toggle-response-btn").addEventListener("click", () => { + instantChatResponseFlag = !instantChatResponseFlag; + alert(`Using ${instantChatResponseFlag ? "instant chat" : "streamed chat"}`); +}); + + + +// Event listener for form submission (sending a new message) +elements.form.addEventListener("submit", (event) => { + chatHistoryMode = false; + event.preventDefault(); // Prevent the default form submission + const msgText = elements.input.value; // Get the message text from the input field + if (!msgText) return; // Do nothing if the input field is empty + appendMessage(assets.personName, assets.personImg, "right", msgText, assets.personTitle, "", formatDate(new Date())); // Append the user's message to the chat + elements.input.value = ""; // Clear the input field + elements.spinner.style.display = ""; // Display the loading spinner) + botResponse(msgText); // Send the message to the bot + }); + +// Function to append a message to the chat display area +function appendMessage(name, img, side, text, title, chatid, chattime) { + const deleteChatDiv = `
`; + const msgHTML = ` +
+
+
+
+
${name}
+
${chattime}
+ ${chatHistoryMode && side == "right" ? deleteChatDiv : ''} +
+
${text}
+
+
+ `; + elements.chat.insertAdjacentHTML("beforeend", msgHTML); // Insert the message HTML into the chat display area + elements.chat.scrollTop += 500; // Scroll to the bottom of the chat display area +} + +async function deleteChat(id){ + const chats = await fetchData(`${urls.deleteChat}${id}?personid=${elements.personid.value}`, "DELETE"); // Send a DELETE request to clear chat history + // it returns the update chat history + // display updated chat history + console.log(chats); + elements.chat.innerHTML = ""; // Clear the chat display area + appendMessage(assets.botName, assets.botImg, "left", "Your updated chat history!", assets.botTitle, "", formatDate(new Date())); // Inform the user that the chat history is loaded + + chats.forEach(chat => { // Loop through each chat message + console.log(chat); + appendMessage(assets.personName, assets.personImg, "right", chat['chatMessage'], assets.personTitle, chat['id'], formatMessageDate(chat['timestamp'])); // Append user's message + appendMessage(assets.botName, assets.botImg, "left", chat['chatReponse'], assets.botTitle, chat['id'], formatMessageDate(chat['timestamp'])); // Append bot's response + }); + + //elements.retrieveChatHistory.dispatchEvent(new Event("click")); +} + +async function secondbotResponse(msgText) { + const data = await fetchData(`${urls.chat}${msgText}&personid=${elements.personid.value}`); // Fetch the bot's response + appendMessage(assets.botName, assets.botImg, "left", data.chatReponse, assets.botTitle,data.id, formatMessageDate(data.timestamp)); // Append the bot's response to the chat + elements.spinner.style.display = "none"; // Hide the loading spinner +} + +// Function to handle bot responses +async function botResponse(msgText) { + console.log("Bot Response"); + console.log(msgText); + // Show the loading spinner + elements.spinner.style.display = "block"; + + // Fetch the bot's response + const data = await fetchData(`${urls.chat}${msgText}&personid=${elements.personid.value}`); + + console.log(data); + console.log(data.chatReponse); + console.log(data.id); + + if (instantChatResponseFlag){ + appendMessage(assets.botName, assets.botImg, "left", data.chatReponse, assets.botTitle,data.id, formatMessageDate(data.timestamp)); // Append the bot's response to the chat + elements.spinner.style.display = "none"; // Hide the loading spinner + } else { + // Function to split the data into smaller chunks + function* chunkString(str, size) { + for (let i = 0; i < str.length; i += size) { + yield str.slice(i, i + size); + } + } + + + + // Split the response into chunks of a specified size (e.g., 10 characters) + const chunks = Array.from(chunkString(data.chatReponse, 10)); + + // Create a single message container for the response + appendMessage(assets.botName, assets.botImg, "left", "", assets.botTitle, data.id, formatMessageDate(data.timestamp)); + + // Get the newly created message element + const lastMsgTextElement = elements.chat.querySelector(".msg.left-msg:last-child .msg-text"); + + // Function to append the next chunk + let currentChunk = 0; + function appendNextChunk() { + if (currentChunk < chunks.length) { + lastMsgTextElement.innerHTML += chunks[currentChunk]; + currentChunk++; + elements.chat.scrollTop += 500; // Ensure the chat scrolls to show the latest content + } else { + // Stop the interval when all chunks are appended + clearInterval(intervalId); + // Hide the loading spinner + elements.spinner.style.display = "none"; + } + } + + // Set an interval to append chunks at specified intervals (e.g., every 100 milliseconds) + const intervalId = setInterval(appendNextChunk, 100); + + } +} + + + +// Function to format the date/time for messages +function formatDate(date) { + const currentDateTime = new Date().getMilliseconds(); + const messageMs = date.getMilliseconds(); + console.log("Message Time: " + date); + console.log("Current Time: " + new Date()); + const timeElapsed = currentDateTime - messageMs; + console.log(timeElapsed); + + if (timeElapsed > 3*24*60*60*1000) + return "Few Days Ago"; + else if (timeElapsed > 2*24*60*60*1000) + return "2 Days Ago"; + else if (timeElapsed > 1*24*60*60*1000) + return "Yesterday"; + else { + const h = String(date.getHours()).padStart(2, "0"); // Get hours with leading zero + const m = String(date.getMinutes()).padStart(2, "0"); // Get minutes with leading zero + return `${h}:${m}`; // Return formatted time + } +} + +function formatMessageDate(datestr) { + return formatDate(new Date(datestr)); +} + +// Function to fetch data from the API +async function fetchData(url, method = "GET", data = null) { + const options = { + method, // HTTP method (GET, POST, DELETE, etc.) + headers: { "Content-Type": "application/json" }, // Headers for the request + mode: "cors", // Cross-origin resource sharing + cache: "no-cache", // No caching + credentials: "same-origin", // Same-origin credentials + redirect: "follow", // Follow redirects + referrerPolicy: "no-referrer", // No referrer policy + }; + if (data) options.body = JSON.stringify(data); // Add body data if provided + const response = await fetch(url, options); // Fetch data from the API //:) + if (!response.ok){ + const errorMsg = 'AI Bot Error: ' + response.status; + console.log(errorMsg); + + return Promise.reject(errorMsg); + } + console.log(response); // Log the response for debugging + return response.json(); // Return the response text +} + + +async function fetchUserData() { + console.log("Getting user data"); + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + + const response = await fetch(uri + "/api/person/jwt", requestOptions); + + if (!response.ok){ + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + alert("Please log into or make an account"); + window.location.href = "login"; + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + default: + alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + + const data = await response.json(); + + // ACCOUNT CARD + let profilePictureDiv = document.getElementById("profilePicture"); + let imgElement = document.createElement("img"); + imgElement.src = "https://codemaxxers.github.io/codemaxxerFrontend/images/profilePics/"+ data.profilePicInt + ".png"; + imgElement.style.width = "60px"; + imgElement.style.height = "60px"; + imgElement.style.float = "left"; + imgElement.style.borderRadius = "5px"; + var nameForProfile = document.createElement("h3"); + nameForProfile.innerHTML = data.name; + var changeProfileText = document.createElement("p"); + changeProfileText.innerHTML = "Level " + data.accountLevel; + changeProfileText.style.marginBottom = "0px"; + profilePictureDiv.appendChild(imgElement); + profilePictureDiv.appendChild(nameForProfile); + profilePictureDiv.appendChild(changeProfileText); + // ACCOUNT CARD + + document.getElementById("initName").innerText = data.name; + document.getElementById("initId").value=data.id; + console.log(data.id); + //document.getElementById("accountPointsDisplay").innerText = data.accountPoints + " Points"; + //document.getElementById("csaPointsDisplay").innerText = data.csaPoints + " Points"; + //document.getElementById("cspPointsDisplay").innerText = data.cspPoints + " Points"; + +} diff --git a/assets/js/fight.js b/assets/js/fight.js new file mode 100644 index 0000000..2bf8098 --- /dev/null +++ b/assets/js/fight.js @@ -0,0 +1,543 @@ +var uri; +if (location.hostname === "localhost") { + uri = "http://localhost:8032"; +} else if (location.hostname === "127.0.0.1") { + uri = "http://localhost:8032"; +} else { + uri = "https://codemaxxerbackend.onrender.com"; +} + +// Define a global array to store enemy IDs +let enemyIds = []; +// Div updates +var updateHealthEnemy = document.getElementById("EnemyHealth"); +var questionBox = document.getElementById("question-box"); +var updateHealth = document.getElementById("health"); +var levelUpdate = document.getElementById("level"); +var enemyIMG = document.getElementById("eIMG"); +var playerIMG = document.getElementById("pIMG"); +var controller = document.getElementById("moves"); +var alert = document.getElementById("alert"); +var alertBox = document.getElementById("home-btn"); +var weaponMenu = document.getElementById("weaponMenu"); +var enemyName = document.getElementById("EnemyName"); +var updateHealth = document.getElementById("health"); +var updateDamage = document.getElementById("damage"); +var username = document.getElementById("userName"); + +var eHealth = 40; +var eAttack = 0; +var eDefense = 0; +var eName = ""; +let userLevel = 1; +let totalPoints = 0; + +let health = 100; +let damage = 100; +let weapon = ""; +let course = "CSA"; + +GetLevel(); +getDamage(); + +var baseHTML = ` +
+

Attack

+
+
+

Potions

+
+
+

Inventory

+
+
+

Run Away

+
+`; + +var ATKmove = ` +
+

Attack:

+

+
+
+

Back

+
+`; + +var comingsoon = ` +
+

Back

+
+`; + +var hint = ` +

+` + +document.getElementById("alert").addEventListener("click", function() { + window.location.pathname = '/codemaxxerFrontend/game/index.html' +}); + +function inventoryMENU() { + controller.innerHTML = comingsoon; + weaponMenu.style.display = "block"; + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + weaponMenu.style.display = "none"; + }); +} +function potionMENU() { + controller.innerHTML = comingsoon; + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + }); +} + +function attackMENU() { + controller.innerHTML = ATKmove; + getDamage(); + getWeapon(); // Call this function to update weapon name + + var moveDamage = document.getElementById("damage"); + moveDamage.innerHTML = `Damage: ${damage}`; + + document.getElementById("move1").addEventListener("click", function() { + Battle(damage); + }); + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + }); +} + +console.log(course) + +// Call the function to fetch enemies when the script is loaded +GetLevel(); +GetEnemy(); + +function fetchQuestion(attackValue) { + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + // clear hint + const hintText = document.getElementById("hint-text"); + hintText.innerHTML = ""; + + var requestOptions = { + method: 'GET', + headers: myHeaders, + credentials: 'include', + redirect: 'follow' + }; + + fetch(uri + `/api/questions/randomQuestion/${course}`, requestOptions) + .then(response => response.json()) + .then(result => { + console.log(result); // For debugging! + + console.log(result.hint); + currentQuestionHint = result.hint; + + // Update the question text + document.getElementById("question-text").innerText = result.question; + + // Clear previous answers + const answersDiv = document.getElementById("answers"); + answersDiv.innerHTML = ""; + totalPoints = totalPoints + result.points; + + // Dynamically create answer buttons or text for each possible answer + for (let i = 1; i <= 4; i++) { + let answerDiv = document.createElement("div"); + answerDiv.innerText = result[`answer${i}`]; + answerDiv.onclick = function() { checkAnswer(i, result.correctAnswer, attackValue); }; + answersDiv.appendChild(answerDiv); + } + }) + .catch(error => console.log('error', error)); +} + +function checkAnswer(selectedAnswer, correctAnswer, attackValue) { + // Increment total points regardless of the answer + totalPoints += attackValue; + + if (selectedAnswer === correctAnswer) { + console.log("Correct! You attack the enemy."); + eHealth -= attackValue; + updateHealthEnemy.innerHTML = `Health: ${eHealth}`; + // When an image gets hurt, you can add the flashing class to it + enemyIMG.classList.add('flashing'); + + // After a certain duration, remove the flashing class to stop the flashing effect + setTimeout(function() { + enemyIMG.classList.remove('flashing'); + }, 2000); + } else { + console.log("Incorrect. The enemy attacks you!"); + health -= eAttack; + updateHealth.innerHTML = `Health: ${health}`; + // When an image gets hurt, you can add the flashing class to it + playerIMG.classList.add('flashing'); + + // After a certain duration, remove the flashing class to stop the flashing effect + setTimeout(function() { + playerIMG.classList.remove('flashing'); + }, 2000); + } + + // Call Battle to check for end-of-battle scenarios + questionBox.style = " display: none;"; + controller.innerHTML = baseHTML; + + if (health <= 0) { + alert.style = ""; + playerIMG.classList = "death"; + alertBox.innerHTML = "You Lost

Go back to island

"; + } else if (eHealth < 1) { + updateHealthEnemy.innerHTML = `Health: Defeated`; + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/addPoints${course}?points=${totalPoints}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('error', error)); + //Re-direct to island + alert.style = ""; + enemyIMG.classList = "death"; + alertBox.innerHTML = "You Won

Go back to island

"; + return; + } +} + +function leave() { + if (health < StartingHealth / 2) { + alert("Running Away Failed"); + } +} + +function GetEnemy() { + console.log(userLevel); + + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + var requestOptions = { + method: 'GET', + headers: myHeaders, + credentials: 'include', // Include this line for cross-origin requests with credentials + redirect: 'follow' + }; + + fetch(uri + "/api/enemies", requestOptions) + .then(response => response.json()) // Convert response to JSON format + .then(result => { + console.log(result); // Log the result for debugging purposes + + // Filter enemies based on user's level or lower + let filteredEnemies = result.filter(enemy => parseInt(enemy.level) <= parseInt(userLevel)); + + if (filteredEnemies.length > 0) { + // Loop through filtered enemies to populate enemyIds array and update enemy health + filteredEnemies.forEach(enemy => { + enemyIds.push(enemy.id); // Add enemy ID to the array + }); + + // Get a random enemy ID from the enemyIds array + let randomEnemyIndex = Math.floor(Math.random() * filteredEnemies.length); + + // Get the random enemy object + let randomEnemy = filteredEnemies[randomEnemyIndex]; + + // Updating Values depending on the fetched enemy + eHealth = randomEnemy.health; + eAttack = randomEnemy.attack; + eDefense = randomEnemy.defense; + eName = randomEnemy.name; + enemyName.innerHTML = `Enemy: ${eName}`; + + //Update Img + enemyIMG.src = enemyIMG.src + `${eName}.png` + setTimeout(function() { + enemyIMG.classList.add('visible'); + }, 100); + + updateHealthEnemy.innerHTML = `Health: ${eHealth}`; + + } else { + console.log("No enemies found at or below user's level."); + } + }) + .catch(error => console.log('error', error)); +} + +function Battle(attack) { + questionBox.style = ""; + fetchQuestion(attack); // Call fetchQuestion with the attack value + // Check if the player or enemy has been defeated + if (health <= 0) { + alert.style = ""; + playerIMG.classList = "death"; + alertBox.innerHTML = "You Lost

Go back to island

"; + } else if (eHealth < 1) { + updateHealthEnemy.innerHTML = `Enemy: Defeated`; + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/addPointsCSA?points=${totalPoints}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('error', error)); + //Re-direct to island + alert.style = ""; + enemyIMG.classList = "death"; + alertBox.innerHTML = "You Won

Go back to island

"; + return; + } +} + +function GetLevel() { + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + +fetch(uri + "/api/person/jwt", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + alert("Please log into or make an account"); + // window.location.href = "login"; + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + // Add more cases for other status codes as needed + default: + alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + // Success!!! + }) + .then(data => { + userLevel = data.accountLevel; // Set the innerHTML to just the numeric value + username.innerHTML = data.name; + levelUpdate.innerHTML = "Lv. " + userLevel; + console.log(data.accountLevel); + + health = data.totalHealth; + updateHealth.innerHTML = `Health: ${data.totalHealth}`; + + // updateDamage.innerHTML = '' + data.totalDamage; + // console.log(data.totalDamage); + // damage = data.totalDamage; + console.log(userLevel); + return userLevel; + }) + .catch(error => console.log('error', error)); +} + +function getDamage() { + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + + fetch(uri + "/api/person/jwt", requestOptions) + .then(response => response.json()) // Convert response to JSON format + .then(data => { + damage = data.totalDamage; + console.log("Fetched damage:", damage); // For debugging + // If the element needs to be updated immediately after fetching + updateDamage.innerHTML = `Damage: ${damage}`; + }) + .catch(error => console.log('error', error)); +} + +function getWeapon() { + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + + fetch(uri + "/api/person/getWeaponInventory", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + alert("Please log into or make an account"); + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + default: + alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + }) + .then(data => { + if (data.weaponGearIdEquipped == null || data.weaponGearIdEquipped == 0) { + return; + } + fetchWeaponStats(data.weaponGearIdEquipped[0]) + .then(weapon => { + var weaponNameElement = document.getElementById("weaponNameValue"); + weapon = weapon.name; + weaponNameElement.innerHTML = `${weapon}`; + var moveDamage = document.getElementById("damage"); + moveDamage.innerHTML = `Damage: ${weapon.damageAdded}`; + damage = weapon.damageAdded; + }) + .catch(error => { + console.log('error', error); + }); + }) + .catch(error => console.log('error', error)); +} + +function fetchWeaponStats(weaponID) { + return fetch('gear.json') + .then(response => { + if (!response.ok) { + throw new Error('Failed to fetch weapon stats'); + } + return response.json(); + }) + .then(data => { + const weaponStats = data.items.find(item => item.gearID === weaponID); + if (!weaponStats) { + throw new Error('Weapon stats not found'); + } + return weaponStats; + }); +} + +document.addEventListener("DOMContentLoaded", () => { + + const requestOptions = { + method: "GET", + redirect: "follow", + credentials: "include" + }; + + fetch(uri + "/api/person/getWeaponInventory", requestOptions) + .then((response) => response.text()) + .then((result) => console.log(result)) + .catch((error) => console.error(error)); +}); + +let numKeys = 1; + +function removeKey() { + document.getElementById("keyPopup").style.display = "block"; + + if(keyNumber > 0){ + const myHeaders = new Headers(); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/removeKey?numKeys=${numKeys}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('key removed failed', error)); + return; + } +} + +function closeKeyPopup() { + document.getElementById("keyPopup").style.display = "none"; +} + +let currentQuestionHint = null; + +function useHint(){ + document.getElementById("keyPopup").style.display = "none"; + removeKey(); + var hintMenu = document.getElementById('hint-box'); + hintMenu.innerHTML = hint; + + document.getElementById("hint-text").innerText = currentQuestionHint; + // var myHeaders = new Headers(); + // myHeaders.append("Content-Type", "application/json"); + + // var requestOptions = { + // method: 'GET', + // headers: myHeaders, + // credentials: 'include', + // redirect: 'follow' + // }; + + // fetch(uri + `/api/questions/QuestionById/${currentQuestionId}`, requestOptions) + // .then(response => response.json()) + // .then(result => { + // console.log(result); // debugging + // // update hint text + // console.log(result.hint); + // document.getElementById("hint-text").innerText = result.hint; + + // }) + // .catch(error => console.log('error', error)); +} + +function useSkip(){ + document.getElementById("keyPopup").style.display = "none"; + removeKey(); + + fetchQuestion(damage); + console.log("question skipped"); +} + +function useDmg(){ + document.getElementById("keyPopup").style.display = "none"; + removeKey(); + + damage += 10; + console.log("Damage +10, current damage: " + damage); + + updateDamage.innerHTML = `Damage: ${damage}`; +} diff --git a/assets/js/multiplayer.js b/assets/js/multiplayer.js new file mode 100644 index 0000000..169b5d4 --- /dev/null +++ b/assets/js/multiplayer.js @@ -0,0 +1,497 @@ +var uri; +if (location.hostname === "localhost") { + uri = "http://localhost:8032"; +} else if (location.hostname === "127.0.0.1") { + uri = "http://localhost:8032"; +} else { + uri = "https://codemaxxerbackend.onrender.com"; +} + +html = ` +
+
+
+

Player Stats


+

+

+
+

Equipped Gear

+
+
+
+
+
+

Armor

+
+
+
+

Weapons

+
+
+ +
Drop Here to Equip
+
+
+`; + +keyHTML = ` +
+

Keys:

+

+
+
+ +` + +window.onload = function () { + keyFetch(); +}; + +let keyNumber; + +function keyFetch() { + var keyMenu = document.getElementById('key-div'); + keyMenu.innerHTML = keyHTML; + + var requestOptions = { + method: 'GET', + mode: 'cors', + cache: 'default', + credentials: 'include', + }; + + fetch(uri + "/api/person/jwt", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + //alert("Please log into or make an account"); + window.location.href = "login"; + break; + case 403: + //alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + //alert("User not found. Please check your credentials."); + break; + // Add more cases for other status codes as needed + default: + //alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + // Success!!! + }) + .then(data => { + console.log(data); + console.log("keys collected:" + data.keysCollected); + document.getElementById('key_num').innerText = data.keysCollected; + keyNumber = data.keysCollected; + + //call showKeys with the updated number of keys + const numOfKeys = parseInt(data.keysCollected, 10); + //const numOfKeys = 3; + console.log("Parsed number of keys:", numOfKeys); + showKeys(numOfKeys); + }) + .catch(error => { + console.log('Fetch error:', error); + }); +} + +function showKeys(numKeys){ + console.log("test: " + numKeys); + const key_div = document.getElementById('keys'); + for (let i=0; i < numKeys; i++){ + const key = document.createElement('img'); + key.className = "key_img" + key.src = "https://raw.githubusercontent.com/Codemaxxers/codemaxxerFrontend/main/images/key.png"; + key.width = "10"; + key.width = "40"; + console.log(key.src); + key_div.appendChild(key); + } +} + +let keyRemove = 1; + +function removeKey() { + + if(keyNumber > 0){ + const myHeaders = new Headers(); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/removeKey?numKeys=${keyRemove}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('key removed failed', error)); + return; + } +} + +function useKey(){ + document.getElementById("keyPopup").style.display = "block"; +} + +function innitFetch() { + var weaponMenu = document.getElementById('weaponMenu'); + weaponMenu.innerHTML = html; + + var requestOptions = { + method: 'GET', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + "/api/person/characterData", requestOptions) + .then(response => { + if (!response.ok) { + const errorMsg = 'Login error: ' + response.status; + console.log(errorMsg); + + switch (response.status) { + case 401: + alert("Please log into or make an account"); + window.location.href = "login"; + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + default: + alert("Login failed. Please try again later."); + } + + return Promise.reject('Login failed'); + } + return response.json(); + }) + .then(data => { + var characterHealthElement = document.getElementById('characterHealth'); + characterHealthElement.innerHTML = '' + " " + (parseInt(data.statsArray[0][0]) + parseInt(data.statsArray[0][1])); + + var characterDamageElement = document.getElementById('characterDamage'); + characterDamageElement.innerHTML = '' + " " + (parseInt(data.statsArray[1][0]) + parseInt(data.statsArray[1][1])); + + // DISPLAY INVENTORY + var inventoryDiv = document.getElementById('inventory'); + for (var i = 0; i < data.inventory.length; i++) { + var itemId = data.inventory[i]; + var itemType; + var itemRange = Math.floor(itemId / 1000); // Determine the range based on item ID + + if (itemRange >= 1 && itemRange < 2) { + itemType = 'armor'; + } else if (itemRange >= 2 && itemRange < 3) { + itemType = 'weapons'; + } else if (itemRange >= 3 && itemRange < 4) { + itemType = 'accessories'; + } else { + // Invalid item ID + continue; + } + + var inventorySection = document.querySelector('.inventory' + itemType.charAt(0).toUpperCase() + itemType.slice(1)); // Get corresponding inventory section + var itemImg = document.createElement('img'); + itemImg.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/" + itemType + "/" + itemId + ".png"; + itemImg.style.width = "80px"; // Adjust the width as needed + itemImg.style.height = "auto"; // Adjust the height as needed + itemImg.style.marginRight = "10px"; // Adjust margin as needed + itemImg.draggable = true; // Enable dragging + itemImg.dataset.inventoryID = itemId; // Store item ID as data attribute + + inventorySection.appendChild(itemImg); + } + // END OF DISPLAY OF INVENTORY + + + + + var flexContainer = document.querySelector('.flex-container'); + + // IF ARMOR IS EQUIPPED, ADD TO EQUIPPED GEAR + if (data.armorGearIdEquipped != 0) { + var flexContainer = document.querySelector('.flex-container'); + var armorDiv = document.createElement('armorDiv'); + armorDiv.innerHTML = ` +
+

Armor

+ +
+
+ +
+ `; + flexContainer.appendChild(armorDiv); + + // DISPLAY EQUIPPED ARMOR + var equippedArmor = document.getElementById('equippedArmor'); + if (data.armorGearIdEquipped) { + equippedArmor.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/armor/" + data.armorGearIdEquipped + ".png"; + } + } + + if (data.weaponGearIdEquipped != 0) { + // Select the flex-container element + var flexContainer = document.querySelector('.flex-container'); + // Create a new div element to contain the provided HTML code + var weaponDiv = document.createElement('weaponDiv'); + weaponDiv.innerHTML = ` +
+

Weapon

+ +
+
+ +
+ `; + // Append the newly created div element to the flex-container + flexContainer.appendChild(weaponDiv); + + // DISPLAY EQUIPPED WEAPON + var equippedWeapon = document.getElementById('equippedWeapon'); + if (data.weaponGearIdEquipped) { + equippedWeapon.src = "https://codemaxxers.github.io/codemaxxerFrontend/game/img/weapons/" + data.weaponGearIdEquipped + ".png"; + } + } + + console.log(data); + + // Remove fade-in animation after content is loaded + setTimeout(function() { + var profileContainer = document.getElementById('profile-container'); + var inventory = document.getElementById('inventory'); + var equipSpot = document.getElementById('equip-spot'); + profileContainer.classList.remove('fade-in'); + inventory.classList.remove('fade-in'); + equipSpot.classList.remove('fade-in'); + }, 1000); // Adjust the delay time as needed + }) + + .catch(error => console.log('error', error)); + + // Add event listener to the inventory container for event delegation + document.getElementById('inventory').addEventListener('dragstart', function(event) { + event.dataTransfer.setData('text/plain', event.target.dataset.inventoryID); // Set data to be transferred + }); +} + +function allowDrop(event) { + event.preventDefault(); +} + +document.getElementById('inventory').addEventListener('mouseover', function(event) { + var target = event.target; + var itemID = parseInt(target.dataset.inventoryID); + if (target.tagName === 'IMG') { + // Remove existing stats + var existingStats = document.querySelector('.item-stats'); + if (existingStats) { + existingStats.remove(); + } + + var stats = document.createElement('div'); + var itemType = Math.floor(itemID / 1000); // Determine the item type based on ID range + if (itemType === 1) { // Armor + fetchArmorStats(itemID) + .then(armor => { + stats.textContent = `${armor.name} - ${armor.healthAdded} Health`; + }) + .catch(error => { + stats.textContent = "[Insert Armor Stats Here]"; + console.log('error', error); + }); + } else if (itemType === 2) { // Weapon + fetchWeaponStats(itemID) + .then(weapon => { + stats.textContent = `${weapon.name} - ${weapon.damageAdded} Damage`; + }) + .catch(error => { + stats.textContent = "[Insert Weapon Stats Here]"; + console.log('error', error); + }); + } + stats.classList.add('item-stats'); // Add a class for easier identification and removal + stats.style.top = target.offsetTop + "px"; + stats.style.left = (target.offsetLeft + target.offsetWidth + 10) + "px"; + document.body.appendChild(stats); + } +}); + + +// Update the drop function to equip weapons +function drop(event) { + console.log('Dropped'); + event.preventDefault(); + var itemID = parseInt(event.dataTransfer.getData('text/plain')); // Get the data transferred + console.log('Dropped item with ID:', itemID); + + var itemType = Math.floor(itemID / 1000); // Determine the item type based on ID range + if (itemType === 1) { // Armor + equipArmor(itemID); + } else if (itemType === 2) { // Weapon + equipWeapon(itemID); + } +} + + +// Add event listener to the inventory container for event delegation +document.getElementById('inventory').addEventListener('mouseleave', function(event) { + var target = event.relatedTarget || event.toElement; + if (!target || !target.classList.contains('item-stats')) { + var stats = document.querySelector('.item-stats'); + if (stats) { + stats.remove(); + } + } +}); + + // Function to equip weapons +function equipWeapon(gearID) { + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/equipWeapon?weaponID=${gearID}`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Weapon equipped successfully."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error equipping weapon:', error)); +} + +function unequipWeapon() { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/unequipWeapon`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + +function equipArmor(gearID) { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/equipArmor?armorID=${gearID}`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + switch (response.status) { + case 401: + alert("Incorrect username or password"); + break; + case 403: + alert("Access forbidden. You do not have permission to access this resource."); + break; + case 404: + alert("User not found. Please check your credentials."); + break; + // Add more cases for other status codes as needed + default: + alert("Login failed. Please try again later."); + } + return Promise.reject('Login failed'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + + +function unequipArmor() { + + var requestOptions = { + method: 'POST', + redirect: 'follow', + credentials: "include" + }; + + fetch(uri + `/api/person/unequipArmor`, requestOptions) + .then(response => { + if (response.ok) { + console.log("Gear change successful."); + innitFetch(); // Reload the page if successful + } else { + throw new Error('Network response was not ok.'); + } + }) + .catch(error => console.error('Error changing gear:', error)); +} + +function fetchWeaponStats(weaponID) { + return fetch('gear.json') + .then(response => { + if (!response.ok) { + throw new Error('Failed to fetch weapon stats'); + } + return response.json(); + }) + .then(data => { + // Find weapon stats by weaponID + const weaponStats = data.items.find(item => item.gearID === weaponID); + if (!weaponStats) { + throw new Error('Weapon stats not found '); + } + return weaponStats; + }); +} + +// Function to fetch armor stats +function fetchArmorStats(armorID) { + return fetch('gear.json') + .then(response => { + if (!response.ok) { + throw new Error('Failed to fetch armor stats'); + } + return response.json(); + }) + .then(data => { + // Find armor stats by armorID + const armorStats = data.items.find(item => item.gearID === armorID); + if (!armorStats) { + throw new Error('Armor stats not found '); + } + return armorStats; + }); +} + +innitFetch(); \ No newline at end of file diff --git a/assets/js/multiplayerFight.js b/assets/js/multiplayerFight.js new file mode 100644 index 0000000..b11c8e9 --- /dev/null +++ b/assets/js/multiplayerFight.js @@ -0,0 +1,184 @@ +var uri; +if (location.hostname === "localhost") { + uri = "http://localhost:8032"; +} else if (location.hostname === "127.0.0.1") { + uri = "http://localhost:8032"; +} else { + uri = "https://codemaxxerbackend.onrender.com"; +} + + +var baseHTML = ` +
+

Attack

+
+`; + +var ATKmove = ` +
+

Attack:

+

+
+
+

Back

+
+`; + +var comingsoon = ` +
+

Back

+
+`; + +var hint = ` +

+` + +document.getElementById("alert").addEventListener("click", function() { + window.location.pathname = '/codemaxxerFrontend/game/index.html' +}); + +function inventoryMENU() { + controller.innerHTML = comingsoon; + weaponMenu.style.display = "block"; + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + weaponMenu.style.display = "none"; + }); +} +function potionMENU() { + controller.innerHTML = comingsoon; + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + }); +} + +function attackMENU() { + controller.innerHTML = ATKmove; + getDamage(); + getWeapon(); // Call this function to update weapon name + + var moveDamage = document.getElementById("damage"); + moveDamage.innerHTML = `Damage: ${damage}`; + + document.getElementById("move1").addEventListener("click", function() { + Battle(damage); + }); + document.getElementById("back").addEventListener("click", function() { + controller.innerHTML = baseHTML; + }); +} + +function leave() { + if (health < StartingHealth / 2) { + alert("Running Away Failed"); + } +} + + +console.log(course) + +// Call the function to fetch enemies when the script is loaded +// GetLevel(); +// GetEnemy(); + +function fetchQuestion(attackValue) { + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + // clear hint + const hintText = document.getElementById("hint-text"); + hintText.innerHTML = ""; + + var requestOptions = { + method: 'GET', + headers: myHeaders, + credentials: 'include', + redirect: 'follow' + }; + + fetch(uri + `/api/questions/randomQuestion/${course}`, requestOptions) + .then(response => response.json()) + .then(result => { + console.log(result); // For debugging + + currentQuestionId = result.id; + + // Update the question text + document.getElementById("question-text").innerText = result.question; + + // Clear previous answers + const answersDiv = document.getElementById("answers"); + answersDiv.innerHTML = ""; + totalPoints = totalPoints + result.points; + + // Dynamically create answer buttons or text for each possible answer + for (let i = 1; i <= 4; i++) { + let answerDiv = document.createElement("div"); + answerDiv.innerText = result[`answer${i}`]; + answerDiv.onclick = function() { checkAnswer(i, result.correctAnswer, attackValue); }; + answersDiv.appendChild(answerDiv); + } + }) + .catch(error => console.log('error', error)); +} + +function checkAnswer(selectedAnswer, correctAnswer, attackValue) { + // Increment total points regardless of the answer + totalPoints += attackValue; + + if (selectedAnswer === correctAnswer) { + console.log("Correct! You attack the enemy."); + eHealth -= attackValue; + updateHealthEnemy.innerHTML = `Health: ${eHealth}`; + // When an image gets hurt, you can add the flashing class to it + enemyIMG.classList.add('flashing'); + + // After a certain duration, remove the flashing class to stop the flashing effect + setTimeout(function() { + enemyIMG.classList.remove('flashing'); + }, 2000); + } else { + console.log("Incorrect. The enemy attacks you!"); + health -= eAttack; + updateHealth.innerHTML = `Health: ${health}`; + // When an image gets hurt, you can add the flashing class to it + playerIMG.classList.add('flashing'); + + // After a certain duration, remove the flashing class to stop the flashing effect + setTimeout(function() { + playerIMG.classList.remove('flashing'); + }, 2000); + } + + // Call Battle to check for end-of-battle scenarios + questionBox.style = " display: none;"; + controller.innerHTML = baseHTML; + + if (health <= 0) { + alert.style = ""; + playerIMG.classList = "death"; + alertBox.innerHTML = "You Lost

Go back to island

"; + } else if (eHealth < 1) { + updateHealthEnemy.innerHTML = `Health: Defeated`; + var myHeaders = new Headers(); + myHeaders.append("Content-Type", "application/json"); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + redirect: 'follow', + credentials: 'include' + }; + //Adding points to the account + fetch(uri + `/api/person/addPoints${course}?points=${totalPoints}`, requestOptions) + .then(response => response.text()) + .then(result => console.log(result)) + .catch(error => console.log('error', error)); + //Re-direct to island + alert.style = ""; + enemyIMG.classList = "death"; + alertBox.innerHTML = "You Won

Go back to island

"; + return; + } +} \ No newline at end of file diff --git a/cbscript.js b/cbscript.js new file mode 100644 index 0000000..538050e --- /dev/null +++ b/cbscript.js @@ -0,0 +1,100 @@ +const video = document.getElementById("video"); +const output = document.getElementById("output"); +const assignProfileBtn = document.getElementById("assignProfileBtn"); +const profileImgContainer = document.getElementById("profileImgContainer"); + +let isProfileAssigned = false; +let ageAndGenderData = null; + +Promise.all([ + faceapi.nets.tinyFaceDetector.loadFromUri("models"), + faceapi.nets.faceLandmark68Net.loadFromUri("models"), + faceapi.nets.faceRecognitionNet.loadFromUri("models"), + faceapi.nets.faceExpressionNet.loadFromUri("models"), + faceapi.nets.ageGenderNet.loadFromUri("models"), +]).then(webCam); + +function webCam() { + navigator.mediaDevices + .getUserMedia({ + video: true, + audio: false, + }) + .then((stream) => { + video.srcObject = stream; + }) + .catch((error) => { + console.log(error); + }); +} + +video.addEventListener("play", () => { + const canvas = faceapi.createCanvasFromMedia(video); + document.body.append(canvas); + + faceapi.matchDimensions(canvas, { height: video.height, width: video.width }); + + setInterval(async () => { + const detection = await faceapi + .detectAllFaces(video, new faceapi.TinyFaceDetectorOptions()) + .withFaceLandmarks() + .withFaceExpressions().withAgeAndGender(); + + canvas.getContext("2d").clearRect(0, 0, canvas.width, canvas.height); + + const resizedDetections = faceapi.resizeResults(detection, { + height: video.height, + width: video.width, + }); + + faceapi.draw.drawDetections(canvas, resizedDetections); + faceapi.draw.drawFaceLandmarks(canvas, resizedDetections); + + displayAgeAndGender(resizedDetections); + }, 100); +}); + +function getProfileImage(age, gender) { + let ageRange; + if (age < 18) { + ageRange = "baby_child"; + } else if (age < 60) { + ageRange = "young_adult"; + } else { + ageRange = "elder"; + } + + let genderPrefix = gender === "male" ? "male_" : "female_"; + let profileImage = `images/profilePics/custom/${genderPrefix}${ageRange}.png`; + return profileImage; +} + +function displayAgeAndGender(detections) { + output.innerHTML = ""; + detections.forEach((det) => { + const age = Math.round(det.age); + const gender = det.gender.charAt(0).toUpperCase() + det.gender.slice(1); + const p = document.createElement("p"); + p.textContent = `${age} year old ${gender}`; + output.appendChild(p); + + ageAndGenderData = { age, gender }; + }); +} + +assignProfileBtn.addEventListener("click", () => { + if (ageAndGenderData) { + const { age, gender } = ageAndGenderData; + const profileImage = getProfileImage(age, gender); + renderProfileImage(profileImage); + isProfileAssigned = true; + } +}); + +function renderProfileImage(imageSrc) { + profileImgContainer.innerHTML = ""; + const image = new Image(); + image.src = imageSrc; + image.className = "profileImage"; + profileImgContainer.appendChild(image); +} diff --git a/cc-assistant.html b/cc-assistant.html new file mode 100644 index 0000000..6425b41 --- /dev/null +++ b/cc-assistant.html @@ -0,0 +1,201 @@ +--- +layout: profile +search_exclude: true +permalink: bot +--- + + + + + + + + + + +AI Chat Bot + + + + + +
+
+
+ +
+
+

+ + +
+ +
+
+
+ + +
+ AI Chat Bot +
+ +
+ +   + +
+ + +
+ +
+
+
+ +
+
+
Chat Bot
+ +
+ +
+ Hi, welcome to AI Chat Bot! Go ahead and send me a message. 😄 +
+
+
+
+ +
+ + +
+ +
+ + + + \ No newline at end of file diff --git a/character.md b/character.md new file mode 100644 index 0000000..7e7e7f3 --- /dev/null +++ b/character.md @@ -0,0 +1,477 @@ +--- +layout: profile +search_exclude: true +--- + + + +
+
+ +
+
+

Player Stats


+

+

+
+

Equipped Gear

+
+
+
+
+
+
+

Armor

+
+
+
+

Weapons

+
+
+ +
Drop Here to Equip
+
+
+ + + + + + + diff --git a/characterbuilder.html b/characterbuilder.html new file mode 100644 index 0000000..9ba7243 --- /dev/null +++ b/characterbuilder.html @@ -0,0 +1,74 @@ + + + + + + Face Detection + + + +
+ +
+
+
+ + + + + + diff --git a/chat.md b/chat.md index 670b437..16b7fa0 100644 --- a/chat.md +++ b/chat.md @@ -34,7 +34,7 @@ permalink: /chat ] }; // Send the POST request - fetch('https://codemaxxers.stu.nighthawkcodingsociety.com/api/chat', { + fetch(uri + '/api/chat', { method: 'POST', headers: { 'Content-Type': 'application/json', diff --git a/compscreen.md b/compscreen.md new file mode 100644 index 0000000..8fa4e2f --- /dev/null +++ b/compscreen.md @@ -0,0 +1,331 @@ +--- +layout: none +title: Computer Screen Close Up +author: Emma +permalink: /compscreen +--- + + + +
+ +
+ +
+
+ +
+
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + + + + diff --git a/connectionURI.js b/connectionURI.js new file mode 100644 index 0000000..bb4c3c0 --- /dev/null +++ b/connectionURI.js @@ -0,0 +1,8 @@ +var connectionuri; +if (location.hostname === "localhost") { + connectionuri = "http://localhost:8033"; +} else if (location.hostname === "127.0.0.1") { + connectionuri = "http://localhost:8033"; +} else { + connectionuri = "https://codemaxxerbackend.onrender.com"; +} \ No newline at end of file diff --git a/createLobby.md b/createLobby.md new file mode 100644 index 0000000..50b4eb0 --- /dev/null +++ b/createLobby.md @@ -0,0 +1,325 @@ +--- +layout: menulayout +search_exclude: true +--- + + + + + + + +
+ +
+

Confirm Your Character

+
+

+ +
+ +

+ +

+
+
+ + +
+
+
+ +
+
+
+ + diff --git a/cyber_games/gravity.md b/cyber_games/gravity.md new file mode 100644 index 0000000..188cd1f --- /dev/null +++ b/cyber_games/gravity.md @@ -0,0 +1,328 @@ +--- +layout: none +title: Gravity game +author: Grace +permalink: /gravity +--- + + + + + + + Gravity Game + + + +
+

Gravity Game

+ + + +
+
+

Game Over

+

Your score is:

+ +
+ +
+ +
+
+ + +
+

+
+ + diff --git a/cyber_games/password.md b/cyber_games/password.md new file mode 100644 index 0000000..56c79eb --- /dev/null +++ b/cyber_games/password.md @@ -0,0 +1,170 @@ +--- +layout: none +permalink: /password +--- + + + +

+
+ +

Password Game

+
+ + +
+ + + +
+

+
+ + + + diff --git a/cyber_games/phishing.md b/cyber_games/phishing.md new file mode 100644 index 0000000..93ca58c --- /dev/null +++ b/cyber_games/phishing.md @@ -0,0 +1,217 @@ +--- +layout: none +permalink: /phishing +--- + + + + +
+

Email Phishing Game 8

+
+ +
+
+

+
+
+ + +
+
+

+
+ +
+
+
+
+

+
+ + + + \ No newline at end of file diff --git a/dashboard.md b/dashboard.md new file mode 100644 index 0000000..ac7ff05 --- /dev/null +++ b/dashboard.md @@ -0,0 +1,283 @@ +--- +layout: profile +search_exclude: true +--- + + + + + +
+
+
+

+

Game Statistics

+ +
+ +
+
+
+
+
+
+
+

Account Points

+

Loading...

+

Loading...

+
+
+

Computer Science A

+

Loading...

+
+
+

Computer Science P

+

Loading...

+
+
+
+
+ +
+
+
+

Predicted AP Score

+ +

Predicted AP Score will appear here

+
+
+
+ + +
+ + + 100 +
+ + +
+ +
+ + diff --git a/face-api.js b/face-api.js new file mode 100644 index 0000000..a437341 --- /dev/null +++ b/face-api.js @@ -0,0 +1,6568 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (global = global || self, factory(global.faceapi = global.faceapi || {})); +}(this, (function (exports) { 'use strict'; + + /** + * @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. + * ============================================================================= + */ + var t=function(e,n){return (t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e;}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);})(e,n)};function e(e,n){function r(){this.constructor=e;}t(e,n),e.prototype=null===n?Object.create(n):(r.prototype=n.prototype,new r);}function n(t,e,n,r){return new(n||(n=Promise))((function(o,a){function i(t){try{u(r.next(t));}catch(t){a(t);}}function s(t){try{u(r.throw(t));}catch(t){a(t);}}function u(t){t.done?o(t.value):new n((function(e){e(t.value);})).then(i,s);}u((r=r.apply(t,e||[])).next());}))}function r(t,e){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]0;)r=Math.random()*e|0,n=t[--e],t[e]=t[r],t[r]=n;}function x(t,e,n){return Math.max(t,Math.min(e,n))}function b(t){return t%2==0?t:t+1}function w(t){for(var e=0,n=0;n=n?o():setTimeout(i,s);}};i();}))}function _(t,e){for(var n=1,r=-1,o=0;o=0)n*=t[o];else if(-1===t[o]){if(-1!==r)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+r+" and dim "+o);r=o;}else if(t[o]<0)throw Error("Shapes can not be < 0. Found "+t[o]+" at dim "+o);if(-1===r){if(e>0&&e!==n)throw Error("Size("+e+") must match the product of shape "+t);return t}if(0===n)throw Error("Cannot infer the missing size in ["+t+"] when there are 0 elements");if(e%n!=0)throw Error("The implicit shape can't be a fractional number. Got "+e+" / "+n);var a=t.slice();return a[r]=e/n,a}function O(t,e){var n=e.length;return C((t=null==t?e.map((function(t,e){return e})):[].concat(t)).every((function(t){return t>=-n&&ts)&&1===t[s]&&(n.push(t[s]),r.push(s)),a[i]<=s&&i++;}1!==t[s]&&(n.push(t[s]),r.push(s));}return {newShape:n,keptDims:r}}function B(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else {if("bool"!==t)throw new Error("Unknown data type "+t);n=new Uint8Array(e);}return n}function P(t,e){var n=null;if(null==t||"float32"===t)n=new Float32Array(e);else if("int32"===t)n=new Int32Array(e);else if("bool"===t)n=new Uint8Array(e);else {if("string"!==t)throw new Error("Unknown data type "+t);n=new Array(e);}return n}function L(t,e){for(var n=0;n=0;--r)n[r]=n[r+1]*t[r+1];return n}function Q(t,e,n){if("string"===e)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(t)&&(t=I(t)),n&&L(t,e),function(t,e){return t instanceof Float32Array&&"float32"===e||t instanceof Int32Array&&"int32"===e||t instanceof Uint8Array&&"bool"===e}(t,e))return t;if(null==e||"float32"===e||"complex64"===e)return new Float32Array(t);if("int32"===e)return new Int32Array(t);if("bool"===e){for(var r=new Uint8Array(t.length),o=0;o=0,(function(){return "Tensor must have a shape comprised of positive integers but got shape ["+t+"]."}));}));}function rt(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",i().platform.encode(t,e)}function ot(t,e){return void 0===e&&(e="utf-8"),e=e||"utf-8",i().platform.decode(t,e)}function at(t,e,n){if(0===e)return 0;if(1===e)return t[0];for(var r=t[t.length-1],o=0;o0?d:"")+" ";}console.log("%c"+s+"\t%c"+i+"\t%c"+u+"D "+l+"\t%c"+c+"\t%c"+h+"\t%c"+a,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue");},t}();var lt=20,ht=3,ft=7;function dt(t,e,n,r){var o=$(e),a=function(t,e,n,r){var o=k(e),a=r[r.length-1],i=new Array(a).fill(0),s=e.length,u="complex64"===n?mt(t):t;if(s>1)for(var c=0;clt){var l=ht*s,h=Array.from(e.slice(0,l)),f=Array.from(e.slice((u-ht)*s,u*s));return "complex64"===r&&(h=mt(h),f=mt(f)),["["+h.map((function(t,e){return pt(t,a[e],r)})).join(", ")+", ..., "+f.map((function(t,e){return pt(t,a[u-ht+e],r)})).join(", ")+"]"]}return ["["+("complex64"===r?mt(e):Array.from(e)).map((function(t,e){return pt(t,a[e],r)})).join(", ")+"]"]}var d=n.slice(1),p=o.slice(1),v=o[0]*s,m=[];if(u>lt){for(var g=0;g=this.shape[n]){var i="Requested out of range element at "+t+". Buffer shape="+this.shape;throw new Error(i)}n++;}for(var s=t[t.length-1],u=0;u0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak ("+i+" data ids) after running '"+t+"'")},t.prototype.runKernelFunc=function(t,e,n,r,o,a,i){var s,u=this;void 0===a&&(a=[]),void 0===i&&(i=[]);var c=[],h=this.isTapeOn();null==r&&(r=null!=this.state.activeScope?this.state.activeScope.name:"");var f,d=function(t){h&&(c=t.map((function(t){return u.keep(u.clone(t))})));},p=this.state.numBytes,v=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var m,g=l(r,this.backendName);return f=null!=g?function(){var t=u.backend.numDataIds();m=g.kernelFunc({inputs:e,attrs:o,backend:u.backend});var n=Array.isArray(m)?m:[m];u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,t,n);var s=n.map((function(t){var e=t.dataId,n=t.shape,r=t.dtype;return u.makeTensorFromDataId(e,n,r)})),c=s.filter((function(t,e){return i[e]}));return d((a||[]).slice().concat(c)),s}:function(){var e=u.backend.numDataIds();m=u.tidy((function(){return t(u.backend,d)}));var n=Array.isArray(m)?m:[m];return u.shouldCheckForMemLeaks()&&u.checkKernelForMemLeak(r,e,n),n},this.scopedRun((function(){return u.state.kernelDepth++}),(function(){return u.state.kernelDepth--}),(function(){s=u.ENV.getBool("DEBUG")?u.profiler.profileKernel(r,e,(function(){return f()})):f();})),h&&this.addTapeNode(r,e,s,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:r,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-v,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map((function(t){return e[t].shape})),outputShapes:s.map((function(t){return t.shape}))}),Array.isArray(m)?s:s[0]},t.prototype.makeTensor=function(t,e,n,r){if(null==t)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;var o=t;"string"===n&&H(t[0])&&(o=t.map((function(t){return rt(t)})));var a=r.write(o,e,n),i=new wt(e,n,a,this.nextTensorId());if(this.incRef(i,r),"string"===n){var s=this.state.tensorInfo.get(a),u=G(o);this.state.numBytes+=u-s.bytes,s.bytes=u;}return i},t.prototype.makeTensorFromDataId=function(t,e,n,r){var o=new wt(e,n=n||"float32",t,this.nextTensorId());return this.incRef(o,r),o},t.prototype.makeVariable=function(t,e,n,r){void 0===e&&(e=!0),n=n||this.nextVariableId().toString(),null!=r&&r!==t.dtype&&(t=t.asType(r));var o=new St(t,e,n,this.nextTensorId());if(null!=this.state.registeredVariables[o.name])throw new Error("Variable with name "+o.name+" was already registered");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},t.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,"string"===t.dtype&&this.state.numStringTensors++,0===n){this.state.numDataBuffers++;var r=0;"complex64"!==t.dtype&&"string"!==t.dtype&&(r=t.size*z(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:r,refCount:0}),this.state.numBytes+=r;}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof St||this.track(t);},t.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,"string"===t.dtype&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?("complex64"!==t.dtype&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--;}},t.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e);}},t.prototype.disposeVariable=function(t){this.disposeTensor(t),null!=this.state.registeredVariables[t.name]&&delete this.state.registeredVariables[t.name];},t.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,null==t.reasons&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},t.prototype.profile=function(t){return n(this,void 0,void 0,(function(){var e,n;return r(this,(function(r){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map((function(t){return t.totalBytesSnapshot}))),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]}))}))},t.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&0===this.state.kernelDepth},t.prototype.addTapeNode=function(t,e,n,r,o){var a=this,i={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:n,saved:o},s=h(t);null!=s&&(r=s.gradFunc),null!=r&&(i.gradient=function(t){return t=t.map((function(t,e){if(null==t){var r=n[e],o=tt(r.size,r.dtype);return a.makeTensor(o,r.shape,r.dtype)}return t})),r(t.length>1?t:t[0],o)}),this.state.activeTape.push(i);},t.prototype.keep=function(t){return t.kept=!0,t},t.prototype.startTape=function(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++;},t.prototype.endTape=function(){this.state.gradientDepth--;},t.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e;},t.prototype.endScope=function(t){for(var e=this,n=_t(t),r=new Set(n.map((function(t){return t.id}))),o=0;o0,(function(){return "gradients() received an empty list of xs."})),null!=n&&"float32"!==n.dtype)throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var a=this.scopedRun((function(){return o.startTape()}),(function(){return o.endTape()}),(function(){return o.tidy("forward",t)}));C(a instanceof wt,(function(){return "The result y returned by f() must be a tensor."}));var i=function(t,e,n){for(var r={},o={},a=0;a=0;a--)for(i=(p=t[a]).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 t,r,s={};s[a.id]=null==n?(t=a.shape,r=Z(k(t),"float32"),Lt.makeTensor(r,t,"float32")):n,function(t,e,n){for(var r=function(r){var o=e[r],a=[];if(o.outputs.forEach((function(e){var n=t[e.id];null!=n?a.push(n):a.push(null);})),null==o.gradient)throw new Error("Cannot compute gradient: gradient function not found for "+o.kernelName+".");var i=o.gradient(a),s=function(e){if(!(e in i))throw new Error("Cannot backprop through input "+e+". Available gradients found: "+Object.keys(i)+".");var r=n((function(){return i[e]()}));if("float32"!==r.dtype)throw new Error("Error in gradient for op "+o.kernelName+". The gradient of input "+e+" must have 'float32' dtype, but has '"+r.dtype+"'");var a=o.inputs[e];if(!S(r.shape,a.shape))throw new Error("Error in gradient for op "+o.kernelName+". The gradient of input '"+e+"' has shape '"+r.shape+"', which does not match the shape of the input '"+a.shape+"'");if(null==t[a.id])t[a.id]=r;else {var s=t[a.id];t[a.id]=s.add(r),s.dispose();}};for(var u in o.inputs)s(u);},o=e.length-1;o>=0;o--)r(o);}(s,i,(function(t){return o.tidy(t)}));var u=e.map((function(t){return s[t.id]}));return 0===o.state.gradientDepth&&(o.state.activeTape.forEach((function(t){for(var e=0,n=t.saved;en||e>n){r="["+t+"x"+e+"]";throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+("["+n+"x"+n+"]")+".")}}function me(t,e){return ke(t,e,(function(){return t.createFramebuffer()}),"Unable to create WebGLFramebuffer.")}function ge(t,e,n,r,o,a,i,s){var u=t.getAttribLocation(n,r);return -1!==u&&(Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,o)})),Jt(t,e,(function(){return t.vertexAttribPointer(u,a,t.FLOAT,!1,i,s)})),Jt(t,e,(function(){return t.enableVertexAttribArray(u)})),!0)}function ye(t,e,n,r){Se(t,r),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)}));}function xe(t,e,n,r){return ke(t,e,(function(){return t.getUniformLocation(n,r)}),'uniform "'+r+'" not present in program.')}function be(t,e,n){return t.getUniformLocation(e,n)}function we(t,e,n,r,o,a){Jt(t,e,(function(){return ye(t,e,r,a)})),Jt(t,e,(function(){return t.uniform1i(o,a)}));}function Ce(t,e,n,r){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,r)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0)}));}function Ee(t,e,n){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,n)})),Jt(t,e,(function(){return t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,null,0)}));}function Re(t){var e=t.checkFramebufferStatus(t.FRAMEBUFFER);if(e!==t.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Ie(t,e))}function Ie(t,e){switch(e){case t.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return "FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return "FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case t.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return "FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case t.FRAMEBUFFER_UNSUPPORTED:return "FRAMEBUFFER_UNSUPPORTED";default:return "unknown error "+e}}function ke(t,e,n,r){var o=Jt(t,e,(function(){return n()}));if(null==o)throw new Error(r);return o}function Se(t,e){var n=t.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=e+t.TEXTURE0;if(rn)throw new Error("textureUnit must be in "+("[gl.TEXTURE0, gl.TEXTURE"+n+"]")+".")}function Ae(t,e){return void 0===e&&(e=2),k(t.slice(0,t.length-e))}function De(t){if(0===t.length)throw Error("Cannot get rows and columns of an empty shape array.");return [t.length>1?t[t.length-2]:1,t[t.length-1]]}function Te(t){var e=[1,1,1];return 0===t.length||1===t.length&&1===t[0]||(e=[Ae(t)].concat(De(t))),e}function Ne(t,e){var n;void 0===e&&(e=!1);var r=i().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e&&(r*=2,1===(t=t.map((function(e,n){return n>=t.length-2?b(t[n]):t[n]}))).length&&(t=[2,t[0]])),2!==t.length){var o=M(t);t=o.newShape;}var a=k(t);if(t.length<=1&&a<=r)return [1,a];if(2===t.length&&t[0]<=r&&t[1]<=r)return t;if(3===t.length&&t[0]*t[1]<=r&&t[2]<=r)return [t[0]*t[1],t[2]];if(3===t.length&&t[0]<=r&&t[1]*t[2]<=r)return [t[0],t[1]*t[2]];if(4===t.length&&t[0]*t[1]*t[2]<=r&&t[3]<=r)return [t[0]*t[1]*t[2],t[3]];if(4===t.length&&t[0]<=r&&t[1]*t[2]*t[3]<=r)return [t[0],t[1]*t[2]*t[3]];if(e){var s=Ae(t),u=2,c=2;return t.length&&(u=(n=De(t))[0],c=n[1]),T(a=s*(u/2)*(c/2)).map((function(t){return 2*t}))}return T(a)}function Fe(t){return t%2==0}function _e(t,e){if(S(t=t.slice(-2),e=e.slice(-2)))return !0;if(!t.length||!e.length)return !0;if(0===t[0]||0===t[1]||0===e[0]||0===e[1])return !0;if(t.length!==e.length){var n=t.slice(-1)[0],r=e.slice(-1)[0];if(n===r)return !0;if(Fe(n)&&Fe(r)&&(1===t[0]||1===e[0]))return !0}return t[1]===e[1]&&Fe(t[0])&&Fe(e[0])}function Oe(t){if(null==ie){var e=jt(t);ie=e.getParameter(e.MAX_TEXTURE_SIZE);}return ie}function Me(t){if(null==se){var e=jt(t);se=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS);}return Math.min(16,se)}function Be(t){if(0===t)return 0;var e=jt(t);return Pe(e,"EXT_disjoint_timer_query_webgl2")&&2===t?2:Pe(e,"EXT_disjoint_timer_query")?1:0}function Pe(t,e){return null!=t.getExtension(e)}function Le(t){try{if(null!=jt(t))return !0}catch(t){return !1}return !1}function We(t){if(0===t)return !1;var e=jt(t);if(1===t){if(!Pe(e,"OES_texture_float"))return !1}else if(!Pe(e,"EXT_color_buffer_float"))return !1;return Ve(e)}function Ue(t){if(0===t)return !1;var e=jt(t);if(1!==t){if(Pe(e,"EXT_color_buffer_float"))return Ve(e);if(Pe(e,"EXT_color_buffer_half_float")){var n=e.getExtension("EXT_color_buffer_half_float");return function(t,e){var n=Qt(t,e),r=t.createTexture();t.bindTexture(t.TEXTURE_2D,r);t.texImage2D(t.TEXTURE_2D,0,n.internalFormatHalfFloat,1,1,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);var o=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,o),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,r,0);var a=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(r),t.deleteFramebuffer(o),a}(e,n)}return !1}return !!Pe(e,"OES_texture_float")&&(!!Pe(e,"WEBGL_color_buffer_float")&&Ve(e))}function Ve(t){var e=Qt(t),n=t.createTexture();t.bindTexture(t.TEXTURE_2D,n);t.texImage2D(t.TEXTURE_2D,0,e.internalFormatFloat,1,1,0,e.textureFormatFloat,e.textureTypeFloat,null);var r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,n,0);var o=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(n),t.deleteFramebuffer(r),o}function ze(t){return 2===t&&null!=jt(t).fenceSync}var Ge=Object.freeze({callAndCheck:Jt,canBeRepresented:ee,getWebGLErrorMessage:ne,getExtensionOrThrow:re,createVertexShader:oe,createFragmentShader:ae,createProgram:ce,linkProgram:le,validateProgram:he,createStaticVertexBuffer:fe,createStaticIndexBuffer:de,getNumChannels:function(){return 2===i().getNumber("WEBGL_VERSION")?1:4},createTexture:pe,validateTextureSize:ve,createFramebuffer:me,bindVertexBufferToProgramAttribute:ge,bindTextureUnit:ye,unbindTextureUnit:function(t,e,n){Se(t,n),Jt(t,e,(function(){return t.activeTexture(t.TEXTURE0+n)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}));},getProgramUniformLocationOrThrow:xe,getProgramUniformLocation:be,bindTextureToProgramUniformSampler:we,bindCanvasToFramebuffer:function(t,e){Jt(t,e,(function(){return t.bindFramebuffer(t.FRAMEBUFFER,null)})),Jt(t,e,(function(){return t.viewport(0,0,t.canvas.width,t.canvas.height)})),Jt(t,e,(function(){return t.scissor(0,0,t.canvas.width,t.canvas.height)}));},bindColorTextureToFramebuffer:Ce,unbindColorTextureFromFramebuffer:Ee,validateFramebuffer:Re,getFramebufferErrorMessage:Ie,getBatchDim:Ae,getRowsCols:De,getShapeAs3D:Te,getTextureShapeFromLogicalShape:Ne,isReshapeFree:_e,getWebGLMaxTextureSize:Oe,resetMaxTextureSize:function(){ie=null;},resetMaxTexturesInShader:function(){se=null;},getMaxTexturesInShader:Me,getWebGLDisjointQueryTimerVersion:Be,hasExtension:Pe,isWebGLVersionEnabled:Le,isCapableOfRenderingToFloatTexture:We,isDownloadFloatTextureEnabled:Ue,isWebGLFenceEnabled:ze}),He=i();function qe(){i().set("PROD",!0);}function Ke(){i().set("DEBUG",!0);}function je(){i().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.");}function Xe(t){i().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(t+" You can disable deprecation warnings with tf.disableDeprecationWarnings().");}function Ye(){Lt.disposeVariables();}function $e(){return Lt}function Qe(){return Lt.memory()}function Je(t){return Lt.profile(t)}function Ze(t,e){return Lt.tidy(t,e)}function tn(t){_t(t).forEach((function(t){return t.dispose()}));}function en(t){return Lt.keep(t)}function nn(t){return Lt.time(t)}function rn(t){return Lt.setBackend(t)}function on(){return Lt.ready()}function an(){return Lt.backendName}function sn(t){Lt.removeBackend(t);}function un(t){return Lt.findBackend(t)}function cn(t){return Lt.findBackendFactory(t)}function ln(t,e,n){return void 0===n&&(n=1),Lt.registerBackend(t,e,n)}function hn(){return Lt.backend}function fn(t,e){i().setPlatform(t,e);}function dn(){for(var t=[],e=0;e0,(function(){return "Element arr["+r.join("][")+"] should be a primitive, but is an array of "+e.length+" elements"})),C(e.length===n[0],(function(){return "Element arr["+r.join("][")+"] should have "+n[0]+" elements, but has "+e.length+" elements"}));for(var o=n.slice(1),a=0;a=0&&(o=r),vn(r,o,e,n),null==t||!V(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t){var a=null==t?"null":t.constructor.name;throw new Error("Argument '"+e+"' passed to '"+n+"' must be a Tensor or TensorLike, but got '"+a+"'")}var s=pn(t,o);V(t)||Array.isArray(t)||(t=[t]);var u="string"!==o?Q(t,o,i().getBool("DEBUG")):I(t,[],!0);return Lt.makeTensor(u,s,o)}function gn(t,e,n,r){if(void 0===r&&(r="numeric"),!Array.isArray(t))throw new Error("Argument "+e+" passed to "+n+" must be a `Tensor[]` or `TensorLike[]`");return t.map((function(t,r){return mn(t,e+"["+r+"]",n)}),r)}function yn(t,e){for(var n=0;n=0&&e0})),He.registerFlag("WEBGL_VERSION",(function(){return Le(2)?2:Le(1)?1:0})),He.registerFlag("WEBGL_BUFFER_SUPPORTED",(function(){return 2===He.get("WEBGL_VERSION")})),He.registerFlag("WEBGL_CPU_FORWARD",(function(){return !0})),He.registerFlag("WEBGL_FORCE_F16_TEXTURES",(function(){return !1})),He.registerFlag("WEBGL_PACK",(function(){return He.getBool("HAS_WEBGL")})),He.registerFlag("WEBGL_PACK_NORMALIZATION",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_CLIP",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_DEPTHWISECONV",(function(){return !1})),He.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_PACK_REDUCE",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_LAZILY_UNPACK",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_CONV_IM2COL",(function(){return He.getBool("WEBGL_PACK")})),He.registerFlag("WEBGL_MAX_TEXTURE_SIZE",(function(){return Oe(He.getNumber("WEBGL_VERSION"))})),He.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",(function(){return Me(He.getNumber("WEBGL_VERSION"))})),He.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",(function(){var t=He.getNumber("WEBGL_VERSION");return 0===t?0:Be(t)})),He.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",(function(){return He.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(t=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))));var t;})),He.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",(function(){return We(He.getNumber("WEBGL_VERSION"))})),He.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",(function(){return !He.getBool("WEBGL_FORCE_F16_TEXTURES")&&He.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")})),He.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",(function(){return Ue(He.getNumber("WEBGL_VERSION"))})),He.registerFlag("WEBGL_FENCE_API_ENABLED",(function(){return ze(He.getNumber("WEBGL_VERSION"))})),He.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",(function(){return He.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0})),bt=Xe;var Dn=An({complex_:function(t,e){var n=mn(t,"real","complex"),r=mn(e,"imag","complex");return E(n.shape,r.shape,"real and imag shapes, "+n.shape+" and "+r.shape+", must match in call to tf.complex()."),Lt.runKernelFunc((function(t){return t.complex(n,r)}),{$real:n,$imag:r})}}),Tn=An({real_:function(t){var e=mn(t,"input","real");return Lt.runKernelFunc((function(t){return t.real(e)}),{$input:e})}}),Nn=An({imag_:function(t){var e=mn(t,"input","imag");return Lt.runKernelFunc((function(t){return t.imag(e)}),{$input:e})}});function Fn(t,e,n){return _n(t,e,pn(t,n),n)}function _n(t,e,n,r){if(null==r&&(r=j(t)),"complex64"===r)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!V(t)&&!Array.isArray(t)&&"number"!=typeof t&&"boolean"!=typeof t&&"string"!=typeof t)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!=e){nt(e);var o=k(e),a=k(n);C(o===a,(function(){return "Based on the provided shape, ["+e+"], the tensor should have "+o+" values but has "+a}));for(var s=0;s1)return Gn([0],r);var o=tt(Math.abs(Math.ceil((e-t)/n)),r);e=1,(function(){return "Pass at least one tensor to concat"}));var n=gn(t,"tensors","concat");"complex64"===n[0].dtype&&n.forEach((function(t){if("complex64"!==t.dtype)throw new Error("Cannot concatenate complex64 tensors with a tensor\n with dtype "+t.dtype+". ")})),e=O(e,n[0].shape)[0];var r=Sn(n.map((function(t){return t.shape})),e);if(0===k(r))return Fn([],r);if(1===(n=n.filter((function(t){return t.size>0}))).length)return n[0];var o=n.map((function(t){return t.shape}));kn(o,e);var a=n,i={axis:e};return Lt.runKernelFunc((function(t){return t.concat(n,e)}),a,(function(t){var n=o.map((function(t){return t[e]}));return tr(t,n,e).map((function(t){return function(){return t}}))}),"Concat",i)}}),$n=An({concat1d_:function(t){return Yn(t,0)}}),Qn=An({concat2d_:function(t,e){return Yn(t,e)}}),Jn=An({concat3d_:function(t,e){return Yn(t,e)}}),Zn=An({concat4d_:function(t,e){return Yn(t,e)}}),tr=An({split_:function(t,e,n){void 0===n&&(n=0);var r,o=mn(t,"x","split");return n=O(n,o.shape)[0],"number"==typeof e?(C(o.shape[n]%e==0,(function(){return "Number of splits must evenly divide the axis."})),r=new Array(e).fill(o.shape[n]/e)):(C(o.shape[n]===e.reduce((function(t,e){return t+e})),(function(){return "The sum of sizes must match the size of the axis dimension."})),r=e),Lt.runKernelFunc((function(t){return t.split(o,r,n)}),{$x:o},(function(t){return {$x:function(){return Yn(t,n)}}}))}});function er(t,e){return t(e={exports:{}},e.exports),e.exports}var nr=er((function(t){!function(t,e,n){function r(t){var e,n=this,r=(e=4022871197,function(t){t=t.toString();for(var n=0;n>>0,e=(r*=e)>>>0,e+=4294967296*(r-=e);}return 2.3283064365386963e-10*(e>>>0)});n.next=function(){var t=2091639*n.s0+2.3283064365386963e-10*n.c;return n.s0=n.s1,n.s1=n.s2,n.s2=t-(n.c=0|t)},n.c=1,n.s0=r(" "),n.s1=r(" "),n.s2=r(" "),n.s0-=r(t),n.s0<0&&(n.s0+=1),n.s1-=r(t),n.s1<0&&(n.s1+=1),n.s2-=r(t),n.s2<0&&(n.s2+=1),r=null;}function o(t,e){return e.c=t.c,e.s0=t.s0,e.s1=t.s1,e.s2=t.s2,e}function a(t,e){var n=new r(t),a=e&&e.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,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.alea=a;}(0,t,!1);})),rr=er((function(t){!function(t,e,n){function r(t){var e=this,n="";e.x=0,e.y=0,e.z=0,e.w=0,e.next=function(){var t=e.x^e.x<<11;return e.x=e.y,e.y=e.z,e.z=e.w,e.w^=e.w>>>19^t^t>>>8},t===(0|t)?e.x=t:n+=t;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor128=a;}(0,t,!1);})),or=er((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.x^e.x>>>2;return e.x=e.y,e.y=e.z,e.z=e.w,e.w=e.v,(e.d=e.d+362437|0)+(e.v=e.v^e.v<<4^t^t<<1)|0},e.x=0,e.y=0,e.z=0,e.w=0,e.v=0,t===(0|t)?e.x=t:n+=t;for(var r=0;r>>4),e.next();}function o(t,e){return e.x=t.x,e.y=t.y,e.z=t.z,e.w=t.w,e.v=t.v,e.d=t.d,e}function a(t,e){var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorwow=a;}(0,t,!1);})),ar=er((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.x,o=e.i;return t=r[o],n=(t^=t>>>7)^t<<24,n^=(t=r[o+1&7])^t>>>10,n^=(t=r[o+3&7])^t>>>3,n^=(t=r[o+4&7])^t<<7,t=r[o+7&7],n^=(t^=t<<13)^t<<9,r[o]=n,e.i=o+1&7,n},function(t,e){var n,r=[];if(e===(0|e))r[0]=e;else for(e=""+e,n=0;n0;--n)t.next();}(e,t);}function o(t,e){return e.x=t.x.slice(),e.i=t.i,e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.x&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xorshift7=a;}(0,t,!1);})),ir=er((function(t){!function(t,e,n){function r(t){var e=this;e.next=function(){var t,n,r=e.w,o=e.X,a=e.i;return e.w=r=r+1640531527|0,n=o[a+34&127],t=o[a=a+1&127],n^=n<<13,t^=t<<17,n^=n>>>15,t^=t>>>12,n=o[a]=n^t,e.i=a,n+(r^r>>>16)|0},function(t,e){var n,r,o,a,i,s=[],u=128;for(e===(0|e)?(r=e,e=null):(e+="\0",r=0,u=Math.max(u,e.length)),o=0,a=-32;a>>15,r^=r<<4,r^=r>>>13,a>=0&&(i=i+1640531527|0,o=0==(n=s[127&a]^=r+i)?o+1:0);for(o>=128&&(s[127&(e&&e.length||0)]=-1),o=127,a=512;a>0;--a)r=s[o+34&127],n=s[o=o+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[o]=r^n;t.w=i,t.X=s,t.i=o;}(e,t);}function o(t,e){return e.i=t.i,e.w=t.w,e.X=t.X.slice(),e}function a(t,e){null==t&&(t=+new Date);var n=new r(t),a=e&&e.state,i=function(){return (n.next()>>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&(a.X&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.xor4096=a;}(0,t,!1);})),sr=er((function(t){!function(t,e,n){function r(t){var e=this,n="";e.next=function(){var t=e.b,n=e.c,r=e.d,o=e.a;return t=t<<25^t>>>7^n,n=n-r|0,r=r<<24^r>>>8^o,o=o-t|0,e.b=t=t<<20^t>>>12^n,e.c=n=n-r|0,e.d=r<<16^n>>>16^o,e.a=o-t|0},e.a=0,e.b=0,e.c=-1640531527,e.d=1367130551,t===Math.floor(t)?(e.a=t/4294967296|0,e.b=0|t):n+=t;for(var r=0;r>>0)/4294967296};return i.double=function(){do{var t=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);}while(0===t);return t},i.int32=n.next,i.quick=i,a&&("object"==typeof a&&o(a,n),i.state=function(){return o(n,{})}),i}e&&e.exports?e.exports=a:n&&n.amd?n((function(){return a})):this.tychei=a;}(0,t,!1);})),ur=er((function(t){!function(e,n){var r,o=this,a=256,i=6,s="random",u=n.pow(a,i),c=n.pow(2,52),l=2*c,h=a-1;function f(t,h,f){var g=[],y=v(function t(e,n){var r,o=[],a=typeof e;if(n&&"object"==a)for(r in e)try{o.push(t(e[r],n-1));}catch(t){}return o.length?o:"string"==a?e:e+"\0"}((h=1==h?{entropy:!0}:h||{}).entropy?[t,m(e)]:null==t?function(){try{var t;return r&&(t=r.randomBytes)?t=t(a):(t=new Uint8Array(a),(o.crypto||o.msCrypto).getRandomValues(t)),m(t)}catch(t){var n=o.navigator,i=n&&n.plugins;return [+new Date,o,i,o.screen,m(e)]}}():t,3),g),x=new d(g),b=function(){for(var t=x.g(i),e=u,n=0;t=l;)t/=2,e/=2,n>>>=1;return (t+n)/e};return b.int32=function(){return 0|x.g(4)},b.quick=function(){return x.g(4)/4294967296},b.double=b,v(m(x.S),e),(h.pass||f||function(t,e,r,o){return o&&(o.S&&p(o,x),t.state=function(){return p(x,{})}),r?(n[s]=t,e):t})(b,y,"global"in h?h.global:this==n,h.state)}function d(t){var e,n=t.length,r=this,o=0,i=r.i=r.j=0,s=r.S=[];for(n||(t=[n++]);o=1||0===i);var s=Math.sqrt(-2*Math.log(i)/i);e=this.mean+this.stdDev*o*s,n=this.mean+this.stdDev*a*s,this.truncated&&!this.isValidTruncated(e)||(r=!0);}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},t.prototype.convertValue=function(t){return null==this.dtype||"float32"===this.dtype?t:Math.round(t)},t.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},t}(),hr=function(){function t(t,e,n,r){this.alpha=t,this.beta=1/e,this.dtype=n;var o=r||Math.random();this.randu=cr(o.toString()),this.randn=new lr(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d);}return t.prototype.nextValue=function(){for(var t,e,n,r,o,a;;){do{r=this.randn.nextValue(),a=1+this.c*r;}while(a<=0);if(a*=a*a,e=1-.331*(t=r*r)*t,n=.5*t+this.d*(1-a+Math.log(a)),(o=this.randu())=1+e.length,(function(){return "input rank is "+r.rank+" but should be > than blockShape.length "+e.length})),C(n.length===e.length,(function(){return "crops.length is "+n.length+" but should be equal to blockShape.length "+e.length})),C(r.shape[0]%o==0,(function(){return "input tensor batch is "+r.shape[0]+" but is not divisible by the product of the elements of blockShape "+e.join(" * ")+" === "+o})),Lt.runKernelFunc((function(t){return t.batchToSpaceND(r,e,n)}),{$x:r},(function(t){return {$x:function(){return t.spaceToBatchND(e,n)}}}))}}),mr=An({broadcastTo_:function(t,e){var n=mn(t,"broadcastTo","x"),r=n.shape;if(e.some((function(t){return !(t>0)||t%1!=0})))throw new Error("broadcastTo(): Invalid broadcast shape ["+e+"].");if(e.lengthn.rank){for(var o=n.shape.slice();o.length=0;i--)if(n.shape[i]===e[i])a[i]=1;else if(1!==n.shape[i])throw new Error("broadcastTo(): ["+r+"] cannot be broadcast to ["+e+"].");var s=a.map((function(t,e){return t>1?e:-1})).filter((function(t){return t>=0}));return 0===s.length?n.clone():Lt.runKernelFunc((function(t){return t.tile(n,a)}),{input:n},(function(t){return {input:function(){return t.sum(s,!0)}}}))}}),gr=An({cast_:function(t,e){var n=mn(t,"x","cast");if(!W(e))throw new Error("Failed to cast to unknown dtype "+e);if("string"===e&&"string"!==n.dtype||"string"!==e&&"string"===n.dtype)throw new Error("Only strings can be casted to strings");var r={dtype:e};return Lt.runKernelFunc((function(t){return t.cast(n,e)}),{x:n},(function(t){return {x:function(){return t.clone()}}}),"Cast",r)}}),yr=An({clone_:function(t){var e=mn(t,"x","clone",null);return Lt.runKernelFunc((function(){return Lt.makeTensorFromDataId(e.dataId,e.shape,e.dtype)}),{$x:e},(function(t){return {$x:function(){return t.toFloat()}}}))}}),xr=An({cumsum_:function(t,e,n,r){void 0===e&&(e=0),void 0===n&&(n=!1),void 0===r&&(r=!1);var o=mn(t,"x","cumsum"),a=En([e|=0],o.rank),i=o;null!=a&&(i=o.transpose(a));var s=In(1,o.rank)[0],u=Lt.runKernelFunc((function(t){return t.cumsum(i,s,n,r)}),{permutedX:i},(function(t){return {permutedX:function(){return t.cumsum(e,n,!r)}}}));return null!=a&&(u=u.transpose(a)),u}}),br=An({depthToSpace_:function(t,e,n){void 0===n&&(n="NHWC");var r=mn(t,"x","depthToSpace"),o="NHWC"===n?r.shape[1]:r.shape[2],a="NHWC"===n?r.shape[2]:r.shape[3],i="NHWC"===n?r.shape[3]:r.shape[1];return C(o*e>=0,(function(){return "Negative dimension size caused by overflow when multiplying\n "+o+" and "+e+" for depthToSpace with input shape\n "+r.shape})),C(a*e>=0,(function(){return "Negative dimension size caused by overflow when multiplying\n "+a+" and "+e+" for depthToSpace with input shape\n "+r.shape})),C(i%(e*e)==0,(function(){return "Dimension size must be evenly divisible by "+e*e+" but is "+i+" for depthToSpace with input shape "+r.shape})),Lt.runKernelFunc((function(t){return t.depthToSpace(r,e,n)}),{$x:r})}}),wr=An({expandDims_:function(t,e){void 0===e&&(e=0);var n=mn(t,"x","expandDims",null);C(e<=n.rank,(function(){return "Axis must be <= rank of the tensor"}));var r=n.shape.slice();return e<0&&(C(-(n.rank+1)<=e,(function(){return "Axis must be in the interval ["+-(n.rank+1)+", "+n.rank+"]"})),e=n.rank+e+1),r.splice(e,0,1),Or(n,r)}}),Cr=An({eye_:function(t,e,n,r){void 0===r&&(r="float32"),null==e&&(e=t);for(var o=dr([t,e],r),a=t<=e?t:e,i=0;i2)throw new Error("Rank of probabilities must be 1 or 2, but is "+i);n=n||Math.random();var s=1===i?o.as2D(1,-1):o,u=Lt.runKernelFunc((function(t){return t.multinomial(s,r,e,n)}),{logits2D:s});return 1===i?u.as1D():u}}),Rr=An({oneHot_:function(t,e,n,r){if(void 0===n&&(n=1),void 0===r&&(r=0),e<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+e);var o=mn(t,"indices","oneHot","int32"),a=o.shape.concat([e]);return o=o.flatten(),Lt.runKernelFunc((function(t){return t.oneHot(o,e,n,r)}),{$indices:o},(function(t){return {$indices:function(){return Gn(o.shape,"float32")}}})).reshape(a)}}),Ir=An({pad_:function(t,e,n){void 0===n&&(n=0);var r=mn(t,"x","pad");if(0===r.rank)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var o={paddings:e,constantValue:n};return Lt.runKernelFunc((function(t){return t.pad(r,e,n)}),{x:r},(function(t){var n=e.map((function(t){return t[0]}));return {x:function(){return t.slice(n,r.shape)}}}),"PadV2",o)}}),kr=An({pad1d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length,(function(){return "Invalid number of paddings. Must be length of 2."})),Ir(t,[e],n)}}),Sr=An({pad2d_:function(t,e,n){return void 0===n&&(n=0),C(2===e.length&&2===e[0].length&&2===e[1].length,(function(){return "Invalid number of paddings. Must be length of 2 each."})),Ir(t,e,n)}}),Ar=An({pad3d_:function(t,e,n){return void 0===n&&(n=0),C(3===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length,(function(){return "Invalid number of paddings. Must be length of 2 each."})),Ir(t,e,n)}}),Dr=An({pad4d_:function(t,e,n){return void 0===n&&(n=0),C(4===e.length&&2===e[0].length&&2===e[1].length&&2===e[2].length&&2===e[3].length,(function(){return "Invalid number of paddings. Must be length of 2 each."})),Ir(t,e,n)}}),Tr=An({rand_:function(t,e,n){var r=k(t),o=null;if(null==n||"float32"===n)o=new Float32Array(r);else if("int32"===n)o=new Int32Array(r);else {if("bool"!==n)throw new Error("Unknown data type "+n);o=new Uint8Array(r);}for(var a=0;a=1+e.length,(function(){return "input rank "+r.rank+" should be > than [blockShape] "+e.length})),C(n.length===e.length,(function(){return "paddings.shape[0] "+n.length+" must be equal to [blockShape] "+e.length})),C(r.shape.reduce((function(t,r,o){return o>0&&o<=e.length?t&&(r+n[o-1][0]+n[o-1][1])%e[o-1]==0:t}),!0),(function(){return "input spatial dimensions "+r.shape.slice(1)+" with paddings "+n.toString()+" must be divisible by blockShapes "+e.toString()})),Lt.runKernelFunc((function(t){return t.spaceToBatchND(r,e,n)}),{$x:r},(function(t){return {$x:function(){return t.batchToSpaceND(e,n)}}}))}}),Br=An({squeeze_:function(t,e){var n=mn(t,"x","squeeze");return Or(n,M(n.shape,e).newShape)}}),Pr=An({stack_:function(t,e){void 0===e&&(e=0);var n=gn(t,"tensors","stack");if(C(n.length>=1,(function(){return "Pass at least one tensor to tf.stack"})),1===n.length)return n[0].expandDims(e);var r=n[0].rank,o=n[0].shape,a=n[0].dtype;C(e<=r,(function(){return "Axis must be <= rank of the tensor"})),n.forEach((function(t){E(o,t.shape,"All tensors passed to stack must have matching shapes");})),n.forEach((function(t){C(a===t.dtype,(function(){return "All tensors passed to stack must have matching dtypes"}));}));var i=n.map((function(t){return t.expandDims(e)}));return Yn(i,e)}}),Lr=An({tile_:function(t,e){var n=mn(t,"x","tile",null);C(n.rank===e.length,(function(){return "Error in transpose: rank of input "+n.rank+" must match length of reps "+e+"."}));var r=[n],o={reps:e};return Lt.runKernelFunc((function(t,r){var o=t.tile(n,e);return r([n]),o}),{x:n},(function(t,n){var r=n[0];return {x:function(){var n=Xn(r);if(1===r.rank)for(var o=0;o=-n.shape.length&&e=2*e+1||o%2==1?i.push(o):a.push(o);r.push.apply(r,a),r.push(0),r.push.apply(r,i);}return r}function Hr(t,e,n,r){void 0===r&&(r=!0);var o=[];r?o.push(t[0]/n):o.push(t[0]*n);for(var a=1;at.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+e.shape[e.rank-1]+" vs. "+t.rank);if(0===t.size)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+t.shape+".");for(var n=e.shape,r=n[n.length-1],o=1,a=0;a1?e.shape[e.rank-1]:1,o=e.rank>1?e.rank-1:1,a="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+n.shape+", indices.shape: "+e.shape+", shape: "+t+", sliceDim: "+r+", and batchDim: "+o+".";if(n.rank1?e.shape[r-1]:1,a=n.length,i=1,s=o;s0;)1&t&&e.push(n),t/=2,n++;return e}function ro(t,e,n){for(var r=[],o=0;o0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=x(0,a,s-1)}function ao(t,e,n,r,o){var a=e[o],i=n[o]||1;(t&1<0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=r[o];return a<0&&(a+=s),a=i>0?x(0,a,s):x(-1,a,s-1)}function io(t,e,n){for(var r=n.length,o=0;o1){r=o;break}for(o=r+1;o0||n[o]!==t[o])return !1;return !0}function so(t,e){for(var n=t.length>0?t[t.length-1]:1,r=0;r0,(function(){return "variableGrads() expects at least one of the input variables to be trainable, but none of the "+a+" variables is trainable."}));var i=Lt.gradients(t,e,null,!0),s=i.value,u=i.grads;C(u.some((function(t){return null!=t})),(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()."})),C(0===s.rank,(function(){return "The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"}));var c={};return e.forEach((function(t,e){null!=u[e]&&(c[t.name]=u[e]);})),null!=o&&o.forEach((function(t){return c[t.name]=null})),{value:s,grads:c}}function vo(t){return Lt.customGrad(t)}function mo(t){if(t.filter((function(t){return null==t})).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 go=An({softmax_:function(t,e){void 0===e&&(e=-1);var n=mn(t,"logits","softmax","float32");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and dim was "+e);return Lt.runKernelFunc((function(t,r){var o=t.softmax(n,e);return r([o]),o}),{logits:n},(function(t,n){var r=n[0],o=t.mul(r);return {logits:function(){return o.sub(o.sum([e],!0).mul(r))}}}),"Softmax",{dim:e},[],[!0])}}),yo=An({logSoftmax_:function(t,e){void 0===e&&(e=-1);var n=mn(t,"logits","logSoftmax");if(-1===e&&(e=n.rank-1),e!==n.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+n.rank+" and axis was "+e);return vo((function(t,n){var r=t.max(e,!0),o=t.sub(r),a=o.toFloat().sub(o.exp().sum(e,!0).log());n([a]);return {value:a,gradFunc:function(t,n){var r=n[0].exp();return t.sub(t.sum(e,!0).mul(r))}}}))(n)}}),xo=function(){function t(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0;}return t.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},t.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e);},t.prototype.has=function(t){return this.data.has(t)},t.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},t.prototype.numDataIds=function(){return this.dataIdsCount},t}(),bo=function(){function t(){}return t.prototype.time=function(t){return wo("time")},t.prototype.read=function(t){return wo("read")},t.prototype.readSync=function(t){return wo("readSync")},t.prototype.numDataIds=function(){return wo("numDataIds")},t.prototype.disposeData=function(t){return wo("disposeData")},t.prototype.write=function(t,e,n){return wo("write")},t.prototype.move=function(t,e,n,r){return wo("move")},t.prototype.memory=function(){return wo("memory")},t.prototype.floatPrecision=function(){return wo("floatPrecision")},t.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},t.prototype.batchMatMul=function(t,e,n,r){return wo("batchMatMul")},t.prototype.fusedBatchMatMul=function(t){t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights;return wo("fusedBatchMatMul")},t.prototype.slice=function(t,e,n){return wo("slice")},t.prototype.stridedSlice=function(t,e,n,r){return wo("stridedSlice")},t.prototype.unstack=function(t,e){return wo("unstack")},t.prototype.reverse=function(t,e){return wo("reverse")},t.prototype.concat=function(t,e){return wo("concat")},t.prototype.neg=function(t){return wo("neg")},t.prototype.add=function(t,e){return wo("add")},t.prototype.addN=function(t){return wo("addN")},t.prototype.subtract=function(t,e){return wo("subtract")},t.prototype.multiply=function(t,e){return wo("multiply")},t.prototype.realDivide=function(t,e){return wo("realDivide")},t.prototype.floorDiv=function(t,e){return wo("floorDiv")},t.prototype.sum=function(t,e){return wo("sum")},t.prototype.prod=function(t,e){return wo("prod")},t.prototype.unsortedSegmentSum=function(t,e,n){return wo("unsortedSegmentSum")},t.prototype.argMin=function(t,e){return wo("argMin")},t.prototype.argMax=function(t,e){return wo("argMax")},t.prototype.equal=function(t,e){return wo("equal")},t.prototype.notEqual=function(t,e){return wo("notEqual")},t.prototype.less=function(t,e){return wo("less")},t.prototype.lessEqual=function(t,e){return wo("lessEqual")},t.prototype.greater=function(t,e){return wo("greater")},t.prototype.greaterEqual=function(t,e){return wo("greaterEqual")},t.prototype.logicalNot=function(t){return wo("logicalNot")},t.prototype.logicalAnd=function(t,e){return wo("logicalAnd")},t.prototype.logicalOr=function(t,e){return wo("logicalOr")},t.prototype.where=function(t){return wo("where")},t.prototype.select=function(t,e,n){return wo("select")},t.prototype.topk=function(t,e,n){return wo("topk")},t.prototype.min=function(t,e){return wo("min")},t.prototype.minimum=function(t,e){return wo("minimum")},t.prototype.mod=function(t,e){return wo("mod")},t.prototype.max=function(t,e){return wo("max")},t.prototype.maximum=function(t,e){return wo("maximum")},t.prototype.all=function(t,e){return wo("all")},t.prototype.any=function(t,e){return wo("any")},t.prototype.squaredDifference=function(t,e){return wo("squaredDifference")},t.prototype.ceil=function(t){return wo("ceil")},t.prototype.floor=function(t){return wo("floor")},t.prototype.round=function(t){return wo("round")},t.prototype.sign=function(t){return wo("sign")},t.prototype.isNaN=function(t){return wo("isNaN")},t.prototype.isInf=function(t){return wo("isInf")},t.prototype.isFinite=function(t){return wo("isFinite")},t.prototype.pow=function(t,e){return wo("pow")},t.prototype.exp=function(t){return wo("exp")},t.prototype.expm1=function(t){return wo("expm1")},t.prototype.softmax=function(t,e){return wo("softmax")},t.prototype.log=function(t){return wo("log")},t.prototype.log1p=function(t){return wo("log1p")},t.prototype.sqrt=function(t){return wo("sqrt")},t.prototype.rsqrt=function(t){return wo("rsqrt")},t.prototype.square=function(t){return wo("square")},t.prototype.reciprocal=function(t){return wo("reciprocal")},t.prototype.relu=function(t){return wo("relu")},t.prototype.relu6=function(t){return wo("relu6")},t.prototype.prelu=function(t,e){return wo("prelu")},t.prototype.elu=function(t){return wo("elu")},t.prototype.eluDer=function(t,e){return wo("eluDer")},t.prototype.selu=function(t){return wo("selu")},t.prototype.int=function(t){return wo("int")},t.prototype.clip=function(t,e,n){return wo("clip")},t.prototype.abs=function(t){return wo("abs")},t.prototype.complexAbs=function(t){return wo("complexAbs")},t.prototype.sigmoid=function(t){return wo("sigmoid")},t.prototype.softplus=function(t){return wo("softplus")},t.prototype.sin=function(t){return wo("sin")},t.prototype.cos=function(t){return wo("cos")},t.prototype.tan=function(t){return wo("tan")},t.prototype.asin=function(t){return wo("asin")},t.prototype.acos=function(t){return wo("acos")},t.prototype.atan=function(t){return wo("atan")},t.prototype.atan2=function(t,e){return wo("atan2")},t.prototype.sinh=function(t){return wo("sinh")},t.prototype.cosh=function(t){return wo("cosh")},t.prototype.tanh=function(t){return wo("tanh")},t.prototype.asinh=function(t){return wo("asinh")},t.prototype.acosh=function(t){return wo("acosh")},t.prototype.atanh=function(t){return wo("atanh")},t.prototype.erf=function(t){return wo("erf")},t.prototype.step=function(t,e){return wo("step")},t.prototype.fusedConv2d=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return wo("fusedConv2d")},t.prototype.conv2d=function(t,e,n){return wo("conv2d")},t.prototype.conv2dDerInput=function(t,e,n){return wo("conv2dDerInput")},t.prototype.conv2dDerFilter=function(t,e,n){return wo("conv2dDerFilter")},t.prototype.fusedDepthwiseConv2D=function(t){t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights;return wo("fusedDepthwiseConv2D")},t.prototype.depthwiseConv2D=function(t,e,n){return wo("depthwiseConv2D")},t.prototype.depthwiseConv2DDerInput=function(t,e,n){return wo("depthwiseConv2DDerInput")},t.prototype.depthwiseConv2DDerFilter=function(t,e,n){return wo("depthwiseConv2DDerFilter")},t.prototype.conv3d=function(t,e,n){return wo("conv3d")},t.prototype.conv3dDerInput=function(t,e,n){return wo("conv3dDerInput")},t.prototype.conv3dDerFilter=function(t,e,n){return wo("conv3dDerFilter")},t.prototype.maxPool=function(t,e){return wo("maxPool")},t.prototype.maxPoolBackprop=function(t,e,n,r){return wo("maxPoolBackprop")},t.prototype.avgPool=function(t,e){return wo("avgPool")},t.prototype.avgPoolBackprop=function(t,e,n){return wo("avgPoolBackprop")},t.prototype.avgPool3d=function(t,e){return wo("avgPool3d")},t.prototype.avgPool3dBackprop=function(t,e,n){return wo("avgPool3dBackprop")},t.prototype.maxPool3d=function(t,e){return wo("maxPool3d")},t.prototype.maxPool3dBackprop=function(t,e,n,r){return wo("maxPool3dBackprop")},t.prototype.reshape=function(t,e){return wo("reshape")},t.prototype.cast=function(t,e){return wo("cast")},t.prototype.tile=function(t,e){return wo("tile")},t.prototype.pad=function(t,e,n){return wo("pad")},t.prototype.transpose=function(t,e){return wo("transpose")},t.prototype.gather=function(t,e,n){return wo("gather")},t.prototype.gatherND=function(t,e){return wo("gatherND")},t.prototype.scatterND=function(t,e,n){return wo("scatterND")},t.prototype.batchToSpaceND=function(t,e,n){return wo("batchToSpaceND")},t.prototype.spaceToBatchND=function(t,e,n){return wo("spaceToBatchND")},t.prototype.resizeBilinear=function(t,e,n,r){return wo("resizeBilinear")},t.prototype.resizeBilinearBackprop=function(t,e,n){return wo("resizeBilinearBackprop")},t.prototype.resizeNearestNeighbor=function(t,e,n,r){return wo("resizeNearestNeighbor")},t.prototype.resizeNearestNeighborBackprop=function(t,e,n){return wo("resizeNearestNeighborBackprop")},t.prototype.batchNormalization=function(t,e,n,r,o,a){return wo("batchNormalization")},t.prototype.localResponseNormalization4D=function(t,e,n,r,o){return wo("localResponseNormalization4D")},t.prototype.LRNGrad=function(t,e,n,r,o,a,i){return wo("LRNGrad")},t.prototype.multinomial=function(t,e,n,r){return wo("multinomial")},t.prototype.oneHot=function(t,e,n,r){return wo("oneHot")},t.prototype.cumsum=function(t,e,n,r){return wo("cumsum")},t.prototype.nonMaxSuppression=function(t,e,n,r,o){return wo("nonMaxSuppression")},t.prototype.fft=function(t){return wo("fft")},t.prototype.ifft=function(t){return wo("ifft")},t.prototype.complex=function(t,e){return wo("complex")},t.prototype.real=function(t){return wo("real")},t.prototype.imag=function(t){return wo("imag")},t.prototype.cropAndResize=function(t,e,n,r,o,a){return wo("cropAndResize")},t.prototype.depthToSpace=function(t,e,n){return wo("depthToSpace")},t.prototype.split=function(t,e,n){return wo("split")},t.prototype.sparseToDense=function(t,e,n,r){return wo("sparseToDense")},t.prototype.diag=function(t){return wo("diag")},t.prototype.fill=function(t,e,n){return wo("fill")},t.prototype.onesLike=function(t){return wo("onesLike")},t.prototype.zerosLike=function(t){return wo("zerosLike")},t.prototype.linspace=function(t,e,n){return wo("linspace")},t.prototype.dispose=function(){return wo("dispose")},t}();function wo(t){throw new Error("'"+t+"' not yet implemented or not found in the registry. Did you forget to import the kernel?")}function Co(t,e){for(var n=t.length,r=[],o=0;o1&&1===i&&r.unshift(a);}return r}function Eo(t,e){for(var n=[],r=0;r1)&&n.unshift(a);}return n}function Ro(t,e){for(var n=[],r=Math.max(t.length,e.length),o=0;o>>1)]);s>0?r=a+1:(o=a,i=!s);}return i?r:-r-1}(t,e,n||Ko)}(t,e,n),o=r<0?-(r+1):r;t.splice(o,0,e);}function Ko(t,e){return t>e?1:to})).sort(Jo),c=a>0?-.5/a:0,l=[],h=[];l.length0;){var f=u.pop(),d=f.score,p=f.boxIndex,v=f.suppressBeginIndex;if(d=v;--g){var y=$o(t,p,l[g]);if(y>=r){m=!0;break}if(f.score=f.score*Qo(r,c,y),f.score<=o)break}f.suppressBeginIndex=l.length,m||(f.score===d?(l.push(p),h.push(f.score)):f.score>o&&qo(u,f,Jo));}var x=l.length;return s&&(l.fill(0,x),h.fill(0,x)),{selectedIndices:Mn(l,"int32"),selectedScores:Mn(h,"float32"),numValidOutputs:On(x,"int32")}}function $o(t,e,n){var r=t.subarray(4*e,4*e+4),o=t.subarray(4*n,4*n+4),a=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(o[0],o[2]),l=Math.min(o[1],o[3]),h=Math.max(o[0],o[2]),f=Math.max(o[1],o[3]),d=(s-a)*(u-i),p=(h-c)*(f-l);if(d<=0||p<=0)return 0;var v=Math.max(a,c),m=Math.max(i,l),g=Math.min(s,h),y=Math.min(u,f),x=Math.max(g-v,0)*Math.max(y-m,0);return x/(d+p-x)}function Qo(t,e,n){var r=Math.exp(e*n*n);return n<=t?r:0}function Jo(t,e){return t.score-e.score||t.score===e.score&&e.boxIndex-t.boxIndex}function Zo(t,e,n){var r=new Array(t.rank).fill(0),o=t.shape.slice();return e.map((function(e){o[n]=e;var a=t.slice(r,o);return r[n]+=e,a}))}function ta(t,e){for(var n=new Array(t.rank),r=0;r":"<",u=n?"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 * "+r+";\n\n int bestIndex = inOffset;\n float bestValue = getA(batch, bestIndex);\n\n for (int i = 0; i < "+r+"; i++) {\n int inIdx = "+u+";\n float candidate = getA(batch, inIdx);\n if (candidate "+s+" bestValue) {\n bestValue = candidate;\n bestIndex = inIdx;\n }\n }\n setOutput(float(bestIndex));\n }\n ";};function ia(t,e){return ["x","y","z","w","u","v"].slice(0,e).map((function(e){return t+"."+e}))}function sa(t,e){return 1===e?[t]:ia(t,e)}function ua(){var t,e,n,r,o,a,s,u,c,l;return 2===i().getNumber("WEBGL_VERSION")?(t="#version 300 es",e="in",n="out",r="in",o="texture",a="outputColor",s="out vec4 outputColor;",u="\n bool isnan_custom(float val) {\n return (val > 0.0 || val < 0.0) ? false : val != 0.0;\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 ",c="",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 "):(t="",e="attribute",n="varying",r="varying",o="texture2D",a="gl_FragColor",s="",u="\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 ",c="\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:t,attribute:e,varyingVs:n,varyingFs:r,texture2D:o,output:a,defineOutput:s,defineSpecialNaN:u,defineSpecialInf:c,defineRound:l}}function ca(t,e,n){void 0===n&&(n="index");var r=$(e);return r.map((function(e,o){return "int "+t[o]+" = "+n+" / "+e+"; "+(o===r.length-1?"int "+t[o+1]+" = "+n+" - "+t[o]+" * "+e:"index -= "+t[o]+" * "+e)+";"})).join("")}function la(t){var e=$(t).map((function(t){return t.toString()}));return "\n int getFlatIndex(ivec3 coords) {\n return coords.x * "+e[0]+" + coords.y * "+e[1]+" + coords.z;\n }\n"}var ha="\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";function fa(t,e,n,r){var o=[];t.forEach((function(t){var e=k(t.shapeInfo.logicalShape);t.shapeInfo.isUniform?o.push("uniform float "+t.name+(e>1?"["+e+"]":"")+";"):(o.push("uniform sampler2D "+t.name+";"),o.push("uniform int offset"+t.name+";"));}));var a,i,s=o.join("\n"),u=t.map((function(t){return function(t,e,n){void 0===n&&(n=!1);var r="";r+=n?pa(t):da(t);var o=t.shapeInfo.logicalShape,a=e.logicalShape;o.length<=a.length&&(r+=n?function(t,e){var n,r=t.name,o=r.charAt(0).toUpperCase()+r.slice(1),a="get"+o+"AtOutCoords",i=t.shapeInfo.logicalShape.length,s=e.logicalShape.length,u=Co(t.shapeInfo.logicalShape,e.logicalShape),c=wa(s),l=s-i,h=["x","y","z","w","u","v"];n=0===i?"":s<2&&u.length>=1?"coords = 0;":u.map((function(t){return "coords."+h[t+l]+" = 0;"})).join("\n");var f="";f=s<2&&i>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return "coords."+h[e+l]})).join(", ");var d="return outputValue;",p=1===k(t.shapeInfo.logicalShape),v=1===k(e.logicalShape);if(1!==i||p||v){if(p&&!v)d=1===s?"\n return vec4(outputValue.x, outputValue.x, 0., 0.);\n ":"\n return vec4(outputValue.x);\n ";else if(u.length){var m=i-2,g=i-1;u.indexOf(m)>-1&&u.indexOf(g)>-1?d="return vec4(outputValue.x);":u.indexOf(m)>-1?d="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":u.indexOf(g)>-1&&(d="return vec4(outputValue.xx, outputValue.zz);");}}else d="\n return vec4(outputValue.xy, outputValue.xy);\n ";return "\n vec4 "+a+"() {\n "+c+" coords = getOutputCoords();\n "+n+"\n vec4 outputValue = get"+o+"("+f+");\n "+d+"\n }\n "}(t,e):function(t,e){var n=t.name,r=n.charAt(0).toUpperCase()+n.slice(1),o="get"+r+"AtOutCoords",a=e.texShape,i=t.shapeInfo.texShape,s=t.shapeInfo.logicalShape.length,u=e.logicalShape.length;if(!t.shapeInfo.isUniform&&s===u&&null==t.shapeInfo.flatOffset&&S(i,a))return "\n float "+o+"() {\n return sampleTexture("+n+", resultUV);\n }\n ";var c,l=wa(u),h=Co(t.shapeInfo.logicalShape,e.logicalShape),f=u-s,d=["x","y","z","w","u","v"];c=0===s?"":u<2&&h.length>=1?"coords = 0;":h.map((function(t){return "coords."+d[t+f]+" = 0;"})).join("\n");var p="";p=u<2&&s>0?"coords":t.shapeInfo.logicalShape.map((function(t,e){return "coords."+d[e+f]})).join(", ");return "\n float "+o+"() {\n "+l+" coords = getOutputCoords();\n "+c+"\n return get"+r+"("+p+");\n }\n "}(t,e));return r}(t,e,r)})).join("\n"),c=e.texShape,l=ua(),h=function(t){return "\n float sampleTexture(sampler2D textureSampler, vec2 uv) {\n return "+t.texture2D+"(textureSampler, uv).r;\n }\n "}(l),f=function(t){return t.version+"\n precision highp float;\n precision highp int;\n precision highp sampler2D;\n "+t.varyingFs+" vec2 resultUV;\n "+t.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 "+t.defineSpecialNaN+"\n "+t.defineSpecialInf+"\n "+t.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 "+va+"\n "+ma+"\n "+ga+"\n "}(l);return e.isPacked?(a=function(t,e){switch(t.length){case 0:return "\n int getOutputCoords() {\n return 0;\n }\n ";case 1:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(1===n[0])return "\n int getOutputCoords() {\n return 2 * int(resultUV.x * "+n[1]+".0);\n }\n ";if(1===n[1])return "\n int getOutputCoords() {\n return 2 * int(resultUV.y * "+n[0]+".0);\n }\n ";return "\n int getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n return 2 * (resTexRC.x * "+n[1]+" + resTexRC.y);\n }\n "}(0,e);case 2:return function(t,e){var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)];if(S(t,e))return "\n ivec2 getOutputCoords() {\n return 2 * ivec2(resultUV.yx * vec2("+n[0]+", "+n[1]+"));\n }\n ";var r=Math.ceil(t[1]/2);return "\n ivec2 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+n[0]+", "+n[1]+"));\n\n int index = resTexRC.x * "+n[1]+" + resTexRC.y;\n int r = 2 * (index / "+r+");\n int c = imod(index, "+r+") * 2;\n\n return ivec2(r, c);\n }\n "}(t,e);case 3:return n=t,r=e,o=[Math.ceil(r[0]/2),Math.ceil(r[1]/2)],a=Math.ceil(n[2]/2),i=a*Math.ceil(n[1]/2),"\n ivec3 getOutputCoords() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+o[0]+", "+o[1]+"));\n int index = resTexRC.x * "+o[1]+" + resTexRC.y;\n\n int b = index / "+i+";\n index -= b * "+i+";\n\n int r = 2 * (index / "+a+");\n int c = imod(index, "+a+") * 2;\n\n return ivec3(b, r, c);\n }\n ";default:return function(t,e){for(var n=[Math.ceil(e[0]/2),Math.ceil(e[1]/2)],r=Math.ceil(t[t.length-1]/2),o=r*Math.ceil(t[t.length-2]/2),a=o,i="",s="b, r, c",u=2;u2,(function(){return "Packed arg"+(n.charAt(0).toUpperCase()+n.slice(1))+" supports only inputs with rank above 2."}));var o=t[t.length-1],a=Math.ceil(o/e);this.outputShape=t.slice(0,-1),a>1&&this.outputShape.push(a),r||this.variableNames.push("bestIndicesA");var i,s,u=this.outputShape,c=u.length,l=wa(c),h=sa("coords",c);if(1===a){var f=wa(s=c+1);i="\n "+f+" sourceLocR = "+f+"("+h.join()+", 0);\n ++"+h[c-1]+";\n "+f+" sourceLocG = "+f+"("+h.join()+", 0);\n ++"+h[c-2]+";\n "+f+" sourceLocA = "+f+"("+h.join()+", 0);\n --"+h[c-1]+";\n "+f+" sourceLocB = "+f+"("+h.join()+", 0);\n --"+h[c-2]+";";}else s=c,i="\n "+l+" sourceLocR = coords;\n ++"+h[c-1]+";\n "+l+" sourceLocG = coords;\n ++"+h[c-2]+";\n "+l+" sourceLocA = coords;\n --"+h[c-1]+";\n "+l+" sourceLocB = coords;\n --"+h[c-2]+";";var d=["x","y","z","w","u","v"].slice(0,s),p="."+d[s-1],v=d.map((function(t){return "int "+t})),m=sa("sourceLocR",s-1).concat("inIdx.r"),g=sa("sourceLocG",s-1).concat("inIdx.g"),y=sa("sourceLocB",s-1).concat("inIdx.b"),x=sa("sourceLocA",s-1).concat("inIdx.a"),b="max"===n?"greaterThan":"lessThan",w=r?"":"\n inIdx = round(vec4(getBestIndicesAChannel("+m.join()+"),\n getBestIndicesAChannel("+g.join()+"),\n getBestIndicesAChannel("+y.join()+"),\n getBestIndicesAChannel("+x.join()+")));",E="vec4(\n getAChannel("+m.join()+"),\n hasNextCol ? getAChannel("+g.join()+") : 0.,\n hasNextRow ? getAChannel("+y.join()+") : 0.,\n hasNextRow && hasNextCol ? getAChannel("+x.join()+") : 0.)",R=r?"":"\n float getBestIndicesAChannel("+v.join()+") {\n return getChannel(getBestIndicesA("+d.join()+"),\n vec2("+d.slice(-2).join()+"));\n }";this.userCode="\n float getAChannel("+v.join()+") {\n return getChannel(getA("+d.join()+"),\n vec2("+d.slice(-2).join()+"));\n }\n "+R+"\n void main() {\n "+l+" coords = getOutputCoords();\n bool hasNextCol = "+h[c-1]+" < "+(u[c-1]-1)+";\n bool hasNextRow = "+h[c-2]+" < "+(u[c-2]-1)+";\n "+i+"\n ivec4 srcIdx = ivec4(sourceLocR"+p+", sourceLocG"+p+",\n sourceLocB"+p+", sourceLocA"+p+") * "+e+";\n ivec4 inIdx = srcIdx;\n vec4 bestIndex = vec4(inIdx);\n vec4 bestValue = "+E+";\n\n for (int i = 0; i < "+e+"; i++) {\n inIdx = srcIdx;\n "+w+"\n vec4 candidate = "+E+";\n bvec4 nan = isnan(candidate);\n bvec4 replace = bvec4(\n vec4("+b+"(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 ";},Ia=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterHeight,u=t.effectiveFilterWidth,c=s-1-t.padInfo.top,l=u-1-t.padInfo.left,h=1/(e*n);this.userCode="\n const ivec2 pads = ivec2("+c+", "+l+");\n const float avgMultiplier = float("+h+");\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 < "+s+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+u+";\n wC+= "+i+") {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.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 ";},ka=function(t){this.variableNames=["dy"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,d=l-1-t.padInfo.front,p=h-1-t.padInfo.top,v=f-1-t.padInfo.left,m=1/(e*n*r);this.userCode="\n const ivec3 pads = ivec3("+d+", "+p+", "+v+");\n const float avgMultiplier = float("+m+");\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 < "+l+";\n wD += "+s+") {\n float dyD = float(dyDCorner + wD) / "+o+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+f+";\n wC += "+c+") {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.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 ";},Sa=function(t,e,n,r,o,a){this.outputShape=[],this.variableNames=["x","mean","variance"],Ro(t,e),Ro(t,n);var i="0.0";null!=r&&(Ro(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="1.0";null!=o&&(Ro(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n float x = getXAtOutCoords();\n float mean = getMeanAtOutCoords();\n float variance = getVarianceAtOutCoords();\n float offset = "+i+";\n float scale = "+s+";\n float inv = scale * inversesqrt(variance + float("+a+"));\n setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));\n }\n ";},Aa=function(t,e,n,r,o,a){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],Ro(t,e),Ro(t,n);var i="vec4(0.0)";null!=r&&(Ro(t,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="vec4(1.0)";null!=o&&(Ro(t,o),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=t,this.userCode="\n void main() {\n vec4 offset = "+i+";\n vec4 scale = "+s+";\n\n vec4 x = getXAtOutCoords();\n vec4 mean = getMeanAtOutCoords();\n vec4 variance = getVarianceAtOutCoords();\n\n vec4 inv = scale * inversesqrt(variance + vec4("+a+"));\n\n setOutput((x - mean) * inv + offset);\n }\n ";},Da="return areal * breal - aimag * bimag;",Ta="return areal * bimag + aimag * breal;",Na=function(t,e,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=Ro(e,n),this.userCode="\n float binaryOpComplex(\n float areal, float aimag, float breal, float bimag) {\n "+t+"\n }\n\n void main() {\n float areal = getARealAtOutCoords();\n float aimag = getAImagAtOutCoords();\n float breal = getBRealAtOutCoords();\n float bimag = getBImagAtOutCoords();\n setOutput(binaryOpComplex(areal, aimag, breal, bimag));\n }\n ";},Fa="return a + b;",_a="return a - b;",Oa="return a * b;",Ma="return (a < 0.) ? b * a : a;",Ba=function(t,e,n){this.variableNames=["A","B"],this.outputShape=Ro(e,n),this.userCode="\n float binaryOperation(float a, float b) {\n "+t+"\n }\n\n void main() {\n float a = getAAtOutCoords();\n float b = getBAtOutCoords();\n setOutput(binaryOperation(a, b));\n }\n ";},Pa="\n vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));\n return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);\n",La=function(t,e,n,r){void 0===r&&(r=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Ro(e,n);var o=this.outputShape.length,a="";if(r)if(0===o||1===k(this.outputShape))a="\n result.y = 0.;\n result.z = 0.;\n result.w = 0.;\n ";else if(a="\n "+wa(o)+" coords = getOutputCoords();\n ",1===o)a+="\n result.y = (coords + 1) >= "+this.outputShape[0]+" ? 0. : result.y;\n result.z = 0.;\n result.w = 0.;\n ";else {var i=sa("coords",o);a+="\n bool nextRowOutOfBounds =\n ("+i[o-2]+" + 1) >= "+this.outputShape[o-2]+";\n bool nextColOutOfBounds =\n ("+i[o-1]+" + 1) >= "+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 "+t+"\n }\n\n void main() {\n vec4 a = getAAtOutCoords();\n vec4 b = getBAtOutCoords();\n\n vec4 result = binaryOperation(a, b);\n "+a+"\n\n setOutput(result);\n }\n ";},Wa=function(){function t(t){this.variableNames=["A"],this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\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 ";}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e);}},t}(),Ua=function(){function t(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n uniform float minVal;\n uniform float maxVal;\n\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 ";}return t.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(r,o){null==n.minLoc&&(n.minLoc=r.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=r.getUniformLocationNoThrow(o,"maxVal")),r.gl.uniform1f(n.minLoc,t),r.gl.uniform1f(n.maxLoc,e);}},t}(),Va=function(t){this.variableNames=["real","imag"],this.outputShape=t,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 ";},za=function(t){this.outputShape=[],this.outputShape=Sn(t,1),this.variableNames=t.map((function(t,e){return "T"+e}));var e=new Array(t.length-1);e[0]=t[0][1];for(var n=1;n= "+s[u-1]+") {\n return getChannel(\n getT"+u+"("+Ha(i,c,d)+"),\n vec2("+Ha(l,c,d)+"));\n }";}var p=s.length,v=s[s.length-1];f+="\n return getChannel(\n getT"+p+"("+Ha(i,c,v)+"),\n vec2("+Ha(l,c,v)+"));",this.userCode="\n float getValue("+i.map((function(t){return "int "+t}))+") {\n "+f+"\n }\n\n void main() {\n "+o+" coords = getOutputCoords();\n vec4 result = vec4(getValue("+a+"), 0., 0., 0.);\n\n "+a[r-1]+" = "+a[r-1]+" + 1;\n if ("+a[r-1]+" < "+n[r-1]+") {\n result.g = getValue("+a+");\n }\n\n "+a[r-2]+" = "+a[r-2]+" + 1;\n if ("+a[r-2]+" < "+n[r-2]+") {\n result.a = getValue("+a+");\n }\n\n "+a[r-1]+" = "+a[r-1]+" - 1;\n if ("+a[r-2]+" < "+n[r-2]+" &&\n "+a[r-1]+" < "+n[r-1]+") {\n result.b = getValue("+a+");\n }\n setOutput(result);\n }\n ";};function Ha(t,e,n){var r=t.indexOf(e);return t.map((function(t,e){return e===r?t+" - "+n:t})).join()}var qa=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a="channelsLast"===t.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 < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n if ("+a+") {\n float dyValue = getDy(b, yR, yC, d2);\n float xValue = getX(b, xR, xC, d1);\n dotProd += (xValue * dyValue);\n } else {\n float dyValue = getDy(b, d2, yR, yC);\n float xValue = getX(b, d1, xR, xC);\n dotProd += (xValue * dyValue);\n }\n\n }\n }\n }\n setOutput(dotProd);\n }\n ";},Ka=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a="channelsLast"===t.dataFormat,i=e-1-t.padInfo.top,s=n-1-t.padInfo.left,u=a?1:2,c=a?2:3,l=a?3:1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d1 = coords["+l+"];\n\n ivec2 dyCorner = ivec2(coords["+u+"], coords["+c+"]) - 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 < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.outChannels+"; d2++) {\n\n if ("+a+") {\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 ";},ja=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.padInfo.front,a=t.padInfo.top,i=t.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 < "+t.batchSize+"; b++) {\n for (int yF = 0; yF < "+t.outDepth+"; yF++) {\n int xF = wF + yF * "+e+" - "+o+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+n+" - "+a+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+r+" - "+i+";\n\n if (xC < 0 || xC >= "+t.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 ";},Xa=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterDepth,n=t.filterHeight,r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=e-1-t.padInfo.front,u=n-1-t.padInfo.top,c=r-1-t.padInfo.left;this.userCode="\n const ivec3 pads = ivec3("+s+", "+u+", "+c+");\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 < "+e+"; wF++) {\n float dyF = float(dyFCorner + wF) / "+o+".0;\n\n if (dyF < 0.0 || dyF >= "+t.outDepth+".0 || fract(dyF) > 0.0) {\n continue;\n }\n int idyF = int(dyF);\n\n int wFPerm = "+e+" - 1 - wF;\n\n for (int wR = 0; wR < "+n+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+a+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+n+" - 1 - wR;\n\n for (int wC = 0; wC < "+r+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+i+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+r+" - 1 - wC;\n\n for (int d2 = 0; d2 < "+t.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 ";},Ya=function(t){this.variableNames=["x","dy"],this.outputShape=t.filterShape;var e=t.strideHeight,n=t.strideWidth,r=t.padInfo.top,o=t.padInfo.left,a=t.outChannels/t.inChannels;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 dm = coords.w;\n int d2 = d1 * "+a+" + dm;\n\n float dotProd = 0.0;\n\n // TO DO: Vec4 over the batch size\n for (int b = 0; b < "+t.batchSize+"; b++) {\n for (int yR = 0; yR < "+t.outHeight+"; yR++) {\n int xR = wR + yR * "+e+" - "+r+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int yC = 0; yC < "+t.outWidth+"; yC++) {\n int xC = wC + yC * "+n+" - "+o+";\n\n if (xC < 0 || xC >= "+t.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 ";},$a=function(t){this.variableNames=["dy","W"],this.outputShape=t.inShape;var e=t.filterHeight,n=t.filterWidth,r=t.strideHeight,o=t.strideWidth,a=e-1-t.padInfo.top,i=n-1-t.padInfo.left,s=t.outChannels/t.inChannels;this.userCode="\n const ivec2 pads = ivec2("+a+", "+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 < "+e+"; wR++) {\n float dyR = float(dyRCorner + wR) / "+r+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n int wRPerm = "+e+" - 1 - wR;\n\n for (int wC = 0; wC < "+n+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+o+".0;\n\n if (dyC < 0.0 || dyC >= "+t.outWidth+".0 ||\n fract(dyC) > 0.0) {\n continue;\n }\n int idyC = int(dyC);\n\n int wCPerm = "+n+" - 1 - wC;\n\n // TO DO: Vec4 over the channelMul\n for (int dm = 0; dm < "+s+"; dm++) {\n int d2 = d1 * "+s+" + 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 ";},Qa=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.padInfo.top,a=t.padInfo.left,i=t.strideHeight,s=t.strideWidth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterHeight,h=t.filterWidth,f=4*Math.floor(t.inChannels/4),d=t.inChannels%4,p="channelsLast"===t.dataFormat,v=p?1:2,m=p?2:3,g=p?3:1,y="",x="";n&&(y=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",x="result = activation(result);");var b=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+y+"\n\n const ivec2 strides = ivec2("+i+", "+s+");\n const ivec2 pads = ivec2("+o+", "+a+");\n\n void main() {\n ivec4 coords = getOutputCoords();\n int batch = coords[0];\n int d2 = coords["+g+"];\n\n ivec2 xRCCorner =\n ivec2(coords["+v+"], coords["+m+"]) * 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 < "+l+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+h+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+f+"; 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 ("+p+") {\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 ("+(1===d)+") {\n\n if ("+p+") {\n dotProd +=\n getX(batch, xR, xC, "+f+") *\n getW(wR, wC, "+f+", d2);\n } else {\n dotProd +=\n getX(batch, "+f+", xR, xC) *\n getW(wR, wC, "+f+", d2);\n }\n\n } else if ("+(2===d)+") {\n vec2 wValues = vec2(\n getW(wR, wC, "+f+", d2),\n getW(wR, wC, "+f+" + 1, d2)\n );\n\n if ("+p+") {\n vec2 xValues = vec2(\n getX(batch, xR, xC, "+f+"),\n getX(batch, xR, xC, "+f+" + 1)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec2 xValues = vec2(\n getX(batch, "+f+", xR, xC),\n getX(batch, "+f+" + 1, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n } else if ("+(3===d)+") {\n vec3 wValues = vec3(\n getW(wR, wC, "+f+", d2),\n getW(wR, wC, "+f+" + 1, d2),\n getW(wR, wC, "+f+" + 2, d2)\n );\n\n if ("+p+") {\n vec3 xValues = vec3(\n getX(batch, xR, xC, "+f+"),\n getX(batch, xR, xC, "+f+" + 1),\n getX(batch, xR, xC, "+f+" + 2)\n );\n dotProd += dot(xValues, wValues);\n } else {\n vec3 xValues = vec3(\n getX(batch, "+f+", xR, xC),\n getX(batch, "+f+" + 1, xR, xC),\n getX(batch, "+f+" + 2, xR, xC)\n );\n dotProd += dot(xValues, wValues);\n }\n\n }\n }\n }\n\n float result = dotProd;\n "+b+"\n "+x+"\n setOutput(result);\n }\n ";},Ja=function(t){this.variableNames=["x","W"],this.outputShape=t.outShape;var e=t.padInfo.front,n=t.padInfo.top,r=t.padInfo.left,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.filterDepth,h=t.filterHeight,f=t.filterWidth,d=4*Math.floor(t.inChannels/4),p=t.inChannels%4;this.userCode="\n const ivec3 strides = ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+e+", "+n+", "+r+");\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 < "+l+"; wF++) {\n int xF = xFCorner + wF * "+s+";\n\n if (xF < 0 || xF >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+"; wR++) {\n int xR = xRCorner + wR * "+u+";\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+f+"; wC++) {\n int xC = xCCorner + wC * "+c+";\n\n if (xC < 0 || xC >= "+t.inWidth+") {\n continue;\n }\n\n for (int d1 = 0; d1 < "+d+"; 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 ("+(1===p)+") {\n dotProd +=\n getX(batch, xF, xR, xC, "+d+") *\n getW(wF, wR, wC, "+d+", d2);\n } else if ("+(2===p)+") {\n vec2 xValues = vec2(\n getX(batch, xF, xR, xC, "+d+"),\n getX(batch, xF, xR, xC, "+d+" + 1)\n );\n vec2 wValues = vec2(\n getW(wF, wR, wC, "+d+", d2),\n getW(wF, wR, wC, "+d+" + 1, d2)\n );\n dotProd += dot(xValues, wValues);\n } else if ("+(3===p)+") {\n vec3 xValues = vec3(\n getX(batch, xF, xR, xC, "+d+"),\n getX(batch, xF, xR, xC, "+d+" + 1),\n getX(batch, xF, xR, xC, "+d+" + 2)\n );\n vec3 wValues = vec3(\n getW(wF, wR, wC, "+d+", d2),\n getW(wF, wR, wC, "+d+" + 1, d2),\n getW(wF, wR, wC, "+d+" + 2, d2)\n );\n dotProd += dot(xValues, wValues);\n }\n }\n }\n }\n setOutput(dotProd);\n }\n ";},Za=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.outputShape=t.outShape;var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=t.outChannels/t.inChannels,v="",m="";n&&(v=r?"float activation(float a) {\n float b = getPreluActivationWeightsAtOutCoords();\n "+n+"\n }":"\n float activation(float x) {\n "+n+"\n }\n ",m="result = activation(result);");var g=e?"result += getBiasAtOutCoords();":"";e&&this.variableNames.push("bias"),r&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+v+"\n\n const ivec2 strides = ivec2("+u+", "+c+");\n const ivec2 pads = ivec2("+i+", "+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 / "+p+";\n int q = d2 - d1 * "+p+";\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 < "+f+"; wR++) {\n int xR = xRCorner + wR * "+l+";\n\n if (xR < 0 || xR >= "+o+") {\n continue;\n }\n\n for (int wC = 0; wC < "+d+"; wC++) {\n int xC = xCCorner + wC * "+h+";\n\n if (xC < 0 || xC >= "+a+") {\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 "+g+"\n "+m+"\n setOutput(result);\n }\n ";},ti=function(t,e,n,r){void 0===e&&(e=!1),void 0===n&&(n=null),void 0===r&&(r=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.outShape;for(var o=t.inHeight,a=t.inWidth,i=t.padInfo.top,s=t.padInfo.left,u=t.strideHeight,c=t.strideWidth,l=t.dilationHeight,h=t.dilationWidth,f=t.filterHeight,d=t.filterWidth,p=d,v="int xR; int xC; int xCOffset;",m=0;m= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = 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 >= "+a+") {\n xTexelR"+m+"C"+g+".zw = vec2(0.);\n }\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + 1 - 2;\n if(xR >= 0 && xR < "+o+" && xCOffset >= 0 && xCOffset < "+a+") {\n vec4 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 >= "+a+") {\n previous.zw = vec2(0.);\n }\n\n xR"+m+"C"+g+" = vec4(previous.zw, xTexelR"+m+"C"+g+".xy);\n } else {\n xR"+m+"C"+g+" = vec4(0, 0, xTexelR"+m+"C"+g+".xy);\n }\n ":"\n if(xR >= 0 && xR < "+o+" && xC >= 0 && xC < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = xTexelR"+m+"C"+g+";\n ",g+1= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n ",h>1&&(v+="\n xCOffset -= 2;\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n "),v+="\n xR"+m+"C"+(g+1)+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".xy);\n "):v+="\n xCOffset = xC + "+x+";\n\n if(xR >= 0 && xR < "+o+" &&\n xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n }\n\n xR"+m+"C"+(g+1)+" = xTexelR"+m+"C"+(g+2)+";\n ";}}else g= 0 && xR < "+o+") {\n ",s%2==1?(v+="\n xCOffset = xC + 1 - "+c+";\n if(xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n if(xC + 1 >= 0 && xC + 1 < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xC + 1, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+".zw);\n ",g+1= 0 && xCOffset < "+a+") {\n final = getX(batch, xR, xCOffset, d1);\n }\n xR"+m+"C"+(g+1)+" = vec4(xTexelR"+m+"C"+(g+2)+".xy, final.xy);\n ")):(v+="\n if(xC >= 0 && xC < "+a+") {\n xTexelR"+m+"C"+g+" = getX(batch, xR, xC, d1);\n } else {\n xTexelR"+m+"C"+g+" = vec4(0.);\n }\n\n xCOffset = xC + "+c+";\n if(xCOffset >= 0 && xCOffset < "+a+") {\n xTexelR"+m+"C"+(g+2)+" = getX(batch, xR, xCOffset, d1);\n } else {\n xTexelR"+m+"C"+(g+2)+" = vec4(0.);\n }\n\n xR"+m+"C"+g+" = vec4(\n xTexelR"+m+"C"+g+".xy, xTexelR"+m+"C"+(g+2)+".xy);\n ",g+11?[""+(i-1)/(l-1),"(y2-y1) * height_ratio","y1*"+p+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+p],g=m[0],y=m[1],x=m[2],b=h>1?[""+(s-1)/(h-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],w=b[0],C=b[1],E=b[2];this.userCode="\n const float height_ratio = float("+g+");\n const float width_ratio = float("+w+");\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 >= "+a+") {\n return;\n }\n\n float height_scale = "+y+";\n float width_scale = "+C+";\n\n float in_y = "+x+";\n if( in_y < 0.0 || in_y > "+p+" ) {\n setOutput(float("+o+"));\n return;\n }\n float in_x = "+E+";\n if( in_x < 0.0 || in_x > "+v+" ) {\n setOutput(float("+o+"));\n return;\n }\n\n vec2 sourceFracIndexCR = vec2(in_x,in_y);\n if("+f+" == 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 ";},ni=function(t,e,n){this.variableNames=["x"],this.outputShape=t;var r=t.length,o=t[t.length-1],a=n?"<":">";this.userCode="\n int getIndex(int i) {\n "+(n?"return "+o+" -i - 1;":"return i;")+"\n }\n\n void main() {\n "+wa(r)+" coords = getOutputCoords();\n int end = "+ri(r,"coords")+";\n float val = 0.0;\n for (int i = "+o+" - 1; i >= 0; i -= 1) {\n int idx = getIndex(i);\n if (idx "+a+" end) {\n continue;\n }\n if (idx == end && "+e+") {\n continue;\n }\n "+ri(r,"coords")+" = idx;\n val += getX("+function(t,e){if(1===t)return ""+e;if(2===t)return e+".x, "+e+".y";if(3===t)return e+".x, "+e+".y, "+e+".z";if(4===t)return e+".x, "+e+".y, "+e+".z, "+e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}(r,"coords")+");\n }\n setOutput(val);\n }\n ";};function ri(t,e){if(1===t)return ""+e;if(2===t)return e+".y";if(3===t)return e+".z";if(4===t)return e+".w";throw Error("Cumulative sum for rank "+t+" is not yet supported")}var oi=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=ua();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+ca(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getA(rc.x, rc.y, rc.z);\n }\n\n "+n.output+" = result;\n }\n ";},ai=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Vt.DENSE;var e=Yt(t),n=ua();this.outputShape=t,this.userCode="\n ivec3 outCoordsFromFlatIndex(int index) {\n "+ca(["r","c","d"],t)+"\n return ivec3(r, c, d);\n }\n\n void main() {\n ivec2 resTexRC = ivec2(resultUV.yx *\n vec2("+e[0]+", "+e[1]+"));\n int index = 4 * (resTexRC.x * "+e[1]+" + resTexRC.y);\n\n vec4 result = vec4(0.);\n\n for (int i=0; i<4; i++) {\n int flatIndex = index + i;\n ivec3 rc = outCoordsFromFlatIndex(flatIndex);\n result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));\n }\n\n "+n.output+" = result;\n }\n ";},ii=function(){function t(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode="\n void main() {\n ivec4 coords = getOutputCoords();\n int b = coords[0];\n int h = "+this.getHeightCoordString()+";\n int w = "+this.getWidthCoordString()+";\n int d = "+this.getDepthCoordString()+";\n\n int in_h = h / "+e+";\n int offset_h = imod(h, "+e+");\n int in_w = w / "+e+";\n int offset_w = imod(w, "+e+");\n int offset_d = (offset_h * "+e+" + offset_w) *\n "+this.getOutputDepthSize()+";\n int in_d = d + offset_d;\n\n float result = "+this.getInputSamplingString()+";\n setOutput(result);\n }\n ";}return t.prototype.getHeightCoordString=function(){return "NHWC"===this.dataFormat?"coords[1]":"coords[2]"},t.prototype.getWidthCoordString=function(){return "NHWC"===this.dataFormat?"coords[2]":"coords[3]"},t.prototype.getDepthCoordString=function(){return "NHWC"===this.dataFormat?"coords[3]":"coords[1]"},t.prototype.getOutputDepthSize=function(){return "NHWC"===this.dataFormat?this.outputShape[3]:this.outputShape[1]},t.prototype.getInputSamplingString=function(){return "NHWC"===this.dataFormat?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},t}(),si=function(t){this.variableNames=["X"],this.outputShape=[t,t],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 ";},ui=function(t){this.variableNames=["A"],this.outTexUsage=zt.DOWNLOAD;var e=ua();this.outputShape=t,this.userCode="\n "+ha+"\n\n void main() {\n float x = getAAtOutCoords();\n "+e.output+" = encode_float(x);\n }\n ";},ci=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=zt.DOWNLOAD;var e=ua();this.outputShape=t,this.userCode="\n "+ha+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));\n "+e.output+" = encode_float(x);\n }\n ";},li=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"];var r=ua(),o=e[0],a=e[1];this.outputShape=t;var i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode="\n "+la(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n int flatIndex = getFlatIndex(coords);\n int offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n \n int r = flatIndex / "+a+";\n int c = imod(flatIndex, "+a+");\n vec2 uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n vec4 values = "+r.texture2D+"(A, uv);\n\n float result;\n\n if(offset == 0) {\n result = values[0];\n } else if(offset == 1) {\n result = values[1];\n } else if(offset == 2) {\n result = values[2];\n } else {\n result = values[3];\n }\n\n "+r.output+" = vec4("+i+", 0., 0., 0.);\n }\n ";},hi=function(t,e,n){void 0===n&&(n=!1),this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var r=ua(),o=e[0],a=e[1];this.outputShape=t;var i="",s="result";n&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;i+="\n localCoords = coords;\n if(localCoords[2] + "+c+" < "+t[2]+") {\n localCoords[2] += "+c+";\n if(localCoords[1] + "+u+" < "+t[1]+") {\n localCoords[1] += "+u+";\n\n flatIndex = getFlatIndex(localCoords);\n offset = imod(flatIndex, 4);\n\n flatIndex = idiv(flatIndex, 4, 1.);\n\n r = flatIndex / "+a+";\n c = imod(flatIndex, "+a+");\n uv = (vec2(c, r) + halfCR) / vec2("+a+".0, "+o+".0);\n values = "+r.texture2D+"(A, uv);\n\n if(offset == 0) {\n result["+l+"] = values[0];\n } else if(offset == 1) {\n result["+l+"] = values[1];\n } else if(offset == 2) {\n result["+l+"] = values[2];\n } else {\n result["+l+"] = values[3];\n }\n }\n }\n ";}this.userCode="\n "+la(t)+"\n\n void main() {\n ivec3 coords = getOutputCoords();\n\n vec4 result = vec4(0.);\n int flatIndex, r, c, offset;\n ivec3 localCoords;\n vec2 uv;\n vec4 values;\n\n "+i+"\n\n "+r.output+" = "+s+";\n }\n ";},fi="return real * expR - imag * expI;",di="return real * expI + imag * expR;",pi=function(t,e,n){this.variableNames=["real","imag"];var r=e[1];this.outputShape=e;var o=n?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,a=n?r+".0":"1.0";this.userCode="\n const float exponentMultiplier = "+o+";\n\n float unaryOpComplex(float real, float expR, float imag, float expI) {\n "+t+"\n }\n\n float mulMatDFT(int batch, int index) {\n float indexRatio = float(index) / float("+r+");\n float exponentMultiplierTimesIndexRatio =\n exponentMultiplier * indexRatio;\n\n float result = 0.0;\n\n for (int i = 0; i < "+r+"; 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) / "+a+";\n }\n\n return result;\n }\n\n void main() {\n ivec2 coords = getOutputCoords();\n setOutput(mulMatDFT(coords[0], coords[1]));\n }\n ";},vi=function(){function t(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode="\n uniform float value;\n void main() {\n // Input can be obtained from uniform value.\n setOutput(value);\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.valueLoc&&(e.valueLoc=n.getUniformLocationNoThrow(r,"value")),n.gl.uniform1f(e.valueLoc,t);}},t}(),mi=function(t,e,n){this.variableNames=["A","indices"];var r=t.slice();r[n]=e,this.outputShape=r,this.rank=r.length;var o=wa(this.rank),a=function(t,e){var n=t.length;if(n>4)throw Error("Gather for rank "+n+" is not yet supported");if(1===n)return "int(getIndices(resRC))";for(var r=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],a=0;a1?"strides[j]":"strides";this.userCode="\n "+r+" strides = "+r+"("+this.strides+");\n void main() {\n "+o+" coords = getOutputCoords();\n int flattenIndex = 0;\n for (int j = 0; j < "+this.sliceDim+"; j++) {\n int index = round(getIndices(coords[0], j));\n flattenIndex += index * "+a+";\n }\n setOutput(getX(flattenIndex, coords[1]));\n }\n ";};function yi(t,e){var n=ua();return oe(t,e,n.version+"\n precision highp float;\n "+n.attribute+" vec3 clipSpacePos;\n "+n.attribute+" vec2 uv;\n "+n.varyingVs+" vec2 resultUV;\n\n void main() {\n gl_Position = vec4(clipSpacePos, 1);\n resultUV = uv;\n }")}function xi(t,e){return fe(t,e,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function bi(t,e){return de(t,e,new Uint16Array([0,1,2,2,1,3]))}function wi(t,e,n,r,o,a,i){ve(n,r);var s=pe(t,e),u=t.TEXTURE_2D;return Jt(t,e,(function(){return t.bindTexture(u,s)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MIN_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texParameteri(u,t.TEXTURE_MAG_FILTER,t.NEAREST)})),Jt(t,e,(function(){return t.texImage2D(u,0,o,n,r,0,a,i,null)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)})),s}function Ci(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],o.internalFormatFloat,o.textureFormatFloat,t.FLOAT)}function Ei(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],o.internalFormatHalfFloat,o.textureFormatFloat,o.textureTypeHalfFloat)}function Ri(t,e,n,r,o){var a=Xt(n,r);return wi(t,e,a[0],a[1],t.RGBA,t.RGBA,t.UNSIGNED_BYTE)}function Ii(t,e,n,r,o){var a=$t(n,r);return wi(t,e,a[0],a[1],o.internalFormatPackedFloat,t.RGBA,t.FLOAT)}function ki(t,e,n,r,o){var a=$t(n,r);return wi(t,e,a[0],a[1],o.internalFormatPackedHalfFloat,t.RGBA,o.textureTypeHalfFloat)}function Si(t,e,n,r){return Jt(t,e,(function(){return t.bindBuffer(t.ARRAY_BUFFER,r)})),ge(t,e,n,"clipSpacePos",r,3,20,0)&&ge(t,e,n,"uv",r,2,20,12)}function Ai(t,e,n,r,o,a,i){var s,u,c;Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),a instanceof Uint8Array?(s=new Uint8Array(r*o*4),u=t.UNSIGNED_BYTE,c=t.RGBA):(s=new Float32Array(r*o*4),u=t.FLOAT,c=i.internalFormatPackedFloat),s.set(a),Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,c,r,o,0,t.RGBA,u,s)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}));}function Di(t,e,n,r){Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,n)})),r.data instanceof Uint8Array?Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,r.width,r.height,0,t.RGBA,t.UNSIGNED_BYTE,r.data)})):Jt(t,e,(function(){return t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)})),Jt(t,e,(function(){return t.bindTexture(t.TEXTURE_2D,null)}));}function Ti(t,e,n,r,o){var a=t.createBuffer();Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,a)}));var i=16*n*r;return Jt(t,e,(function(){return t.bufferData(t.PIXEL_PACK_BUFFER,i,t.STREAM_READ)})),Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,0)})),Jt(t,e,(function(){return t.bindBuffer(t.PIXEL_PACK_BUFFER,null)})),a}function Ni(t,e,n){var r=t,o=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,e),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,o),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),o}function Fi(t,e,n,r,o){var a=Xt(n,r),i=a[0],s=a[1],u=new Uint8Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,i,s,o.downloadTextureFormat,t.UNSIGNED_BYTE,u)})),new Float32Array(u.buffer)}function _i(t,e,n,r,o,a,i,s){var u=t,c=new Float32Array(function(t,e){var n=$t(t,e);return n[0]*n[1]*4}(a,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,e),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function Oi(t,e,n,r){var o=new Float32Array(n*r*4);return Jt(t,e,(function(){return t.readPixels(0,0,r,n,t.RGBA,t.FLOAT,o)})),o}var Mi=Object.freeze({createVertexShader:yi,createVertexBuffer:xi,createIndexBuffer:bi,createFloat32MatrixTexture:Ci,createFloat16MatrixTexture:Ei,createUnsignedBytesMatrixTexture:Ri,createPackedMatrixTexture:Ii,createFloat16PackedMatrixTexture:ki,bindVertexProgramAttributeStreams:Si,uploadDenseMatrixToTexture:Ai,uploadPixelDataToTexture:Di,createBufferFromOutputTexture:Ti,downloadFloat32MatrixFromBuffer:Ni,downloadByteEncodedFloatMatrixFromOutputTexture:Fi,downloadPackedMatrixFromBuffer:_i,downloadMatrixFromPackedOutputTexture:Oi}),Bi=function(){function t(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=i().getNumber("WEBGL_VERSION");null!=t?(this.gl=t,Kt(e,t)):this.gl=jt(e);var n="WEBGL_color_buffer_float";if(1===i().getNumber("WEBGL_VERSION")){if(this.textureFloatExtension=re(this.gl,this.debug,"OES_texture_float"),Pe(this.gl,"OES_texture_half_float"))this.textureHalfFloatExtension=re(this.gl,this.debug,"OES_texture_half_float");else if(i().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Pe(this.gl,"EXT_color_buffer_half_float"))this.colorBufferHalfFloatExtension=re(this.gl,this.debug,"EXT_color_buffer_half_float");else if(i().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Pe(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else {if(!Pe(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float");}this.vertexBuffer=xi(this.gl,this.debug),this.indexBuffer=bi(this.gl,this.debug),this.framebuffer=me(this.gl,this.debug),this.textureConfig=Qt(this.gl,this.textureHalfFloatExtension);}return Object.defineProperty(t.prototype,"debug",{get:function(){return i().getBool("DEBUG")},enumerable:!0,configurable:!0}),t.prototype.dispose=function(){var t=this;if(!this.disposed){null!=this.program&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),null!=this.outputTexture&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;Jt(e,this.debug,(function(){return e.finish()})),Jt(e,this.debug,(function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteFramebuffer(t.framebuffer)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)})),Jt(e,this.debug,(function(){return e.deleteBuffer(t.indexBuffer)})),this.disposed=!0;}},t.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),Ci(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),Ei(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),Ri(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),Di(this.gl,this.debug,t,e);},t.prototype.uploadDenseMatrixToTexture=function(t,e,n,r){this.throwIfDisposed(),Ai(this.gl,this.debug,t,e,n,r,this.textureConfig);},t.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),ki(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Ii(this.gl,this.debug,t,e,this.textureConfig)},t.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(Ee(this.gl,this.debug,this.framebuffer),this.outputTexture=null),Jt(this.gl,this.debug,(function(){return e.gl.deleteTexture(t)}));},t.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Fi(r.gl,r.debug,e,n,r.textureConfig)}))},t.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,r,o,a){return _i(this.gl,t,0,0,0,o,a,this.textureConfig)},t.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return Ni(this.gl,t,e)},t.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var r=Ti(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r},t.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},t.prototype.createFence=function(t){var e,n,r=this;if(i().getBool("WEBGL_FENCE_API_ENABLED")){var o=t,a=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var t=o.clientWaitSync(a,0,0);return t===o.ALREADY_SIGNALED||t===o.CONDITION_SATISFIED},e=a;}else i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return r.isQueryAvailable(e,i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return !0};return {query:e,isFencePassed:n}},t.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var r=this;return this.downloadMatrixDriver(t,(function(){return Oi(r.gl,r.debug,e,n)}))},t.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=ae(e,this.debug,t),r=yi(e,this.debug),o=ce(e,this.debug);return Jt(e,this.debug,(function(){return e.attachShader(o,r)})),Jt(e,this.debug,(function(){return e.attachShader(o,n)})),le(e,this.debug,o),this.debug&&he(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=Si(e,this.debug,this.program,this.vertexBuffer)),o},t.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),null!=t&&Jt(this.gl,this.debug,(function(){return e.gl.deleteProgram(t)}));},t.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,null!=this.program&&this.debug&&he(this.gl,this.debug,this.program),Jt(this.gl,this.debug,(function(){return e.gl.useProgram(t)}));},t.prototype.getUniformLocation=function(t,e,n){return void 0===n&&(n=!0),this.throwIfDisposed(),n?xe(this.gl,this.debug,t,e):be(this.gl,t,e)},t.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return n.gl.getAttribLocation(t,e)}))},t.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},t.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),we(this.gl,this.debug,this.program,t,e,n);},t.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e);},t.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var r=$t(e,n),o=r[0],a=r[1];this.setOutputMatrixTextureDriver(t,o,a);},t.prototype.setOutputMatrixWriteRegion=function(t,e,n,r){this.setOutputMatrixWriteRegionDriver(n,t,r,e);},t.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},t.prototype.debugValidate=function(){null!=this.program&&he(this.gl,this.debug,this.program),Re(this.gl);},t.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),Jt(t,this.debug,(function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)}));},t.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return t.gl.finish()}));},t.prototype.getQueryTimerExtension=function(){return null==this.disjointQueryTimerExtension&&(this.disjointQueryTimerExtension=re(this.gl,this.debug,2===i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},t.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},t.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},t.prototype.beginQuery=function(){if(2===i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var r=this.getQueryTimerExtensionWebGL1(),o=r.createQueryEXT();return r.beginQueryEXT(r.TIME_ELAPSED_EXT,o),o},t.prototype.endQuery=function(){if(2!==i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT);}else {var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT);}},t.prototype.waitForQueryAndGetTime=function(t){return n(this,void 0,void 0,(function(){var e=this;return r(this,(function(n){switch(n.label){case 0:return [4,F((function(){return e.disposed||e.isQueryAvailable(t,i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}))];case 1:return n.sent(),[2,this.getQueryTime(t,i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}}))}))},t.prototype.getQueryTime=function(t,e){if(0===e)return null;if(2===e){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var r=this.getQueryTimerExtensionWebGL1();return r.getQueryObjectEXT(t,r.QUERY_RESULT_EXT)/1e6},t.prototype.isQueryAvailable=function(t,e){if(0===e)return !0;if(2===e){var n=this.gl,r=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint}o=(r=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,r.QUERY_RESULT_AVAILABLE_EXT);return null==this.disjoint&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),o&&!this.disjoint},t.prototype.pollFence=function(t){var e=this;return new Promise((function(n){e.addItemToPoll((function(){return t.isFencePassed()}),(function(){return n()}));}))},t.prototype.pollItems=function(){for(var t=function(t){for(var e=0;e1||F((function(){return n.pollItems(),0===n.itemsToPoll.length}));},t.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),Ce(this.gl,this.debug,t,this.framebuffer),this.debug&&Re(this.gl);},t.prototype.unbindTextureToFrameBuffer=function(){null!=this.outputTexture?(Ce(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&Re(this.gl)):Ee(this.gl,this.debug,this.framebuffer);},t.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},t.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var r=this.gl;Ce(r,this.debug,t,this.framebuffer),this.debug&&Re(r),this.outputTexture=t,Jt(r,this.debug,(function(){return r.viewport(0,0,e,n)})),Jt(r,this.debug,(function(){return r.scissor(0,0,e,n)}));},t.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,r){var o=this;this.throwIfDisposed(),Jt(this.gl,this.debug,(function(){return o.gl.scissor(t,e,n,r)}));},t.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},t.prototype.throwIfNoProgram=function(){if(null==this.program)throw new Error("No GPU program is currently set.")},t}();function Pi(t,e){if(t.length!==e.length)throw Error("Binary was compiled with "+t.length+" inputs, but was executed with "+e.length+" inputs");t.forEach((function(t,n){var r=t.logicalShape,o=e[n],a=o.shape;if(!S(r,a))throw Error("Binary was compiled with different shapes than the current args. Shapes "+r+" and "+a+" must match");if(!t.isUniform||!o.isUniform){var i=t.texShape,s=o.isUniform?null:o.texData.texShape;if(!S(i,s))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+i+" and "+s+" must match")}}));}var Li=function(t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var r=n.filterWidth,o=n.inChannels,a=n.strideWidth,i=n.strideHeight,s=n.padInfo,u=n.outWidth,c=n.dilationWidth,l=n.dilationHeight,h=n.dataFormat,f=s.left,d=s.top,p=o*r,v=ua(),m="channelsLast"===h,g=m?0:1,y=m?1:2,x="",b=0;b<=1;b++)for(var w=0;w<=1;w++)x+="\n blockIndex = rc.y + "+w+";\n pos = rc.x + "+b+";\n\n if(blockIndex < "+t[1]+" && pos < "+t[0]+") {\n offsetY = int(blockIndex / ("+u+")) * "+i+" - "+d+";\n d0 = offsetY + "+l+" * (pos / "+p+");\n\n if(d0 < "+e[g]+" && d0 >= 0) {\n\n offsetX = int(mod(float(blockIndex), "+u+".) * "+a+". - "+f+".);\n d1 = offsetX + "+c+" * (int(mod(float(pos), "+p+".) / "+o+".));\n\n if(d1 < "+e[y]+" && d1 >= 0) {\n\n ch = int(mod(float(pos), "+o+".));\n\n if ("+m+") {\n innerDims = vec2(d1, ch);\n result["+(2*b+w)+"] = getChannel(\n getA(d0, int(innerDims.x),\n int(innerDims.y)), innerDims);\n } else {\n innerDims = vec2(d0, d1);\n result["+(2*b+w)+"] = getChannel(\n getA(ch, int(innerDims.x),\n int(innerDims.y)), innerDims);\n }\n }\n }\n }\n ";this.userCode="\n void main() {\n ivec2 rc = getOutputCoords();\n\n vec4 result = vec4(0);\n\n int blockIndex, pos, offsetY, d0, offsetX, d1, ch;\n vec2 innerDims;\n\n "+x+"\n\n "+v.output+" = result;\n }\n ";},Wi=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[];var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",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 = -"+i+"; j <= "+i+"; j++) {\n int idx = d + j;\n if (idx >= 0 && idx <= "+s+") {\n float z = getX(b, r, c, idx);\n sum += z * z;\n }\n }\n float val = x * "+a+";\n setOutput(val);\n }\n ";},Ui=function(t,e,n,r,o){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=t,this.depth=t[3],this.depthRadius=e,this.bias=n,this.alpha=r,this.beta=o,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 < "+this.depth+"; ++d) {\n int depthBegin = int(max(0.0, float(d - "+e+")));\n int depthEnd = int(min(float("+this.depth+"),\n float(d + "+e+" + 1)));\n\n const int MIN_DEPTH_BEGIN = 0;\n const int MAX_DEPTH_END = "+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("+r+") * norm + float("+n+");\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("+r+")\n * float("+o+")\n * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)\n / norm;\n if (k == d) {\n dyi += pow(norm, -1.0 * "+o+");\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 ";},Vi=function(t,e,n,r,o){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var a,i=e,s=t[3]-1;this.outputShape=t;var u="float("+n+") + float("+r+") * sum";a=.5===o?"inversesqrt("+u+")":1===o?"1.0/("+u+")":"exp(log("+u+") * float(-"+o+"));",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 < "+this.outputShape[3]+";\n bool hasNextRow = c < "+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 - "+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 = - "+i+"; j <= "+i+"; j++) {\n ivec2 idx = depth + j;\n bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));\n bvec2 belowUpperBound = lessThanEqual(idx, ivec2("+s+"));\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 * "+a+";\n setOutput(result);\n }\n ";},zi=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideHeight,n=t.strideWidth,r=t.dilationHeight,o=t.effectiveFilterHeight,a=t.effectiveFilterWidth,i=o-1-t.padInfo.top,s=a-1-t.padInfo.left,u=o*a-1;this.userCode="\n const ivec2 pads = ivec2("+i+", "+s+");\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 < "+o+";\n wR += "+r+") {\n float dyR = float(dyRCorner + wR) / "+e+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 || fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+a+"; wC++) {\n float dyC = float(dyCCorner + wC) / "+n+".0;\n\n if (dyC < 0.0 || dyC >= "+t.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 = "+u+" - 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 * "+a+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n setOutput(dotProd);\n }\n ";},Gi=function(t){this.variableNames=["dy","maxPos"],this.outputShape=t.inShape;var e=t.strideDepth,n=t.strideHeight,r=t.strideWidth,o=t.dilationDepth,a=t.dilationHeight,i=t.dilationWidth,s=t.effectiveFilterDepth,u=t.effectiveFilterHeight,c=t.effectiveFilterWidth,l=s-1-t.padInfo.front,h=u-1-t.padInfo.top,f=c-1-t.padInfo.left,d=s*u*c-1;this.userCode="\n const ivec3 pads = ivec3("+l+", "+h+", "+f+");\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 < "+s+";\n wD += "+o+") {\n float dyD = float(dyDCorner + wD) / "+e+".0;\n\n if (dyD < 0.0 || dyD >= "+t.outDepth+".0 || fract(dyD) > 0.0) {\n continue;\n }\n int idyD = int(dyD);\n\n for (int wR = 0; wR < "+u+";\n wR += "+a+") {\n float dyR = float(dyRCorner + wR) / "+n+".0;\n\n if (dyR < 0.0 || dyR >= "+t.outHeight+".0 ||\n fract(dyR) > 0.0) {\n continue;\n }\n int idyR = int(dyR);\n\n for (int wC = 0; wC < "+c+";\n wC += "+i+") {\n float dyC = float(dyCCorner + wC) / "+r+".0;\n\n if (dyC < 0.0 || dyC >= "+t.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 = "+d+" -\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 * "+u+" * "+c+" +\n wR * "+c+" + wC;\n float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);\n\n dotProd += dyValue * mask;\n }\n }\n }\n setOutput(dotProd);\n }\n ";},Hi=function(t,e,n,r,o,a,i){void 0===n&&(n=!1),void 0===r&&(r=!1),void 0===o&&(o=!1),void 0===a&&(a=null),void 0===i&&(i=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;var s=n?t[1]:t[2],u=Math.ceil(s/2),c=n?"i * 2, rc.y":"rc.y, i * 2",l=r?"rc.z, i * 2":"i * 2, rc.z",h=n?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=r?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],d="",p="";a&&(d=i?"vec4 activation(vec4 a) {\n vec4 b = getPreluActivationWeightsAtOutCoords();\n "+a+"\n }":"vec4 activation(vec4 x) {\n "+a+"\n }",p="result = activation(result);");var v=o?"result += getBiasAtOutCoords();":"";o&&this.variableNames.push("bias"),i&&this.variableNames.push("preluActivationWeights"),this.userCode="\n "+d+"\n\n const float sharedDimension = "+u+".0;\n\n vec4 dot2x2ARowBCol(ivec3 rc) {\n vec4 result = vec4(0);\n for (int i = 0; i < "+u+"; i++) {\n vec4 a = getMatrixA(rc.x, "+c+");\n vec4 b = getMatrixB(rc.x, "+l+");\n\n // These swizzled products need to be separately added.\n // See: https://github.com/tensorflow/tfjs/issues/1735\n result += ("+h[0]+" * "+f[0]+");\n result += ("+h[1]+" * "+f[1]+");\n }\n return result;\n }\n\n void main() {\n ivec3 rc = getOutputCoords();\n vec4 result = dot2x2ARowBCol(rc);\n\n "+v+"\n\n "+p+"\n\n setOutput(result);\n }\n ";},qi=function(){function t(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode="\n uniform float seed;\n\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 < "+(e-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("+(e-1)+"));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,r){null==e.seedLoc&&(e.seedLoc=n.getUniformLocation(r,"seed")),n.gl.uniform1f(e.seedLoc,t);}},t}(),Ki=function(t,e,n,r){this.variableNames=["indices"],this.outputShape=[t,e],this.userCode="\n void main() {\n ivec2 coords = getOutputCoords();\n int index = round(getIndices(coords.x));\n setOutput(mix(float("+r+"), float("+n+"),\n float(index == coords.y)));\n }\n ";},ji=function(t){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=t;var e=t.length;if(0===e)this.userCode="\n void main() {\n setOutput(vec4(getA(), 0., 0., 0.));\n }\n ";else {var n=sa("rc",e),r=wa(e),o=function(t,e,n){if(1===t)return "rc > "+e[0];for(var r="",o=t-2;o= "+e[o],o= "+e+";\n bool rEdge = rp1 >= "+n+";\n "}(e,t[t.length-1],t[t.length-2],n),i=function(t,e){var n=t.length,r=function(t,e){for(var n=[],r=0;r<=1;r++)for(var o=0;o<=1;o++){for(var a=(0===r?"r":"rp1")+", "+(0===o?"c":"cp1"),i=2;i= "+t[0]+" ? 0. : getA(rc + 1),\n 0, 0":"getA("+r[0]+"),\n cEdge ? 0. : getA("+r[1]+"),\n rEdge ? 0. : getA("+r[2]+"),\n rEdge || cEdge ? 0. : getA("+r[3]+")"}(t,n);this.userCode="\n void main() {\n "+r+" rc = getOutputCoords();\n\n if("+o+") {\n setOutput(vec4(0));\n } else {\n "+a+"\n\n setOutput(vec4("+i+"));\n }\n }\n ";}};var Xi=function(t,e,n){this.variableNames=["x"],this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));var r=t.length,o=wa(r),a=e.map((function(t){return t[0]})).join(","),i=e.map((function(e,n){return e[0]+t[n]})).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);this.userCode=1!==r?"\n "+o+" start = "+o+"("+a+");\n "+o+" end = "+o+"("+i+");\n\n void main() {\n "+o+" outC = getOutputCoords();\n if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {\n setOutput(float("+n+"));\n } else {\n "+o+" coords = outC - start;\n setOutput(getX("+s+"));\n }\n }\n ":"\n int start = "+a+";\n int end = "+i+";\n\n void main() {\n int outC = getOutputCoords();\n if (outC < start || outC >= end) {\n setOutput(float("+n+"));\n } else {\n setOutput(getX(outC - start));\n }\n }\n ";},Yi=function(t,e,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.map((function(e,n){return e[0]+t[n]+e[1]}));for(var r=t.length,o=wa(r),a=e.map((function(t){return t[0]})).join(","),i=e.map((function(e,n){return e[0]+t[n]})).join(","),s=sa("rc",r),u=sa("source",r),c=s[r-1]+" < "+this.outputShape[r-1],l=1===r?"source":"vec2("+u.slice(-2).join()+")",h=[o+" rc = outputLoc;",s[r-1]+" += 1;\n if("+c+") {\n ",1===r?"":"}\n rc = outputLoc;\n "+s[r-2]+" += 1;\n if("+s[r-2]+" < "+this.outputShape[r-2]+") {",1===r?"":" "+s[r-1]+" += 1;\n if("+c+") {"],f=1===r?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",d="",p=0,v=1===r?2:4;p= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+c+";\n wC += "+s+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.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 >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition = wR * "+c+" + wC;\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else {var p=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(p="avgValue / count");var v=4*Math.floor(r/4),m=r%4,g="\n if ("+f+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec2 strides = ivec2("+o+", "+a+");\n const ivec2 pads = ivec2("+l+", "+h+");\n const float initializationValue = "+d+";\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 >= "+t.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("+d+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wR = 0; wR < "+u+";\n wR += "+i+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+v+"; wC += 4) {\n int xC = xCCorner + wC * "+s+";\n\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n getValue(batch, xR, xC + 3 * "+s+", d)\n );\n\n "+g+"\n }\n\n int xC = xCCorner + "+v+";\n if ("+(1===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(2===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n initializationValue,\n initializationValue\n );\n\n "+g+"\n } else if ("+(3===m)+") {\n vec4 values = vec4(\n getValue(batch, xR, xC, d),\n getValue(batch, xR, xC + "+s+", d),\n getValue(batch, xR, xC + 2 * "+s+", d),\n initializationValue\n );\n\n "+g+"\n }\n }\n setOutput("+p+");\n }\n ";}},Qi=function(t,e,n){if(this.variableNames=["x"],"avg"===e&&n)throw new Error("Cannot compute positions for average pool.");var r=t.filterWidth,o=t.strideDepth,a=t.strideHeight,i=t.strideWidth,s=t.dilationDepth,u=t.dilationHeight,c=t.dilationWidth,l=t.effectiveFilterDepth,h=t.effectiveFilterHeight,f=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,v=t.padInfo.left;this.outputShape=t.outShape;var m="avg"===e,g="0.0";if(m||(g="-1.0 / 1e-20"),n)this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+d+", "+p+", "+v+");\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 < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+f+";\n wC += "+c+") {\n int xC = xCCorner + wC;\n\n if (xC < 0 || xC >= "+t.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 >= currMinMaxValue) {\n minMaxValue = value;\n minMaxValueFound = 1.0;\n minMaxPosition =\n wD * "+h+" * "+f+" +\n wR * "+f+" + wC;;\n }\n }\n }\n }\n setOutput(float(minMaxPosition));\n }\n ";else {var y=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"avg"===e&&(y="avgValue / count");var x=4*Math.floor(r/4),b=r%4,w="\n if ("+m+") {\n avgValue += dot(values, ones);\n } else {\n minMaxValue = max(values, minMaxValue);\n }\n ";this.userCode="\n const ivec3 strides =\n ivec3("+o+", "+a+", "+i+");\n const ivec3 pads = ivec3("+d+", "+p+", "+v+");\n const float initializationValue = "+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 xD, int xR, int xC, int ch) {\n if (xC < 0 || xC >= "+t.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("+g+");\n float avgValue = 0.0;\n count = 0.0;\n\n for (int wD = 0; wD < "+l+";\n wD += "+s+") {\n int xD = xDCorner + wD;\n\n if (xD < 0 || xD >= "+t.inDepth+") {\n continue;\n }\n\n for (int wR = 0; wR < "+h+";\n wR += "+u+") {\n int xR = xRCorner + wR;\n\n if (xR < 0 || xR >= "+t.inHeight+") {\n continue;\n }\n\n for (int wC = 0; wC < "+x+"; wC += 4) {\n int xC = xCCorner + wC * "+c+";\n\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n getValue(batch, xD, xR, xC + 3 * "+c+", ch)\n );\n\n "+w+"\n }\n\n int xC = xCCorner + "+x+";\n if ("+(1===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(2===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n initializationValue,\n initializationValue\n );\n\n "+w+"\n } else if ("+(3===b)+") {\n vec4 values = vec4(\n getValue(batch, xD, xR, xC, ch),\n getValue(batch, xD, xR, xC + "+c+", ch),\n getValue(batch, xD, xR, xC + 2 * "+c+", ch),\n initializationValue\n );\n\n "+w+"\n }\n }\n setOutput("+y+");\n }\n }\n ";}},Ji=function(t,e){this.variableNames=["x"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=Math.ceil(o/n);this.outputShape=[r,a];var i="0.0",s="";"prod"===e?i="1.0":"min"===e?(i="1.0 / 1e-20",s="min"):"max"===e&&(i="-1.0 / 1e-20",s="max");var u=e+"("+e+"("+e+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";"sum"===e?u="sumValue":"prod"===e?u="prodValue":"all"===e?u="allValue":"any"===e&&(u="anyValue");var c=4*Math.floor(n/4),l=n%4,h="\n if ("+("sum"===e)+") {\n sumValue += dot(values, ones);\n } else if ("+("prod"===e)+") {\n vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);\n prodValue *= tmp[0] * tmp[1];\n } else {\n minMaxValue = "+s+"(values, minMaxValue);\n }\n ",f="vec4";"all"===e?(i="1.0",h="\n bool reducedAllValue = all(values);\n float floatedReducedAllValue = float(reducedAllValue);\n allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);\n ",f="bvec4"):"any"===e&&(i="0.0",h="\n bool reducedAnyValue = any(values);\n float floatedReducedAnyValue = float(reducedAnyValue);\n anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);\n ",f="bvec4");var d="";o%n>0&&(d="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n "),this.userCode="\n const float initializationValue = "+i+";\n const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);\n\n float getValue(int batch, int inIdx) {\n "+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 * "+n+";\n\n vec4 minMaxValue = vec4("+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 < "+c+"; i += 4) {\n int inIdx = inOffset + i;\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n getValue(batch, inIdx + 3)\n );\n\n "+h+"\n }\n\n int inIdx = inOffset + "+c+";\n if ("+(1===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n initializationValue,\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(2===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n initializationValue,\n initializationValue\n );\n\n "+h+"\n } else if ("+(3===l)+") {\n "+f+" values = "+f+"(\n getValue(batch, inIdx),\n getValue(batch, inIdx + 1),\n getValue(batch, inIdx + 2),\n initializationValue\n );\n\n "+h+"\n }\n setOutput("+u+");\n }\n ";},Zi=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;for(var n="",r=0;r<4;r++){var o="thisRC = rc;";r%2==1&&(o+="thisRC.z += 1;"),r>1&&(o+="thisRC.y += 1;"),n+="\n "+o+"\n "+(r>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["+r+"] =\n getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);\n "+(r>0?"}":"")+"\n ";}this.userCode="\n \n ivec3 inputCoordsFromReshapedOutCoords(int index) {\n "+ca(["r","c","d"],e)+"\n return ivec3(r, c, d);\n }\n \n "+la(t)+"\n\n void main() {\n ivec3 rc = getOutputCoords();\n\n vec4 result = vec4(0.);\n\n ivec3 thisRC;\n int rows = "+t[1]+";\n int cols = "+t[2]+";\n\n "+n+"\n\n setOutput(result);\n }\n ";};var ts=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,m=2*Math.ceil(p)+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("+h+");\n const float widthScale = float("+f+");\n\n const float invHeightScale = float("+d+");\n const float invWidthScale = float("+p+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\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 >= "+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 >= "+u+") {\n continue;\n }\n\n float dxR = float(dyR) * heightScale;\n int topDxRIndex = int(floor(dxR));\n int bottomDxRIndex = int(min(ceil(dxR), "+(o-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), "+(a-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 ";},es=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".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 = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);\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 ";},ns=function(t,e,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n];this.userCode="\n const vec3 effectiveInputOverOutputRatioRC = vec3(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+",\n "+u[1]/c[1]+");\n const vec3 inputShapeRC = vec3("+a+".0, "+i+".0,\n "+i+".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 = vec3(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the four integer indices.\n ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);\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 < "+(s-1)+";\n bool hasNextRow = coords.z < "+(n-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 ";},rs=function(t,e,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=e.shape;var r=e.shape,o=r[1],a=r[2],i=t.shape,s=i[1],u=i[2],c=[n&&s>1?o-1:o,n&&u>1?a-1:a],l=[n&&s>1?s-1:s,n&&u>1?u-1:u],h=c[0]/l[0],f=c[1]/l[1],d=1/h,p=1/f,v=2*Math.ceil(d)+2,m=2*Math.ceil(p)+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("+h+");\n const float widthScale = float("+f+");\n\n const float invHeightScale = float("+d+");\n const float invWidthScale = float("+p+");\n\n const int winHeight = int("+v+");\n const int winWidth = int("+m+");\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 >= "+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 >= "+u+") {\n continue;\n }\n\n float sourceFracRow =\n float("+c[0]+") *\n (float(dyR) / float("+l[0]+"));\n\n float sourceFracCol =\n float("+c[1]+") *\n (float(dyC) / float("+l[1]+"));\n\n int sourceNearestRow = int(min(\n float(int("+o+") - 1),\n "+n+" ? float(round(sourceFracRow)) :\n float(floor(sourceFracRow))));\n\n int sourceNearestCol = int(min(\n float(int("+a+") - 1),\n "+n+" ? 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 ";},os=function(t,e,n,r){this.variableNames=["A"],this.outputShape=[];var o=t[0],a=t[1],i=t[2],s=t[3];this.outputShape=[o,e,n,s];var u=[r&&e>1?a-1:a,r&&n>1?i-1:i],c=[r&&e>1?e-1:e,r&&n>1?n-1:n],l=r?"0.5":"0.0";this.userCode="\n const vec2 effectiveInputOverOutputRatioRC = vec2(\n "+u[0]/c[0]+",\n "+u[1]/c[1]+");\n const vec2 inputShapeRC = vec2("+a+".0, "+i+".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 = vec2(yRC) * effectiveInputOverOutputRatioRC;\n\n // Compute the coordinators of nearest neighbor point.\n ivec2 sourceNearestRC = ivec2(\n min(inputShapeRC - 1.0, floor(sourceFracIndexRC + "+l+")));\n\n float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);\n\n setOutput(newValue);\n }\n ";},as=function(t,e){this.variableNames=["x"];var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");if(this.outputShape=t,1!==n){var r=t.map((function(n,r){return function(n){return -1!==e.indexOf(n)&&1!==t[n]?t[n]+" - coords["+n+"] - 1":"coords["+n+"]"}(r)})).join(","),o=wa(n);this.userCode="\n void main() {\n "+o+" coords = getOutputCoords();\n setOutput(getX("+r+"));\n }\n ";}else this.userCode="\n void main() {\n int coord = getOutputCoords();\n setOutput(getX("+t[0]+" - coord - 1));\n }\n ";},is=function(t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var n=t.length;if(n>4)throw new Error("WebGL backend: Reverse of rank-"+n+" tensor is not yet supported");this.outputShape=t;var r=sa("rc",n),o=r[n-1]+" + 1 < "+this.outputShape[n-1],a=r[n-2]+" + 1 < "+this.outputShape[n-2],i=wa(n);function s(n){var r=t.map((function(r,o){return function(n,r){return -1!==e.indexOf(n)&&1!==t[n]?t[n]+" - "+r[n]+" - 1":""+r[n]}(o,n)}));return "getChannel(getX("+r.join(",")+"), vec2("+r.slice(-2).join(",")+"))"}this.userCode=1===n?"\n void main(){\n int rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = getChannel(getX("+t[0]+" - rc - 1),\n "+t[0]+" - rc - 1);\n if("+o+"){\n result.g = getChannel(getX("+t[0]+" - (rc + 1) - 1),\n "+t[0]+" - (rc + 1) - 1);\n }\n setOutput(result);\n }\n ":"\n void main() {\n "+i+" rc = getOutputCoords();\n vec4 result = vec4(0.);\n result.r = "+function(t){return s(t)}(r.slice())+";\n if("+o+"){\n result.g = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",s(t)}(r.slice())+";\n }\n if("+a+") {\n result.b = "+function(t){return t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n if("+o+") {\n result.a = "+function(t){return t[n-1]="("+t[n-1]+" + 1)",t[n-2]="("+t[n-2]+" + 1)",s(t)}(r.slice())+";\n }\n }\n setOutput(result);\n }\n ";},ss=function(t,e,n,r,o,a,i){this.variableNames=["updates","indices","defaultValue"],this.outputShape=a;var s=wa(o.length),u=wa(a.length),c="";1===n?c="i":2===n&&(c="i, j");var l="getIndices("+c+")",h="";1===r?h="i":2===r&&(h="i, coords[1]");var f="getUpdates("+h+")",d=e>1?"strides[j]":"strides";this.userCode="\n "+s+" strides = "+s+"("+o+");\n\n void main() {\n "+u+" coords = getOutputCoords();\n float sum = 0.0;\n bool found = false;\n for (int i = 0; i < "+t+"; i++) {\n int flattenedIndex = 0;\n for (int j = 0; j < "+e+"; j++) {\n int index = round("+l+");\n flattenedIndex += index * "+d+";\n }\n if (flattenedIndex == coords[0]) {\n sum += "+f+";\n found = true;\n }\n }\n setOutput(mix(getDefaultValue(), sum, float(found)));\n }\n ";},us=function(t,e){this.variableNames=["x","segmentIds"];var n=t.windowSize,r=t.batchSize,o=t.inSize,a=t.numSegments,i=a*Math.ceil(o/n);this.outputShape=[r,i];var s=4*Math.floor(n/4),u=n%4,c="\n sumValue += dot(values, segFilter);\n ",l="";o%n>0&&(l="\n if (inIdx < 0 || inIdx >= "+o+") {\n return initializationValue;\n }\n ");var h="";o%n>0&&(h="\n if (inIdx < 0 || inIdx >= "+o+") {\n return -1.0;\n }\n "),this.userCode="\n const float initializationValue = 0.0;\n\n float getValue(int batch, int inIdx) {\n "+l+"\n return getX(batch, inIdx);\n }\n\n float getSegmentIdAtIndex(int inIdx) {\n "+h+"\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 "+a+")) * float("+n+"));\n int currentSeg = int(mod(float(outIdx), float("+a+")));\n\n float sumValue = 0.0;\n\n for (int i = 0; i < "+s+"; 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 "+c+"\n }\n\n int inIdx = inOffset + "+s+";\n if ("+(1===u)+") {\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 "+c+"\n } else if ("+(2===u)+") {\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 "+c+"\n } else if ("+(3===u)+") {\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 "+c+"\n }\n setOutput(sumValue);\n }\n ";},cs=function(t,e,n){var r,o;if(this.variableNames=["c","a","b"],this.outputShape=e,n>4)throw Error("Where for rank "+n+" is not yet supported");if(1===n)o="resRC",r="resRC";else {for(var a=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],s=[],u=0;u= 1.0) {\n setOutput(getA("+o+"));\n } else {\n setOutput(getB("+o+"));\n }\n }\n ";},ls=function(){function t(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=wa(this.rank),r="uniform int start["+this.rank+"];",o=function(t){if(1===t)return "sourceLoc";if(t<=6)return hs.slice(0,t).map((function(t){return "sourceLoc."+t})).join(",");throw Error("Slicing for rank "+t+" is not yet supported")}(this.rank);e="\n "+n+" sourceLoc;\n "+n+" coords = getOutputCoords();\n "+t.map((function(t,e){return "sourceLoc."+hs[e]+" = start["+e+"] + coords."+hs[e]+";"})).join("\n")+"\n ",this.userCode="\n "+r+"\n void main() {\n "+e+"\n setOutput(getSource("+o+"));\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t);}},t}(),hs=["x","y","z","w","u","v"];var fs=function(){function t(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=wa(this.rank),n=sa("coords",this.rank),r=sa("sourceLoc",this.rank),o=1===this.rank?"sourceLoc":"vec2("+r.slice(-2).join()+")",a="getChannel(getSource("+r.join()+"), "+o+")",i="\n result.x = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.y = "+a+";\n --"+r[this.rank-1]+";\n }\n ",s=1===this.rank?"":"\n --"+n[this.rank-1]+";\n if (++"+n[this.rank-2]+" < "+t[this.rank-2]+") {\n ++"+r[this.rank-2]+";\n result.z = "+a+";\n if (++"+n[this.rank-1]+" < "+t[this.rank-1]+") {\n ++"+r[this.rank-1]+";\n result.w = "+a+";\n }\n }\n ",u=this.rank<=4?"sourceLoc = coords +\n "+e+"("+t.map((function(t,e){return "start["+e+"]"})).join()+");":t.map((function(t,e){return r[e]+" = "+n[e]+" + start["+e+"];"})).join("\n");this.userCode="\n uniform int start["+this.rank+"];\n void main() {\n "+e+" coords = getOutputCoords();\n "+e+" sourceLoc;\n "+u+"\n vec4 result = vec4(0.);\n "+i+"\n "+s+"\n setOutput(result);\n }\n ";}return t.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,r){null==e.startLoc&&(e.startLoc=n.getUniformLocationNoThrow(r,"start"),null==e.startLoc)||n.gl.uniform1iv(e.startLoc,t);}},t}(),ds=function(t,e,n){this.variableNames=["x"],this.outputShape=n;var r=n.length,o=wa(n.length),a=wa(n.length),i="";if(1===r)i="coords * strides + begin";else {var s=0;i=n.map((function(t,e){return s++,1===n.length?"coords * strides["+e+"] + begin["+e+"]":"coords["+(s-1)+"] * strides["+e+"] + begin["+e+"]"})).join(",");}this.userCode="\n "+o+" begin = "+o+"("+t+");\n "+o+" strides = "+o+"("+e+");\n\n void main() {\n "+a+" coords = getOutputCoords();\n setOutput(getX("+i+"));\n }\n ";},ps=function(){function t(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={};}return t.prototype.acquireTexture=function(t,e,n){var r,o=vs(e,n),a=ms(t,o,n);if(a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]),this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var i=this.freeTextures[a].shift();return this.usedTextures[a].push(i),i}return this.numUsedTextures++,this.log(),o===Gt.PACKED_2X2_FLOAT32?r=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===Gt.PACKED_2X2_FLOAT16?r=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT32?r=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===Gt.UNPACKED_FLOAT16?r=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===Gt.PACKED_4X1_UNSIGNED_BYTE&&(r=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[a].push(r),r},t.prototype.releaseTexture=function(t,e,n,r){if(null!=this.freeTextures){var o=ms(e,vs(n,r),r);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var a=this.usedTextures[o],i=a.indexOf(t);if(i<0)throw new Error("Cannot release a texture that was never provided by this texture manager");a.splice(i,1),this.log();}},t.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")");}},t.prototype.getNumUsedTextures=function(){return this.numUsedTextures},t.prototype.getNumFreeTextures=function(){return this.numFreeTextures},t.prototype.dispose=function(){var t=this;if(null!=this.freeTextures){for(var e in this.freeTextures)this.freeTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e);}));for(var e in this.usedTextures)this.usedTextures[e].forEach((function(e){t.gpgpu.deleteMatrixTexture(e);}));this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0;}},t}();function vs(t,e){if(t===zt.UPLOAD)return Gt.PACKED_2X2_FLOAT32;if(t===zt.RENDER||null==t)return function(t){return i().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?t?Gt.PACKED_2X2_FLOAT32:Gt.UNPACKED_FLOAT32:t?Gt.PACKED_2X2_FLOAT16:Gt.UNPACKED_FLOAT16}(e);if(t===zt.DOWNLOAD||t===zt.PIXELS)return Gt.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+t)}function ms(t,e,n){return t[0]+"_"+t[1]+"_"+e+"_"+n}var gs=function(t,e){this.variableNames=["A"];for(var n=new Array(t.length),r=0;r5)throw Error("Tile for rank "+e+" is not yet supported");if(1===e)return "imod(resRC, "+t[0]+")";for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[],o=0;o6)throw Error("Transpose for rank "+e+" is not yet supported");for(var n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(e),o=0;o6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var o=wa(this.rank),a=ia("rc",this.rank),i=new Array(this.rank);for(r=0;r= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);\n";var Ts="return -x;",Ns="return ceil(x);",Fs="return floor(x);",_s="return exp(x);",Os="return exp(x) - 1.0;",Ms=Es+"\n return sin(x);\n",Bs=Es+"\n return cos(x);\n",Ps=Es+"\n if (abs(x) > 1.) {\n return NAN;\n }\n return asin(x);\n",Ls=Es+"\n if (abs(x) > 1.) {\n return NAN;\n }\n return acos(x);\n",Ws=Es+"\n return atan(x);\n",Us=Es+"return log(x + sqrt(x * x + 1.0));",Vs=Es+"\n if (x < 1.0) return NAN;\n return log(x + sqrt(x * x - 1.0));",zs=Es+"\n if ((x < -1.0) || (x > 1.0)) return NAN;\n return (log(1.0 + x) - log(1.0 - x)) / 2.0;",Gs="return x;",Hs="return x;",qs="\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",Ks="\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",js="\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",Xs=function(t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode="\n vec4 unaryOperation(vec4 x) {\n "+e+"\n }\n\n void main() {\n vec4 x = getAAtOutCoords();\n vec4 y = unaryOperation(x);\n\n setOutput(y);\n }\n ";},Ys=function(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=t;var e=t.length,n=sa("rc",e),r=wa(e),o=function(t,e){if(1===t)return "rc";for(var n="",r=0;r0?[4,Promise.all(a)]:[3,2];case 1:return c=r.sent(),u.kernelMs=w(c),u.getExtraProfileInfo=function(){return c.map((function(t,e){return {name:s[e],ms:t}})).map((function(t){return t.name+": "+t.ms})).join(", ")},[3,3];case 2:u.kernelMs={error:"WebGL query timers are not supported in this environment."},r.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}}))}))},o.prototype.memory=function(){return {unreliable:!1,numBytesInGPU:this.numBytesInGPU}},o.prototype.startTimer=function(){return i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:et(),endMs:null}},o.prototype.endTimer=function(t){return i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),t):(t.endMs=et(),t)},o.prototype.getQueryTime=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return i().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(t)]:[2,(e=t).endMs-e.startMs]}))}))},o.prototype.disposeData=function(t){if(!this.pendingDisposal.has(t)){if(this.pendingRead.has(t))return this.pendingDisposal.add(t),void this.pendingDeletes++;if(this.texData.has(t)){this.releaseGPUData(t);var e=this.texData.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.texData.delete(t);}}},o.prototype.releaseGPUData=function(t){var e=this.texData.get(t),n=e.texture,r=e.dtype,o=e.texShape,a=e.usage,i=e.isPacked,s=e.slice,u=s&&s.origDataId||t,c=this.dataRefCount.get(u);c>1?this.dataRefCount.set(u,c-1):(this.dataRefCount.delete(u),null!=n&&(this.numBytesInGPU-=this.computeBytes(o,r),this.textureManager.releaseTexture(n,o,a,i)));var l=this.texData.get(t);l.texture=null,l.texShape=null,l.isPacked=!1,l.slice=null;},o.prototype.getTexture=function(t){return this.uploadToGPU(t),this.texData.get(t).texture},o.prototype.getDataInfo=function(t){return this.texData.get(t)},o.prototype.getCPUBackend=function(){return i().getBool("WEBGL_CPU_FORWARD")?(null==this.cpuBackend&&(this.cpuBackend=Lt.findBackend("cpu")),this.cpuBackend):null},o.prototype.shouldExecuteOnCPU=function(t,e){var n=this;return void 0===e&&(e=128),null!=this.getCPUBackend()&&t.every((function(t){return null==n.texData.get(t.dataId).texture&&t.sizei().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var o=Math.floor(t.length/2),a=this.concat(t.slice(0,o),e),s=this.concat(t.slice(o),e);return this.concat([a,s],e)}if(i().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&t[0].rank>1){var u=new Ga(t.map((function(t){return t.shape})),e);return this.compileAndRun(u,t)}var c=Sn(t.map((function(t){return t.shape})),e),l=t.map((function(t){return t.as2D(-1,k(t.shape.slice(e)))})),h=new za(l.map((function(t){return t.shape})));return this.compileAndRun(h,l).reshape(c)},o.prototype.neg=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.neg(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ts,t.dtype);var e=new Cs(t.shape,Ts);return this.compileAndRun(e,[t])},o.prototype.batchMatMul=function(t,e,n,r){var o=n?t.shape[2]:t.shape[1],a=r?e.shape[1]:e.shape[2],i=n?t.shape[1]:t.shape[2],s=t.shape[0];if((1===o||1===a)&&i>1e3){n&&(t=t.transpose([0,2,1])),r&&(e=e.transpose([0,2,1]));var u=1===a?t:t.as3D(s,i,1),c=1===a?2:1,l=1===a?e.as3D(s,1,i):e;return this.multiply(u,l).sum(c,!0)}var h=Dt(t.dtype,e.dtype),f=new Hi(t.shape,[s,o,a],n,r);return this.compileAndRun(f,[t,e],h)},o.prototype.fusedBatchMatMul=function(t){var e=t.a,n=t.b,r=t.transposeA,o=t.transposeB,a=t.bias,i=t.activation,s=t.preluActivationWeights,u=r?e.shape[2]:e.shape[1],c=o?n.shape[1]:n.shape[2],l=e.shape[0],h=Dt(e.dtype,n.dtype),f=null!=a,d=null!=s,p=i?Qs(i,!0):null,v=new Hi(e.shape,[l,u,c],r,o,f,p,d),m=[e,n];return a&&m.push(a),s&&m.push(s),this.compileAndRun(v,m,h)},o.prototype.multiply=function(t,e){if("complex64"===t.dtype){var n=this.texData.get(t.dataId),r=this.texData.get(e.dataId),o=new Na(Da,t.shape,e.shape),a=new Na(Ta,t.shape,e.shape),s=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag),this.makeComplexComponentTensorInfo(e,r.complexTensors.real),this.makeComplexComponentTensorInfo(e,r.complexTensors.imag)],u=this.compileAndRun(o,s),c=this.compileAndRun(a,s),l=this.complex(u,c);return u.dispose(),c.dispose(),l}if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.multiply(t,e);if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Oa,t.dtype);var h=new Ba(Oa,t.shape,e.shape);return this.compileAndRun(h,[t,e],t.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){var s=[t,e,n],u=null;null!=a&&(u=a.shape,s.push(a));var c=null;if(null!=o&&(c=o.shape,s.push(o)),i().getBool("WEBGL_PACK_NORMALIZATION")){var l=new Aa(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(l,s)}var h=new Sa(t.shape,e.shape,n.shape,u,c,r);return this.compileAndRun(h,s)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){var a=i().getBool("WEBGL_PACK_NORMALIZATION")?new Vi(t.shape,e,n,r,o):new Wi(t.shape,e,n,r,o);return this.compileAndRun(a,[t])},o.prototype.LRNGrad=function(t,e,n,r,o,a,i){var s=new Ui(e.shape,r,o,a,i);return this.compileAndRun(s,[e,n,t])},o.prototype.tile=function(t,e){if("string"===t.dtype){var n=this.readSync(t.dataId).map((function(t){return ot(t)}));return ta(dr(t.shape,t.dtype,n),e)}var r=new gs(t.shape,e);return this.compileAndRun(r,[t])},o.prototype.pad=function(t,e,n){var r=i().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Yi(t.shape,e,n):new Xi(t.shape,e,n);return this.compileAndRun(r,[t])},o.prototype.transpose=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.transpose(t,e);var n=i().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new xs(t.shape,e):new ys(t.shape,e);return this.compileAndRun(n,[t])},o.prototype.gather=function(t,e,n){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.gather(t,e,n);var r=new mi(t.shape,e.size,n);return this.compileAndRun(r,[t,e])},o.prototype.batchToSpaceND=function(t,e,n){C(t.rank<=4,(function(){return "batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=zr(t.shape,e,r),a=Gr(o.length,e.length),i=Hr(t.shape,e,r),s=qr(n,e.length),u=Kr(i,n,e.length);return t.reshape(o).transpose(a).reshape(i).slice(s,u)},o.prototype.spaceToBatchND=function(t,e,n){C(t.rank<=4,(function(){return "spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"}));var r=e.reduce((function(t,e){return t*e})),o=[[0,0]];o.push.apply(o,n);for(var a=1+e.length;ae||n===t?r=!0:n=Y(t,n+1);return n}(i,o),u=new us({windowSize:s,inSize:i,batchSize:a,numSegments:o},e),c=this.compileAndRun(u,[t,n],r);return c.shape[1]===o?c:(n=Kn(0,o).tile([i/s]),this.segOpCompute(c,e,n,r,o))},o.prototype.argMinMaxReduce=function(t,e,n){var r=[e];if(Cn("arg"+n.charAt(0).toUpperCase()+n.slice(1),r,t.rank),!i().getBool("WEBGL_PACK_REDUCE")||t.rank<=2){var o=bn(t.shape,r),a=o[0],s=k(o[1]),u=t.as2D(-1,s);return this.argReduce(u,n).reshape(a)}return this.argReducePacked(t,n)},o.prototype.argMin=function(t,e){return this.argMinMaxReduce(t,e,"min")},o.prototype.argMax=function(t,e){return this.argMinMaxReduce(t,e,"max")},o.prototype.cumsum=function(t,e,n,r){if(e!==t.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(t.rank-1)+" but got axis="+e);var o=new ni(t.shape,n,r);return this.compileAndRun(o,[t])},o.prototype.equal=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(equal(a, b));\n","bool");var n=new Ba("return float(a == b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.notEqual=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(notEqual(a, b));\n","bool");var n=new Ba("return float(a != b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.less=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.less(t,e);if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThan(a, b));\n","bool");var n=new Ba("return float(a < b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.lessEqual=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(lessThanEqual(a, b));\n","bool");var n=new Ba("return float(a <= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.greater=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.greater(t,e);if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThan(a, b));\n","bool");var n=new Ba("return float(a > b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.greaterEqual=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(greaterThanEqual(a, b));\n","bool");var n=new Ba("return float(a >= b);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.logicalNot=function(t){var e=new Cs(t.shape,"return float(!(x >= 1.0));");return this.compileAndRun(e,[t])},o.prototype.logicalAnd=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return vec4(\n vec4(greaterThanEqual(a, vec4(1.0))) *\n vec4(greaterThanEqual(b, vec4(1.0))));\n","bool");var n=new Ba("return float(a >= 1.0 && b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.logicalOr=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\n return min(\n vec4(greaterThanEqual(a, vec4(1.0))) +\n vec4(greaterThanEqual(b, vec4(1.0))),\n vec4(1.0));\n","bool");var n=new Ba("return float(a >= 1.0 || b >= 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e],"bool")},o.prototype.select=function(t,e,n){var r=new cs(t.rank,e.shape,e.rank);return this.compileAndRun(r,[t,e,n],Dt(e.dtype,n.dtype))},o.prototype.where=function(t){dn("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var e=t.dataSync();return na(t.shape,e)},o.prototype.topk=function(t,e,n){return ea(t.dataSync(),t.shape,t.dtype,e)},o.prototype.min=function(t,e){Cn("min",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,"min",a.dtype).reshape(r)},o.prototype.minimum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.minimum(t,e);var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n vec4 result = vec4(min(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Ba("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return min(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.mod=function(t,e){var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n vec4 result = mod(a, b);\n vec4 isNaN = vec4(equal(b, vec4(0.0)));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Ba("if (b == 0.0) return NAN;\n return mod(a, b);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.max=function(t,e){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.max(t,e);Cn("max",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,"max",a.dtype).reshape(r)},o.prototype.maximum=function(t,e){if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.maximum(t,e);var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n vec4 result = vec4(max(a, b));\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Ba("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return max(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.all=function(t,e){Cn("all",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,"all",a.dtype).reshape(r)},o.prototype.any=function(t,e){Cn("any",e,t.rank);var n=bn(t.shape,e),r=n[0],o=k(n[1]),a=t.as2D(-1,o);return this.reduce(a,"any",a.dtype).reshape(r)},o.prototype.realDivide=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS")){return this.packedBinaryOp(t,e,"\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","float32",!0)}var n=new Ba("\nif (a == b) {\n return 1.0;\n};\nreturn a / b;",t.shape,e.shape);return this.compileAndRun(n,[t,e],"float32")},o.prototype.floorDiv=function(t,e){if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,"\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","int32");var n=new Ba("\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",t.shape,e.shape);return this.compileAndRun(n,[t,e],"int32")},o.prototype.add=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,Fa);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.add(t,e);var n=Dt(t.dtype,e.dtype);if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,Fa,n);var r=new Ba(Fa,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.packedUnaryOp=function(t,e,n){var r=new Xs(t.shape,e);return this.compileAndRun(r,[t],n)},o.prototype.packedBinaryOp=function(t,e,n,r,o){void 0===o&&(o=!1);var a=new La(n,t.shape,e.shape,o);return this.compileAndRun(a,[t,e],r)},o.prototype.complexSeparableBinaryOp=function(t,e,n){var r=this,o=this.texData.get(t.dataId),a=this.texData.get(e.dataId),i=[[o.complexTensors.real,a.complexTensors.real],[o.complexTensors.imag,a.complexTensors.imag]].map((function(o){var a=o[0],i=o[1],s=r.makeComplexComponentTensorInfo(t,a),u=r.makeComplexComponentTensorInfo(e,i),c=new Ba(n,t.shape,e.shape);return r.compileAndRun(c,[s,u],Dt(a.dtype,i.dtype))})),s=i[0],u=i[1],c=this.complex(s,u);return s.dispose(),u.dispose(),c},o.prototype.makeComplexComponentTensorInfo=function(t,e){return {dataId:e.dataId,dtype:e.dtype,shape:t.shape}},o.prototype.addN=function(t){if(1===t.length)return t[0];if(t.length>i().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var e=Math.floor(t.length/2),n=this.addN(t.slice(0,e)),r=this.addN(t.slice(e));return this.addN([n,r])}var o=t.map((function(t){return t.dtype})).reduce((function(t,e){return Dt(t,e)})),a=t.map((function(t){return t.shape})),s=i().getBool("WEBGL_PACK")?new oa(t[0].shape,a):new ra(t[0].shape,a);return this.compileAndRun(s,t,o)},o.prototype.subtract=function(t,e){if("complex64"===t.dtype&&"complex64"===e.dtype)return this.complexSeparableBinaryOp(t,e,_a);if(this.shouldExecuteOnCPU([t,e]))return this.cpuBackend.subtract(t,e);var n=Dt(t.dtype,e.dtype);if(i().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(t,e,_a,t.dtype);var r=new Ba(_a,t.shape,e.shape);return this.compileAndRun(r,[t,e],n)},o.prototype.pow=function(t,e){var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.\n vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));\n vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);\n vec4 result = multiplier * pow(abs(a), b);\n\n // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS\n bvec4 isExpZero = equal(b, vec4(0.0));\n result.r = isExpZero.r ? 1.0 : result.r;\n result.g = isExpZero.g ? 1.0 : result.g;\n result.b = isExpZero.b ? 1.0 : result.b;\n result.a = isExpZero.a ? 1.0 : result.a;\n\n vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Ba("\nif(a < 0.0 && floor(b) < b){\n return NAN;\n}\nif (b == 0.0) {\n return 1.0;\n}\nreturn (round(mod(b, 2.0)) != 1) ?\n pow(abs(a), b) : sign(a) * pow(abs(a), b);\n",t.shape,e.shape),r=Dt(t.dtype,e.dtype);return this.compileAndRun(n,[t,e],r)},o.prototype.ceil=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.ceil(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Ns,t.dtype);var e=new Cs(t.shape,Ns);return this.compileAndRun(e,[t])},o.prototype.floor=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.floor(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Fs,t.dtype);var e=new Cs(t.shape,Fs);return this.compileAndRun(e,[t])},o.prototype.sign=function(t){var e=new Cs(t.shape,"\n if (isnan(x)) { return 0.0; }\n return sign(x);\n");return this.compileAndRun(e,[t])},o.prototype.isNaN=function(t){var e=new Cs(t.shape,"return float(isnan(x));");return this.compileAndRun(e,[t],"bool")},o.prototype.isInf=function(t){var e=new Cs(t.shape,"return float(isinf(x));");return this.compileAndRun(e,[t],"bool")},o.prototype.isFinite=function(t){var e=new Cs(t.shape,"return float(!isnan(x) && !isinf(x));");return this.compileAndRun(e,[t],"bool")},o.prototype.round=function(t){var e=new Cs(t.shape,"\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");return this.compileAndRun(e,[t])},o.prototype.exp=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.exp(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,_s,t.dtype);var e=new Cs(t.shape,_s);return this.compileAndRun(e,[t])},o.prototype.expm1=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.expm1(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Os,t.dtype);var e=new Cs(t.shape,Os);return this.compileAndRun(e,[t])},o.prototype.softmax=function(t,e){var n=O([e],t.shape),r=this.max(t,n),o=wn(r.shape,n),a=this.subtract(t,r.reshape(o)),i=this.exp(a),s=this.sum(i,n).reshape(o);return this.realDivide(i,s)},o.prototype.log=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.log(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,"\n vec4 result = log(x);\n vec4 isNaN = vec4(lessThan(x, vec4(0.0)));\n result.r = isNaN.r == 1.0 ? NAN : result.r;\n result.g = isNaN.g == 1.0 ? NAN : result.g;\n result.b = isNaN.b == 1.0 ? NAN : result.b;\n result.a = isNaN.a == 1.0 ? NAN : result.a;\n\n return result;\n",t.dtype);var e=new Cs(t.shape,"if (x < 0.0) return NAN;\n return log(x);");return this.compileAndRun(e,[t])},o.prototype.log1p=function(t){var e=new Cs(t.shape,"return log(1.0 + x);");return this.compileAndRun(e,[t])},o.prototype.sqrt=function(t){var e=new Cs(t.shape,"return sqrt(x);");return this.compileAndRun(e,[t])},o.prototype.rsqrt=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.rsqrt(t);var e=new Cs(t.shape,"return inversesqrt(x);");return this.compileAndRun(e,[t])},o.prototype.reciprocal=function(t){var e=new Cs(t.shape,"return 1.0 / x;");return this.compileAndRun(e,[t])},o.prototype.relu=function(t){var e;return e=i().getBool("WEBGL_PACK")?new Xs(t.shape,qs):new Cs(t.shape,ks),this.compileAndRun(e,[t])},o.prototype.relu6=function(t){var e;return e=i().getBool("WEBGL_PACK")?new Xs(t.shape,Ks):new Cs(t.shape,Ss),this.compileAndRun(e,[t])},o.prototype.prelu=function(t,e){var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La(Pa,t.shape,e.shape):new Ba(Ma,t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.elu=function(t){if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,js,t.dtype);var e=new Cs(t.shape,As);return this.compileAndRun(e,[t])},o.prototype.eluDer=function(t,e){var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));\n return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));\n",t.shape,e.shape):new Ba("return (b >= 1.0) ? a : a * (b + 1.0);",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.selu=function(t){var e=new Cs(t.shape,Ds);return this.compileAndRun(e,[t])},o.prototype.int=function(t){var e=new Cs(t.shape,"return float(int(x));");return this.compileAndRun(e,[t],"int32")},o.prototype.clip=function(t,e,n){var r,o=(r=i().getBool("WEBGL_PACK_CLIP")?new Ua(t.shape):new Wa(t.shape)).getCustomSetupFunc(e,n);return this.compileAndRun(r,[t],null,o)},o.prototype.abs=function(t){if(this.shouldExecuteOnCPU([t]))return this.cpuBackend.abs(t);if(i().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(t,Is,t.dtype);var e=new Cs(t.shape,Is);return this.compileAndRun(e,[t])},o.prototype.complexAbs=function(t){var e=this.texData.get(t.dataId),n=new Va(t.shape),r=[this.makeComplexComponentTensorInfo(t,e.complexTensors.real),this.makeComplexComponentTensorInfo(t,e.complexTensors.imag)];return this.compileAndRun(n,r)},o.prototype.sigmoid=function(t){var e=new Cs(t.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(e,[t])},o.prototype.softplus=function(t){var e=new Cs(t.shape,"\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");return this.compileAndRun(e,[t])},o.prototype.sin=function(t){var e=new Cs(t.shape,Ms);return this.compileAndRun(e,[t])},o.prototype.cos=function(t){var e=new Cs(t.shape,Bs);return this.compileAndRun(e,[t])},o.prototype.tan=function(t){var e=new Cs(t.shape,"return tan(x);");return this.compileAndRun(e,[t])},o.prototype.asin=function(t){var e=new Cs(t.shape,Ps);return this.compileAndRun(e,[t])},o.prototype.acos=function(t){var e=new Cs(t.shape,Ls);return this.compileAndRun(e,[t])},o.prototype.atan=function(t){var e=new Cs(t.shape,Ws);return this.compileAndRun(e,[t])},o.prototype.atan2=function(t,e){var n=i().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new La("\n vec4 result = atan(a, b);\n vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));\n \n result.r = isNaN.r > 0. ? NAN : result.r;\n result.g = isNaN.g > 0. ? NAN : result.g;\n result.b = isNaN.b > 0. ? NAN : result.b;\n result.a = isNaN.a > 0. ? NAN : result.a;\n\n return result;\n",t.shape,e.shape):new Ba("\n if (isnan(a)) return a;\n if (isnan(b)) return b;\n\n return atan(a, b);\n",t.shape,e.shape);return this.compileAndRun(n,[t,e])},o.prototype.sinh=function(t){var e=new Cs(t.shape,"\n float e2x = exp(x);\n return (e2x - 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},o.prototype.cosh=function(t){var e=new Cs(t.shape,"\n float e2x = exp(-x);\n return (e2x + 1.0 / e2x) / 2.0;\n");return this.compileAndRun(e,[t])},o.prototype.tanh=function(t){var e=new Cs(t.shape,"\n float e2x = exp(-2.0 * abs(x));\n return sign(x) * (1.0 - e2x) / (1.0 + e2x);\n");return this.compileAndRun(e,[t])},o.prototype.asinh=function(t){var e=new Cs(t.shape,Us);return this.compileAndRun(e,[t])},o.prototype.acosh=function(t){var e=new Cs(t.shape,Vs);return this.compileAndRun(e,[t])},o.prototype.atanh=function(t){var e=new Cs(t.shape,zs);return this.compileAndRun(e,[t])},o.prototype.erf=function(t){var e=new Cs(t.shape,'\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 = 0.3275911;\n float a1 = 0.254829592;\n float a2 = -0.284496736;\n float a3 = 1.421413741;\n float a4 = -1.453152027;\n float a5 = 1.061405429;\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');return this.compileAndRun(e,[t])},o.prototype.step=function(t,e){var n=new Cs(t.shape,function(t){return void 0===t&&(t=0),Es+"\n return x > 0.0 ? 1.0 : float("+t+");\n "}(e));return this.compileAndRun(n,[t])},o.prototype.conv2dByMatMul=function(t,e,n,r,o,a){var s=t.shape,u=this.texData.get(t.dataId),c=n.inChannels,l=s[0]*s[1]*s[2],h=n.outChannels,f="channelsLast"===n.dataFormat,d=(1===l||1===h)&&c>1e3,p=s[2]%2!=0&&!!u.isPacked;if(d||!i().getBool("WEBGL_LAZILY_UNPACK")||!i().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!p){var v=f?s[0]*s[1]*s[2]:s[0]*s[2]*s[3],m=this.reshape(t,[1,v,n.inChannels]),g=this.reshape(e,[1,n.inChannels,n.outChannels]);return this.reshape(this.fusedBatchMatMul({a:m,b:g,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),n.outShape)}var y=f?s[0]*s[1]*(s[2]+1):s[0]*s[2]*(s[3]+1),x={dataId:t.dataId,shape:[1,y,n.inChannels],dtype:t.dtype},b=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,C(_e(u.shape,x.shape),(function(){return "packed reshape "+u.shape+" to "+x.shape+" isn't free"}));var w=this.reshape(e,[1,n.inChannels,n.outChannels]),E=this.fusedBatchMatMul({a:x,b:w,transposeA:!1,transposeB:!1,bias:r,activation:o,preluActivationWeights:a}),R=this.texData.get(E.dataId);return C(R.isPacked,(function(){return "batchMatMul result is expected to be packed"})),u.shape=b,R.shape=n.outShape,Lt.makeTensorFromDataId(E.dataId,n.outShape,E.dtype)},o.prototype.conv2dWithIm2Row=function(t,e,n,r,o,a){var i=n.filterWidth,s=n.filterHeight,u=n.inChannels,c=n.outWidth,l=n.outHeight,h="channelsLast"===n.dataFormat,f=i*s*u,d=l*c,p=[f,d],v=t.squeeze([0]),m=e.reshape([1,f,-1]),g=new Li(p,v.shape,n),y=this.compileAndRun(g,[v]).reshape([1,p[0],p[1]]),x=null!=r,b=null!=a,w=o?Qs(o,!0):null,C=new Hi(y.shape,[1,d,n.outChannels],!0,!1,x,w,b),E=[y,m];r&&E.push(r),b&&E.push(a);var R=this.compileAndRun(C,E);return h?R.reshape([1,l,c,n.outChannels]):R.reshape([1,n.outChannels,l,c])},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,s=t.preluActivationWeights;if(1===r.filterHeight&&1===r.filterWidth&&1===r.dilationHeight&&1===r.dilationWidth&&1===r.strideHeight&&1===r.strideWidth&&("SAME"===r.padInfo.type||"VALID"===r.padInfo.type))return this.conv2dByMatMul(e,n,r,o,a,s);if(i().getBool("WEBGL_CONV_IM2COL")&&1===e.shape[0])return this.conv2dWithIm2Row(e,n,r,o,a,s);var u=null!=o,c=null!=s,l=a?Qs(a,!1):null,h=new Qa(r,u,l,c),f=[e,n];return o&&f.push(o),s&&f.push(s),this.compileAndRun(h,f)},o.prototype.conv2d=function(t,e,n){if(1===n.filterHeight&&1===n.filterWidth&&1===n.dilationHeight&&1===n.dilationWidth&&1===n.strideHeight&&1===n.strideWidth&&("SAME"===n.padInfo.type||"VALID"===n.padInfo.type))return this.conv2dByMatMul(t,e,n);if(i().getBool("WEBGL_CONV_IM2COL")&&1===t.shape[0])return this.conv2dWithIm2Row(t,e,n);var r=new Qa(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerInput=function(t,e,n){var r=new Ka(n);return this.compileAndRun(r,[t,e])},o.prototype.conv2dDerFilter=function(t,e,n){var r=new qa(n);return this.compileAndRun(r,[t,e])},o.prototype.fusedDepthwiseConv2D=function(t){var e,n=t.input,r=t.filter,o=t.convInfo,a=t.bias,s=t.activation,u=t.preluActivationWeights,c=i().getBool("WEBGL_PACK_DEPTHWISECONV")&&o.strideWidth<=2&&o.outChannels/o.inChannels==1,l=s?Qs(s,c):null,h=[n,r],f=null!=a,d=null!=u;return f&&h.push(a),d&&h.push(u),c?(e=new ti(o,f,l,d),this.compileAndRun(e,h)):(e=new Za(o,f,l,d),this.compileAndRun(e,h))},o.prototype.depthwiseConv2D=function(t,e,n){var r;return i().getBool("WEBGL_PACK_DEPTHWISECONV")&&n.strideWidth<=2&&n.outChannels/n.inChannels==1?(r=new ti(n),this.compileAndRun(r,[t,e])):(r=new Za(n),this.compileAndRun(r,[t,e]))},o.prototype.depthwiseConv2DDerInput=function(t,e,n){var r=new $a(n);return this.compileAndRun(r,[t,e])},o.prototype.depthwiseConv2DDerFilter=function(t,e,n){var r=new Ya(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3d=function(t,e,n){var r=new Ja(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerInput=function(t,e,n){var r=new Xa(n);return this.compileAndRun(r,[t,e])},o.prototype.conv3dDerFilter=function(t,e,n){var r=new ja(n);return this.compileAndRun(r,[t,e])},o.prototype.maxPool=function(t,e){var n=new $i(e,"max",!1);return this.compileAndRun(n,[t])},o.prototype.avgPool=function(t,e){var n=new $i(e,"avg",!1);return this.compileAndRun(n,[t],"float32")},o.prototype.maxPoolBackprop=function(t,e,n,r){var o=new $i(r,"max",!0),a=this.compileAndRun(o,[e]),i=new zi(r),s=this.compileAndRun(i,[t,a],e.dtype);return a.dispose(),s},o.prototype.avgPoolBackprop=function(t,e,n){var r=new Ia(n);return this.compileAndRun(r,[t],e.dtype)},o.prototype.cast=function(t,e){return Po(t,e,this)},o.prototype.unstack=function(t,e){for(var n=t.shape[e],r=new Array(t.rank-1),o=0,a=0;a1,(function(){return "blockSize should be > 1 for depthToSpace, but was: "+e}));var r=t.shape[0],o="NHWC"===n?t.shape[1]:t.shape[2],a="NHWC"===n?t.shape[2]:t.shape[3],i="NHWC"===n?t.shape[3]:t.shape[1],s=o*e,u=a*e,c=i/(e*e),l=new ii("NHWC"===n?[r,s,u,c]:[r,c,s,u],e,n);return this.compileAndRun(l,[t])},o.prototype.split=function(t,e,n){return Zo(t,e,n)},o.prototype.scatterND=function(t,e,n){var r=Zr(0,t,n),o=r.sliceRank,a=r.numUpdates,i=r.sliceSize,s=r.strides,u=r.outputSize,c=[u/i,i],l=t.reshape([a,o]),h=e.reshape([a,i]);if(0===u)return Lo(Fn([]),n);var f=On(0),d=new ss(a,o,l.rank,h.rank,s,c);return this.compileAndRun(d,[h,l,f]).reshape(n)},o.prototype.sparseToDense=function(t,e,n,r){var o=Zr(0,t,n),a=o.sliceRank,i=o.numUpdates,s=o.strides,u=o.outputSize,c=new ss(i,a,t.rank,e.rank,s,[u,1],!1);return this.compileAndRun(c,[e,t,r]).reshape(n)},o.prototype.fft=function(t){return this.fftImpl(t,!1)},o.prototype.ifft=function(t){return this.fftImpl(t,!0)},o.prototype.fftImpl=function(t,e){var n=this.texData.get(t.dataId),r=new pi(fi,t.shape,e),o=new pi(di,t.shape,e),a=[this.makeComplexComponentTensorInfo(t,n.complexTensors.real),this.makeComplexComponentTensorInfo(t,n.complexTensors.imag)],i=this.compileAndRun(r,a),s=this.compileAndRun(o,a),u=this.complex(i,s).as2D(t.shape[0],t.shape[1]);return i.dispose(),s.dispose(),u},o.prototype.gatherND=function(t,e){var n=e.shape,r=n[n.length-1],o=jr(t,e),a=o[0],i=o[1],s=o[2],u=o[3],c=e.reshape([i,r]),l=t.reshape([t.size/s,s]),h=new gi(r,u,[i,s]);return this.compileAndRun(h,[l,c]).reshape(a)},o.prototype.fill=function(t,e,n){if("string"===(n=n||j(e))){var r=P(n,k(t));return r.fill(e),Lt.makeTensor(r,t,n,this)}var o=new vi(t,e),a=o.getCustomSetupFunc(e);return this.compileAndRun(o,[],n,a)},o.prototype.onesLike=function(t){if("string"===t.dtype)throw new Error("onesLike is not supported under string dtype");return this.fill(t.shape,1,t.dtype)},o.prototype.zerosLike=function(t){return this.fill(t.shape,"string"===t.dtype?"":0,t.dtype)},o.prototype.linspace=function(t,e,n){return Wo(t,e,n)},o.prototype.makeTensorInfo=function(t,e){var n=this.write(null,t,e);return this.texData.get(n).usage=null,{dataId:n,shape:t,dtype:e}},o.prototype.makeOutput=function(t,e){var n=this.makeTensorInfo(t,e).dataId;return Lt.makeTensorFromDataId(n,t,e,this)},o.prototype.unpackTensor=function(t){var e=new Ys(t.shape);return this.runWebGLProgram(e,[t],t.dtype)},o.prototype.packTensor=function(t){var e=new ji(t.shape);return this.runWebGLProgram(e,[t],t.dtype,null,!0)},o.prototype.packedReshape=function(t,e){var n=[Ae(t.shape)].concat(De(t.shape)),r={dtype:t.dtype,shape:n,dataId:t.dataId},o=[Ae(e)].concat(De(e)),a=new Zi(o,n),i=this.runWebGLProgram(a,[r],t.dtype,null,!0);return {dataId:i.dataId,shape:e,dtype:i.dtype}},o.prototype.decode=function(t){var e,n=this.texData.get(t),r=n.isPacked,o=n.shape,a=n.dtype,i=Te(o);e=r?new ai(i):new oi(i);return {dtype:a,shape:o,dataId:this.runWebGLProgram(e,[{shape:i,dtype:a,dataId:t}],a,null,!0).dataId}},o.prototype.runWebGLProgram=function(t,e,n,r,o){var a=this;void 0===o&&(o=!1);var s=this.makeTensorInfo(t.outputShape,n),u=this.texData.get(s.dataId);if(t.packedOutput&&(u.isPacked=!0),t.outPackingScheme===Vt.DENSE){var c=Yt(t.outputShape);u.texShape=c.map((function(t){return 2*t}));}if(null!=t.outTexUsage&&(u.usage=t.outTexUsage),0===k(s.shape))return u.values=B(s.dtype,0),s;var l=[],h=e.map((function(e){if("complex64"===e.dtype)throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var n=a.texData.get(e.dataId);if(null==n.texture){if(!t.packedInputs&&k(e.shape)<=i().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return {shape:e.shape,texData:null,isUniform:!0,uniformValues:n.values};t.packedInputs&&(n.isPacked=!0,n.shape=e.shape);}else if(!!n.isPacked!=!!t.packedInputs)e=n.isPacked?a.unpackTensor(e):a.packTensor(e),l.push(e),n=a.texData.get(e.dataId);else if(n.isPacked&&!_e(n.shape,e.shape)){var r=e,o=e.shape;e.shape=n.shape,e=a.packedReshape(e,o),l.push(e),n=a.texData.get(e.dataId),r.shape=o;}return a.uploadToGPU(e.dataId),{shape:e.shape,texData:n,isUniform:!1}}));this.uploadToGPU(s.dataId);var f,d={shape:s.shape,texData:u,isUniform:!1},p=function(t,e,n){var r="";e.concat(n).forEach((function(t){var e=null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0,n=t.isUniform?"uniform":t.texData.texShape;r+=t.shape+"_"+n+"_"+e;}));var o=t.userCode,a=t.constructor.name;return a+="_"+r+"_"+o}(t,h,d),v=this.getAndSaveBinary(p,(function(){return function(t,e,n,r){var o=e.userCode,a=n.map((function(t,n){var r={logicalShape:t.shape,texShape:t.isUniform?null:t.texData.texShape,isUniform:t.isUniform,isPacked:!t.isUniform&&t.texData.isPacked,flatOffset:null};return null!=t.texData&&null!=t.texData.slice&&t.texData.slice.flatOffset>0&&(r.flatOffset=t.texData.slice.flatOffset),{name:e.variableNames[n],shapeInfo:r}})),s=a.map((function(t){return t.shapeInfo})),u={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},c=fa(a,u,o,e.packedInputs),l=t.createProgram(c),h=null,f=t.getUniformLocation(l,"NAN",!1);1===i().getNumber("WEBGL_VERSION")&&(h=t.getUniformLocation(l,"INFINITY",!1));for(var d={},p=0;p0)return 32}return 16}))),this.floatPrecisionValue},o.prototype.epsilon=function(){return 32===this.floatPrecision()?1e-7:1e-4},o.prototype.uploadToGPU=function(t){var e,n=this.texData.get(t),r=n.shape,o=n.dtype,a=n.values,i=n.texture,s=n.usage,u=n.isPacked;if(null==i){var c,l=null!=this.activeTimers;l&&(c=et());var h=n.texShape;if(null==h&&(h=Ne(r,u),n.texShape=h),null!=a){var f=Te(r),d=void 0,p=h[1],v=h[0],m=a instanceof Uint8Array;u?(p=(e=$t(h[0],h[1]))[0],v=e[1],d=new hi(f,[v,p],m)):d=new li(f,[v,p],m);var g=this.makeTensorInfo([v,p],o);this.texData.get(g.dataId).usage=m?zt.PIXELS:zt.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(g.dataId),p,v,a);var y=this.runWebGLProgram(d,[g],o,null,!0),x=this.texData.get(y.dataId);n.texture=x.texture,n.texShape=x.texShape,n.isPacked=x.isPacked,n.usage=x.usage,this.disposeData(g.dataId),this.texData.delete(y.dataId),n.values=null,l&&(this.uploadWaitMs+=et()-c);}else {var b=this.acquireTexture(h,s,o,u);n.texture=b;}}},o.prototype.convertAndCacheOnCPU=function(t,e){var n=this.texData.get(t),r=n.dtype;return this.releaseGPUData(t),null!=e&&(n.values=function(t,e){if("float32"===e||"complex64"===e)return t;if("int32"===e||"bool"===e){for(var n="int32"===e?new Int32Array(t.length):new Uint8Array(t.length),r=0;r1024*this.numMBBeforeWarning*1024){var o=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+o+" MB, most likely due to a memory leak");}return this.textureManager.acquireTexture(t,e,r)},o.prototype.computeBytes=function(t,e){return t[0]*t[1]*z(e)},o}(bo);Wt()&&Lt.registerBackend("webgl",(function(){return new Zs}),2);var tu=An({square_:function(t){var e=mn(t,"x","square"),n=[e];return Lt.runKernelFunc((function(t,n){return n([e]),t.square(e)}),{x:e},null,"Square",{},n,[])}}),eu="SquaredDifference";var nu=An({squaredDifference_:function(t,e){var n,r=mn(t,"a","squaredDifference"),o=mn(e,"b","squaredDifference");n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape);var a={a:r,b:o},i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.squaredDifference(r,o);return e([r,o]),n}),a,(function(t,e){var n=e[0],r=e[1],o=On(2);return {a:function(){return t.mul(n.sub(r).mul(o))},b:function(){return t.mul(r.sub(n).mul(o))}}}),eu,{},i,[])}});var ru=An({abs_:function(t){var e=mn(t,"x","abs");return "complex64"===e.dtype?Lt.runKernelFunc((function(t){return t.complexAbs(e)}),{$x:e}):Lt.runKernelFunc((function(t,n){var r=t.abs(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return t.mul(n.toFloat().step(-1))}}}),"Abs")}}),ou=An({acos_:function(t){var e=mn(t,"x","acos");return Lt.runKernelFunc((function(t,n){var r=t.acos(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt()).neg()}}}))}}),au=An({acosh_:function(t){var e=mn(t,"x","acosh");return Lt.runKernelFunc((function(t,n){var r=t.acosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.divStrict(n.toFloat().square().sub(1).sqrt())}}}))}}),iu=An({asin_:function(t){var e=mn(t,"x","asin");return Lt.runKernelFunc((function(t,n){var r=t.asin(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.divStrict(On(1).sub(n.toFloat().square()).sqrt())}}}))}}),su=An({asinh_:function(t){var e=mn(t,"x","asinh");return Lt.runKernelFunc((function(t,n){var r=t.asinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.divStrict(On(1).add(n.toFloat().square()).sqrt())}}}))}}),uu=An({atan_:function(t){var e=mn(t,"x","atan");return Lt.runKernelFunc((function(t,n){var r=t.atan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(n.toFloat().square().add(1))}}}))}}),cu=An({atanh_:function(t){var e=mn(t,"x","atanh");return Lt.runKernelFunc((function(t,n){var r=t.atanh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(On(1).sub(n.toFloat().square()))}}}))}}),lu=An({ceil_:function(t){var e=mn(t,"x","ceil");return Lt.runKernelFunc((function(t){return t.ceil(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),hu=An({clipByValue_:function(t,e,n){var r=mn(t,"x","clipByValue");C(e<=n,(function(){return "Error in clip: min ("+e+") must be less than or equal to max ("+n+")."}));var o=[r],a={min:e,max:n};return Lt.runKernelFunc((function(t,o){var a=t.clip(r,e,n);return o([r]),a}),{x:r},(function(t,r){var o=r[0];return {x:function(){return t.where(o.greaterEqual(e).logicalAnd(o.lessEqual(n)),Xn(t))}}}),"ClipByValue",a,o)}}),fu=An({cos_:function(t){var e=mn(t,"x","cos"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.cos(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return n.toFloat().sin().neg().mul(t)}}}),"Cos",{},n)}}),du=An({cosh_:function(t){var e=mn(t,"x","cosh");return Lt.runKernelFunc((function(t,n){var r=t.cosh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return n.toFloat().sinh().mulStrict(t)}}}))}}),pu=An({erf_:function(t){var e=mn(t,"x","erf");return C("int32"===e.dtype||"float32"===e.dtype,(function(){return "Input dtype must be `int32` or `float32`."})),"int32"===e.dtype&&(e=e.toFloat()),Lt.runKernelFunc((function(t,n){var r=t.erf(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.mul(n.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}}))}}),vu=An({exp_:function(t){var e=mn(t,"x","exp");return Lt.runKernelFunc((function(t,n){var r=t.exp(e);return n([r]),r}),{x:e},(function(t,e){return {x:function(){return t.mulStrict(e[0])}}}),"Exp",{},[],[!0])}}),mu=An({expm1_:function(t){var e=mn(t,"x","expm1");return Lt.runKernelFunc((function(t,n){var r=t.expm1(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.mul(n.exp())}}}))}}),gu=An({floor_:function(t){var e=mn(t,"x","floor");return Lt.runKernelFunc((function(t){return t.floor(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),yu=An({log_:function(t){var e=mn(t,"x","log"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.log(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return t.div(n.toFloat())}}}),"Log",{},n)}}),xu=An({log1p_:function(t){var e=mn(t,"x","log1p");return Lt.runKernelFunc((function(t,n){var r=t.log1p(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(n.add(1))}}}))}}),bu=An({logSigmoid_:function(t){var e=mn(t,"x","logSigmoid");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e.neg()).neg();return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.mul(n.neg().sigmoid())}}}))}}),wu=An({neg_:function(t){var e=mn(t,"x","neg"),n=[e];return Lt.runKernelFunc((function(t){return t.neg(e)}),{x:e},(function(t){return {x:function(){return t.neg()}}}),"Neg",{},n)}}),Cu=An({reciprocal_:function(t){var e=mn(t,"x","reciprocal");return Lt.runKernelFunc((function(t,n){var r=t.reciprocal(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(n.square().neg())}}}))}}),Eu=An({round_:function(t){var e=mn(t,"x","round");return Lt.runKernelFunc((function(t){return t.round(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),Ru=An({rsqrt_:function(t){var e=mn(t,"x","rsqrt"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.rsqrt(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return t.div(n.pow(1.5).mul(2)).neg()}}}),"Rsqrt",{},n)}}),Iu=An({sigmoid_:function(t){var e=mn(t,"x","sigmoid");return Lt.runKernelFunc((function(t,n){var r=t.sigmoid(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return t.mul(n.mul(On(1).sub(n)))}}}),"Sigmoid")}}),ku=An({sign_:function(t){var e=mn(t,"x","sign");return Lt.runKernelFunc((function(t){return t.sign(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),Su=An({isNaN_:function(t){var e=mn(t,"x","isNaN");return Lt.runKernelFunc((function(t){return t.isNaN(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),Au=An({isInf_:function(t){var e=mn(t,"x","isInf");return Lt.runKernelFunc((function(t){return t.isInf(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),Du=An({isFinite_:function(t){var e=mn(t,"x","isFinite");return Lt.runKernelFunc((function(t){return t.isFinite(e)}),{$x:e},(function(t){return {$x:function(){return Xn(t)}}}))}}),Tu=An({sin_:function(t){var e=mn(t,"x","sin"),n=[e];return Lt.runKernelFunc((function(t,n){var r=t.sin(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return n.toFloat().cos().mul(t)}}}),"Sin",{},n)}}),Nu=An({sinh_:function(t){var e=mn(t,"x","sinh");return Lt.runKernelFunc((function(t,n){var r=t.sinh(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return n.toFloat().cosh().mulStrict(t)}}}))}}),Fu=An({softplus_:function(t){var e=mn(t,"x","softplus");return Lt.runKernelFunc((function(t,n){var r=t.softplus(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.mul(n.sigmoid())}}}))}}),_u=An({sqrt_:function(t){var e=mn(t,"x","sqrt");return Lt.runKernelFunc((function(t,n){var r=t.sqrt(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(n.toFloat().sqrt().mul(2))}}}))}}),Ou=An({step_:function(t,e){void 0===e&&(e=0);var n=mn(t,"x","step");return Lt.runKernelFunc((function(t){return t.step(n,e)}),{$x:n},(function(t){return {$x:function(){return Xn(t)}}}))}}),Mu=An({tan_:function(t){var e=mn(t,"x","tan");return Lt.runKernelFunc((function(t,n){var r=t.tan(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){return t.div(n.cos().square())}}}))}}),Bu=An({tanh_:function(t){var e=mn(t,"x","tanh");return Lt.runKernelFunc((function(t,n){var r=t.tanh(e);return n([r]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return On(1).sub(n.square()).mulStrict(t)}}}),"Tanh",{},null,[!0])}});function Pu(t,e,n,r,o,a){var i,s,u=mn(t,"x","batchNorm"),c=mn(e,"mean","batchNorm"),l=mn(n,"variance","batchNorm");return null!=o&&(i=mn(o,"scale","batchNorm")),null!=r&&(s=mn(r,"offset","batchNorm")),C(2===u.rank,(function(){return "Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),C(2===c.rank||1===c.rank,(function(){return "Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+c.rank+"."})),C(2===l.rank||1===l.rank,(function(){return "Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+l.rank+"."})),null!=i&&C(2===i.rank||1===i.rank,(function(){return "Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+i.rank+"."})),null!=s&&C(2===s.rank||1===s.rank,(function(){return "Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."})),Uu(u,c,l,s,i,a)}function Lu(t,e,n,r,o,a){var i,s,u=mn(t,"x","batchNorm"),c=mn(e,"mean","batchNorm"),l=mn(n,"variance","batchNorm");return null!=o&&(i=mn(o,"scale","batchNorm")),null!=r&&(s=mn(r,"offset","batchNorm")),C(3===u.rank,(function(){return "Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."})),C(3===c.rank||1===c.rank,(function(){return "Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+c.rank+"."})),C(3===l.rank||1===l.rank,(function(){return "Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+l.rank+"."})),null!=i&&C(3===i.rank||1===i.rank,(function(){return "Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+i.rank+"."})),null!=s&&C(3===s.rank||1===s.rank,(function(){return "Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."})),Uu(u,c,l,s,i,a)}function Wu(t,e,n,r,o,a){var i,s,u=mn(t,"x","batchNorm"),c=mn(e,"mean","batchNorm"),l=mn(n,"variance","batchNorm");return null!=o&&(i=mn(o,"scale","batchNorm")),null!=r&&(s=mn(r,"offset","batchNorm")),C(4===u.rank,(function(){return "Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."})),C(4===c.rank||1===c.rank,(function(){return "Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+c.rank+"."})),C(4===l.rank||1===l.rank,(function(){return "Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+l.rank+"."})),null!=i&&C(4===i.rank||1===i.rank,(function(){return "Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+i.rank+"."})),null!=s&&C(4===s.rank||1===s.rank,(function(){return "Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."})),Uu(u,c,l,s,i,a)}function Uu(t,e,n,r,o,a){null==a&&(a=.001);var i,s,u,c=mn(t,"x","batchNorm"),l=mn(e,"mean","batchNorm"),h=mn(n,"variance","batchNorm");null!=o&&(i=mn(o,"scale","batchNorm")),null!=r&&(s=mn(r,"offset","batchNorm")),C(l.rank===h.rank,(function(){return "Batch normalization gradient requires mean and variance to have equal ranks."})),C(null==s||l.rank===s.rank,(function(){return "Batch normalization gradient requires mean and offset to have equal ranks."})),C(null==i||l.rank===i.rank,(function(){return "Batch normalization gradient requires mean and scale to have equal ranks."})),u=0===c.rank||1===c.rank?c.as4D(1,1,1,c.size):2===c.rank?c.as4D(1,1,c.shape[0],c.shape[1]):3===c.rank?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var f=[c,l,h,i];return Lt.runKernelFunc((function(t,e){var n=t.batchNormalization(u,Vu(l),Vu(h),a,Vu(i),Vu(s));return e([c,l,h,i]),n}),{x:c,mean:l,variance:h,scale:i,offset:s},(function(t,e){var n=e,r=n[0],o=n[1],i=n[2],s=n[3],c=null==s?On(1):s,l=Eo(o.shape,u.shape),h=[];if(1===o.rank){for(var f=0;f0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(o.shape)}}}),"Add")}}),oc=An({addN_:function(t){C(Array.isArray(t),(function(){return "The argument passed to tf.addN() must be a list of tensors"})),C(t.length>=1,(function(){return "Must pass at least one tensor to tf.addN(), but got "+t.length}));var e=t.map((function(t,e){return mn(t,"tensors"+e,"addN")})),n=e[0];e.forEach((function(t){if(t.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")})),e.forEach((function(t){if(!S(t.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")}));var r=e;return Lt.runKernelFunc((function(t){return t.addN(e)}),r,(function(t){var n={};return e.forEach((function(e,r){n[r]=function(){return t.clone()};})),n}),"AddN")}}),ac=An({addStrict_:function(t,e){var n=mn(t,"a","addStrict"),r=mn(e,"b","addStrict");return E(n.shape,r.shape,"Error in addStrict: "),n.add(r)}}),ic=An({atan2_:function(t,e){var n,r=mn(t,"a","atan2"),o=mn(e,"b","atan2");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.atan2(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=rc(n.square(),r.square()),o=t.mul(r.div(e)),i=Eo(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},$b:function(){var e=rc(n.square(),r.square()),o=wu(t.mul(n.div(e))),i=Eo(r.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(r.shape)}}}))}}),sc=An({div_:function(t,e){var n,r=mn(t,"a","div"),o=mn(e,"b","div");if(n=Nt(r,o),r=n[0],o=n[1],"int32"===r.dtype&&"int32"===o.dtype)return lc(r,o);var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.realDivide(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){var e=t.div(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),"Div")}}),uc=An({divNoNan_:function(t,e){var n,r=mn(t,"a","div"),o=mn(e,"b","div");r=(n=Nt(r,o))[0],o=n[1];var a=sc(r,o),i=Xn(a),s=o.equal(i);return ec(s,i,a)}}),cc=An({divStrict_:function(t,e){var n=mn(t,"a","div"),r=mn(e,"b","div");return E(n.shape,r.shape,"Error in divideStrict: "),n.div(r)}}),lc=An({floorDiv_:function(t,e){var n,r=mn(t,"a","floorDiv"),o=mn(e,"b","floorDiv");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.floorDiv(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){var e=t.div(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);o.length>0&&(e=e.sum(o).reshape(r.shape));var i=r.square();return e.div(i.toFloat()).neg()}}}),"FloorDiv")}}),hc=An({maximum_:function(t,e){var n,r=mn(t,"a","maximum"),o=mn(e,"b","maximum");return n=Nt(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.maximum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){return t.mul(n.greaterEqual(r).toFloat())},b:function(){return t.mul(n.less(r).toFloat())}}}),"Maximum")}}),fc=An({maximumStrict_:function(t,e){var n=mn(t,"a","maximumStrict"),r=mn(e,"b","maximumStrict");return E(n.shape,r.shape,"Error in maximumStrict: "),n.maximum(r)}}),dc=An({minimum_:function(t,e){var n,r=mn(t,"a","minimum"),o=mn(e,"b","minimum");return n=Nt(r,o),r=n[0],o=n[1],"bool"===r.dtype&&(r=r.toInt(),o=o.toInt()),Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.minimum(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){return t.mul(n.lessEqual(r).toFloat())},b:function(){return t.mul(n.greater(r).toFloat())}}}),"Minimum")}}),pc=An({minimumStrict_:function(t,e){var n=mn(t,"a","minimumStrict"),r=mn(e,"b","minimumStrict");return E(n.shape,r.shape,"Error in minimumStrict: "),n.minimum(r)}}),vc=An({mod_:function(t,e){var n,r=mn(t,"a","mod"),o=mn(e,"b","mod");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.mod(r,o);return e([r,o]),n}),{$a:r,$b:o},(function(t,e){var n=e[0],r=e[1];return {$a:function(){var e=Eo(n.shape,a);return e.length>0?t.sum(e).reshape(n.shape):t},$b:function(){var e=t.mul(n.div(r).floor().neg()),o=Eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}))}}),mc=An({modStrict_:function(t,e){var n=mn(t,"a","modStrict"),r=mn(e,"b","modStrict");return E(n.shape,r.shape,"Error in modStrict: "),n.mod(r)}}),gc=An({mul_:function(t,e){var n,r=mn(t,"a","mul"),o=mn(e,"b","mul");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t,e){var n=t.multiply(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){var e=t.mul(r.toFloat()),o=Eo(n.shape,a);return o.length>0?e.sum(o).reshape(n.shape):e},b:function(){var e=t.mul(n.toFloat()),o=Eo(r.shape,a);return o.length>0?e.sum(o).reshape(r.shape):e}}}),"Mul")}}),yc=An({mulStrict_:function(t,e){var n=mn(t,"a","mul"),r=mn(e,"b","mul");return E(n.shape,r.shape,"Error in multiplyStrict: "),n.mul(r)}}),xc=An({pow_:function(t,e){var n,r=mn(t,"base","pow"),o=mn(e,"exp","pow");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape),i=[r,o];return Lt.runKernelFunc((function(t,e){var n=t.pow(r,o);return e([r,o,n]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1],o=e[2];return {a:function(){var e=r.toFloat(),o=t.mul(e.mul(n.pow(e.sub(On(1))))),i=Eo(n.shape,a);return i.length>0&&(o=o.sum(i)),o.reshape(n.shape)},b:function(){var e=n.greater(0),i=n.log().where(e,Xn(n)),s=t.mul(o.mul(i)),u=Eo(r.shape,a);return u.length>0&&(s=s.sum(u)),s.reshape(r.shape)}}}),"Pow",{},i,[!0])}}),bc=An({powStrict_:function(t,e){return E(t.shape,e.shape,"Error in powStrict: "),t.pow(e)}}),wc=An({squaredDifferenceStrict_:function(t,e){var n=mn(t,"a","squaredDifferenceStrict"),r=mn(e,"b","squaredDifferenceStrict");return E(n.shape,r.shape,"Error in squaredDifferenceStrict: "),n.squaredDifference(r)}}),Cc=An({sub_:function(t,e){var n,r=mn(t,"a","sub"),o=mn(e,"b","sub");n=Nt(r,o),r=n[0],o=n[1];var a=Ro(r.shape,o.shape);return Lt.runKernelFunc((function(t){return t.subtract(r,o)}),{a:r,b:o},(function(t){return {a:function(){var e=t,n=Eo(r.shape,a);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},b:function(){var e=t,n=Eo(o.shape,a);return n.length>0&&(e=e.sum(n)),e.neg().reshape(o.shape)}}}),"Sub")}}),Ec=An({subStrict_:function(t,e){var n=mn(t,"a","subStrict"),r=mn(e,"b","subStrict");return E(n.shape,r.shape,"Error in subStrict: "),n.sub(r)}});var Rc=An({equal_:function(t,e){var n,r=mn(t,"a","equal"),o=mn(e,"b","equal");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.equal(r,o)}),{$a:r,$b:o})}}),Ic=An({equalStrict_:function(t,e){var n=mn(t,"a","equalStrict"),r=mn(e,"b","equalStrict");return E(n.shape,r.shape,"Error in equalStrict: "),n.equal(r)}}),kc=An({greater_:function(t,e){var n,r=mn(t,"a","greater"),o=mn(e,"b","greater");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.greater(r,o)}),{a:r,b:o},null,"Greater")}}),Sc=An({greaterEqual_:function(t,e){var n,r=mn(t,"a","greaterEqual"),o=mn(e,"b","greaterEqual");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.greaterEqual(r,o);return e([r,o]),n}),{a:r,b:o},(function(t,e){var n=e[0],r=e[1];return {a:function(){return Xn(n)},b:function(){return Xn(r)}}}),"GreaterEqual")}}),Ac=An({greaterEqualStrict_:function(t,e){var n=mn(t,"a","greaterEqualStrict"),r=mn(e,"b","greaterEqualStrict");return E(n.shape,r.shape,"Error in greaterEqualStrict: "),n.greaterEqual(r)}}),Dc=An({greaterStrict_:function(t,e){var n=mn(t,"a","greaterStrict"),r=mn(e,"b","greaterStrict");return E(n.shape,r.shape,"Error in greaterStrict: "),n.greater(r)}}),Tc=An({less_:function(t,e){var n,r=mn(t,"a","less"),o=mn(e,"b","less");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.less(r,o)}),{a:r,b:o},null,"Less")}}),Nc=An({lessEqual_:function(t,e){var n,r=mn(t,"a","lessEqual"),o=mn(e,"b","lessEqual");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t,e){var n=t.lessEqual(r,o);return e([r,o]),n}),{a:r,b:o},null,"LessEqual")}}),Fc=An({lessEqualStrict_:function(t,e){var n=mn(t,"a","lessEqualStrict"),r=mn(e,"b","lessEqualStrict");return E(n.shape,r.shape,"Error in lessEqualStrict: "),n.lessEqual(r)}}),_c=An({lessStrict_:function(t,e){var n=mn(t,"a","lessStrict"),r=mn(e,"b","lessStrict");return E(n.shape,r.shape,"Error in lessStrict: "),n.less(r)}}),Oc=An({notEqual_:function(t,e){var n,r=mn(t,"a","notEqual"),o=mn(e,"b","notEqual");return n=Nt(r,o),r=n[0],o=n[1],Ro(r.shape,o.shape),Lt.runKernelFunc((function(t){return t.notEqual(r,o)}),{a:r,b:o},null,"NotEqual")}}),Mc=An({notEqualStrict_:function(t,e){var n=mn(t,"a","notEqualStrict"),r=mn(e,"b","notEqualStrict");return E(n.shape,r.shape,"Error in notEqualStrict: "),n.notEqual(r)}});function Bc(t,e){for(var n=[],r=t;r0,(function(){return "mask cannot be scalar"})),E(u.slice(i,i+s),a.shape,"mask's shape must match the first K dimensions of tensor's shape,"),c=1,l=i;l=2&&i.rank>=2&&a.rank===i.rank,(function(){return "Error in matMul: inputs must have the same rank of at least 2, got ranks "+a.rank+" and "+i.rank+"."})),C(S(h,f),(function(){return "Error in matMul: outer dimensions ("+h+") and ("+f+") of Tensors with shapes "+a.shape+" and "+i.shape+" must match."})),C(s===u,(function(){return "Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+a.shape+" and "+i.shape+" and transposeA="+n+" and transposeB="+r+" must match."}));var v=a.shape.slice(0,-2).concat([c,l]),m=n?a.as3D(d,s,c):a.as3D(d,c,s),g=r?i.as3D(p,l,u):i.as3D(p,u,l),y={transposeA:n,transposeB:r};return Lt.runKernelFunc((function(t,e){var o=t.batchMatMul(m,g,n,r);return e([m,g]),o}),{a:m,b:g},(function(t,e){var o=e,a=o[0],i=o[1];return n||r?!n&&r?{a:function(){return t.matMul(i,!1,!1)},b:function(){return t.matMul(a,!0,!1)}}:n&&!r?{a:function(){return i.matMul(t,!1,!0)},b:function(){return a.matMul(t,!1,!1)}}:{a:function(){return i.matMul(t,!0,!0)},b:function(){return t.matMul(a,!0,!0)}}:{a:function(){return t.matMul(i,!1,!0)},b:function(){return a.matMul(t,!0,!1)}}}),"BatchMatMul",y).reshape(v)}}),nl=An({dot_:function(t,e){var n=mn(t,"t1","dot"),r=mn(e,"t2","dot");C(!(1!==n.rank&&2!==n.rank||1!==r.rank&&2!==r.rank),(function(){return "Error in dot: inputs must all be rank 1 or 2, but got ranks "+n.rank+" and "+r.rank+"."}));var o=1===n.rank?n.size:n.shape[1],a=1===r.rank?r.size:r.shape[0];return C(o===a,(function(){return "Error in dot: inner dimensions of inputs must match, but got "+o+" and "+a+"."})),1===n.rank&&1===r.rank?n.as2D(1,-1).matMul(r.as2D(-1,1)).asScalar():1===n.rank&&2===r.rank?n.as2D(1,-1).matMul(r.as2D(r.shape[0],r.shape[1])).as1D():2===n.rank&&1===r.rank?n.matMul(r.as2D(-1,1)).as1D():n.matMul(r.as2D(r.shape[0],r.shape[1]))}}),rl=An({outerProduct_:function(t,e){var n=mn(t,"v1","outerProduct"),r=mn(e,"v2","outerProduct");return C(1===n.rank&&1===r.rank,(function(){return "Error in outerProduct: inputs must be rank 1, but got ranks "+n.rank+" and "+r.rank+"."})),n.as2D(-1,1).matMul(r.as2D(1,-1))}});var ol=An({reverse_:function(t,e){var n=mn(t,"x","reverse");if(0===n.rank)return n.clone();var r=O(e,n.shape);return Lt.runKernelFunc((function(t){return t.reverse(n,r)}),{$x:n},(function(t){return {$x:function(){return t.reverse(r)}}})).reshapeAs(n)}}),al=An({reverse1d_:function(t){var e=mn(t,"x","reverse");return C(1===e.rank,(function(){return "Error in reverse1D: x must be rank 1 but got rank "+e.rank+"."})),ol(e,0)}}),il=An({reverse2d_:function(t,e){var n=mn(t,"x","reverse");return C(2===n.rank,(function(){return "Error in reverse2D: x must be rank 2 but got rank "+n.rank+"."})),ol(n,e)}}),sl=An({reverse3d_:function(t,e){var n=mn(t,"x","reverse");return C(3===n.rank,(function(){return "Error in reverse3D: x must be rank 3 but got rank "+n.rank+"."})),ol(n,e)}}),ul=An({reverse4d_:function(t,e){var n=mn(t,"x","reverse");return C(4===n.rank,(function(){return "Error in reverse4D: x must be rank 4 but got rank "+n.rank+"."})),ol(n,e)}});function cl(t,e,n,r,o,a){var i=mn(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),null==r&&(r=[1,1]),C(4===s.rank,(function(){return "Error in maxPool: input must be rank 4 but got rank "+s.rank+"."})),C(Mo(n,r),(function(){return "Error in maxPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"})),null!=a&&C(A(o),(function(){return "Error in maxPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var c=Io(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=[s],h=Lt.runKernelFunc((function(t,e){var n=t.maxPool(s,c);return e([s,n]),n}),{x:s},(function(t,a){var i=a[0],s=a[1];return {x:function(){return function(t,e,n,r,o,a,i,s){var u=mn(t,"dy","maxPoolBackprop"),c=mn(e,"input","maxPoolBackprop"),l=mn(n,"output","maxPoolBackprop");C(c.rank===u.rank,(function(){return "Rank of input ("+c.rank+") does not match rank of dy ("+u.rank+")"})),null==a&&(a=[1,1]);C(Mo(o,a),(function(){return "Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"})),C(4===u.rank,(function(){return "Error in maxPoolBackprop: dy must be rank 4 but got rank "+u.rank+"."})),C(4===c.rank,(function(){return "Error in maxPoolBackprop: input must be rank 4 but got rank "+c.rank+"."})),null!=s&&C(A(i),(function(){return "Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+i+"."}));var h=Io(c.shape,r,o,a,i,s);return Lt.runKernelFunc((function(t){return t.maxPoolBackprop(u,c,l,h)}),{$dy:u,$input:c})}(t,i,s,e,n,r,o)}}}),"MaxPool",c,l);return u?h.as3D(h.shape[1],h.shape[2],h.shape[3]):h}function ll(t,e,n,r,o,a){var i=mn(t,"x","avgPool","float32");null==r&&(r=[1,1]),C(Mo(n,r),(function(){return "Error in avgPool: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+r+"'"}));var s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(4===s.rank,(function(){return "Error in avgPool: x must be rank 4 but got rank "+s.rank+"."})),null!=a&&C(A(o),(function(){return "Error in avgPool: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+o+"."}));var c=Io(s.shape,e,n,r,o,a);if(1===c.filterWidth&&1===c.filterHeight&&S(c.inShape,c.outShape))return i.clone();var l=Lt.runKernelFunc((function(t){return t.avgPool(s,c)}),{x:s},(function(t){return {x:function(){return function(t,e,n,r,o,a){var i=mn(t,"dy","avgPoolBackprop"),s=mn(e,"input","avgPoolBackprop");C(s.rank===i.rank,(function(){return "Rank of input ("+s.rank+") does not match rank of dy ("+i.rank+")"})),null==o&&(o=[1,1]);C(Mo(r,o),(function(){return "Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"}));var u=s,c=i,l=!1;3===s.rank&&(l=!0,u=s.as4D(1,s.shape[0],s.shape[1],s.shape[2]),c=i.as4D(1,i.shape[0],i.shape[1],i.shape[2]));C(4===c.rank,(function(){return "Error in avgPoolBackprop: dy must be rank 4 but got rank "+c.rank+"."})),C(4===u.rank,(function(){return "Error in avgPoolBackprop: input must be rank 4 but got rank "+u.rank+"."}));var h=Io(u.shape,n,r,o,a),f=Lt.runKernelFunc((function(t){return t.avgPoolBackprop(c,u,h)}),{dy4D:c,input4D:u});if(l)return f.as3D(f.shape[1],f.shape[2],f.shape[3]);return f}(t,s,e,n,r,o)}}}),"AvgPool",c);return l=l.cast(i.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var hl=An({maxPool_:function(t,e,n,r,o){return cl(t,e,n,1,r,o)}}),fl=An({avgPool_:function(t,e,n,r,o){return ll(t,e,n,1,r,o)}}),dl=An({pool_:function(t,e,n,r,o,a){null==o&&(o=[1,1]),null==a&&(a=1),0===r&&(r="valid");var i=mn(t,"x","maxPool"),s=i,u=!1;3===i.rank&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),C(Mo(a,o),(function(){return "Error in pool: Either strides or dilations must be 1. Got strides "+a+" and dilations '"+o+"'"}));var c,l=Io(s.shape,e,a,o,r),h=[l.dilationHeight,l.dilationWidth];c="same"===r?function(t,e){var n=t.map((function(t,n){return t+(t-1)*(e[n]-1)})).map((function(t){return t-1})),r=n.map((function(t){return Math.floor(t/2)})),o=n.map((function(t,e){return t-r[e]}));return n.map((function(t,e){return [r[e],o[e]]}))}([l.filterHeight,l.filterWidth],h):[[0,0],[0,0]];var f=1===h[0]&&1===h[1],d=function(t,e,n){var r=n.map((function(t){return t[0]})),o=n.map((function(t){return t[1]})),a=t.concat(r,o),i=e.map((function(t,e){return (t-a[e]%t)%t})),s=o.map((function(t,e){return t+i[e]})),u=e.map((function(t,e){return [r[e],s[e]]})),c=e.map((function(t,e){return [0,i[e]]}));return [u,c]}([l.inHeight,l.inWidth],h,c),p=d[0],v=d[1],m=f?r:"valid",g=f?s:Mr(s,h,p),y=("avg"===n?function(){return ll(g,e,a,1,m)}:function(){return cl(g,e,a,1,m)})(),x=f?y:vr(y,h,v);return u?x.as3D(x.shape[1],x.shape[2],x.shape[3]):x}}),pl=An({maxPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=mn(t,"x","maxPool3d"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return "Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."})),C("NDHWC"===a,(function(){return "Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+a})),C(Mo(n,i),(function(){return "Error in maxPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),null!=o&&C(A(r),(function(){return "Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=ko(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t,e){var n=t.maxPool3d(u,l);return e([u,n]),n}),{x:u},(function(t,a){var s=a[0],u=a[1];return {x:function(){return function(t,e,n,r,o,a,i,s){var u=mn(t,"dy","maxPool3dBackprop"),c=mn(e,"input","maxPool3dBackprop"),l=mn(n,"output","maxPool3dBackprop"),h=u,f=c,d=l,p=!1;4===c.rank&&(p=!0,h=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]),f=c.as5D(1,c.shape[0],c.shape[1],c.shape[2],c.shape[3]),d=l.as5D(1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]));C(5===h.rank,(function(){return "Error in maxPool3dBackprop: dy must be rank 5 but got rank "+h.rank+"."})),C(5===f.rank,(function(){return "Error in maxPool3dBackprop: input must be rank 5 but got rank "+f.rank+"."})),C(5===d.rank,(function(){return "Error in maxPool3dBackprop: output must be rank 5 but got rank "+d.rank+"."})),null==a&&(a=[1,1,1]);C(Mo(o,a),(function(){return "Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"})),null!=s&&C(A(i),(function(){return "Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+s+" but got pad "+i+"."}));var v=ko(f.shape,r,o,a,i,s),m=Lt.runKernelFunc((function(t){return t.maxPool3dBackprop(h,f,d,v)}),{dy5D:h,input5D:f});if(p)return m.as4D(m.shape[1],m.shape[2],m.shape[3],m.shape[4]);return m}(t,s,u,e,n,i,r,o)}}}));return c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}}),vl=An({avgPool3d_:function(t,e,n,r,o,a,i){void 0===a&&(a="NDHWC");var s=mn(t,"x","avgPool3d","float32"),u=s,c=!1;4===s.rank&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),null==i&&(i=[1,1,1]),C(5===u.rank,(function(){return "Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."})),C("NDHWC"===a,(function(){return "Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+a})),C(Mo(n,i),(function(){return "Error in avgPool3d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+i+"'"})),null!=o&&C(A(r),(function(){return "Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+r+"."}));var l=ko(u.shape,e,n,i,r,o,a),h=Lt.runKernelFunc((function(t){return t.avgPool3d(u,l)}),{x:u},(function(t){return {x:function(){return function(t,e,n,r,o,a,i){var s=mn(t,"dy","avgPool3dBackprop"),u=mn(e,"input","avgPool3dBackprop"),c=s,l=u,h=!1;4===u.rank&&(h=!0,c=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3]),l=u.as5D(1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]));C(5===c.rank,(function(){return "Error in avgPool3dBackprop: dy must be rank 5 but got rank "+c.rank+"."})),C(5===l.rank,(function(){return "Error in avgPool3dBackprop: input must be rank 5 but got rank "+l.rank+"."})),null==o&&(o=[1,1,1]);C(Mo(r,o),(function(){return "Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+o+"'"})),null!=i&&C(A(a),(function(){return "Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+"."}));var f=ko(l.shape,n,r,o,a,i),d=Lt.runKernelFunc((function(t){return t.avgPool3dBackprop(c,l,f)}),{dy5D:c,input5D:l});if(h)return d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]);return d}(t,u,e,n,i,r,o)}}}));return h=h.cast(u.dtype),c?h.as4D(h.shape[1],h.shape[2],h.shape[3],h.shape[4]):h}});var ml=An({slice_:function(t,e,n){var r,o,a=mn(t,"x","slice");if(0===a.rank)throw new Error("Slicing scalar is not possible");(r="number"==typeof e?[e].concat(new Array(a.rank-1).fill(0)):e.length=0?t:(C(-1===t,(function(){return "Negative size values should be exactly -1 but got "+t+" for the slice() size at index "+e+"."})),a.shape[e]-r[e])})),eo(a,r,o);var i=a.shape,s={begin:r,size:o};return Lt.runKernelFunc((function(t){return t.slice(a,r,o)}),{x:a},(function(t){for(var e=[],n=0;n0&&(e=e.sum(a)),e.reshape(r.shape)}}}),"Prelu")}}),Bl=An({relu_:function(t){var e=mn(t,"x","relu");return "bool"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0];return {x:function(){return t.mulStrict(n.step().toFloat())}}}),"Relu")}}),Pl=An({relu6_:function(t){var e=mn(t,"x","relu6");return "bool"===e.dtype?e.toInt():Lt.runKernelFunc((function(t,n){var r=t.relu6(e);return n([e]),r}),{x:e},(function(t,e){var n=e[0],r=n.lessEqual(6).mul(n.step());return {x:function(){return t.mulStrict(r.toFloat())}}}),"Relu6")}}),Ll=An({selu_:function(t){var e=mn(t,"x","selu");return Lt.runKernelFunc((function(t,n){var r=t.selu(e);return n([e]),r}),{$x:e},(function(t,e){var n=e[0];return {$x:function(){var e=n.greater(On(0)),r=On(bs),o=On(ws),a=t.mul(o),i=t.mul(r).mul(n.toFloat().exp());return ec(e,a,i)}}}))}});var Wl=An({transpose_:function(t,e){var n=mn(t,"x","transpose");if(null==e&&(e=n.shape.map((function(t,e){return e})).reverse()),C(n.rank===e.length,(function(){return "Error in transpose: rank of input "+n.rank+" must match length of perm "+e+"."})),e.forEach((function(t){C(t>=0&&to)throw new Error("'k' passed to topk() must be <= the last dimension ("+o+") but got "+e);var a=Lt.runKernelFunc((function(t){return t.topk(r,e,n)}),{$x:r});return {values:a[0],indices:a[1]}}});var jl=An({scatterND_:function(t,e,n){var r=mn(t,"indices","scatterND","int32"),o=mn(e,"updates","scatterND");return Jr(o,r,n),Lt.runKernelFunc((function(t){return t.scatterND(r,o,n)}),{indices:r,updates:o},null,"ScatterNd",{shape:n})}});var Xl=An({fft_:function(t){C("complex64"===t.dtype,(function(){return "The dtype for tf.spectral.fft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.fft(r)}),{input:t}).reshape(t.shape)}}),Yl=An({ifft_:function(t){C("complex64"===t.dtype,(function(){return "The dtype for tf.spectral.ifft() must be complex64 but got "+t.dtype+"."}));var e=t.shape[t.shape.length-1],n=t.size/e,r=t.as2D(n,e);return Lt.runKernelFunc((function(t){return t.ifft(r)}),{input:t}).reshape(t.shape)}}),$l=An({rfft_:function(t,e){C("float32"===t.dtype,(function(){return "The dtype for rfft() must be real value but got "+t.dtype}));var n,r=t.shape[t.shape.length-1],o=t.size/r;if(null!=e&&er){var s=t.shape.map((function(t){return t}));s[t.shape.length-1]=e-r,n=t.concat(Gn(s),t.shape.length-1),r=e;}else n=t;var u=n.zerosLike(),c=Dn(n,u).as2D(o,r),l=Xl(c),h=Math.floor(r/2)+1,f=Tn(l),d=Nn(l),p=f.split([h,r-h],f.shape.length-1),v=d.split([h,r-h],d.shape.length-1),m=n.shape.slice();return m[n.shape.length-1]=h,Dn(p[0],v[0]).reshape(m)}}),Ql=An({irfft_:function(t){var e=t.shape[t.shape.length-1],n=t.size/e;if(e<=2){var r=t.as2D(n,e),o=Yl(r);return Tn(o)}var a=[n,2*(e-1)],i=Tn(t).as2D(n,e),s=Nn(t).as2D(n,e),u=i.slice([0,1],[n,e-2]).reverse(1),c=s.slice([0,1],[n,e-2]).reverse(1).mul(On(-1)),l=i.concat(u,1),h=s.concat(c,1);return r=Dn(l,h).as2D(a[0],a[1]),o=Yl(r),Tn(o)}}),Jl=Object.freeze({fft:Xl,ifft:Yl,rfft:$l,irfft:Ql});var Zl=An({sparseToDense_:function(t,e,n,r){void 0===r&&(r=0);var o=mn(t,"sparseIndices","sparseToDense","int32"),a=mn(e,"sparseValues","sparseToDense"),i=mn(r,"defaultValue","sparseToDense",a.dtype);return function(t,e,n,r){if("int32"!==t.dtype)throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+t.shape+".");var o=t.rank>0?t.shape[0]:1,a=t.rank>1?t.shape[1]:1;if(n.length!==a)throw new Error("outputShape has incorrect number of elements:, "+n.length+", should be: "+a+".");var i=e.size;if(0!==e.rank&&(1!==e.rank||i!==o))throw new Error("sparseValues has incorrect shape "+e.shape+", should be [] or ["+o+"]");if(e.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(o,a,n,i),Lt.runKernelFunc((function(t){return t.sparseToDense(o,a,n,i)}),{$sparseIndices:o,$sparseValues:a,$defaultValue:i})}});var th=An({gatherND_:function(t,e){var n=mn(e,"indices","gatherND","int32"),r=mn(t,"x","gatherND");return Lt.runKernelFunc((function(t){return t.gatherND(r,n)}),{x:r,indices:n},null,"GatherNd")}});var eh=An({diag_:function(t){var e=mn(t,"x","diag").flatten(),n=t.shape.concat(t.shape);return Lt.runKernelFunc((function(t){return t.diag(e)}),{$x:e}).reshape(n)}});var nh=An({dropout_:function(t,e,n,r){var o=mn(t,"x","dropout");if(C("float32"===o.dtype,(function(){return "x has to be a floating point tensor since it's going to be scaled, but got a "+o.dtype+" tensor instead."})),C(e>=0&&e<1,(function(){return "rate must be a float in the range [0, 1), but got "+e+"."})),0===e)return t instanceof wt?o.clone():o;var a=function(t,e){if(null==e)return t.shape.slice();if(S(t.shape,e))return e;if(t.shape.length===e.length){for(var n=[],r=0;r1,(function(){return "inTopK() expects the predictions to be of rank 2 or higher, but got "+n.rank})),C(n.rank-1===a.rank,(function(){return "predictions rank should be 1 larger than targets rank, but got predictions rank "+n.rank+" and targets rank "+a.rank})),E(n.shape.slice(0,n.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),i=n.shape[n.shape.length-1],C(o>0&&o<=i,(function(){return "'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+i+"), but got "+o})),[4,n.data()];case 1:return s=r.sent(),[4,a.data()];case 2:for(u=r.sent(),c=[s.length/i,i],h=c[1],f=B("bool",l=c[0]),d=0;d1?s.div(On(i)):s}if(n===ch.SUM_BY_NONZERO_WEIGHTS){if(null==o)return a.sum().div(On(r.size));var u=o.mul(zn(r.shape)).notEqual(On(0)).sum().toFloat();return a.sum().div(u)}throw Error("Unknown reduction: "+n)}}),dh=An({cosineDistance_:function(t,e,n,r,o){void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,"labels","cosineDistance"),i=mn(e,"predictions","cosineDistance"),s=null;null!=r&&(s=mn(r,"weights","cosineDistance")),E(a.shape,i.shape,"Error in cosineDistance: ");var u=On(1).sub(a.mul(i).sum(n,!0));return fh(u,s,o)}}),ph=An({hingeLoss_:function(t,e,n,r){void 0===r&&(r=ch.SUM_BY_NONZERO_WEIGHTS);var o=mn(t,"labels","hingeLoss"),a=mn(e,"predictions","hingeLoss"),i=null;null!=n&&(i=mn(n,"weights","hingeLoss")),E(o.shape,a.shape,"Error in hingeLoss: ");var s=On(1);o=On(2).mul(o).sub(s);var u=s.sub(o.mul(a)).relu();return fh(u,i,r)}}),vh=An({huberLoss_:function(t,e,n,r,o){void 0===r&&(r=1),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,"labels","huberLoss"),i=mn(e,"predictions","huberLoss"),s=null;null!=n&&(s=mn(n,"weights","huberLoss")),E(a.shape,i.shape,"Error in huberLoss: ");var u=On(r),c=i.sub(a).abs(),l=dc(c,u),h=c.sub(l),f=On(.5).mul(l.square()).add(u.mul(h));return fh(f,s,o)}}),mh=An({logLoss_:function(t,e,n,r,o){void 0===r&&(r=1e-7),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,"labels","logLoss"),i=mn(e,"predictions","logLoss"),s=null;null!=n&&(s=mn(n,"weights","logLoss")),E(a.shape,i.shape,"Error in logLoss: ");var u=On(1),c=On(r),l=a.mul(i.add(c).log()).neg().sub(u.sub(a).mul(u.sub(i).add(c).log()));return fh(l,s,o)}}),gh=An({meanSquaredError_:function(t,e,n,r){void 0===r&&(r=ch.SUM_BY_NONZERO_WEIGHTS);var o=mn(t,"labels","meanSquaredError"),a=mn(e,"predictions","meanSquaredError"),i=null;null!=n&&(i=mn(n,"weights","meanSquaredError")),E(o.shape,a.shape,"Error in meanSquaredError: ");var s=o.squaredDifference(a);return fh(s,i,r)}}),yh=An({sigmoidCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,"multiClassLabels","sigmoidCrossEntropy"),i=mn(e,"logits","sigmoidCrossEntropy"),s=null;if(null!=n&&(s=mn(n,"weights","sigmoidCrossEntropy")),E(a.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){var u=On(r),c=On(1),l=On(.5);a=a.mul(c.sub(u)).add(l.mul(u));}var h=function(t,e){var n=mn(t,"labels","sigmoidCrossEntropyWithLogits"),r=mn(e,"logits","sigmoidCrossEntropyWithLogits");E(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");var o=r.relu(),a=r.mul(n),i=r.abs().neg().exp().log1p();return o.sub(a).add(i)}(a,i);return fh(h,s,o)}}),xh=An({softmaxCrossEntropy_:function(t,e,n,r,o){void 0===r&&(r=0),void 0===o&&(o=ch.SUM_BY_NONZERO_WEIGHTS);var a=mn(t,"onehotLabels","softmaxCrossEntropy"),i=mn(e,"logits","softmaxCrossEntropy"),s=null;if(null!=n&&(s=mn(n,"weights","softmaxCrossEntropy")),E(a.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){var u=On(r),c=On(1),l=On(a.shape[1]);a=a.mul(c.sub(u)).add(u.div(l));}var h=function(t,e,n){if(void 0===n&&(n=-1),-1===n&&(n=e.rank-1),n!==e.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+e.rank+" and dim was "+n);return vo((function(t,e,r){var o=e.logSumExp([n],!0),a=e.toFloat().sub(o);r([t,a]);return {value:a.mul(t).neg().sum([n]),gradFunc:function(t,e){var r=e[0],o=e[1],a=wn(t.shape,[n]);return [t.reshape(a).mul(r.toFloat().sub(o.exp())),t.reshape(a).mul(o.exp().sub(r.toFloat()))]}}}))(t,e)}(a,i);return fh(h,s,o)}}),bh=Object.freeze({get Reduction(){return ch},absoluteDifference:hh,computeWeightedLoss:fh,cosineDistance:dh,hingeLoss:ph,huberLoss:vh,logLoss:mh,meanSquaredError:gh,sigmoidCrossEntropy:yh,softmaxCrossEntropy:xh});function wh(t,e){return void 0===e&&(e=!1),Lt.tidy((function(){if(2!==t.shape.length)throw new Error("qr2d() requires a 2D Tensor, but got a "+t.shape.length+"D Tensor.");for(var n=t.shape[0],r=t.shape[1],o=Cr(n),a=t.clone(),i=Bn([[1]],[1,1]),s=i.clone(),u=n>=r?r:n,c=function(t){var e,u=a,c=s,l=o;e=Lt.tidy((function(){var e=a.slice([t,t],[n-t,1]),u=e.norm(),c=a.slice([t,t],[1,1]),l=Bn([[-1]]).where(c.greater(0),Bn([[1]])),h=c.sub(l.mul(u)),f=e.div(h);s=1===f.shape[0]?i.clone():i.concat(f.slice([1,0],[f.shape[0]-1,f.shape[1]]),0);var d=l.matMul(h).div(u).neg(),p=a.slice([t,0],[n-t,r]),v=d.mul(s);if(0===t)a=p.sub(v.matMul(s.transpose().matMul(p)));else {var m=p.sub(v.matMul(s.transpose().matMul(p)));a=a.slice([0,0],[t,r]).concat(m,0);}var g=o.slice([0,t],[n,o.shape[1]-t]);if(0===t)o=g.sub(g.matMul(s).matMul(v.transpose()));else {var y=g.sub(g.matMul(s).matMul(v.transpose()));o=o.slice([0,0],[n,t]).concat(y,1);}return [s,a,o]})),s=e[0],a=e[1],o=e[2],tn([u,c,l]);},l=0;lr&&(o=o.slice([0,0],[n,r]),a=a.slice([0,0],[r,r])),[o,a]}))}var Ch=An({bandPart_:function(t,e,n){if(e%1!=0)throw new Error("bandPart(): numLower must be an integer, got "+e+".");if(n%1!=0)throw new Error("bandPart(): numUpper must be an integer, got "+n+".");var r=mn(t,"a","bandPart");if(r.rank<2)throw new Error("bandPart(): Rank must be at least 2, got "+r.rank+".");var o=r.shape,a=r.shape.slice(-2),i=a[0],s=a[1];if(!(e<=i))throw new Error("bandPart(): numLower ("+e+") must not be greater than the number of rows ("+i+").");if(!(n<=s))throw new Error("bandPart(): numUpper ("+n+") must not be greater than the number of columns ("+s+").");e<0&&(e=i),n<0&&(n=s);var u=Kn(0,i,1,"int32").reshape([-1,1]),c=Kn(0,s,1,"int32"),l=Cc(u,c),h=Qu(l.lessEqual(On(+e,"int32")),l.greaterEqual(On(-n,"int32"))),f=Gn([i,s],r.dtype);return Pr(Ur(r.reshape([-1,i,s])).map((function(t){return ec(h,t,f)}))).reshape(o)}}),Eh=An({gramSchmidt_:function(t){var e;if(Array.isArray(t)){e=!1,C(null!=t&&t.length>0,(function(){return "Gram-Schmidt process: input must not be null, undefined, or empty"}));for(var n=t[0].shape[0],r=function(e){C(t[e].shape[0]===n,(function(){return "Gram-Schmidt: Non-unique lengths found in the input vectors: ("+t[e].shape[0]+" vs. "+n+")"}));},o=1;o0)for(var n=0;n= 2, but got rank "+t.rank);if(2===t.rank)return wh(t,e);var n=t.shape.slice(0,t.shape.length-2).reduce((function(t,e){return t*e})),r=Ur(t.reshape([n,t.shape[t.shape.length-2],t.shape[t.shape.length-1]]),0),o=[],a=[];return r.forEach((function(t){var n=wh(t,e),r=n[0],i=n[1];o.push(r),a.push(i);})),[Pr(o,0).reshape(t.shape),Pr(a,0).reshape(t.shape)]}}),Ih=Object.freeze({bandPart:Ch,gramSchmidt:Eh,qr:Rh});function kh(t,e,n,r,o,a){null==r&&(r=.5),null==o&&(o=Number.NEGATIVE_INFINITY),null==a&&(a=0);var i=t.shape[0];return n=Math.min(n,i),C(0<=r&&r<=1,(function(){return "iouThreshold must be in [0, 1], but was '"+r+"'"})),C(2===t.rank,(function(){return "boxes must be a 2D tensor, but was of rank '"+t.rank+"'"})),C(4===t.shape[1],(function(){return "boxes must have 4 columns, but 2nd dimension was "+t.shape[1]})),C(1===e.rank,(function(){return "scores must be a 1D tensor"})),C(e.shape[0]===i,(function(){return "scores has incompatible shape with boxes. Expected "+i+", but was "+e.shape[0]})),C(0<=a&&a<=1,(function(){return "softNmsSigma must be in [0, 1], but was '"+a+"'"})),{maxOutputSize:n,iouThreshold:r,scoreThreshold:o,softNmsSigma:a}}var Sh=An({resizeBilinear_:function(t,e,n){void 0===n&&(n=!1);var r=mn(t,"images","resizeBilinear");C(3===r.rank||4===r.rank,(function(){return "Error in resizeBilinear: x must be rank 3 or 4, but got rank "+r.rank+"."})),C(2===e.length,(function(){return "Error in resizeBilinear: new shape must 2D, but got shape "+e+"."}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeBilinear(o,i,s,n)}),{x:o},(function(t,e){return {x:function(){return Lt.runKernelFunc((function(r){return r.resizeBilinearBackprop(t,e[0],n)}),{})}}}),"ResizeBilinear",{alignCorners:n,newHeight:i,newWidth:s});return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Ah=An({resizeNearestNeighbor_:function(t,e,n){void 0===n&&(n=!1);var r=mn(t,"images","resizeNearestNeighbor");C(3===r.rank||4===r.rank,(function(){return "Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+r.rank+"."})),C(2===e.length,(function(){return "Error in resizeNearestNeighbor: new shape must 2D, but got shape "+e+"."})),C("float32"===r.dtype||"int32"===r.dtype,(function(){return "`images` must have `int32` or `float32` as dtype"}));var o=r,a=!1;3===r.rank&&(a=!0,o=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var i=e[0],s=e[1],u=Lt.runKernelFunc((function(t,e){return e([o]),t.resizeNearestNeighbor(o,i,s,n)}),{batchImages:o},(function(t,e){return {batchImages:function(){return Lt.runKernelFunc((function(r){return r.resizeNearestNeighborBackprop(t,e[0],n)}),{})}}}));return a?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Dh=An({nonMaxSuppression_:function(t,e,n,r,o){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY);var a=mn(t,"boxes","nonMaxSuppression"),i=mn(e,"scores","nonMaxSuppression"),s=kh(a,i,n,r,o);n=s.maxOutputSize,r=s.iouThreshold,o=s.scoreThreshold;var u={maxOutputSize:n,iouThreshold:r,scoreThreshold:o};return Lt.runKernelFunc((function(t){return t.nonMaxSuppression(a,i,n,r,o)}),{boxes:a,scores:i},null,"NonMaxSuppressionV3",u)}}),Th=function(t,e,o,a,i){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),n(this,void 0,void 0,(function(){var n,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,"boxes","nonMaxSuppressionAsync"),s=mn(e,"scores","nonMaxSuppressionAsync"),u=kh(n,s,o,a,i),o=u.maxOutputSize,a=u.iouThreshold,i=u.scoreThreshold,[4,Promise.all([n.data(),s.data()])];case 1:return c=r.sent(),l=c[0],h=c[1],f=jo(l,h,o,a,i),n!==t&&n.dispose(),s!==e&&s.dispose(),[2,f]}}))}))},Nh=An({nonMaxSuppressionWithScore_:function(t,e,n,r,o,a){void 0===r&&(r=.5),void 0===o&&(o=Number.NEGATIVE_INFINITY),void 0===a&&(a=0);var i=mn(t,"boxes","nonMaxSuppression"),s=mn(e,"scores","nonMaxSuppression"),u=kh(i,s,n,r,o,a),c={maxOutputSize:n=u.maxOutputSize,iouThreshold:r=u.iouThreshold,scoreThreshold:o=u.scoreThreshold,softNmsSigma:a=u.softNmsSigma},l=Lt.runKernel("NonMaxSuppressionV5",{boxes:i,scores:s},c);return {selectedIndices:l[0],selectedScores:l[1]}}}),Fh=function(t,e,o,a,i,s){return void 0===a&&(a=.5),void 0===i&&(i=Number.NEGATIVE_INFINITY),void 0===s&&(s=0),n(this,void 0,void 0,(function(){var n,u,c,l,h,f,d;return r(this,(function(r){switch(r.label){case 0:return n=mn(t,"boxes","nonMaxSuppressionAsync"),u=mn(e,"scores","nonMaxSuppressionAsync"),c=kh(n,u,o,a,i,s),o=c.maxOutputSize,a=c.iouThreshold,i=c.scoreThreshold,s=c.softNmsSigma,[4,Promise.all([n.data(),u.data()])];case 1:return l=r.sent(),h=l[0],f=l[1],d=Xo(h,f,o,a,i,s),n!==t&&n.dispose(),u!==e&&u.dispose(),[2,d]}}))}))},_h=An({cropAndResize_:function(t,e,n,r,o,a){var i=mn(t,"image","cropAndResize"),s=mn(e,"boxes","cropAndResize","float32"),u=mn(n,"boxInd","cropAndResize","int32");o=o||"bilinear",a=a||0;var c=s.shape[0];return C(4===i.rank,(function(){return "Error in cropAndResize: image must be rank 4,but got rank "+i.rank+"."})),C(2===s.rank&&4===s.shape[1],(function(){return "Error in cropAndResize: boxes must be have size ["+c+",4] but had shape "+s.shape+"."})),C(1===u.rank&&u.shape[0]===c,(function(){return "Error in cropAndResize: boxInd must be have size ["+c+"] but had shape "+s.shape+"."})),C(2===r.length,(function(){return "Error in cropAndResize: cropSize must be of length 2, but got length "+r.length+"."})),C(r[0]>=1&&r[1]>=1,(function(){return "cropSize must be atleast [1,1], but was "+r})),C("bilinear"===o||"nearest"===o,(function(){return "method must be bilinear or nearest, but was "+o})),Lt.runKernelFunc((function(t,e){return t.cropAndResize(i,s,u,r,o,a)}),{images:i,boxes:s,boxInd:u},null,"CropAndResize",{method:o,extrapolationValue:a,cropSize:r})}}),Oh=Object.freeze({resizeBilinear:Sh,resizeNearestNeighbor:Ah,nonMaxSuppression:Dh,nonMaxSuppressionAsync:Th,nonMaxSuppressionWithScore:Nh,nonMaxSuppressionWithScoreAsync:Fh,cropAndResize:_h}),Mh=function(t,e){return !(t>0)||"linear"===e},Bh=function(t,e,n){if(null==n||"linear"===n)return t;if("relu"===n)return t.mul(e.step());throw new Error("Gradient for activation "+n+" has not been implemented yet.")},Ph=function(t,e){var n=e,r=Eo(t.shape,e.shape);return r.length>0&&(n=n.sum(r)),n.reshape(t.shape)},Lh=function(t,e,n){if("linear"===e)return t;if("relu"===e)return Bl(t);if("elu"===e)return _l(t);if("relu6"===e)return Pl(t);if("prelu"===e)return Ml(t,n);throw new Error("Unknown fused activation "+e+".")};var Wh=An({fusedMatMul_:function(t){var e,n=t.a,r=t.b,o=t.transposeA,a=void 0!==o&&o,i=t.transposeB,s=void 0!==i&&i,u=t.bias,c=t.activation,l=void 0===c?"linear":c,h=t.preluActivationWeights;if(!1===Mh(Lt.state.gradientDepth,l)){var f=el(n,r,a,s);return null!=u&&(f=rc(f,u)),Lh(f,l,h)}var d=mn(n,"a","fused matMul"),p=mn(r,"b","fused matMul");e=Nt(d,p),d=e[0],p=e[1];var v=a?d.shape[d.rank-2]:d.shape[d.rank-1],m=s?p.shape[p.rank-1]:p.shape[p.rank-2],g=a?d.shape[d.rank-1]:d.shape[d.rank-2],y=s?p.shape[p.rank-2]:p.shape[p.rank-1],x=d.shape.slice(0,-2),b=p.shape.slice(0,-2),w=k(x),E=k(b);C(d.rank>=2&&p.rank>=2&&d.rank===p.rank,(function(){return "Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+d.rank+" and "+p.rank+"."})),C(S(x,b),(function(){return "Error in fused matMul: outer dimensions ("+x+") and ("+b+") of Tensors with shapes "+d.shape+" and "+p.shape+" must match."})),C(v===m,(function(){return "Error in fused matMul: inner shapes ("+v+") and ("+m+") of Tensors with shapes "+d.shape+" and "+p.shape+" and transposeA="+a+" and transposeB="+s+" must match."}));var R,I,A=d.shape.slice(0,-2).concat([g,y]),D=a?d.as3D(w,v,g):d.as3D(w,g,v),T=s?p.as3D(E,y,m):p.as3D(E,m,y);null!=u&&Ro(A,(R=Nt(R=mn(u,"bias","fused matMul"),d)[0]).shape),null!=h&&(I=mn(h,"prelu weights","fused matMul"));var N={a:D,b:T};null!=u&&(N.bias=R),null!=h&&(N.preluActivationWeights=I);var F=[D,T];return Lt.runKernelFunc((function(t,e){var n=t.fusedBatchMatMul({a:D,b:T,transposeA:a,transposeB:s,bias:R,activation:l,preluActivationWeights:I});return e([D,T,n]),n}),N,(function(t,e){var n=e[0],r=e[1],o=e[2],i=Bh(t,o,l),c={};return null!=u&&(c={bias:function(){return Ph(R,i)}}),a||s?!a&&s?Object.assign({a:function(){return i.matMul(r,!1,!1)},b:function(){return i.matMul(n,!0,!1)}},c):a&&!s?Object.assign({a:function(){return r.matMul(i,!1,!0)},b:function(){return n.matMul(i,!1,!1)}},c):Object.assign({a:function(){return r.matMul(i,!0,!0)},b:function(){return i.matMul(n,!0,!0)}},c):Object.assign({a:function(){return i.matMul(r,!1,!0)},b:function(){return n.matMul(i,!0,!1)}},c)}),"_FusedMatMul",{transposeA:a,transposeB:s,activation:l},F,[!0]).reshape(A)}}),Uh=An({fusedConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?"NHWC":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?"linear":h,d=t.preluActivationWeights;if(f=f||"linear",!1===Mh(Lt.state.gradientDepth,f)){var p=qc(e,n,r,o,i,u,c);return null!=l&&(p=rc(p,l)),Lh(p,f,d)}var v=mn(e,"x","conv2d"),m=mn(n,"filter","conv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===g.rank,(function(){return "Error in fused conv2d: input must be rank 4, but got rank "+g.rank+"."})),C(4===m.rank,(function(){return "Error in fused conv2d: filter must be rank 4, but got rank "+m.rank+"."})),null!=c&&C(A(o),(function(){return "Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+c+" but got pad "+o+"."})),C(g.shape[3]===m.shape[2],(function(){return "Error in conv2d: depth of input ("+g.shape[3]+") must match input depth for filter "+m.shape[2]+"."})),C(Mo(r,u),(function(){return "Error in conv2D: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),C("NHWC"===i,(function(){return "Error in conv2d: got dataFormat of "+i+" but only NHWC is currently supported."}));var x,b,w=So(g.shape,m.shape,r,u,o,c);null!=l&&(x=Nt(x=mn(l,"bias","fused conv2d"),v)[0],Ro(w.outShape,x.shape)),null!=d&&(b=mn(d,"prelu weights","fused conv2d"));var E={x:g,filter:m};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[m,g],I=Lt.runKernelFunc((function(t,e){var n=t.fusedConv2d({input:g,filter:m,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([m,g,n]),n}),E,(function(t,e){var n=e,a=n[0],i=n[1],s=n[2],c=Bh(t,s,f);C(Oo(u),(function(){return "Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"}));var h={};return null!=l&&(h={bias:function(){return Ph(x,c)}}),Object.assign({x:function(){return Xc(i.shape,c,a,r,o)},filter:function(){return jc(i,c,a.shape,r,o)}},h)}),"FusedConv2D",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),Vh=An({fusedDepthwiseConv2d_:function(t){var e=t.x,n=t.filter,r=t.strides,o=t.pad,a=t.dataFormat,i=void 0===a?"NHWC":a,s=t.dilations,u=void 0===s?[1,1]:s,c=t.dimRoundingMode,l=t.bias,h=t.activation,f=void 0===h?"linear":h,d=t.preluActivationWeights;if(!1===Mh(Lt.state.gradientDepth,f)){var p=Yc(e,n,r,o,i,u,c);return null!=l&&(p=rc(p,l)),Lh(p,f,d)}var v=mn(e,"x","depthwiseConv2d"),m=mn(n,"filter","depthwiseConv2d"),g=v,y=!1;3===v.rank&&(y=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),C(4===g.rank,(function(){return "Error in fused depthwiseConv2d: input must be rank 4, but got rank "+g.rank+"."})),C(4===m.rank,(function(){return "Error in fused depthwiseConv2d: filter must be rank 4, but got rank "+m.rank+"."})),C(g.shape[3]===m.shape[2],(function(){return "Error in fused depthwiseConv2d: number of input channels ("+g.shape[3]+") must match the inChannels dimension in filter "+m.shape[2]+"."})),null==u&&(u=[1,1]),C(Mo(r,u),(function(){return "Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides "+r+" and dilations '"+u+"'"})),null!=c&&C(A(o),(function(){return "Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode "+c+" but got pad "+o+"."}));var x,b,w=So(g.shape,m.shape,r,u,o,c,!0);null!=l&&(x=Nt(x=mn(l,"bias","fused conv2d"),v)[0],Ro(w.outShape,x.shape)),null!=d&&(b=mn(d,"prelu weights","fused depthwiseConv2d"));var E={x:g,filter:m};null!=l&&(E.bias=x),null!=d&&(E.preluActivationWeights=b);var R=[m,g],I=Lt.runKernelFunc((function(t,e){var n=t.fusedDepthwiseConv2D({input:g,filter:m,convInfo:w,bias:x,activation:f,preluActivationWeights:b});return e([m,g,n]),n}),E,(function(t,e){C(Oo(u),(function(){return "Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+u+"'"}));var n=e[0],r=e[1],o=e[2],a=Bh(t,o,f),i={};return null!=l&&(i={bias:function(){return Ph(x,a)}}),Object.assign({x:function(){return $c(r.shape,a,n,w)},filter:function(){return Qc(r,a,n.shape,w)}},i)}),"FusedDepthwiseConv2D",{convInfo:w,activation:f},R,[!0]);return y?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),zh=Object.freeze({matMul:Wh,conv2d:Uh,depthwiseConv2d:Vh}),Gh=Object.freeze({image:Oh,linalg:Ih,losses:bh,spectral:Jl,fused:zh,signal:uh,square:tu,squaredDifference:nu,conv1d:Hc,conv2d:qc,conv3d:Kc,depthwiseConv2d:Yc,separableConv2d:Jc,conv2dTranspose:Zc,conv3dTranspose:tl,op:An,batchNormalization2d:Gu,batchNormalization3d:Hu,batchNormalization4d:qu,batchNormalization:Ku,batchNorm:ju,batchNorm2d:Xu,batchNorm3d:Yu,batchNorm4d:$u,booleanMaskAsync:Uc,complex:Dn,real:Tn,imag:Nn,concat:Yn,concat1d:$n,concat2d:Qn,concat3d:Jn,concat4d:Zn,split:tr,matMul:el,dot:nl,outerProduct:rl,reverse:ol,reverse1d:al,reverse2d:il,reverse3d:sl,reverse4d:ul,maxPool:hl,avgPool:fl,pool:dl,maxPool3d:pl,avgPool3d:vl,slice:ml,slice1d:gl,slice2d:yl,slice3d:xl,slice4d:bl,abs:ru,acos:ou,acosh:au,asin:iu,asinh:su,atan:uu,atanh:cu,ceil:lu,clipByValue:hu,cos:fu,cosh:du,erf:pu,exp:vu,expm1:mu,floor:gu,log:yu,log1p:xu,logSigmoid:bu,neg:wu,reciprocal:Cu,round:Eu,rsqrt:Ru,sigmoid:Iu,sign:ku,isNaN:Su,isInf:Au,isFinite:Du,sin:Tu,sinh:Nu,softplus:Fu,sqrt:_u,step:Ou,tan:Mu,tanh:Bu,all:Cl,any:El,argMax:Rl,argMin:Il,logSumExp:kl,max:Sl,mean:Al,min:Dl,moments:Tl,sum:Nl,prod:Fl,equal:Rc,equalStrict:Ic,greater:kc,greaterEqual:Sc,greaterEqualStrict:Ac,greaterStrict:Dc,less:Tc,lessEqual:Nc,lessEqualStrict:Fc,lessStrict:_c,notEqual:Oc,notEqualStrict:Mc,add:rc,addN:oc,addStrict:ac,atan2:ic,div:sc,divNoNan:uc,divStrict:cc,floorDiv:lc,maximum:hc,maximumStrict:fc,minimum:dc,minimumStrict:pc,mod:vc,modStrict:mc,mul:gc,mulStrict:yc,pow:xc,powStrict:bc,squaredDifferenceStrict:wc,sub:Cc,subStrict:Ec,elu:_l,leakyRelu:Ol,prelu:Ml,relu:Bl,relu6:Pl,selu:Ll,logicalAnd:Qu,logicalNot:Ju,logicalOr:Zu,logicalXor:tc,where:ec,whereAsync:nc,buffer:dr,print:pr,batchToSpaceND:vr,broadcastTo:mr,cast:gr,clone:yr,cumsum:xr,depthToSpace:br,expandDims:wr,eye:Cr,multinomial:Er,oneHot:Rr,pad:Ir,pad1d:kr,pad2d:Sr,pad3d:Ar,pad4d:Dr,rand:Tr,randomNormal:Nr,randomGamma:Fr,randomUniform:_r,reshape:Or,spaceToBatchND:Mr,squeeze:Br,stack:Pr,tile:Lr,truncatedNormal:Wr,unstack:Ur,setdiff1dAsync:Vr,fill:Hn,linspace:qn,ones:zn,range:Kn,scalar:On,tensor:Fn,tensor1d:Mn,tensor2d:Bn,tensor3d:Pn,tensor4d:Ln,tensor5d:Wn,tensor6d:Un,variable:Vn,zeros:Gn,onesLike:jn,zerosLike:Xn,transpose:Wl,softmax:go,logSoftmax:yo,localResponseNormalization:Ul,norm:Vl,gather:Lc,unsortedSegmentSum:Wc,basicLSTMCell:zl,multiRNNCell:Gl,movingAverage:Hl,stridedSlice:ql,topk:Kl,scatterND:jl,fft:Xl,ifft:Yl,rfft:$l,irfft:Ql,sparseToDense:Zl,gatherND:th,diag:eh,dropout:nh,hannWindow:oh,hammingWindow:ah,frame:ih,stft:sh,inTopKAsync:lh});function Hh(t,e){Array.isArray(t)||(t=[t]),t.forEach((function(t){null!=t&&C("complex64"!==t.dtype,(function(){return e+" does not support complex64 tensors."}));}));}function qh(t,e,n,r){if("linear"===n)return t.linear(e);if("relu"===n)return t.relu(e);if("elu"===n)return t.elu(e);if("relu6"===n)return t.relu6(e);if("prelu"===n)return t.prelu(e,r);throw new Error("Activation "+n+" has not been implemented for the CPU backend.")}var Kh=function(t){function o(){var e=t.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new xo(e,Lt),e}return e(o,t),o.prototype.write=function(t,e,n){this.firstUse&&(this.firstUse=!1,i().get("IS_NODE")&&dn("\n============================\nHi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.\n============================"));var r={};return this.data.set(r,{values:t,dtype:n}),r},o.prototype.move=function(t,e,n,r){this.data.set(t,{values:e,dtype:r});},o.prototype.numDataIds=function(){return this.data.numDataIds()},o.prototype.read=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){return [2,this.readSync(t)]}))}))},o.prototype.readSync=function(t){var e=this.data.get(t),n=e.dtype,r=e.complexTensors;return "complex64"===n?Vo(this.readSync(r.real.dataId),this.readSync(r.imag.dataId)):this.data.get(t).values},o.prototype.bufferSync=function(t){var e=this.readSync(t.dataId),n=e;if("string"===t.dtype)try{n=e.map((function(t){return ot(t)}));}catch(t){throw new Error("Failed to decode encoded string bytes into utf-8")}return dr(t.shape,t.dtype,n)},o.prototype.makeOutput=function(t,e,n){var r=this.write(t,e,n);return Lt.makeTensorFromDataId(r,e,n,this)},o.prototype.disposeData=function(t){if(this.data.has(t)){var e=this.data.get(t).complexTensors;null!=e&&(e.real.dispose(),e.imag.dispose()),this.data.delete(t);}},o.prototype.time=function(t){return n(this,void 0,void 0,(function(){var e;return r(this,(function(n){return e=et(),t(),[2,{kernelMs:et()-e}]}))}))},o.prototype.memory=function(){return {unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},o.prototype.complex=function(t,e){var n=this.makeOutput(null,t.shape,"complex64");return this.data.get(n.dataId).complexTensors={real:Lt.keep(t.clone()),imag:Lt.keep(e.clone())},n},o.prototype.real=function(t){return this.data.get(t.dataId).complexTensors.real.clone()},o.prototype.imag=function(t){return this.data.get(t.dataId).complexTensors.imag.clone()},o.prototype.slice=function(t,e,n){if(Hh(t,"slice"),io(t.shape,e,n)){var r=so(e,t.strides),o=k(n);return Fn(this.readSync(t.dataId).subarray(r,r+o),n,t.dtype)}for(var a=dr(n,t.dtype),i=this.bufferSync(t),s=0;sf&&(f=v,d=p);}u[l]=d;}return i},o.prototype.cumsum=function(t,e,n,r){if(Hh(t,"cumsum"),e!==t.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(t.rank-1)+" but got axis="+e);for(var o=Dt(t.dtype,"int32"),a=Gn(t.shape,o),i=this.readSync(a.dataId),s=this.readSync(t.dataId),u=t.shape[t.rank-1],c=r?function(t,e){return t+u-e-1}:function(t,e){return t+e},l=0;le?1:0}))},o.prototype.greaterEqual=function(t,e){return Hh([t,e],"greaterEqual"),this.broadcastedBinaryOp(t,e,"bool",(function(t,e){return t>=e?1:0}))},o.prototype.logicalNot=function(t){Hh(t,"logicalNot");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r1||1===e.rank?1:k(e.shape.slice(1)),l=0;l=0&&e>=0?n:(n+e)%e}))},o.prototype.max=function(t,e){Hh(t,"max"),Cn("max",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;ch&&(h=d);}s[c]=h;}return a},o.prototype.maximum=function(t,e){return Hh([t,e],"maximum"),this.broadcastedBinaryOp(t,e,t.dtype,(function(t,e){return Math.max(t,e)}))},o.prototype.all=function(t,e){Hh(t,"all"),Cn("all",e,t.rank);for(var n=bn(t.shape,e),r=n[0],o=n[1],a=Gn(r,t.dtype),i=k(o),s=this.readSync(a.dataId),u=this.readSync(t.dataId),c=0;c0?n[r]=1:n[r]=0;return this.makeOutput(n,t.shape,"float32")},o.prototype.isNaN=function(t){Hh(t,"x");for(var e=this.readSync(t.dataId),n=new Uint8Array(e.length),r=0;r.5?n[r]=Math.ceil(e[r]):n[r]=o%2==0?o:o+1;}return this.makeOutput(n,t.shape,"float32")},o.prototype.exp=function(t){Hh(t,"exp");for(var e=this.readSync(t.dataId),n=new Float32Array(e.length),r=0;r=0?o:Math.exp(o)-1;}return this.makeOutput(e,t.shape,"float32")},o.prototype.eluDer=function(t,e){Hh([t,e],"eluDer");for(var n=new Float32Array(e.size),r=this.readSync(e.dataId),o=this.readSync(t.dataId),a=0;a=1?o[a]:o[a]*(i+1);}return this.makeOutput(n,e.shape,"float32")},o.prototype.selu=function(t){Hh(t,"selu");for(var e=bs,n=ws,r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;a=0?n*i:e*(Math.exp(i)-1);}return this.makeOutput(r,t.shape,"float32")},o.prototype.clip=function(t,e,n){Hh(t,"clip");for(var r=new Float32Array(t.size),o=this.readSync(t.dataId),a=0;an?n:i-e,i=r[o]0?1:e;}return this.makeOutput(n,t.shape,"float32")},o.prototype.fusedConv2d=function(t){var e=t.input,n=t.filter,r=t.convInfo,o=t.bias,a=t.activation,i=t.preluActivationWeights,s=this.conv2d(e,n,r);return o&&(s=this.add(s,o)),a&&(s=qh(this,s,a,i)),s},o.prototype.conv2d=function(t,e,n){Hh([t,e],"conv2d");for(var r=n.filterHeight,o=n.filterWidth,a=n.dilationHeight,i=n.dilationWidth,s=n.padInfo.left,u=n.padInfo.top,c="channelsLast"===n.dataFormat,l=dr(n.outShape,t.dtype),h=t.strides[0],f=c?t.strides[1]:t.strides[2],d=c?t.strides[2]:1,p=c?1:t.strides[1],v=l.strides[0],m=c?l.strides[1]:l.strides[2],g=c?l.strides[2]:1,y=c?1:l.strides[1],x=this.readSync(t.dataId),b=this.readSync(e.dataId),w=l.values,C=0;C=n.inHeight))for(var T=A*e.strides[0],N=E+D*f,F=0;F=n.inWidth))for(var P=N+B*d,L=T+M*e.strides[1],W=0;W=n.inDepth))for(var R=C*e.strides[0],I=g+E*t.strides[1],k=0;k=n.inHeight))for(var N=R+D*e.strides[1],F=I+T*t.strides[2],_=0;_=n.inWidth))for(var L=N+B*e.strides[2],W=F+P*n.inChannels,U=L,V=0;V=n.inHeight))for(var C=b*e.strides[0],E=v+w*t.strides[1],R=0;R=n.inWidth))for(var D=C+S*e.strides[1],T=E+A*n.inChannels,N=I,F=D,_=0;_N?N=P:"avg"===n&&(F+=P,_++);}if(isNaN(N))break}p[k+S*g+w]="avg"===n?F/_:N;}return d.toTensor()},o.prototype.maxPool=function(t,e){return this.pool(t,e,"max")},o.prototype.maxPoolPositions=function(t,e){for(var n=dr(e.outShape,"int32"),r=e.strideHeight,o=e.strideWidth,a=e.dilationHeight,i=e.dilationWidth,s=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=e.padInfo.top,l=e.padInfo.left,h=this.bufferSync(t),f=0;fC&&(C=A,E=I*u+S);}n.set(E,f,p,y,d);}}return n.toTensor()},o.prototype.maxPoolBackprop=function(t,e,n,r){Hh([e,n],"maxPoolBackprop");for(var o=this.maxPoolPositions(e,r),a=r.strideHeight,i=r.strideWidth,s=r.dilationHeight,u=r.dilationWidth,c=r.effectiveFilterHeight,l=r.effectiveFilterWidth,h=l-1-r.padInfo.left,f=c-1-r.padInfo.top,d=dr(e.shape,"float32"),p=this.bufferSync(o),v=this.bufferSync(t),m=0;m=r.outHeight||Math.floor(R)!==R))for(var I=0;I=r.outWidth||Math.floor(k)!==k)){var S=c*l-1-p.get(m,R,k,g)===E*l+I?1:0;if(0!==S)C+=v.get(m,R,k,g)*S;}}}d.set(C,m,y,x,g);}return d.toTensor()},o.prototype.avgPoolBackprop=function(t,e,n){Hh([t,e],"avgPoolBackprop");for(var r=n.strideHeight,o=n.strideWidth,a=n.filterHeight,i=n.filterWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,h=l-1-n.padInfo.left,f=c-1-n.padInfo.top,d=dr(e.shape,"float32"),p=1/(a*i),v=this.bufferSync(t),m=0;m=n.outHeight||Math.floor(R)!==R))for(var I=0;I=n.outWidth||Math.floor(k)!==k))C+=v.get(m,R,k,g);}}d.set(C*p,m,y,x,g);}return d.toTensor()},o.prototype.pool3d=function(t,e,n){Hh(t,"pool3d");for(var r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v="max"===n?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=this.readSync(t.dataId),g=dr(e.outShape,t.dtype),y=g.values,x=e.outShape[1]*e.outShape[2]*e.outShape[3]*e.outShape[4],b=e.outShape[2]*e.outShape[3]*e.outShape[4],w=e.outShape[3]*e.outShape[4],C=e.outShape[4],E=0;Ez?z=$:"avg"===n&&(G+=$,H++),isNaN(z))break}if(isNaN(z))break}if(isNaN(z))break}y[V+k]="avg"===n?G/H:z;}}}return g.toTensor()},o.prototype.avgPool3d=function(t,e){return Hh(t,"avgPool3d"),this.pool3d(t,e,"avg").toFloat()},o.prototype.avgPool3dBackprop=function(t,e,n){Hh([t,e],"avgPool3dBackprop");for(var r=n.strideDepth,o=n.strideHeight,a=n.strideWidth,i=n.filterDepth,s=n.filterHeight,u=n.filterWidth,c=n.dilationDepth,l=n.dilationHeight,h=n.dilationWidth,f=n.effectiveFilterDepth,d=n.effectiveFilterHeight,p=n.effectiveFilterWidth,v=f-1-n.padInfo.front,m=p-1-n.padInfo.left,g=d-1-n.padInfo.top,y=dr(e.shape,"float32"),x=1/(i*s*u),b=this.bufferSync(t),w=0;w=n.outDepth||Math.floor(N)!==N))for(var F=0;F=n.outHeight||Math.floor(_)!==_))for(var O=0;O=n.outWidth||Math.floor(M)!==M))D+=b.get(w,N,_,M,C);}}}y.set(D*x,w,E,R,I,C);}return y.toTensor()},o.prototype.maxPool3d=function(t,e){return Hh(t,"maxPool3d"),this.pool3d(t,e,"max").toFloat()},o.prototype.maxPool3dPositions=function(t,e){for(var n=dr(e.outShape,"int32"),r=e.strideDepth,o=e.strideHeight,a=e.strideWidth,i=e.dilationDepth,s=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,l=e.effectiveFilterHeight,h=e.effectiveFilterWidth,f=e.padInfo.front,d=e.padInfo.top,p=e.padInfo.left,v=this.bufferSync(t),m=0;m=T&&(T=L,N=_*l*h+M*l+P);}n.set(N,m,y,C,k,g);}}}return n.toTensor()},o.prototype.maxPool3dBackprop=function(t,e,n,r){Hh([e,n],"maxPool3dBackprop");for(var o=this.maxPool3dPositions(e,r),a=r.strideDepth,i=r.strideHeight,s=r.strideWidth,u=r.dilationDepth,c=r.dilationHeight,l=r.dilationWidth,h=r.effectiveFilterDepth,f=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=h-1-r.padInfo.front,v=d-1-r.padInfo.left,m=f-1-r.padInfo.top,g=dr(e.shape,"float32"),y=this.bufferSync(o),x=this.bufferSync(t),b=0;b=r.outDepth||Math.floor(T)!==T))for(var N=0;N=r.outHeight||Math.floor(F)!==F))for(var _=0;_=r.outWidth||Math.floor(O)!==O)){var M=h*f*d-1-y.get(b,T,F,O,w)===D*f*d+N*d+_?1:0;if(0!==M)A+=x.get(b,T,F,O,w)*M;}}}}g.set(A,b,C,E,R,w);}return g.toTensor()},o.prototype.cast=function(t,e){return Po(t,e,this)},o.prototype.reshape=function(t,e){return Lo(t,e)},o.prototype.avgPool=function(t,e){return Hh(t,"avgPool"),this.pool(t,e,"avg").toFloat()},o.prototype.resizeBilinear=function(t,e,n,r){Hh(t,"resizeBilinear");for(var o=t.shape,a=o[0],i=o[1],s=o[2],u=o[3],c=this.readSync(t.dataId),l=new Float32Array(k([a,e,n,u])),h=[r&&e>1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=0,p=h[0]/f[0],v=h[1]/f[1],m=0;m1?a-1:a,n&&l>1?i-1:i],d=[n&&c>1?c-1:c,n&&l>1?l-1:l],p=f[0]/d[0],v=f[1]/d[1],m=this.readSync(t.dataId),g=0,y=0;y1?i-1:i,r&&n>1?s-1:s],f=[r&&e>1?e-1:e,r&&n>1?n-1:n],d=h[0]/f[0],p=h[1]/f[1],v=0,m=0;m1?a-1:a,n&&l>1?i-1:i],p=[n&&c>1?c-1:c,n&&l>1?l-1:l],v=d[0]/p[0],m=d[1]/p[1],g=1/v,y=1/m,x=2*Math.ceil(g)+2,b=2*Math.ceil(y)+2,w=0;w=c)){var M=C+O*t.strides[1],B=O*v;if(E===Math.min(a-1,n?Math.round(B):Math.floor(B)))for(var P=0;P=l)){var W=M+L*t.strides[2],U=L*m;S===Math.min(i-1,n?Math.round(U):Math.floor(U))&&(F+=f[W+N]);}}}}h[A+N]=F;}return Ln(h,e.shape,e.dtype)},o.prototype.batchNormalization=function(t,e,n,r,o,a){Hh([t,e,n,o,a],"batchNorm");for(var i=this.readSync(t.dataId),s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=o?this.readSync(o.dataId):new Float32Array([1]),l=a?this.readSync(a.dataId):new Float32Array([0]),h=new Float32Array(i.length),f=l.length,d=c.length,p=u.length,v=s.length,m=0,g=0,y=0,x=0,b=0;b=f&&(m=0),g>=v&&(g=0),y>=d&&(y=0),x>=p&&(x=0);return Ln(h,t.shape)},o.prototype.localResponseNormalization4D=function(t,e,n,r,o){Hh(t,"localResponseNormalization4D");var a=t.shape[3],i=a-1,s=this.readSync(t.dataId),u=t.size,c=new Float32Array(u);function l(t){for(var n=t%a,r=t-n+Math.max(0,n-e),o=t-n+Math.min(n+e,i),u=0;r<=o;r++){var c=s[r];u+=c*c;}return u}for(var h=0;h=0&&a[i]1,(function(){return "blockSize should be > 1 for depthToSpace, but was: "+e}));for(var r=t.shape[0],o=t.shape[1],a=t.shape[2],i=t.shape[3],s=o*e,u=a*e,c=i/(e*e),l=this.readSync(t.dataId),h=new Float32Array(r*s*u*c),f=0,d=0;d=s))for(var S=f>1?(R-C)*(u-1)/(f-1):0,A=d>1?(I-E)*(c-1)/(d-1):0,D=0;D1?C*(u-1)+D*S:.5*(C+R)*(u-1);if(T<0||T>u-1)for(var N=0;N1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F1?E*(c-1)+N*A:.5*(E+I)*(c-1))<0||q>c-1)for(F=0;F=t.size/s)throw new Error("Invalid indices: "+d+" does not index into "+t.shape);for(var g=0;g=r/o)throw new Error("Invalid indices: "+v+" does not index into "+n);for(var x=0;x0,(function(){return "scheme must not be an empty string."}));var r=t.getInstance();C(null==r.managers[e],(function(){return "A model store manager is already registered for scheme '"+e+"'."})),r.managers[e]=n;},t.getManager=function(t){var e=this.getInstance().managers[t];if(null==e)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},t.getSchemes=function(){return Object.keys(this.getInstance().managers)},t}();function xf(t){if(-1===t.indexOf(gf))throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+yf.getSchemes().join(","));return {scheme:t.split(gf)[0],path:t.split(gf)[1]}}function bf(t,e,o){return void 0===o&&(o=!1),n(this,void 0,void 0,(function(){var n,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return C(t!==e,(function(){return "Old path and new path are the same: '"+t+"'"})),C((n=mf.getLoadHandlers(t)).length>0,(function(){return "Copying failed because no load handler is found for source URL "+t+"."})),C(n.length<2,(function(){return "Copying failed because more than one ("+n.length+") load handlers for source URL "+t+"."})),a=n[0],C((i=mf.getSaveHandlers(e)).length>0,(function(){return "Copying failed because no save handler is found for destination URL "+e+"."})),C(i.length<2,(function(){return "Copying failed because more than one ("+n.length+") save handlers for destination URL "+e+"."})),s=i[0],u=xf(t).scheme,c=xf(t).path,l=u===xf(t).scheme,[4,a.load()];case 1:return h=r.sent(),o&&l?[4,yf.getManager(u).removeModel(c)]:[3,3];case 2:r.sent(),r.label=3;case 3:return [4,s.save(h)];case 4:return f=r.sent(),!o||l?[3,6]:[4,yf.getManager(u).removeModel(c)];case 5:r.sent(),r.label=6;case 6:return [2,f.modelArtifactsInfo]}}))}))}var wf="models_store",Cf="model_info_store";function Ef(){if(!i().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var t=window||self,e=t.indexedDB||t.mozIndexedDB||t.webkitIndexedDB||t.msIndexedDB||t.shimIndexedDB;if(null==e)throw new Error("The current browser does not appear to support IndexedDB.");return e}function Rf(t){var e=t.result;e.createObjectStore(wf,{keyPath:"modelPath"}),e.createObjectStore(Cf,{keyPath:"modelPath"});}var If=function(){function t(t){if(this.indexedDB=Ef(),null==t||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t;}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){return r(this,(function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return [2,this.databaseAction(this.modelPath,t)]}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){return r(this,(function(t){return [2,this.databaseAction(this.modelPath)]}))}))},t.prototype.databaseAction=function(t,e){var n=this;return new Promise((function(t,r){var o=n.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return Rf(o)},o.onsuccess=function(){var a=o.result;if(null==e){var i=a.transaction(wf,"readonly"),s=i.objectStore(wf).get(n.modelPath);s.onsuccess=function(){if(null==s.result)return a.close(),r(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));t(s.result.modelArtifacts);},s.onerror=function(t){return a.close(),r(s.error)},i.oncomplete=function(){return a.close()};}else {var u,c=vf(e),l=a.transaction(Cf,"readwrite"),h=l.objectStore(Cf),f=h.put({modelPath:n.modelPath,modelArtifactsInfo:c});f.onsuccess=function(){var o=(u=a.transaction(wf,"readwrite")).objectStore(wf).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:c});o.onsuccess=function(){return t({modelArtifactsInfo:c})},o.onerror=function(t){var e=(h=l.objectStore(Cf)).delete(n.modelPath);e.onsuccess=function(){return a.close(),r(o.error)},e.onerror=function(t){return a.close(),r(o.error)};};},f.onerror=function(t){return a.close(),r(f.error)},l.oncomplete=function(){null==u?a.close():u.oncomplete=function(){return a.close()};};}},o.onerror=function(t){return r(o.error)};}))},t.URL_SCHEME="indexeddb://",t}(),kf=function(t){return i().getBool("IS_BROWSER")&&!Array.isArray(t)&&t.startsWith(If.URL_SCHEME)?(e=t.slice(If.URL_SCHEME.length),new If(e)):null;var e;};mf.registerSaveRouter(kf),mf.registerLoadRouter(kf);var Sf=function(){function t(){this.indexedDB=Ef();}return t.prototype.listModels=function(){return n(this,void 0,void 0,(function(){var t=this;return r(this,(function(e){return [2,new Promise((function(e,n){var r=t.indexedDB.open("tensorflowjs",1);r.onupgradeneeded=function(){return Rf(r)},r.onsuccess=function(){var t=r.result,o=t.transaction(Cf,"readonly"),a=o.objectStore(Cf).getAll();a.onsuccess=function(){for(var t={},n=0,r=a.result;n0,(function(){return "promises must be a none empty array"}));}(t),function(t,e){C(t>=0&&t<=1,(function(){return "Progress fraction must be in range [0, 1], but got startFraction "+t})),C(e>=0&&e<=1,(function(){return "Progress fraction must be in range [0, 1], but got endFraction "+e})),C(e>=t,(function(){return "startFraction must be no more than endFraction, but got startFraction "+t+" and endFraction "+e}));}(n=null==n?0:n,r=null==r?1:r);var o=0;return Promise.all(t.map((function(a){return a.then((function(a){var i=n+ ++o/t.length*(r-n);return e(i),a})),a})))}function jf(t,e){return n(this,void 0,void 0,(function(){var n,o,a,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return null==e&&(e={}),n=null==e.fetchFunc?i().platform.fetch:e.fetchFunc,o=t.map((function(t){return n(t,e.requestInit,{isBinary:!0})})),a=0,s=.5,null!=e.onProgress?[3,2]:[4,Promise.all(o)];case 1:return u=r.sent(),[3,4];case 2:return [4,Kf(o,e.onProgress,a,s)];case 3:u=r.sent(),r.label=4;case 4:return c=u.map((function(t){return t.arrayBuffer()})),l=.5,h=1,null!=e.onProgress?[3,6]:[4,Promise.all(c)];case 5:return f=r.sent(),[3,8];case 6:return [4,Kf(c,e.onProgress,l,h)];case 7:f=r.sent(),r.label=8;case 8:return [2,f]}}))}))}function Xf(t){var e=this;return function(o,a,i){return void 0===a&&(a=""),n(e,void 0,void 0,(function(){var e,n,s,u,c,l,h,f,d,p;return r(this,(function(r){switch(r.label){case 0:if(e=o.map((function(){return !1})),n={},s=null!=i?i.map((function(){return !1})):[],u=[],o.forEach((function(t,r){var o=0;t.weights.forEach((function(t){var a="quantization"in t?t.quantization.dtype:t.dtype,c=sf[a]*k(t.shape),l=function(){e[r]=!0,null==n[r]&&(n[r]=[]),n[r].push({manifestEntry:t,groupOffset:o,sizeBytes:c});};null!=i?i.forEach((function(e,n){e===t.name&&(l(),s[n]=!0);})):l(),u.push(t.name),o+=c;}));})),!s.every((function(t){return t})))throw c=i.filter((function(t,e){return !s[e]})),new Error("Could not find weights in manifest with names: "+c.join(", ")+". \nManifest JSON has weights with names: "+u.join(", ")+".");return l=e.reduce((function(t,e,n){return e&&t.push(n),t}),[]),h=[],l.forEach((function(t){o[t].paths.forEach((function(t){var e=a+(a.endsWith("/")?"":"/")+t;h.push(e);}));})),[4,t(h)];case 1:return f=r.sent(),d={},p=0,l.forEach((function(t){for(var e=o[t].paths.length,r=0,a=0;a0,(function(){return "URL path for http must not be null, undefined or empty."})),Array.isArray(t)&&C(2===t.length,(function(){return "URL paths for http must have a length of 2, (actual length is "+t.length+")."})),this.path=t,null!=e.requestInit&&null!=e.requestInit.body)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{};}return t.prototype.save=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a;return r(this,(function(r){switch(r.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return (e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],o={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(o)],{type:"application/json"}),"model.json"),null!=t.weightData&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((a=r.sent()).ok)return [2,{modelArtifactsInfo:vf(t),responses:[a]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+a.status+".")}}))}))},t.prototype.load=function(){return n(this,void 0,void 0,(function(){var t,e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:return [4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=r.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");r.label=2;case 2:return r.trys.push([2,4,,5]),[4,t.json()];case 3:return e=r.sent(),[3,5];case 4:throw r.sent(),n="Failed to parse model JSON of response from "+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(o=e.modelTopology,a=e.weightsManifest,i=e.generatedBy,s=e.convertedBy,u=e.format,c=e.userDefinedMetadata,null==o&&null==a)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return null==a?[3,7]:[4,this.loadWeights(a)];case 6:f=r.sent(),l=f[0],h=f[1],r.label=7;case 7:return [2,{modelTopology:o,weightSpecs:l,weightData:h,userDefinedMetadata:c,generatedBy:i,convertedBy:s,format:u}]}}))}))},t.prototype.loadWeights=function(t){return n(this,void 0,void 0,(function(){var e,n,o,a,i,s,u,c,l,h,f;return r(this,(function(r){switch(r.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(t){var e=t.lastIndexOf("/"),n=t.lastIndexOf("?"),r=t.substring(0,e),o=n>e?t.substring(n):"";return [r+"/",o]}(e),o=n[0],a=n[1],i=this.weightPathPrefix||o,s=[],u=0,c=t;u0&&Number.isInteger(n),(function(){return "If provided, numClasses must be a positive integer, but got "+n})),C(1===r.rank,(function(){return "Expected the rank of labels to be 1, but got "+r.rank})),C(1===o.rank,(function(){return "Expected the rank of predictions to be 1, but got "+o.rank})),C(r.shape[0]===o.shape[0],(function(){return "Mismatch in the number of examples: "+r.shape[0]+" vs. "+o.shape[0]+". Labels and predictions should have the same number of elements."})),C(n>0&&Number.isInteger(n),(function(){return "numClasses is required to be a positive integer, but got "+n}));var a=Rr(r.asType("int32"),n),i=Rr(o.asType("int32"),n);return a.transpose().matMul(i).asType("int32")}}),od=Object.freeze({confusionMatrix:rd});var ad=An({fromPixels_:function(t,e){if(void 0===e&&(e=3),e>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(null==t)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var n=!1,r=!1,o=!1,a=!1,i=!1;if(t.data instanceof Uint8Array)n=!0;else if("undefined"!=typeof ImageData&&t instanceof ImageData)r=!0;else if("undefined"!=typeof HTMLVideoElement&&t instanceof HTMLVideoElement)o=!0;else if("undefined"!=typeof HTMLImageElement&&t instanceof HTMLImageElement)a=!0;else {if(null==t.getContext)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 "+t.constructor.name);i=!0;}if(o){if(o&&t.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the