From 42f09ec7a2e172d08217079855a8e42945842684 Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Fri, 7 Mar 2025 15:29:09 +0100 Subject: [PATCH 1/2] Add TodoMVC written in Dart using Jaspr DOM framework This adds a TodoMVC app written in Dart using the Jaspr DOM framework. The app is compiled in two variants: dart2js and dart2wasm. We compile with * dart2js in unsound (-O4) mode * dart2wasm in sound (-O2) mode as those are the default settings in e.g. flutter tooling. To remember this difference we specify the optimization mode in the benchmark name. The app can be compiled by installing the Dart SDK and running ``` experimental/todomvc-dart-jaspr % ./build.sh |& tee build.log ... ``` --- experimental/todomvc-dart-jaspr/.gitignore | 2 + experimental/todomvc-dart-jaspr/README.md | 31 + .../todomvc-dart-jaspr/analysis_options.yaml | 9 + experimental/todomvc-dart-jaspr/build.log | 43 + experimental/todomvc-dart-jaspr/build.sh | 29 + .../dist/out-dart2js-O4/base.css | 141 + .../dist/out-dart2js-O4/favicon.ico | Bin 0 -> 2595 bytes .../dist/out-dart2js-O4/index.css | 388 ++ .../dist/out-dart2js-O4/index.html | 22 + .../dist/out-dart2js-O4/main.dart.js | 4492 +++++++++++++++++ .../dist/out-dart2wasm-O2/base.css | 141 + .../dist/out-dart2wasm-O2/favicon.ico | Bin 0 -> 2595 bytes .../dist/out-dart2wasm-O2/index.css | 388 ++ .../dist/out-dart2wasm-O2/index.html | 22 + .../dist/out-dart2wasm-O2/main.dart.js | 15 + .../dist/out-dart2wasm-O2/main.mjs | 343 ++ .../dist/out-dart2wasm-O2/main.wasm | Bin 0 -> 88417 bytes experimental/todomvc-dart-jaspr/lib/app.dart | 19 + .../lib/components/todomvc.dart | 188 + experimental/todomvc-dart-jaspr/pubspec.lock | 941 ++++ experimental/todomvc-dart-jaspr/pubspec.yaml | 20 + experimental/todomvc-dart-jaspr/web/base.css | 141 + .../todomvc-dart-jaspr/web/favicon.ico | Bin 0 -> 2595 bytes experimental/todomvc-dart-jaspr/web/index.css | 388 ++ .../todomvc-dart-jaspr/web/index.html | 22 + experimental/todomvc-dart-jaspr/web/main.dart | 13 + resources/tests.mjs | 60 + 27 files changed, 7858 insertions(+) create mode 100644 experimental/todomvc-dart-jaspr/.gitignore create mode 100644 experimental/todomvc-dart-jaspr/README.md create mode 100644 experimental/todomvc-dart-jaspr/analysis_options.yaml create mode 100644 experimental/todomvc-dart-jaspr/build.log create mode 100755 experimental/todomvc-dart-jaspr/build.sh create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/base.css create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/favicon.ico create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.css create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.html create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/main.dart.js create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/base.css create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/favicon.ico create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.css create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.html create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.dart.js create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.mjs create mode 100644 experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.wasm create mode 100644 experimental/todomvc-dart-jaspr/lib/app.dart create mode 100644 experimental/todomvc-dart-jaspr/lib/components/todomvc.dart create mode 100644 experimental/todomvc-dart-jaspr/pubspec.lock create mode 100644 experimental/todomvc-dart-jaspr/pubspec.yaml create mode 100644 experimental/todomvc-dart-jaspr/web/base.css create mode 100644 experimental/todomvc-dart-jaspr/web/favicon.ico create mode 100644 experimental/todomvc-dart-jaspr/web/index.css create mode 100644 experimental/todomvc-dart-jaspr/web/index.html create mode 100644 experimental/todomvc-dart-jaspr/web/main.dart diff --git a/experimental/todomvc-dart-jaspr/.gitignore b/experimental/todomvc-dart-jaspr/.gitignore new file mode 100644 index 000000000..a8c7d1d6f --- /dev/null +++ b/experimental/todomvc-dart-jaspr/.gitignore @@ -0,0 +1,2 @@ +.dart_tool/ +build/ diff --git a/experimental/todomvc-dart-jaspr/README.md b/experimental/todomvc-dart-jaspr/README.md new file mode 100644 index 000000000..55b9c4c6a --- /dev/null +++ b/experimental/todomvc-dart-jaspr/README.md @@ -0,0 +1,31 @@ +# TodoMVC: Dart Jaspr + +## Description +This is a TodoMVC app written in Dart using the Jaspr DOM framework. It can be +compiled to either JavaScript or WebAssembly (with GC extension). + +## Setup + +Install [dart](https://dart.dev/get-dart) and fetch dependencies using `dart pub get`. + +## Running the project + +Run your project using `dart run jaspr_cli:jaspr serve`. + +The development server will be available on `http://localhost:8080`. + +## Building the project + +Build your project using either: + +- Generate JavaScript via: `dart run jaspr_cli:jaspr build -O4 --extra-js-compiler-option=--no-minify` +- Generate WebAssembly via: `dart run jaspr_cli:jaspr build -O2 --experimental-wasm --extra-wasm-compiler-option=--no-strip-wasm` + +The output will be located inside the `build/jaspr/` directory. + +## Updating the checked-in build artifacts +To update the checked-in artifacts in the `dist/` directory, run + +``` +./build.sh 2>&1 | tee build.log +``` diff --git a/experimental/todomvc-dart-jaspr/analysis_options.yaml b/experimental/todomvc-dart-jaspr/analysis_options.yaml new file mode 100644 index 000000000..6f2396bc6 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/analysis_options.yaml @@ -0,0 +1,9 @@ +include: package:lints/recommended.yaml + +analyzer: + # Jaspr has a custom lint package 'jaspr_lints', which needs the 'custom_lint' analyzer plugin. + # + # Unfortunately, running 'dart analyze' does not pick up the custom lints. Instead, you need to + # run a separate command for this: `jaspr analyze` + plugins: + - custom_lint diff --git a/experimental/todomvc-dart-jaspr/build.log b/experimental/todomvc-dart-jaspr/build.log new file mode 100644 index 000000000..6aa3a3876 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/build.log @@ -0,0 +1,43 @@ ++ set -e ++ echo 'Current Dart SDK version' +Current Dart SDK version ++ dart --version +Dart SDK version: 3.9.0-333.0.dev (dev) (Fri Jul 11 09:03:09 2025 -0700) on "macos_arm64" ++ echo 'Fetching dependencies' +Fetching dependencies ++ dart pub get +Resolving dependencies... +Downloading packages... + _fe_analyzer_shared 82.0.0 (85.0.0 available) + analyzer 7.4.5 (7.5.7 available) + analyzer_plugin 0.13.1 (0.13.4 available) + dds 4.2.7 (5.0.4 available) + devtools_shared 10.0.2 (12.0.0 available) + dtd 2.5.1 (4.0.0 available) + dwds 24.3.5 (24.4.0 available) + json_rpc_2 3.0.3 (4.0.0 available) + mime 1.0.6 (2.0.0 available) + shelf_web_socket 2.0.1 (3.0.0 available) + vm_service 14.3.1 (15.0.2 available) + webdev 3.7.1 (3.7.2 available) +Got dependencies! +12 packages have newer versions incompatible with dependency constraints. +Try `dart pub outdated` for more information. ++ echo 'Building dart2js version in -O4' +Building dart2js version in -O4 ++ rm -rf build dist/out-dart2js-O4 ++ dart run jaspr_cli:jaspr build -O4 --extra-js-compiler-option=--disable-program-split +Building jaspr for client rendering mode. +⠋ Building web assets...... ⠙ Building web assets...... (1ms) ✓ Completed building web assets. (11.8s) +Completed building project to /build/jaspr. ++ mkdir -p dist/out-dart2js-O4 ++ cp build/jaspr/index.html build/jaspr/base.css build/jaspr/index.css build/jaspr/favicon.ico build/jaspr/main.dart.js dist/out-dart2js-O4 ++ echo 'Building dart2js version in -O4' +Building dart2js version in -O4 ++ rm -rf build dist/out-dart2wasm-O2 ++ dart run jaspr_cli:jaspr build -O2 --experimental-wasm +Building jaspr for client rendering mode. +⠋ Building web assets...... ⠙ Building web assets...... (1ms) ✓ Completed building web assets. (12.4s) +Completed building project to /build/jaspr. ++ mkdir -p dist/out-dart2wasm-O2 ++ cp build/jaspr/index.html build/jaspr/base.css build/jaspr/index.css build/jaspr/favicon.ico build/jaspr/main.dart.js build/jaspr/main.mjs build/jaspr/main.wasm dist/out-dart2wasm-O2 diff --git a/experimental/todomvc-dart-jaspr/build.sh b/experimental/todomvc-dart-jaspr/build.sh new file mode 100755 index 000000000..d80dc7aa3 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/build.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +JS_OUT=dist/out-dart2js-O4 +WASM_OUT=dist/out-dart2wasm-O2 + +set -x +set -e + +echo "Current Dart SDK version" +dart --version + +echo "Fetching dependencies" +dart pub get + +# NOTE: For profiling add the following argument to get symbols +# --extra-js-compiler-option=--no-minify +echo "Building dart2js version in -O4" +rm -rf build $JS_OUT +dart run jaspr_cli:jaspr build -O4 --extra-js-compiler-option=--disable-program-split +mkdir -p $JS_OUT +cp build/jaspr/{index.html,base.css,index.css,favicon.ico,main.dart.js} $JS_OUT + +# NOTE: For profiling add the following argument to get symbols +# --extra-wasm-compiler-option=--no-strip-wasm +echo "Building dart2js version in -O4" +rm -rf build $WASM_OUT +dart run jaspr_cli:jaspr build -O2 --experimental-wasm +mkdir -p $WASM_OUT +cp build/jaspr/{index.html,base.css,index.css,favicon.ico,main.dart.js,main.mjs,main.wasm} $WASM_OUT diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/base.css b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/base.css new file mode 100644 index 000000000..d3938100c --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: "“"; + font-size: 50px; + opacity: 0.15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: "”"; + font-size: 50px; + opacity: 0.15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, 0.04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ""; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, 0.04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, 0.6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/favicon.ico b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bd829b4fc70a3dc9baf443ebf39272c712b7bc46 GIT binary patch literal 2595 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 literal 0 HcmV?d00001 diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.css b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.css new file mode 100644 index 000000000..fb6fb83ef --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.css @@ -0,0 +1,388 @@ +@charset "utf-8"; + +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #111111; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp h1 { + position: absolute; + top: -140px; + width: 100%; + font-size: 80px; + font-weight: 200; + text-align: center; + color: #b83f45; + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + height: 65px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +.toggle-all { + width: 1px; + height: 1px; + border: none; /* Mobile Safari */ + opacity: 0; + position: absolute; + right: 100%; + bottom: 100%; +} + +.toggle-all + label { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + height: 65px; + font-size: 0; + position: absolute; + top: -65px; + left: -0; +} + +.toggle-all + label:before { + content: "❯"; + display: inline-block; + font-size: 22px; + color: #949494; + padding: 10px 27px 10px 27px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.toggle-all:checked + label:before { + color: #484848; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: calc(100% - 43px); + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle { + opacity: 0; +} + +.todo-list li .toggle + label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center left; +} + +.todo-list li .toggle:checked + label { + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E"); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 60px; + display: block; + line-height: 1.2; + transition: color 0.4s; + font-weight: 400; + color: #484848; +} + +.todo-list li.completed label { + color: #949494; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #949494; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover, +.todo-list li .destroy:focus { + color: #c18585; +} + +.todo-list li .destroy:after { + content: "×"; + display: block; + height: 100%; + line-height: 1.1; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + padding: 10px 15px; + height: 20px; + text-align: center; + font-size: 15px; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ""; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li span { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li span:hover { + border-color: #db7676; +} + +.filters li span.selected { + border-color: #ce4646; +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 19px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #4d4d4d; + font-size: 11px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} + +:focus, +.toggle:focus + label, +.toggle-all:focus + label { + box-shadow: 0 0 2px 2px #cf7d7d; + outline: 0; +} diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.html b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.html new file mode 100644 index 000000000..c9270857c --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.html @@ -0,0 +1,22 @@ + + + + + + + + TodoMVC: Jaspr + + + + + + + + + + + diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/main.dart.js b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/main.dart.js new file mode 100644 index 000000000..c70a0ac50 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/main.dart.js @@ -0,0 +1,4492 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s4294967295)throw A.f(A.i1(a,0,4294967295,"length",null)) +return J.hS(new Array(a),b)}, +hR(a,b){if(a<0)throw A.f(A.bM("Length must be a non-negative integer: "+a,null)) +return A.b(new Array(a),b.h("p<0>"))}, +hS(a,b){var s=A.b(a,b.h("p<0>")) +s.$flags=1 +return s}, +hT(a,b){return J.hu(a,b)}, +as(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.b2.prototype +return J.c_.prototype}if(typeof a=="string")return J.az.prototype +if(a==null)return J.b3.prototype +if(typeof a=="boolean")return J.bZ.prototype +if(Array.isArray(a))return J.p.prototype +if(typeof a!="object"){if(typeof a=="function")return J.a3.prototype +if(typeof a=="symbol")return J.b6.prototype +if(typeof a=="bigint")return J.b4.prototype +return a}if(a instanceof A.h)return a +return J.f2(a)}, +en(a){if(typeof a=="string")return J.az.prototype +if(a==null)return a +if(Array.isArray(a))return J.p.prototype +if(typeof a!="object"){if(typeof a=="function")return J.a3.prototype +if(typeof a=="symbol")return J.b6.prototype +if(typeof a=="bigint")return J.b4.prototype +return a}if(a instanceof A.h)return a +return J.f2(a)}, +bK(a){if(a==null)return a +if(Array.isArray(a))return J.p.prototype +if(typeof a!="object"){if(typeof a=="function")return J.a3.prototype +if(typeof a=="symbol")return J.b6.prototype +if(typeof a=="bigint")return J.b4.prototype +return a}if(a instanceof A.h)return a +return J.f2(a)}, +jx(a){if(typeof a=="number")return J.ay.prototype +if(typeof a=="string")return J.az.prototype +if(a==null)return a +if(!(a instanceof A.h))return J.aE.prototype +return a}, +q(a,b){if(a==null)return b==null +if(typeof a!="object")return b!=null&&a===b +return J.as(a).L(a,b)}, +hs(a,b){if(typeof b==="number")if(Array.isArray(a)||A.h4(a,a[v.dispatchPropertyName]))if(b>>>0===b&&b>>0===b&&b>>6}, +dp(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +eW(a,b,c){return a}, +f5(a){var s,r +for(s=$.au.length,r=0;r").B(d).h("b_<1,2>")) +return new A.aj(a,b,c.h("@<0>").B(d).h("aj<1,2>"))}, +aF:function aF(){}, +bR:function bR(a,b){this.a=a +this.$ti=b}, +bo:function bo(){}, +ae:function ae(a,b){this.a=a +this.$ti=b}, +ai:function ai(a){this.a=a}, +dl:function dl(){}, +c:function c(){}, +Y:function Y(){}, +a5:function a5(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +aj:function aj(a,b,c){this.a=a +this.b=b +this.$ti=c}, +b_:function b_(a,b,c){this.a=a +this.b=b +this.$ti=c}, +aA:function aA(a,b,c){var _=this +_.a=null +_.b=a +_.c=b +_.$ti=c}, +bn:function bn(a,b,c){this.a=a +this.b=b +this.$ti=c}, +cv:function cv(a,b){this.a=a +this.b=b}, +b1:function b1(){}, +bi:function bi(a,b){this.a=a +this.$ti=b}, +bH:function bH(){}, +hd(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +h4(a,b){var s +if(b!=null){s=b.x +if(s!=null)return s}return t.p.b(a)}, +o(a){var s +if(typeof a=="string")return a +if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" +else if(!1===a)return"false" +else if(a==null)return"null" +s=J.a2(a) +return s}, +ce(a){var s,r=$.fq +if(r==null)r=$.fq=Symbol("identityHashCode") +s=a[r] +if(s==null){s=Math.random()*0x3fffffff|0 +a[r]=s}return s}, +cf(a){var s,r,q,p +if(a instanceof A.h)return A.K(A.aR(a),null) +s=J.as(a) +if(s===B.V||s===B.X||t.o.b(a)){r=B.j(a) +if(r!=="Object"&&r!=="")return r +q=a.constructor +if(typeof q=="function"){p=q.name +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.K(A.aR(a),null)}, +fr(a){var s,r,q +if(a==null||typeof a=="number"||A.eR(a))return J.a2(a) +if(typeof a=="string")return JSON.stringify(a) +if(a instanceof A.af)return a.i(0) +if(a instanceof A.bx)return a.b4(!0) +s=$.hr() +for(r=0;r<1;++r){q=s[r].cz(a) +if(q!=null)return q}return"Instance of '"+A.cf(a)+"'"}, +i_(a){var s=a.$thrownJsError +if(s==null)return null +return A.aa(s)}, +eZ(a,b){var s,r="index" +if(!A.fT(b))return new A.U(!0,b,r,null) +s=J.eu(a) +if(b<0||b>=s)return A.ex(b,s,a,r) +return new A.bh(null,null,!0,b,r,"Value not in range")}, +f(a){return A.z(a,new Error())}, +z(a,b){var s +if(a==null)a=new A.a_() +b.dartException=a +s=A.jM +if("defineProperty" in Object){Object.defineProperty(b,"message",{get:s}) +b.name=""}else b.toString=s +return b}, +jM(){return J.a2(this.dartException)}, +M(a,b){throw A.z(a,b==null?new Error():b)}, +aV(a,b,c){var s +if(b==null)b=0 +if(c==null)c=0 +s=Error() +A.M(A.iR(a,b,c),s)}, +iR(a,b,c){var s,r,q,p,o,n,m,l,k +if(typeof b=="string")s=b +else{r="[]=;add;removeWhere;retainWhere;removeRange;setRange;setInt8;setInt16;setInt32;setUint8;setUint16;setUint32;setFloat32;setFloat64".split(";") +q=r.length +p=b +if(p>q){c=p/q|0 +p%=q}s=r[p]}o=typeof c=="string"?c:"modify;remove from;add to".split(";")[c] +n=t.j.b(a)?"list":"ByteData" +m=a.$flags|0 +l="a " +if((m&4)!==0)k="constant " +else if((m&2)!==0){k="unmodifiable " +l="an "}else k=(m&1)!==0?"fixed-length ":"" +return new A.bm("'"+s+"': Cannot "+o+" "+l+k+n)}, +aU(a){throw A.f(A.V(a))}, +a0(a){var s,r,q,p,o,n +a=A.jJ(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.b([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.dC(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +dD(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +fw(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +eA(a,b){var s=b==null,r=s?null:b.method +return new A.c0(a,r,s?null:b.receiver)}, +ac(a){if(a==null)return new A.dh(a) +if(a instanceof A.b0)return A.ab(a,a.a) +if(typeof a!=="object")return a +if("dartException" in a)return A.ab(a,a.dartException) +return A.jo(a)}, +ab(a,b){if(t.Q.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +jo(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.u.bM(r,16)&8191)===10)switch(q){case 438:return A.ab(a,A.eA(A.o(s)+" (Error "+q+")",null)) +case 445:case 5007:A.o(s) +return A.ab(a,new A.bf())}}if(a instanceof TypeError){p=$.he() +o=$.hf() +n=$.hg() +m=$.hh() +l=$.hk() +k=$.hl() +j=$.hj() +$.hi() +i=$.hn() +h=$.hm() +g=p.I(s) +if(g!=null)return A.ab(a,A.eA(s,g)) +else{g=o.I(s) +if(g!=null){g.method="call" +return A.ab(a,A.eA(s,g))}else if(n.I(s)!=null||m.I(s)!=null||l.I(s)!=null||k.I(s)!=null||j.I(s)!=null||m.I(s)!=null||i.I(s)!=null||h.I(s)!=null)return A.ab(a,new A.bf())}return A.ab(a,new A.ct(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.bl() +s=function(b){try{return String(b)}catch(f){}return null}(a) +return A.ab(a,new A.U(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.bl() +return a}, +aa(a){var s +if(a instanceof A.b0)return a.b +if(a==null)return new A.bA(a) +s=a.$cachedTrace +if(s!=null)return s +s=new A.bA(a) +if(typeof a==="object")a.$cachedTrace=s +return s}, +h8(a){if(a==null)return J.B(a) +if(typeof a=="object")return A.ce(a) +return J.B(a)}, +jw(a,b){var s,r,q,p=a.length +for(s=0;s>>0!==a||a>=c)throw A.f(A.eZ(b,a))}, +aB:function aB(){}, +bd:function bd(){}, +c3:function c3(){}, +aC:function aC(){}, +bb:function bb(){}, +bc:function bc(){}, +c4:function c4(){}, +c5:function c5(){}, +c6:function c6(){}, +c7:function c7(){}, +c8:function c8(){}, +c9:function c9(){}, +ca:function ca(){}, +be:function be(){}, +cb:function cb(){}, +bs:function bs(){}, +bt:function bt(){}, +bu:function bu(){}, +bv:function bv(){}, +eD(a,b){var s=b.c +return s==null?b.c=A.bE(a,"aw",[b.x]):s}, +ft(a){var s=a.w +if(s===6||s===7)return A.ft(a.x) +return s===11||s===12}, +i3(a){return a.as}, +cO(a){return A.e8(v.typeUniverse,a,!1)}, +ar(a1,a2,a3,a4){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0=a2.w +switch(a0){case 5:case 1:case 2:case 3:case 4:return a2 +case 6:s=a2.x +r=A.ar(a1,s,a3,a4) +if(r===s)return a2 +return A.fJ(a1,r,!0) +case 7:s=a2.x +r=A.ar(a1,s,a3,a4) +if(r===s)return a2 +return A.fI(a1,r,!0) +case 8:q=a2.y +p=A.aO(a1,q,a3,a4) +if(p===q)return a2 +return A.bE(a1,a2.x,p) +case 9:o=a2.x +n=A.ar(a1,o,a3,a4) +m=a2.y +l=A.aO(a1,m,a3,a4) +if(n===o&&l===m)return a2 +return A.eK(a1,n,l) +case 10:k=a2.x +j=a2.y +i=A.aO(a1,j,a3,a4) +if(i===j)return a2 +return A.fK(a1,k,i) +case 11:h=a2.x +g=A.ar(a1,h,a3,a4) +f=a2.y +e=A.jl(a1,f,a3,a4) +if(g===h&&e===f)return a2 +return A.fH(a1,g,e) +case 12:d=a2.y +a4+=d.length +c=A.aO(a1,d,a3,a4) +o=a2.x +n=A.ar(a1,o,a3,a4) +if(c===d&&n===o)return a2 +return A.eL(a1,n,c,!0) +case 13:b=a2.x +if(b") +for(r=1;r=0)p+=" "+r[q];++q}return p+"})"}, +fR(a1,a2,a3){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a=", ",a0=null +if(a3!=null){s=a3.length +if(a2==null)a2=A.b([],t.s) +else a0=a2.length +r=a2.length +for(q=s;q>0;--q)a2.push("T"+(r+q)) +for(p=t.R,o="<",n="",q=0;q0){c+=b+"[" +for(b="",q=0;q0){c+=b+"{" +for(b="",q=0;q "+d}, +K(a,b){var s,r,q,p,o,n,m=a.w +if(m===5)return"erased" +if(m===2)return"dynamic" +if(m===3)return"void" +if(m===1)return"Never" +if(m===4)return"any" +if(m===6){s=a.x +r=A.K(s,b) +q=s.w +return(q===11||q===12?"("+r+")":r)+"?"}if(m===7)return"FutureOr<"+A.K(a.x,b)+">" +if(m===8){p=A.jn(a.x) +o=a.y +return o.length>0?p+("<"+A.fY(o,b)+">"):p}if(m===10)return A.je(a,b) +if(m===11)return A.fR(a,b,null) +if(m===12)return A.fR(a.x,b,a.y) +if(m===13){n=a.x +return b[b.length-1-n]}return"?"}, +jn(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +iz(a,b){var s=a.tR[b] +for(;typeof s=="string";)s=a.tR[s] +return s}, +iy(a,b){var s,r,q,p,o,n=a.eT,m=n[b] +if(m==null)return A.e8(a,b,!1) +else if(typeof m=="number"){s=m +r=A.bF(a,5,"#") +q=A.e9(s) +for(p=0;p0)p+="<"+A.bD(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.O(null,null) +r.w=8 +r.x=b +r.y=c +if(c.length>0)r.c=c[0] +r.as=p +q=A.a9(a,r) +a.eC.set(p,q) +return q}, +eK(a,b,c){var s,r,q,p,o,n +if(b.w===9){s=b.x +r=b.y.concat(c)}else{r=c +s=b}q=s.as+(";<"+A.bD(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.O(null,null) +o.w=9 +o.x=s +o.y=r +o.as=q +n=A.a9(a,o) +a.eC.set(q,n) +return n}, +fK(a,b,c){var s,r,q="+"+(b+"("+A.bD(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.O(null,null) +s.w=10 +s.x=b +s.y=c +s.as=q +r=A.a9(a,s) +a.eC.set(q,r) +return r}, +fH(a,b,c){var s,r,q,p,o,n=b.as,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.bD(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.bD(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.ir(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.O(null,null) +p.w=11 +p.x=b +p.y=c +p.as=r +o=A.a9(a,p) +a.eC.set(r,o) +return o}, +eL(a,b,c,d){var s,r=b.as+("<"+A.bD(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.it(a,b,c,r,d) +a.eC.set(r,s) +return s}, +it(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.e9(s) +for(q=0,p=0;p0){n=A.ar(a,b,r,0) +m=A.aO(a,c,r,0) +return A.eL(a,n,m,c!==m)}}l=new A.O(null,null) +l.w=12 +l.x=b +l.y=c +l.as=d +return A.a9(a,l)}, +fC(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +fE(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.ij(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.fD(a,r,l,k,!1) +else if(q===46)r=A.fD(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.an(a.u,a.e,k.pop())) +break +case 94:k.push(A.iv(a.u,k.pop())) +break +case 35:k.push(A.bF(a.u,5,"#")) +break +case 64:k.push(A.bF(a.u,2,"@")) +break +case 126:k.push(A.bF(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.il(a,k) +break +case 38:A.ik(a,k) +break +case 63:p=a.u +k.push(A.fJ(p,A.an(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.fI(p,A.an(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.ii(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.fF(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.io(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.an(a.u,a.e,m)}, +ij(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +fD(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.w===9)o=o.x +n=A.iz(s,o.x)[p] +if(n==null)A.M('No "'+p+'" in "'+A.i3(o)+'"') +d.push(A.bG(s,o,n))}else d.push(p) +return m}, +il(a,b){var s,r=a.u,q=A.fB(a,b),p=b.pop() +if(typeof p=="string")b.push(A.bE(r,p,q)) +else{s=A.an(r,a.e,p) +switch(s.w){case 11:b.push(A.eL(r,s,q,a.n)) +break +default:b.push(A.eK(r,s,q)) +break}}}, +ii(a,b){var s,r,q,p=a.u,o=b.pop(),n=null,m=null +if(typeof o=="number")switch(o){case-1:n=b.pop() +break +case-2:m=b.pop() +break +default:b.push(o) +break}else b.push(o) +s=A.fB(a,b) +o=b.pop() +switch(o){case-3:o=b.pop() +if(n==null)n=p.sEA +if(m==null)m=p.sEA +r=A.an(p,a.e,o) +q=new A.cD() +q.a=s +q.b=n +q.c=m +b.push(A.fH(p,r,q)) +return +case-4:b.push(A.fK(p,b.pop(),s)) +return +default:throw A.f(A.bP("Unexpected state under `()`: "+A.o(o)))}}, +ik(a,b){var s=b.pop() +if(0===s){b.push(A.bF(a.u,1,"0&")) +return}if(1===s){b.push(A.bF(a.u,4,"1&")) +return}throw A.f(A.bP("Unexpected extended operation "+A.o(s)))}, +fB(a,b){var s=b.splice(a.p) +A.fF(a.u,a.e,s) +a.p=b.pop() +return s}, +an(a,b,c){if(typeof c=="string")return A.bE(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.im(a,b,c)}else return c}, +fF(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +O:function O(a,b){var _=this +_.a=a +_.b=b +_.r=_.f=_.d=_.c=null +_.w=0 +_.as=_.Q=_.z=_.y=_.x=null}, +cD:function cD(){this.c=this.b=this.a=null}, +cL:function cL(a){this.a=a}, +cB:function cB(){}, +bB:function bB(a){this.a=a}, +ia(){var s,r,q +if(self.scheduleImmediate!=null)return A.jq() +if(self.MutationObserver!=null&&self.document!=null){s={} +r=self.document.createElement("div") +q=self.document.createElement("span") +s.a=null +new self.MutationObserver(A.cM(new A.dG(s),1)).observe(r,{childList:true}) +return new A.dF(s,r,q)}else if(self.setImmediate!=null)return A.jr() +return A.js()}, +ib(a){self.scheduleImmediate(A.cM(new A.dH(a),0))}, +ic(a){self.setImmediate(A.cM(new A.dI(a),0))}, +id(a){A.iq(0,a)}, +iq(a,b){var s=new A.e6() +s.bx(a,b) +return s}, +eT(a){return new A.cx(new A.x($.t,a.h("x<0>")),a.h("cx<0>"))}, +eP(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +iN(a,b){A.iO(a,b)}, +eO(a,b){var s,r=a==null?b.$ti.c.a(a):a +if(!b.b)b.a.aO(r) +else{s=b.a +if(b.$ti.h("aw<1>").b(r))s.aQ(r) +else s.aU(r)}}, +eN(a,b){var s=A.ac(a),r=A.aa(a),q=b.a +if(b.b)q.ao(new A.P(s,r)) +else q.aP(new A.P(s,r))}, +iO(a,b){var s,r,q=new A.eb(b),p=new A.ec(b) +if(a instanceof A.x)a.b3(q,p,t.z) +else{s=t.z +if(a instanceof A.x)a.bh(q,p,s) +else{r=new A.x($.t,t.aY) +r.a=8 +r.c=a +r.b3(q,p,s)}}}, +eV(a){var s=function(b,c){return function(d,e){while(true){try{b(d,e) +break}catch(r){e=r +d=c}}}}(a,1) +return $.t.bg(new A.ej(s))}, +fG(a,b,c){return 0}, +ev(a){var s +if(t.Q.b(a)){s=a.gah() +if(s!=null)return s}return B.E}, +eE(a,b,c){var s,r,q,p={},o=p.a=a +for(;s=o.a,(s&4)!==0;){o=o.c +p.a=o}if(o===b){s=A.i4() +b.aP(new A.P(new A.U(!0,o,null,"Cannot complete a future with itself"),s)) +return}r=b.a&1 +s=o.a=s|r +if((s&24)===0){q=b.c +b.a=b.a&1|4 +b.c=o +o.b1(q) +return}if(!c)if(b.c==null)o=(s&16)===0||r!==0 +else o=!1 +else o=!0 +if(o){q=b.a7() +b.a4(p.a) +A.aI(b,q) +return}b.a^=2 +A.aN(null,null,b.b,new A.dR(p,b))}, +aI(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +for(;!0;){s={} +r=f.a +q=(r&16)===0 +p=!q +if(b==null){if(p&&(r&1)===0){f=f.c +A.eh(f.a,f.b)}return}s.a=b +o=b.a +for(f=b;o!=null;f=o,o=n){f.a=null +A.aI(g.a,f) +s.a=o +n=o.a}r=g.a +m=r.c +s.b=p +s.c=m +if(q){l=f.c +l=(l&1)!==0||(l&15)===8}else l=!0 +if(l){k=f.b.b +if(p){r=r.b===k +r=!(r||r)}else r=!1 +if(r){A.eh(m.a,m.b) +return}j=$.t +if(j!==k)$.t=k +else j=null +f=f.c +if((f&15)===8)new A.dV(s,g,p).$0() +else if(q){if((f&1)!==0)new A.dU(s,m).$0()}else if((f&2)!==0)new A.dT(g,s).$0() +if(j!=null)$.t=j +f=s.c +if(f instanceof A.x){r=s.a.$ti +r=r.h("aw<2>").b(f)||!r.y[1].b(f)}else r=!1 +if(r){i=s.a.b +if((f.a&24)!==0){h=i.c +i.c=null +b=i.a8(h) +i.a=f.a&30|i.a&1 +i.c=f.c +g.a=f +continue}else A.eE(f,i,!0) +return}}i=s.a.b +h=i.c +i.c=null +b=i.a8(h) +f=s.b +r=s.c +if(!f){i.a=8 +i.c=r}else{i.a=i.a&1|16 +i.c=r}g.a=i +f=i}}, +jf(a,b){if(t.C.b(a))return b.bg(a) +if(t.w.b(a))return a +throw A.f(A.fg(a,"onError",u.c))}, +jd(){var s,r +for(s=$.aM;s!=null;s=$.aM){$.bJ=null +r=s.b +$.aM=r +if(r==null)$.bI=null +s.a.$0()}}, +jk(){$.eS=!0 +try{A.jd()}finally{$.bJ=null +$.eS=!1 +if($.aM!=null)$.fa().$1(A.h0())}}, +fZ(a){var s=new A.cy(a),r=$.bI +if(r==null){$.aM=$.bI=s +if(!$.eS)$.fa().$1(A.h0())}else $.bI=r.b=s}, +jh(a){var s,r,q,p=$.aM +if(p==null){A.fZ(a) +$.bJ=$.bI +return}s=new A.cy(a) +r=$.bJ +if(r==null){s.b=p +$.aM=$.bJ=s}else{q=r.b +s.b=q +$.bJ=r.b=s +if(q==null)$.bI=s}}, +jK(a){var s=null,r=$.t +if(B.a===r){A.aN(s,s,B.a,a) +return}A.aN(s,s,r,r.b8(a))}, +jT(a){A.eW(a,"stream",t.K) +return new A.cI()}, +eh(a,b){A.jh(new A.ei(a,b))}, +fW(a,b,c,d){var s,r=$.t +if(r===c)return d.$0() +$.t=c +s=r +try{r=d.$0() +return r}finally{$.t=s}}, +fX(a,b,c,d,e){var s,r=$.t +if(r===c)return d.$1(e) +$.t=c +s=r +try{r=d.$1(e) +return r}finally{$.t=s}}, +jg(a,b,c,d,e,f){var s,r=$.t +if(r===c)return d.$2(e,f) +$.t=c +s=r +try{r=d.$2(e,f) +return r}finally{$.t=s}}, +aN(a,b,c,d){if(B.a!==c){d=c.b8(d) +d=d}A.fZ(d)}, +dG:function dG(a){this.a=a}, +dF:function dF(a,b,c){this.a=a +this.b=b +this.c=c}, +dH:function dH(a){this.a=a}, +dI:function dI(a){this.a=a}, +e6:function e6(){}, +e7:function e7(a,b){this.a=a +this.b=b}, +cx:function cx(a,b){this.a=a +this.b=!1 +this.$ti=b}, +eb:function eb(a){this.a=a}, +ec:function ec(a){this.a=a}, +ej:function ej(a){this.a=a}, +aL:function aL(a){var _=this +_.a=a +_.e=_.d=_.c=_.b=null}, +ap:function ap(a,b){this.a=a +this.$ti=b}, +P:function P(a,b){this.a=a +this.b=b}, +aH:function aH(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +x:function x(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +dO:function dO(a,b){this.a=a +this.b=b}, +dS:function dS(a,b){this.a=a +this.b=b}, +dR:function dR(a,b){this.a=a +this.b=b}, +dQ:function dQ(a,b){this.a=a +this.b=b}, +dP:function dP(a,b){this.a=a +this.b=b}, +dV:function dV(a,b,c){this.a=a +this.b=b +this.c=c}, +dW:function dW(a,b){this.a=a +this.b=b}, +dX:function dX(a){this.a=a}, +dU:function dU(a,b){this.a=a +this.b=b}, +dT:function dT(a,b){this.a=a +this.b=b}, +cy:function cy(a){this.a=a +this.b=null}, +cI:function cI(){}, +ea:function ea(){}, +ei:function ei(a,b){this.a=a +this.b=b}, +e2:function e2(){}, +e3:function e3(a,b){this.a=a +this.b=b}, +e4:function e4(a,b,c){this.a=a +this.b=b +this.c=c}, +hJ(a,b){return new A.bp(a.h("@<0>").B(b).h("bp<1,2>"))}, +eF(a,b){var s=a[b] +return s===a?null:s}, +eH(a,b,c){if(c==null)a[b]=a +else a[b]=c}, +eG(){var s=Object.create(null) +A.eH(s,"",s) +delete s[""] +return s}, +R(a,b,c){return A.jw(a,new A.ah(b.h("@<0>").B(c).h("ah<1,2>")))}, +E(a,b){return new A.ah(a.h("@<0>").B(b).h("ah<1,2>"))}, +ax(a){return new A.br(a.h("br<0>"))}, +eI(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +hV(a){return new A.am(a.h("am<0>"))}, +da(a){return new A.am(a.h("am<0>"))}, +eJ(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +ih(a,b,c){var s=new A.aJ(a,b,c.h("aJ<0>")) +s.c=a.e +return s}, +hK(a,b,c){var s=A.hJ(b,c) +a.H(0,new A.d5(s,b,c)) +return s}, +d6(a){var s=J.ad(a) +if(s.j())return s.gk() +return null}, +eC(a){var s,r +if(A.f5(a))return"{...}" +s=new A.cn("") +try{r={} +$.au.push(a) +s.a+="{" +r.a=!0 +a.H(0,new A.dd(r,s)) +s.a+="}"}finally{$.au.pop()}r=s.a +return r.charCodeAt(0)==0?r:r}, +bp:function bp(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +bq:function bq(a,b){this.a=a +this.$ti=b}, +cE:function cE(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +br:function br(a){var _=this +_.a=0 +_.e=_.d=_.c=_.b=null +_.$ti=a}, +a8:function a8(a,b,c){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null +_.$ti=c}, +am:function am(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +e_:function e_(a){this.a=a +this.c=this.b=null}, +aJ:function aJ(a,b,c){var _=this +_.a=a +_.b=b +_.d=_.c=null +_.$ti=c}, +d5:function d5(a,b,c){this.a=a +this.b=b +this.c=c}, +m:function m(){}, +ba:function ba(){}, +dd:function dd(a,b){this.a=a +this.b=b}, +ak:function ak(){}, +bz:function bz(){}, +hE(a,b){a=A.z(a,new Error()) +a.stack=b.i(0) +throw a}, +eB(a,b,c,d){var s,r=c?J.hR(a,d):J.hQ(a,d) +if(a!==0&&b!=null)for(s=0;s")) +for(s=a.length,r=0;r")) +s=A.b([],b.h("p<0>")) +for(r=J.ad(a);r.j();)s.push(r.gk()) +return s}, +fu(a,b,c){var s=J.ad(b) +if(!s.j())return a +if(c.length===0){do a+=A.o(s.gk()) +while(s.j())}else{a+=A.o(s.gk()) +for(;s.j();)a=a+c+A.o(s.gk())}return a}, +i4(){return A.aa(new Error())}, +d3(a){if(typeof a=="number"||A.eR(a)||a==null)return J.a2(a) +if(typeof a=="string")return JSON.stringify(a) +return A.fr(a)}, +hF(a,b){A.eW(a,"error",t.K) +A.eW(b,"stackTrace",t.l) +A.hE(a,b)}, +bP(a){return new A.bO(a)}, +bM(a,b){return new A.U(!1,null,b,a)}, +fg(a,b,c){return new A.U(!0,a,b,c)}, +i1(a,b,c,d,e){return new A.bh(b,c,!0,a,d,"Invalid value")}, +fs(a,b){return a}, +ex(a,b,c,d){return new A.bW(b,!0,a,d,"Index out of range")}, +fy(a){return new A.bm(a)}, +fx(a){return new A.cs(a)}, +i5(a){return new A.cj(a)}, +V(a){return new A.bT(a)}, +hP(a,b,c){var s,r +if(A.f5(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.b([],t.s) +$.au.push(a) +try{A.jc(a,s)}finally{$.au.pop()}r=A.fu(b,s,", ")+c +return r.charCodeAt(0)==0?r:r}, +ey(a,b,c){var s,r +if(A.f5(a))return b+"..."+c +s=new A.cn(b) +$.au.push(a) +try{r=s +r.a=A.fu(r.a,a,", ")}finally{$.au.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +jc(a,b){var s,r,q,p,o,n,m,l=a.gq(a),k=0,j=0 +while(!0){if(!(k<80||j<3))break +if(!l.j())return +s=A.o(l.gk()) +b.push(s) +k+=s.length+2;++j}if(!l.j()){if(j<=5)return +r=b.pop() +q=b.pop()}else{p=l.gk();++j +if(!l.j()){if(j<=4){b.push(A.o(p)) +return}r=A.o(p) +q=b.pop() +k+=r.length+2}else{o=l.gk();++j +for(;l.j();p=o,o=n){n=l.gk();++j +if(j>100){while(!0){if(!(k>75&&j>3))break +k-=b.pop().length+2;--j}b.push("...") +return}}q=A.o(p) +r=A.o(o) +k+=r.length+q.length+4}}if(j>b.length+2){k+=5 +m="..."}else m=null +while(!0){if(!(k>80&&b.length>3))break +k-=b.pop().length+2 +if(m==null){k+=5 +m="..."}}if(m!=null)b.push(m) +b.push(q) +b.push(r)}, +fp(a,b,c,d){var s +if(B.e===c){s=J.B(a) +b=J.B(b) +return A.dp(A.Z(A.Z($.cP(),s),b))}if(B.e===d){s=J.B(a) +b=J.B(b) +c=J.B(c) +return A.dp(A.Z(A.Z(A.Z($.cP(),s),b),c))}s=J.B(a) +b=J.B(b) +c=J.B(c) +d=J.B(d) +d=A.dp(A.Z(A.Z(A.Z(A.Z($.cP(),s),b),c),d)) +return d}, +hZ(a){var s,r,q=$.cP() +for(s=a.length,r=0;r") +return A.fn(new A.W(a,s),new A.de(b,c),s.h("l.E"),b.h("@<0>").B(c).h("+(1,2)"))}, +cq:function cq(a){this.a=a}, +aZ:function aZ(a){this.b=a}, +cr:function cr(a,b){var _=this +_.d=a +_.f=_.e=0 +_.r=b +_.c=null}, +dr:function dr(a,b){this.a=a +this.b=b}, +dB:function dB(a,b){this.a=a +this.b=b}, +dA:function dA(a){this.a=a}, +dy:function dy(a,b){this.a=a +this.b=b}, +dx:function dx(a){this.a=a}, +dw:function dw(){}, +dz:function dz(a,b){this.a=a +this.b=b}, +ds:function ds(a){this.a=a}, +dt:function dt(a,b){this.a=a +this.b=b}, +du:function du(a,b){this.a=a +this.b=b}, +dv:function dv(a,b){this.a=a +this.b=b}, +cc:function cc(a,b){this.c=a +this.a=b}, +df:function df(a){this.a=a}, +de:function de(a,b){this.a=a +this.b=b}, +ie(a,b,c,d){var s,r=A.jp(new A.dM(c),t.m),q=null +if(r==null)r=q +else{if(typeof r=="function")A.M(A.bM("Attempting to rewrap a JS function.",null)) +s=function(e,f){return function(g){return e(f,g,arguments.length)}}(A.iP,r) +s[$.f9()]=r +r=s}if(r!=null)a.addEventListener(b,r,!1) +return new A.cC(a,b,r,!1)}, +jp(a,b){var s=$.t +if(s===B.a)return a +return s.bU(a,b)}, +ew:function ew(a,b){this.a=a +this.$ti=b}, +cC:function cC(a,b,c,d){var _=this +_.b=a +_.c=b +_.d=c +_.e=d}, +dM:function dM(a){this.a=a}, +jI(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}, +iP(a,b,c){if(c>=1)return a.$1(b) +return a.$0()}, +aQ(a,b){return a[b]}, +dg(a){return new A.ap(A.hY(a),t.F)}, +hY(a){return function(){var s=a +var r=0,q=1,p=[],o,n +return function $async$dg(b,c,d){if(c===1){p.push(d) +r=q}while(true)switch(r){case 0:o=0 +case 2:if(!(o").B(b).h("ae<1,2>"))}, +A(a,b){var s +a.$flags&1&&A.aV(a,"remove",1) +for(s=0;s0){a[0]=q +a[1]=r}return}p=0 +if(A.aq(a).c.b(null))for(o=0;o0)this.bH(a,p)}, +bH(a,b){var s,r=a.length +for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b +if(b===0)break}}, +i(a){return A.ey(a,"[","]")}, +gq(a){return new J.bN(a,a.length,A.aq(a).h("bN<1>"))}, +gu(a){return A.ce(a)}, +gl(a){return a.length}, +m(a,b){if(!(b>=0&&b=0&&b=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}} +J.ay.prototype={ +bb(a,b){var s +if(ab)return 1 +else if(a===b){if(a===0){s=this.gaD(b) +if(this.gaD(a)===s)return 0 +if(this.gaD(a))return-1 +return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 +return 1}else return-1}, +gaD(a){return a===0?1/a<0:a<0}, +cl(a){if(a>0){if(a!==1/0)return Math.round(a)}else if(a>-1/0)return 0-Math.round(0-a) +throw A.f(A.fy(""+a+".round()"))}, +cm(a){if(a<0)return-Math.round(-a) +else return Math.round(a)}, +i(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +gu(a){var s,r,q,p,o=a|0 +if(a===o)return o&536870911 +s=Math.abs(a) +r=Math.log(s)/0.6931471805599453|0 +q=Math.pow(2,r) +p=s<1?s/q:q/s +return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, +bM(a,b){var s +if(a>0)s=this.bL(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +bL(a,b){return b>31?0:a>>>b}, +gt(a){return A.L(t.n)}, +$iv:1} +J.b2.prototype={ +gt(a){return A.L(t.S)}, +$ik:1, +$ia:1} +J.c_.prototype={ +gt(a){return A.L(t.V)}, +$ik:1} +J.az.prototype={ +bb(a,b){var s +if(a===b)s=0 +else s=a>6}r=r+((r&67108863)<<3)&536870911 +r^=r>>11 +return r+((r&16383)<<15)&536870911}, +gt(a){return A.L(t.N)}, +gl(a){return a.length}, +$ik:1, +$ie:1} +A.aF.prototype={ +gq(a){return new A.bR(J.ad(this.ga9()),A.u(this).h("bR<1,2>"))}, +gl(a){return J.eu(this.ga9())}, +G(a,b){return A.u(this).y[1].a(J.hv(this.ga9(),b))}, +i(a){return J.a2(this.ga9())}} +A.bR.prototype={ +j(){return this.a.j()}, +gk(){return this.$ti.y[1].a(this.a.gk())}} +A.bo.prototype={ +m(a,b){return this.$ti.y[1].a(J.hs(this.a,b))}, +p(a,b,c){J.ht(this.a,b,this.$ti.c.a(c))}, +$ic:1, +$ij:1} +A.ae.prototype={ +ba(a,b){return new A.ae(this.a,this.$ti.h("@<1>").B(b).h("ae<1,2>"))}, +ga9(){return this.a}} +A.ai.prototype={ +i(a){return"LateInitializationError: "+this.a}} +A.dl.prototype={} +A.c.prototype={} +A.Y.prototype={ +gq(a){var s=this +return new A.a5(s,s.gl(s),A.u(s).h("a5"))}} +A.a5.prototype={ +gk(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +j(){var s,r=this,q=r.a,p=J.en(q),o=p.gl(q) +if(r.b!==o)throw A.f(A.V(q)) +s=r.c +if(s>=o){r.d=null +return!1}r.d=p.G(q,s);++r.c +return!0}} +A.aj.prototype={ +gq(a){var s=this.a +return new A.aA(s.gq(s),this.b,A.u(this).h("aA<1,2>"))}, +gl(a){var s=this.a +return s.gl(s)}, +G(a,b){var s=this.a +return this.b.$1(s.G(s,b))}} +A.b_.prototype={$ic:1} +A.aA.prototype={ +j(){var s=this,r=s.b +if(r.j()){s.a=s.c.$1(r.gk()) +return!0}s.a=null +return!1}, +gk(){var s=this.a +return s==null?this.$ti.y[1].a(s):s}} +A.bn.prototype={ +gq(a){return new A.cv(J.ad(this.a),this.b)}} +A.cv.prototype={ +j(){var s,r +for(s=this.a,r=this.b;s.j();)if(r.$1(s.gk()))return!0 +return!1}, +gk(){return this.a.gk()}} +A.b1.prototype={} +A.bi.prototype={ +gl(a){return J.eu(this.a)}, +G(a,b){var s=this.a,r=J.en(s) +return r.G(s,r.gl(s)-1-b)}} +A.bH.prototype={} +A.ao.prototype={$r:"+(1,2)",$s:1} +A.aK.prototype={$r:"+isActive,todo(1,2)",$s:2} +A.bU.prototype={ +i(a){return A.eC(this)}} +A.aY.prototype={ +gl(a){return this.b.length}, +gbG(){var s=this.$keys +if(s==null){s=Object.keys(this.a) +this.$keys=s}return s}, +R(a){if(typeof a!="string")return!1 +if("__proto__"===a)return!1 +return this.a.hasOwnProperty(a)}, +m(a,b){if(!this.R(b))return null +return this.b[this.a[b]]}, +H(a,b){var s,r,q=this.gbG(),p=this.b +for(s=q.length,r=0;r>>0}, +i(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.cf(this.a)+"'")}} +A.cg.prototype={ +i(a){return"RuntimeError: "+this.a}} +A.ah.prototype={ +gl(a){return this.a}, +ga_(){return new A.X(this,A.u(this).h("X<1>"))}, +R(a){var s=this.c5(a) +return s}, +c5(a){var s=this.d +if(s==null)return!1 +return this.ad(s[this.ac(a)],a)>=0}, +D(a,b){b.H(0,new A.d8(this))}, +m(a,b){var s,r,q,p,o=null +if(typeof b=="string"){s=this.b +if(s==null)return o +r=s[b] +q=r==null?o:r.b +return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c +if(p==null)return o +r=p[b] +q=r==null?o:r.b +return q}else return this.c6(b)}, +c6(a){var s,r,q=this.d +if(q==null)return null +s=q[this.ac(a)] +r=this.ad(s,a) +if(r<0)return null +return s[r].b}, +p(a,b,c){var s,r,q=this +if(typeof b=="string"){s=q.b +q.aN(s==null?q.b=q.au():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=q.c +q.aN(r==null?q.c=q.au():r,b,c)}else q.c8(b,c)}, +c8(a,b){var s,r,q,p=this,o=p.d +if(o==null)o=p.d=p.au() +s=p.ac(a) +r=o[s] +if(r==null)o[s]=[p.av(a,b)] +else{q=p.ad(r,a) +if(q>=0)r[q].b=b +else r.push(p.av(a,b))}}, +A(a,b){var s=this +if(typeof b=="string")return s.b2(s.b,b) +else if(typeof b=="number"&&(b&0x3fffffff)===b)return s.b2(s.c,b) +else return s.c7(b)}, +c7(a){var s,r,q,p,o=this,n=o.d +if(n==null)return null +s=o.ac(a) +r=n[s] +q=o.ad(r,a) +if(q<0)return null +p=r.splice(q,1)[0] +o.b5(p) +if(r.length===0)delete n[s] +return p.b}, +H(a,b){var s=this,r=s.e,q=s.r +for(;r!=null;){b.$2(r.a,r.b) +if(q!==s.r)throw A.f(A.V(s)) +r=r.c}}, +aN(a,b,c){var s=a[b] +if(s==null)a[b]=this.av(b,c) +else s.b=c}, +b2(a,b){var s +if(a==null)return null +s=a[b] +if(s==null)return null +this.b5(s) +delete a[b] +return s.b}, +b0(){this.r=this.r+1&1073741823}, +av(a,b){var s,r=this,q=new A.d9(a,b) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.d=s +r.f=s.c=q}++r.a +r.b0() +return q}, +b5(a){var s=this,r=a.d,q=a.c +if(r==null)s.e=q +else r.c=q +if(q==null)s.f=r +else q.d=r;--s.a +s.b0()}, +ac(a){return J.B(a)&1073741823}, +ad(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"]=s +delete s[""] +return s}} +A.d8.prototype={ +$2(a,b){this.a.p(0,a,b)}, +$S(){return A.u(this.a).h("~(1,2)")}} +A.d9.prototype={} +A.X.prototype={ +gl(a){return this.a.a}, +gq(a){var s=this.a +return new A.b9(s,s.r,s.e)}} +A.b9.prototype={ +gk(){return this.d}, +j(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.f(A.V(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.a +r.c=s.c +return!0}}} +A.W.prototype={ +gl(a){return this.a.a}, +gq(a){var s=this.a +return new A.c2(s,s.r,s.e,this.$ti.h("c2<1,2>"))}} +A.c2.prototype={ +gk(){var s=this.d +s.toString +return s}, +j(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.f(A.V(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=new A.F(s.a,s.b,r.$ti.h("F<1,2>")) +r.c=s.c +return!0}}} +A.eo.prototype={ +$1(a){return this.a(a)}, +$S:8} +A.ep.prototype={ +$2(a,b){return this.a(a,b)}, +$S:9} +A.eq.prototype={ +$1(a){return this.a(a)}, +$S:10} +A.bx.prototype={ +gt(a){return A.L(this.b_())}, +b_(){return A.jv(this.$r,this.aZ())}, +i(a){return this.b4(!1)}, +b4(a){var s,r,q,p,o,n=this.bD(),m=this.aZ(),l=(a?"Record ":"")+"(" +for(s=n.length,r="",q=0;q0;){--q;--s +k[q]=r[s]}}k=A.hW(k,!1,t.K) +k.$flags=3 +return k}} +A.cG.prototype={ +aZ(){return[this.a,this.b]}, +L(a,b){if(b==null)return!1 +return b instanceof A.cG&&this.$s===b.$s&&J.q(this.a,b.a)&&J.q(this.b,b.b)}, +gu(a){return A.fp(this.$s,this.a,this.b,B.e)}} +A.dJ.prototype={ +J(){var s=this.b +if(s===this)throw A.f(new A.ai("Local '' has not been initialized.")) +return s}} +A.aB.prototype={ +gt(a){return B.a5}, +$ik:1} +A.bd.prototype={} +A.c3.prototype={ +gt(a){return B.a6}, +$ik:1} +A.aC.prototype={ +gl(a){return a.length}, +$iJ:1} +A.bb.prototype={ +m(a,b){A.a1(b,a,a.length) +return a[b]}, +p(a,b,c){a.$flags&2&&A.aV(a) +A.a1(b,a,a.length) +a[b]=c}, +$ic:1, +$ij:1} +A.bc.prototype={ +p(a,b,c){a.$flags&2&&A.aV(a) +A.a1(b,a,a.length) +a[b]=c}, +$ic:1, +$ij:1} +A.c4.prototype={ +gt(a){return B.a7}, +$ik:1} +A.c5.prototype={ +gt(a){return B.a8}, +$ik:1} +A.c6.prototype={ +gt(a){return B.a9}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.c7.prototype={ +gt(a){return B.aa}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.c8.prototype={ +gt(a){return B.ab}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.c9.prototype={ +gt(a){return B.af}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.ca.prototype={ +gt(a){return B.ag}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.be.prototype={ +gt(a){return B.ah}, +gl(a){return a.length}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.cb.prototype={ +gt(a){return B.ai}, +gl(a){return a.length}, +m(a,b){A.a1(b,a,a.length) +return a[b]}, +$ik:1} +A.bs.prototype={} +A.bt.prototype={} +A.bu.prototype={} +A.bv.prototype={} +A.O.prototype={ +h(a){return A.bG(v.typeUniverse,this,a)}, +B(a){return A.fL(v.typeUniverse,this,a)}} +A.cD.prototype={} +A.cL.prototype={ +i(a){return A.K(this.a,null)}, +$ifv:1} +A.cB.prototype={ +i(a){return this.a}} +A.bB.prototype={$ia_:1} +A.dG.prototype={ +$1(a){var s=this.a,r=s.a +s.a=null +r.$0()}, +$S:5} +A.dF.prototype={ +$1(a){var s,r +this.a.a=a +s=this.b +r=this.c +s.firstChild?s.removeChild(r):s.appendChild(r)}, +$S:11} +A.dH.prototype={ +$0(){this.a.$0()}, +$S:6} +A.dI.prototype={ +$0(){this.a.$0()}, +$S:6} +A.e6.prototype={ +bx(a,b){if(self.setTimeout!=null)self.setTimeout(A.cM(new A.e7(this,b),0),a) +else throw A.f(A.fy("`setTimeout()` not found."))}} +A.e7.prototype={ +$0(){this.b.$0()}, +$S:0} +A.cx.prototype={} +A.eb.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:2} +A.ec.prototype={ +$2(a,b){this.a.$2(1,new A.b0(a,b))}, +$S:12} +A.ej.prototype={ +$2(a,b){this.a(a,b)}, +$S:13} +A.aL.prototype={ +gk(){return this.b}, +bI(a,b){var s,r,q +a=a +b=b +s=this.a +for(;!0;)try{r=s(this,a,b) +return r}catch(q){b=q +a=1}}, +j(){var s,r,q,p,o=this,n=null,m=0 +for(;!0;){s=o.d +if(s!=null)try{if(s.j()){o.b=s.gk() +return!0}else o.d=null}catch(r){n=r +m=1 +o.d=null}q=o.bI(m,n) +if(1===q)return!0 +if(0===q){o.b=null +p=o.e +if(p==null||p.length===0){o.a=A.fG +return!1}o.a=p.pop() +m=0 +n=null +continue}if(2===q){m=0 +n=null +continue}if(3===q){n=o.c +o.c=null +p=o.e +if(p==null||p.length===0){o.b=null +o.a=A.fG +throw n +return!1}o.a=p.pop() +m=1 +continue}throw A.f(A.i5("sync*"))}return!1}, +cC(a){var s,r,q=this +if(a instanceof A.ap){s=a.a() +r=q.e +if(r==null)r=q.e=[] +r.push(q.a) +q.a=s +return 2}else{q.d=J.ad(a) +return 2}}} +A.ap.prototype={ +gq(a){return new A.aL(this.a())}} +A.P.prototype={ +i(a){return A.o(this.a)}, +$ir:1, +gah(){return this.b}} +A.aH.prototype={ +cd(a){if((this.c&15)!==6)return!0 +return this.b.b.aF(this.d,a.a)}, +c4(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.C.b(r))q=o.cp(r,p,a.b) +else q=o.aF(r,p) +try{p=q +return p}catch(s){if(t.c.b(A.ac(s))){if((this.c&1)!==0)throw A.f(A.bM("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.f(A.bM("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.x.prototype={ +bh(a,b,c){var s,r=$.t +if(r===B.a){if(!t.C.b(b)&&!t.w.b(b))throw A.f(A.fg(b,"onError",u.c))}else b=A.jf(b,r) +s=new A.x(r,c.h("x<0>")) +this.am(new A.aH(s,3,a,b,this.$ti.h("@<1>").B(c).h("aH<1,2>"))) +return s}, +b3(a,b,c){var s=new A.x($.t,c.h("x<0>")) +this.am(new A.aH(s,19,a,b,this.$ti.h("@<1>").B(c).h("aH<1,2>"))) +return s}, +bK(a){this.a=this.a&1|16 +this.c=a}, +a4(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +am(a){var s=this,r=s.a +if(r<=3){a.a=s.c +s.c=a}else{if((r&4)!==0){r=s.c +if((r.a&24)===0){r.am(a) +return}s.a4(r)}A.aN(null,null,s.b,new A.dO(s,a))}}, +b1(a){var s,r,q,p,o,n=this,m={} +m.a=a +if(a==null)return +s=n.a +if(s<=3){r=n.c +n.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){s=n.c +if((s.a&24)===0){s.b1(a) +return}n.a4(s)}m.a=n.a8(a) +A.aN(null,null,n.b,new A.dS(m,n))}}, +a7(){var s=this.c +this.c=null +return this.a8(s)}, +a8(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +aU(a){var s=this,r=s.a7() +s.a=8 +s.c=a +A.aI(s,r)}, +bz(a){var s,r,q=this +if((a.a&16)!==0){s=q.b===a.b +s=!(s||s)}else s=!1 +if(s)return +r=q.a7() +q.a4(a) +A.aI(q,r)}, +ao(a){var s=this.a7() +this.bK(a) +A.aI(this,s)}, +aO(a){if(this.$ti.h("aw<1>").b(a)){this.aQ(a) +return}this.by(a)}, +by(a){this.a^=2 +A.aN(null,null,this.b,new A.dQ(this,a))}, +aQ(a){A.eE(a,this,!1) +return}, +aP(a){this.a^=2 +A.aN(null,null,this.b,new A.dP(this,a))}, +$iaw:1} +A.dO.prototype={ +$0(){A.aI(this.a,this.b)}, +$S:0} +A.dS.prototype={ +$0(){A.aI(this.b,this.a.a)}, +$S:0} +A.dR.prototype={ +$0(){A.eE(this.a.a,this.b,!0)}, +$S:0} +A.dQ.prototype={ +$0(){this.a.aU(this.b)}, +$S:0} +A.dP.prototype={ +$0(){this.a.ao(this.b)}, +$S:0} +A.dV.prototype={ +$0(){var s,r,q,p,o,n,m,l,k=this,j=null +try{q=k.a.a +j=q.b.b.cn(q.d)}catch(p){s=A.ac(p) +r=A.aa(p) +if(k.c&&k.b.a.c.a===s){q=k.a +q.c=k.b.a.c}else{q=s +o=r +if(o==null)o=A.ev(q) +n=k.a +n.c=new A.P(q,o) +q=n}q.b=!0 +return}if(j instanceof A.x&&(j.a&24)!==0){if((j.a&16)!==0){q=k.a +q.c=j.c +q.b=!0}return}if(j instanceof A.x){m=k.b.a +l=new A.x(m.b,m.$ti) +j.bh(new A.dW(l,m),new A.dX(l),t.H) +q=k.a +q.c=l +q.b=!1}}, +$S:0} +A.dW.prototype={ +$1(a){this.a.bz(this.b)}, +$S:5} +A.dX.prototype={ +$2(a,b){this.a.ao(new A.P(a,b))}, +$S:14} +A.dU.prototype={ +$0(){var s,r,q,p,o,n +try{q=this.a +p=q.a +q.c=p.b.b.aF(p.d,this.b)}catch(o){s=A.ac(o) +r=A.aa(o) +q=s +p=r +if(p==null)p=A.ev(q) +n=this.a +n.c=new A.P(q,p) +n.b=!0}}, +$S:0} +A.dT.prototype={ +$0(){var s,r,q,p,o,n,m,l=this +try{s=l.a.a.c +p=l.b +if(p.a.cd(s)&&p.a.e!=null){p.c=p.a.c4(s) +p.b=!1}}catch(o){r=A.ac(o) +q=A.aa(o) +p=l.a.a.c +if(p.a===r){n=l.b +n.c=p +p=n}else{p=r +n=q +if(n==null)n=A.ev(p) +m=l.b +m.c=new A.P(p,n) +p=m}p.b=!0}}, +$S:0} +A.cy.prototype={} +A.cI.prototype={} +A.ea.prototype={} +A.ei.prototype={ +$0(){A.hF(this.a,this.b)}, +$S:0} +A.e2.prototype={ +cr(a){var s,r,q +try{if(B.a===$.t){a.$0() +return}A.fW(null,null,this,a)}catch(q){s=A.ac(q) +r=A.aa(q) +A.eh(s,r)}}, +ct(a,b){var s,r,q +try{if(B.a===$.t){a.$1(b) +return}A.fX(null,null,this,a,b)}catch(q){s=A.ac(q) +r=A.aa(q) +A.eh(s,r)}}, +cu(a,b){return this.ct(a,b,t.z)}, +b8(a){return new A.e3(this,a)}, +bU(a,b){return new A.e4(this,a,b)}, +co(a){if($.t===B.a)return a.$0() +return A.fW(null,null,this,a)}, +cn(a){return this.co(a,t.z)}, +cs(a,b){if($.t===B.a)return a.$1(b) +return A.fX(null,null,this,a,b)}, +aF(a,b){var s=t.z +return this.cs(a,b,s,s)}, +cq(a,b,c){if($.t===B.a)return a.$2(b,c) +return A.jg(null,null,this,a,b,c)}, +cp(a,b,c){var s=t.z +return this.cq(a,b,c,s,s,s)}, +ci(a){return a}, +bg(a){var s=t.z +return this.ci(a,s,s,s)}} +A.e3.prototype={ +$0(){return this.a.cr(this.b)}, +$S:0} +A.e4.prototype={ +$1(a){return this.a.cu(this.b,a)}, +$S(){return this.c.h("~(0)")}} +A.bp.prototype={ +gl(a){return this.a}, +ga_(){return new A.bq(this,A.u(this).h("bq<1>"))}, +R(a){var s=this.bC(a) +return s}, +bC(a){var s=this.d +if(s==null)return!1 +return this.C(this.aY(s,a),a)>=0}, +m(a,b){var s,r,q +if(typeof b=="string"&&b!=="__proto__"){s=this.b +r=s==null?null:A.eF(s,b) +return r}else if(typeof b=="number"&&(b&1073741823)===b){q=this.c +r=q==null?null:A.eF(q,b) +return r}else return this.bE(b)}, +bE(a){var s,r,q=this.d +if(q==null)return null +s=this.aY(q,a) +r=this.C(s,a) +return r<0?null:s[r+1]}, +p(a,b,c){var s,r,q=this +if(typeof b=="string"&&b!=="__proto__"){s=q.b +q.aR(s==null?q.b=A.eG():s,b,c)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +q.aR(r==null?q.c=A.eG():r,b,c)}else q.bJ(b,c)}, +bJ(a,b){var s,r,q,p=this,o=p.d +if(o==null)o=p.d=A.eG() +s=p.E(a) +r=o[s] +if(r==null){A.eH(o,s,[a,b]);++p.a +p.e=null}else{q=p.C(r,a) +if(q>=0)r[q+1]=b +else{r.push(a,b);++p.a +p.e=null}}}, +A(a,b){var s=this +if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b) +else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b) +else return s.X(b)}, +X(a){var s,r,q,p,o=this,n=o.d +if(n==null)return null +s=o.E(a) +r=n[s] +q=o.C(r,a) +if(q<0)return null;--o.a +o.e=null +p=r.splice(q,2)[1] +if(0===r.length)delete n[s] +return p}, +H(a,b){var s,r,q,p,o,n=this,m=n.aV() +for(s=m.length,r=A.u(n).y[1],q=0;q"))}} +A.cE.prototype={ +gk(){var s=this.d +return s==null?this.$ti.c.a(s):s}, +j(){var s=this,r=s.b,q=s.c,p=s.a +if(r!==p.e)throw A.f(A.V(p)) +else if(q>=r.length){s.d=null +return!1}else{s.d=r[q] +s.c=q+1 +return!0}}} +A.br.prototype={ +gq(a){return new A.a8(this,this.ap(),A.u(this).h("a8<1>"))}, +gl(a){return this.a}, +aB(a,b){var s,r +if(typeof b=="string"&&b!=="__proto__"){s=this.b +return s==null?!1:s[b]!=null}else if(typeof b=="number"&&(b&1073741823)===b){r=this.c +return r==null?!1:r[b]!=null}else return this.bB(b)}, +bB(a){var s=this.d +if(s==null)return!1 +return this.C(s[this.E(a)],a)>=0}, +P(a,b){var s,r,q=this +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.W(s==null?q.b=A.eI():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.W(r==null?q.c=A.eI():r,b)}else return q.al(b)}, +al(a){var s,r,q=this,p=q.d +if(p==null)p=q.d=A.eI() +s=q.E(a) +r=p[s] +if(r==null)p[s]=[a] +else{if(q.C(r,a)>=0)return!1 +r.push(a)}++q.a +q.e=null +return!0}, +A(a,b){var s=this +if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b) +else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b) +else return s.X(b)}, +X(a){var s,r,q,p=this,o=p.d +if(o==null)return!1 +s=p.E(a) +r=o[s] +q=p.C(r,a) +if(q<0)return!1;--p.a +p.e=null +r.splice(q,1) +if(0===r.length)delete o[s] +return!0}, +F(a){var s=this +if(s.a>0){s.b=s.c=s.d=s.e=null +s.a=0}}, +ap(){var s,r,q,p,o,n,m,l,k,j,i=this,h=i.e +if(h!=null)return h +h=A.eB(i.a,null,!1,t.z) +s=i.b +r=0 +if(s!=null){q=Object.getOwnPropertyNames(s) +p=q.length +for(o=0;o=r.length){s.d=null +return!1}else{s.d=r[q] +s.c=q+1 +return!0}}} +A.am.prototype={ +gq(a){var s=this,r=new A.aJ(s,s.r,A.u(s).h("aJ<1>")) +r.c=s.e +return r}, +gl(a){return this.a}, +H(a,b){var s=this,r=s.e,q=s.r +for(;r!=null;){b.$1(r.a) +if(q!==s.r)throw A.f(A.V(s)) +r=r.b}}, +P(a,b){var s,r,q=this +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.W(s==null?q.b=A.eJ():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.W(r==null?q.c=A.eJ():r,b)}else return q.al(b)}, +al(a){var s,r,q=this,p=q.d +if(p==null)p=q.d=A.eJ() +s=q.E(a) +r=p[s] +if(r==null)p[s]=[q.an(a)] +else{if(q.C(r,a)>=0)return!1 +r.push(q.an(a))}return!0}, +A(a,b){var s=this +if(typeof b=="string"&&b!=="__proto__")return s.M(s.b,b) +else if(typeof b=="number"&&(b&1073741823)===b)return s.M(s.c,b) +else return s.X(b)}, +X(a){var s,r,q,p,o=this,n=o.d +if(n==null)return!1 +s=o.E(a) +r=n[s] +q=o.C(r,a) +if(q<0)return!1 +p=r.splice(q,1)[0] +if(0===r.length)delete n[s] +o.aT(p) +return!0}, +W(a,b){if(a[b]!=null)return!1 +a[b]=this.an(b) +return!0}, +M(a,b){var s +if(a==null)return!1 +s=a[b] +if(s==null)return!1 +this.aT(s) +delete a[b] +return!0}, +aS(){this.r=this.r+1&1073741823}, +an(a){var s,r=this,q=new A.e_(a) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.c=s +r.f=s.b=q}++r.a +r.aS() +return q}, +aT(a){var s=this,r=a.c,q=a.b +if(r==null)s.e=q +else r.b=q +if(q==null)s.f=r +else q.c=r;--s.a +s.aS()}, +E(a){return J.B(a)&1073741823}, +C(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"))}, +G(a,b){return this.m(a,b)}, +i(a){return A.ey(a,"[","]")}} +A.ba.prototype={ +H(a,b){var s,r,q,p +for(s=this.ga_(),s=s.gq(s),r=A.u(this).y[1];s.j();){q=s.gk() +p=this.m(0,q) +b.$2(q,p==null?r.a(p):p)}}, +cb(a,b,c,d){var s,r,q,p,o,n=A.E(c,d) +for(s=this.ga_(),s=s.gq(s),r=A.u(this).y[1];s.j();){q=s.gk() +p=this.m(0,q) +o=b.$2(q,p==null?r.a(p):p) +n.p(0,o.a,o.b)}return n}, +ck(a,b){var s,r,q,p,o=this,n=A.u(o),m=A.b([],n.h("p<1>")) +for(s=o.ga_(),s=s.gq(s),n=n.y[1];s.j();){r=s.gk() +q=o.m(0,r) +if(b.$2(r,q==null?n.a(q):q))m.push(r)}for(n=m.length,p=0;pr)s=": Not in inclusive range "+A.o(r)+".."+A.o(q) +else s=q0)for(s=new A.aL(A.dg(m.childNodes).a());s.j();){r=s.b +o=c.b +if(o===c)A.M(A.Q("")) +o.append(r)}d.b=A.da(t.N)}else{c.b=s +d.b=A.da(t.N) +n=0 +while(!0){s=c.b +if(s===c)A.M(A.Q("")) +if(!(n") +r=A.fn(new A.W(a2,r),new A.cX(),r.h("l.E"),t.N).c9(0,"; ")}A.cR(s,"style",r) +s=a3==null +if(!s&&a3.a!==0)for(r=new A.W(a3,A.u(a3).h("W<1,2>")).gq(0);r.j();){l=r.d +o=l.a +k=o==="value" +j=!1 +if(k){i=c.b +if(i===c)A.M(A.Q("")) +if(i==null?!1:i instanceof $.fb())j=!J.q(i.value,l.b)}if(j){o=c.b +if(o===c)A.M(A.Q("")) +o.value=l.b +continue}j=!1 +if(k){k=c.b +if(k===c)A.M(A.Q("")) +if(k==null?!1:k instanceof $.fc())k=!J.q(k.value,l.b) +else k=j}else k=j +if(k){o=c.b +if(o===c)A.M(A.Q("")) +o.value=l.b +continue}k=c.b +if(k===c)A.M(A.Q("")) +A.cR(k,o,l.b)}r=d.J() +o=["id","class","style"] +s=s?e:new A.X(a3,A.u(a3).h("X<1>")) +if(s!=null)B.b.D(o,s) +r.cj(o) +if(d.J().a!==0)for(s=d.J(),s=A.ih(s,s.r,A.u(s).c),r=s.$ti.c;s.j();){o=s.d +if(o==null)o=r.a(o) +k=c.b +if(k===c)A.M(A.Q("")) +k.removeAttribute(o)}if(a4!=null&&a4.a!==0){s=f.c +if(s==null)h=e +else{r=A.u(s).h("X<1>") +h=A.hV(r.h("l.E")) +h.D(0,new A.X(s,r))}g=f.c +if(g==null)g=f.c=A.E(t.N,t.M) +a4.H(0,new A.cY(h,g,c)) +if(h!=null)h.H(0,new A.cZ(g))}else f.bY()}, +bk(a){var s,r,q,p,o,n,m=this +$label0$0:{s=m.a +if(s==null){r=m.d.b +s=r.length +if(s!==0)for(q=0;q0?n[r-1].as:l))break;--r}}}}finally{for(n=j.a,l=n.length,k=0;k")),s=s.c;p.j();){r=p.d;(r==null?s.a(r):r).cD(q)}q.y=null +q.w=B.al}, +aG(){var s=this +s.gn() +s.z=s.e=s.ay=null +s.w=B.am}, +aw(){var s=this.a +this.y=s==null?null:s.y}, +bP(){var s=this.a +this.x=s==null?null:s.x}, +bS(){var s=this.a +this.b=s==null?null:s.b}, +cc(){var s=this +if(s.w!==B.d)return +if(s.as)return +s.as=!0 +s.r.bm(s)}, +a1(){var s=this +if(s.w!==B.d||!s.as)return +s.r.toString +s.U() +new A.d1(s).$0() +s.aa()}, +aa(){}, +Y(){this.K(new A.d0())}, +aH(a){var s,r=this,q=null +r.cx=a +s=a==null?q:a.gN() +if(s==null){s=r.cx +if(s==null)s=q +else{s=s.ch +s=s==null?q:s.gN()}}r.cy=s +s=r.a +if(J.q(s==null?q:s.cx,r)){s=r.a +s=s==null?q:s.gN() +s=!J.q(s,r.gN())}else s=!1 +if(s)r.a.aH(r)}, +bj(a){this.ch=a +this.b7(!1) +this.db=!1}, +a5(){}, +b7(a){var s,r=this,q=r.ch +if(q==null){s=r.a +if(t.X.b(s))q=null +else{s=s==null?null:s.CW +q=s}}if(a||!J.q(q,r.CW)){r.CW=q +r.a5() +if(!t.X.b(r))r.K(new A.d_())}}, +gN(){return this.cy}} +A.d2.prototype={ +$1(a){return a!=null&&this.a.aB(0,a)?null:a}, +$S:23} +A.d1.prototype={ +$0(){var s,r,q=this.a,p=q.z +if(p!=null&&p.a!==0)for(s=A.u(p),p=new A.a8(p,p.ap(),s.h("a8<1>")),s=s.c;p.j();){r=p.d;(r==null?s.a(r):r).cE(q)}}, +$S:0} +A.d0.prototype={ +$1(a){a.Y()}, +$S:3} +A.d_.prototype={ +$1(a){return a.b7(!0)}, +$S:3} +A.cF.prototype={ +b6(a){a.K(new A.dY(this)) +a.aG()}, +bO(){var s,r,q=this.a,p=A.db(q,A.u(q).c) +B.b.ag(p,A.f1()) +q.F(0) +for(q=A.aq(p).h("bi<1>"),s=new A.bi(p,q),s=new A.a5(s,s.gl(0),q.h("a5")),q=q.h("Y.E");s.j();){r=s.d +this.b6(r==null?q.a(r):r)}}} +A.dY.prototype={ +$1(a){this.a.b6(a)}, +$S:3} +A.c1.prototype={} +A.dc.prototype={} +A.cu.prototype={ +L(a,b){if(b==null)return!1 +return J.ff(b)===A.G(this)&&this.$ti.b(b)&&b.a===this.a}, +gu(a){return A.hZ([A.G(this),this.a])}, +i(a){var s=this.$ti,r=s.c,q=this.a,p=A.L(r)===B.ae?"<'"+q+"'>":"<"+q+">" +if(A.G(this)===A.L(s))return"["+p+"]" +return"["+A.L(r).i(0)+" "+p+"]"}} +A.a6.prototype={ +S(){return A.i0(this)}} +A.aD.prototype={ +a0(a,b){this.a3(a,b)}, +v(){this.a1() +this.ai()}, +V(a){return!0}, +U(){var s,r,q,p,o=this +o.as=!1 +s=t.E.a(o.gn()) +r=s.c +if(r==null){q=A.b([],t.i) +p=s.b +if(p!=null)q.push(p) +r=q}q=o.dx +if(q==null)q=A.b([],t.k) +p=o.dy +o.dx=o.bi(q,r,p) +p.F(0)}, +K(a){var s,r,q=this.dx +q=J.ad(q==null?[]:q) +s=this.dy +for(;q.j();){r=q.gk() +if(!s.aB(0,r))a.$1(r)}}} +A.b7.prototype={ +a0(a,b){this.a3(a,b)}, +v(){this.a1() +this.ai()}, +V(a){return!1}, +U(){this.as=!1}, +K(a){}} +A.di.prototype={} +A.bg.prototype={ +v(){var s,r,q=this +if(q.d$==null){s=q.ay.d$ +s.toString +r=new A.ag(A.b([],t.O)) +r.d=s +q.d$=r +q.aI()}q.bv()}, +a2(a){if(this.aJ(a))this.e$=!0 +this.ak(a)}, +Z(a){var s=this +if(s.e$){s.e$=!1 +s.aI()}s.aj(a)}, +a5(){this.aM() +this.aa()}} +A.b8.prototype={ +v(){var s,r,q=this +if(q.d$==null){s=q.ay.d$ +s.toString +r=new A.ag(A.b([],t.O)) +r.d=s +q.d$=r +s=q.e +s.toString +r.bk(t.x.a(s).b)}q.bt()}, +a2(a){var s=this.e +s.toString +if(t.x.a(s).b!==a.b)this.e$=!0 +this.ak(a)}, +Z(a){var s,r,q=this +if(q.e$){q.e$=!1 +s=q.d$ +s.toString +r=q.e +r.toString +s.bk(t.x.a(r).b)}q.aj(a)}, +a5(){this.aM() +this.aa()}} +A.S.prototype={ +aJ(a){return!0}, +aa(){var s,r,q,p,o=this.ay +if(o==null)s=null +else{o=o.d$ +o.toString +s=o}if(s!=null){r=this.CW +while(!0){o=r==null +if(!(!o&&r.gN()==null))break +r=r.CW}q=o?null:r.gN() +o=this.d$ +o.toString +if(q==null)p=null +else{p=q.d$ +p.toString}s.az(o,p)}}, +Y(){var s,r,q=this.ay +if(q==null)s=null +else{q=q.d$ +q.toString +s=q}if(s!=null){q=this.d$ +r=q.a +if(r!=null)r.parentNode.removeChild(r) +q.d=null}}, +gN(){return this}} +A.ck.prototype={ +S(){var s=new A.cr(A.E(t.S,t._),B.l),r=A.ax(t.h),q=($.I+1)%16777215 +$.I=q +return s.c=new A.cl(s,r,q,this,B.c)}} +A.ci.prototype={ +O(a){a.$0() +this.c.cc()}} +A.cl.prototype={ +b9(){return this.y1.ab(this)}, +v(){var s=this +if(s.r.c)s.y1.toString +s.bF() +s.aK()}, +bF(){try{this.y1.toString}finally{}this.y1.toString}, +U(){var s=this +s.r.toString +if(s.bd){s.y1.toString +s.bd=!1}s.aL()}, +V(a){this.y1.toString +return!0}, +a2(a){this.ak(a) +this.y1.toString}, +Z(a){try{this.y1.toString}finally{}this.aj(a)}, +T(){this.y1.toString +this.br()}, +aG(){this.bs() +this.y1=this.y1.c=null}} +A.al.prototype={ +S(){var s=A.ax(t.h),r=($.I+1)%16777215 +$.I=r +return new A.cm(s,r,this,B.c)}} +A.cm.prototype={ +gn(){return t.q.a(A.d.prototype.gn.call(this))}, +v(){if(this.r.c)this.f.toString +this.aK()}, +V(a){t.q.a(A.d.prototype.gn.call(this)) +return!0}, +b9(){return t.q.a(A.d.prototype.gn.call(this)).ab(this)}, +U(){this.r.toString +this.aL()}} +A.bL.prototype={ +ab(a){var s,r=null,q=t.i,p=A.f7(A.b([new A.A("Double-click to edit a todo",r)],q)),o=A.f7(A.b([new A.A("Created by the Dart team",r)],q)),n=A.b([new A.A("TodoMVC",r)],q),m=t.N,l=A.E(m,m) +l.p(0,"href","http://todomvc.com") +m=A.E(m,t.v) +s=t.z +m.D(0,A.f0().$2$1$onClick(r,s,s)) +return A.b([new A.cq(r),A.h2(A.b([p,o,A.f7(A.b([new A.A("Part of ",r),new A.w("a",r,r,r,l,m,r,n,r)],q))],q),"info",r)],q)}} +A.cq.prototype={} +A.aZ.prototype={ +a6(){return"DisplayState."+this.b}} +A.cr.prototype={ +bR(a){this.O(new A.dr(this,a))}, +cv(a){this.O(new A.dB(this,a))}, +cw(){this.O(new A.dA(this))}, +c1(a){this.O(new A.dy(this,a))}, +bX(){this.O(new A.dx(this))}, +bn(a){this.O(new A.dz(this,a))}, +ab(a7){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=this,d=null,c="none;",b="block;",a="toggle-all",a0=t.N,a1=A.R(["data-testid","header"],a0,a0),a2=t.i,a3=A.b([new A.w("h1",d,d,d,d,d,d,A.b([new A.A("todos",d)],a2),d),A.f_(A.b([new A.cc(e.gbQ(),d)],a2),"input-container")],a2),a4=e.d,a5=A.R(["display",a4.a===0?c:b],a0,a0),a6=e.f>0?d:A.R(["checked",""],a0,a0) +a6=A.f4(A.b([],a2),a6,a,a,d,new A.ds(e),B.f,d) +s=A.R(["for","toggle-all"],a0,a0) +s=A.f_(A.b([a6,A.h5(A.b([new A.A("Mark all as complete",d)],a2),s,"toggle-all-label")],a2),"toggle-all-container") +a6=A.b([],a2) +for(r=A.hX(a4,t.S,t._),q=r.a,p=A.u(r),r=new A.aA(q.gq(q),r.b,p.h("aA<1,2>")),p=p.y[1],q=t.Y;r.j();){o={} +n=r.a +if(n==null)n=p.a(n) +o.a=null +m=n.a +o.a=m +l=n.b +k=l.a +if(!(k&&e.r!==B.n))n=!k&&e.r!==B.m +else n=!0 +if(n){n=k?"":"completed" +j=""+m +i=A.R(["data-id",j],a0,a0) +h=k?d:A.R(["checked",""],a0,a0) +a6.push(A.h6(A.b([A.f_(A.b([A.f4(A.b([],a2),h,"toggle",d,new A.cu(j+"-"+k,q),new A.dt(o,e),B.f,d),A.h5(A.b([new A.A(l.b,d)],a2),d,d),A.h1(A.b([],a2),"destroy",new A.du(o,e),d)],a2),"view")],a2),i,n))}}a6=A.b([s,A.hc(a6,"todo-list")],a2) +s=A.R(["display",a4.a===0?c:b],a0,a0) +r=A.b([new A.A(""+e.f,d)],a2) +q=e.f===1?"":"s" +q=A.hb(A.b([new A.w("strong",d,d,d,d,d,d,r,d),new A.A(" item"+q+" left",d)],a2),"todo-count",d) +r=A.b([],a2) +for(p=[B.a1,B.a0,B.a2],o=t.v,g=0;g<3;++g){n={} +j=p[g] +n.a=null +f=j.b +n.a=f +i=e.r===f?"selected":"" +n=A.R(["click",new A.dv(n,e)],a0,o) +r.push(A.h6(A.b([A.hb(A.b([new A.A(j.a,d)],a2),i,n)],a2),d,d))}r=A.hc(r,"filters") +a0=A.R(["display",a4.a-e.f===0?c:b],a0,a0) +return A.b([new A.w("section","root","todoapp",d,d,d,d,A.b([new A.w("header",d,"header",d,a1,d,d,a3,d),new A.w("main",d,"main",new A.bw(a5),d,d,d,a6,d),A.h2(A.b([q,r,A.h1(A.b([new A.A("Clear completed",d)],a2),"clear-completed",e.gbW(),new A.bw(a0))],a2),"footer",new A.bw(s))],a2),d)],a2)}} +A.dr.prototype={ +$0(){var s=this.a +s.d.p(0,++s.e,new A.aK(!0,this.b));++s.f}, +$S:0} +A.dB.prototype={ +$0(){var s=this.a,r=s.d,q=this.b,p=r.m(0,q),o=p.a +r.p(0,q,new A.aK(!o,p.b)) +r=s.f +if(o)s.f=r-1 +else s.f=r+1}, +$S:0} +A.dA.prototype={ +$0(){var s,r,q,p,o +for(s=this.a,r=s.d,q=new A.b9(r,r.r,r.e);q.j();){p=q.d +o=r.m(0,p).b +r.p(0,p,new A.aK(s.f===0,o))}s.f=s.f===0?r.a:0}, +$S:0} +A.dy.prototype={ +$0(){var s=this.a +if(s.d.A(0,this.b).a)--s.f}, +$S:0} +A.dx.prototype={ +$0(){this.a.d.ck(0,new A.dw())}, +$S:0} +A.dw.prototype={ +$2(a,b){return!b.a}, +$S:24} +A.dz.prototype={ +$0(){this.a.r=this.b}, +$S:0} +A.ds.prototype={ +$1(a){return this.a.cw()}, +$S:2} +A.dt.prototype={ +$1(a){return this.b.cv(this.a.a)}, +$S:2} +A.du.prototype={ +$0(){return this.b.c1(this.a.a)}, +$S:0} +A.dv.prototype={ +$1(a){return this.b.bn(this.a.a)}, +$S:1} +A.cc.prototype={ +ab(a){var s,r=t.N +r=A.R(["placeholder","What needs to be done?"],r,r) +s=t.i +return A.b([A.f4(A.b([],s),r,"new-todo",null,null,new A.df(this),null,"")],s)}} +A.df.prototype={ +$1(a){return this.a.c.$1(A.fO(a))}, +$S:2} +A.de.prototype={ +$1(a){return new A.ao(a.a,a.b)}, +$S(){return this.a.h("@<0>").B(this.b).h("+(1,2)(F<1,2>)")}} +A.ew.prototype={} +A.cC.prototype={ +bV(){var s,r,q=this,p=new A.x($.t,t.D) +p.aO(null) +s=q.b +if(s==null)return p +r=q.d +if(r!=null)s.removeEventListener(q.c,r,!1) +q.d=q.b=null +return p}} +A.dM.prototype={ +$1(a){return this.a.$1(a)}, +$S:1};(function aliases(){var s=J.a4.prototype +s.bu=s.i +s=A.ag.prototype +s.bp=s.az +s=A.aX.prototype +s.aK=s.v +s.aL=s.U +s=A.bS.prototype +s.bo=s.aA +s=A.d.prototype +s.a3=s.a0 +s.ai=s.v +s.ak=s.a2 +s.aj=s.Z +s.br=s.T +s.bs=s.aG +s.bq=s.aw +s.aM=s.a5 +s=A.aD.prototype +s.bv=s.v +s=A.b7.prototype +s.bt=s.v})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installStaticTearOff,o=hunkHelpers._instance_0u,n=hunkHelpers._instance_1u +s(J,"j0","hT",25) +r(A,"jq","ib",4) +r(A,"jr","ic",4) +r(A,"js","id",4) +q(A,"h0","jk",0) +p(A,"f0",0,null,["$2$3$onChange$onClick$onInput","$0","$2$0","$2$1$onClick","$2$2$onChange$onInput"],["cN",function(){var l=t.z +return A.cN(null,null,null,l,l)},function(a,b){return A.cN(null,null,null,a,b)},function(a,b,c){return A.cN(null,a,null,b,c)},function(a,b,c,d){return A.cN(a,null,b,c,d)}],26,0) +o(A.ch.prototype,"gbZ","c_",0) +s(A,"f1","hD",27) +r(A,"em","ig",3) +o(A.bQ.prototype,"gce","cf",0) +o(A.cF.prototype,"gbN","bO",0) +var m +n(m=A.cr.prototype,"gbQ","bR",7) +o(m,"gbW","bX",0)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.mixinHard,q=hunkHelpers.inherit,p=hunkHelpers.inheritMany +q(A.h,null) +p(A.h,[A.ez,J.bX,A.bj,J.bN,A.l,A.bR,A.r,A.dl,A.a5,A.aA,A.cv,A.b1,A.bx,A.bU,A.dC,A.dh,A.b0,A.bA,A.af,A.ba,A.d9,A.b9,A.c2,A.dJ,A.O,A.cD,A.cL,A.e6,A.cx,A.aL,A.P,A.aH,A.x,A.cy,A.cI,A.ea,A.cE,A.ak,A.a8,A.e_,A.aJ,A.m,A.dL,A.bl,A.dN,A.F,A.D,A.cJ,A.cn,A.cw,A.di,A.av,A.ch,A.cA,A.dE,A.bC,A.cK,A.co,A.bQ,A.d,A.bS,A.C,A.cF,A.c1,A.S,A.ci,A.ew,A.cC]) +p(J.bX,[J.bZ,J.b3,J.b5,J.b4,J.b6,J.ay,J.az]) +p(J.b5,[J.a4,J.p,A.aB,A.bd]) +p(J.a4,[J.cd,J.aE,J.a3]) +q(J.bY,A.bj) +q(J.d7,J.p) +p(J.ay,[J.b2,J.c_]) +p(A.l,[A.aF,A.c,A.aj,A.bn,A.ap]) +q(A.bH,A.aF) +q(A.bo,A.bH) +q(A.ae,A.bo) +p(A.r,[A.ai,A.a_,A.c0,A.ct,A.cg,A.cB,A.bO,A.U,A.bm,A.cs,A.cj,A.bT]) +p(A.c,[A.Y,A.X,A.W,A.bq]) +q(A.b_,A.aj) +q(A.bi,A.Y) +q(A.cG,A.bx) +p(A.cG,[A.ao,A.aK]) +q(A.aY,A.bU) +q(A.bf,A.a_) +p(A.af,[A.cU,A.cV,A.dq,A.eo,A.eq,A.dG,A.dF,A.eb,A.dW,A.e4,A.cX,A.cZ,A.d4,A.el,A.ef,A.ed,A.d2,A.d0,A.d_,A.dY,A.ds,A.dt,A.dv,A.df,A.de,A.dM]) +p(A.dq,[A.dm,A.aW]) +p(A.ba,[A.ah,A.bp]) +p(A.cV,[A.d8,A.ep,A.ec,A.ej,A.dX,A.d5,A.dd,A.cW,A.cY,A.eg,A.dw]) +p(A.bd,[A.c3,A.aC]) +p(A.aC,[A.bs,A.bu]) +q(A.bt,A.bs) +q(A.bb,A.bt) +q(A.bv,A.bu) +q(A.bc,A.bv) +p(A.bb,[A.c4,A.c5]) +p(A.bc,[A.c6,A.c7,A.c8,A.c9,A.ca,A.be,A.cb]) +q(A.bB,A.cB) +p(A.cU,[A.dH,A.dI,A.e7,A.dO,A.dS,A.dR,A.dQ,A.dP,A.dV,A.dU,A.dT,A.ei,A.e3,A.ee,A.dk,A.cT,A.d1,A.dr,A.dB,A.dA,A.dy,A.dx,A.dz,A.du]) +q(A.e2,A.ea) +q(A.bz,A.ak) +p(A.bz,[A.br,A.am]) +p(A.U,[A.bh,A.bW]) +q(A.cQ,A.cw) +q(A.cz,A.cQ) +q(A.cS,A.cz) +q(A.ag,A.di) +q(A.dj,A.ag) +p(A.dL,[A.n,A.bk,A.aG,A.aZ]) +p(A.bC,[A.dK,A.e1]) +q(A.dn,A.cK) +p(A.dn,[A.e5,A.bw]) +p(A.d,[A.aX,A.aD,A.b7]) +p(A.C,[A.a6,A.A,A.ck,A.al]) +p(A.a6,[A.cH,A.w]) +q(A.bg,A.aD) +p(A.bg,[A.by,A.bV]) +q(A.b8,A.b7) +q(A.cp,A.b8) +q(A.dc,A.c1) +q(A.cu,A.dc) +p(A.aX,[A.cl,A.cm]) +p(A.al,[A.bL,A.cc]) +q(A.cq,A.ck) +q(A.cr,A.ci) +s(A.bH,A.m) +s(A.bs,A.m) +s(A.bt,A.b1) +s(A.bu,A.m) +s(A.bv,A.b1) +s(A.cz,A.bS) +s(A.cw,A.ch) +s(A.cK,A.co) +r(A.bg,A.S) +r(A.b8,A.S)})() +var v={G:typeof self!="undefined"?self:globalThis,typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{a:"int",v:"double",h7:"num",e:"String",T:"bool",D:"Null",j:"List",h:"Object",fm:"Map",i:"JSObject"},mangledNames:{},types:["~()","~(i)","~(@)","~(d)","~(~())","D(@)","D()","~(e)","@(@)","@(@,e)","@(e)","D(~())","D(@,a7)","~(a,@)","D(h,a7)","~(@,@)","~(h?,h?)","~(e,av)","e(F)","~(e,~(i))","h?()","T(n)","F(e,e)","d?(d?)","T(a,+isActive,todo(T,e))","a(@,@)","fm({onChange:~(1^)?,onClick:~()?,onInput:~(0^)?})","a(d,d)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;":(a,b)=>c=>c instanceof A.ao&&a.b(c.a)&&b.b(c.b),"2;isActive,todo":(a,b)=>c=>c instanceof A.aK&&a.b(c.a)&&b.b(c.b)}} +A.ix(v.typeUniverse,JSON.parse('{"cd":"a4","aE":"a4","a3":"a4","jR":"aB","bZ":{"T":[],"k":[]},"b3":{"k":[]},"b5":{"i":[]},"a4":{"i":[]},"p":{"j":["1"],"c":["1"],"i":[]},"bY":{"bj":[]},"d7":{"p":["1"],"j":["1"],"c":["1"],"i":[]},"ay":{"v":[]},"b2":{"v":[],"a":[],"k":[]},"c_":{"v":[],"k":[]},"az":{"e":[],"k":[]},"aF":{"l":["2"]},"bo":{"m":["2"],"j":["2"],"aF":["1","2"],"c":["2"],"l":["2"]},"ae":{"bo":["1","2"],"m":["2"],"j":["2"],"aF":["1","2"],"c":["2"],"l":["2"],"m.E":"2","l.E":"2"},"ai":{"r":[]},"c":{"l":["1"]},"Y":{"c":["1"],"l":["1"]},"aj":{"l":["2"],"l.E":"2"},"b_":{"aj":["1","2"],"c":["2"],"l":["2"],"l.E":"2"},"bn":{"l":["1"],"l.E":"1"},"bi":{"Y":["1"],"c":["1"],"l":["1"],"l.E":"1","Y.E":"1"},"aY":{"bU":["1","2"]},"bf":{"a_":[],"r":[]},"c0":{"r":[]},"ct":{"r":[]},"bA":{"a7":[]},"cg":{"r":[]},"ah":{"ba":["1","2"]},"X":{"c":["1"],"l":["1"],"l.E":"1"},"W":{"c":["F<1,2>"],"l":["F<1,2>"],"l.E":"F<1,2>"},"aB":{"i":[],"k":[]},"bd":{"i":[]},"c3":{"i":[],"k":[]},"aC":{"J":["1"],"i":[]},"bb":{"m":["v"],"j":["v"],"J":["v"],"c":["v"],"i":[]},"bc":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[]},"c4":{"m":["v"],"j":["v"],"J":["v"],"c":["v"],"i":[],"k":[],"m.E":"v"},"c5":{"m":["v"],"j":["v"],"J":["v"],"c":["v"],"i":[],"k":[],"m.E":"v"},"c6":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"c7":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"c8":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"c9":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"ca":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"be":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"cb":{"m":["a"],"j":["a"],"J":["a"],"c":["a"],"i":[],"k":[],"m.E":"a"},"cL":{"fv":[]},"cB":{"r":[]},"bB":{"a_":[],"r":[]},"ap":{"l":["1"],"l.E":"1"},"P":{"r":[]},"x":{"aw":["1"]},"bp":{"ba":["1","2"]},"bq":{"c":["1"],"l":["1"],"l.E":"1"},"br":{"ak":["1"],"c":["1"]},"am":{"ak":["1"],"c":["1"]},"ak":{"c":["1"]},"bz":{"ak":["1"],"c":["1"]},"j":{"c":["1"]},"bO":{"r":[]},"a_":{"r":[]},"U":{"r":[]},"bh":{"r":[]},"bW":{"r":[]},"bm":{"r":[]},"cs":{"r":[]},"cj":{"r":[]},"bT":{"r":[]},"bl":{"r":[]},"cJ":{"a7":[]},"iA":{"w":[],"a6":[],"C":[]},"hL":{"d":[]},"aX":{"d":[]},"cH":{"a6":[],"C":[]},"by":{"S":[],"d":[]},"w":{"a6":[],"C":[]},"bV":{"S":[],"d":[]},"A":{"C":[]},"cp":{"S":[],"d":[]},"a6":{"C":[]},"aD":{"d":[]},"b7":{"d":[]},"bg":{"S":[],"d":[]},"b8":{"S":[],"d":[]},"ck":{"C":[]},"cl":{"d":[]},"al":{"C":[]},"cm":{"d":[]},"bL":{"al":[],"C":[]},"cq":{"C":[]},"cc":{"al":[],"C":[]},"hO":{"j":["a"],"c":["a"]},"i9":{"j":["a"],"c":["a"]},"i8":{"j":["a"],"c":["a"]},"hM":{"j":["a"],"c":["a"]},"i6":{"j":["a"],"c":["a"]},"hN":{"j":["a"],"c":["a"]},"i7":{"j":["a"],"c":["a"]},"hH":{"j":["v"],"c":["v"]},"hI":{"j":["v"],"c":["v"]}}')) +A.iw(v.typeUniverse,JSON.parse('{"cv":1,"b1":1,"bH":2,"b9":1,"aC":1,"aL":1,"cI":1,"bz":1,"co":1,"ci":1,"cC":1}')) +var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} +var t=(function rtii(){var s=A.cO +return{e:s("C"),J:s("w"),U:s("c<@>"),h:s("d"),Q:s("r"),M:s("av"),Z:s("jQ"),r:s("hL"),i:s("p"),k:s("p"),O:s("p"),f:s("p"),s:s("p"),b:s("p<@>"),u:s("p<~()>"),T:s("b3"),m:s("i"),g:s("a3"),p:s("J<@>"),B:s("c1"),j:s("j<@>"),W:s("F"),P:s("D"),K:s("h"),E:s("a6"),L:s("jS"),t:s("+()"),_:s("+isActive,todo(T,e)"),X:s("S"),l:s("a7"),q:s("al"),N:s("e"),x:s("A"),A:s("k"),G:s("fv"),c:s("a_"),o:s("aE"),Y:s("cu"),a:s("bn"),aY:s("x<@>"),D:s("x<~>"),F:s("ap"),y:s("T"),V:s("v"),z:s("@"),w:s("@(h)"),C:s("@(h,a7)"),S:s("a"),d:s("d?"),bc:s("aw?"),aQ:s("i?"),R:s("h?"),aD:s("e?"),cG:s("T?"),I:s("v?"),a3:s("a?"),ae:s("h7?"),n:s("h7"),H:s("~"),aI:s("~()"),v:s("~(i)")}})();(function constants(){var s=hunkHelpers.makeConstList +B.V=J.bX.prototype +B.b=J.p.prototype +B.u=J.b2.prototype +B.h=J.ay.prototype +B.W=J.a3.prototype +B.X=J.b5.prototype +B.v=J.cd.prototype +B.i=J.aE.prototype +B.j=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.y=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof HTMLElement == "function"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.D=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("DumpRenderTree") >= 0) return hooks; + if (userAgent.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.z=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.C=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.B=function(hooks) { + if (typeof navigator != "object") return hooks; + var userAgent = navigator.userAgent; + if (typeof userAgent != "string") return hooks; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.A=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.k=function(hooks) { return hooks; } + +B.e=new A.dl() +B.a=new A.e2() +B.E=new A.cJ() +B.l=new A.aZ("all") +B.m=new A.aZ("active") +B.n=new A.aZ("completed") +B.o=new A.n("datetime-local","dateTimeLocal") +B.f=new A.n("checkbox","checkbox") +B.p=new A.n("date","date") +B.q=new A.n("file","file") +B.r=new A.n("number","number") +B.t=new A.n("radio","radio") +B.F=new A.n("button","button") +B.G=new A.n("color","color") +B.H=new A.n("email","email") +B.I=new A.n("hidden","hidden") +B.J=new A.n("image","image") +B.K=new A.n("month","month") +B.L=new A.n("password","password") +B.M=new A.n("range","range") +B.N=new A.n("reset","reset") +B.O=new A.n("search","search") +B.P=new A.n("submit","submit") +B.Q=new A.n("tel","tel") +B.R=new A.n("text","text") +B.S=new A.n("time","time") +B.T=new A.n("url","url") +B.U=new A.n("week","week") +B.Y=s([B.F,B.f,B.G,B.p,B.o,B.H,B.q,B.I,B.J,B.K,B.r,B.L,B.t,B.M,B.N,B.O,B.P,B.Q,B.R,B.S,B.T,B.U],A.cO("p")) +B.a_={svg:0,math:1} +B.Z=new A.aY(B.a_,["http://www.w3.org/2000/svg","http://www.w3.org/1998/Math/MathML"],A.cO("aY")) +B.a0=new A.ao("Active",B.m) +B.a1=new A.ao("All",B.l) +B.a2=new A.ao("Completed",B.n) +B.w=new A.bk("idle") +B.a3=new A.bk("midFrameCallback") +B.a4=new A.bk("postFrameCallbacks") +B.a5=A.H("jN") +B.a6=A.H("jO") +B.a7=A.H("hH") +B.a8=A.H("hI") +B.a9=A.H("hM") +B.aa=A.H("hN") +B.ab=A.H("hO") +B.ac=A.H("i") +B.ad=A.H("h") +B.ae=A.H("e") +B.af=A.H("i6") +B.ag=A.H("i7") +B.ah=A.H("i8") +B.ai=A.H("i9") +B.x=A.H("iA") +B.aj=new A.cA("red") +B.ak=new A.cA("yellow") +B.c=new A.aG("initial") +B.d=new A.aG("active") +B.al=new A.aG("inactive") +B.am=new A.aG("defunct")})();(function staticFields(){$.dZ=null +$.au=A.b([],t.f) +$.fq=null +$.fj=null +$.fi=null +$.h3=null +$.h_=null +$.ha=null +$.ek=null +$.er=null +$.f3=null +$.e0=A.b([],A.cO("p?>")) +$.aM=null +$.bI=null +$.bJ=null +$.eS=!1 +$.t=B.a +$.I=1})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"jP","f9",()=>A.jy("_$dart_dartClosure")) +s($,"kc","hr",()=>A.b([new J.bY()],A.cO("p"))) +s($,"jU","he",()=>A.a0(A.dD({ +toString:function(){return"$receiver$"}}))) +s($,"jV","hf",()=>A.a0(A.dD({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"jW","hg",()=>A.a0(A.dD(null))) +s($,"jX","hh",()=>A.a0(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"k_","hk",()=>A.a0(A.dD(void 0))) +s($,"k0","hl",()=>A.a0(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"jZ","hj",()=>A.a0(A.fw(null))) +s($,"jY","hi",()=>A.a0(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"k2","hn",()=>A.a0(A.fw(void 0))) +s($,"k1","hm",()=>A.a0(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"k3","fa",()=>A.ia()) +s($,"kb","cP",()=>A.h8(B.ad)) +s($,"k4","et",()=>A.aQ(A.aT(),"Element")) +s($,"k6","fb",()=>A.aQ(A.aT(),"HTMLInputElement")) +s($,"k5","ho",()=>A.aQ(A.aT(),"HTMLAnchorElement")) +s($,"k8","fc",()=>A.aQ(A.aT(),"HTMLSelectElement")) +s($,"k9","hq",()=>A.aQ(A.aT(),"HTMLTextAreaElement")) +s($,"k7","hp",()=>A.aQ(A.aT(),"HTMLOptionElement")) +s($,"ka","fd",()=>A.aQ(A.aT(),"Text"))})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({ArrayBuffer:A.aB,SharedArrayBuffer:A.aB,ArrayBufferView:A.bd,DataView:A.c3,Float32Array:A.c4,Float64Array:A.c5,Int16Array:A.c6,Int32Array:A.c7,Int8Array:A.c8,Uint16Array:A.c9,Uint32Array:A.ca,Uint8ClampedArray:A.be,CanvasPixelArray:A.be,Uint8Array:A.cb}) +hunkHelpers.setOrUpdateLeafTags({ArrayBuffer:true,SharedArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false}) +A.aC.$nativeSuperclassTag="ArrayBufferView" +A.bs.$nativeSuperclassTag="ArrayBufferView" +A.bt.$nativeSuperclassTag="ArrayBufferView" +A.bb.$nativeSuperclassTag="ArrayBufferView" +A.bu.$nativeSuperclassTag="ArrayBufferView" +A.bv.$nativeSuperclassTag="ArrayBufferView" +A.bc.$nativeSuperclassTag="ArrayBufferView"})() +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$0=function(){return this()} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, 0.6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/favicon.ico b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bd829b4fc70a3dc9baf443ebf39272c712b7bc46 GIT binary patch literal 2595 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 literal 0 HcmV?d00001 diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.css b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.css new file mode 100644 index 000000000..fb6fb83ef --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.css @@ -0,0 +1,388 @@ +@charset "utf-8"; + +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #111111; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp h1 { + position: absolute; + top: -140px; + width: 100%; + font-size: 80px; + font-weight: 200; + text-align: center; + color: #b83f45; + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + height: 65px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +.toggle-all { + width: 1px; + height: 1px; + border: none; /* Mobile Safari */ + opacity: 0; + position: absolute; + right: 100%; + bottom: 100%; +} + +.toggle-all + label { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + height: 65px; + font-size: 0; + position: absolute; + top: -65px; + left: -0; +} + +.toggle-all + label:before { + content: "❯"; + display: inline-block; + font-size: 22px; + color: #949494; + padding: 10px 27px 10px 27px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.toggle-all:checked + label:before { + color: #484848; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: calc(100% - 43px); + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle { + opacity: 0; +} + +.todo-list li .toggle + label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center left; +} + +.todo-list li .toggle:checked + label { + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E"); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 60px; + display: block; + line-height: 1.2; + transition: color 0.4s; + font-weight: 400; + color: #484848; +} + +.todo-list li.completed label { + color: #949494; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #949494; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover, +.todo-list li .destroy:focus { + color: #c18585; +} + +.todo-list li .destroy:after { + content: "×"; + display: block; + height: 100%; + line-height: 1.1; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + padding: 10px 15px; + height: 20px; + text-align: center; + font-size: 15px; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ""; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li span { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li span:hover { + border-color: #db7676; +} + +.filters li span.selected { + border-color: #ce4646; +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 19px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #4d4d4d; + font-size: 11px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} + +:focus, +.toggle:focus + label, +.toggle-all:focus + label { + box-shadow: 0 0 2px 2px #cf7d7d; + outline: 0; +} diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.html b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.html new file mode 100644 index 000000000..c9270857c --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.html @@ -0,0 +1,22 @@ + + + + + + + + TodoMVC: Jaspr + + + + + + + + + + + diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.dart.js b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.dart.js new file mode 100644 index 000000000..0ffea7608 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.dart.js @@ -0,0 +1,15 @@ +(async () => { +const thisScript = document.currentScript; + +function relativeURL(ref) { + const base = thisScript?.src ?? document.baseURI; + return new URL(ref, base).toString(); +} + +let { compileStreaming } = await import("./main.mjs"); + +let app = await compileStreaming(fetch(relativeURL("main.wasm"))); +let module = await app.instantiate({}); +module.invokeMain(); + +})(); diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.mjs b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.mjs new file mode 100644 index 000000000..1708b69d7 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.mjs @@ -0,0 +1,343 @@ +// Compiles a dart2wasm-generated main module from `source` which can then +// instantiatable via the `instantiate` method. +// +// `source` needs to be a `Response` object (or promise thereof) e.g. created +// via the `fetch()` JS API. +export async function compileStreaming(source) { + const builtins = {builtins: ['js-string']}; + return new CompiledApp( + await WebAssembly.compileStreaming(source, builtins), builtins); +} + +// Compiles a dart2wasm-generated wasm modules from `bytes` which is then +// instantiatable via the `instantiate` method. +export async function compile(bytes) { + const builtins = {builtins: ['js-string']}; + return new CompiledApp(await WebAssembly.compile(bytes, builtins), builtins); +} + +// DEPRECATED: Please use `compile` or `compileStreaming` to get a compiled app, +// use `instantiate` method to get an instantiated app and then call +// `invokeMain` to invoke the main function. +export async function instantiate(modulePromise, importObjectPromise) { + var moduleOrCompiledApp = await modulePromise; + if (!(moduleOrCompiledApp instanceof CompiledApp)) { + moduleOrCompiledApp = new CompiledApp(moduleOrCompiledApp); + } + const instantiatedApp = await moduleOrCompiledApp.instantiate(await importObjectPromise); + return instantiatedApp.instantiatedModule; +} + +// DEPRECATED: Please use `compile` or `compileStreaming` to get a compiled app, +// use `instantiate` method to get an instantiated app and then call +// `invokeMain` to invoke the main function. +export const invoke = (moduleInstance, ...args) => { + moduleInstance.exports.$invokeMain(args); +} + +class CompiledApp { + constructor(module, builtins) { + this.module = module; + this.builtins = builtins; + } + + // The second argument is an options object containing: + // `loadDeferredWasm` is a JS function that takes a module name matching a + // wasm file produced by the dart2wasm compiler and returns the bytes to + // load the module. These bytes can be in either a format supported by + // `WebAssembly.compile` or `WebAssembly.compileStreaming`. + // `loadDynamicModule` is a JS function that takes two string names matching, + // in order, a wasm file produced by the dart2wasm compiler during dynamic + // module compilation and a corresponding js file produced by the same + // compilation. It should return a JS Array containing 2 elements. The first + // should be the bytes for the wasm module in a format supported by + // `WebAssembly.compile` or `WebAssembly.compileStreaming`. The second + // should be the result of using the JS 'import' API on the js file path. + async instantiate(additionalImports, {loadDeferredWasm, loadDynamicModule} = {}) { + let dartInstance; + + // Prints to the console + function printToConsole(value) { + if (typeof dartPrint == "function") { + dartPrint(value); + return; + } + if (typeof console == "object" && typeof console.log != "undefined") { + console.log(value); + return; + } + if (typeof print == "function") { + print(value); + return; + } + + throw "Unable to print message: " + value; + } + + // A special symbol attached to functions that wrap Dart functions. + const jsWrappedDartFunctionSymbol = Symbol("JSWrappedDartFunction"); + + function finalizeWrapper(dartFunction, wrapped) { + wrapped.dartFunction = dartFunction; + wrapped[jsWrappedDartFunctionSymbol] = true; + return wrapped; + } + + // Imports + const dart2wasm = { + _4: (o, c) => o instanceof c, + _37: x0 => new Array(x0), + _42: (x0,x1,x2) => { x0[x1] = x2 }, + _45: (x0,x1,x2) => new DataView(x0,x1,x2), + _47: x0 => new Int8Array(x0), + _48: (x0,x1,x2) => new Uint8Array(x0,x1,x2), + _49: x0 => new Uint8Array(x0), + _51: x0 => new Uint8ClampedArray(x0), + _53: x0 => new Int16Array(x0), + _55: x0 => new Uint16Array(x0), + _57: x0 => new Int32Array(x0), + _59: x0 => new Uint32Array(x0), + _61: x0 => new Float32Array(x0), + _63: x0 => new Float64Array(x0), + _78: () => { + let stackString = new Error().stack.toString(); + let frames = stackString.split('\n'); + let drop = 2; + if (frames[0] === 'Error') { + drop += 1; + } + return frames.slice(drop).join('\n'); + }, + _99: s => JSON.stringify(s), + _100: s => printToConsole(s), + _103: Function.prototype.call.bind(String.prototype.toLowerCase), + _109: Function.prototype.call.bind(String.prototype.indexOf), + _110: (s, p, i) => s.lastIndexOf(p, i), + _112: Object.is, + _132: o => o instanceof Uint8Array, + _133: (o, start, length) => new Uint8Array(o.buffer, o.byteOffset + start, length), + _134: o => o instanceof Int8Array, + _135: (o, start, length) => new Int8Array(o.buffer, o.byteOffset + start, length), + _136: o => o instanceof Uint8ClampedArray, + _137: (o, start, length) => new Uint8ClampedArray(o.buffer, o.byteOffset + start, length), + _138: o => o instanceof Uint16Array, + _139: (o, start, length) => new Uint16Array(o.buffer, o.byteOffset + start, length), + _140: o => o instanceof Int16Array, + _141: (o, start, length) => new Int16Array(o.buffer, o.byteOffset + start, length), + _142: o => o instanceof Uint32Array, + _143: (o, start, length) => new Uint32Array(o.buffer, o.byteOffset + start, length), + _144: o => o instanceof Int32Array, + _145: (o, start, length) => new Int32Array(o.buffer, o.byteOffset + start, length), + _148: o => o instanceof Float32Array, + _149: (o, start, length) => new Float32Array(o.buffer, o.byteOffset + start, length), + _150: o => o instanceof Float64Array, + _151: (o, start, length) => new Float64Array(o.buffer, o.byteOffset + start, length), + _152: (t, s) => t.set(s), + _154: (o) => new DataView(o.buffer, o.byteOffset, o.byteLength), + _156: o => o.buffer, + _157: o => o.byteOffset, + _158: Function.prototype.call.bind(Object.getOwnPropertyDescriptor(DataView.prototype, 'byteLength').get), + _159: (b, o) => new DataView(b, o), + _160: (b, o, l) => new DataView(b, o, l), + _161: Function.prototype.call.bind(DataView.prototype.getUint8), + _162: Function.prototype.call.bind(DataView.prototype.setUint8), + _163: Function.prototype.call.bind(DataView.prototype.getInt8), + _164: Function.prototype.call.bind(DataView.prototype.setInt8), + _165: Function.prototype.call.bind(DataView.prototype.getUint16), + _166: Function.prototype.call.bind(DataView.prototype.setUint16), + _167: Function.prototype.call.bind(DataView.prototype.getInt16), + _168: Function.prototype.call.bind(DataView.prototype.setInt16), + _169: Function.prototype.call.bind(DataView.prototype.getUint32), + _170: Function.prototype.call.bind(DataView.prototype.setUint32), + _171: Function.prototype.call.bind(DataView.prototype.getInt32), + _172: Function.prototype.call.bind(DataView.prototype.setInt32), + _177: Function.prototype.call.bind(DataView.prototype.getFloat32), + _178: Function.prototype.call.bind(DataView.prototype.setFloat32), + _179: Function.prototype.call.bind(DataView.prototype.getFloat64), + _180: Function.prototype.call.bind(DataView.prototype.setFloat64), + _197: (c) => + queueMicrotask(() => dartInstance.exports.$invokeCallback(c)), + _210: (x0,x1) => x0.createElement(x1), + _212: (x0,x1) => x0.querySelector(x1), + _213: f => finalizeWrapper(f, function(x0) { return dartInstance.exports._213(f,arguments.length,x0) }), + _215: (x0,x1,x2,x3) => x0.addEventListener(x1,x2,x3), + _216: (x0,x1,x2,x3) => x0.removeEventListener(x1,x2,x3), + _217: x0 => x0.preventDefault(), + _224: (x0,x1) => x0.item(x1), + _225: (x0,x1,x2) => x0.createElementNS(x1,x2), + _226: (x0,x1) => x0.item(x1), + _227: (x0,x1,x2) => x0.replaceChild(x1,x2), + _228: (x0,x1) => x0.append(x1), + _229: (x0,x1) => x0.removeAttribute(x1), + _230: x0 => new Text(x0), + _231: (x0,x1) => x0.replaceWith(x1), + _232: (x0,x1) => x0.item(x1), + _233: (x0,x1,x2) => x0.insertBefore(x1,x2), + _234: (x0,x1) => x0.removeChild(x1), + _235: (x0,x1) => x0.hasAttribute(x1), + _236: (x0,x1) => x0.getAttribute(x1), + _237: (x0,x1,x2) => x0.setAttribute(x1,x2), + _238: (x0,x1) => x0.error(x1), + _260: o => o === undefined, + _262: o => typeof o === 'function' && o[jsWrappedDartFunctionSymbol] === true, + _266: (l, r) => l === r, + _267: o => o, + _268: o => o, + _269: o => o, + _270: b => !!b, + _271: o => o.length, + _273: (o, i) => o[i], + _274: f => f.dartFunction, + _281: (o, p) => o[p], + _285: o => String(o), + _287: o => { + if (o === undefined) return 1; + var type = typeof o; + if (type === 'boolean') return 2; + if (type === 'number') return 3; + if (type === 'string') return 4; + if (o instanceof Array) return 5; + if (ArrayBuffer.isView(o)) { + if (o instanceof Int8Array) return 6; + if (o instanceof Uint8Array) return 7; + if (o instanceof Uint8ClampedArray) return 8; + if (o instanceof Int16Array) return 9; + if (o instanceof Uint16Array) return 10; + if (o instanceof Int32Array) return 11; + if (o instanceof Uint32Array) return 12; + if (o instanceof Float32Array) return 13; + if (o instanceof Float64Array) return 14; + if (o instanceof DataView) return 15; + } + if (o instanceof ArrayBuffer) return 16; + // Feature check for `SharedArrayBuffer` before doing a type-check. + if (globalThis.SharedArrayBuffer !== undefined && + o instanceof SharedArrayBuffer) { + return 17; + } + return 18; + }, + _302: x0 => new ArrayBuffer(x0), + _317: x0 => x0.random(), + _320: () => globalThis.Math, + _321: Function.prototype.call.bind(Number.prototype.toString), + _322: Function.prototype.call.bind(BigInt.prototype.toString), + _323: Function.prototype.call.bind(Number.prototype.toString), + _1390: x0 => x0.checked, + _1397: x0 => x0.files, + _1440: x0 => x0.type, + _1444: x0 => x0.value, + _1445: (x0,x1) => { x0.value = x1 }, + _1446: x0 => x0.valueAsDate, + _1448: x0 => x0.valueAsNumber, + _1531: x0 => x0.selectedOptions, + _1534: x0 => x0.value, + _1535: (x0,x1) => { x0.value = x1 }, + _1554: x0 => x0.value, + _1593: x0 => x0.value, + _4727: x0 => x0.target, + _4777: x0 => x0.length, + _4779: x0 => x0.length, + _4823: x0 => x0.parentNode, + _4825: x0 => x0.childNodes, + _4828: x0 => x0.previousSibling, + _4829: x0 => x0.nextSibling, + _4832: x0 => x0.textContent, + _4833: (x0,x1) => { x0.textContent = x1 }, + _4837: () => globalThis.document, + _5245: x0 => x0.namespaceURI, + _5248: x0 => x0.tagName, + _5256: x0 => x0.attributes, + _5382: x0 => x0.length, + _5386: x0 => x0.name, + _11650: () => globalThis.console, + _11674: () => globalThis.Element, + _11675: () => globalThis.HTMLInputElement, + _11676: () => globalThis.HTMLAnchorElement, + _11677: () => globalThis.HTMLSelectElement, + _11678: () => globalThis.HTMLTextAreaElement, + _11679: () => globalThis.HTMLOptionElement, + _11680: () => globalThis.Text, + + }; + + const baseImports = { + dart2wasm: dart2wasm, + Math: Math, + Date: Date, + Object: Object, + Array: Array, + Reflect: Reflect, + S: new Proxy({}, { get(_, prop) { return prop; } }), + + }; + + const jsStringPolyfill = { + "charCodeAt": (s, i) => s.charCodeAt(i), + "compare": (s1, s2) => { + if (s1 < s2) return -1; + if (s1 > s2) return 1; + return 0; + }, + "concat": (s1, s2) => s1 + s2, + "equals": (s1, s2) => s1 === s2, + "fromCharCode": (i) => String.fromCharCode(i), + "length": (s) => s.length, + "substring": (s, a, b) => s.substring(a, b), + "fromCharCodeArray": (a, start, end) => { + if (end <= start) return ''; + + const read = dartInstance.exports.$wasmI16ArrayGet; + let result = ''; + let index = start; + const chunkLength = Math.min(end - index, 500); + let array = new Array(chunkLength); + while (index < end) { + const newChunkLength = Math.min(end - index, 500); + for (let i = 0; i < newChunkLength; i++) { + array[i] = read(a, index++); + } + if (newChunkLength < chunkLength) { + array = array.slice(0, newChunkLength); + } + result += String.fromCharCode(...array); + } + return result; + }, + "intoCharCodeArray": (s, a, start) => { + if (s === '') return 0; + + const write = dartInstance.exports.$wasmI16ArraySet; + for (var i = 0; i < s.length; ++i) { + write(a, start++, s.charCodeAt(i)); + } + return s.length; + }, + "test": (s) => typeof s == "string", + }; + + + + + dartInstance = await WebAssembly.instantiate(this.module, { + ...baseImports, + ...additionalImports, + + "wasm:js-string": jsStringPolyfill, + }); + + return new InstantiatedApp(this, dartInstance); + } +} + +class InstantiatedApp { + constructor(compiledApp, instantiatedModule) { + this.compiledApp = compiledApp; + this.instantiatedModule = instantiatedModule; + } + + // Call the main function with the given arguments. + invokeMain(...args) { + this.instantiatedModule.exports.$invokeMain(args); + } +} diff --git a/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.wasm b/experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/main.wasm new file mode 100644 index 0000000000000000000000000000000000000000..6cb2d6495dce78c9a2ce9f80e2095898b0dd812f GIT binary patch literal 88417 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 literal 0 HcmV?d00001 diff --git a/experimental/todomvc-dart-jaspr/lib/app.dart b/experimental/todomvc-dart-jaspr/lib/app.dart new file mode 100644 index 000000000..d1f2fc715 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/lib/app.dart @@ -0,0 +1,19 @@ +import 'package:jaspr/jaspr.dart'; +import 'components/todomvc.dart'; + +class App extends StatelessComponent { + const App({super.key}); + + @override + Iterable build(BuildContext context) => [ + TodoMVC(), + footer(classes: 'info', [ + p([text('Double-click to edit a todo')]), + p([text('Created by the Dart team')]), + p([ + text('Part of '), + a(href: 'http://todomvc.com', [text('TodoMVC')]) + ]), + ]), + ]; +} diff --git a/experimental/todomvc-dart-jaspr/lib/components/todomvc.dart b/experimental/todomvc-dart-jaspr/lib/components/todomvc.dart new file mode 100644 index 000000000..8b411e857 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/lib/components/todomvc.dart @@ -0,0 +1,188 @@ +import 'package:jaspr/jaspr.dart'; + +@client +class TodoMVC extends StatefulComponent { + @override + State createState() => TodoMVCState(); +} + +enum DisplayState { + all, + active, + completed, +} + +// Todo string, active pair +typedef Todo = ({bool isActive, String todo}); + +class TodoMVCState extends State { + var todos = {}; + var dataIdCount = 0; + var activeCount = 0; + var displayState = DisplayState.all; + + void addTodo(String todo) { + setState(() { + todos[++dataIdCount] = (todo: todo, isActive: true); + activeCount++; + }); + } + + void toggle(int i) { + setState(() { + var (:isActive, :todo) = todos[i]!; + todos[i] = (todo: todo, isActive: !isActive); + if (isActive) { + activeCount--; + } else { + activeCount++; + } + }); + } + + void toggleAll() { + setState(() { + for (var i in todos.keys) { + var (isActive: _, :todo) = todos[i]!; + todos[i] = (todo: todo, isActive: activeCount == 0); + } + activeCount = (activeCount == 0) ? allCount : 0; + }); + } + + void destroy(int i) { + setState(() { + var (:isActive, :todo) = todos.remove(i)!; + if (isActive) { + activeCount--; + } + }); + } + + void clearCompleted() { + setState(() { + todos.removeWhere((dataId, todo) => !todo.isActive); + }); + } + + void setDisplayState(DisplayState state) { + setState(() { + displayState = state; + }); + } + + int get allCount => todos.length; + + int get completedCount => allCount - activeCount; + + @override + Iterable build(BuildContext context) => [ + section(id: 'root', classes: 'todoapp', [ + header(classes: 'header', attributes: { + 'data-testid': 'header' + }, [ + h1([text('todos')]), + div(classes: 'input-container', [NewTodo(addTodo)]), + ]), + main_( + classes: 'main', + styles: + Styles.raw({'display': todos.isEmpty ? 'none;' : 'block;'}), + [ + div(classes: 'toggle-all-container', [ + input( + classes: 'toggle-all', + id: 'toggle-all', + type: InputType.checkbox, + attributes: activeCount > 0 ? null : {'checked': ''}, + onChange: (_) => toggleAll(), + []), + label(classes: 'toggle-all-label', attributes: { + 'for': 'toggle-all' + }, [ + text('Mark all as complete'), + ]), + ]), + ul(classes: 'todo-list', [ + for (var (dataId, (:isActive, :todo)) in todos.keyValues) + if (isActive && displayState != DisplayState.completed || + !isActive && displayState != DisplayState.active) + li(classes: isActive ? '' : 'completed', attributes: { + 'data-id': '$dataId' + }, [ + div(classes: 'view', [ + input( + classes: 'toggle', + key: Key('$dataId-$isActive'), + type: InputType.checkbox, + attributes: isActive ? null : {'checked': ''}, + onChange: (_) => toggle(dataId), + []), + label([text(todo)]), + button( + classes: 'destroy', + onClick: () => destroy(dataId), + []), + ]) + ]), + ]), + ]), + footer( + classes: 'footer', + styles: + Styles.raw({'display': todos.isEmpty ? 'none;' : 'block;'}), + [ + span(classes: 'todo-count', [ + strong([text('$activeCount')]), + text(' item${activeCount == 1 ? '' : 's'} left'), + ]), + ul(classes: 'filters', [ + for (var (name, state) in [ + ('All', DisplayState.all), + ('Active', DisplayState.active), + ('Completed', DisplayState.completed) + ]) + li([ + span( + classes: displayState == state ? 'selected' : '', + events: { + 'click': (_) => setDisplayState(state), + }, + [ + text(name) + ]) + ]), + ]), + button( + classes: 'clear-completed', + styles: Styles.raw( + {'display': completedCount == 0 ? 'none;' : 'block;'}), + onClick: clearCompleted, + [text('Clear completed')]), + ]), + ]), + ]; +} + +class NewTodo extends StatelessComponent { + final void Function(String) handler; + + NewTodo(this.handler); + + @override + Iterable build(BuildContext context) => [ + input( + classes: 'new-todo', + value: '', + onChange: (str) => handler(str as String), + attributes: { + 'placeholder': 'What needs to be done?', + }, + []), + ]; +} + +extension MapExtensions on Map { + Iterable<(K, V)> get keyValues => + entries.map((entry) => (entry.key, entry.value)); +} diff --git a/experimental/todomvc-dart-jaspr/pubspec.lock b/experimental/todomvc-dart-jaspr/pubspec.lock new file mode 100644 index 000000000..286f877a3 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/pubspec.lock @@ -0,0 +1,941 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f + url: "https://pub.dev" + source: hosted + version: "82.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0" + url: "https://pub.dev" + source: hosted + version: "7.4.5" + analyzer_plugin: + dependency: transitive + description: + name: analyzer_plugin + sha256: ee188b6df6c85f1441497c7171c84f1392affadc0384f71089cb10a3bc508cef + url: "https://pub.dev" + source: hosted + version: "0.13.1" + ansi_styles: + dependency: transitive + description: + name: ansi_styles + sha256: "9c656cc12b3c27b17dd982b2cc5c0cfdfbdabd7bc8f3ae5e8542d9867b47ce8a" + url: "https://pub.dev" + source: hosted + version: "0.3.2+1" + archive: + dependency: transitive + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + bazel_worker: + dependency: transitive + description: + name: bazel_worker + sha256: "373a6ef07caa6c674c1cf144a5fe1e0f712c040552031ce669f298e35f7e110a" + url: "https://pub.dev" + source: hosted + version: "1.1.3" + binary_codec: + dependency: transitive + description: + name: binary_codec + sha256: "368144225d749e1e33f2f4628d0c70bffff99b99b1d6c0777b039f8967365b07" + url: "https://pub.dev" + source: hosted + version: "2.0.3" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + browser_launcher: + dependency: transitive + description: + name: browser_launcher + sha256: ca2557663d3033845f2ef2b60f94fc249528324fd1affddccb7c63ac0ccd6c67 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + build: + dependency: transitive + description: + name: build + sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" + url: "https://pub.dev" + source: hosted + version: "4.0.4" + build_modules: + dependency: transitive + description: + name: build_modules + sha256: b4f8d74125ab53869e63d488b8df2a036a7136d3b6d1759d3247e4d8d2e8f379 + url: "https://pub.dev" + source: hosted + version: "5.0.15" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + url: "https://pub.dev" + source: hosted + version: "9.1.2" + build_web_compilers: + dependency: "direct dev" + description: + name: build_web_compilers + sha256: "7c82235c82657efa0e6e877ef813757c7fd9e0e0406106f32ab30a874c939c63" + url: "https://pub.dev" + source: hosted + version: "4.2.0" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27" + url: "https://pub.dev" + source: hosted + version: "8.10.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + ci: + dependency: transitive + description: + name: ci + sha256: "145d095ce05cddac4d797a158bc4cf3b6016d1fe63d8c3d2fbd7212590adca13" + url: "https://pub.dev" + source: hosted + version: "0.1.0" + cli_completion: + dependency: transitive + description: + name: cli_completion + sha256: "72e8ccc4545f24efa7bbdf3bff7257dc9d62b072dee77513cc54295575bc9220" + url: "https://pub.dev" + source: hosted + version: "0.5.1" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" + url: "https://pub.dev" + source: hosted + version: "4.10.1" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + csslib: + dependency: transitive + description: + name: csslib + sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + custom_lint: + dependency: transitive + description: + name: custom_lint + sha256: "409c485fd14f544af1da965d5a0d160ee57cd58b63eeaa7280a4f28cf5bda7f1" + url: "https://pub.dev" + source: hosted + version: "0.7.5" + custom_lint_builder: + dependency: transitive + description: + name: custom_lint_builder + sha256: "107e0a43606138015777590ee8ce32f26ba7415c25b722ff0908a6f5d7a4c228" + url: "https://pub.dev" + source: hosted + version: "0.7.5" + custom_lint_core: + dependency: transitive + description: + name: custom_lint_core + sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" + url: "https://pub.dev" + source: hosted + version: "0.7.5" + custom_lint_visitor: + dependency: transitive + description: + name: custom_lint_visitor + sha256: cba5b6d7a6217312472bf4468cdf68c949488aed7ffb0eab792cd0b6c435054d + url: "https://pub.dev" + source: hosted + version: "1.0.0+7.4.5" + dap: + dependency: transitive + description: + name: dap + sha256: "42b0b083a09c59a118741769e218fc3738980ab591114f09d1026241d2b9c290" + url: "https://pub.dev" + source: hosted + version: "1.4.0" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "5b236382b47ee411741447c1f1e111459c941ea1b3f2b540dde54c210a3662af" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + dds: + dependency: transitive + description: + name: dds + sha256: c90723eb1f1402429c57f717550ce5af80288d74a27c45ccbe754a0e3e038f95 + url: "https://pub.dev" + source: hosted + version: "4.2.7" + dds_service_extensions: + dependency: transitive + description: + name: dds_service_extensions + sha256: c514114300ab30a95903fed1fdcf2949d057a0ea961168ec890a2b415b3ec52a + url: "https://pub.dev" + source: hosted + version: "2.0.2" + devtools_shared: + dependency: transitive + description: + name: devtools_shared + sha256: "72369878105eccd563547afbad97407a2431b96bd4c04a1d6da75cb068437f50" + url: "https://pub.dev" + source: hosted + version: "10.0.2" + dtd: + dependency: transitive + description: + name: dtd + sha256: "14a0360d898ded87c3d99591fc386b8a6ea5d432927bee709b22130cd25b993a" + url: "https://pub.dev" + source: hosted + version: "2.5.1" + dwds: + dependency: transitive + description: + name: dwds + sha256: "1c192079b0e62ae1be032340a2ed073d678ab3d5ca7ded7954d1aa2d4643df02" + url: "https://pub.dev" + source: hosted + version: "24.3.5" + equatable: + dependency: transitive + description: + name: equatable + sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + url: "https://pub.dev" + source: hosted + version: "2.0.7" + extension_discovery: + dependency: transitive + description: + name: extension_discovery + sha256: de1fce715ab013cdfb00befc3bdf0914bea5e409c3a567b7f8f144bc061611a7 + url: "https://pub.dev" + source: hosted + version: "2.1.0" + ffi: + dependency: transitive + description: + name: ffi + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: "7294967ff0a6d98638e7acb774aac3af2550777accd8149c90af5b014e6d44d8" + url: "https://pub.dev" + source: hosted + version: "3.1.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + hotreloader: + dependency: transitive + description: + name: hotreloader + sha256: bc167a1163807b03bada490bfe2df25b0d744df359227880220a5cbd04e5734b + url: "https://pub.dev" + source: hosted + version: "4.3.0" + html: + dependency: transitive + description: + name: html + sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" + url: "https://pub.dev" + source: hosted + version: "0.15.6" + http: + dependency: transitive + description: + name: http + sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" + url: "https://pub.dev" + source: hosted + version: "1.4.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" + jaspr: + dependency: "direct main" + description: + name: jaspr + sha256: dc5cf37e7284062779f1235f317bb54071a92a3dafdf681d94c52edac86f3bff + url: "https://pub.dev" + source: hosted + version: "0.19.1" + jaspr_builder: + dependency: "direct dev" + description: + name: jaspr_builder + sha256: "4bf42193868ea9850072f589f16c91c5f44e5e8d0b29bc703562857eae5a6a99" + url: "https://pub.dev" + source: hosted + version: "0.19.1" + jaspr_cli: + dependency: "direct dev" + description: + name: jaspr_cli + sha256: "7c11200fc172529c2228e7647194013d6e05feae94ccacff4a2869def764c9ad" + url: "https://pub.dev" + source: hosted + version: "0.19.1" + jaspr_lints: + dependency: "direct dev" + description: + name: jaspr_lints + sha256: "70f6b5cbb3a3cdd42f06bd617d4e26eaa31626bf1717ccf65cf97a3e41e9c28d" + url: "https://pub.dev" + source: hosted + version: "0.4.0" + js: + dependency: transitive + description: + name: js + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + json_rpc_2: + dependency: transitive + description: + name: json_rpc_2 + sha256: "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e" + url: "https://pub.dev" + source: hosted + version: "3.0.3" + lints: + dependency: "direct dev" + description: + name: lints + sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 + url: "https://pub.dev" + source: hosted + version: "6.0.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + mason: + dependency: transitive + description: + name: mason + sha256: de5681849fd49bb4f53f703f439b1d9dac64ff472e49b5dfb23ad5d837185780 + url: "https://pub.dev" + source: hosted + version: "0.1.1" + mason_logger: + dependency: transitive + description: + name: mason_logger + sha256: "6d5a989ff41157915cb5162ed6e41196d5e31b070d2f86e1c2edf216996a158c" + url: "https://pub.dev" + source: hosted + version: "0.3.3" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mime: + dependency: transitive + description: + name: mime + sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" + url: "https://pub.dev" + source: hosted + version: "1.0.6" + mustache_template: + dependency: transitive + description: + name: mustache_template + sha256: a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c + url: "https://pub.dev" + source: hosted + version: "2.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + process: + dependency: transitive + description: + name: process + sha256: "44b4226c0afd4bc3b7c7e67d44c4801abd97103cf0c84609e2654b664ca2798c" + url: "https://pub.dev" + source: hosted + version: "5.0.4" + protobuf: + dependency: transitive + description: + name: protobuf + sha256: "579fe5557eae58e3adca2e999e38f02441d8aa908703854a9e0a0f47fa857731" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pub_updater: + dependency: transitive + description: + name: pub_updater + sha256: "739a0161d73a6974c0675b864fb0cf5147305f7b077b7f03a58fa7a9ab3e7e7d" + url: "https://pub.dev" + source: hosted + version: "0.5.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" + source: hosted + version: "0.28.0" + scratch_space: + dependency: transitive + description: + name: scratch_space + sha256: "816989dd0a1f92cd5f0db012ed330035571034956dc3593fba66aaa6ee6a7e43" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 + url: "https://pub.dev" + source: hosted + version: "1.4.2" + shelf_gzip: + dependency: transitive + description: + name: shelf_gzip + sha256: "4f4b793c0f969f348aece1ab4cc05fceba9fea431c1ce76b1bc0fa369cecfc15" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_proxy: + dependency: transitive + description: + name: shelf_proxy + sha256: a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" + source_span: + dependency: transitive + description: + name: source_span + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" + url: "https://pub.dev" + source: hosted + version: "1.10.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" + sse: + dependency: transitive + description: + name: sse + sha256: fcc97470240bb37377f298e2bd816f09fd7216c07928641c0560719f50603643 + url: "https://pub.dev" + source: hosted + version: "4.1.8" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 + url: "https://pub.dev" + source: hosted + version: "2.1.1" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + url: "https://pub.dev" + source: hosted + version: "0.7.6" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + unified_analytics: + dependency: transitive + description: + name: unified_analytics + sha256: "8d1429a4b27320a9c4fc854287d18c8fde1549bf622165c5837202a9f370b53d" + url: "https://pub.dev" + source: hosted + version: "8.0.5" + universal_web: + dependency: transitive + description: + name: universal_web + sha256: "045d5d5277f7dd3b6838b08098f5ec4cfb15b790c5d3deb8e79f642ae1af3ad2" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + uuid: + dependency: transitive + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" + url: "https://pub.dev" + source: hosted + version: "14.3.1" + vm_service_interface: + dependency: transitive + description: + name: vm_service_interface + sha256: "503c92c26cf9f77d688bf8fca27fa9ec40450adbf02ec1ec5f12828ded508ac0" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + watcher: + dependency: transitive + description: + name: watcher + sha256: "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + webdev: + dependency: transitive + description: + name: webdev + sha256: efcb8230c9d40c75118b57e10e59936c40f02f232b27fdfae91a9f00ca470d9d + url: "https://pub.dev" + source: hosted + version: "3.7.1" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" + win32: + dependency: transitive + description: + name: win32 + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.dev" + source: hosted + version: "5.14.0" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" + yaml_edit: + dependency: transitive + description: + name: yaml_edit + sha256: fb38626579fb345ad00e674e2af3a5c9b0cc4b9bfb8fd7f7ff322c7c9e62aef5 + url: "https://pub.dev" + source: hosted + version: "2.2.2" +sdks: + dart: ">=3.8.0 <3.10.0-z" diff --git a/experimental/todomvc-dart-jaspr/pubspec.yaml b/experimental/todomvc-dart-jaspr/pubspec.yaml new file mode 100644 index 000000000..b74848b91 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/pubspec.yaml @@ -0,0 +1,20 @@ +name: todomvc +description: A TodoMVC app created using the Jaspr Dart web framework. +version: 0.1.0 + +environment: + sdk: ^3.7.0 + +dependencies: + jaspr: ^0.19.1 + +dev_dependencies: + build_runner: + build_web_compilers: ^4.1.0 + jaspr_builder: + jaspr_lints: + jaspr_cli: + lints: + +jaspr: + mode: client diff --git a/experimental/todomvc-dart-jaspr/web/base.css b/experimental/todomvc-dart-jaspr/web/base.css new file mode 100644 index 000000000..d3938100c --- /dev/null +++ b/experimental/todomvc-dart-jaspr/web/base.css @@ -0,0 +1,141 @@ +hr { + margin: 20px 0; + border: 0; + border-top: 1px dashed #c5c5c5; + border-bottom: 1px dashed #f7f7f7; +} + +.learn a { + font-weight: normal; + text-decoration: none; + color: #b83f45; +} + +.learn a:hover { + text-decoration: underline; + color: #787e7e; +} + +.learn h3, +.learn h4, +.learn h5 { + margin: 10px 0; + font-weight: 500; + line-height: 1.2; + color: #000; +} + +.learn h3 { + font-size: 24px; +} + +.learn h4 { + font-size: 18px; +} + +.learn h5 { + margin-bottom: 0; + font-size: 14px; +} + +.learn ul { + padding: 0; + margin: 0 0 30px 25px; +} + +.learn li { + line-height: 20px; +} + +.learn p { + font-size: 15px; + font-weight: 300; + line-height: 1.3; + margin-top: 0; + margin-bottom: 0; +} + +#issue-count { + display: none; +} + +.quote { + border: none; + margin: 20px 0 60px 0; +} + +.quote p { + font-style: italic; +} + +.quote p:before { + content: "“"; + font-size: 50px; + opacity: 0.15; + position: absolute; + top: -20px; + left: 3px; +} + +.quote p:after { + content: "”"; + font-size: 50px; + opacity: 0.15; + position: absolute; + bottom: -42px; + right: 3px; +} + +.quote footer { + position: absolute; + bottom: -40px; + right: 0; +} + +.quote footer img { + border-radius: 3px; +} + +.quote footer a { + margin-left: 5px; + vertical-align: middle; +} + +.speech-bubble { + position: relative; + padding: 10px; + background: rgba(0, 0, 0, 0.04); + border-radius: 5px; +} + +.speech-bubble:after { + content: ""; + position: absolute; + top: 100%; + right: 30px; + border: 13px solid transparent; + border-top-color: rgba(0, 0, 0, 0.04); +} + +.learn-bar > .learn { + position: absolute; + width: 272px; + top: 8px; + left: -300px; + padding: 10px; + border-radius: 5px; + background-color: rgba(255, 255, 255, 0.6); + transition-property: left; + transition-duration: 500ms; +} + +@media (min-width: 899px) { + .learn-bar { + width: auto; + padding-left: 300px; + } + + .learn-bar > .learn { + left: 8px; + } +} diff --git a/experimental/todomvc-dart-jaspr/web/favicon.ico b/experimental/todomvc-dart-jaspr/web/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bd829b4fc70a3dc9baf443ebf39272c712b7bc46 GIT binary patch literal 2595 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 literal 0 HcmV?d00001 diff --git a/experimental/todomvc-dart-jaspr/web/index.css b/experimental/todomvc-dart-jaspr/web/index.css new file mode 100644 index 000000000..fb6fb83ef --- /dev/null +++ b/experimental/todomvc-dart-jaspr/web/index.css @@ -0,0 +1,388 @@ +@charset "utf-8"; + +html, +body { + margin: 0; + padding: 0; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: none; + font-size: 100%; + vertical-align: baseline; + font-family: inherit; + font-weight: inherit; + color: inherit; + -webkit-appearance: none; + appearance: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + font: 14px "Helvetica Neue", Helvetica, Arial, sans-serif; + line-height: 1.4em; + background: #f5f5f5; + color: #111111; + min-width: 230px; + max-width: 550px; + margin: 0 auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 300; +} + +.hidden { + display: none; +} + +.todoapp { + background: #fff; + margin: 130px 0 40px 0; + position: relative; + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.2), 0 25px 50px 0 rgba(0, 0, 0, 0.1); +} + +.todoapp input::-webkit-input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::-moz-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp input::input-placeholder { + font-style: italic; + font-weight: 400; + color: rgba(0, 0, 0, 0.4); +} + +.todoapp h1 { + position: absolute; + top: -140px; + width: 100%; + font-size: 80px; + font-weight: 200; + text-align: center; + color: #b83f45; + -webkit-text-rendering: optimizeLegibility; + -moz-text-rendering: optimizeLegibility; + text-rendering: optimizeLegibility; +} + +.new-todo, +.edit { + position: relative; + margin: 0; + width: 100%; + font-size: 24px; + font-family: inherit; + font-weight: inherit; + line-height: 1.4em; + color: inherit; + padding: 6px; + border: 1px solid #999; + box-shadow: inset 0 -1px 5px 0 rgba(0, 0, 0, 0.2); + box-sizing: border-box; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.new-todo { + padding: 16px 16px 16px 60px; + height: 65px; + border: none; + background: rgba(0, 0, 0, 0.003); + box-shadow: inset 0 -2px 1px rgba(0, 0, 0, 0.03); +} + +.main { + position: relative; + z-index: 2; + border-top: 1px solid #e6e6e6; +} + +.toggle-all { + width: 1px; + height: 1px; + border: none; /* Mobile Safari */ + opacity: 0; + position: absolute; + right: 100%; + bottom: 100%; +} + +.toggle-all + label { + display: flex; + align-items: center; + justify-content: center; + width: 45px; + height: 65px; + font-size: 0; + position: absolute; + top: -65px; + left: -0; +} + +.toggle-all + label:before { + content: "❯"; + display: inline-block; + font-size: 22px; + color: #949494; + padding: 10px 27px 10px 27px; + -webkit-transform: rotate(90deg); + transform: rotate(90deg); +} + +.toggle-all:checked + label:before { + color: #484848; +} + +.todo-list { + margin: 0; + padding: 0; + list-style: none; +} + +.todo-list li { + position: relative; + font-size: 24px; + border-bottom: 1px solid #ededed; +} + +.todo-list li:last-child { + border-bottom: none; +} + +.todo-list li.editing { + border-bottom: none; + padding: 0; +} + +.todo-list li.editing .edit { + display: block; + width: calc(100% - 43px); + padding: 12px 16px; + margin: 0 0 0 43px; +} + +.todo-list li.editing .view { + display: none; +} + +.todo-list li .toggle { + text-align: center; + width: 40px; + /* auto, since non-WebKit browsers doesn't support input styling */ + height: auto; + position: absolute; + top: 0; + bottom: 0; + margin: auto 0; + border: none; /* Mobile Safari */ + -webkit-appearance: none; + appearance: none; +} + +.todo-list li .toggle { + opacity: 0; +} + +.todo-list li .toggle + label { + /* + Firefox requires `#` to be escaped - https://bugzilla.mozilla.org/show_bug.cgi?id=922433 + IE and Edge requires *everything* to be escaped to render, so we do that instead of just the `#` - https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/7157459/ + */ + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%23949494%22%20stroke-width%3D%223%22/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: center left; +} + +.todo-list li .toggle:checked + label { + background-image: url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2240%22%20height%3D%2240%22%20viewBox%3D%22-10%20-18%20100%20135%22%3E%3Ccircle%20cx%3D%2250%22%20cy%3D%2250%22%20r%3D%2250%22%20fill%3D%22none%22%20stroke%3D%22%2359A193%22%20stroke-width%3D%223%22%2F%3E%3Cpath%20fill%3D%22%233EA390%22%20d%3D%22M72%2025L42%2071%2027%2056l-4%204%2020%2020%2034-52z%22%2F%3E%3C%2Fsvg%3E"); +} + +.todo-list li label { + word-break: break-all; + padding: 15px 15px 15px 60px; + display: block; + line-height: 1.2; + transition: color 0.4s; + font-weight: 400; + color: #484848; +} + +.todo-list li.completed label { + color: #949494; + text-decoration: line-through; +} + +.todo-list li .destroy { + display: none; + position: absolute; + top: 0; + right: 10px; + bottom: 0; + width: 40px; + height: 40px; + margin: auto 0; + font-size: 30px; + color: #949494; + transition: color 0.2s ease-out; +} + +.todo-list li .destroy:hover, +.todo-list li .destroy:focus { + color: #c18585; +} + +.todo-list li .destroy:after { + content: "×"; + display: block; + height: 100%; + line-height: 1.1; +} + +.todo-list li:hover .destroy { + display: block; +} + +.todo-list li .edit { + display: none; +} + +.todo-list li.editing:last-child { + margin-bottom: -1px; +} + +.footer { + padding: 10px 15px; + height: 20px; + text-align: center; + font-size: 15px; + border-top: 1px solid #e6e6e6; +} + +.footer:before { + content: ""; + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 50px; + overflow: hidden; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2), 0 8px 0 -3px #f6f6f6, 0 9px 1px -3px rgba(0, 0, 0, 0.2), 0 16px 0 -6px #f6f6f6, 0 17px 2px -6px rgba(0, 0, 0, 0.2); +} + +.todo-count { + float: left; + text-align: left; +} + +.todo-count strong { + font-weight: 300; +} + +.filters { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 0; + left: 0; +} + +.filters li { + display: inline; +} + +.filters li span { + color: inherit; + margin: 3px; + padding: 3px 7px; + text-decoration: none; + border: 1px solid transparent; + border-radius: 3px; +} + +.filters li span:hover { + border-color: #db7676; +} + +.filters li span.selected { + border-color: #ce4646; +} + +.clear-completed, +html .clear-completed:active { + float: right; + position: relative; + line-height: 19px; + text-decoration: none; + cursor: pointer; +} + +.clear-completed:hover { + text-decoration: underline; +} + +.info { + margin: 65px auto 0; + color: #4d4d4d; + font-size: 11px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-align: center; +} + +.info p { + line-height: 1; +} + +.info a { + color: inherit; + text-decoration: none; + font-weight: 400; +} + +.info a:hover { + text-decoration: underline; +} + +/* + Hack to remove background from Mobile Safari. + Can't use it globally since it destroys checkboxes in Firefox +*/ +@media screen and (-webkit-min-device-pixel-ratio: 0) { + .toggle-all, + .todo-list li .toggle { + background: none; + } + + .todo-list li .toggle { + height: 40px; + } +} + +@media (max-width: 430px) { + .footer { + height: 50px; + } + + .filters { + bottom: 10px; + } +} + +:focus, +.toggle:focus + label, +.toggle-all:focus + label { + box-shadow: 0 0 2px 2px #cf7d7d; + outline: 0; +} diff --git a/experimental/todomvc-dart-jaspr/web/index.html b/experimental/todomvc-dart-jaspr/web/index.html new file mode 100644 index 000000000..c9270857c --- /dev/null +++ b/experimental/todomvc-dart-jaspr/web/index.html @@ -0,0 +1,22 @@ + + + + + + + + TodoMVC: Jaspr + + + + + + + + + + + diff --git a/experimental/todomvc-dart-jaspr/web/main.dart b/experimental/todomvc-dart-jaspr/web/main.dart new file mode 100644 index 000000000..e7284b369 --- /dev/null +++ b/experimental/todomvc-dart-jaspr/web/main.dart @@ -0,0 +1,13 @@ +// The entrypoint for the **client** environment. +// +// This file is compiled to javascript and executed in the browser. + +// Client-specific jaspr import. +import 'package:jaspr/browser.dart'; +// Imports the [App] component. +import 'package:todomvc/app.dart'; + +void main() { + // Attaches the [App] component to the of the page. + runApp(App()); +} diff --git a/resources/tests.mjs b/resources/tests.mjs index 0a3878423..c9fb4da1b 100644 --- a/resources/tests.mjs +++ b/resources/tests.mjs @@ -836,6 +836,66 @@ Suites.push({ ], }); +Suites.push({ + name: "TodoMVC-Jaspr-Dart2JS-O4", + url: "experimental/todomvc-dart-jaspr/dist/out-dart2js-O4/index.html", + tags: ["todomvc", "experimental"], + disabled: true, + async prepare(page) { + (await page.waitForElement(".new-todo")).focus(); + }, + tests: [ + new BenchmarkTestStep(`Adding${numberOfItemsToAdd}Items`, (page) => { + const newTodo = page.querySelector(".new-todo"); + for (let i = 0; i < numberOfItemsToAdd; i++) { + newTodo.setValue(getTodoText("ja", i)); + newTodo.dispatchEvent("change"); + newTodo.enter("keypress"); + } + }), + new BenchmarkTestStep("CompletingAllItems", (page) => { + const checkboxes = page.querySelectorAll(".toggle"); + for (let i = 0; i < numberOfItemsToAdd; i++) + checkboxes[i].click(); + }), + new BenchmarkTestStep("DeletingAllItems", (page) => { + const deleteButtons = page.querySelectorAll(".destroy"); + for (let i = numberOfItemsToAdd - 1; i >= 0; i--) + deleteButtons[i].click(); + }), + ], +}); + +Suites.push({ + name: "TodoMVC-Jaspr-Dart2Wasm-O2", + url: "experimental/todomvc-dart-jaspr/dist/out-dart2wasm-O2/index.html", + tags: ["todomvc", "experimental"], + disabled: true, + async prepare(page) { + (await page.waitForElement(".new-todo")).focus(); + }, + tests: [ + new BenchmarkTestStep(`Adding${numberOfItemsToAdd}Items`, (page) => { + const newTodo = page.querySelector(".new-todo"); + for (let i = 0; i < numberOfItemsToAdd; i++) { + newTodo.setValue(getTodoText("ja", i)); + newTodo.dispatchEvent("change"); + newTodo.enter("keypress"); + } + }), + new BenchmarkTestStep("CompletingAllItems", (page) => { + const checkboxes = page.querySelectorAll(".toggle"); + for (let i = 0; i < numberOfItemsToAdd; i++) + checkboxes[i].click(); + }), + new BenchmarkTestStep("DeletingAllItems", (page) => { + const deleteButtons = page.querySelectorAll(".destroy"); + for (let i = numberOfItemsToAdd - 1; i >= 0; i--) + deleteButtons[i].click(); + }), + ], +}); + Suites.push({ name: "NewsSite-Next", url: "resources/newssite/news-next/dist/index.html", From 4c807f315a01e382840e57edd5ddbee634b1172c Mon Sep 17 00:00:00 2001 From: Martin Kustermann Date: Tue, 29 Jul 2025 13:39:16 +0200 Subject: [PATCH 2/2] add spacing lines to REAMDE.md --- experimental/todomvc-dart-jaspr/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/experimental/todomvc-dart-jaspr/README.md b/experimental/todomvc-dart-jaspr/README.md index 55b9c4c6a..46d478b9d 100644 --- a/experimental/todomvc-dart-jaspr/README.md +++ b/experimental/todomvc-dart-jaspr/README.md @@ -1,6 +1,7 @@ # TodoMVC: Dart Jaspr ## Description + This is a TodoMVC app written in Dart using the Jaspr DOM framework. It can be compiled to either JavaScript or WebAssembly (with GC extension). @@ -24,6 +25,7 @@ Build your project using either: The output will be located inside the `build/jaspr/` directory. ## Updating the checked-in build artifacts + To update the checked-in artifacts in the `dist/` directory, run ```