diff --git a/README.md b/README.md index 16361b23..1a47609e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# polymer-cdn v1.7.0.2 +# polymer-cdn v1.8.0 **A mirror of Polymer's components so that they can be used directly from CDN** ![Polymer CDN is powered by MaxCDN](http://i.imgur.com/9obTXpk.png) @@ -6,7 +6,7 @@ ## How to use In general, given an element named `my-cool-element`, the CDN url for it will be: ``` -https://cdn.rawgit.com/download/polymer-cdn/1.7.0.2/lib/my-cool-element/my-cool-element.html +https://cdn.rawgit.com/download/polymer-cdn/1.8.0/lib/my-cool-element/my-cool-element.html ``` To be sure, browse this repo and copy-paste the url to the raw version into [RawGit](https://rawgit.com). @@ -45,7 +45,7 @@ which explains it in more detail. ## Contents -All the libraries available in polymer-cdn can be found side-by-side in the [lib](https://github.com/Download/polymer-cdn/tree/1.7.0.2/lib) subfolder. +All the libraries available in polymer-cdn can be found side-by-side in the [lib](https://github.com/Download/polymer-cdn/tree/1.8.0/lib) subfolder. Some of the libraries depend on other libraries. We call those other libraries the dependencies of the library. These dependencies will also be pulled into your page when you include such a library. @@ -58,1373 +58,1373 @@ These dependencies are themselves also listed at the top-level, so you can work tree for a library by carefully examining this diagram. ```sh -polymer-cdn#1.7.0.2 -├─┬ app-elements#0.10.0 -│ ├─┬ app-layout#0.10.5 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +polymer-cdn#1.8.0 C:\Users\Frank\Documents\GitHub\polymer-cdn +├─┬ app-elements#0.10.1 +│ ├─┬ app-layout#0.10.7 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-media-query#1.0.8 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ ├── iron-scroll-target-behavior#1.1.0 -│ │ └── polymer#1.7.0 -│ ├─┬ app-localize-behavior#0.9.2 (latest is 0.10.0) +│ │ │ └── polymer#1.8.0 +│ │ ├── iron-scroll-target-behavior#1.1.1 +│ │ └── polymer#1.8.0 +│ ├─┬ app-localize-behavior#0.10.1 │ │ ├── intl-messageformat#1.3.0 │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ ├── polymer#1.7.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ app-pouchdb#0.9.2 -│ │ ├─┬ app-storage#0.9.7 -│ │ │ ├── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ app-pouchdb#0.9.5 +│ │ ├─┬ app-storage#0.9.8 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ ├── polymer#1.7.0 -│ │ ├── pouchdb#6.0.7 -│ │ ├── pouchdb-find#0.10.3 +│ │ │ └── polymer#1.8.0 +│ │ ├── polymer#1.8.0 +│ │ ├── pouchdb#6.1.2 +│ │ ├── pouchdb-find#0.10.5 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 -│ ├─┬ app-route#0.9.2 -│ │ ├── iron-location#0.8.9 -│ │ └── polymer#1.7.0 -│ └── app-storage#0.9.7 +│ │ └── polymer#1.8.0 +│ ├─┬ app-route#0.9.3 +│ │ ├── iron-location#0.8.11 +│ │ └── polymer#1.8.0 +│ └── app-storage#0.9.8 ├── firebase-sdk extraneous ├─┬ gold-elements#1.0.1 │ ├─┬ gold-cc-cvc-input#1.0.9 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ gold-cc-expiration-input#1.1.2 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ gold-cc-expiration-input#1.1.3 +│ │ ├── iron-a11y-keys-behavior#1.1.9 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validator-behavior#1.0.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ gold-cc-input#1.0.7 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validator-behavior#1.0.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ gold-email-input#1.0.7 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ gold-email-input#1.0.9 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ gold-phone-input#1.1.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-input#1.0.10 │ │ │ ├─┬ iron-a11y-announcer#1.0.5 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ └─┬ gold-zip-input#1.0.6 │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-icon#1.0.12 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-validator-behavior#1.0.1 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├── paper-input#1.1.20 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├── paper-input#1.1.23 │ ├─┬ paper-styles#1.1.5 │ │ ├── font-roboto#1.0.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ └── polymer#1.8.0 ├─┬ google-web-components#1.1.1 │ ├─┬ firebase-element#1.0.16 -│ │ ├── firebase#3.5.2 incompatible with ^2.3.1 (2.4.2 available, latest is 3.5.2) -│ │ └── polymer#1.7.0 +│ │ ├── firebase#3.6.10 incompatible with ^2.3.1 (2.4.2 available, latest is 3.6.10) +│ │ └── polymer#1.8.0 │ ├─┬ google-analytics#1.2.3 -│ │ ├── ga-api-utils#0.2.0 (latest is 0.6.0) +│ │ ├── ga-api-utils#0.2.0 (latest is 0.7.0) │ │ ├─┬ google-chart#1.1.1 │ │ │ ├─┬ google-apis#1.1.7 │ │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ │ ├── polymer#1.7.0 +│ │ │ │ ├── polymer#1.8.0 │ │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ google-signin#1.3.7 │ │ │ ├── font-roboto#1.0.1 │ │ │ ├─┬ google-apis#1.1.7 │ │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── iron-flex-layout#1.3.1 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── iron-flex-layout#1.3.2 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-material#1.0.6 │ │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── polymer#1.8.0 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-apis#1.1.7 │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-calendar#1.0.3 │ │ ├── google-apis#1.1.7 │ │ ├── google-signin#1.3.7 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-castable-video#1.0.3 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-chart#1.1.1 │ │ ├─┬ google-apis#1.1.7 │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ ├── polymer#1.7.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ ├── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── polymer#1.8.0 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-feeds#1.0.2 │ │ ├── google-apis#1.1.7 │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-hangout-button#1.0.2 │ │ ├─┬ google-apis#1.1.7 │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ google-map#1.1.14 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ google-map#1.2.0 │ │ ├── google-apis#1.1.7 -│ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ ├── iron-resizable-behavior#1.0.5 │ │ ├── iron-selector#1.5.2 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-sheets#1.0.6 │ │ ├── google-apis#1.1.7 │ │ ├── google-signin#1.3.7 │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ ├── polymer#1.7.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-signin#1.3.7 │ │ ├── font-roboto#1.0.1 │ │ ├─┬ google-apis#1.1.7 │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── iron-flex-layout#1.3.1 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── iron-flex-layout#1.3.2 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-material#1.0.6 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-ripple#1.0.10 │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-streetview-pano#1.0.4 │ │ ├── google-apis#1.1.7 │ │ ├── iron-resizable-behavior#1.0.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-url-shortener#1.0.2 │ │ ├─┬ google-apis#1.1.7 │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-youtube#1.2.1 │ │ ├─┬ google-apis#1.1.7 │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-localstorage#1.0.6 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ google-youtube-upload#1.1.2 (latest is 2.0.0) │ │ ├── cors-upload-sample#37c97848a2 │ │ ├─┬ google-signin#1.3.7 │ │ │ ├── font-roboto#1.0.1 │ │ │ ├─┬ google-apis#1.1.7 │ │ │ │ ├─┬ iron-jsonp-library#1.0.4 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── iron-flex-layout#1.3.1 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── iron-flex-layout#1.3.2 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-material#1.0.6 │ │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ └─┬ polymerfire#0.10.2 incompatible with ~0.9.0 (0.9.7 available, latest is 0.10.2) -│ ├── app-storage#0.9.7 -│ ├── firebase#3.5.2 -│ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ └─┬ polymerfire#0.9.7 (latest is 0.10.3) +│ ├── app-storage#0.9.8 +│ ├── firebase#3.6.10 +│ └── polymer#1.8.0 ├─┬ iron-elements#1.0.10 │ ├─┬ iron-a11y-announcer#1.0.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-a11y-keys#1.0.6 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-ajax#1.4.3 -│ │ ├── polymer#1.7.0 +│ │ ├── polymer#1.8.0 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-autogrow-textarea#1.0.14 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-autogrow-textarea#1.0.15 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-behaviors#1.0.17 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-collapse#1.2.1 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-collapse#1.3.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-component-page#1.1.7 -│ │ ├── hydrolysis#1.24.1 (latest is 2.0.0-alpha.17) +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-component-page#1.1.8 +│ │ ├── hydrolysis#1.24.1 (latest is 2.0.0-alpha.28) │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ ├── polymer#1.7.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-doc-viewer#1.0.15 -│ │ │ ├─┬ marked-element#1.2.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-doc-viewer#1.1.0 +│ │ │ ├─┬ marked-element#1.3.1 │ │ │ │ ├── marked#0.3.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-button#1.0.14 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ paper-material#1.0.6 │ │ │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── polymer#1.7.0 -│ │ │ └─┬ prism-element#1.1.1 -│ │ │ ├── polymer#1.7.0 -│ │ │ └── prism#1.5.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-icons#1.1.3 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── polymer#1.8.0 +│ │ │ └─┬ prism-element#1.2.0 +│ │ │ ├── polymer#1.8.0 +│ │ │ └── prism#1.6.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-icons#1.2.0 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-selector#1.5.2 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-header-panel#1.1.7 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-toolbar#1.1.7 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├── paper-styles#1.1.5 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-demo-helpers#1.2.5 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-icons#1.1.3 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-icons#1.2.0 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-location#0.8.9 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ marked-element#1.2.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-location#0.8.11 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ marked-element#1.3.1 │ │ │ ├── marked#0.3.6 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ paper-icon-button#1.1.3 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ paper-icon-button#1.1.4 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── polymer#1.7.0 -│ │ └── prism-element#1.1.1 -│ ├── iron-doc-viewer#1.0.15 -│ ├─┬ iron-dropdown#1.5.3 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── polymer#1.8.0 +│ │ └── prism-element#1.2.0 +│ ├── iron-doc-viewer#1.1.0 +│ ├─┬ iron-dropdown#1.5.5 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── iron-overlay-behavior#1.10.1 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── iron-overlay-behavior#1.10.3 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ neon-animation#1.2.4 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └── web-animations-js#2.2.2 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-fit-behavior#1.2.5 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-flex-layout#1.3.1 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-fit-behavior#1.2.6 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-flex-layout#1.3.2 +│ │ └── polymer#1.8.0 │ ├─┬ iron-form#1.1.4 │ │ ├─┬ iron-ajax#1.4.3 -│ │ │ ├── polymer#1.7.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └─┬ promise-polyfill#1.0.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-icon#1.0.12 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-icons#1.1.3 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-icons#1.2.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-iconset#1.0.5 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-iconset-svg#1.1.0 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├── iron-image#1.2.5 │ ├─┬ iron-input#1.0.10 │ │ ├─┬ iron-a11y-announcer#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-jsonp-library#1.0.4 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-label#1.0.2 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-list#1.3.11 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-list#1.4.1 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-scroll-target-behavior#1.1.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-scroll-target-behavior#1.1.1 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-localstorage#1.0.6 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-location#0.8.9 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-location#0.8.11 +│ │ └── polymer#1.8.0 │ ├─┬ iron-media-query#1.0.8 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-menu-behavior#1.2.0 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-selector#1.5.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-meta#1.1.2 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-overlay-behavior#1.10.1 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-overlay-behavior#1.10.3 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-fit-behavior#1.2.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-fit-behavior#1.2.6 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-pages#1.0.8 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-selector#1.5.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-range-behavior#1.0.6 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ └── polymer#1.7.0 -│ ├── iron-scroll-target-behavior#1.1.0 -│ ├─┬ iron-scroll-threshold#1.0.2 -│ │ ├── iron-scroll-target-behavior#1.1.0 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 +│ ├── iron-scroll-target-behavior#1.1.1 +│ ├─┬ iron-scroll-threshold#1.0.3 +│ │ ├── iron-scroll-target-behavior#1.1.1 +│ │ └── polymer#1.8.0 │ ├─┬ iron-selector#1.5.2 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-signals#1.0.3 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-swipeable-container#1.0.3 -│ │ └── polymer#1.7.0 -│ ├─┬ iron-test-helpers#1.2.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 +│ ├─┬ iron-test-helpers#1.4.1 +│ │ └── polymer#1.8.0 │ ├─┬ iron-validatable-behavior#1.1.1 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ └─┬ iron-validator-behavior#1.0.1 │ ├─┬ iron-meta#1.1.2 -│ │ └── polymer#1.7.0 -│ └── polymer#1.7.0 -├─┬ iron-page-url#0.7.3 extraneous (latest is 0.8.9) -│ └─┬ polymer#1.7.0 -│ └── webcomponentsjs#0.7.22 +│ │ └── polymer#1.8.0 +│ └── polymer#1.8.0 +├─┬ iron-page-url#0.7.3 extraneous (latest is 0.8.11) +│ └─┬ polymer#1.8.0 +│ └── webcomponentsjs#0.7.24 ├─┬ molecules#1.0.0 -│ └─┬ marked-element#1.2.0 +│ └─┬ marked-element#1.3.1 │ ├── marked#0.3.6 -│ └── polymer#1.7.0 +│ └── polymer#1.8.0 ├─┬ neon-elements#1.0.0 │ └─┬ neon-animation#1.2.4 │ ├─┬ iron-meta#1.1.2 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ iron-selector#1.5.2 -│ │ └── polymer#1.7.0 -│ ├── polymer#1.7.0 +│ │ └── polymer#1.8.0 +│ ├── polymer#1.8.0 │ └── web-animations-js#2.2.2 ├─┬ paper-elements#1.0.7 │ ├─┬ paper-badge#1.1.4 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-behaviors#1.0.12 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-ripple#1.0.10 │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-button#1.0.14 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-material#1.0.6 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-card#1.1.4 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-image#1.2.5 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-material#1.0.6 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-checkbox#1.4.1 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-checkbox#1.4.2 │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-ripple#1.0.10 │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-dialog#1.1.0 -│ │ ├── iron-overlay-behavior#1.10.1 +│ │ ├── iron-overlay-behavior#1.10.3 │ │ ├─┬ neon-animation#1.2.4 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── polymer#1.8.0 │ │ │ └── web-animations-js#2.2.2 │ │ ├─┬ paper-dialog-behavior#1.2.7 -│ │ │ ├─┬ iron-overlay-behavior#1.10.1 +│ │ │ ├─┬ iron-overlay-behavior#1.10.3 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ ├─┬ iron-fit-behavior#1.2.5 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ ├─┬ iron-fit-behavior#1.2.6 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├── paper-styles#1.1.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-dialog-behavior#1.2.7 -│ │ ├─┬ iron-overlay-behavior#1.10.1 +│ │ ├─┬ iron-overlay-behavior#1.10.3 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├─┬ iron-fit-behavior#1.2.5 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├─┬ iron-fit-behavior#1.2.6 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-dialog-scrollable#1.1.5 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-dialog-behavior#1.2.7 -│ │ │ ├─┬ iron-overlay-behavior#1.10.1 +│ │ │ ├─┬ iron-overlay-behavior#1.10.3 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ ├─┬ iron-fit-behavior#1.2.5 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ ├─┬ iron-fit-behavior#1.2.6 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├── paper-styles#1.1.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-drawer-panel#1.0.10 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-drawer-panel#1.0.11 │ │ ├─┬ iron-media-query#1.0.8 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-selector#1.5.2 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-dropdown-menu#1.4.1 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-dropdown-menu#1.5.0 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ paper-input#1.1.23 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├─┬ iron-autogrow-textarea#1.0.14 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├─┬ iron-autogrow-textarea#1.0.15 │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-input#1.0.10 │ │ │ │ ├─┬ iron-a11y-announcer#1.0.5 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├── paper-styles#1.1.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-menu-button#1.5.2 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├─┬ iron-dropdown#1.5.3 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├─┬ iron-dropdown#1.5.5 │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ ├── iron-overlay-behavior#1.10.1 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ ├── iron-overlay-behavior#1.10.3 │ │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ neon-animation#1.2.4 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ ├── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ ├── polymer#1.8.0 │ │ │ │ │ └── web-animations-js#2.2.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── iron-fit-behavior#1.2.5 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── iron-fit-behavior#1.2.6 │ │ │ ├─┬ neon-animation#1.2.4 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ ├── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ ├── polymer#1.8.0 │ │ │ │ └── web-animations-js#2.2.2 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-ripple#1.0.10 │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-fab#1.2.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-material#1.0.6 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-header-panel#1.1.7 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-icon-button#1.1.3 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-icon-button#1.1.4 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├── paper-input#1.1.20 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├── paper-input#1.1.23 │ ├─┬ paper-item#1.2.1 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-listbox#1.1.2 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-collapse#1.2.1 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-collapse#1.3.0 │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-menu-behavior#1.2.0 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-material#1.0.6 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-menu#1.2.2 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-collapse#1.2.1 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-collapse#1.3.0 │ │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-menu-behavior#1.2.0 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-selector#1.5.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├── paper-menu-button#1.5.2 │ ├─┬ paper-progress#1.0.11 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-range-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-radio-button#1.2.1 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-radio-button#1.3.1 │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── iron-flex-layout#1.3.1 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── iron-flex-layout#1.3.2 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-radio-group#1.2.1 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├── iron-menu-behavior#1.2.0 -│ │ ├─┬ paper-radio-button#1.2.1 +│ │ ├─┬ paper-radio-button#1.3.1 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ ├── iron-flex-layout#1.3.1 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ ├── iron-flex-layout#1.3.2 │ │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├── paper-styles#1.1.5 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-ripple#1.0.10 │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-scroll-header-panel#1.0.16 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-slider#1.0.12 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-slider#1.0.13 │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├── paper-input#1.1.20 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── paper-input#1.1.23 │ │ ├─┬ paper-progress#1.0.11 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-range-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-spinner#1.2.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-styles#1.1.5 │ │ ├── font-roboto#1.0.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-tabs#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-tabs#1.8.0 │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-icon#1.0.12 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-iconset-svg#1.1.0 │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── iron-menu-behavior#1.2.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ ├─┬ paper-icon-button#1.1.3 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ ├─┬ paper-icon-button#1.1.4 │ │ │ ├─┬ iron-icon#1.0.12 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 │ │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-styles#1.1.5 │ │ │ │ ├── font-roboto#1.0.1 -│ │ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-styles#1.1.5 │ │ │ ├── font-roboto#1.0.1 -│ │ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 +│ │ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-toast#1.3.0 │ │ ├─┬ iron-a11y-announcer#1.0.5 -│ │ │ └── polymer#1.7.0 -│ │ ├── iron-fit-behavior#1.2.5 -│ │ ├── iron-overlay-behavior#1.10.1 -│ │ └── polymer#1.7.0 -│ ├─┬ paper-toggle-button#1.2.1 +│ │ │ └── polymer#1.8.0 +│ │ ├── iron-fit-behavior#1.2.6 +│ │ ├── iron-overlay-behavior#1.10.3 +│ │ └── polymer#1.8.0 +│ ├─┬ paper-toggle-button#1.3.0 │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ paper-behaviors#1.0.12 │ │ │ ├─┬ iron-behaviors#1.0.17 │ │ │ │ ├─┬ iron-a11y-keys-behavior#1.1.9 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ iron-checked-element-behavior#1.0.5 │ │ │ │ ├─┬ iron-form-element-behavior#1.0.6 -│ │ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ └── polymer#1.8.0 │ │ │ │ ├─┬ iron-validatable-behavior#1.1.1 │ │ │ │ │ ├─┬ iron-meta#1.1.2 -│ │ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ │ └── polymer#1.7.0 -│ │ │ │ └── polymer#1.7.0 +│ │ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ │ └── polymer#1.8.0 +│ │ │ │ └── polymer#1.8.0 │ │ │ ├─┬ paper-ripple#1.0.10 │ │ │ │ ├── iron-a11y-keys-behavior#1.1.9 -│ │ │ │ └── polymer#1.7.0 -│ │ │ └── polymer#1.7.0 +│ │ │ │ └── polymer#1.8.0 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ paper-toolbar#1.1.7 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 │ │ ├── paper-styles#1.1.5 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ └─┬ paper-tooltip#1.1.3 │ ├─┬ neon-animation#1.2.4 │ │ ├─┬ iron-meta#1.1.2 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-resizable-behavior#1.0.5 -│ │ │ └── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 │ │ ├─┬ iron-selector#1.5.2 -│ │ │ └── polymer#1.7.0 -│ │ ├── polymer#1.7.0 +│ │ │ └── polymer#1.8.0 +│ │ ├── polymer#1.8.0 │ │ └── web-animations-js#2.2.2 │ ├─┬ paper-styles#1.1.5 │ │ ├── font-roboto#1.0.1 -│ │ ├─┬ iron-flex-layout#1.3.1 -│ │ │ └── polymer#1.7.0 -│ │ └── polymer#1.7.0 -│ └── polymer#1.7.0 +│ │ ├─┬ iron-flex-layout#1.3.2 +│ │ │ └── polymer#1.8.0 +│ │ └── polymer#1.8.0 +│ └── polymer#1.8.0 ├─┬ platinum-elements#2.0.0 │ ├─┬ platinum-bluetooth#2.1.2 -│ │ ├── polymer#1.7.0 +│ │ ├── polymer#1.8.0 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ platinum-https-redirect#1.0.2 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ ├─┬ platinum-push-messaging#1.0.5 -│ │ ├── polymer#1.7.0 +│ │ ├── polymer#1.8.0 │ │ └─┬ promise-polyfill#1.0.1 -│ │ └── polymer#1.7.0 +│ │ └── polymer#1.8.0 │ └─┬ platinum-sw#1.3.0 -│ ├── polymer#1.7.0 -│ └── sw-toolbox#3.4.0 -├─┬ polymer#1.7.0 -│ └── webcomponentsjs#0.7.22 -└── polymerfire#0.10.2 +│ ├── polymer#1.8.0 +│ └── sw-toolbox#3.6.0 +├─┬ polymer#1.8.0 +│ └── webcomponentsjs#0.7.24 (latest is 1.0.0-rc.1) +└── polymerfire#0.9.7 (0.10.3 available) ``` diff --git a/bower.json b/bower.json index 2a771339..42da6c2c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "polymer-cdn", - "version": "1.7.0.2", + "version": "1.8.0", "main": "polymer.js", "homepage": "https://github.com/Download/polymer-cdn", "authors": [ @@ -30,10 +30,6 @@ "app-elements": "polymerelements/app-elements#latest", "google-web-components": "GoogleWebComponents/google-web-components#latest", "molecules": "polymerelements/molecules#latest", - "polymerfire": "firebase/polymerfire#0.10.2" - }, - "resolutions": { - "polymerfire": "0.10.2", - "firebase": ">= 3.5.1 < 4.0" + "polymerfire": "firebase/polymerfire#latest" } } diff --git a/lib/app-elements/.bower.json b/lib/app-elements/.bower.json index 90bfcce3..68cd4efa 100644 --- a/lib/app-elements/.bower.json +++ b/lib/app-elements/.bower.json @@ -1,6 +1,6 @@ { "name": "app-elements", - "version": "0.10.0", + "version": "0.10.1", "homepage": "https://github.com/PolymerElements/app-elements", "authors": [ "The Polymer Authors" @@ -11,7 +11,8 @@ "keywords": [ "web-components", "polymer", - "app" + "app", + "element-collection" ], "license": "http://polymer.github.io/LICENSE.txt", "private": true, @@ -24,16 +25,16 @@ ], "dependencies": { "app-layout": "PolymerElements/app-layout#^0.10.0", - "app-localize-behavior": "PolymerElements/app-localize-behavior#^0.9.0", + "app-localize-behavior": "PolymerElements/app-localize-behavior#^0.10.0", "app-pouchdb": "PolymerElements/app-pouchdb#^0.9.0", "app-route": "PolymerElements/app-route#^0.9.0", "app-storage": "PolymerElements/app-storage#^0.9.0" }, - "_release": "0.10.0", + "_release": "0.10.1", "_resolution": { "type": "version", - "tag": "v0.10.0", - "commit": "75855bc1478e03442376250b3d01c0cfc92fd8b5" + "tag": "v0.10.1", + "commit": "e06b2f179425b8b2c4361d9f54186c16d9024251" }, "_source": "git://github.com/polymerelements/app-elements.git", "_target": "*", diff --git a/lib/app-elements/app-elements.html b/lib/app-elements/app-elements.html index 88c42fec..755155fc 100644 --- a/lib/app-elements/app-elements.html +++ b/lib/app-elements/app-elements.html @@ -16,7 +16,7 @@ - + diff --git a/lib/app-elements/bower.json b/lib/app-elements/bower.json index 36c505fd..cf6f7e7d 100644 --- a/lib/app-elements/bower.json +++ b/lib/app-elements/bower.json @@ -1,6 +1,6 @@ { "name": "app-elements", - "version": "0.10.0", + "version": "0.10.1", "homepage": "https://github.com/PolymerElements/app-elements", "authors": [ "The Polymer Authors" @@ -11,7 +11,8 @@ "keywords": [ "web-components", "polymer", - "app" + "app", + "element-collection" ], "license": "http://polymer.github.io/LICENSE.txt", "private": true, @@ -24,7 +25,7 @@ ], "dependencies": { "app-layout": "PolymerElements/app-layout#^0.10.0", - "app-localize-behavior": "PolymerElements/app-localize-behavior#^0.9.0", + "app-localize-behavior": "PolymerElements/app-localize-behavior#^0.10.0", "app-pouchdb": "PolymerElements/app-pouchdb#^0.9.0", "app-route": "PolymerElements/app-route#^0.9.0", "app-storage": "PolymerElements/app-storage#^0.9.0" diff --git a/lib/app-layout/.bower.json b/lib/app-layout/.bower.json index 58bac023..d132a978 100644 --- a/lib/app-layout/.bower.json +++ b/lib/app-layout/.bower.json @@ -1,6 +1,6 @@ { "name": "app-layout", - "version": "0.10.5", + "version": "0.10.7", "description": "A set of layout elements for your app", "authors": [ "The Polymer Authors" @@ -42,11 +42,11 @@ }, "ignore": [], "private": true, - "_release": "0.10.5", + "_release": "0.10.7", "_resolution": { "type": "version", - "tag": "v0.10.5", - "commit": "df716eeaca72fb44608dc7032ec3c601af6e405b" + "tag": "v0.10.7", + "commit": "a28a9ac9e5937ac1bab83939f00256d232c91b65" }, "_source": "git://github.com/PolymerElements/app-layout.git", "_target": "^0.10.0", diff --git a/lib/app-layout/.travis.yml b/lib/app-layout/.travis.yml index 8ebcbaa8..d8113221 100644 --- a/lib/app-layout/.travis.yml +++ b/lib/app-layout/.travis.yml @@ -1,22 +1,23 @@ language: node_js sudo: required dist: trusty -node_js: stable +node_js: '6' addons: - sauce_connect: true - firefox: '46.0' + firefox: latest apt: sources: - - google-chrome + - google-chrome packages: - - google-chrome-stable + - google-chrome-stable before_script: -- npm install -g bower polylint web-component-tester -- bower install + - npm install -g bower polylint web-component-tester + - bower install script: -- xvfb-run wct -- if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s 'default'; fi + - xvfb-run wct + - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' env: global: - - secure: aLLRRtzSz/QImXYAEO7lBZcmp8xhXH28J6HONXOboy8H2eQmie0kAG8EIL1EYw1OMomAwawvh9BMJqhJHiLg23h6+asXdEaYefF+QDKIKh11dCZFUPJ71DAwKOLQpL+3D4iV/Wmndr4dIEGASCUdPufoBbmG1ZVY5dGkQYG8TO7mAOwzCciPNRaHws5fkMhWbm+tzWCDrIoMOWKDBZiAk4Rm7pXQ7c+Vnr07R0qrWlsCuiaMMc9J34q0bqrzmnV+EWjqKHXzhv1hJEbKHvO73cJorwtdpkeqLi1UsdkDCBuA8soxLSicCcpFe7eMkpr9WrbuJZ5QOEVlq+qb3aW9tH5wABiXSL4K8J7otvaXgRIaTg6i5pRGrivmNAOS6YXzT7oQAdmfFxHSpUr4OeV3Nvm9Ik7p8sOLHMGj4Eo00djjPtbO9MutF3CBLvYuEmdfa0BRXe3WqeJdaCVyYiMAPG7lYqz+aNAl6O4qAVRLMzXIRl/+vF2cso/rG7SsZORSuMk34NZhdXiHlBI+e5lyNrdrCyirukZmTd5rLiyEfbO9ty8BgxQ5MlomEXoZM3GYgFKgViYiMFQ8QuaGBUJBdeyo0IJiqp7ohcbUZq46XOXz//5hOOcp4ddgMNNjyIqjGmBJff0+oYalhJXK56UivTAXhoiXDLIQXHsJ3rUexcE= - - secure: TqRTXbcw5+a/XY/pb3rh8a/PkbLluNZKdN9FI/ZfHOVJu1xWCQSPUcI8XNmnPks/SVz8aCSWpPi4dh6oa8k1FXo7Q0lQ+2wAdfe7imnqoj6YIt0guHbe/YWGZoUmzuptSgufygzKGRh37oZx8fOH9bMb0vyMxCTZs4PcTeaqhmRQRHfVK/W2dyDRnSuHior5niKnboLXXR+XitcT3k+0S/jUGUwice0BivjHPpB9CNgm2lChRX3tHIru4iE3XW5U4+8Eg4SulLXd8DybQ3hzMIEmapPU7T/EO/xpIe1hIfVbJBY0LB4Ri5GGCK00OEDEcHSSJmubJ4usn2jitAyfztXg8BLEg8d/1BSTmAF+l7gUKgqhJ968Prc09EUdnyBPwRmnt1sPcZpDaDZuegg+y5Gx3qmWuqDAVSsHw08BbtK37ppHFRwswtRUMFOQKuOQXM74uI10BOWshONGitqKNYFvXniZxqO7Ezc/LSAfxSn278ews/KRNl/elGLgOtw92cJPXw515h56FvWb7gc1cm5WtJir2NwX7KlhHU3IPoDYq3QDKKQ63sPmUGPhCBAtfBGRDd5Os1MbcoyChpMr4osxHv03PNvQPY5hKjg2mUnb5QwMpJiEPs70CLXdx8Q7psX56RKjDHunFpXf5M4/SQIEmVFVi2PLoUymWlpvdBc= + - secure: >- + aLLRRtzSz/QImXYAEO7lBZcmp8xhXH28J6HONXOboy8H2eQmie0kAG8EIL1EYw1OMomAwawvh9BMJqhJHiLg23h6+asXdEaYefF+QDKIKh11dCZFUPJ71DAwKOLQpL+3D4iV/Wmndr4dIEGASCUdPufoBbmG1ZVY5dGkQYG8TO7mAOwzCciPNRaHws5fkMhWbm+tzWCDrIoMOWKDBZiAk4Rm7pXQ7c+Vnr07R0qrWlsCuiaMMc9J34q0bqrzmnV+EWjqKHXzhv1hJEbKHvO73cJorwtdpkeqLi1UsdkDCBuA8soxLSicCcpFe7eMkpr9WrbuJZ5QOEVlq+qb3aW9tH5wABiXSL4K8J7otvaXgRIaTg6i5pRGrivmNAOS6YXzT7oQAdmfFxHSpUr4OeV3Nvm9Ik7p8sOLHMGj4Eo00djjPtbO9MutF3CBLvYuEmdfa0BRXe3WqeJdaCVyYiMAPG7lYqz+aNAl6O4qAVRLMzXIRl/+vF2cso/rG7SsZORSuMk34NZhdXiHlBI+e5lyNrdrCyirukZmTd5rLiyEfbO9ty8BgxQ5MlomEXoZM3GYgFKgViYiMFQ8QuaGBUJBdeyo0IJiqp7ohcbUZq46XOXz//5hOOcp4ddgMNNjyIqjGmBJff0+oYalhJXK56UivTAXhoiXDLIQXHsJ3rUexcE= + - secure: >- + TqRTXbcw5+a/XY/pb3rh8a/PkbLluNZKdN9FI/ZfHOVJu1xWCQSPUcI8XNmnPks/SVz8aCSWpPi4dh6oa8k1FXo7Q0lQ+2wAdfe7imnqoj6YIt0guHbe/YWGZoUmzuptSgufygzKGRh37oZx8fOH9bMb0vyMxCTZs4PcTeaqhmRQRHfVK/W2dyDRnSuHior5niKnboLXXR+XitcT3k+0S/jUGUwice0BivjHPpB9CNgm2lChRX3tHIru4iE3XW5U4+8Eg4SulLXd8DybQ3hzMIEmapPU7T/EO/xpIe1hIfVbJBY0LB4Ri5GGCK00OEDEcHSSJmubJ4usn2jitAyfztXg8BLEg8d/1BSTmAF+l7gUKgqhJ968Prc09EUdnyBPwRmnt1sPcZpDaDZuegg+y5Gx3qmWuqDAVSsHw08BbtK37ppHFRwswtRUMFOQKuOQXM74uI10BOWshONGitqKNYFvXniZxqO7Ezc/LSAfxSn278ews/KRNl/elGLgOtw92cJPXw515h56FvWb7gc1cm5WtJir2NwX7KlhHU3IPoDYq3QDKKQ63sPmUGPhCBAtfBGRDd5Os1MbcoyChpMr4osxHv03PNvQPY5hKjg2mUnb5QwMpJiEPs70CLXdx8Q7psX56RKjDHunFpXf5M4/SQIEmVFVi2PLoUymWlpvdBc= diff --git a/lib/app-layout/README.md b/lib/app-layout/README.md index 49991f46..5d537afc 100644 --- a/lib/app-layout/README.md +++ b/lib/app-layout/README.md @@ -1,10 +1,10 @@ # App Layout [![Build Status](https://travis-ci.org/PolymerElements/app-layout.svg?branch=master)](https://travis-ci.org/PolymerElements/app-layout) [![Published on webcomponents.org](https://img.shields.io/badge/webcomponents.org-published-blue.svg)](https://beta.webcomponents.org/element/PolymerElements/app-layout) -[](https://polymerelements.github.io/app-layout/) +A collection of elements, along with guidelines and templates that can be used to structure your app’s layout. + + + + + + + + Responsive grid layout using app-grid-style with distributed children + + + + + + + + + + + + + + + +

3 columns on large screens and 2 columns on small ones.

+ + + + + + + diff --git a/lib/app-layout/app-grid/demo/index.html b/lib/app-layout/app-grid/demo/index.html index 62804fc6..a555e8bf 100644 --- a/lib/app-layout/app-grid/demo/index.html +++ b/lib/app-layout/app-grid/demo/index.html @@ -33,6 +33,7 @@

app-grid demos

Flickr grid layout Material design grid layout Simple responsive grid layout + Responsive grid layout with distributed children Aspect ratios diff --git a/lib/app-layout/app-grid/test/app-grid-3-distributed.html b/lib/app-layout/app-grid/test/app-grid-3-distributed.html new file mode 100644 index 00000000..a1fc479b --- /dev/null +++ b/lib/app-layout/app-grid/test/app-grid-3-distributed.html @@ -0,0 +1,172 @@ + + + + + + test for app-grid + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/app-layout/app-grid/test/index.html b/lib/app-layout/app-grid/test/index.html index eca6611c..f5c3d568 100644 --- a/lib/app-layout/app-grid/test/index.html +++ b/lib/app-layout/app-grid/test/index.html @@ -20,10 +20,12 @@ 'app-grid-1.html', 'app-grid-2.html', 'app-grid-3.html', + 'app-grid-3-distributed.html', 'app-grid-1.html?dom=shadow', 'app-grid-2.html?dom=shadow', 'app-grid-3.html?dom=shadow', + 'app-grid-3-distributed.html?dom=shadow', ]); - \ No newline at end of file + diff --git a/lib/app-layout/app-header-layout/app-header-layout.html b/lib/app-layout/app-header-layout/app-header-layout.html index 60e17e03..d73c80f1 100644 --- a/lib/app-layout/app-header-layout/app-header-layout.html +++ b/lib/app-layout/app-header-layout/app-header-layout.html @@ -144,7 +144,7 @@ listeners: { 'iron-resize': '_resizeHandler', - 'app-header-reset-layout': 'resetLayout' + 'app-header-reset-layout': '_resetLayoutHandler' }, observers: [ @@ -216,7 +216,13 @@ _resizeHandler: function() { this.resetLayout(); + }, + + _resetLayoutHandler: function(e) { + this.resetLayout(); + e.stopPropagation(); } + }); diff --git a/lib/app-layout/app-header-layout/test/app-header-layout.html b/lib/app-layout/app-header-layout/test/app-header-layout.html index 8c6f2ca6..bdc13fbf 100644 --- a/lib/app-layout/app-header-layout/test/app-header-layout.html +++ b/lib/app-layout/app-header-layout/test/app-header-layout.html @@ -33,16 +33,25 @@ } .content { - width: 1px; + width: 100%; height: 3000px; background-color: red; } + + [has-scrolling-region] { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + } + - + + + + + diff --git a/lib/app-layout/app-header/app-header.html b/lib/app-layout/app-header/app-header.html index 7c58a8a8..8f358a7e 100644 --- a/lib/app-layout/app-header/app-header.html +++ b/lib/app-layout/app-header/app-header.html @@ -235,7 +235,7 @@

App name

transition-property: transform; } - :host::after { + :host::before { position: absolute; right: 0px; bottom: -5px; @@ -251,7 +251,7 @@

App name

@apply(--app-header-shadow); } - :host([shadow])::after { + :host([shadow])::before { opacity: 1; } @@ -482,8 +482,6 @@

App name

* @method resetLayout */ resetLayout: function() { - this.fire('app-header-reset-layout'); - this.debounce('_resetLayout', function() { // noop if the header isn't visible if (this.offsetWidth === 0 && this.offsetHeight === 0) { @@ -502,7 +500,6 @@

App name

if (!firstSetup) { this._updateScrollState(0, true); } - if (this._mayMove()) { this._dHeight = this._stickyEl ? this._height - this._stickyEl.offsetHeight : 0; } else { @@ -520,6 +517,7 @@

App name

} // restore no transition this.disabled = currentDisabled; + this.fire('app-header-reset-layout'); }); }, @@ -542,7 +540,7 @@

App name

var dScrollTop = scrollTop - this._lastScrollTop; var absDScrollTop = Math.abs(dScrollTop); var isScrollingDown = scrollTop > this._lastScrollTop; - var now = Date.now(); + var now = performance.now(); if (this._mayMove()) { top = this._clamp(this.reveals ? lastTop + dScrollTop : scrollTop, 0, maxHeaderTop); diff --git a/lib/app-layout/bower.json b/lib/app-layout/bower.json index 3fb8d4d7..be8e2e3a 100644 --- a/lib/app-layout/bower.json +++ b/lib/app-layout/bower.json @@ -1,6 +1,6 @@ { "name": "app-layout", - "version": "0.10.5", + "version": "0.10.7", "description": "A set of layout elements for your app", "authors": [ "The Polymer Authors" diff --git a/lib/app-layout/patterns/transform-navigation/x-app.html b/lib/app-layout/patterns/transform-navigation/x-app.html index 60403464..045ad7aa 100644 --- a/lib/app-layout/patterns/transform-navigation/x-app.html +++ b/lib/app-layout/patterns/transform-navigation/x-app.html @@ -36,8 +36,9 @@ } paper-tabs { - max-width: 640px; --paper-tabs-selection-bar-color: black; + height: 100%; + max-width: 640px; } paper-tab { @@ -75,7 +76,7 @@ - + diff --git a/lib/app-layout/templates/getting-started/bower.json b/lib/app-layout/templates/getting-started/bower.json index 330cf5bb..0f007477 100644 --- a/lib/app-layout/templates/getting-started/bower.json +++ b/lib/app-layout/templates/getting-started/bower.json @@ -5,7 +5,7 @@ ], "private": true, "dependencies": { - "app-layout": "polymerelements/app-layout#^0.9.0", + "app-layout": "polymerelements/app-layout#^0.10.0", "iron-icons": "polymerelements/iron-icons#^1.0.0", "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0", "polymer": "polymer/polymer#^1.4.0" diff --git a/lib/app-layout/templates/landing-page/bower.json b/lib/app-layout/templates/landing-page/bower.json index 7ff2bde3..a7ff7066 100644 --- a/lib/app-layout/templates/landing-page/bower.json +++ b/lib/app-layout/templates/landing-page/bower.json @@ -5,7 +5,7 @@ ], "private": true, "dependencies": { - "app-layout": "polymerelements/app-layout#^0.9.0", + "app-layout": "polymerelements/app-layout#^0.10.0", "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", "iron-icons": "polymerelements/iron-icons#^1.0.0", "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0", diff --git a/lib/app-layout/templates/pesto/bower.json b/lib/app-layout/templates/pesto/bower.json index 49ec9e05..dc741aac 100644 --- a/lib/app-layout/templates/pesto/bower.json +++ b/lib/app-layout/templates/pesto/bower.json @@ -5,7 +5,7 @@ ], "private": true, "dependencies": { - "app-layout": "polymerelements/app-layout#^0.9.0", + "app-layout": "polymerelements/app-layout#^0.10.0", "app-route": "polymerelements/app-route#^0.9.1", "iron-ajax": "polymerelements/iron-ajax#^1.0.0", "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", diff --git a/lib/app-layout/templates/shrine/bower.json b/lib/app-layout/templates/shrine/bower.json index 91403a44..77fd329c 100644 --- a/lib/app-layout/templates/shrine/bower.json +++ b/lib/app-layout/templates/shrine/bower.json @@ -5,7 +5,7 @@ ], "private": true, "dependencies": { - "app-layout": "polymerelements/app-layout#^0.9.0", + "app-layout": "polymerelements/app-layout#^0.10.0", "app-route": "polymerelements/app-route#^0.9.1", "iron-ajax": "polymerelements/iron-ajax#^1.0.0", "iron-flex-layout": "polymerelements/iron-flex-layout#^1.0.0", diff --git a/lib/app-layout/templates/shrine/src/shrine-app.html b/lib/app-layout/templates/shrine/src/shrine-app.html index dd94eb2f..5edbefcf 100644 --- a/lib/app-layout/templates/shrine/src/shrine-app.html +++ b/lib/app-layout/templates/shrine/src/shrine-app.html @@ -56,7 +56,7 @@ } paper-icon-button { - color: #7c7c7c; + color: #000; --paper-icon-button-ink-color: #31f0ef; } @@ -73,7 +73,6 @@ } .logo { - background-image: url(//app-layout-assets.appspot.com/assets/shrine/shrine_logo_withicon.svg); width: 120px; height: 40px; background-size: 100% 100%; @@ -173,7 +172,6 @@ */ @media (max-width: 1200px) { .logo { - background-image: url(//app-layout-assets.appspot.com/assets/shrine/shrine_logo.svg); width: 89px; height: 17px; } @@ -223,7 +221,7 @@
Stella
- +
+ +app-route Demo + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/app-route/test/index.html b/lib/app-route/test/index.html index a9bae5bd..f82b1f30 100644 --- a/lib/app-route/test/index.html +++ b/lib/app-route/test/index.html @@ -20,7 +20,9 @@ 'app-route-converter.html', 'app-route.html', 'app-location.html', + 'test-observer-app.html', 'test-app-example-1.html', + ]); diff --git a/lib/app-route/test/observer-tester.html b/lib/app-route/test/observer-tester.html new file mode 100644 index 00000000..2168fba3 --- /dev/null +++ b/lib/app-route/test/observer-tester.html @@ -0,0 +1,38 @@ + + + + + + + + + diff --git a/lib/app-route/test/test-observer-app.html b/lib/app-route/test/test-observer-app.html new file mode 100644 index 00000000..47ca0a01 --- /dev/null +++ b/lib/app-route/test/test-observer-app.html @@ -0,0 +1,58 @@ + + + + + app-route 0bserver Test + + + + + + + + + + + + + + + + diff --git a/lib/app-storage/.bower.json b/lib/app-storage/.bower.json index 17edca3c..f1d52430 100644 --- a/lib/app-storage/.bower.json +++ b/lib/app-storage/.bower.json @@ -3,7 +3,7 @@ "authors": [ "The Polymer Authors" ], - "version": "0.9.7", + "version": "0.9.8", "description": "Web Components for managing user data in web apps", "main": [ "app-storage-behavior.html", @@ -13,7 +13,7 @@ ], "moduleType": [], "license": "http://polymer.github.io/LICENSE.txt", - "homepage": "https://github.com/PolymerElements/app-storage", + "homepage": "https://github.com/polymerelements/app-storage", "private": true, "dependencies": { "promise-polyfill": "polymerlabs/promise-polyfill#^1.0.0", @@ -33,13 +33,13 @@ "platinum-sw": "polymerelements/platinum-sw#^1.3.0" }, "ignore": [], - "_release": "0.9.7", + "_release": "0.9.8", "_resolution": { "type": "version", - "tag": "v0.9.7", - "commit": "3a2284d09f6abb40832b8f8c4847ec27456e056b" + "tag": "v0.9.8", + "commit": "816e239dc771a8f12f31bc6ef248536739b5880c" }, - "_source": "git://github.com/PolymerElements/app-storage.git", + "_source": "git://github.com/polymerelements/app-storage.git", "_target": "^0.9.0", - "_originalSource": "PolymerElements/app-storage" + "_originalSource": "polymerelements/app-storage" } \ No newline at end of file diff --git a/lib/app-storage/app-storage-behavior.html b/lib/app-storage/app-storage-behavior.html index d505341f..e91563b7 100644 --- a/lib/app-storage/app-storage-behavior.html +++ b/lib/app-storage/app-storage-behavior.html @@ -189,7 +189,7 @@ * create, relative to the root of storage associated with this instance. * @return {Promise} A promise that resolves with the canonical value stored * at the provided path when the transaction has completed. _If there is no - * such value at she provided path through storage, then the promise will + * such value at the provided path through storage, then the promise will * resolve to `undefined`._ The promise will be rejected if the transaction * fails for any reason. */ @@ -467,7 +467,7 @@ }, __pathRefersToArray: function(path) { - return (SPLICES_RX.test(path) || LENGTH_RX.test(path)) + return (SPLICES_RX.test(path) || LENGTH_RX.test(path)) && Array.isArray(this.get(this.__parentPath(path))); }, diff --git a/lib/app-storage/bower.json b/lib/app-storage/bower.json index 1cf97a9b..011f5cde 100644 --- a/lib/app-storage/bower.json +++ b/lib/app-storage/bower.json @@ -3,7 +3,7 @@ "authors": [ "The Polymer Authors" ], - "version": "0.9.7", + "version": "0.9.8", "description": "Web Components for managing user data in web apps", "main": [ "app-storage-behavior.html", diff --git a/lib/firebase/.bower.json b/lib/firebase/.bower.json index b95e6056..6db10748 100644 --- a/lib/firebase/.bower.json +++ b/lib/firebase/.bower.json @@ -1,6 +1,6 @@ { "name": "firebase", - "version": "3.5.2", + "version": "3.6.10", "homepage": "https://firebase.google.com", "authors": [ "Firebase " @@ -23,13 +23,13 @@ "test", "tests" ], - "_release": "3.5.2", + "_release": "3.6.10", "_resolution": { "type": "version", - "tag": "v3.5.2", - "commit": "cf5d9321b7a56e20314414f4967737f569c8ec63" + "tag": "v3.6.10", + "commit": "40a4a03af92f35056525c5603411f34037a233be" }, "_source": "https://github.com/firebase/firebase-bower.git", - "_target": ">= 3.5.1 < 4.0", + "_target": "^3.0", "_originalSource": "firebase" } \ No newline at end of file diff --git a/lib/firebase/bower.json b/lib/firebase/bower.json index ebe7a0d0..287e9ab9 100644 --- a/lib/firebase/bower.json +++ b/lib/firebase/bower.json @@ -1,6 +1,6 @@ { "name": "firebase", - "version": "3.5.2", + "version": "3.6.10", "homepage": "https://firebase.google.com", "authors": [ "Firebase " diff --git a/lib/firebase/firebase-app-externs.js b/lib/firebase/firebase-app-externs.js index f5272410..06883f40 100644 --- a/lib/firebase/firebase-app-externs.js +++ b/lib/firebase/firebase-app-externs.js @@ -1,8 +1,8 @@ /** * @fileoverview Firebase namespace and Firebase App API. - * Version: 3.5.2 + * Version: 3.6.10 * - * Copyright 2016 Google Inc. All Rights Reserved. + * Copyright 2017 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,41 +28,77 @@ var firebase = {}; /** - * Create (and intialize) a FirebaseApp. - * - * @param {!Object} options Options to configure the services use in the App. - * @param {string=} name The optional name of the app to initialize ('[DEFAULT]' - * if none) - * @return {!firebase.app.App} + * Creates and initializes a Firebase {@link firebase.app.App app} instance. + * + * See + * {@link + * https://firebase.google.com/docs/web/setup#add_firebase_to_your_app + * Add Firebase to your app} and + * {@link + * https://firebase.google.com/docs/web/setup#initialize_multiple_apps + * Initialize multiple apps} for detailed documentation. + * + * @example + * // Initialize default app + * // Retrieve your own options values by adding a web app on + * // https://console.firebase.google.com + * firebase.initializeApp({ + * apiKey: "AIza....", // Auth / General Use + * authDomain: "YOUR_APP.firebaseapp.com", // Auth with popup/redirect + * databaseURL: "https://YOUR_APP.firebaseio.com", // Realtime Database + * storageBucket: "YOUR_APP.appspot.com", // Storage + * messagingSenderId: "123456789" // Cloud Messaging + * }); + * + * @example + * // Initialize another app + * var otherApp = firebase.initializeApp({ + * databaseURL: "https://.firebaseio.com", + * storageBucket: ".appspot.com" + * }, "otherApp"); + * + * @param {!Object} options Options to configure the app's services. + * @param {string=} name Optional name of the app to initialize. If no name + * is provided, the default is `"[DEFAULT]"`. + * + * @return {!firebase.app.App} The initialized app. */ firebase.initializeApp = function(options, name) {}; /** - * Retrieve an instance of a FirebaseApp. + * Retrieves a Firebase {@link firebase.app.App app} instance. + * + * When called with no arguments, the default app is returned. When an app name + * is provided, the app corresponding to that name is returned. * - * With no arguments, this returns the default App. With a single - * string argument, it returns the named App. + * An exception is thrown if the app being retrieved has not yet been + * initialized. * - * This function throws an exception if the app you are trying to access - * does not exist. + * @example + * // Return the default app + * var app = firebase.app(); * - * Usage: firebase.app() + * @example + * // Return a named app + * var otherApp = firebase.app("otherApp"); * * @namespace - * @param {string} name The optional name of the app to return ('[DEFAULT]' if - * none) - * @return {!firebase.app.App} + * @param {string=} name Optional name of the app to return. If no name is + * provided, the default is `"[DEFAULT]"`. + * + * @return {!firebase.app.App} The app corresponding to the provided app name. + * If no app name is provided, the default app is returned. */ firebase.app = function(name) {}; /** - * A (read-only) array of all the initialized Apps. + * A (read-only) array of all initialized apps. * @type {!Array} */ firebase.apps; /** - * The current SDK version ('3.5.2'). + * The current SDK version. * @type {string} */ firebase.SDK_VERSION; @@ -71,32 +107,61 @@ firebase.SDK_VERSION; * A Firebase App holds the initialization information for a collection of * services. * - * DO NOT call this constuctor directly (use - * firebase.initializeApp() to create an App). + * Do not call this constructor directly. Instead, use + * {@link firebase#.initializeApp `firebase.initializeApp()`} to create an app. * * @interface */ firebase.app.App = function() {}; /** - * The (read-only) name (identifier) for this App. '[DEFAULT]' is the name of - * the default App. + * The (read-only) name for this app. + * + * The default app's name is `"[DEFAULT]"`. + * + * @example + * // The default app's name is "[DEFAULT]" + * firebase.initializeApp(defaultAppConfig); + * console.log(firebase.app().name); // "[DEFAULT]" + * + * @example + * // A named app's name is what you provide to initializeApp() + * var otherApp = firebase.initializeApp(otherAppConfig, "other"); + * console.log(otherApp.name); // "other" + * * @type {string} */ firebase.app.App.prototype.name; /** - * The (read-only) configuration options (the original parameters given - * in firebase.initializeApp()). + * The (read-only) configuration options for this app. These are the original + * parameters given in + * {@link firebase#.initializeApp `firebase.initializeApp()`}. + * + * @example + * var app = firebase.initializeApp(config); + * console.log(app.options.credential === config.credential); // true + * console.log(app.options.databaseURL === config.databaseURL); // true + * * @type {!Object} */ firebase.app.App.prototype.options; /** - * Make the given App unusable and free the resources of all associated + * Renders this app unusable and frees the resources of all associated * services. * - * @return {!firebase.Promise} + * @example + * app.delete() + * .then(function() { + * console.log("App deleted successfully"); + * }) + * .catch(function(error) { + * console.log("Error deleting app:", error); + * }); + * + * @return {!firebase.Promise} An empty promise fulfilled when the app has + * been deleted. */ firebase.app.App.prototype.delete = function() {}; @@ -141,8 +206,8 @@ firebase.Thenable.prototype.catch = function(onReject) {}; * @template T * @constructor * @implements {firebase.Thenable} - * @param {function((function(T): void)=, - * (function(!Error): void)=)} resolver + * @param {function((function(T): void), + * (function(!Error): void))} resolver */ firebase.Promise = function(resolver) {}; @@ -194,54 +259,3 @@ firebase.Promise.reject = function(error) {}; * @return {!firebase.Promise>} */ firebase.Promise.all = function(values) {}; - - - -/** - * - * FirebaseError is a subclass of the standard JavaScript Error object. In - * addition to a message string, it contains a string-valued code. - * - * @interface - */ -firebase.FirebaseError; - -/** - * Error codes are strings using the following format: - * - * "service/string-code" - * - * While the message for a given error can change, the code will remain the same - * between backward-compatible versions of the Firebase SDK. - * - * @type {string} - */ -firebase.FirebaseError.prototype.code; - -/** - * An explanatory message for the error that just occurred. - * - * This message is designed to be helpful to you, the developer. It - * is not intended that you display it to the end user of your application - * (as it will generally not convey meaningful information to them). - * - * @type {string} - */ -firebase.FirebaseError.prototype.message; - -/** - * The name of the class of Errors. - * @type {string} - */ -firebase.FirebaseError.prototype.name; - -/** - * A string value containing the execution backtrace when the error originally - * occurred. - * - * This information can be useful to you and can be sent to Firebase support to - * help explain the cause of an error. - * - * @type {string} - */ -firebase.FirebaseError.prototype.stack; diff --git a/lib/firebase/firebase-app.js b/lib/firebase/firebase-app.js index c1bf3dc0..566c9431 100644 --- a/lib/firebase/firebase-app.js +++ b/lib/firebase/firebase-app.js @@ -1,36 +1,33 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ -var firebase = null; (function() { for(var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},h="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba=function(){ba=function(){};h.Symbol||(h.Symbol=ca)},da=0,ca=function(a){return"jscomp_symbol_"+(a||"")+da++},m=function(){ba();var a=h.Symbol.iterator;a||(a=h.Symbol.iterator= -h.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ea(this)}});m=function(){}},ea=function(a){var b=0;return fa(function(){return be?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=C.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)f=g.decorate(a,b,c,d);else for(var k=a.length-1;0<=k;k--)if(g=a[k])f=(3>e?g(f):3"}),c=this.ka+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=S,X=function(a,b,c){var d=this;this.P=c;this.S=!1;this.l={};this.I=b;this.fa=R(void 0,a);Object.keys(c.INTERNAL.factories).forEach(function(a){var b=c.INTERNAL.useAsService(d,a);null!==b&&(b=d.da.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.P.INTERNAL.removeApp(a.I);return W.all(Object.keys(a.l).map(function(b){return a.l[b].INTERNAL.delete()}))}).then(function(){a.S=!0;a.l={}})}; -X.prototype.da=function(a){Y(this);void 0===this.l[a]&&(this.l[a]=this.P.INTERNAL.factories[a](this,this.ca.bind(this)));return this.l[a]};X.prototype.ca=function(a){R(this,a)};var Y=function(a){a.S&&Z(Ra("deleted",{name:a.I}))};h.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.I}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.fa}}});X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc"); -function Sa(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("noApp",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&f[d])f[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("serverAuthMissing"));return c}var d={},e={},f={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name", -{name:c+""});void 0!==d[c]&&Z("dupApp",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||R(a,{INTERNAL:{getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,v){e[b]&&Z("dupService",{name:b});e[b]=c;v&&(f[b]=v);c=function(c){void 0===c&&(c=a());return c[b]()};void 0!==d&&R(c,d);return g[b]=c},createFirebaseNamespace:Sa, -extendNamespace:function(a){R(g,a)},createSubscribe:La,ErrorFactory:Qa,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:Q,deepExtend:R}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Error(Ra(a,b));} -function Ra(a,b){b=b||{};b={noApp:"No Firebase App '"+b.name+"' has been created - call Firebase App.initializeApp().","bad-app-name":"Illegal App name: '"+b.name+"'.",dupApp:"Firebase App named '"+b.name+"' already exists.",deleted:"Firebase App named '"+b.name+"' already deleted.",dupService:"Firebase Service named '"+b.name+"' already registered.",serverAuthMissing:"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain."}[a]; -return void 0===b?"Application Error: ("+a+")":b};"undefined"!==typeof firebase&&(firebase=Sa()); })(); -firebase.SDK_VERSION = "3.5.2"; +/*! @license Firebase v3.6.10 + Build: 3.6.10-rc.1 + Terms: https://firebase.google.com/terms/ */ +var firebase = null; (function() { var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},k="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,l=function(){l=function(){};k.Symbol||(k.Symbol=ba)},ca=0,ba=function(a){return"jscomp_symbol_"+(a||"")+ca++},n=function(){l();var a=k.Symbol.iterator;a||(a=k.Symbol.iterator= +k.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return m(this)}});n=function(){}},m=function(a){var b=0;return da(function(){return bb.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"===typeof Object.getOwnPropertySymbols){var e= +0;for(d=Object.getOwnPropertySymbols(a);eb.indexOf(d[e])&&(c[d[e]]=a[d[e]])}return c},__decorate=function(a,b,c,d){var e=arguments.length,h=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=A.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)h=g.decorate(a,b,c,d);else for(var f=a.length-1;0<=f;f--)if(g=a[f])h=(3>e?g(h):3f[0]&&c[1]"}),c=this.Y+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=Q,X=function(a,b,c){var d=this;this.K=c;this.L=!1;this.i={};this.C=b;this.G=P(void 0,a);a="serviceAccount"in this.G;("credential"in this.G||a)&&"undefined"!==typeof console&&console.log("The '"+(a?"serviceAccount":"credential")+"' property specified in the first argument to initializeApp() is deprecated and will be removed in the next major version. You should instead use the 'firebase-admin' package. See https://firebase.google.com/docs/admin/setup for details on how to get started.");Object.keys(c.INTERNAL.factories).forEach(function(a){var b= +c.INTERNAL.useAsService(d,a);null!==b&&(b=d.U.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.K.INTERNAL.removeApp(a.C);return W.all(Object.keys(a.i).map(function(b){return a.i[b].INTERNAL.delete()}))}).then(function(){a.L=!0;a.i={}})};X.prototype.U=function(a){Y(this);void 0===this.i[a]&&(this.i[a]=this.K.INTERNAL.factories[a](this,this.T.bind(this)));return this.i[a]};X.prototype.T=function(a){P(this,a)}; +var Y=function(a){a.L&&Z("app-deleted",{name:a.C})};k.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.C}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.G}}});X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc"); +function Ia(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("no-app",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&h[d])h[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("sa-not-supported"));return c}var d={},e={},h={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name", +{name:c+""});void 0!==d[c]&&Z("duplicate-app",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||P(a,{INTERNAL:{getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,u){e[b]&&Z("duplicate-service",{name:b});e[b]=c;u&&(h[b]=u);c=function(c){void 0===c&&(c=a());return c[b]()};void 0!==d&&P(c,d);return g[b]= +c},createFirebaseNamespace:Ia,extendNamespace:function(a){P(g,a)},createSubscribe:Ea,ErrorFactory:U,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:O,deepExtend:P}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Ja.create(a,b);} +var Ja=new U("app","Firebase",{"no-app":"No Firebase App '{$name}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$name}","duplicate-app":"Firebase App named '{$name}' already exists","app-deleted":"Firebase App named '{$name}' already deleted","duplicate-service":"Firebase service named '{$name}' already registered","sa-not-supported":"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain"});"undefined"!==typeof firebase&&(firebase=Ia()); }).call(this); +firebase.SDK_VERSION = "3.6.10"; diff --git a/lib/firebase/firebase-auth-externs.js b/lib/firebase/firebase-auth-externs.js index d6973d1c..5d6010ad 100644 --- a/lib/firebase/firebase-auth-externs.js +++ b/lib/firebase/firebase-auth-externs.js @@ -1,8 +1,8 @@ /** * @fileoverview Firebase Auth API. - * Version: 3.5.2 + * Version: 3.6.10 * - * Copyright 2016 Google Inc. All Rights Reserved. + * Copyright 2017 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,15 +20,25 @@ */ /** - * Gets the Auth object for the default App or a given App. + * Gets the {@link firebase.auth.Auth `Auth`} service for the default app or a + * given app. * - * Usage: + * `firebase.auth()` can be called with no arguments to access the default app's + * {@link firebase.auth.Auth `Auth`} service or as `firebase.auth(app)` to + * access the {@link firebase.auth.Auth `Auth`} service associated with a + * specific app. * - * firebase.auth() - * firebase.auth(app) + * @example + * // Get the Auth service for the default app + * var defaultAuth = firebase.auth(); + * + * @example + * // Get the Auth service for a given app + * var otherAuth = firebase.auth(otherApp); * * @namespace * @param {!firebase.app.App=} app + * * @return {!firebase.auth.Auth} */ firebase.auth = function(app) {}; @@ -50,19 +60,18 @@ firebase.auth.AuthCredential = function() {}; */ firebase.auth.AuthCredential.prototype.provider; - /** - * Gets the Firebase Auth Service object for an App. + * Gets the {@link firebase.auth.Auth `Auth`} service for the current app. * - * Usage: - * - * app.auth() + * @example + * var auth = app.auth(); + * // The above is shorthand for: + * // var auth = firebase.auth(app); * * @return {!firebase.auth.Auth} */ firebase.app.App.prototype.auth = function() {}; - /** * User profile information, visible only to the Firebase project's * apps. @@ -142,11 +151,11 @@ firebase.User.prototype.refreshToken; * Returns the current token if it has not expired, otherwise this will * refresh the token and return a new one. * - * @param {boolean=} opt_forceRefresh Force refresh regardless of token + * @param {boolean=} forceRefresh Force refresh regardless of token * expiration. * @return {!firebase.Promise} */ -firebase.User.prototype.getToken = function(opt_forceRefresh) {}; +firebase.User.prototype.getToken = function(forceRefresh) {}; /** * Refreshes the current user, if signed in. @@ -381,6 +390,14 @@ firebase.User.prototype.updateProfile = function(profile) {}; firebase.User.prototype.delete = function() {}; +/** + * Returns a JSON-serializable representation of this object. + * + * @return {!Object} A JSON-serializable representation of this object. + */ +firebase.User.prototype.toJSON = function() {}; + + /** * Checks a password reset code sent to the user by email or other out-of-band * mechanism. @@ -480,16 +497,26 @@ firebase.auth.Auth.prototype.checkActionCode = function(code) {}; */ firebase.auth.Auth.prototype.applyActionCode = function(code) {}; - /** * The Firebase Auth service interface. * + * Do not call this constructor directly. Instead, use + * {@link firebase.auth `firebase.auth()`}. + * + * See + * {@link https://firebase.google.com/docs/auth/ Firebase Authentication} + * for a full guide on how to use the Firebase Auth service. + * * @interface */ firebase.auth.Auth = function() {}; /** - * The App associated with the Auth service instance. + * The {@link firebase.app.App app} associated with the `Auth` service + * instance. + * + * @example + * var app = auth.app; * * @type {!firebase.app.App} */ @@ -530,6 +557,20 @@ firebase.auth.Auth.prototype.currentUser; *
Thrown if the password is not strong enough.
* * + * @example + * firebase.auth().createUserWithEmailAndPassword(email, password) + * .catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * if (errorCode == 'auth/weak-password') { + * alert('The password is too weak.'); + * } else { + * alert(errorMessage); + * } + * console.log(error); + * }); + * * @param {string} email The user's email address. * @param {string} password The user's chosen password. * @return {!firebase.Promise} @@ -557,16 +598,23 @@ firebase.auth.Auth.prototype.fetchProvidersForEmail = function(email) {}; /** * Adds an observer for auth state changes. * + * @example + * firebase.auth().onAuthStateChanged(function(user) { + * if (user) { + * // User is signed in. + * } + * }); + * * @param {!Object|function(?firebase.User)} * nextOrObserver An observer object or a function triggered on change. - * @param {function(!firebase.auth.Error)=} opt_error Optional A function + * @param {function(!firebase.auth.Error)=} error Optional A function * triggered on auth error. - * @param {function()=} opt_completed Optional A function triggered when the + * @param {function()=} completed Optional A function triggered when the * observer is removed. * @return {!function()} The unsubscribe function for the observer. */ firebase.auth.Auth.prototype.onAuthStateChanged = function( - nextOrObserver, opt_error, opt_completed) {}; + nextOrObserver, error, completed) {}; /** @@ -651,6 +699,23 @@ firebase.auth.Auth.prototype.confirmPasswordReset = * does not have a password set. * * + * @example + * firebase.auth().signInWithCredential(credential).catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * // The email of the user's account used. + * var email = error.email; + * // The firebase.auth.AuthCredential type that was used. + * var credential = error.credential; + * if (errorCode === 'auth/account-exists-with-different-credential') { + * alert('Email already associated with another account.'); + * // Handle account linking here, if using. + * } else { + * console.error(error); + * } + * }); + * * @param {!firebase.auth.AuthCredential} credential The auth credential. * @return {!firebase.Promise} */ @@ -674,6 +739,18 @@ firebase.auth.Auth.prototype.signInWithCredential = function(credential) {}; *
Thrown if the custom token format is incorrect.
* * + * @example + * firebase.auth().signInWithCustomToken(token).catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * if (errorCode === 'auth/invalid-custom-token') { + * alert('The token you provided is not valid.'); + * } else { + * console.error(error); + * } + * }); + * * @param {string} token The custom token to sign in with. * @return {!firebase.Promise} */ @@ -705,6 +782,20 @@ firebase.auth.Auth.prototype.signInWithCustomToken = function(token) {}; * corresponding to the email does not have a password set. * * + * @example + * firebase.auth().signInWithEmailAndPassword(email, password) + * .catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * if (errorCode === 'auth/wrong-password') { + * alert('Wrong password.'); + * } else { + * alert(errorMessage); + * } + * console.log(error); + * }); + * * @param {string} email The users email address. * @param {string} password The users password. * @return {!firebase.Promise} @@ -726,6 +817,19 @@ firebase.auth.Auth.prototype.signInWithEmailAndPassword = * in the Firebase Console, under the Auth tab. * * + * @example + * firebase.auth().signInAnonymously().catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * + * if (errorCode === 'auth/operation-not-allowed') { + * alert('You must enable Anonymous auth in the Firebase Console.'); + * } else { + * console.error(error); + * } + * }); + * * @return {!firebase.Promise} */ firebase.auth.Auth.prototype.signInAnonymously = function() {}; @@ -844,6 +948,34 @@ firebase.auth.AuthProvider.prototype.providerId; /** * Facebook auth provider. + * + * @example + * // Sign in using a redirect. + * firebase.auth().getRedirectResult().then(function(result) { + * if (result.credential) { + * // This gives you a Google Access Token. + * var token = result.credential.accessToken; + * } + * var user = result.user; + * }) + * // Start a sign in process for an unauthenticated user. + * var provider = new firebase.auth.FacebookAuthProvider(); + * provider.addScope('user_birthday'); + * firebase.auth().signInWithRedirect(provider); + * + * @example + * // Sign in using a popup. + * var provider = new firebase.auth.FacebookAuthProvider(); + * provider.addScope('user_birthday'); + * firebase.auth().signInWithPopup(provider).then(function(result) { + * // This gives you a Facebook Access Token. + * var token = result.credential.accessToken; + * // The signed-in user info. + * var user = result.user; + * }); + * + * @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state + * changes. * @constructor * @implements {firebase.auth.AuthProvider} */ @@ -853,6 +985,12 @@ firebase.auth.FacebookAuthProvider = function() {}; firebase.auth.FacebookAuthProvider.PROVIDER_ID; /** + * @example + * var cred = firebase.auth.FacebookAuthProvider.credential( + * // `event` from the Facebook auth.authResponseChange callback. + * event.authResponse.accessToken + * ); + * * @param {string} token Facebook access token. * @return {!firebase.auth.AuthCredential} The auth provider credential. */ @@ -871,7 +1009,7 @@ firebase.auth.FacebookAuthProvider.prototype.addScope = function(scope) {}; * popup and redirect sign-in operations. * Valid parameters include 'auth_type', 'display' and 'locale'. * For a detailed list, check the - * {@link https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/ Facebook} + * {@link https://goo.gl/pve4fo Facebook} * documentation. * Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri', * 'scope', 'response_type' and 'state' are not allowed and will be ignored. @@ -884,6 +1022,66 @@ firebase.auth.FacebookAuthProvider.prototype.setCustomParameters = /** * Github auth provider. + * + * GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect + * directly, or use the signInWithPopup handler: + * + * @example + * // Using a redirect. + * firebase.auth().getRedirectResult().then(function(result) { + * if (result.credential) { + * // This gives you a GitHub Access Token. + * var token = result.credential.accessToken; + * } + * var user = result.user; + * }).catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * // The email of the user's account used. + * var email = error.email; + * // The firebase.auth.AuthCredential type that was used. + * var credential = error.credential; + * if (errorCode === 'auth/account-exists-with-different-credential') { + * alert('You have signed up with a different provider for that email.'); + * // Handle linking here if your app allows it. + * } else { + * console.error(error); + * } + * }); + * + * // Start a sign in process for an unauthenticated user. + * var provider = new firebase.auth.GithubAuthProvider(); + * provider.addScope('repo'); + * firebase.auth().signInWithRedirect(provider); + * + * @example + * // With popup. + * var provider = new firebase.auth.GithubAuthProvider(); + * provider.addScope('repo'); + * firebase.auth().signInWithPopup(provider).then(function(result) { + * // This gives you a GitHub Access Token. + * var token = result.credential.accessToken; + * // The signed-in user info. + * var user = result.user; + * }).catch(function(error) { + * // Handle Errors here. + * var errorCode = error.code; + * var errorMessage = error.message; + * // The email of the user's account used. + * var email = error.email; + * // The firebase.auth.AuthCredential type that was used. + * var credential = error.credential; + * if (errorCode === 'auth/account-exists-with-different-credential') { + * alert('You have signed up with a different provider for that email.'); + * // Handle linking here if your app allows it. + * } else { + * console.error(error); + * } + * }); + * + * @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state + * changes. * @constructor * @implements {firebase.auth.AuthProvider} */ @@ -893,6 +1091,12 @@ firebase.auth.GithubAuthProvider = function() {}; firebase.auth.GithubAuthProvider.PROVIDER_ID; /** + * @example + * var cred = firebase.auth.FacebookAuthProvider.credential( + * // `event` from the Facebook auth.authResponseChange callback. + * event.authResponse.accessToken + * ); + * * @param {string} token Github access token. * @return {!firebase.auth.AuthCredential} The auth provider credential. */ @@ -923,6 +1127,37 @@ firebase.auth.GithubAuthProvider.prototype.setCustomParameters = /** * Google auth provider. + * + * @example + * // Using a redirect. + * firebase.auth().getRedirectResult().then(function(result) { + * if (result.credential) { + * // This gives you a Google Access Token. + * var token = result.credential.accessToken; + * } + * var user = result.user; + * }); + * + * // Start a sign in process for an unauthenticated user. + * var provider = new firebase.auth.GoogleAuthProvider(); + * provider.addScope('profile'); + * provider.addScope('email'); + * firebase.auth().signInWithRedirect(provider); + * + * @example + * // Using a popup. + * var provider = new firebase.auth.GoogleAuthProvider(); + * provider.addScope('profile'); + * provider.addScope('email'); + * firebase.auth().signInWithPopup(provider).then(function(result) { + * // This gives you a Google Access Token. + * var token = result.credential.accessToken; + * // The signed-in user info. + * var user = result.user; + * }); + * + * @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state + * changes. * @constructor * @implements {firebase.auth.AuthProvider} */ @@ -934,6 +1169,13 @@ firebase.auth.GoogleAuthProvider.PROVIDER_ID; /** * Creates a credential for Google. At least one of ID token and access token * is required. + * + * @example + * // `googleUser` from the onsuccess Google Sign In callback. + * var credential = firebase.auth.GoogleAuthProvider.credential( + googleUser.getAuthResponse().id_token); + * firebase.auth().signInWithCredential(credential) + * * @param {?string=} idToken Google ID token. * @param {?string=} accessToken Google access token. * @return {!firebase.auth.AuthCredential} The auth provider credential. @@ -954,7 +1196,7 @@ firebase.auth.GoogleAuthProvider.prototype.addScope = function(scope) {}; * Valid parameters include 'hd', 'hl', 'include_granted_scopes', 'login_hint' * and 'prompt'. * For a detailed list, check the - * {@link https://developers.google.com/identity/protocols/OpenIDConnect#authenticationuriparameters Google} + * {@link https://goo.gl/Xo01Jm Google} * documentation. * Reserved required OAuth 2.0 parameters such as 'client_id', 'redirect_uri', * 'scope', 'response_type' and 'state' are not allowed and will be ignored. @@ -967,6 +1209,35 @@ firebase.auth.GoogleAuthProvider.prototype.setCustomParameters = /** * Twitter auth provider. + * + * @example + * // Using a redirect. + * firebase.auth().getRedirectResult().then(function(result) { + * if (result.credential) { + * // For accessing the Twitter API. + * var token = result.credential.accessToken; + * var secret = result.credential.secret; + * } + * var user = result.user; + * }); + * + * // Start a sign in process for an unauthenticated user. + * var provider = new firebase.auth.TwitterAuthProvider(); + * firebase.auth().signInWithRedirect(provider); + * + * @example + * // Using a popup. + * var provider = new firebase.auth.TwitterAuthProvider(); + * firebase.auth().signInWithPopup(provider).then(function(result) { + * // For accessing the Twitter API. + * var token = result.credential.accessToken; + * var secret = result.credential.secret; + * // The signed-in user info. + * var user = result.user; + * }); + * + * @see {@link firebase.auth.Auth#onAuthStateChanged} to receive sign in state + * changes. * @constructor * @implements {firebase.auth.AuthProvider} */ @@ -1000,6 +1271,10 @@ firebase.auth.TwitterAuthProvider.prototype.setCustomParameters = /** * Email and password auth provider implementation. + * + * To authenticate: {@link firebase.auth.Auth#createUserWithEmailAndPassword} + * and {@link firebase.auth.Auth#signInWithEmailAndPassword}. + * * @constructor * @implements {firebase.auth.AuthProvider} */ @@ -1009,6 +1284,12 @@ firebase.auth.EmailAuthProvider = function() {}; firebase.auth.EmailAuthProvider.PROVIDER_ID; /** + * @example + * var cred = firebase.auth.EmailAuthProvider.credential( + * email, + * password + * ); + * * @param {string} email Email address. * @param {string} password User account password. * @return {!firebase.auth.AuthCredential} The auth provider credential. diff --git a/lib/firebase/firebase-auth.js b/lib/firebase/firebase-auth.js index 8febb29a..d43018c9 100644 --- a/lib/firebase/firebase-auth.js +++ b/lib/firebase/firebase-auth.js @@ -1,226 +1,236 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ -(function(){var h,aa=aa||{},l=this,ba=function(){},ca=function(){throw Error("unimplemented abstract method");},m=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!= -typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},da=function(a){return null===a},ea=function(a){return"array"==m(a)},fa=function(a){var b=m(a);return"array"==b||"object"==b&&"number"==typeof a.length},n=function(a){return"string"==typeof a},ga=function(a){return"number"==typeof a},p=function(a){return"function"==m(a)},ha=function(a){var b=typeof a; -return"object"==b&&null!=a||"function"==b},ia=function(a,b,c){return a.call.apply(a.bind,arguments)},ja=function(a,b,c){if(!a)throw Error();if(2/g,ra=/"/g,sa=/'/g,ta=/\x00/g,va=/[\x00&<>"']/,v=function(a,b){return-1!=a.indexOf(b)},wa=function(a,b){return ab?1:0};var xa=function(a,b){b.unshift(a);u.call(this,ma.apply(null,b));b.shift()};r(xa,u);xa.prototype.name="AssertionError"; -var ya=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new xa(""+e,f||[]);},w=function(a,b,c){a||ya("",null,b,Array.prototype.slice.call(arguments,2))},za=function(a,b){throw new xa("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},Aa=function(a,b,c){ga(a)||ya("Expected number but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2));return a},Ba=function(a,b,c){n(a)||ya("Expected string but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments, -2))},Ca=function(a,b,c){p(a)||ya("Expected function but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2))};var Da=Array.prototype.indexOf?function(a,b,c){w(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(n(a))return n(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:n(a)?a.charAt(b):a[b]},Ka=function(a,b){return 0<=Da(a,b)},Ma=function(a,b){b=Da(a,b);var c;(c=0<=b)&&La(a,b);return c},La=function(a,b){w(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length},Na=function(a,b){var c=0;Fa(a,function(d,e){b.call(void 0,d,e,a)&&La(a,e)&&c++})},Oa=function(a){return Array.prototype.concat.apply(Array.prototype, -arguments)},Pa=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)},Qa=function(a){var b=a.length;if(0parseFloat(mb)){lb=String(ob);break a}}lb=mb} -var pb=lb,db={},z=function(a){return eb(a,function(){for(var b=0,c=na(String(pb)).split("."),d=na(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f>4);64!=g&&(b(f<<4&240|g>>2),64!=k&&b(g<<6&192|k))}},wb=function(){if(!sb){sb={};tb={};for(var a=0;65>a;a++)sb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a), -tb[sb[a]]=a,62<=a&&(tb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a)]=a)}};var xb=!y||9<=Number(qb),yb=y&&!z("9");!jb||z("528");ib&&z("1.9b")||y&&z("8")||fb&&z("9.5")||jb&&z("528");ib&&!z("8")||y&&z("9");var zb=function(){this.Ba=this.Ba;this.Wb=this.Wb};zb.prototype.Ba=!1;zb.prototype.isDisposed=function(){return this.Ba};zb.prototype.Ra=function(){if(this.Wb)for(;this.Wb.length;)this.Wb.shift()()};var Ab=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.Ya=!1;this.Bd=!0};Ab.prototype.preventDefault=function(){this.defaultPrevented=!0;this.Bd=!1};var Bb=function(a,b){Ab.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.ob=this.state=null;a&&this.init(a,b)};r(Bb,Ab); -Bb.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;if(b=a.relatedTarget){if(ib){var e;a:{try{cb(b.nodeName);e=!0;break a}catch(f){}e=!1}e||(b=null)}}else"mouseover"==c?b=a.fromElement:"mouseout"==c&&(b=a.toElement);this.relatedTarget=b;null===d?(this.offsetX=jb||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=jb||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX: -a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.state=a.state;this.ob=a;a.defaultPrevented&& -this.preventDefault()};Bb.prototype.preventDefault=function(){Bb.Vc.preventDefault.call(this);var a=this.ob;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,yb)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};Bb.prototype.le=function(){return this.ob};var Cb="closure_listenable_"+(1E6*Math.random()|0),Db=0;var Eb=function(a,b,c,d,e){this.listener=a;this.ac=null;this.src=b;this.type=c;this.Gb=!!d;this.Nb=e;this.key=++Db;this.cb=this.Fb=!1},Fb=function(a){a.cb=!0;a.listener=null;a.ac=null;a.src=null;a.Nb=null};var Gb=function(a){this.src=a;this.A={};this.Cb=0};Gb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.A[f];a||(a=this.A[f]=[],this.Cb++);var g=Hb(a,b,d,e);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.currentTarget;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;!b.Ya&&0<=e;e--){b.currentTarget=d[e];var f=Yb(d[e],a,!0,b),c=c&&f}for(e=0;!b.Ya&&e>>0),Nb=function(a){w(a,"Listener can not be null.");if(p(a))return a;w(a.handleEvent,"An object listener must have handleEvent method.");a[Zb]||(a[Zb]=function(b){return a.handleEvent(b)});return a[Zb]};var $b=/^[+a-zA-Z0-9_.!#$%&'*\/=?^`{|}~-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,63}$/;var bc=function(){this.kc="";this.Td=ac};bc.prototype.Qb=!0;bc.prototype.Lb=function(){return this.kc};bc.prototype.toString=function(){return"Const{"+this.kc+"}"};var cc=function(a){if(a instanceof bc&&a.constructor===bc&&a.Td===ac)return a.kc;za("expected object of type Const, got '"+a+"'");return"type_error:Const"},ac={},dc=function(a){var b=new bc;b.kc=a;return b};dc("");var fc=function(){this.la="";this.Sd=ec};fc.prototype.Qb=!0;fc.prototype.Lb=function(){return this.la};fc.prototype.toString=function(){return"SafeUrl{"+this.la+"}"}; -var gc=function(a){if(a instanceof fc&&a.constructor===fc&&a.Sd===ec)return a.la;za("expected object of type SafeUrl, got '"+a+"' of type "+m(a));return"type_error:SafeUrl"},hc=/^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i,jc=function(a){if(a instanceof fc)return a;a=a.Qb?a.Lb():String(a);hc.test(a)||(a="about:invalid#zClosurez");return ic(a)},ec={},ic=function(a){var b=new fc;b.la=a;return b};ic("about:blank");var kc=function(a){return/^\s*$/.test(a)?!1:/^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,""))},lc=function(a){a=String(a);if(kc(a))try{return eval("("+a+")")}catch(b){}throw Error("Invalid JSON string: "+a);},oc=function(a){var b=[];mc(new nc,a,b);return b.join("")},nc=function(){this.ec=void 0}, -mc=function(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(ea(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;fa){var b=Ac[a];if(b)return b}b=new A([a|0],0>a?-1:0);-128<=a&&128>a&&(Ac[a]=b);return b},D=function(a){if(isNaN(a)||!isFinite(a))return B;if(0>a)return C(D(-a));for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=4294967296;return new A(b,0)},Cc=function(a,b){if(0==a.length)throw Error("number format error: empty string");b=b||10;if(2>b||36f?(f=D(Math.pow(b,f)),d=d.multiply(f).add(D(g))):(d=d.multiply(c),d=d.add(D(g)))}return d},B=Bc(0),Dc=Bc(1),Ec=Bc(16777216),Fc=function(a){if(-1==a.g)return-Fc(C(a));for(var b=0,c=1,d=0;da||36>>0).toString(a),c=e;if(Hc(c))return f+d;for(;6>f.length;)f="0"+f;d=""+f+d}}; -var E=function(a,b){return 0>b?0:b>>16)+(E(this,e)>>>16)+(E(a,e)>>>16),d=g>>>16,f=f&65535,g=g&65535;c[e]=g<<16|f}return new A(c,c[c.length-1]&-2147483648?-1:0)};var Jc=function(a,b){return a.add(C(b))}; -A.prototype.multiply=function(a){if(Hc(this)||Hc(a))return B;if(-1==this.g)return-1==a.g?C(this).multiply(C(a)):C(C(this).multiply(a));if(-1==a.g)return C(this.multiply(C(a)));if(0>this.compare(Ec)&&0>a.compare(Ec))return D(Fc(this)*Fc(a));for(var b=this.h.length+a.h.length,c=[],d=0;d<2*b;d++)c[d]=0;for(d=0;d>>16,g=E(this,d)&65535,k=E(a,e)>>>16,t=E(a,e)&65535;c[2*d+2*e]+=g*t;Kc(c,2*d+2*e);c[2*d+2*e+1]+=f*t;Kc(c,2*d+2*e+1);c[2*d+2*e+ -1]+=g*k;Kc(c,2*d+2*e+1);c[2*d+2*e+2]+=f*k;Kc(c,2*d+2*e+2)}for(d=0;d>>16,a[b]&=65535,b++},Ic=function(a,b){if(Hc(b))throw Error("division by zero");if(Hc(a))return B;if(-1==a.g)return-1==b.g?Ic(C(a),C(b)):C(Ic(C(a),b));if(-1==b.g)return C(Ic(a,C(b)));if(30=b.compare(a);)c=c.shiftLeft(1),b=b.shiftLeft(1);var d=Lc(c,1),e=Lc(b,1),f;b=Lc(b,2);for(c=Lc(c,2);!Hc(b);)f=e.add(b),0>=f.compare(a)&&(d=d.add(c), -e=f),b=Lc(b,1),c=Lc(c,1);return d}for(c=B;0<=a.compare(b);){d=Math.max(1,Math.floor(Fc(a)/Fc(b)));e=Math.ceil(Math.log(d)/Math.LN2);e=48>=e?1:Math.pow(2,e-48);f=D(d);for(var g=f.multiply(b);-1==g.g||0>5;a%=32;for(var c=this.h.length+b+(0>>32-a:E(this,e-b);return new A(d,this.g)};var Lc=function(a,b){var c=b>>5;b%=32;for(var d=a.h.length-c,e=[],f=0;f>>b|E(a,f+c+1)<<32-b:E(a,f+c);return new A(e,a.g)};var Nc=function(a,b){this.sb=a;this.pa=b};Nc.prototype.Ib=function(a){return this.pa==a.pa&&this.sb.Ib(Xa(a.sb))};Nc.prototype.toString=ca; -var Qc=function(a){try{var b;if(b=0==a.lastIndexOf("[",0)){var c=a.length-1;b=0<=c&&a.indexOf("]",c)==c}return b?new Oc(a.substring(1,a.length-1)):new Pc(a)}catch(d){return null}},Pc=function(a){var b=B;if(a instanceof A){if(0!=a.g||0>a.compare(B)||0e||255>>=8;return this.Ea=b.join(".")}; -var Oc=function(a){var b=B;if(a instanceof A){if(0!=a.g||0>a.compare(B)||0>>16&65535).toString(16));d.push((a&65535).toString(16));La(c,c.length-1);Ra(c,d);a=c.join(":")}d=a.split("::");if(2e)c=[];else{for(var f=[],g=0;ge.compare(B)||0>>16).toString(16));a.push(d.toString(16))}for(var c=b=-1,e=d=0,f=0;fd&&(d=e,b=c)):(c=-1,e=0);0/g,qa=/"/g,ra=/'/g,sa=/\x00/g,ta=/[\x00&<>"']/,v=function(a,b){return-1!=a.indexOf(b)},ua=function(a,b){return ab?1:0};var va=function(a,b){b.unshift(a);u.call(this,la.apply(null,b));b.shift()};t(va,u);va.prototype.name="AssertionError"; +var wa=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new va(""+e,f||[]);},w=function(a,b,c){a||wa("",null,b,Array.prototype.slice.call(arguments,2))},xa=function(a,b){throw new va("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},ya=function(a,b,c){fa(a)||wa("Expected number but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2));return a},za=function(a,b,c){p(a)||wa("Expected string but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments, +2))},Aa=function(a,b,c){q(a)||wa("Expected function but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2))};var Ba=Array.prototype.indexOf?function(a,b,c){w(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(p(a))return p(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:p(a)?a.charAt(b):a[b]},Ia=function(a,b){return 0<=Ba(a,b)},Ka=function(a,b){b=Ba(a,b);var c;(c=0<=b)&&Ja(a,b);return c},Ja=function(a,b){w(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length},La=function(a,b){var c=0;Da(a,function(d,e){b.call(void 0,d,e,a)&&Ja(a,e)&&c++})},Ma=function(a){return Array.prototype.concat.apply(Array.prototype, +arguments)},Na=function(a){var b=a.length;if(0parseFloat(jb)){ib=String(lb);break a}}ib=jb} +var mb=ib,ab={},z=function(a){return bb(a,function(){for(var b=0,c=ma(String(mb)).split("."),d=ma(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f>4);64!=g&&(b(f<<4&240|g>>2),64!=k&&b(g<<6&192|k))}},ub=function(){if(!qb){qb={};rb={};for(var a=0;65>a;a++)qb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a), +rb[qb[a]]=a,62<=a&&(rb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a)]=a)}};var vb=function(){this.ya=-1};var yb=function(a,b){this.ya=64;this.Rb=l.Uint8Array?new Uint8Array(this.ya):Array(this.ya);this.uc=this.Ya=0;this.h=[];this.Te=a;this.Dd=b;this.uf=l.Int32Array?new Int32Array(64):Array(64);void 0!==wb||(wb=l.Int32Array?new Int32Array(xb):xb);this.reset()},wb;t(yb,vb);for(var zb=[],Ab=0;63>Ab;Ab++)zb[Ab]=0;var Bb=Ma(128,zb);yb.prototype.reset=function(){this.uc=this.Ya=0;this.h=l.Int32Array?new Int32Array(this.Dd):Na(this.Dd)}; +var Cb=function(a){var b=a.Rb;w(b.length==a.ya);for(var c=a.uf,d=0,e=0;eb;b++){var e=c[b-15]|0,d=c[b-2]|0,f=(c[b-16]|0)+((e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3)|0,g=(c[b-7]|0)+((d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10)|0;c[b]=f+g|0}for(var d=a.h[0]|0,e=a.h[1]|0,k=a.h[2]|0,n=a.h[3]|0,A=a.h[4]|0,Wa=a.h[5]|0,Gb=a.h[6]|0,f=a.h[7]|0,b=0;64>b;b++)var dh=((d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10))+(d&e^d&k^e&k)|0,g=A&Wa^~A&Gb,f=f+((A>>>6| +A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))|0,g=g+(wb[b]|0)|0,g=f+(g+(c[b]|0)|0)|0,f=Gb,Gb=Wa,Wa=A,A=n+g|0,n=k,k=e,e=d,d=g+dh|0;a.h[0]=a.h[0]+d|0;a.h[1]=a.h[1]+e|0;a.h[2]=a.h[2]+k|0;a.h[3]=a.h[3]+n|0;a.h[4]=a.h[4]+A|0;a.h[5]=a.h[5]+Wa|0;a.h[6]=a.h[6]+Gb|0;a.h[7]=a.h[7]+f|0}; +yb.prototype.update=function(a,b){void 0===b&&(b=a.length);var c=0,d=this.Ya;if(p(a))for(;c=e&&e==(e|0)))throw Error("message must be a byte array");this.Rb[d++]=e;d==this.ya&&(Cb(this),d=0)}else throw Error("message must be string or array");this.Ya=d;this.uc+=b}; +yb.prototype.digest=function(){var a=[],b=8*this.uc;56>this.Ya?this.update(Bb,56-this.Ya):this.update(Bb,this.ya-(this.Ya-56));for(var c=63;56<=c;c--)this.Rb[c]=b&255,b/=256;Cb(this);for(c=b=0;c>d&255;return a}; +var xb=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804, +4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var Eb=function(){yb.call(this,8,Db)};t(Eb,yb);var Db=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];var Fb=!y||9<=Number(nb),Hb=y&&!z("9");!gb||z("528");fb&&z("1.9b")||y&&z("8")||cb&&z("9.5")||gb&&z("528");fb&&!z("8")||y&&z("9");var Ib=function(){this.Aa=this.Aa;this.hc=this.hc};Ib.prototype.Aa=!1;Ib.prototype.isDisposed=function(){return this.Aa};Ib.prototype.Ta=function(){if(this.hc)for(;this.hc.length;)this.hc.shift()()};var Jb=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.bb=!1;this.Od=!0};Jb.prototype.preventDefault=function(){this.defaultPrevented=!0;this.Od=!1};var Kb=function(a,b){Jb.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.key="";this.charCode=this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.Ua=this.state=null;a&&this.init(a,b)};t(Kb,Jb); +Kb.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;if(b=a.relatedTarget){if(fb){var e;a:{try{$a(b.nodeName);e=!0;break a}catch(f){}e=!1}e||(b=null)}}else"mouseover"==c?b=a.fromElement:"mouseout"==c&&(b=a.toElement);this.relatedTarget=b;null===d?(this.offsetX=gb||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=gb||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX: +a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.key=a.key||"";this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.state=a.state;this.Ua= +a;a.defaultPrevented&&this.preventDefault()};Kb.prototype.preventDefault=function(){Kb.jd.preventDefault.call(this);var a=this.Ua;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,Hb)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};Kb.prototype.xe=function(){return this.Ua};var Lb="closure_listenable_"+(1E6*Math.random()|0),Mb=0;var Nb=function(a,b,c,d,e){this.listener=a;this.lc=null;this.src=b;this.type=c;this.capture=!!d;this.Zb=e;this.key=++Mb;this.hb=this.Qb=!1},Ob=function(a){a.hb=!0;a.listener=null;a.lc=null;a.src=null;a.Zb=null};var Pb=function(a){this.src=a;this.D={};this.Mb=0};Pb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.D[f];a||(a=this.D[f]=[],this.Mb++);var g=Qb(a,b,d,e);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.currentTarget;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;!b.bb&&0<=e;e--){b.currentTarget=d[e];var f=gc(d[e],a,!0,b),c=c&&f}for(e=0;!b.bb&&e>>0),Wb=function(a){w(a,"Listener can not be null.");if(q(a))return a;w(a.handleEvent,"An object listener must have handleEvent method.");a[hc]||(a[hc]=function(b){return a.handleEvent(b)});return a[hc]};var ic=/^[+a-zA-Z0-9_.!#$%&'*\/=?^`{|}~-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,63}$/;var kc=function(){this.rc="";this.ee=jc};kc.prototype.cc=!0;kc.prototype.Xb=function(){return this.rc};kc.prototype.toString=function(){return"Const{"+this.rc+"}"};var lc=function(a){if(a instanceof kc&&a.constructor===kc&&a.ee===jc)return a.rc;xa("expected object of type Const, got '"+a+"'");return"type_error:Const"},jc={},mc=function(a){var b=new kc;b.rc=a;return b};mc("");var oc=function(){this.kc="";this.fe=nc};oc.prototype.cc=!0;oc.prototype.Xb=function(){return this.kc};oc.prototype.toString=function(){return"TrustedResourceUrl{"+this.kc+"}"};var nc={};var qc=function(){this.ma="";this.de=pc};qc.prototype.cc=!0;qc.prototype.Xb=function(){return this.ma};qc.prototype.toString=function(){return"SafeUrl{"+this.ma+"}"}; +var rc=function(a){if(a instanceof qc&&a.constructor===qc&&a.de===pc)return a.ma;xa("expected object of type SafeUrl, got '"+a+"' of type "+m(a));return"type_error:SafeUrl"},sc=/^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i,uc=function(a){if(a instanceof qc)return a;a=a.cc?a.Xb():String(a);sc.test(a)||(a="about:invalid#zClosurez");return tc(a)},pc={},tc=function(a){var b=new qc;b.ma=a;return b};tc("about:blank");var xc=function(a){var b=[];vc(new wc,a,b);return b.join("")},wc=function(){this.nc=void 0},vc=function(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(da(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;f=b.uc&&b.cancel())}this.ud?this.ud.call(this.fd,this):this.Tc=!0;this.Ta||Ld(this,new Md)}};Kd.prototype.dd=function(a,b){this.tc=!1;Nd(this,a,b)}; -var Nd=function(a,b,c){a.Ta=!0;a.ma=c;a.qb=!b;Od(a)},Qd=function(a){if(a.Ta){if(!a.Tc)throw new Pd;a.Tc=!1}};Kd.prototype.callback=function(a){Qd(this);Rd(a);Nd(this,!0,a)}; -var Ld=function(a,b){Qd(a);Rd(b);Nd(a,!1,b)},Rd=function(a){w(!(a instanceof Kd),"An execution sequence may not be initiated with a blocking Deferred.")},Vd=function(a){var b=Sd("https://apis.google.com/js/client.js?onload="+Td);Ud(b,null,a,void 0)},Ud=function(a,b,c,d){w(!a.Yc,"Blocking Deferreds can not be re-used");a.gc.push([b,c,d]);a.Ta&&Od(a)};Kd.prototype.then=function(a,b,c){var d,e,f=new F(function(a,b){d=a;e=b});Ud(this,d,function(a){a instanceof Md?f.cancel():e(a)});return f.then(a,b,c)}; -pd(Kd); -var Wd=function(a){return Ha(a.gc,function(a){return p(a[1])})},Od=function(a){if(a.nc&&a.Ta&&Wd(a)){var b=a.nc,c=Xd[b];c&&(l.clearTimeout(c.rb),delete Xd[b]);a.nc=0}a.s&&(a.s.uc--,delete a.s);for(var b=a.ma,d=c=!1;a.gc.length&&!a.tc;){var e=a.gc.shift(),f=e[0],g=e[1],e=e[2];if(f=a.qb?g:f)try{var k=f.call(e||a.fd,b);void 0!==k&&(a.qb=a.qb&&(k==b||k instanceof Error),a.ma=b=k);if(qd(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.tc=!0}catch(t){b=t,a.qb=!0,Wd(a)||(c=!0)}}a.ma=b;d&& -(k=q(a.dd,a,!0),d=q(a.dd,a,!1),b instanceof Kd?(Ud(b,k,d),b.Yc=!0):b.then(k,d));c&&(b=new Yd(b),Xd[b.rb]=b,a.nc=b.rb)},Pd=function(){u.call(this)};r(Pd,u);Pd.prototype.message="Deferred has already fired";Pd.prototype.name="AlreadyCalledError";var Md=function(){u.call(this)};r(Md,u);Md.prototype.message="Deferred was canceled";Md.prototype.name="CanceledError";var Yd=function(a){this.rb=l.setTimeout(q(this.We,this),0);this.N=a}; -Yd.prototype.We=function(){w(Xd[this.rb],"Cannot throw an error that is not scheduled.");delete Xd[this.rb];throw this.N;};var Xd={};var Sd=function(a){var b=new Xc;b.Zb=a;return Zd(b)},Zd=function(a){var b={},c=b.document||document,d;a instanceof Xc&&a.constructor===Xc&&a.Ud===Wc?d=a.Zb:(za("expected object of type TrustedResourceUrl, got '"+a+"' of type "+m(a)),d="type_error:TrustedResourceUrl");var e=document.createElement("SCRIPT");a={Cd:e,Bb:void 0};var f=new Kd($d,a),g=null,k=null!=b.timeout?b.timeout:5E3;0++d,"infinite loop")}c=this.Xd;d=a.type||a;if(n(a))a=new Ab(a,c);else if(a instanceof Ab)a.target=a.target||c;else{var e=a;a=new Ab(d,c);Za(a,e)}var e=!0,f;if(b)for(var g=b.length-1;!a.Ya&&0<=g;g--)f=a.currentTarget=b[g],e=fe(f,d,!0,a)&&e;a.Ya||(f=a.currentTarget=c,e=fe(f,d,!0,a)&&e,a.Ya||(e=fe(f,d,!1,a)&&e));if(b)for(g=0;!a.Ya&&g2*this.i&&je(this),!0):!1}; -var je=function(a){if(a.i!=a.v.length){for(var b=0,c=0;b=d.v.length)throw ge;var e=d.v[b++];return a?e:d.ca[e]};return e}; -var ke=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var me=function(a){if(a.X&&"function"==typeof a.X)return a.X();if(n(a))return a.split("");if(fa(a)){for(var b=[],c=a.length,d=0;d=we(this).value)for(p(b)&&(b=b()),a=new pe(a,String(b),this.He),c&&(a.hd=c),c="log:"+a.Ge,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;){b=c;var d=a;if(b.nd)for(var e=0,f;f=b.nd[e];e++)f(d);c=c.getParent()}}; -var xe={},ye=null,ze=function(a){ye||(ye=new re(""),xe[""]=ye,ye.Fd(ue));var b;if(!(b=xe[a])){b=new re(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=ze(a.substr(0,c));c.vc||(c.vc={});c.vc[d]=b;b.s=c;xe[a]=b}return b};var I=function(a,b){a&&a.log(ve,b,void 0)};var Ae=function(a,b,c){if(p(a))c&&(a=q(a,c));else if(a&&"function"==typeof a.handleEvent)a=q(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647b)throw Error("Bad port number "+b);a.Xa=b}else a.Xa=null},We=function(a,b,c){K(a);a.ta=c?Ye(b,!0):b},Xe=function(a,b,c){K(a);b instanceof L?(a.$=b,a.$.Sc(a.P)):(c||(b=Ze(b,df)),a.$=new L(b,0,a.P))},M=function(a,b,c){K(a);a.$.set(b,c)},ef=function(a,b){K(a);a.$.remove(b)},K=function(a){if(a.Ae)throw Error("Tried to modify a read-only Uri"); -};Se.prototype.Sc=function(a){this.P=a;this.$&&this.$.Sc(a);return this}; -var ff=function(a){return a instanceof Se?a.clone():new Se(a,void 0)},gf=function(a,b){var c=new Se(null,void 0);Te(c,"https");a&&Ue(c,a);b&&We(c,b);return c},Ye=function(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""},Ze=function(a,b,c){return n(a)?(a=encodeURI(a).replace(b,hf),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null},hf=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)},$e=/[#\/\?@]/g,bf=/[\#\?:]/g,af=/[\#\?]/g,df=/[\#\?@]/g, -cf=/#/g,L=function(a,b,c){this.i=this.j=null;this.M=a||null;this.P=!!c},jf=function(a){a.j||(a.j=new ie,a.i=0,a.M&&De(a.M,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))},lf=function(a){var b=ne(a);if("undefined"==typeof b)throw Error("Keys are undefined");var c=new L(null,0,void 0);a=me(a);for(var d=0;da?!1:!y||!qb||9")&&(d=d.replace(qa,">")),-1!=d.indexOf('"')&&(d=d.replace(ra,""")),-1!= -d.indexOf("'")&&(d=d.replace(sa,"'")),-1!=d.indexOf("\x00")&&(d=d.replace(ta,"�"))),d='',Ba(cc(a),"must provide justification"),w(!/^[\s\xa0]*$/.test(cc(a)),"must provide non-empty justification"),g.document.write($c((new Zc).ye(d))),g.document.close())):g=a.open(gc(b),c,g);if(g)try{g.focus()}catch(k){}return g},uf=function(a){return new F(function(b){var c=function(){Be(2E3).then(function(){if(!a||a.closed)b();else return c()})};return c()})}, -vf=function(){var a=null;return(new F(function(b){"complete"==l.document.readyState?b():(a=function(){b()},Tb(window,"load",a))})).l(function(b){Vb(window,"load",a);throw b;})},O=function(a){switch(a||l.navigator&&l.navigator.product||""){case "ReactNative":return"ReactNative";default:return"undefined"!==typeof l.process?"Node":"Browser"}},wf=function(){var a=O();return"ReactNative"===a||"Node"===a},pf=function(a){var b=a.toLowerCase();if(v(b,"opera/")||v(b,"opr/")||v(b,"opios/"))return"Opera";if(v(b, -"iemobile"))return"IEMobile";if(v(b,"msie")||v(b,"trident/"))return"IE";if(v(b,"edge/"))return"Edge";if(v(b,"firefox/"))return"Firefox";if(v(b,"silk/"))return"Silk";if(v(b,"blackberry"))return"Blackberry";if(v(b,"webos"))return"Webos";if(!v(b,"safari/")||v(b,"chrome/")||v(b,"crios/")||v(b,"android"))if(!v(b,"chrome/")&&!v(b,"crios/")||v(b,"edge/")){if(v(b,"android"))return"Android";if((a=a.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/))&&2==a.length)return a[1]}else return"Chrome";else return"Safari";return"Other"}, -xf=function(a){var b=O(void 0);return("Browser"===b?pf(N()):b)+"/JsCore/"+a},N=function(){return l.navigator&&l.navigator.userAgent||""},yf=function(a){a=a.split(".");for(var b=l,c=0;cb)throw Error("Short delay should be less than long delay!");this.Te=a;this.Fe=b;a=d||O();this.ze=rf(c||N())||"ReactNative"===a};Hf.prototype.get=function(){return this.ze?this.Fe:this.Te};var If;try{var Jf={};Object.defineProperty(Jf,"abcd",{configurable:!0,enumerable:!0,value:1});Object.defineProperty(Jf,"abcd",{configurable:!0,enumerable:!0,value:2});If=2==Jf.abcd}catch(a){If=!1} -var P=function(a,b,c){If?Object.defineProperty(a,b,{configurable:!0,enumerable:!0,value:c}):a[b]=c},Kf=function(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&P(a,c,b[c])},Lf=function(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},Mf=function(a,b){if(!b||!b.length)return!0;if(!a)return!1;for(var c=0;c Auth section -> Sign in method tab.",a);Q.call(this,b,c)};r(Uf,Q);var Vf=function(a){this.Ee=a.sub;la();this.Hb=a.email||null};var Wf=function(a,b,c,d){var e={};ha(c)?e=c:b&&n(c)&&n(d)?e={oauthToken:c,oauthTokenSecret:d}:!b&&n(c)&&(e={accessToken:c});if(b||!e.idToken&&!e.accessToken)if(b&&e.oauthToken&&e.oauthTokenSecret)P(this,"accessToken",e.oauthToken),P(this,"secret",e.oauthTokenSecret);else{if(b)throw new Q("argument-error","credential failed: expected 2 arguments (the OAuth access token and secret).");throw new Q("argument-error","credential failed: expected 1 argument (the OAuth access token).");}else e.idToken&&P(this, -"idToken",e.idToken),e.accessToken&&P(this,"accessToken",e.accessToken);P(this,"provider",a)};Wf.prototype.Kb=function(a){return Xf(a,Yf(this))};Wf.prototype.td=function(a,b){var c=Yf(this);c.idToken=b;return Zf(a,c)};var Yf=function(a){var b={};a.idToken&&(b.id_token=a.idToken);a.accessToken&&(b.access_token=a.accessToken);a.secret&&(b.oauth_token_secret=a.secret);b.providerId=a.provider;return{postBody:lf(b).toString(),requestUri:Af()?nf():"http://localhost"}}; -Wf.prototype.K=function(){var a={provider:this.provider};this.idToken&&(a.oauthIdToken=this.idToken);this.accessToken&&(a.oauthAccessToken=this.accessToken);this.secret&&(a.oauthTokenSecret=this.secret);return a}; -var $f=function(a,b,c){var d=!!b,e=c||[];b=function(){Kf(this,{providerId:a,isOAuthProvider:!0});this.Rc=[];this.ed={};"google.com"==a&&this.addScope("profile")};d||(b.prototype.addScope=function(a){Ka(this.Rc,a)||this.Rc.push(a)});b.prototype.setCustomParameters=function(a){this.ed=Xa(a)};b.prototype.me=function(){var a=Df(this.ed),b;for(b in a)a[b]=a[b].toString();a=Xa(a);for(b=0;bk||k>=Fh.length)throw new Q("internal-error","Argument validator received an unsupported number of arguments.");e=Fh[k]+" argument "+(e.name?'"'+e.name+'" ':"")+"must be "+e.fa+".";break a}e=null}}if(e)throw new Q("argument-error",d+" failed: "+e);return b.apply(this,a)};for(var e in b)a[e]=b[e];for(e in b.prototype)a.prototype[e]= -b.prototype[e];return a},Nh=function(a){a=a.split(".");return a[a.length-1]};var Oh=function(a,b,c,d){this.Ie=a;this.Ed=b;this.Oe=c;this.hb=d;this.R={};Dh||(Dh=new Ch);a=Dh;try{var e;mf()?(th||(th=new sh("firebaseLocalStorageDb","firebaseLocalStorage","fbase_key","value",1)),e=th):e=new a.gd.Z;this.Wa=e}catch(f){this.Wa=new mh,this.hb=!0}try{this.lc=new a.gd.Wc}catch(f){this.lc=new mh}this.Hd=q(this.Id,this);this.S={}},Ph,Qh=function(){Ph||(Ph=new Oh("firebase",":",!Ff(N())&&l.window&&l.window!=l.window.top?!0:!1,Bf()));return Ph};h=Oh.prototype; -h.O=function(a,b){return this.Ie+this.Ed+a.name+(b?this.Ed+b:"")};h.get=function(a,b){return(a.Z?this.Wa:this.lc).get(this.O(a,b))};h.remove=function(a,b){b=this.O(a,b);a.Z&&!this.hb&&(this.S[b]=null);return(a.Z?this.Wa:this.lc).remove(b)};h.set=function(a,b,c){var d=this.O(a,c),e=this,f=a.Z?this.Wa:this.lc;return f.set(d,b).then(function(){return f.get(d)}).then(function(b){a.Z&&!this.hb&&(e.S[d]=b)})}; -h.addListener=function(a,b,c){a=this.O(a,b);this.hb||(this.S[a]=l.localStorage.getItem(a));Va(this.R)&&this.Uc();this.R[a]||(this.R[a]=[]);this.R[a].push(c)};h.removeListener=function(a,b,c){a=this.O(a,b);this.R[a]&&(Na(this.R[a],function(a){return a==c}),0==this.R[a].length&&delete this.R[a]);Va(this.R)&&this.jc()};h.Uc=function(){this.Wa.Na(this.Hd);this.hb||Rh(this)}; -var Rh=function(a){Sh(a);a.Fc=setInterval(function(){for(var b in a.R){var c=l.localStorage.getItem(b);c!=a.S[b]&&(a.S[b]=c,c=new Bb({type:"storage",key:b,target:window,oldValue:a.S[b],newValue:c}),a.Id(c))}},1E3)},Sh=function(a){a.Fc&&(clearInterval(a.Fc),a.Fc=null)};Oh.prototype.jc=function(){this.Wa.bb(this.Hd);this.hb||Sh(this)}; -Oh.prototype.Id=function(a){if(a&&a.le){var b=a.ob.key;if(this.Oe){var c=l.localStorage.getItem(b);a=a.ob.newValue;a!=c&&(a?l.localStorage.setItem(b,a):a||l.localStorage.removeItem(b))}this.S[b]=l.localStorage.getItem(b);this.ad(b)}else Ea(a,q(this.ad,this))};Oh.prototype.ad=function(a){this.R[a]&&Ea(this.R[a],function(a){a()})};var Th=function(a){this.D=a;this.B=Qh()},Uh={name:"pendingRedirect",Z:!1},Vh=function(a){return a.B.set(Uh,"pending",a.D)},Wh=function(a){return a.B.remove(Uh,a.D)},Xh=function(a){return a.B.get(Uh,a.D).then(function(a){return"pending"==a})};var $h=function(a,b,c){var d=this,e=(this.Aa=firebase.SDK_VERSION||null)?xf(this.Aa):null;this.f=new S(b,null,e);this.sa=null;this.C=a;this.m=b;this.F=c;this.Ab=[];this.Sb=!1;this.Xc=q(this.oe,this);this.Za=new Yh(this);this.yd=new Zh(this);this.Kc=new Th(this.m+":"+this.F);this.jb={};this.jb.unknown=this.Za;this.jb.signInViaRedirect=this.Za;this.jb.linkViaRedirect=this.Za;this.jb.signInViaPopup=this.yd;this.jb.linkViaPopup=this.yd;this.dc=this.fb=null;this.Xb=new F(function(a,b){d.fb=a;d.dc=b})}; -$h.prototype.reset=function(){var a=this;this.sa=null;this.Xb.cancel();this.Sb=!1;this.dc=this.fb=null;this.Pb&&kh(this.Pb,this.Xc);this.Xb=new F(function(b,c){a.fb=b;a.dc=c})}; -var ai=function(a){var b=nf();return Cg(a).then(function(a){a:{for(var c=ff(b).ia,e=0;ethis.Sa-3E4?this.V?qi(this,{grant_type:"refresh_token",refresh_token:this.V}):G(null):G({accessToken:this.za,expirationTime:this.Sa,refreshToken:this.V})};var si=function(a,b,c,d,e){Kf(this,{uid:a,displayName:d||null,photoURL:e||null,email:c||null,providerId:b})},ti=function(a,b){Ab.call(this,a);for(var c in b)this[c]=b[c]};r(ti,Ab); -var W=function(a,b,c){this.Y=[];this.m=a.apiKey;this.F=a.appName;this.C=a.authDomain||null;a=firebase.SDK_VERSION?xf(firebase.SDK_VERSION):null;this.f=new S(this.m,null,a);this.ea=new ni(this.f);ui(this,b.idToken);pi(this.ea,b);P(this,"refreshToken",this.ea.V);vi(this,c||{});de.call(this);this.Yb=!1;this.C&&Af()&&(this.o=ki(this.C,this.m,this.F));this.ic=[];this.sc=G()};r(W,de); -W.prototype.ua=function(a,b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.sc=this.sc.then(function(){return a.apply(d,c)},function(){return a.apply(d,c)})}; -var ui=function(a,b){a.rd=b;P(a,"_lat",b)},wi=function(a,b){Na(a.ic,function(a){return a==b})},xi=function(a){for(var b=[],c=0;c=b.Dc&&b.cancel())}this.Id?this.Id.call(this.sd,this):this.fd=!0;this.Wa||wd(this,new xd)}};vd.prototype.qd=function(a,b){this.Cc=!1;yd(this,a,b)}; +var yd=function(a,b,c){a.Wa=!0;a.na=c;a.rb=!b;zd(a)},Bd=function(a){if(a.Wa){if(!a.fd)throw new Ad;a.fd=!1}};vd.prototype.callback=function(a){Bd(this);Cd(a);yd(this,!0,a)}; +var wd=function(a,b){Bd(a);Cd(b);yd(a,!1,b)},Cd=function(a){w(!(a instanceof vd),"An execution sequence may not be initiated with a blocking Deferred.")},Gd=function(a){var b=Dd("https://apis.google.com/js/client.js?onload="+Ed);Fd(b,null,a,void 0)},Fd=function(a,b,c,d){w(!a.ld,"Blocking Deferreds can not be re-used");a.oc.push([b,c,d]);a.Wa&&zd(a)};vd.prototype.then=function(a,b,c){var d,e,f=new B(function(a,b){d=a;e=b});Fd(this,d,function(a){a instanceof xd?f.cancel():e(a)});return f.then(a,b,c)}; +ad(vd); +var Hd=function(a){return Fa(a.oc,function(a){return q(a[1])})},zd=function(a){if(a.vc&&a.Wa&&Hd(a)){var b=a.vc,c=Id[b];c&&(l.clearTimeout(c.sb),delete Id[b]);a.vc=0}a.s&&(a.s.Dc--,delete a.s);for(var b=a.na,d=c=!1;a.oc.length&&!a.Cc;){var e=a.oc.shift(),f=e[0],g=e[1],e=e[2];if(f=a.rb?g:f)try{var k=f.call(e||a.sd,b);void 0!==k&&(a.rb=a.rb&&(k==b||k instanceof Error),a.na=b=k);if(bd(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.Cc=!0}catch(n){b=n,a.rb=!0,Hd(a)||(c=!0)}}a.na=b;d&& +(k=r(a.qd,a,!0),d=r(a.qd,a,!1),b instanceof vd?(Fd(b,k,d),b.ld=!0):b.then(k,d));c&&(b=new Jd(b),Id[b.sb]=b,a.vc=b.sb)},Ad=function(){u.call(this)};t(Ad,u);Ad.prototype.message="Deferred has already fired";Ad.prototype.name="AlreadyCalledError";var xd=function(){u.call(this)};t(xd,u);xd.prototype.message="Deferred was canceled";xd.prototype.name="CanceledError";var Jd=function(a){this.sb=l.setTimeout(r(this.lf,this),0);this.O=a}; +Jd.prototype.lf=function(){w(Id[this.sb],"Cannot throw an error that is not scheduled.");delete Id[this.sb];throw this.O;};var Id={};var Dd=function(a){var b=new oc;b.kc=a;return Kd(b)},Kd=function(a){var b={},c=b.document||document,d;a instanceof oc&&a.constructor===oc&&a.fe===nc?d=a.kc:(xa("expected object of type TrustedResourceUrl, got '"+a+"' of type "+m(a)),d="type_error:TrustedResourceUrl");var e=document.createElement("SCRIPT");a={Pd:e,Lb:void 0};var f=new vd(Ld,a),g=null,k=null!=b.timeout?b.timeout:5E3;0++d,"infinite loop")}c=this.he;d=a.type||a;if(p(a))a=new Jb(a,c);else if(a instanceof Jb)a.target=a.target||c;else{var e=a;a=new Jb(d,c);Va(a,e)}var e=!0,f;if(b)for(var g=b.length-1;!a.bb&&0<=g;g--)f=a.currentTarget=b[g],e=Rd(f,d,!0,a)&&e;a.bb||(f=a.currentTarget=c,e=Rd(f,d,!0,a)&&e,a.bb||(e=Rd(f,d,!1,a)&&e));if(b)for(g=0;!a.bb&&g2*this.o&&Vd(this),!0):!1};var Vd=function(a){if(a.o!=a.w.length){for(var b=0,c=0;b=d.w.length)throw Sd;var e=d.w[b++];return a?e:d.ba[e]};return e};var Wd=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var Xd=function(a){if(a.X&&"function"==typeof a.X)return a.X();if(p(a))return a.split("");if(ea(a)){for(var b=[],c=a.length,d=0;d=ge(this).value)for(q(b)&&(b=b()),a=new $d(a,String(b),this.Re),c&&(a.ud=c),c="log:"+a.Qe,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;){var d=c,e=a;if(d.Ad)for(var f=0;b=d.Ad[f];f++)b(e);c=c.getParent()}}; +var he={},ie=null,je=function(a){ie||(ie=new be(""),he[""]=ie,ie.Sd(ee));var b;if(!(b=he[a])){b=new be(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=je(a.substr(0,c));c.Ec||(c.Ec={});c.Ec[d]=b;b.s=c;he[a]=b}return b};var E=function(a,b){a&&a.log(fe,b,void 0)};var ke=function(a,b,c){if(q(a))c&&(a=r(a,c));else if(a&&"function"==typeof a.handleEvent)a=r(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647b)throw Error("Bad port number "+b);a.ab=b}else a.ab=null},Ge=function(a,b,c){G(a);a.sa=c?Ie(b,!0):b},He=function(a,b,c){G(a);b instanceof H?(a.V=b,a.V.ed(a.R)):(c||(b=Je(b,Oe)),a.V=new H(b,0,a.R))},I=function(a,b,c){G(a);a.V.set(b,c)},Pe=function(a,b){return a.V.get(b)},Qe=function(a,b){G(a);a.V.remove(b)},G=function(a){if(a.Ke)throw Error("Tried to modify a read-only Uri"); +};Ce.prototype.ed=function(a){this.R=a;this.V&&this.V.ed(a);return this}; +var Re=function(a){return a instanceof Ce?a.clone():new Ce(a,void 0)},Se=function(a,b){var c=new Ce(null,void 0);De(c,"https");a&&Ee(c,a);b&&Ge(c,b);return c},Ie=function(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""},Je=function(a,b,c){return p(a)?(a=encodeURI(a).replace(b,Te),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null},Te=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)},Ke=/[#\/\?@]/g,Me=/[\#\?:]/g,Le=/[\#\?]/g,Oe=/[\#\?@]/g, +Ne=/#/g,H=function(a,b,c){this.o=this.l=null;this.N=a||null;this.R=!!c},Ue=function(a){a.l||(a.l=new Ud,a.o=0,a.N&&ne(a.N,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))},We=function(a){var b=Yd(a);if("undefined"==typeof b)throw Error("Keys are undefined");var c=new H(null,0,void 0);a=Xd(a);for(var d=0;da?!1:!y||!nb||9")&&(d=d.replace(pa,">")),-1!=d.indexOf('"')&&(d=d.replace(qa,""")),-1!=d.indexOf("'")&&(d=d.replace(ra,"'")),-1!=d.indexOf("\x00")&&(d=d.replace(sa,"�"))),d='',za(lc(a),"must provide justification"),w(!/^[\s\xa0]*$/.test(lc(a)),"must provide non-empty justification"),g.document.write(Lc((new Kc).He(d))),g.document.close())):g=a.open(rc(b),c,g);if(g)try{g.focus()}catch(k){}return g}, +ff=function(a){return new B(function(b){var c=function(){le(2E3).then(function(){if(!a||a.closed)b();else return c()})};return c()})},gf=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,hf=function(){var a=null;return(new B(function(b){"complete"==l.document.readyState?b():(a=function(){b()},bc(window,"load",a))})).c(function(b){dc(window,"load",a);throw b;})},kf=function(){return jf(void 0)?hf().then(function(){return new B(function(a,b){var c=l.document,d=setTimeout(function(){b(Error("Cordova framework is not ready."))}, +1E3);c.addEventListener("deviceready",function(){clearTimeout(d);a()},!1)})}):D(Error("Cordova must run in an Android or iOS file scheme."))},jf=function(a){a=a||J();return!("file:"!==lf()||!a.toLowerCase().match(/iphone|ipad|ipod|android/))},mf=function(){var a=l.window;try{return!(!a||a==a.top)}catch(b){return!1}},K=function(){return firebase.INTERNAL.hasOwnProperty("reactNative")?"ReactNative":firebase.INTERNAL.hasOwnProperty("node")?"Node":"Browser"},nf=function(){var a=K();return"ReactNative"=== +a||"Node"===a},af=function(a){var b=a.toLowerCase();if(v(b,"opera/")||v(b,"opr/")||v(b,"opios/"))return"Opera";if(v(b,"iemobile"))return"IEMobile";if(v(b,"msie")||v(b,"trident/"))return"IE";if(v(b,"edge/"))return"Edge";if(v(b,"firefox/"))return"Firefox";if(v(b,"silk/"))return"Silk";if(v(b,"blackberry"))return"Blackberry";if(v(b,"webos"))return"Webos";if(!v(b,"safari/")||v(b,"chrome/")||v(b,"crios/")||v(b,"android"))if(!v(b,"chrome/")&&!v(b,"crios/")||v(b,"edge/")){if(v(b,"android"))return"Android"; +if((a=a.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/))&&2==a.length)return a[1]}else return"Chrome";else return"Safari";return"Other"},of=function(a){var b=K();return("Browser"===b?af(J()):b)+"/JsCore/"+a},J=function(){return l.navigator&&l.navigator.userAgent||""},L=function(a,b){a=a.split(".");b=b||l;for(var c=0;cb)throw Error("Short delay should be less than long delay!"); +this.hf=a;this.Pe=b;a=c||J();d=d||K();this.Je=cf(a)||"ReactNative"===d};zf.prototype.get=function(){return this.Je?this.Pe:this.hf};var Af;try{var Bf={};Object.defineProperty(Bf,"abcd",{configurable:!0,enumerable:!0,value:1});Object.defineProperty(Bf,"abcd",{configurable:!0,enumerable:!0,value:2});Af=2==Bf.abcd}catch(a){Af=!1} +var M=function(a,b,c){Af?Object.defineProperty(a,b,{configurable:!0,enumerable:!0,value:c}):a[b]=c},Cf=function(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&M(a,c,b[c])},Df=function(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},Ef=function(a,b){if(!b||!b.length)return!0;if(!a)return!1;for(var c=0;c Auth section -> Sign in method tab.",a);N.call(this,b,c)};t(Nf,N);var Of=function(a){this.Oe=a.sub;ka();this.Tb=a.email||null};var Pf=function(a,b){if(b.idToken||b.accessToken)b.idToken&&M(this,"idToken",b.idToken),b.accessToken&&M(this,"accessToken",b.accessToken);else if(b.oauthToken&&b.oauthTokenSecret)M(this,"accessToken",b.oauthToken),M(this,"secret",b.oauthTokenSecret);else throw new N("internal-error","failed to construct a credential");M(this,"provider",a)};Pf.prototype.Vb=function(a){return Qf(a,Rf(this))};Pf.prototype.Hd=function(a,b){var c=Rf(this);c.idToken=b;return Sf(a,c)}; +var Rf=function(a){var b={};a.idToken&&(b.id_token=a.idToken);a.accessToken&&(b.access_token=a.accessToken);a.secret&&(b.oauth_token_secret=a.secret);b.providerId=a.provider;return{postBody:We(b).toString(),requestUri:"http://localhost"}};Pf.prototype.C=function(){var a={provider:this.provider};this.idToken&&(a.oauthIdToken=this.idToken);this.accessToken&&(a.oauthAccessToken=this.accessToken);this.secret&&(a.oauthTokenSecret=this.secret);return a}; +var Tf=function(a,b){this.$e=b||[];Cf(this,{providerId:a,isOAuthProvider:!0});this.rd={}};Tf.prototype.setCustomParameters=function(a){this.rd=Ta(a);return this};var P=function(a){Tf.call(this,a,Hf);this.cd=[]};t(P,Tf);P.prototype.addScope=function(a){Ia(this.cd,a)||this.cd.push(a);return this};P.prototype.yd=function(){return Na(this.cd)}; +P.prototype.credential=function(a,b){if(!a&&!b)throw new N("argument-error","credential failed: must provide the ID token and/or the access token.");return new Pf(this.providerId,{idToken:a||null,accessToken:b||null})};var Uf=function(){P.call(this,"facebook.com")};t(Uf,P);M(Uf,"PROVIDER_ID","facebook.com");var Vf=function(a){if(!a)throw new N("argument-error","credential failed: expected 1 argument (the OAuth access token).");return(new Uf).credential(null,a)},Wf=function(){P.call(this,"github.com")}; +t(Wf,P);M(Wf,"PROVIDER_ID","github.com");var Xf=function(a){if(!a)throw new N("argument-error","credential failed: expected 1 argument (the OAuth access token).");return(new Wf).credential(null,a)},Yf=function(){P.call(this,"google.com");this.addScope("profile")};t(Yf,P);M(Yf,"PROVIDER_ID","google.com");var Zf=function(a,b){return(new Yf).credential(a,b)},$f=function(){Tf.call(this,"twitter.com",Gf)};t($f,Tf);M($f,"PROVIDER_ID","twitter.com"); +var ag=function(a,b){if(!a||!b)throw new N("argument-error","credential failed: expected 2 arguments (the OAuth access token and secret).");return new Pf("twitter.com",{oauthToken:a,oauthTokenSecret:b})},bg=function(a,b){this.Tb=a;this.Vc=b;M(this,"provider","password")};bg.prototype.Vb=function(a){return Q(a,cg,{email:this.Tb,password:this.Vc})};bg.prototype.Hd=function(a,b){return Q(a,dg,{idToken:b,email:this.Tb,password:this.Vc})};bg.prototype.C=function(){return{email:this.Tb,password:this.Vc}}; +var eg=function(){Cf(this,{providerId:"password",isOAuthProvider:!1})};Cf(eg,{PROVIDER_ID:"password"}); +var fg=function(a){var b=a&&a.providerId;if(!b||"password"===b)return null;var c=a&&a.oauthAccessToken,d=a&&a.oauthTokenSecret;a=a&&a.oauthIdToken;try{switch(b){case "google.com":return Zf(a,c);case "facebook.com":return Vf(c);case "github.com":return Xf(c);case "twitter.com":return ag(c,d);default:return(new P(b)).credential(a,c)}}catch(e){return null}},gg=function(a){if(!a.isOAuthProvider)throw new N("invalid-oauth-provider");};var hg=function(a,b,c,d){N.call(this,a,d);M(this,"email",b);M(this,"credential",c)};t(hg,N);hg.prototype.C=function(){var a={code:this.code,message:this.message,email:this.email},b=this.credential&&this.credential.C();b&&(Va(a,b),a.providerId=b.provider,delete a.provider);return a};hg.prototype.toJSON=function(){return this.C()};var ig=function(a){if(a.code){var b=a.code||"";0==b.indexOf("auth/")&&(b=b.substring(5));return a.email?new hg(b,a.email,fg(a),a.message):new N(b,a.message||void 0)}return null};var jg=function(a){this.wf=a};t(jg,Bc);jg.prototype.Sb=function(){return new this.wf};jg.prototype.Oc=function(){return{}}; +var R=function(a,b,c){var d;d="Node"==K();d=l.XMLHttpRequest||d&&firebase.INTERNAL.node&&firebase.INTERNAL.node.XMLHttpRequest;if(!d)throw new N("internal-error","The XMLHttpRequest compatibility library was not found.");this.j=a;a=b||{};this.df=a.secureTokenEndpoint||"https://securetoken.googleapis.com/v1/token";this.ef=a.secureTokenTimeout||kg;this.Qd=Ta(a.secureTokenHeaders||lg);this.te=a.firebaseEndpoint||"https://www.googleapis.com/identitytoolkit/v3/relyingparty/";this.ue=a.firebaseTimeout|| +mg;this.wd=Ta(a.firebaseHeaders||ng);c&&(this.wd["X-Client-Version"]=c,this.Qd["X-Client-Version"]=c);this.ke=new Gc;this.vf=new jg(d)},og,kg=new zf(3E4,6E4),lg={"Content-Type":"application/x-www-form-urlencoded"},mg=new zf(3E4,6E4),ng={"Content-Type":"application/json"},qg=function(a,b,c,d,e,f,g){yf()?(bf()?a=r(a.gf,a):(og||(og=new B(function(a,b){pg(a,b)})),a=r(a.ff,a)),a(b,c,d,e,f,g)):c&&c(null)}; +R.prototype.gf=function(a,b,c,d,e,f){var g="Node"==K(),k=nf()?g?new F(this.vf):new F:new F(this.ke),n;f&&(k.kb=Math.max(0,f),n=setTimeout(function(){k.dispatchEvent("timeout")},f));k.listen("complete",function(){n&&clearTimeout(n);var a=null;try{a=JSON.parse(Be(this))||null}catch(Wa){a=null}b&&b(a)});cc(k,"ready",function(){n&&clearTimeout(n);this.Aa||(this.Aa=!0,this.Ta())});cc(k,"timeout",function(){n&&clearTimeout(n);this.Aa||(this.Aa=!0,this.Ta());b&&b(null)});k.send(a,c,d,e)}; +var Ed="__fcb"+Math.floor(1E6*Math.random()).toString(),pg=function(a,b){((window.gapi||{}).client||{}).request?a():(l[Ed]=function(){((window.gapi||{}).client||{}).request?a():b(Error("CORS_UNSUPPORTED"))},Gd(function(){b(Error("CORS_UNSUPPORTED"))}))}; +R.prototype.ff=function(a,b,c,d,e){var f=this;og.then(function(){window.gapi.client.setApiKey(f.j);var g=window.gapi.auth.getToken();window.gapi.auth.setToken(null);window.gapi.client.request({path:a,method:c,body:d,headers:e,authType:"none",callback:function(a){window.gapi.auth.setToken(g);b&&b(a)}})}).c(function(a){b&&b({error:{message:a&&a.message||"CORS_UNSUPPORTED"}})})}; +var sg=function(a,b){return new B(function(c,d){"refresh_token"==b.grant_type&&b.refresh_token||"authorization_code"==b.grant_type&&b.code?qg(a,a.df+"?key="+encodeURIComponent(a.j),function(a){a?a.error?d(rg(a)):a.access_token&&a.refresh_token?c(a):d(new N("internal-error")):d(new N("network-request-failed"))},"POST",We(b).toString(),a.Qd,a.ef.get()):d(new N("internal-error"))})},tg=function(a,b,c,d,e){var f=Re(a.te+b);I(f,"key",a.j);e&&I(f,"cb",ka().toString());var g="GET"==c;if(g)for(var k in d)d.hasOwnProperty(k)&& +I(f,k,d[k]);return new B(function(b,e){qg(a,f.toString(),function(a){a?a.error?e(rg(a)):b(a):e(new N("network-request-failed"))},c,g?void 0:xc(uf(d)),a.wd,a.ue.get())})},ug=function(a){if(!ic.test(a.email))throw new N("invalid-email");},vg=function(a){"email"in a&&ug(a)},xg=function(a,b){return Q(a,wg,{identifier:b,continueUri:pf()?Ye():"http://localhost"}).then(function(a){return a.allProviders||[]})},zg=function(a){return Q(a,yg,{}).then(function(a){return a.authorizedDomains||[]})},Ag=function(a){if(!a.idToken)throw new N("internal-error"); +};R.prototype.signInAnonymously=function(){return Q(this,Bg,{})};R.prototype.updateEmail=function(a,b){return Q(this,Cg,{idToken:a,email:b})};R.prototype.updatePassword=function(a,b){return Q(this,dg,{idToken:a,password:b})};var Dg={displayName:"DISPLAY_NAME",photoUrl:"PHOTO_URL"};R.prototype.updateProfile=function(a,b){var c={idToken:a},d=[];Oa(Dg,function(a,f){var e=b[f];null===e?d.push(a):f in b&&(c[f]=e)});d.length&&(c.deleteAttribute=d);return Q(this,Cg,c)}; +R.prototype.sendPasswordResetEmail=function(a){return Q(this,Eg,{requestType:"PASSWORD_RESET",email:a})};R.prototype.sendEmailVerification=function(a){return Q(this,Fg,{requestType:"VERIFY_EMAIL",idToken:a})}; +var Hg=function(a,b,c){return Q(a,Gg,{idToken:b,deleteProvider:c})},Ig=function(a){if(!a.requestUri||!a.sessionId&&!a.postBody)throw new N("internal-error");},Jg=function(a){var b=null;a.needConfirmation?(a.code="account-exists-with-different-credential",b=ig(a)):"FEDERATED_USER_ID_ALREADY_LINKED"==a.errorMessage?(a.code="credential-already-in-use",b=ig(a)):"EMAIL_EXISTS"==a.errorMessage&&(a.code="email-already-in-use",b=ig(a));if(b)throw b;if(!a.idToken)throw new N("internal-error");},Qf=function(a, +b){b.returnIdpCredential=!0;return Q(a,Kg,b)},Sf=function(a,b){b.returnIdpCredential=!0;return Q(a,Lg,b)},Mg=function(a){if(!a.oobCode)throw new N("invalid-action-code");};R.prototype.confirmPasswordReset=function(a,b){return Q(this,Ng,{oobCode:a,newPassword:b})};R.prototype.checkActionCode=function(a){return Q(this,Og,{oobCode:a})};R.prototype.applyActionCode=function(a){return Q(this,Pg,{oobCode:a})}; +var Pg={endpoint:"setAccountInfo",K:Mg,jb:"email"},Og={endpoint:"resetPassword",K:Mg,va:function(a){if(!a.email||!a.requestType)throw new N("internal-error");}},Qg={endpoint:"signupNewUser",K:function(a){ug(a);if(!a.password)throw new N("weak-password");},va:Ag,wa:!0},wg={endpoint:"createAuthUri"},Rg={endpoint:"deleteAccount",ib:["idToken"]},Gg={endpoint:"setAccountInfo",ib:["idToken","deleteProvider"],K:function(a){if(!da(a.deleteProvider))throw new N("internal-error");}},Sg={endpoint:"getAccountInfo"}, +Fg={endpoint:"getOobConfirmationCode",ib:["idToken","requestType"],K:function(a){if("VERIFY_EMAIL"!=a.requestType)throw new N("internal-error");},jb:"email"},Eg={endpoint:"getOobConfirmationCode",ib:["requestType"],K:function(a){if("PASSWORD_RESET"!=a.requestType)throw new N("internal-error");ug(a)},jb:"email"},yg={je:!0,endpoint:"getProjectConfig",De:"GET"},Ng={endpoint:"resetPassword",K:Mg,jb:"email"},Cg={endpoint:"setAccountInfo",ib:["idToken"],K:vg,wa:!0},dg={endpoint:"setAccountInfo",ib:["idToken"], +K:function(a){vg(a);if(!a.password)throw new N("weak-password");},va:Ag,wa:!0},Bg={endpoint:"signupNewUser",va:Ag,wa:!0},Kg={endpoint:"verifyAssertion",K:Ig,va:Jg,wa:!0},Lg={endpoint:"verifyAssertion",K:function(a){Ig(a);if(!a.idToken)throw new N("internal-error");},va:Jg,wa:!0},Tg={endpoint:"verifyCustomToken",K:function(a){if(!a.token)throw new N("invalid-custom-token");},va:Ag,wa:!0},cg={endpoint:"verifyPassword",K:function(a){ug(a);if(!a.password)throw new N("wrong-password");},va:Ag,wa:!0},Q= +function(a,b,c){if(!Ef(c,b.ib))return D(new N("internal-error"));var d=b.De||"POST",e;return C(c).then(b.K).then(function(){b.wa&&(c.returnSecureToken=!0);return tg(a,b.endpoint,d,c,b.je||!1)}).then(function(a){return e=a}).then(b.va).then(function(){if(!b.jb)return e;if(!(b.jb in e))throw new N("internal-error");return e[b.jb]})},rg=function(a){var b,c;c=(a.error&&a.error.errors&&a.error.errors[0]||{}).reason||"";var d={keyInvalid:"invalid-api-key",ipRefererBlocked:"app-not-authorized"};if(c=d[c]? +new N(d[c]):null)return c;c=a.error&&a.error.message||"";d={INVALID_CUSTOM_TOKEN:"invalid-custom-token",CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_EMAIL:"invalid-email",INVALID_PASSWORD:"wrong-password",USER_DISABLED:"user-disabled",MISSING_PASSWORD:"internal-error",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential", +FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",INVALID_MESSAGE_PAYLOAD:"invalid-message-payload",INVALID_RECIPIENT_EMAIL:"invalid-recipient-email",INVALID_SENDER:"invalid-sender",EMAIL_NOT_FOUND:"user-not-found",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired", +CORS_UNSUPPORTED:"cors-unsupported",DYNAMIC_LINK_NOT_ACTIVATED:"dynamic-link-not-activated",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",WEAK_PASSWORD:"weak-password",OPERATION_NOT_ALLOWED:"operation-not-allowed",USER_CANCELLED:"user-cancelled"};b=(b=c.match(/^[^\s]+\s*:\s*(.*)$/))&&1k||k>=Eh.length)throw new N("internal-error","Argument validator received an unsupported number of arguments.");e=Eh[k]+" argument "+(e.name?'"'+e.name+'" ':"")+"must be "+e.fa+".";break a}e=null}}if(e)throw new N("argument-error",d+" failed: "+e);return b.apply(this,a)};for(var e in b)a[e]=b[e];for(e in b.prototype)a.prototype[e]= +b.prototype[e];return a},Mh=function(a){a=a.split(".");return a[a.length-1]};var Nh=function(a,b,c,d){this.Se=a;this.Rd=b;this.bf=c;this.Hb=d;this.S={};Ch||(Ch=new Bh);a=Ch;try{var e;Xe()?(sh||(sh=new rh("firebaseLocalStorageDb","firebaseLocalStorage","fbase_key","value",1)),e=sh):e=new a.td.I;this.Ha=e}catch(f){this.Ha=new lh,this.Hb=!0}try{this.sc=new a.td.kd}catch(f){this.sc=new lh}this.hd=r(this.Vd,this);this.Y={}},Oh,Ph=function(){Oh||(Oh=new Nh("firebase",":",!wf(J())&&mf()?!0:!1,sf()));return Oh};h=Nh.prototype; +h.P=function(a,b){return this.Se+this.Rd+a.name+(b?this.Rd+b:"")};h.get=function(a,b){return(a.I?this.Ha:this.sc).get(this.P(a,b))};h.remove=function(a,b){b=this.P(a,b);a.I&&!this.Hb&&(this.Y[b]=null);return(a.I?this.Ha:this.sc).remove(b)};h.set=function(a,b,c){var d=this.P(a,c),e=this,f=a.I?this.Ha:this.sc;return f.set(d,b).then(function(){return f.get(d)}).then(function(b){a.I&&!this.Hb&&(e.Y[d]=b)})}; +h.addListener=function(a,b,c){a=this.P(a,b);this.Hb||(this.Y[a]=l.localStorage.getItem(a));Ra(this.S)&&this.gd();this.S[a]||(this.S[a]=[]);this.S[a].push(c)};h.removeListener=function(a,b,c){a=this.P(a,b);this.S[a]&&(La(this.S[a],function(a){return a==c}),0==this.S[a].length&&delete this.S[a]);Ra(this.S)&&this.qc()};h.gd=function(){this.Ha.Pa(this.hd);this.Hb||Xe()||Qh(this)}; +var Qh=function(a){Rh(a);a.Rc=setInterval(function(){for(var b in a.S){var c=l.localStorage.getItem(b),d=a.Y[b];c!=d&&(a.Y[b]=c,c=new Kb({type:"storage",key:b,target:window,oldValue:d,newValue:c,Xe:!0}),a.Vd(c))}},1E3)},Rh=function(a){a.Rc&&(clearInterval(a.Rc),a.Rc=null)};Nh.prototype.qc=function(){this.Ha.Ja(this.hd);Rh(this)}; +Nh.prototype.Vd=function(a){if(a&&a.xe){var b=a.Ua.key;"undefined"!==typeof a.Ua.Xe?this.Ha.Ja(this.hd):Rh(this);if(this.bf){var c=l.localStorage.getItem(b);a=a.Ua.newValue;a!=c&&(a?l.localStorage.setItem(b,a):a||l.localStorage.removeItem(b))}this.Y[b]=l.localStorage.getItem(b);this.nd(b)}else Ca(a,r(this.nd,this))};Nh.prototype.nd=function(a){this.S[a]&&Ca(this.S[a],function(a){a()})};var Sh=function(a,b){this.u=a;this.i=b||Ph()},Th={name:"authEvent",I:!0},Uh=function(a){return a.i.get(Th,a.u).then(function(a){return Mf(a)})};Sh.prototype.Oa=function(a){this.i.addListener(Th,this.u,a)};Sh.prototype.Gb=function(a){this.i.removeListener(Th,this.u,a)};var Vh=function(a){this.i=a||Ph()},Wh={name:"sessionId",I:!1};Vh.prototype.Wb=function(a){return this.i.get(Wh,a)};var Xh=function(a,b,c,d,e,f){this.v=a;this.j=b;this.B=c;this.za=d||null;this.Wd=b+":"+c;this.cf=new Vh;this.xd=new Sh(this.Wd);this.Nc=null;this.ia=[];this.Ie=e||500;this.Ze=f||2E3;this.tb=this.ic=null},Yh=function(a){return new N("invalid-cordova-configuration",a)}; +Xh.prototype.Da=function(){return this.Pc?this.Pc:this.Pc=kf().then(function(){if("function"!==typeof L("universalLinks.subscribe",l))throw Yh("cordova-universal-links-plugin is not installed");if("undefined"===typeof L("BuildInfo.packageName",l))throw Yh("cordova-plugin-buildinfo is not installed");if("function"!==typeof L("cordova.plugins.browsertab.openUrl",l))throw Yh("cordova-plugin-browsertab is not installed");if("function"!==typeof L("cordova.InAppBrowser.open",l))throw Yh("cordova-plugin-inappbrowser is not installed"); +},function(){throw new N("cordova-not-ready");})};var Zh=function(){for(var a=20,b=[];0this.Va-3E4?this.W?Bi(this,{grant_type:"refresh_token",refresh_token:this.W}):C(null):C({accessToken:this.xa,expirationTime:this.Va,refreshToken:this.W})};var Di=function(a,b,c,d,e){Cf(this,{uid:a,displayName:d||null,photoURL:e||null,email:c||null,providerId:b})},Ei=function(a,b){Jb.call(this,a);for(var c in b)this[c]=b[c]};t(Ei,Jb); +var W=function(a,b,c){this.Z=[];this.j=a.apiKey;this.B=a.appName;this.v=a.authDomain||null;a=firebase.SDK_VERSION?of(firebase.SDK_VERSION):null;this.g=new R(this.j,null,a);this.ea=new yi(this.g);Fi(this,b.idToken);Ai(this.ea,b);M(this,"refreshToken",this.ea.W);Gi(this,c||{});Pd.call(this);this.jc=!1;this.v&&rf()&&(this.m=ti(this.v,this.j,this.B));this.pc=[];this.Ac=C()};t(W,Pd); +W.prototype.ta=function(a,b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.Ac=this.Ac.then(function(){return a.apply(d,c)},function(){return a.apply(d,c)})}; +var Fi=function(a,b){a.Fd=b;M(a,"_lat",b)},Hi=function(a,b){La(a.pc,function(a){return a==b})},Ii=function(a){for(var b=[],c=0;c.firebaseio.com"); + * + * @example + * // Get a reference to the /users/ada node + * var adaRef = firebase.database().ref("https://.firebaseio.com/users/ada"); + * + * @param {string} url The Firebase URL at which the returned `Reference` will + * point. + * @return {!firebase.database.Reference} A `Reference` pointing to the provided + * Firebase URL. */ firebase.database.Database.prototype.refFromURL = function(url) {}; /** - * Disconnect from the server (all database operations will be completed + * Disconnects from the server (all Database operations will be completed * offline). * - * The client automatically maintains a persistent connection to the database + * The client automatically maintains a persistent connection to the Database * server, which will remain active indefinitely and reconnect when * disconnected. However, the `goOffline()` and `goOnline()` methods may be used * to control the client connection in cases where a persistent connection is * undesirable. * * While offline, the client will no longer receive data updates from the - * database. However, all database operations performed locally will continue to + * Database. However, all Database operations performed locally will continue to * immediately fire events, allowing your application to continue behaving * normally. Additionally, each operation performed locally will automatically - * be queued and retried upon reconnection to the database server. + * be queued and retried upon reconnection to the Database server. * - * To reconnect to the database and begin receiving remote events, see + * To reconnect to the Database and begin receiving remote events, see * `goOnline()`. * * @example @@ -131,12 +212,13 @@ firebase.database.Database.prototype.refFromURL = function(url) {}; firebase.database.Database.prototype.goOffline = function() {}; /** - * (Re)connect to the server and synchronize the offline database state + * Reconnects to the server and synchronizes the offline Database state * with the server state. * * This method should be used after disabling the active connection with - * `goOffline()`. Once reconnected, the client will transmit the proper data and - * fire the appropriate events so that your client "catches up" automatically. + * `goOffline()`. Once reconnected, the client will transmit the proper data + * and fire the appropriate events so that your client "catches up" + * automatically. * * @example * firebase.database().goOnline(); @@ -144,17 +226,17 @@ firebase.database.Database.prototype.goOffline = function() {}; firebase.database.Database.prototype.goOnline = function() {}; /** - * A Reference represents a specific location in your database and can be used - * for reading or writing data to that database location. + * A `Reference` represents a specific location in your Database and can be used + * for reading or writing data to that Database location. * - * You can reference the root, or child location in your database by calling + * You can reference the root or child location in your Database by calling * `firebase.database().ref()` or `firebase.database().ref("child/path")`. * * Writing is done with the `set()` method and reading can be done with the - * `on()` method. See: - * - * - {@link https://firebase.google.com/docs/database/web/save-data Save Data on the Web} - * - {@link https://firebase.google.com/docs/database/web/retrieve-data Retrieve Data on the Web} + * `on()` method. See + * {@link + * https://firebase.google.com/docs/database/web/read-and-write + * Read and Write Data on the Web} * * @interface * @extends {firebase.database.Query} @@ -162,16 +244,22 @@ firebase.database.Database.prototype.goOnline = function() {}; firebase.database.Reference = function() {}; /** - * The last part of the current path. + * The last part of the `Reference`'s path. * - * For example, "ada" is the key for - * https://sample-app.firebaseio.com/users/ada. + * For example, `"ada"` is the key for + * `https://.firebaseio.com/users/ada`. * - * The key of the root Reference is `null`. + * The key of a root `Reference` is `null`. * * @example + * // The key of a root reference is null + * var rootRef = firebase.database().ref(); + * var key = rootRef.key; // key === null + * + * @example + * // The key of any non-root reference is the last token in the path * var adaRef = firebase.database().ref("users/ada"); - * var key = adaRef.key; // key === "ada" + * var key = adaRef.key; // key === "ada" * key = adaRef.child("name/last").key; // key === "last" * * @type {string|null} @@ -180,7 +268,7 @@ firebase.database.Reference.prototype.key; /** - * Gets a Reference for the location at the specified relative path. + * Gets a `Reference` for the location at the specified relative path. * * The relative path can either be a simple child name (for example, "ada") or * a deeper slash-separated path (for example, "ada/name/first"). @@ -200,12 +288,20 @@ firebase.database.Reference.prototype.child = function(path) {}; /** - * The parent location of a Reference. + * The parent location of a `Reference`. + * + * The parent of a root `Reference` is `null`. * * @example - * var usersRef = firebase.database().ref('users'); - * var path = usersRef.parent.toString(); - * // path is now 'https://sample-app.firebaseio.com' + * // The parent of a root reference is null + * var rootRef = firebase.database().ref(); + * parent = rootRef.parent; // parent === null + * + * @example + * // The parent of any non-root reference is the parent location + * var usersRef = firebase.database().ref("users"); + * var adaRef = firebase.database().ref("users/ada"); + * // usersRef and adaRef.parent represent the same location * * @type {?firebase.database.Reference} */ @@ -213,12 +309,17 @@ firebase.database.Reference.prototype.parent; /** - * The root location of a Reference. + * The root `Reference` of the Database. * * @example - * var adaRef = firebase.database().ref('samplechat/users/ada'); - * var path = adaRef.root.toString(); - * // path is now 'https://sample-app.firebaseio.com' + * // The root of a root reference is itself + * var rootRef = firebase.database().ref(); + * // rootRef and rootRef.root represent the same location + * + * @example + * // The root of any non-root reference is the root location + * var adaRef = firebase.database().ref("users/ada"); + * // rootRef and adaRef.root represent the same location * * @type {!firebase.database.Reference} */ @@ -226,40 +327,40 @@ firebase.database.Reference.prototype.root; /** - * Write data to this database location. + * Writes data to this Database location. * * This will overwrite any data at this location and all child locations. * - * The effect of the write will be visible immediately and the corresponding - * events ('value', 'child_added', etc.) will be triggered. Synchronization of + * The effect of the write will be visible immediately, and the corresponding + * events ("value", "child_added", etc.) will be triggered. Synchronization of * the data to the Firebase servers will also be started, and the returned - * Promise will resolve when complete. If provided, the onComplete callback will - * be called asynchronously after synchronization has finished. + * Promise will resolve when complete. If provided, the `onComplete` callback + * will be called asynchronously after synchronization has finished. * - * Passing `null` for the new value is equivalent to calling remove(); all data at - * this location or any child location will be deleted. + * Passing `null` for the new value is equivalent to calling `remove()`; namely, + * all data at this location and all child locations will be deleted. * * `set()` will remove any priority stored at this location, so if priority is - * meant to be preserved, you should use `setWithPriority()` instead. + * meant to be preserved, you need to use `setWithPriority()` instead. * - * Note that modifying data with `set()` will cancel any pending transactions at - * that location, so extreme care should be taken if mixing `set()` and + * Note that modifying data with `set()` will cancel any pending transactions + * at that location, so extreme care should be taken if mixing `set()` and * `transaction()` to modify the same data. * - * A single `set()` will generate a single "value" event at the location where the - * `set()` was performed. + * A single `set()` will generate a single "value" event at the location where + * the `set()` was performed. * * @example * var adaNameRef = firebase.database().ref('users/ada/name'); * adaNameRef.child('first').set('Ada'); * adaNameRef.child('last').set('Lovelace'); - * // We've written 'Ada' to the database location storing Ada's first name, - * // and 'Lovelace' to the location storing her last name + * // We've written 'Ada' to the Database location storing Ada's first name, + * // and 'Lovelace' to the location storing her last name. * * @example * adaNameRef.set({ first: 'Ada', last: 'Lovelace' }); * // Exact same effect as the previous example, except we've written - * // ada's first and last name simultaneously. + * // Ada's first and last name simultaneously. * * @example * adaNameRef.set({ first: 'Ada', last: 'Lovelace' }) @@ -282,36 +383,37 @@ firebase.database.Reference.prototype.set = function(value, onComplete) {}; /** - * Writes multiple values to the database at once. + * Writes multiple values to the Database at once. * - * The `values` argument contains multiple property/value pairs that will be - * written to the database together. Each child property can either be a simple - * property (for example, "name"), or a relative path (for example, + * The `values` argument contains multiple property-value pairs that will be + * written to the Database together. Each child property can either be a simple + * property (for example, "name") or a relative path (for example, * "name/first") from the current location to the data to update. * * As opposed to the `set()` method, `update()` can be use to selectively update * only the referenced properties at the current location (instead of replacing * all the child properties at the current location). * - * The effect of the write will be visible immediately and the corresponding + * The effect of the write will be visible immediately, and the corresponding * events ('value', 'child_added', etc.) will be triggered. Synchronization of * the data to the Firebase servers will also be started, and the returned - * Promise will resolve when complete. If provided, the onComplete callback will - * be called asynchronously after synchronization has finished. + * Promise will resolve when complete. If provided, the `onComplete` callback + * will be called asynchronously after synchronization has finished. * - * A single `update()` will generate a single "value" event at the location where - * the `update()` was performed, regardless of how many children were modified. + * A single `update()` will generate a single "value" event at the location + * where the `update()` was performed, regardless of how many children were + * modified. * - * Note that modifying data with `update()` will cancel any pending transactions - * at that location, so extreme care should be taken if mixing `update()` and - * `transaction()` to modify the same data. + * Note that modifying data with `update()` will cancel any pending + * transactions at that location, so extreme care should be taken if mixing + * `update()` and `transaction()` to modify the same data. * * Passing `null` to `update()` will remove the data at this location. * * See * {@link * https://firebase.googleblog.com/2015/09/introducing-multi-location-updates-and_86.html - * Introducing multi-location updates and more} + * Introducing multi-location updates and more}. * * @example * var adaNameRef = firebase.database().ref('users/ada/name'); @@ -324,18 +426,17 @@ firebase.database.Reference.prototype.set = function(value, onComplete) {}; * complete. * @return {!firebase.Promise} Resolves when update on server is complete. */ -firebase.database.Reference.prototype.update = - function(values, onComplete) {}; +firebase.database.Reference.prototype.update = function(values, onComplete) {}; /** - * Writes data the database location. Like `set()` but also specifies the + * Writes data the Database location. Like `set()` but also specifies the * priority for that data. * - * Applications need not use priority, but can order collections by + * Applications need not use priority but can order collections by * ordinary properties (see * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data + * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data * Sorting and filtering data}). * * @param {*} newVal @@ -348,7 +449,7 @@ firebase.database.Reference.prototype.setWithPriority = /** - * Remove the data at this database location. + * Removes the data at this Database location. * * Any data at child locations will also be deleted. * @@ -466,12 +567,12 @@ firebase.database.Reference.prototype.transaction = /** - * Sets a priority for the data at this database location. + * Sets a priority for the data at this Database location. * - * Applications need not use priority, but can order collections by + * Applications need not use priority but can order collections by * ordinary properties (see * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data + * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data * Sorting and filtering data}). * * @param {string|number|null} priority @@ -491,13 +592,14 @@ firebase.database.ThenableReference = function() {}; /** - * Generates a new child location using a unique key and returns its reference. + * Generates a new child location using a unique key and returns its + * `Reference`. * * This is the most common pattern for adding data to a collection of items. * * If you provide a value to `push()`, the value will be written to the * generated location. If you don't pass a value, nothing will be written to the - * database and the child will remain empty (but you can use the reference + * Database and the child will remain empty (but you can use the `Reference` * elsewhere). * * The unique key generated by `push()` are ordered by the current time, so the @@ -507,7 +609,7 @@ firebase.database.ThenableReference = function() {}; * * See * {@link - * https://firebase.google.com/docs/database/web/save-data#append_to_a_list_of_data + * https://firebase.google.com/docs/database/web/lists-of-data#append_to_a_list_of_data * Append to a list of data} *
See * {@link @@ -529,17 +631,19 @@ firebase.database.ThenableReference = function() {}; * @param {*=} value Optional value to be written at the generated location. * @param {function(?Error)=} onComplete Callback called when write to server is * complete. - * @return {!firebase.database.ThenableReference} Combined Promise and - * reference; resolves when write is complete, but can be used immediately as - * the reference to the child location. + * @return {!firebase.database.ThenableReference} Combined `Promise` and + * `Reference`; resolves when write is complete, but can be used immediately + * as the `Reference` to the child location. */ firebase.database.Reference.prototype.push = function(value, onComplete) {}; /** * Returns an `OnDisconnect` object - see - * {@link https://firebase.google.com/docs/database/web/offline-capabilities - * Offline Capabilities} for information on how to use it. + * {@link + * https://firebase.google.com/docs/database/web/offline-capabilities + * Enabling Offline Capabilities in JavaScript} for more information on how + * to use it. * * @return {!firebase.database.OnDisconnect} */ @@ -547,20 +651,20 @@ firebase.database.Reference.prototype.onDisconnect = function() {}; /** - * A `Query` sorts and filters the data at a database location so only a subset of - * the child data is included. This can be used to order a collection of data by - * some attribute (e.g. height of dinosaurs) as well as to restrict a large list - * of items (e.g. chat messages) down to a number suitable for synchronizing to - * the client. Queries are created by chaining together one or more of the - * filter methods defined here. + * A `Query` sorts and filters the data at a Database location so only a subset + * of the child data is included. This can be used to order a collection of + * data by some attribute (for example, height of dinosaurs) as well as to + * restrict a large list of items (for example, chat messages) down to a number + * suitable for synchronizing to the client. Queries are created by chaining + * together one or more of the filter methods defined here. * - * Just as with a `Reference`, you can receive data from a Query by using the - * `on()` method. You will only receive events and `DataSnapshots` for the subset of - * the data that matches your query. + * Just as with a `Reference`, you can receive data from a `Query` by using the + * `on()` method. You will only receive events and `DataSnapshot`s for the + * subset of the data that matches your query. * * Read our documentation on * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data + * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data * Sorting and filtering data} for more information. * * @interface @@ -569,7 +673,7 @@ firebase.database.Query = function() {} /** - * Returns a `Reference` to the Query's location. + * Returns a `Reference` to the `Query`'s location. * * @type {!firebase.database.Reference} */ @@ -585,9 +689,9 @@ firebase.database.Query.prototype.ref; * and are from the same instance of `firebase.app.App`. * * Two `Query` objects are equivalent if they represent the same location, have - * the same query parameters, and are from the same instance of `firebase.app.App`. - * Equivalent queries share the same sort order, limits, and starting and - * ending points. + * the same query parameters, and are from the same instance of + * `firebase.app.App`. Equivalent queries share the same sort order, limits, and + * starting and ending points. * * @example * var rootRef = firebase.database.ref(); @@ -608,7 +712,8 @@ firebase.database.Query.prototype.ref; * usersQuery.isEqual(usersRef.orderByKey().limitToLast(10)); // false * * @param {firebase.database.Query} other The query to compare against. - * @return {boolean} Whether or not the current and provided queries are equivalent. + * @return {boolean} Whether or not the current and provided queries are + * equivalent. */ firebase.database.Query.prototype.isEqual = function(other) {}; @@ -616,35 +721,36 @@ firebase.database.Query.prototype.isEqual = function(other) {}; /** * Listens for data changes at a particular location. * - * This is the primary way to read data from a database. Your callback + * This is the primary way to read data from a Database. Your callback * will be triggered for the initial data and again whenever the data changes. * Use `off( )` to stop receiving updates. See - * {@link https://firebase.google.com/docs/database/web/retrieve-data Retrieve Data on the Web} + * {@link https://firebase.google.com/docs/database/web/retrieve-data + * Retrieve Data on the Web} * for more details. * *

value event

* * This event will trigger once with the initial data stored at this location, - * and then trigger again each time the data changes. The `DataSnapshot` passed to - * the callback will be for the location at which `on()` was called. It won't - * trigger until the entire contents has been synchronized. If the location has - * no data, it will be triggered with an empty `DataSnapshot` (`val()` will return - * `null`). + * and then trigger again each time the data changes. The `DataSnapshot` passed + * to the callback will be for the location at which `on()` was called. It + * won't trigger until the entire contents has been synchronized. If the + * location has no data, it will be triggered with an empty `DataSnapshot` + * (`val()` will return `null`). * *

child_added event

* * This event will be triggered once for each initial child at this location, * and it will be triggered again every time a new child is added. The - * `DataSnapshot` passed into the callback will reflect the data for the relevant - * child. For ordering purposes, it is passed a second argument which is a - * string containing the key of the previous sibling child by sort order (or - * `null` if it is the first child). + * `DataSnapshot` passed into the callback will reflect the data for the + * relevant child. For ordering purposes, it is passed a second argument which + * is a string containing the key of the previous sibling child by sort order, + * or `null` if it is the first child. * *

child_removed event

* * This event will be triggered once every time a child is removed. The - * `DataSnapshot` passed into the callback will be the old data for the child that - * was removed. A child will get removed when either: + * `DataSnapshot` passed into the callback will be the old data for the child + * that was removed. A child will get removed when either: * * - a client explicitly calls `remove()` on that child or one of its ancestors * - a client calls `set(null)` on that child or one of its ancestors @@ -659,7 +765,7 @@ firebase.database.Query.prototype.isEqual = function(other) {}; * multiple changes to the child. The `DataSnapshot` passed to the callback will * contain the new child contents. For ordering purposes, the callback is also * passed a second argument which is a string containing the key of the previous - * sibling child by sort order (or `null` if it is the first child). + * sibling child by sort order, or `null` if it is the first child. * *

child_moved event

* @@ -667,7 +773,7 @@ firebase.database.Query.prototype.isEqual = function(other) {}; * position relative to its siblings changes. The `DataSnapshot` passed to the * callback will be for the data of the child that has moved. It is also passed * a second argument which is a string containing the key of the previous - * sibling child by sort order (or `null` if it is the first child). + * sibling child by sort order, or `null` if it is the first child. * * @example Handle a new value: * ref.on('value', function(dataSnapshot) { @@ -694,25 +800,25 @@ firebase.database.Query.prototype.isEqual = function(other) {}; * ... * }); * - * @param {!string} eventType One of the following strings: "value", + * @param {string} eventType One of the following strings: "value", * "child_added", "child_changed", "child_removed", or "child_moved." * @param {!function(firebase.database.DataSnapshot, string=)} callback A * callback that fires when the specified event occurs. The callback will be * passed a DataSnapshot. For ordering purposes, "child_added", * "child_changed", and "child_moved" will also be passed a string containing - * the key of the previous child, by sort order (or `null` if it is the - * first child). + * the key of the previous child, by sort order, or `null` if it is the + * first child. * @param {(function(Error)|Object)=} cancelCallbackOrContext An optional * callback that will be notified if your event subscription is ever canceled * because your client does not have permission to read this data (or it had * permission but has now lost it). This callback will be passed an `Error` * object indicating why the failure occurred. - * @param {Object=} context If provided, this object will be used as this when - * calling your callback(s). + * @param {Object=} context If provided, this object will be used as `this` + * when calling your callback(s). * @return {!function(firebase.database.DataSnapshot, string=)} The provided * callback function is returned unmodified. This is just for convenience if - * you want to pass an inline function to `on()` but store the callback function - * for later passing to `off()`. + * you want to pass an inline function to `on()` but store the callback + * function for later passing to `off()`. */ firebase.database.Query.prototype.on = function(eventType, callback, cancelCallbackOrContext, context) {}; @@ -721,16 +827,16 @@ firebase.database.Query.prototype.on = /** * Detaches a callback previously attached with `on()`. * - * Detach a callback previously attached with `on()`. Note that if `on()` was called - * multiple times with the same eventType and callback, the callback will be - * called multiple times for each event, and `off()` must be called multiple times - * to remove the callback. Calling `off()` on a parent listener will not - * automatically remove listeners registered on child nodes, `off()` must also be - * called on any child listeners to remove the callback. + * Detach a callback previously attached with `on()`. Note that if `on()` was + * called multiple times with the same eventType and callback, the callback + * will be called multiple times for each event, and `off()` must be called + * multiple times to remove the callback. Calling `off()` on a parent listener + * will not automatically remove listeners registered on child nodes, `off()` + * must also be called on any child listeners to remove the callback. * * If a callback is not specified, all callbacks for the specified eventType * will be removed. Similarly, if no eventType or callback is specified, all - * callbacks for the reference will be removed. + * callbacks for the `Reference` will be removed. * * @example * var onValueChange = function(dataSnapshot) { ... }; @@ -761,10 +867,13 @@ firebase.database.Query.prototype.off = /** - * Listens for exactly one event of the specified event type, and then stops listening. + * Listens for exactly one event of the specified event type, and then stops + * listening. * - * This is equivalent to calling `on()`, and then calling `off()` inside the - * callback function. see `on()` for details on the event types. + * This is equivalent to calling {@link firebase.database.Query#on `on()`}, and + * then calling {@link firebase.database.Query#off `off()`} inside the callback + * function. See {@link firebase.database.Query#on `on()`} for details on the + * event types. * * @example * // Basic usage of .once() to read the data located at ref. @@ -773,48 +882,49 @@ firebase.database.Query.prototype.off = * // handle read data. * }); * - * @param {!string} eventType One of the following strings: "value", + * @param {string} eventType One of the following strings: "value", * "child_added", "child_changed", "child_removed", or "child_moved." * @param {function(!firebase.database.DataSnapshot, string=)=} successCallback A * callback that fires when the specified event occurs. The callback will be * passed a DataSnapshot. For ordering purposes, "child_added", * "child_changed", and "child_moved" will also be passed a string containing - * the key of the previous child, by sort order (or `null` if it is the - * first child). + * the key of the previous child by sort order, or `null` if it is the + * first child. * @param {(function(Error)|Object)=} failureCallbackOrContext An optional * callback that will be notified if your client does not have permission to * read the data. This callback will be passed an `Error` object indicating * why the failure occurred. - * @param {Object=} context If provided, this object will be used as this when - * calling your callback(s). + * @param {Object=} context If provided, this object will be used as `this` + * when calling your callback(s). * @return {!firebase.Promise<*>} */ -firebase.database.Query.prototype.once = function(eventType, successCallback, failureCallbackOrContext, context) {}; +firebase.database.Query.prototype.once = + function(eventType, successCallback, failureCallbackOrContext, context) {}; /** - * Generates a new Query limited to the first specific number of children. + * Generates a new `Query` limited to the first specific number of children. * * The `limitToFirst()` method is used to set a maximum number of children to be * synced for a given callback. If we set a limit of 100, we will initially only - * receive up to 100 `child_added` events. If we have less than 100 messages - * stored in our database, a `child_added` event will fire for each message. + * receive up to 100 `child_added` events. If we have fewer than 100 messages + * stored in our Database, a `child_added` event will fire for each message. * However, if we have over 100 messages, we will only receive a `child_added` * event for the first 100 ordered messages. As items change, we will receive - * `child_removed` events for each item that drops out of the active list, so that - * the total number stays at 100. + * `child_removed` events for each item that drops out of the active list so + * that the total number stays at 100. * * You can read more about `limitToFirst()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data + * Filtering data}. * * @example * // Find the two shortest dinosaurs. * var ref = firebase.database().ref("dinosaurs"); * ref.orderByChild("height").limitToFirst(2).on("child_added", function(snapshot) { * // This will be called exactly two times (unless there are less than two - * // dinosaurs in the database. + * // dinosaurs in the Database). * * // It will also get fired again if one of the first two dinosaurs is * // removed from the data set, as a new dinosaur will now be the second @@ -822,52 +932,53 @@ firebase.database.Query.prototype.once = function(eventType, successCallback, fa * console.log(snapshot.key); * }); * - * @param {!number} limit The maximum number of nodes to include in this query. + * @param {number} limit The maximum number of nodes to include in this query. * @return {!firebase.database.Query} */ firebase.database.Query.prototype.limitToFirst = function(limit) {}; /** - * Generates a new Query object limited to the last specific number of children. + * Generates a new `Query` object limited to the last specific number of + * children. * * The `limitToLast()` method is used to set a maximum number of children to be * synced for a given callback. If we set a limit of 100, we will initially only - * receive up to 100 `child_added` events. If we have less than 100 messages - * stored in our database, a `child_added` event will fire for each message. + * receive up to 100 `child_added` events. If we have fewer than 100 messages + * stored in our Database, a `child_added` event will fire for each message. * However, if we have over 100 messages, we will only receive a `child_added` * event for the last 100 ordered messages. As items change, we will receive - * `child_removed` events for each item that drops out of the active list, so that - * the total number stays at 100. + * `child_removed` events for each item that drops out of the active list so + * that the total number stays at 100. * * You can read more about `limitToLast()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data + * Filtering data}. * * @example * // Find the two heaviest dinosaurs. * var ref = firebase.database().ref("dinosaurs"); * ref.orderByChild("weight").limitToLast(2).on("child_added", function(snapshot) { - * // This callback will be triggered exactly two times, unless there are less - * // than two dinosaurs stored in the database. It will also get fired for - * // every new, heavier dinosaur that gets added to the data set. + * // This callback will be triggered exactly two times, unless there are + * // fewer than two dinosaurs stored in the Database. It will also get fired + * // for every new, heavier dinosaur that gets added to the data set. * console.log(snapshot.key); * }); * - * @param {!number} limit The maximum number of nodes to include in this query. + * @param {number} limit The maximum number of nodes to include in this query. * @return {!firebase.database.Query} */ firebase.database.Query.prototype.limitToLast = function(limit) {}; /** - * Generates a new Query object ordered by the specified child key. + * Generates a new `Query` object ordered by the specified child key. * - * Queries can only order by one key at a time. Calling `orderByChild()` multiple - * times on the same query is an error. + * Queries can only order by one key at a time. Calling `orderByChild()` + * multiple times on the same query is an error. * - * Firebase queries allow you to order your data by any child key, on the fly. + * Firebase queries allow you to order your data by any child key on the fly. * However, if you know in advance what your indexes will be, you can define * them via the .indexOn rule in your Security Rules for better performance. See * the {@link https://firebase.google.com/docs/database/security/indexing-data @@ -875,30 +986,30 @@ firebase.database.Query.prototype.limitToLast = function(limit) {}; * * You can read more about `orderByChild()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#sort_data + * Sort data}. * * @example * var ref = firebase.database().ref("dinosaurs"); * ref.orderByChild("height").on("child_added", function(snapshot) { - * console.log(snapshot.key + " was " + snapshot.val().height + " meters tall"); + * console.log(snapshot.key + " was " + snapshot.val().height + " m tall"); * }); * - * @param {!string} path + * @param {string} path * @return {!firebase.database.Query} */ firebase.database.Query.prototype.orderByChild = function(path) {}; /** - * Generates a new Query object ordered by key. + * Generates a new `Query` object ordered by key. * - * Sorts the results of a query by their (ascending) key value. + * Sorts the results of a query by their (ascending) key values. * * You can read more about `orderByKey()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#sort_data + * Sort data}. * * @example * var ref = firebase.database().ref("dinosaurs"); @@ -912,13 +1023,13 @@ firebase.database.Query.prototype.orderByKey = function() {}; /** - * Generates a new `Query` object order by priority. + * Generates a new `Query` object ordered by priority. * - * Applications need not use priority, but can order collections by + * Applications need not use priority but can order collections by * ordinary properties (see * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}). + * https://firebase.google.com/docs/database/web/lists-of-data#sort_data + * Sort data} for alternatives to priority. * * @return {!firebase.database.Query} */ @@ -926,15 +1037,15 @@ firebase.database.Query.prototype.orderByPriority = function() {}; /** - * Generates a new Query object ordered by child values. + * Generates a new `Query` object ordered by value. * - * If the children of a query are all scalar values (numbers or strings), you - * can order the results by their (ascending) values. + * If the children of a query are all scalar values (string, number, or + * boolean), you can order the results by their (ascending) values. * * You can read more about `orderByValue()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#sort_data + * Sort data}. * * @example * var scoresRef = firebase.database().ref("scores"); @@ -950,7 +1061,7 @@ firebase.database.Query.prototype.orderByValue = function() {}; /** - * Creates a Query with the specified starting point. + * Creates a `Query` with the specified starting point. * * Using `startAt()`, `endAt()`, and `equalTo()` allows you to choose arbitrary * starting and ending points for your queries. @@ -963,8 +1074,8 @@ firebase.database.Query.prototype.orderByValue = function() {}; * * You can read more about `startAt()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data + * Filtering data}. * * @example * // Find all dinosaurs that are at least three meters tall. @@ -974,18 +1085,18 @@ firebase.database.Query.prototype.orderByValue = function() {}; * }); * * @param {number|string|boolean|null} value The value to start at. The argument - * type depends on which `orderBy*()` function was used in this query. Specify a - * value that matches the `orderBy*()` type. When used in combination with - * `orderByKey()`, the value must be a string. - * @param {string=} key The child key to start at. This argument is allowed if - * ordering by child, value, or priority. + * type depends on which `orderBy*()` function was used in this query. + * Specify a value that matches the `orderBy*()` type. When used in + * combination with `orderByKey()`, the value must be a string. + * @param {string=} key The child key to start at. This argument is only allowed + * if ordering by child, value, or priority. * @return {!firebase.database.Query} */ firebase.database.Query.prototype.startAt = function(value, key) {}; /** - * Creates a Query with the specified ending point. + * Creates a `Query` with the specified ending point. * * Using `startAt()`, `endAt()`, and `equalTo()` allows you to choose arbitrary * starting and ending points for your queries. @@ -998,8 +1109,8 @@ firebase.database.Query.prototype.startAt = function(value, key) {}; * * You can read more about `endAt()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data + * Filtering data}. * * @example * // Find all dinosaurs whose names come before Pterodactyl lexicographically. @@ -1009,19 +1120,19 @@ firebase.database.Query.prototype.startAt = function(value, key) {}; * }); * * @param {number|string|boolean|null} value The value to end at. The argument - * type depends on which `orderBy*()` function was used in this query. Specify a - * value that matches the `orderBy*()` type. When used in combination with - * `orderByKey()`, the value must be a string. + * type depends on which `orderBy*()` function was used in this query. + * Specify a value that matches the `orderBy*()` type. When used in + * combination with `orderByKey()`, the value must be a string. * @param {string=} key The child key to end at, among the children with the * previously specified priority. This argument is only allowed if ordering by - * priority. + * child, value, or priority. * @return {!firebase.database.Query} */ firebase.database.Query.prototype.endAt = function(value, key) {}; /** - * Creates a Query which includes children which match the specified value. + * Creates a `Query` that includes children that match the specified value. * * Using `startAt()`, `endAt()`, and `equalTo()` allows us to choose arbitrary * starting and ending points for our queries. @@ -1033,8 +1144,8 @@ firebase.database.Query.prototype.endAt = function(value, key) {}; * * You can read more about `equalTo()` in * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}. + * https://firebase.google.com/docs/database/web/lists-of-data#filtering_data + * Filtering data}. * * @example * // Find all dinosaurs whose height is exactly 25 meters. @@ -1044,37 +1155,37 @@ firebase.database.Query.prototype.endAt = function(value, key) {}; * }); * * @param {number|string|boolean|null} value The value to match for. The - * argument type depends on which `orderBy*()` function was used in this query. - * Specify a value that matches the `orderBy*()` type. When used in combination - * with `orderByKey()`, the value must be a string. + * argument type depends on which `orderBy*()` function was used in this + * query. Specify a value that matches the `orderBy*()` type. When used in + * combination with `orderByKey()`, the value must be a string. * @param {string=} key The child key to start at, among the children with the * previously specified priority. This argument is only allowed if ordering by - * priority. + * child, value, or priority. * @return {!firebase.database.Query} */ firebase.database.Query.prototype.equalTo = function(value, key) {}; /** - * Get the absolute URL for this location. + * Gets the absolute URL for this location. * * The `toString()` method returns a URL that is ready to be put into a browser, - * curl command, or a `firebase.database().refFromURL()` call. Since all of those - * expect the URL to be url-encoded, `toString()` returns an encoded URL. + * curl command, or a `firebase.database().refFromURL()` call. Since all of + * those expect the URL to be url-encoded, `toString()` returns an encoded URL. * - * Append '.json' to the URL when typed into a browser to download JSON - * formatted data. If the location is secured (not publicly readable) you will - * get a permission-denied error. + * Append '.json' to the returned URL when typed into a browser to download + * JSON-formatted data. If the location is secured (that is, not publicly + * readable), you will get a permission-denied error. * * @example * // Calling toString() on a root Firebase reference returns the URL where its - * // data is stored within the database: + * // data is stored within the Database: * var rootRef = firebase.database().ref(); * var rootUrl = rootRef.toString(); * // rootUrl === "https://sample-app.firebaseio.com/". * * // Calling toString() at a deeper Firebase reference returns the URL of that - * // deep path within the database: + * // deep path within the Database: * var adaRef = rootRef.child('users/ada'); * var adaURL = adaRef.toString(); * // adaURL === "https://sample-app.firebaseio.com/users/ada". @@ -1086,17 +1197,17 @@ firebase.database.Query.prototype.toString = function() {}; /** - * A `DataSnapshot` contains data from a database location. + * A `DataSnapshot` contains data from a Database location. * - * Any time you read data from the database, you receive the data as a - * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach with - * `on()` or `once()`. You can extract the contents of the snapshot as a JavaScript - * object by calling the `val()` method. Alternatively, you can traverse into the - * snapshot by calling `child()` to return child snapshots (which you could then - * call `val()` on). + * Any time you read data from the Database, you receive the data as a + * `DataSnapshot`. A `DataSnapshot` is passed to the event callbacks you attach + * with `on()` or `once()`. You can extract the contents of the snapshot as a + * JavaScript object by calling the `val()` method. Alternatively, you can + * traverse into the snapshot by calling `child()` to return child snapshots + * (which you could then call `val()` on). * - * A `DataSnapshot` is an efficiently-generated, immutable copy of the data at a - * database location. It cannot be modified and will never change (to modify + * A `DataSnapshot` is an efficiently generated, immutable copy of the data at + * a Database location. It cannot be modified and will never change (to modify * data, you always call the `set()` method on a `Reference` directly). * * @interface @@ -1105,14 +1216,14 @@ firebase.database.DataSnapshot = function() {}; /** - * Extract a JavaScript value from a `DataSnapshot`. + * Extracts a JavaScript value from a `DataSnapshot`. * * Depending on the data in a `DataSnapshot`, the `val()` method may return a * scalar type (string, number, or boolean), an array, or an object. It may also * return null, indicating that the `DataSnapshot` is empty (contains no data). * * @example - * // Write and then read-back a string from the database. + * // Write and then read back a string from the Database. * ref.set("hello") * .then(function() { * return ref.once("value"); @@ -1122,7 +1233,7 @@ firebase.database.DataSnapshot = function() {}; * }); * * @example - * // Write and then read-back a JavaScript Object from the database. + * // Write and then read back a JavaScript object from the Database. * ref.set({ name: "Ada", age: 36 }) * .then(function() { * return ref.once("value"); @@ -1135,7 +1246,7 @@ firebase.database.DataSnapshot = function() {}; * }); * * @return {*} The DataSnapshot's contents as a JavaScript value (Object, - * Array, string, number, boolean, or null). + * Array, string, number, boolean, or `null`). */ firebase.database.DataSnapshot.prototype.val = function() {}; @@ -1143,16 +1254,11 @@ firebase.database.DataSnapshot.prototype.val = function() {}; /** * Exports the entire contents of the DataSnapshot as a JavaScript object. * - * The `exportVal()` method is similar to `val()`, except priority information is - * included (if available), making it suitable for backing up your data. - * - * Applications need not use priority, but can order collections by - * ordinary properties (see - * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}). + * The `exportVal()` method is similar to `val()`, except priority information + * is included (if available), making it suitable for backing up your data. * - * @return {*} + * @return {*} The DataSnapshot's contents as a JavaScript value (Object, + * Array, string, number, boolean, or `null`). */ firebase.database.DataSnapshot.prototype.exportVal = function() {}; @@ -1162,7 +1268,7 @@ firebase.database.DataSnapshot.prototype.exportVal = function() {}; * efficient than using `snapshot.val() !== null`. * * @example - * // Assume we have the following data in our database: + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1190,13 +1296,13 @@ firebase.database.DataSnapshot.prototype.exists = function() {}; * * Passing a relative path to the `child()` method of a DataSnapshot returns * another `DataSnapshot` for the location at the specified relative path. The - * relative path can either be a simple child name (e.g. "ada") or a deeper, - * slash-separated path (e.g. "ada/name/first"). If the child location has no - * data, an empty `DataSnapshot` (that is, a `DataSnapshot` whose value is null) is - * returned. + * relative path can either be a simple child name (for example, "ada") or a + * deeper, slash-separated path (for example, "ada/name/first"). If the child + * location has no data, an empty `DataSnapshot` (that is, a `DataSnapshot` + * whose value is `null`) is returned. * * @example - * // Assume we have the following data in our database: + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1208,7 +1314,7 @@ firebase.database.DataSnapshot.prototype.exists = function() {}; * var ref = firebase.database().ref("users/ada"); * ref.once("value") * .then(function(snapshot) { - * var name = snapshot.child("name").val(); // { first: "Ada", last: "Lovelace"} + * var name = snapshot.child("name").val(); // {first:"Ada",last:"Lovelace"} * var firstName = snapshot.child("name/first").val(); // "Ada" * var lastName = snapshot.child("name").child("last").val(); // "Lovelace" * var age = snapshot.child("age").val(); // null @@ -1224,7 +1330,7 @@ firebase.database.DataSnapshot.prototype.child = function(path) {}; * Returns true if the specified child path has (non-null) data. * * @example - * // Assume we have the following data in the database + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1241,7 +1347,8 @@ firebase.database.DataSnapshot.prototype.child = function(path) {}; * }); * * @param {string} path A relative path to the location of a potential child. - * @return {boolean} true if data exists at the specified child path; else false. + * @return {boolean} `true` if data exists at the specified child path; else + * `false`. */ firebase.database.DataSnapshot.prototype.hasChild = function(path) {}; @@ -1249,10 +1356,10 @@ firebase.database.DataSnapshot.prototype.hasChild = function(path) {}; /** * Gets the priority value of the data in this `DataSnapshot`. * - * Applications need not use priority, but can order collections by + * Applications need not use priority but can order collections by * ordinary properties (see * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data + * https://firebase.google.com/docs/database/web/lists-of-data#sorting_and_filtering_data * Sorting and filtering data}). * * @return {string|number|null} @@ -1263,19 +1370,19 @@ firebase.database.DataSnapshot.prototype.getPriority = function() {}; /** * Enumerates the top-level children in the `DataSnapshot`. * - * Because of the way JavaScript Objects work, the ordering of data in the - * JavaScript Object returned by `val()` is not guaranteed to match the ordering + * Because of the way JavaScript objects work, the ordering of data in the + * JavaScript object returned by `val()` is not guaranteed to match the ordering * on the server nor the ordering of `child_added` events. That is where * `forEach()` comes in handy. It guarantees the children of a `DataSnapshot` - * will be iterated in their query-order. + * will be iterated in their query order. * * If no explicit `orderBy*()` method is used, results are returned - * ordered by key (unless priorities are used, in which case results are + * ordered by key (unless priorities are used, in which case, results are * returned by priority). * * @example * - * // Assume we have the following data in our database: + * // Assume we have the following data in the Database: * { * "users": { * "ada": { @@ -1289,8 +1396,9 @@ firebase.database.DataSnapshot.prototype.getPriority = function() {}; * } * } * - * // Loop through users in order with the forEach() method. The callback provided - * // to will be called synchronously with a DataSnapshot for each child: + * // Loop through users in order with the forEach() method. The callback + * // provided to forEach() will be called synchronously with a DataSnapshot + * // for each child: * var query = firebase.database().ref("users").orderByKey(); * query.once("value") * .then(function(snapshot) { @@ -1304,8 +1412,8 @@ firebase.database.DataSnapshot.prototype.getPriority = function() {}; * * @example * // You can cancel the enumeration at any point by having your callback - * // function return true. For example, the following code sample will only fire - * // the callback function one time. + * // function return true. For example, the following code sample will only + * // fire the callback function one time: * var query = firebase.database().ref("users").orderByKey(); * query.once("value") * .then(function(snapshot) { @@ -1318,7 +1426,7 @@ firebase.database.DataSnapshot.prototype.getPriority = function() {}; * }); * * @param {function(!firebase.database.DataSnapshot): boolean} action A function - * which will be called for each child DataSnapshot. The callback can return + * that will be called for each child DataSnapshot. The callback can return * true to cancel further enumeration. * @return {boolean} true if enumeration was canceled due to your callback * returning true. @@ -1327,15 +1435,17 @@ firebase.database.DataSnapshot.prototype.forEach = function(action) {}; /** - * Returns true if the DataSnapshot child properties. + * Returns whether or not the `DataSnapshot` has any non-`null` child + * properties. * - * You can use `hasChildren()` to determine if a `DataSnapshot` has any children. If - * it does, you can enumerate them using `forEach()`. If it does not, then either - * this snapshot contains a primitive value (which can be retrieved with `val()`) - * or it is empty (in which case `val()` will return `null`). + * You can use `hasChildren()` to determine if a `DataSnapshot` has any + * children. If it does, you can enumerate them using `forEach()`. If it + * doesn't, then either this snapshot contains a primitive value (which can be + * retrieved with `val()`) or it is empty (in which case, `val()` will return + * `null`). * * @example - * // Assume we have the following data in the database + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1359,13 +1469,13 @@ firebase.database.DataSnapshot.prototype.hasChildren = function() {}; /** * The key (last part of the path) of the location of this `DataSnapshot`. * - * The last token in a database location is considered its key. For example, + * The last token in a Database location is considered its key. For example, * "ada" is the key for the /users/ada/ node. Accessing the key on any * `DataSnapshot` will return the key for the location that generated it. - * However, accessing the key on the root URL of a database will return `null`. + * However, accessing the key on the root URL of a Database will return `null`. * * @example - * // Assume we have the following data in the database + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1377,15 +1487,15 @@ firebase.database.DataSnapshot.prototype.hasChildren = function() {}; * ref.once("value") * .then(function(snapshot) { * var key = snapshot.key; // "ada" - * var childKey = snapshot.child("name/last"); // "last" + * var childKey = snapshot.child("name/last").key; // "last" * }); * * @example * var rootRef = firebase.database().ref(); - * ref.once("value") + * rootRef.once("value") * .then(function(snapshot) { * var key = snapshot.key; // null - * var childKey = snapshot.child("users/ada"); // "ada" + * var childKey = snapshot.child("users/ada").key; // "ada" * }); * * @type {string|null} @@ -1394,10 +1504,10 @@ firebase.database.DataSnapshot.prototype.key; /** - * Return the number of child properties of this `DataSnapshot`. + * Returns the number of child properties of this `DataSnapshot`. * * @example - * // Assume we have the following data in the database + * // Assume we have the following data in the Database: * { * "name": { * "first": "Ada", @@ -1429,19 +1539,20 @@ firebase.database.DataSnapshot.prototype.ref; /** * The `onDisconnect` class allows you to write or clear data when your client - * disconnects from the database server. These updates occur whether your + * disconnects from the Database server. These updates occur whether your * client disconnects cleanly or not, so you can rely on them to clean up data * even if a connection is dropped or a client crashes. * * The `onDisconnect` class is most commonly used to manage presence in * applications where it is useful to detect how many clients are connected and * when other clients disconnect. See - * {@link https://firebase.google.com/docs/database/web/offline-capabilities - * Offline Capabilities} for more information. + * {@link + * https://firebase.google.com/docs/database/web/offline-capabilities + * Enabling Offline Capabilities in JavaScript} for more information. * - * Note that these functions should be called before any data is written to - * avoid problems if a connection is dropped before the requests can be - * transferred to the database server. + * To avoid problems when a connection is dropped before the requests can be + * transferred to the Database server, these functions should be called before + * writing any data. * * Note that `onDisconnect` operations are only triggered once. If you want an * operation to occur each time a disconnect occurs, you'll need to re-establish @@ -1457,14 +1568,13 @@ firebase.database.OnDisconnect = function() {}; * location and all children. * * If a write has been queued for this location via a `set()` or `update()` at a - * parent location, the write at this location will be canceled though all other - * siblings will still be written. + * parent location, the write at this location will be canceled, though writes + * to sibling locations will still occur. * * @example * var ref = firebase.database().ref("onlineState"); * ref.onDisconnect().set(false); - * ... - * // nevermind + * // ... sometime later * ref.onDisconnect().cancel(); * * @param {function(?Error)=} onComplete An optional callback function that will @@ -1495,15 +1605,12 @@ firebase.database.OnDisconnect.prototype.remove = function(onComplete) {}; * client is disconnected (due to closing the browser, navigating to a new page, * or network issues). * - * Ensure the data at this location is set to the specified value when the - * client is disconnected (due to closing the browser, navigating to a new page, - * or network issues). - * - * `set()` is especially useful for implementing "presence" systems, where a value - * should be changed or cleared when a user disconnects so that he appears - * "offline" to other users. See - * {@link https://firebase.google.com/docs/database/web/offline-capabilities - * Offline Capabilities} for more information. + * `set()` is especially useful for implementing "presence" systems, where a + * value should be changed or cleared when a user disconnects so that they + * appear "offline" to other users. See + * {@link + * https://firebase.google.com/docs/database/web/offline-capabilities + * Enabling Offline Capabilities in JavaScript} for more information. * * Note that `onDisconnect` operations are only triggered once. If you want an * operation to occur each time a disconnect occurs, you'll need to re-establish @@ -1515,15 +1622,14 @@ firebase.database.OnDisconnect.prototype.remove = function(onComplete) {}; * * @param {*} value The value to be written to this location on * disconnect (can be an object, array, string, number, boolean, or null). - * @param {function(?Error)=} onComplete An optional callback function that will - * be called when synchronization to the database server has completed. The - * callback will be passed a single parameter: null for success, or an Error - * object indicating a failure. + * @param {function(?Error)=} onComplete An optional callback function that + * will be called when synchronization to the Database server has completed. + * The callback will be passed a single parameter: null for success, or an + * `Error` object indicating a failure. * @return {!firebase.Promise} Resolves when synchronization to the - * database is complete. + * Database is complete. */ -firebase.database.OnDisconnect.prototype.set = - function(value, onComplete) {}; +firebase.database.OnDisconnect.prototype.set = function(value, onComplete) {}; /** @@ -1531,12 +1637,6 @@ firebase.database.OnDisconnect.prototype.set = * when the client is disconnected (due to closing the browser, navigating to a * new page, or network issues). * - * Applications need not use priority, but can order collections by - * ordinary properties (see - * {@link - * https://firebase.google.com/docs/database/web/retrieve-data#sorting_and_filtering_data - * Sorting and filtering data}). - * * @param {*} value * @param {number|string|null} priority * @param {function(?Error)=} onComplete @@ -1547,20 +1647,20 @@ firebase.database.OnDisconnect.prototype.setWithPriority = /** - * Writes multiple values this location when the client is disconnected (due to - * closing the browser, navigating to a new page, or network issues). + * Writes multiple values at this location when the client is disconnected (due + * to closing the browser, navigating to a new page, or network issues). * - * The `values` argument contains multiple property/value pairs that will be - * written to the database together. Each child property can either be a simple - * property (for example, "name"), or a relative path (for example, - * "name/first") from the current location to the data to update. + * The `values` argument contains multiple property-value pairs that will be + * written to the Database together. Each child property can either be a simple + * property (for example, "name") or a relative path (for example, "name/first") + * from the current location to the data to update. * * As opposed to the `set()` method, `update()` can be use to selectively update * only the referenced properties at the current location (instead of replacing * all the child properties at the current location). * - * See {@link firebase.database.Reference#update} for examples of using - * the connected version of `update`. + * See more examples using the connected version of + * {@link firebase.database.Reference#update `update()`}. * * @example * var ref = firebase.database().ref("users/ada"); @@ -1568,7 +1668,7 @@ firebase.database.OnDisconnect.prototype.setWithPriority = * onlineState: true, * status: "I'm online." * }); - * ref.onDisconnect.update({ + * ref.onDisconnect().update({ * onlineState: false, * status: "I'm offline." * }); @@ -1579,7 +1679,7 @@ firebase.database.OnDisconnect.prototype.setWithPriority = * callback will be passed a single parameter: null for success, or an Error * object indicating a failure. * @return {!firebase.Promise} Resolves when synchronization to the - * database is complete. + * Database is complete. */ firebase.database.OnDisconnect.prototype.update = function(values, onComplete) {}; diff --git a/lib/firebase/firebase-database.js b/lib/firebase/firebase-database.js index 438f9680..0b7438cc 100644 --- a/lib/firebase/firebase-database.js +++ b/lib/firebase/firebase-database.js @@ -1,244 +1,260 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ -(function() {var g,n=this;function p(a){return void 0!==a}function aa(){}function ba(a){a.Wb=function(){return a.bf?a.bf:a.bf=new a}} -function ca(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null"; -else if("function"==b&&"undefined"==typeof a.call)return"object";return b}function da(a){return"array"==ca(a)}function ea(a){var b=ca(a);return"array"==b||"object"==b&&"number"==typeof a.length}function q(a){return"string"==typeof a}function fa(a){return"number"==typeof a}function ga(a){return"function"==ca(a)}function ha(a){var b=typeof a;return"object"==b&&null!=a||"function"==b}function ia(a,b,c){return a.call.apply(a.bind,arguments)} -function ja(a,b,c){if(!a)throw Error();if(2e;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.N[0];c=a.N[1];for(var h=a.N[2],k=a.N[3],m=a.N[4],l,e=0;80>e;e++)40>e?20>e?(f=k^c&(h^k),l=1518500249):(f=c^h^k,l=1859775393):60>e?(f=c&h|k&(c|h),l=2400959708):(f=c^h^k,l=3395469782),f=(b<< -5|b>>>27)+f+m+l+d[e]&4294967295,m=k,k=h,h=(c<<30|c>>>2)&4294967295,c=b,b=f;a.N[0]=a.N[0]+b&4294967295;a.N[1]=a.N[1]+c&4294967295;a.N[2]=a.N[2]+h&4294967295;a.N[3]=a.N[3]+k&4294967295;a.N[4]=a.N[4]+m&4294967295} -ma.prototype.update=function(a,b){if(null!=a){p(b)||(b=a.length);for(var c=b-this.Ya,d=0,e=this.Wd,f=this.ac;db?e+="000":256>b?e+="00":4096>b&&(e+="0");return Da[a]=e+b.toString(16)}),'"')};var v;a:{var Fa=n.navigator;if(Fa){var Ga=Fa.userAgent;if(Ga){v=Ga;break a}}v=""};function Ha(a){if(Error.captureStackTrace)Error.captureStackTrace(this,Ha);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}ka(Ha,Error);Ha.prototype.name="CustomError";var w=Array.prototype,Ia=w.indexOf?function(a,b,c){return w.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(q(a))return q(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc?null:q(a)?a.charAt(c):a[c]}function Pa(a,b,c){for(var d=a.length,e=q(a)?a.split(""):a,f=0;f=arguments.length?w.slice.call(a,b):w.slice.call(a,b,c)} -function Sa(a,b){a.sort(b||Ta)}function Ta(a,b){return a>b?1:aparseFloat(a))?String(b):a})();var Ya=null,Za=null,$a=null;function ab(a,b){if(!ea(a))throw Error("encodeByteArray takes an array as a parameter");bb();for(var c=b?Za:Ya,d=[],e=0;e>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|l>>6,l=l&63;m||(l=64,h||(k=64));d.push(c[u],c[f],c[k],c[l])}return d.join("")} -function bb(){if(!Ya){Ya={};Za={};$a={};for(var a=0;65>a;a++)Ya[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),Za[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),$a[Za[a]]=a,62<=a&&($a["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function cb(a){n.setTimeout(function(){throw a;},0)}var db; -function eb(){var a=n.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&-1==v.indexOf("Presto")&&(a=function(){var a=document.createElement("iframe");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+"//"+b.location.host,a=r(function(a){if(("*"==d||a.origin== -d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&-1==v.indexOf("Trident")&&-1==v.indexOf("MSIE")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(p(c.next)){c=c.next;var a=c.Le;c.Le=null;a()}};return function(a){d.next={Le:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("script")?function(a){var b= -document.createElement("script");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){n.setTimeout(a,0)}};function fb(a,b){gb||hb();ib||(gb(),ib=!0);jb.push(new kb(a,b))}var gb;function hb(){if(n.Promise&&n.Promise.resolve){var a=n.Promise.resolve();gb=function(){a.then(lb)}}else gb=function(){var a=lb;!ga(n.setImmediate)||n.Window&&n.Window.prototype&&n.Window.prototype.setImmediate==n.setImmediate?(db||(db=eb()),db(a)):n.setImmediate(a)}}var ib=!1,jb=[];[].push(function(){ib=!1;jb=[]}); -function lb(){for(;jb.length;){var a=jb;jb=[];for(var b=0;bc&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function Db(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")} -function A(a,b,c,d){if((!d||p(c))&&!ga(c))throw Error(Db(a,b,d)+"must be a valid function.");}function Eb(a,b,c){if(p(c)&&(!ha(c)||null===c))throw Error(Db(a,b,!0)+"must be a valid context object.");};function Fb(a){var b=[];Cb(a,function(a,d){da(d)?Ja(d,function(d){b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))}):b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))});return b.length?"&"+b.join("&"):""};var Gb=n.Promise||mb;mb.prototype["catch"]=mb.prototype.Ag;function Hb(){var a=this;this.reject=this.resolve=null;this.sa=new Gb(function(b,c){a.resolve=b;a.reject=c})}function Ib(a,b){return function(c,d){c?a.reject(c):a.resolve(d);ga(b)&&(Jb(a.sa),1===b.length?b(c):b(c,d))}}function Jb(a){a.then(void 0,aa)};function Kb(a,b){if(!a)throw Lb(b);}function Lb(a){return Error("Firebase Database ("+firebase.SDK_VERSION+") INTERNAL ASSERT FAILED: "+a)};function Mb(a){for(var b=[],c=0,d=0;d=e&&(e-=55296,d++,Kb(de?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function Nb(a){for(var b=0,c=0;cd?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function Ob(a){return"undefined"!==typeof JSON&&p(JSON.parse)?JSON.parse(a):za(a)}function B(a){if("undefined"!==typeof JSON&&p(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ba(new Aa,a,b);a=b.join("")}return a};function Pb(a,b){this.committed=a;this.snapshot=b};function Qb(){return"undefined"!==typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test("undefined"!==typeof navigator&&"string"===typeof navigator.userAgent?navigator.userAgent:"")};function Rb(a){this.te=a;this.Bd=[];this.Rb=0;this.Yd=-1;this.Gb=null}function Sb(a,b,c){a.Yd=b;a.Gb=c;a.Yd");return a};function jc(){this.uc={}}function kc(a,b,c){p(c)||(c=1);Bb(a.uc,b)||(a.uc[b]=0);a.uc[b]+=c}jc.prototype.get=function(){return ya(this.uc)};function lc(a){this.Nf=a;this.rd=null}lc.prototype.get=function(){var a=this.Nf.get(),b=ya(a);if(this.rd)for(var c in this.rd)b[c]-=this.rd[c];this.rd=a;return b};function mc(){this.wb=[]}function nc(a,b){for(var c=null,d=0;d>4);64!=k&&(d.push(h<<4&240|k>>2),64!=m&&d.push(k<<6&192|m))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;ca.ac?a.update(a.zd,56-a.ac):a.update(a.zd,a.Ya-(a.ac-56));for(var d=a.Ya-1;56<=d;d--)a.Wd[d]=c&255,c/=256;na(a,a.Wd);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.N[d]>>e&255,++c;return ab(b)}function Vc(a){for(var b="",c=0;c.firebaseio.com instead"); -c&&"undefined"!=c||$c("Cannot parse Firebase url. Please use https://.firebaseio.com");d||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&O("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");return{kc:new gc(b,d,c,"ws"===e||"wss"===e),path:new L(f)}}function bd(a){return fa(a)&&(a!=a||a==Number.POSITIVE_INFINITY||a==Number.NEGATIVE_INFINITY)} -function cd(a){if("complete"===document.readyState)a();else{var b=!1,c=function(){document.body?b||(b=!0,a()):setTimeout(c,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&c()}),window.attachEvent("onload",c))}} -function Hc(a,b){if(a===b)return 0;if("[MIN_NAME]"===a||"[MAX_NAME]"===b)return-1;if("[MIN_NAME]"===b||"[MAX_NAME]"===a)return 1;var c=dd(a),d=dd(b);return null!==c?null!==d?0==c-d?a.length-b.length:c-d:-1:null!==d?1:aa?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function hd(a,b){if(da(a))for(var c=0;ca,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&& -(d="0"+d),c+=d;return c.toLowerCase()}var jd=/^-?\d{1,10}$/;function dd(a){return jd.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function Ub(a){try{a()}catch(b){setTimeout(function(){O("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function kd(a,b,c){Object.defineProperty(a,b,{get:c})}function ld(a,b){var c=setTimeout(a,b);"object"===typeof c&&c.unref&&c.unref();return c};function md(a){var b={},c={},d={},e="";try{var f=a.split("."),b=Ob(Tc(f[0])||""),c=Ob(Tc(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(h){}return{Fg:b,Me:c,data:d,xg:e}}function nd(a){a=md(a);var b=a.Me;return!!a.xg&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")}function od(a){a=md(a).Me;return"object"===typeof a&&!0===x(a,"admin")};function pd(a,b,c){this.f=Yc("p:rest:");this.M=a;this.Hb=b;this.Vd=c;this.aa={}}function qd(a,b){if(p(b))return"tag$"+b;H(rd(a.n),"should have a tag if it's not a default query.");return a.path.toString()}g=pd.prototype; -g.df=function(a,b,c,d){var e=a.path.toString();this.f("Listen called for "+e+" "+a.ka());var f=qd(a,c),h={};this.aa[f]=h;a=sd(a.n);var k=this;td(this,e+".json",a,function(a,b){var u=b;404===a&&(a=u=null);null===a&&k.Hb(e,u,!1,c);x(k.aa,f)===h&&d(a?401==a?"permission_denied":"rest_error:"+a:"ok",null)})};g.Ef=function(a,b){var c=qd(a,b);delete this.aa[c]};g.qf=function(){};g.re=function(){};g.gf=function(){};g.xd=function(){};g.put=function(){};g.ef=function(){};g.ye=function(){}; -function td(a,b,c,d){c=c||{};c.format="export";a.Vd.getToken(!1).then(function(e){(e=e&&e.accessToken)&&(c.auth=e);var f=(a.M.Sc?"https://":"http://")+a.M.host+b+"?"+Fb(c);a.f("Sending REST request for "+f);var h=new XMLHttpRequest;h.onreadystatechange=function(){if(d&&4===h.readyState){a.f("REST Response for "+f+" received. status:",h.status,"response:",h.responseText);var b=null;if(200<=h.status&&300>h.status){try{b=Ob(h.responseText)}catch(c){O("Failed to parse JSON response for "+f+": "+h.responseText)}d(null, -b)}else 401!==h.status&&404!==h.status&&O("Got unsuccessful REST response for "+f+" Status: "+h.status),d(h.status);d=null}};h.open("GET",f,!0);h.send()})};function vd(a,b,c){this.type=wd;this.source=a;this.path=b;this.children=c}vd.prototype.Nc=function(a){if(this.path.e())return a=this.children.subtree(new L(a)),a.e()?null:a.value?new $b(this.source,C,a.value):new vd(this.source,C,a);H(J(this.path)===a,"Can't get a merge for a child not on the path of the operation");return new vd(this.source,D(this.path),this.children)};vd.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"};function xd(a,b){this.zf={};this.Vc=new lc(a);this.wa=b;var c=1E4+2E4*Math.random();ld(r(this.rf,this),Math.floor(c))}xd.prototype.rf=function(){var a=this.Vc.get(),b={},c=!1,d;for(d in a)0=a.length){var b=Number(a);if(!isNaN(b)){e.Fe=b;e.frames=[];a=null;break a}}e.Fe=1;e.frames=[]}null!==a&&Gd(e,a)}};this.La.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.fb()}};Dd.prototype.start=function(){}; -Dd.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1parseFloat(b[1])&&(a=!0)}return!a&&null!==Cd&&!Ed};Dd.responsesRequiredToBeHealthy=2;Dd.healthyTimeout=3E4;g=Dd.prototype;g.sd=function(){Yb.remove("previous_websocket_failure")};function Gd(a,b){a.frames.push(b);if(a.frames.length==a.Fe){var c=a.frames.join("");a.frames=null;c=Ob(c);a.hg(c)}} -g.send=function(a){Fd(this);a=B(a);this.rb+=a.length;kc(this.Xa,"bytes_sent",a.length);a=gd(a,16384);1=this.g.compare(this.Uc,a)&&0>=this.g.compare(a,this.wc)};g.F=function(a,b,c,d,e,f){this.matches(new K(b,c))||(c=F);return this.he.F(a,b,c,d,e,f)}; -g.za=function(a,b,c){b.J()&&(b=F);var d=b.ob(this.g),d=d.ga(F),e=this;b.P(N,function(a,b){e.matches(new K(a,b))||(d=d.U(a,F))});return this.he.za(a,d,c)};g.ga=function(a){return a};g.Qa=function(){return!0};g.Vb=function(){return this.he};function le(a){this.ta=new ge(a);this.g=a.g;H(a.ya,"Only valid if limit has been set");this.pa=a.pa;this.Jb=!me(a)}g=le.prototype;g.F=function(a,b,c,d,e,f){this.ta.matches(new K(b,c))||(c=F);return a.R(b).$(c)?a:a.Fb()=this.g.compare(this.ta.Uc,f):0>=this.g.compare(f,this.ta.wc))d=d.U(f.name,f.S),e++;else break}}else{d=b.ob(this.g);d=d.ga(F);var k,m,l;if(this.Jb){b=d.$e(this.g);k=this.ta.wc;m=this.ta.Uc;var u=oe(this.g);l=function(a,b){return u(b,a)}}else b=d.Xb(this.g),k=this.ta.Uc, -m=this.ta.wc,l=oe(this.g);for(var e=0,z=!1;0=l(k,f)&&(z=!0),(h=z&&e=l(f,m))?e++:d=d.U(f.name,F)}return this.ta.Vb().za(a,d,c)};g.ga=function(a){return a};g.Qa=function(){return!0};g.Vb=function(){return this.ta.Vb()}; -function ne(a,b,c,d,e,f){var h;if(a.Jb){var k=oe(a.g);h=function(a,b){return k(b,a)}}else h=oe(a.g);H(b.Fb()==a.pa,"");var m=new K(c,d),l=a.Jb?pe(b,a.g):qe(b,a.g),u=a.ta.matches(m);if(b.Fa(c)){for(var z=b.R(c),l=e.fe(a.g,l,a.Jb);null!=l&&(l.name==c||b.Fa(l.name));)l=e.fe(a.g,l,a.Jb);e=null==l?1:h(l,m);if(u&&!d.e()&&0<=e)return null!=f&&Jd(f,new I("child_changed",d,c,z)),b.U(c,d);null!=f&&Jd(f,new I("child_removed",z,c));b=b.U(c,F);return null!=l&&a.ta.matches(l)?(null!=f&&Jd(f,new I("child_added", -l.S,l.name)),b.U(l.name,l.S)):b}return d.e()?b:u&&0<=h(l,m)?(null!=f&&(Jd(f,new I("child_removed",l.S,l.name)),Jd(f,new I("child_added",d,c))),b.U(c,d).U(l.name,F)):b};function Qc(a,b){this.B=a;H(p(this.B)&&null!==this.B,"LeafNode shouldn't be created with null/undefined value.");this.ba=b||F;re(this.ba);this.Eb=null}var se=["object","boolean","number","string"];g=Qc.prototype;g.J=function(){return!0};g.C=function(){return this.ba};g.ga=function(a){return new Qc(this.B,a)};g.R=function(a){return".priority"===a?this.ba:F};g.Q=function(a){return a.e()?this:".priority"===J(a)?this.ba:F};g.Fa=function(){return!1};g.Ze=function(){return null}; -g.U=function(a,b){return".priority"===a?this.ga(b):b.e()&&".priority"!==a?this:F.U(a,b).ga(this.ba)};g.F=function(a,b){var c=J(a);if(null===c)return b;if(b.e()&&".priority"!==c)return this;H(".priority"!==c||1===$d(a),".priority must be the last token in a path");return this.U(c,F.F(D(a),b))};g.e=function(){return!1};g.Fb=function(){return 0};g.P=function(){return!1};g.H=function(a){return a&&!this.C().e()?{".value":this.Ea(),".priority":this.C().H()}:this.Ea()}; -g.hash=function(){if(null===this.Eb){var a="";this.ba.e()||(a+="priority:"+te(this.ba.H())+":");var b=typeof this.B,a=a+(b+":"),a="number"===b?a+id(this.B):a+this.B;this.Eb=Uc(a)}return this.Eb};g.Ea=function(){return this.B};g.tc=function(a){if(a===F)return 1;if(a instanceof P)return-1;H(a.J(),"Unknown node type");var b=typeof a.B,c=typeof this.B,d=Ia(se,b),e=Ia(se,c);H(0<=d,"Unknown leaf type: "+b);H(0<=e,"Unknown leaf type: "+c);return d===e?"object"===c?0:this.Bdocument.domain="'+document.domain+'";\x3c/script>');a=""+a+"";try{this.Ga.ib.open(),this.Ga.ib.write(a),this.Ga.ib.close()}catch(f){E("frame writing exception"),f.stack&&E(f.stack),E(f)}} -Te.prototype.close=function(){this.Ud=!1;if(this.Ga){this.Ga.ib.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ga&&(document.body.removeChild(a.Ga),a.Ga=null)},Math.floor(0))}var b=this.kb;b&&(this.kb=null,b())}; -function We(a){if(a.Ud&&a.Kd&&a.ve.count()<(0=a.Qc[0].Se.length+30+c.length){var e=a.Qc.shift(),c=c+"&seg"+d+"="+e.ug+"&ts"+d+"="+e.Bg+"&d"+d+"="+e.Se;d++}else break;Xe(a,b+c,a.$d);return!0}return!1}function Xe(a,b,c){function d(){a.ve.remove(c);We(a)}a.ve.add(c,1);var e=setTimeout(d,Math.floor(25E3));Ve(a,b,function(){clearTimeout(e);d()})} -function Ve(a,b,c){setTimeout(function(){try{if(a.Kd){var d=a.Ga.ib.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){E("Long-poll script failed to load: "+b);a.Kd=!1;a.close()};a.Ga.ib.body.appendChild(d)}}catch(e){}},Math.floor(1))};function Ye(a){Ze(this,a)}var $e=[Qe,Dd];function Ze(a,b){var c=Dd&&Dd.isAvailable(),d=c&&!(Yb.cf||!0===Yb.get("previous_websocket_failure"));b.Cg&&(c||O("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),d=!0);if(d)a.Wc=[Dd];else{var e=a.Wc=[];hd($e,function(a,b){b&&b.isAvailable()&&e.push(b)})}}function af(a){if(0=a.xf?(a.f("Secondary connection is healthy."),a.Cb=!0,a.D.sd(),a.D.start(),a.f("sending client ack on secondary"),a.D.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.I.send({t:"c",d:{t:"n",d:{}}}),a.Xc=a.D,hf(a)):(a.f("sending ping on secondary."),a.D.send({t:"c",d:{t:"p",d:{}}}))}bf.prototype.wd=function(a){kf(this);this.te(a)};function kf(a){a.Cb||(a.xe--,0>=a.xe&&(a.f("Primary connection is healthy."),a.Cb=!0,a.I.sd()))} -function gf(a,b){a.D=new b("c:"+a.id+":"+a.Oe++,a.M,a.yf);a.xf=b.responsesRequiredToBeHealthy||0;a.D.open(df(a,a.D),ef(a,a.D));ld(function(){a.D&&(a.f("Timed out trying to upgrade."),a.D.close())},Math.floor(6E4))}function ff(a,b,c){a.f("Realtime connection established.");a.I=b;a.L=1;a.Mc&&(a.Mc(c,a.yf),a.Mc=null);0===a.xe?(a.f("Primary connection is healthy."),a.Cb=!0):ld(function(){lf(a)},Math.floor(5E3))} -function lf(a){a.Cb||1!==a.L||(a.f("sending ping on primary."),nf(a,{t:"c",d:{t:"p",d:{}}}))}function nf(a,b){if(1!==a.L)throw"Connection is not connected";a.Xc.send(b)}bf.prototype.close=function(){2!==this.L&&(this.f("Closing realtime connection."),this.L=2,jf(this),this.ja&&(this.ja(),this.ja=null))};function jf(a){a.f("Shutting down all connections");a.I&&(a.I.close(),a.I=null);a.D&&(a.D.close(),a.D=null);a.md&&(clearTimeout(a.md),a.md=null)};function L(a,b){if(1==arguments.length){this.o=a.split("/");for(var c=0,d=0;d=a.o.length?null:a.o[a.Z]}function $d(a){return a.o.length-a.Z}function D(a){var b=a.Z;b=this.o.length)return null;for(var a=[],b=this.Z;b=this.o.length};g.$=function(a){if($d(this)!==$d(a))return!1;for(var b=this.Z,c=a.Z;b<=this.o.length;b++,c++)if(this.o[b]!==a.o[c])return!1;return!0}; -g.contains=function(a){var b=this.Z,c=a.Z;if($d(this)>$d(a))return!1;for(;b10485760/3&&10485760f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);H(20===c.length,"nextPushId: Length should be 20."); -return c}}();function Vf(a,b){this.Oa=a;this.ca=b?b:Wf}g=Vf.prototype;g.Ra=function(a,b){return new Vf(this.Oa,this.ca.Ra(a,b,this.Oa).Y(null,null,!1,null,null))};g.remove=function(a){return new Vf(this.Oa,this.ca.remove(a,this.Oa).Y(null,null,!1,null,null))};g.get=function(a){for(var b,c=this.ca;!c.e();){b=this.Oa(a,c.key);if(0===b)return c.value;0>b?c=c.left:0c?d=d.left:0e)a=this.le?a.left:a.right;else if(0===e){this.Sa.push(a);break}else this.Sa.push(a),a=this.le?a.right:a.left} -function R(a){if(0===a.Sa.length)return null;var b=a.Sa.pop(),c;c=a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value};if(a.le)for(b=b.left;!b.e();)a.Sa.push(b),b=b.right;else for(b=b.right;!b.e();)a.Sa.push(b),b=b.left;return c}function Zf(a){if(0===a.Sa.length)return null;var b;b=a.Sa;b=b[b.length-1];return a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value}}function $f(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:Wf;this.right=null!=e?e:Wf}g=$f.prototype; -g.Y=function(a,b,c,d,e){return new $f(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};g.count=function(){return this.left.count()+1+this.right.count()};g.e=function(){return!1};g.ia=function(a){return this.left.ia(a)||a(this.key,this.value)||this.right.ia(a)};function ag(a){return a.left.e()?a:ag(a.left)}g.Hc=function(){return ag(this).key};g.fc=function(){return this.right.e()?this.key:this.right.fc()}; -g.Ra=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.Y(null,null,null,e.left.Ra(a,b,c),null):0===d?e.Y(null,b,null,null,null):e.Y(null,null,null,null,e.right.Ra(a,b,c));return bg(e)};function cg(a){if(a.left.e())return Wf;a.left.fa()||a.left.left.fa()||(a=dg(a));a=a.Y(null,null,null,cg(a.left),null);return bg(a)} -g.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.fa()||c.left.left.fa()||(c=dg(c)),c=c.Y(null,null,null,c.left.remove(a,b),null);else{c.left.fa()&&(c=eg(c));c.right.e()||c.right.fa()||c.right.left.fa()||(c=fg(c),c.left.left.fa()&&(c=eg(c),c=fg(c)));if(0===b(a,c.key)){if(c.right.e())return Wf;d=ag(c.right);c=c.Y(d.key,d.value,null,null,cg(c.right))}c=c.Y(null,null,null,null,c.right.remove(a,b))}return bg(c)};g.fa=function(){return this.color}; -function bg(a){a.right.fa()&&!a.left.fa()&&(a=gg(a));a.left.fa()&&a.left.left.fa()&&(a=eg(a));a.left.fa()&&a.right.fa()&&(a=fg(a));return a}function dg(a){a=fg(a);a.right.left.fa()&&(a=a.Y(null,null,null,null,eg(a.right)),a=gg(a),a=fg(a));return a}function gg(a){return a.right.Y(null,null,a.color,a.Y(null,null,!0,null,a.right.left),null)}function eg(a){return a.left.Y(null,null,a.color,null,a.Y(null,null,!0,a.left.right,null))} -function fg(a){return a.Y(null,null,!a.color,a.left.Y(null,null,!a.left.color,null,null),a.right.Y(null,null,!a.right.color,null,null))}function hg(){}g=hg.prototype;g.Y=function(){return this};g.Ra=function(a,b){return new $f(a,b,null)};g.remove=function(){return this};g.count=function(){return 0};g.e=function(){return!0};g.ia=function(){return!1};g.Hc=function(){return null};g.fc=function(){return null};g.fa=function(){return!1};var Wf=new hg;function P(a,b,c){this.m=a;(this.ba=b)&&re(this.ba);a.e()&&H(!this.ba||this.ba.e(),"An empty node cannot have a priority");this.zb=c;this.Eb=null}g=P.prototype;g.J=function(){return!1};g.C=function(){return this.ba||F};g.ga=function(a){return this.m.e()?this:new P(this.m,a,this.zb)};g.R=function(a){if(".priority"===a)return this.C();a=this.m.get(a);return null===a?F:a};g.Q=function(a){var b=J(a);return null===b?this:this.R(b).Q(D(a))};g.Fa=function(a){return null!==this.m.get(a)}; -g.U=function(a,b){H(b,"We should always be passing snapshot nodes");if(".priority"===a)return this.ga(b);var c=new K(a,b),d,e;b.e()?(d=this.m.remove(a),c=Me(this.zb,c,this.m)):(d=this.m.Ra(a,b),c=Ke(this.zb,c,this.m));e=d.e()?F:this.ba;return new P(d,e,c)};g.F=function(a,b){var c=J(a);if(null===c)return b;H(".priority"!==J(a)||1===$d(a),".priority must be the last token in a path");var d=this.R(c).F(D(a),b);return this.U(c,d)};g.e=function(){return this.m.e()};g.Fb=function(){return this.m.count()}; -var ig=/^(0|[1-9]\d*)$/;g=P.prototype;g.H=function(a){if(this.e())return null;var b={},c=0,d=0,e=!0;this.P(N,function(f,h){b[f]=h.H(a);c++;e&&ig.test(f)?d=Math.max(d,Number(f)):e=!1});if(!a&&e&&d<2*c){var f=[],h;for(h in b)f[h]=b[h];return f}a&&!this.C().e()&&(b[".priority"]=this.C().H());return b};g.hash=function(){if(null===this.Eb){var a="";this.C().e()||(a+="priority:"+te(this.C().H())+":");this.P(N,function(b,c){var d=c.hash();""!==d&&(a+=":"+b+":"+d)});this.Eb=""===a?"":Uc(a)}return this.Eb}; -g.Ze=function(a,b,c){return(c=jg(this,c))?(a=Xf(c,new K(a,b)))?a.name:null:Xf(this.m,a)};function pe(a,b){var c;c=(c=jg(a,b))?(c=c.Hc())&&c.name:a.m.Hc();return c?new K(c,a.m.get(c)):null}function qe(a,b){var c;c=(c=jg(a,b))?(c=c.fc())&&c.name:a.m.fc();return c?new K(c,a.m.get(c)):null}g.P=function(a,b){var c=jg(this,a);return c?c.ia(function(a){return b(a.name,a.S)}):this.m.ia(b)};g.Xb=function(a){return this.Yb(a.Ic(),a)}; -g.Yb=function(a,b){var c=jg(this,b);if(c)return c.Yb(a,function(a){return a});for(var c=this.m.Yb(a.name,Jc),d=Zf(c);null!=d&&0>b.compare(d,a);)R(c),d=Zf(c);return c};g.$e=function(a){return this.$b(a.Gc(),a)};g.$b=function(a,b){var c=jg(this,b);if(c)return c.$b(a,function(a){return a});for(var c=this.m.$b(a.name,Jc),d=Zf(c);null!=d&&0=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.n.ya)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.n.ne(a),this.Oc)}; -g.oe=function(a){y("Query.limitToLast",1,1,arguments.length);if(!fa(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.n.ya)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.n.oe(a),this.Oc)}; -g.lg=function(a){y("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');Lf("Query.orderByChild",a);wg(this,"Query.orderByChild");var b=new L(a);if(b.e())throw Error("Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead."); -b=new xe(b);b=He(this.n,b);ug(b);return new X(this.u,this.path,b,!0)};g.mg=function(){y("Query.orderByKey",0,0,arguments.length);wg(this,"Query.orderByKey");var a=He(this.n,ee);ug(a);return new X(this.u,this.path,a,!0)};g.ng=function(){y("Query.orderByPriority",0,0,arguments.length);wg(this,"Query.orderByPriority");var a=He(this.n,N);ug(a);return new X(this.u,this.path,a,!0)}; -g.og=function(){y("Query.orderByValue",0,0,arguments.length);wg(this,"Query.orderByValue");var a=He(this.n,De);ug(a);return new X(this.u,this.path,a,!0)};g.Nd=function(a,b){y("Query.startAt",0,2,arguments.length);Ef("Query.startAt",a,this.path,!0);Kf("Query.startAt",b);var c=this.n.Nd(a,b);vg(c);ug(c);if(this.n.la)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");p(a)||(b=a=null);return new X(this.u,this.path,c,this.Oc)}; -g.fd=function(a,b){y("Query.endAt",0,2,arguments.length);Ef("Query.endAt",a,this.path,!0);Kf("Query.endAt",b);var c=this.n.fd(a,b);vg(c);ug(c);if(this.n.oa)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new X(this.u,this.path,c,this.Oc)}; -g.Rf=function(a,b){y("Query.equalTo",1,2,arguments.length);Ef("Query.equalTo",a,this.path,!1);Kf("Query.equalTo",b);if(this.n.la)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.n.oa)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.Nd(a,b).fd(a,b)}; -g.toString=function(){y("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.Z;c=b&&dh(h,c.path)?d=!1:c.path.contains(h.path)&&(e=!0));f--}if(d){if(e)this.T=eh(this.ma,fh,C),this.Cc=0f.Cc,"Stacking an older write on top of newer ones");p(h)||(h=!0);f.ma.push({path:b,Ja:c,Zc:d,visible:h});h&&(f.T=Sg(f.T,b,c));f.Cc=d;return e?Fh(a,new $b(Ng,b,c)):[]}function Gh(a,b,c,d){var e=a.lb;H(d>e.Cc,"Stacking an older merge on top of newer ones");e.ma.push({path:b,children:c,Zc:d,visible:!0});e.T=Tg(e.T,b,c);e.Cc=d;c=Bg(c);return Fh(a,new vd(Ng,b,c))} -function Hh(a,b,c){c=c||!1;var d=ch(a.lb,b);if(a.lb.Ed(b)){var e=Q;null!=d.Ja?e=e.set(C,!0):Cb(d.children,function(a,b){e=e.set(new L(a),b)});return Fh(a,new Mg(d.path,e,c))}return[]}function Ih(a,b,c){c=Bg(c);return Fh(a,new vd(Pg,b,c))}function Jh(a,b,c,d){d=Kh(a,d);if(null!=d){var e=Lh(d);d=e.path;e=e.Ib;b=T(d,b);c=new $b(new Og(!1,!0,e,!0),b,c);return Mh(a,d,c)}return[]} -function Nh(a,b,c,d){if(d=Kh(a,d)){var e=Lh(d);d=e.path;e=e.Ib;b=T(d,b);c=Bg(c);c=new vd(new Og(!1,!0,e,!0),b,c);return Mh(a,d,c)}return[]} -Dh.prototype.Ob=function(a,b){var c=a.path,d=null,e=!1;Ig(this.xa,c,function(a,b){var f=T(a,c);d=d||b.jb(f);e=e||null!=Zg(b)});var f=this.xa.get(c);f?(e=e||null!=Zg(f),d=d||f.jb(C)):(f=new Yg,this.xa=this.xa.set(c,f));var h;null!=d?h=!0:(h=!1,d=F,Lg(this.xa.subtree(c),function(a,b){var c=b.jb(C);c&&(d=d.U(a,c))}));var k=null!=ah(f,a);if(!k&&!S(a.n)){var m=Oh(a);H(!(m in this.jc),"View does not exist, but we have a tag");var l=Ph++;this.jc[m]=l;this.De["_"+l]=m}h=f.Ob(a,b,new gh(c,this.lb),d,h);k|| -e||(f=ah(f,a),h=h.concat(Qh(this,a,f)));return h}; -Dh.prototype.mb=function(a,b,c){var d=a.path,e=this.xa.get(d),f=[];if(e&&("default"===a.ka()||null!=ah(e,a))){f=e.mb(a,b,c);e.e()&&(this.xa=this.xa.remove(d));e=f.sg;f=f.Tf;b=-1!==Pa(e,function(a){return S(a.n)});var h=Gg(this.xa,d,function(a,b){return null!=Zg(b)});if(b&&!h&&(d=this.xa.subtree(d),!d.e()))for(var d=Rh(d),k=0;ke;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.M[0];c=a.M[1];for(var h=a.M[2],k=a.M[3],l=a.M[4],m,e=0;80>e;e++)40>e?20>e?(f=k^c&(h^k),m=1518500249):(f=c^h^k,m=1859775393):60>e?(f=c&h|k&(c|h),m=2400959708):(f=c^h^k,m=3395469782),f=(b<< +5|b>>>27)+f+l+m+d[e]&4294967295,l=k,k=h,h=(c<<30|c>>>2)&4294967295,c=b,b=f;a.M[0]=a.M[0]+b&4294967295;a.M[1]=a.M[1]+c&4294967295;a.M[2]=a.M[2]+h&4294967295;a.M[3]=a.M[3]+k&4294967295;a.M[4]=a.M[4]+l&4294967295} +na.prototype.update=function(a,b){if(null!=a){n(b)||(b=a.length);for(var c=b-this.Wa,d=0,e=this.Vd,f=this.$b;db?e+="000":256>b?e+="00":4096>b&&(e+="0");return Ea[a]=e+b.toString(16)}),'"')};var t;a:{var Ga=aa.navigator;if(Ga){var Ha=Ga.userAgent;if(Ha){t=Ha;break a}}t=""};var v=Array.prototype,Ia=v.indexOf?function(a,b,c){return v.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(p(a))return p(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc?null:p(a)?a.charAt(c):a[c]}function Pa(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f=arguments.length?v.slice.call(a,b):v.slice.call(a,b,c)} +function Sa(a,b){a.sort(b||Ta)}function Ta(a,b){return a>b?1:aparseFloat(a))?String(b):a})();var Ya=null,Za=null,$a=null;function ab(a,b){if(!fa(a))throw Error("encodeByteArray takes an array as a parameter");bb();for(var c=b?Za:Ya,d=[],e=0;e>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|m>>6,m=m&63;l||(m=64,h||(k=64));d.push(c[u],c[f],c[k],c[m])}return d.join("")} +function bb(){if(!Ya){Ya={};Za={};$a={};for(var a=0;65>a;a++)Ya[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),Za[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),$a[Za[a]]=a,62<=a&&($a["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function cb(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function w(a,b){if(Object.prototype.hasOwnProperty.call(a,b))return a[b]}function db(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])};function x(a,b,c,d){var e;dc&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function y(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")} +function A(a,b,c,d){if((!d||n(c))&&!ha(c))throw Error(y(a,b,d)+"must be a valid function.");}function eb(a,b,c){if(n(c)&&(!ia(c)||null===c))throw Error(y(a,b,!0)+"must be a valid context object.");};function fb(a){var b=[];db(a,function(a,d){ea(d)?Ja(d,function(d){b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))}):b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))});return b.length?"&"+b.join("&"):""};var gb=firebase.Promise;function hb(){var a=this;this.reject=this.resolve=null;this.ra=new gb(function(b,c){a.resolve=b;a.reject=c})}function ib(a,b){return function(c,d){c?a.reject(c):a.resolve(d);ha(b)&&(jb(a.ra),1===b.length?b(c):b(c,d))}}function jb(a){a.then(void 0,ba)};function kb(a,b){if(!a)throw lb(b);}function lb(a){return Error("Firebase Database ("+firebase.SDK_VERSION+") INTERNAL ASSERT FAILED: "+a)};function mb(a){for(var b=[],c=0,d=0;d=e&&(e-=55296,d++,kb(de?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function nb(a){for(var b=0,c=0;cd?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function ob(a){return"undefined"!==typeof JSON&&n(JSON.parse)?JSON.parse(a):Aa(a)}function B(a){if("undefined"!==typeof JSON&&n(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ca(new Ba,a,b);a=b.join("")}return a};function pb(a,b){this.committed=a;this.snapshot=b};function qb(){return"undefined"!==typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test("undefined"!==typeof navigator&&"string"===typeof navigator.userAgent?navigator.userAgent:"")};function rb(a){this.re=a;this.Bd=[];this.Qb=0;this.Xd=-1;this.Fb=null}function sb(a,b,c){a.Xd=b;a.Fb=c;a.Xd");return a};function Kb(){this.tc={}}function Lb(a,b,c){n(c)||(c=1);cb(a.tc,b)||(a.tc[b]=0);a.tc[b]+=c}Kb.prototype.get=function(){return za(this.tc)};function Mb(a){this.Ef=a;this.rd=null}Mb.prototype.get=function(){var a=this.Ef.get(),b=za(a);if(this.rd)for(var c in this.rd)b[c]-=this.rd[c];this.rd=a;return b};function Nb(){this.vb=[]}function Ob(a,b){for(var c=null,d=0;d>4);64!=k&&(d.push(h<<4&240|k>>2),64!=l&&d.push(k<<6&192|l))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;ca.$b?a.update(a.zd,56-a.$b):a.update(a.zd,a.Wa-(a.$b-56));for(var d=a.Wa-1;56<=d;d--)a.Vd[d]=c&255,c/=256;oa(a,a.Vd);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.M[d]>>e&255,++c;return ab(b)}function vc(a){for(var b="",c=0;c.firebaseio.com instead"); +c&&"undefined"!=c||Ac("Cannot parse Firebase url. Please use https://.firebaseio.com");d||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&O("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");return{jc:new Hb(b,d,c,"ws"===e||"wss"===e),path:new L(f)}}function Cc(a){return ga(a)&&(a!=a||a==Number.POSITIVE_INFINITY||a==Number.NEGATIVE_INFINITY)} +function Dc(a){if("complete"===document.readyState)a();else{var b=!1,c=function(){document.body?b||(b=!0,a()):setTimeout(c,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&c()}),window.attachEvent("onload",c))}} +function hc(a,b){if(a===b)return 0;if("[MIN_NAME]"===a||"[MAX_NAME]"===b)return-1;if("[MIN_NAME]"===b||"[MAX_NAME]"===a)return 1;var c=Ec(a),d=Ec(b);return null!==c?null!==d?0==c-d?a.length-b.length:c-d:-1:null!==d?1:aa?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function Ic(a,b){if(ea(a))for(var c=0;ca,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&& +(d="0"+d),c+=d;return c.toLowerCase()}var Kc=/^-?\d{1,10}$/;function Ec(a){return Kc.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function ub(a){try{a()}catch(b){setTimeout(function(){O("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function Lc(a,b,c){Object.defineProperty(a,b,{get:c})}function Mc(a,b){var c=setTimeout(a,b);"object"===typeof c&&c.unref&&c.unref();return c};function Nc(a){var b={},c={},d={},e="";try{var f=a.split("."),b=ob(tc(f[0])||""),c=ob(tc(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(h){}return{tg:b,Ie:c,data:d,mg:e}}function Oc(a){a=Nc(a);var b=a.Ie;return!!a.mg&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")}function Pc(a){a=Nc(a).Ie;return"object"===typeof a&&!0===w(a,"admin")};function Qc(a,b,c){this.f=yc("p:rest:");this.L=a;this.Gb=b;this.$c=c;this.$={}}function Rc(a,b){if(n(b))return"tag$"+b;H(Sc(a.m),"should have a tag if it's not a default query.");return a.path.toString()}g=Qc.prototype; +g.$e=function(a,b,c,d){var e=a.path.toString();this.f("Listen called for "+e+" "+a.ja());var f=Rc(a,c),h={};this.$[f]=h;a=Tc(a.m);var k=this;Uc(this,e+".json",a,function(a,b){var u=b;404===a&&(a=u=null);null===a&&k.Gb(e,u,!1,c);w(k.$,f)===h&&d(a?401==a?"permission_denied":"rest_error:"+a:"ok",null)})};g.uf=function(a,b){var c=Rc(a,b);delete this.$[c]};g.kf=function(){};g.pe=function(){};g.cf=function(){};g.xd=function(){};g.put=function(){};g.af=function(){};g.we=function(){}; +function Uc(a,b,c,d){c=c||{};c.format="export";a.$c.getToken(!1).then(function(e){(e=e&&e.accessToken)&&(c.auth=e);var f=(a.L.Sc?"https://":"http://")+a.L.host+b+"?"+fb(c);a.f("Sending REST request for "+f);var h=new XMLHttpRequest;h.onreadystatechange=function(){if(d&&4===h.readyState){a.f("REST Response for "+f+" received. status:",h.status,"response:",h.responseText);var b=null;if(200<=h.status&&300>h.status){try{b=ob(h.responseText)}catch(c){O("Failed to parse JSON response for "+f+": "+h.responseText)}d(null, +b)}else 401!==h.status&&404!==h.status&&O("Got unsuccessful REST response for "+f+" Status: "+h.status),d(h.status);d=null}};h.open("GET",f,!0);h.send()})};function Vc(a,b,c){this.type=Wc;this.source=a;this.path=b;this.children=c}Vc.prototype.Mc=function(a){if(this.path.e())return a=this.children.subtree(new L(a)),a.e()?null:a.value?new Ab(this.source,C,a.value):new Vc(this.source,C,a);H(J(this.path)===a,"Can't get a merge for a child not on the path of the operation");return new Vc(this.source,D(this.path),this.children)};Vc.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"};function Xc(a,b){this.rf={};this.Vc=new Mb(a);this.va=b;var c=1E4+2E4*Math.random();Mc(q(this.lf,this),Math.floor(c))}Xc.prototype.lf=function(){var a=this.Vc.get(),b={},c=!1,d;for(d in a)0=a.length){var b=Number(a);if(!isNaN(b)){e.De=b;e.frames=[];a=null;break a}}e.De=1;e.frames=[]}null!==a&&fd(e,a)}};this.Ia.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.bb()}};cd.prototype.start=function(){}; +cd.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1parseFloat(b[1])&&(a=!0)}return!a&&null!==bd&&!dd};cd.responsesRequiredToBeHealthy=2;cd.healthyTimeout=3E4;g=cd.prototype;g.sd=function(){yb.remove("previous_websocket_failure")};function fd(a,b){a.frames.push(b);if(a.frames.length==a.De){var c=a.frames.join("");a.frames=null;c=ob(c);a.Xf(c)}} +g.send=function(a){ed(this);a=B(a);this.qb+=a.length;Lb(this.Va,"bytes_sent",a.length);a=Hc(a,16384);1=this.g.compare(this.Uc,a)&&0>=this.g.compare(a,this.vc)};g.F=function(a,b,c,d,e,f){this.matches(new K(b,c))||(c=G);return this.fe.F(a,b,c,d,e,f)}; +g.ya=function(a,b,c){b.J()&&(b=G);var d=b.nb(this.g),d=d.fa(G),e=this;b.O(N,function(a,b){e.matches(new K(a,b))||(d=d.T(a,G))});return this.fe.ya(a,d,c)};g.fa=function(a){return a};g.Na=function(){return!0};g.Ub=function(){return this.fe};function Md(a){this.sa=new Hd(a);this.g=a.g;H(a.xa,"Only valid if limit has been set");this.oa=a.oa;this.Ib=!Nd(a)}g=Md.prototype;g.F=function(a,b,c,d,e,f){this.sa.matches(new K(b,c))||(c=G);return a.Q(b).Z(c)?a:a.Eb()=this.g.compare(this.sa.Uc,f):0>=this.g.compare(f,this.sa.vc))d=d.T(f.name,f.R),e++;else break}}else{d=b.nb(this.g);d=d.fa(G);var k,l,m;if(this.Ib){b=d.We(this.g);k=this.sa.vc;l=this.sa.Uc;var u=Pd(this.g);m=function(a,b){return u(b,a)}}else b=d.Wb(this.g),k=this.sa.Uc, +l=this.sa.vc,m=Pd(this.g);for(var e=0,z=!1;0=m(k,f)&&(z=!0),(h=z&&e=m(f,l))?e++:d=d.T(f.name,G)}return this.sa.Ub().ya(a,d,c)};g.fa=function(a){return a};g.Na=function(){return!0};g.Ub=function(){return this.sa.Ub()}; +function Od(a,b,c,d,e,f){var h;if(a.Ib){var k=Pd(a.g);h=function(a,b){return k(b,a)}}else h=Pd(a.g);H(b.Eb()==a.oa,"");var l=new K(c,d),m=a.Ib?Qd(b,a.g):Rd(b,a.g),u=a.sa.matches(l);if(b.Da(c)){for(var z=b.Q(c),m=e.de(a.g,m,a.Ib);null!=m&&(m.name==c||b.Da(m.name));)m=e.de(a.g,m,a.Ib);e=null==m?1:h(m,l);if(u&&!d.e()&&0<=e)return null!=f&&jd(f,new I("child_changed",d,c,z)),b.T(c,d);null!=f&&jd(f,new I("child_removed",z,c));b=b.T(c,G);return null!=m&&a.sa.matches(m)?(null!=f&&jd(f,new I("child_added", +m.R,m.name)),b.T(m.name,m.R)):b}return d.e()?b:u&&0<=h(m,l)?(null!=f&&(jd(f,new I("child_removed",m.R,m.name)),jd(f,new I("child_added",d,c))),b.T(c,d).T(m.name,G)):b};function qc(a,b){this.B=a;H(n(this.B)&&null!==this.B,"LeafNode shouldn't be created with null/undefined value.");this.aa=b||G;Sd(this.aa);this.Db=null}var Td=["object","boolean","number","string"];g=qc.prototype;g.J=function(){return!0};g.C=function(){return this.aa};g.fa=function(a){return new qc(this.B,a)};g.Q=function(a){return".priority"===a?this.aa:G};g.P=function(a){return a.e()?this:".priority"===J(a)?this.aa:G};g.Da=function(){return!1};g.Ve=function(){return null}; +g.T=function(a,b){return".priority"===a?this.fa(b):b.e()&&".priority"!==a?this:G.T(a,b).fa(this.aa)};g.F=function(a,b){var c=J(a);if(null===c)return b;if(b.e()&&".priority"!==c)return this;H(".priority"!==c||1===Ad(a),".priority must be the last token in a path");return this.T(c,G.F(D(a),b))};g.e=function(){return!1};g.Eb=function(){return 0};g.O=function(){return!1};g.H=function(a){return a&&!this.C().e()?{".value":this.Ca(),".priority":this.C().H()}:this.Ca()}; +g.hash=function(){if(null===this.Db){var a="";this.aa.e()||(a+="priority:"+Ud(this.aa.H())+":");var b=typeof this.B,a=a+(b+":"),a="number"===b?a+Jc(this.B):a+this.B;this.Db=uc(a)}return this.Db};g.Ca=function(){return this.B};g.sc=function(a){if(a===G)return 1;if(a instanceof P)return-1;H(a.J(),"Unknown node type");var b=typeof a.B,c=typeof this.B,d=Ia(Td,b),e=Ia(Td,c);H(0<=d,"Unknown leaf type: "+b);H(0<=e,"Unknown leaf type: "+c);return d===e?"object"===c?0:this.Bdocument.domain="'+document.domain+'";\x3c/script>');a=""+a+"";try{this.Ea.gb.open(),this.Ea.gb.write(a),this.Ea.gb.close()}catch(f){E("frame writing exception"),f.stack&&E(f.stack),E(f)}} +te.prototype.close=function(){this.Ud=!1;if(this.Ea){this.Ea.gb.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ea&&(document.body.removeChild(a.Ea),a.Ea=null)},Math.floor(0))}var b=this.ib;b&&(this.ib=null,b())}; +function we(a){if(a.Ud&&a.Kd&&a.te.count()<(0=a.Qc[0].Oe.length+30+c.length){var e=a.Qc.shift(),c=c+"&seg"+d+"="+e.jg+"&ts"+d+"="+e.pg+"&d"+d+"="+e.Oe;d++}else break;xe(a,b+c,a.Zd);return!0}return!1}function xe(a,b,c){function d(){a.te.remove(c);we(a)}a.te.add(c,1);var e=setTimeout(d,Math.floor(25E3));ve(a,b,function(){clearTimeout(e);d()})} +function ve(a,b,c){setTimeout(function(){try{if(a.Kd){var d=a.Ea.gb.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){E("Long-poll script failed to load: "+b);a.Kd=!1;a.close()};a.Ea.gb.body.appendChild(d)}}catch(e){}},Math.floor(1))};function ye(a){ze(this,a)}var Ae=[qe,cd];function ze(a,b){var c=cd&&cd.isAvailable(),d=c&&!(yb.Ze||!0===yb.get("previous_websocket_failure"));b.qg&&(c||O("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),d=!0);if(d)a.Wc=[cd];else{var e=a.Wc=[];Ic(Ae,function(a,b){b&&b.isAvailable()&&e.push(b)})}}function Be(a){if(0=a.pf?(a.f("Secondary connection is healthy."),a.Bb=!0,a.D.sd(),a.D.start(),a.f("sending client ack on secondary"),a.D.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.I.send({t:"c",d:{t:"n",d:{}}}),a.Xc=a.D,Ie(a)):(a.f("sending ping on secondary."),a.D.send({t:"c",d:{t:"p",d:{}}}))}Ce.prototype.wd=function(a){Ke(this);this.re(a)};function Ke(a){a.Bb||(a.ve--,0>=a.ve&&(a.f("Primary connection is healthy."),a.Bb=!0,a.I.sd()))} +function He(a,b){a.D=new b("c:"+a.id+":"+a.Ke++,a.L,a.qf);a.pf=b.responsesRequiredToBeHealthy||0;a.D.open(Ee(a,a.D),Fe(a,a.D));Mc(function(){a.D&&(a.f("Timed out trying to upgrade."),a.D.close())},Math.floor(6E4))}function Ge(a,b,c){a.f("Realtime connection established.");a.I=b;a.Ua=1;a.Lc&&(a.Lc(c,a.qf),a.Lc=null);0===a.ve?(a.f("Primary connection is healthy."),a.Bb=!0):Mc(function(){Le(a)},Math.floor(5E3))} +function Le(a){a.Bb||1!==a.Ua||(a.f("sending ping on primary."),Ne(a,{t:"c",d:{t:"p",d:{}}}))}function Ne(a,b){if(1!==a.Ua)throw"Connection is not connected";a.Xc.send(b)}Ce.prototype.close=function(){2!==this.Ua&&(this.f("Closing realtime connection."),this.Ua=2,Je(this),this.ia&&(this.ia(),this.ia=null))};function Je(a){a.f("Shutting down all connections");a.I&&(a.I.close(),a.I=null);a.D&&(a.D.close(),a.D=null);a.md&&(clearTimeout(a.md),a.md=null)};function L(a,b){if(1==arguments.length){this.o=a.split("/");for(var c=0,d=0;d=a.o.length?null:a.o[a.Y]}function Ad(a){return a.o.length-a.Y}function D(a){var b=a.Y;b=this.o.length)return null;for(var a=[],b=this.Y;b=this.o.length};g.Z=function(a){if(Ad(this)!==Ad(a))return!1;for(var b=this.Y,c=a.Y;b<=this.o.length;b++,c++)if(this.o[b]!==a.o[c])return!1;return!0}; +g.contains=function(a){var b=this.Y,c=a.Y;if(Ad(this)>Ad(a))return!1;for(;b10485760/3&&10485760f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);H(20===c.length,"nextPushId: Length should be 20."); +return c}}();function vf(a,b){this.La=a;this.ba=b?b:wf}g=vf.prototype;g.Oa=function(a,b){return new vf(this.La,this.ba.Oa(a,b,this.La).X(null,null,!1,null,null))};g.remove=function(a){return new vf(this.La,this.ba.remove(a,this.La).X(null,null,!1,null,null))};g.get=function(a){for(var b,c=this.ba;!c.e();){b=this.La(a,c.key);if(0===b)return c.value;0>b?c=c.left:0c?d=d.left:0e)a=this.je?a.left:a.right;else if(0===e){this.Pa.push(a);break}else this.Pa.push(a),a=this.je?a.right:a.left} +function R(a){if(0===a.Pa.length)return null;var b=a.Pa.pop(),c;c=a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value};if(a.je)for(b=b.left;!b.e();)a.Pa.push(b),b=b.right;else for(b=b.right;!b.e();)a.Pa.push(b),b=b.left;return c}function zf(a){if(0===a.Pa.length)return null;var b;b=a.Pa;b=b[b.length-1];return a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value}}function Af(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:wf;this.right=null!=e?e:wf}g=Af.prototype; +g.X=function(a,b,c,d,e){return new Af(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};g.count=function(){return this.left.count()+1+this.right.count()};g.e=function(){return!1};g.ha=function(a){return this.left.ha(a)||a(this.key,this.value)||this.right.ha(a)};function Bf(a){return a.left.e()?a:Bf(a.left)}g.Gc=function(){return Bf(this).key};g.ec=function(){return this.right.e()?this.key:this.right.ec()}; +g.Oa=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.X(null,null,null,e.left.Oa(a,b,c),null):0===d?e.X(null,b,null,null,null):e.X(null,null,null,null,e.right.Oa(a,b,c));return Cf(e)};function Df(a){if(a.left.e())return wf;a.left.ea()||a.left.left.ea()||(a=Ef(a));a=a.X(null,null,null,Df(a.left),null);return Cf(a)} +g.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.ea()||c.left.left.ea()||(c=Ef(c)),c=c.X(null,null,null,c.left.remove(a,b),null);else{c.left.ea()&&(c=Ff(c));c.right.e()||c.right.ea()||c.right.left.ea()||(c=Gf(c),c.left.left.ea()&&(c=Ff(c),c=Gf(c)));if(0===b(a,c.key)){if(c.right.e())return wf;d=Bf(c.right);c=c.X(d.key,d.value,null,null,Df(c.right))}c=c.X(null,null,null,null,c.right.remove(a,b))}return Cf(c)};g.ea=function(){return this.color}; +function Cf(a){a.right.ea()&&!a.left.ea()&&(a=Hf(a));a.left.ea()&&a.left.left.ea()&&(a=Ff(a));a.left.ea()&&a.right.ea()&&(a=Gf(a));return a}function Ef(a){a=Gf(a);a.right.left.ea()&&(a=a.X(null,null,null,null,Ff(a.right)),a=Hf(a),a=Gf(a));return a}function Hf(a){return a.right.X(null,null,a.color,a.X(null,null,!0,null,a.right.left),null)}function Ff(a){return a.left.X(null,null,a.color,null,a.X(null,null,!0,a.left.right,null))} +function Gf(a){return a.X(null,null,!a.color,a.left.X(null,null,!a.left.color,null,null),a.right.X(null,null,!a.right.color,null,null))}function If(){}g=If.prototype;g.X=function(){return this};g.Oa=function(a,b){return new Af(a,b,null)};g.remove=function(){return this};g.count=function(){return 0};g.e=function(){return!0};g.ha=function(){return!1};g.Gc=function(){return null};g.ec=function(){return null};g.ea=function(){return!1};var wf=new If;function P(a,b,c){this.k=a;(this.aa=b)&&Sd(this.aa);a.e()&&H(!this.aa||this.aa.e(),"An empty node cannot have a priority");this.yb=c;this.Db=null}g=P.prototype;g.J=function(){return!1};g.C=function(){return this.aa||G};g.fa=function(a){return this.k.e()?this:new P(this.k,a,this.yb)};g.Q=function(a){if(".priority"===a)return this.C();a=this.k.get(a);return null===a?G:a};g.P=function(a){var b=J(a);return null===b?this:this.Q(b).P(D(a))};g.Da=function(a){return null!==this.k.get(a)}; +g.T=function(a,b){H(b,"We should always be passing snapshot nodes");if(".priority"===a)return this.fa(b);var c=new K(a,b),d,e;b.e()?(d=this.k.remove(a),c=me(this.yb,c,this.k)):(d=this.k.Oa(a,b),c=ke(this.yb,c,this.k));e=d.e()?G:this.aa;return new P(d,e,c)};g.F=function(a,b){var c=J(a);if(null===c)return b;H(".priority"!==J(a)||1===Ad(a),".priority must be the last token in a path");var d=this.Q(c).F(D(a),b);return this.T(c,d)};g.e=function(){return this.k.e()};g.Eb=function(){return this.k.count()}; +var Jf=/^(0|[1-9]\d*)$/;g=P.prototype;g.H=function(a){if(this.e())return null;var b={},c=0,d=0,e=!0;this.O(N,function(f,h){b[f]=h.H(a);c++;e&&Jf.test(f)?d=Math.max(d,Number(f)):e=!1});if(!a&&e&&d<2*c){var f=[],h;for(h in b)f[h]=b[h];return f}a&&!this.C().e()&&(b[".priority"]=this.C().H());return b};g.hash=function(){if(null===this.Db){var a="";this.C().e()||(a+="priority:"+Ud(this.C().H())+":");this.O(N,function(b,c){var d=c.hash();""!==d&&(a+=":"+b+":"+d)});this.Db=""===a?"":uc(a)}return this.Db}; +g.Ve=function(a,b,c){return(c=Kf(this,c))?(a=xf(c,new K(a,b)))?a.name:null:xf(this.k,a)};function Qd(a,b){var c;c=(c=Kf(a,b))?(c=c.Gc())&&c.name:a.k.Gc();return c?new K(c,a.k.get(c)):null}function Rd(a,b){var c;c=(c=Kf(a,b))?(c=c.ec())&&c.name:a.k.ec();return c?new K(c,a.k.get(c)):null}g.O=function(a,b){var c=Kf(this,a);return c?c.ha(function(a){return b(a.name,a.R)}):this.k.ha(b)};g.Wb=function(a){return this.Xb(a.Hc(),a)}; +g.Xb=function(a,b){var c=Kf(this,b);if(c)return c.Xb(a,function(a){return a});for(var c=this.k.Xb(a.name,jc),d=zf(c);null!=d&&0>b.compare(d,a);)R(c),d=zf(c);return c};g.We=function(a){return this.Zb(a.Fc(),a)};g.Zb=function(a,b){var c=Kf(this,b);if(c)return c.Zb(a,function(a){return a});for(var c=this.k.Zb(a.name,jc),d=zf(c);null!=d&&0=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.m.xa)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.m.le(a),this.Nc)}; +g.me=function(a){x("Query.limitToLast",1,1,arguments.length);if(!ga(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.m.xa)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.m.me(a),this.Nc)}; +g.ag=function(a){x("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');lf("Query.orderByChild",a);Xf(this,"Query.orderByChild");var b=new L(a);if(b.e())throw Error("Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead."); +b=new Yd(b);b=he(this.m,b);Vf(b);return new X(this.u,this.path,b,!0)};g.bg=function(){x("Query.orderByKey",0,0,arguments.length);Xf(this,"Query.orderByKey");var a=he(this.m,Fd);Vf(a);return new X(this.u,this.path,a,!0)};g.cg=function(){x("Query.orderByPriority",0,0,arguments.length);Xf(this,"Query.orderByPriority");var a=he(this.m,N);Vf(a);return new X(this.u,this.path,a,!0)}; +g.dg=function(){x("Query.orderByValue",0,0,arguments.length);Xf(this,"Query.orderByValue");var a=he(this.m,de);Vf(a);return new X(this.u,this.path,a,!0)};g.Nd=function(a,b){x("Query.startAt",0,2,arguments.length);df("Query.startAt",a,this.path,!0);kf("Query.startAt",b);var c=this.m.Nd(a,b);Wf(c);Vf(c);if(this.m.ka)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");n(a)||(b=a=null);return new X(this.u,this.path,c,this.Nc)}; +g.gd=function(a,b){x("Query.endAt",0,2,arguments.length);df("Query.endAt",a,this.path,!0);kf("Query.endAt",b);var c=this.m.gd(a,b);Wf(c);Vf(c);if(this.m.na)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new X(this.u,this.path,c,this.Nc)}; +g.If=function(a,b){x("Query.equalTo",1,2,arguments.length);df("Query.equalTo",a,this.path,!1);kf("Query.equalTo",b);if(this.m.ka)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.m.na)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.Nd(a,b).gd(a,b)}; +g.toString=function(){x("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.Y;c=b&&Eg(h,c.path)?d=!1:c.path.contains(h.path)&&(e=!0));f--}if(d){if(e)this.S=Fg(this.la,Gg,C),this.Bc=0f.Bc,"Stacking an older write on top of newer ones");n(h)||(h=!0);f.la.push({path:b,Ga:c,Zc:d,visible:h});h&&(f.S=sg(f.S,b,c));f.Bc=d;return e?fh(a,new Ab(ng,b,c)):[]}function gh(a,b,c,d){var e=a.jb;H(d>e.Bc,"Stacking an older merge on top of newer ones");e.la.push({path:b,children:c,Zc:d,visible:!0});e.S=tg(e.S,b,c);e.Bc=d;c=bg(c);return fh(a,new Vc(ng,b,c))} +function hh(a,b,c){c=c||!1;var d=Dg(a.jb,b);if(a.jb.Ed(b)){var e=Q;null!=d.Ga?e=e.set(C,!0):db(d.children,function(a,b){e=e.set(new L(a),b)});return fh(a,new mg(d.path,e,c))}return[]}function ih(a,b,c){c=bg(c);return fh(a,new Vc(pg,b,c))}function jh(a,b,c,d){d=kh(a,d);if(null!=d){var e=lh(d);d=e.path;e=e.Hb;b=T(d,b);c=new Ab(new og(!1,!0,e,!0),b,c);return mh(a,d,c)}return[]} +function nh(a,b,c,d){if(d=kh(a,d)){var e=lh(d);d=e.path;e=e.Hb;b=T(d,b);c=bg(c);c=new Vc(new og(!1,!0,e,!0),b,c);return mh(a,d,c)}return[]} +dh.prototype.Nb=function(a,b){var c=a.path,d=null,e=!1;ig(this.wa,c,function(a,b){var f=T(a,c);d=d||b.hb(f);e=e||null!=zg(b)});var f=this.wa.get(c);f?(e=e||null!=zg(f),d=d||f.hb(C)):(f=new yg,this.wa=this.wa.set(c,f));var h;null!=d?h=!0:(h=!1,d=G,lg(this.wa.subtree(c),function(a,b){var c=b.hb(C);c&&(d=d.T(a,c))}));var k=null!=Bg(f,a);if(!k&&!S(a.m)){var l=oh(a);H(!(l in this.ic),"View does not exist, but we have a tag");var m=ph++;this.ic[l]=m;this.Be["_"+m]=l}h=f.Nb(a,b,new Hg(c,this.jb),d,h);k|| +e||(f=Bg(f,a),h=h.concat(qh(this,a,f)));return h}; +dh.prototype.kb=function(a,b,c){var d=a.path,e=this.wa.get(d),f=[];if(e&&("default"===a.ja()||null!=Bg(e,a))){f=e.kb(a,b,c);e.e()&&(this.wa=this.wa.remove(d));e=f.hg;f=f.Kf;b=-1!==Pa(e,function(a){return S(a.m)});var h=gg(this.wa,d,function(a,b){return null!=zg(b)});if(b&&!h&&(d=this.wa.subtree(d),!d.e()))for(var d=rh(d),k=0;kb;b++)L[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b);for(var b=L,c=[],d=0;d>2,e=(e&3)<<4|m>>4,m=(m&15)<<2|r>>6,r=r&63;p||(r=64,g||(m=64));c.push(b[V],b[e],b[m],b[r])}return c.join("").replace(/\+/g,"-").replace(/\//g, -"_").replace(/=+$/,"")};var N=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D),O=function(){this.a=null},P=function(a){if(a.a)return a.a;a.a=new Promise(function(a,c){var b=y.indexedDB.open("fcm_token_details_db",1);b.onerror=function(a){c(a.target.error)};b.onsuccess=function(b){a(b.target.result)};b.onupgradeneeded=function(a){a=a.target.result.createObjectStore("fcm_token_object_Store",{keyPath:"swScope"});a.createIndex("fcmSenderId","fcmSenderId",{unique:!1});a.createIndex("fcmToken","fcmToken",{unique:!0})}}); -return a.a},ba=function(a){a.a?a.a.then(function(b){b.close();a.a=null}):Promise.resolve()},Q=function(a,b){return P(a).then(function(a){return new Promise(function(c,e){var d=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").index("fcmToken").get(b);d.onerror=function(a){e(a.target.error)};d.onsuccess=function(a){c(a.target.result)}})})},ca=function(a,b){return P(a).then(function(a){return new Promise(function(c,e){var d=[],m=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").openCursor(); -m.onerror=function(a){e(a.target.error)};m.onsuccess=function(a){(a=a.target.result)?(a.value.fcmSenderId===b&&d.push(a.value),a.continue()):c(d)}})})},R=function(a,b,c){var d=M(b.getKey("p256dh")),e=M(b.getKey("auth"));a="authorized_entity="+a+"&"+("endpoint="+b.endpoint+"&")+("encryption_key="+d+"&")+("encryption_auth="+e);c&&(a+="&pushSet="+c);c=new Headers;c.append("Content-Type","application/x-www-form-urlencoded");return fetch("https://fcm.googleapis.com/fcm/connect/subscribe",{method:"POST", -headers:c,body:a}).then(function(a){return a.json()}).then(function(a){if(a.error)throw N.create(B.V,{message:a.error.message});if(!a.token)throw N.create(B.X);if(!a.pushSet)throw N.create(B.W);return{token:a.token,pushSet:a.pushSet}})},da=function(a,b,c,d,e,g){var m={swScope:c.scope,endpoint:d.endpoint,auth:M(d.getKey("auth")),p256dh:M(d.getKey("p256dh")),fcmToken:e,fcmPushSet:g,fcmSenderId:b};return P(a).then(function(a){return new Promise(function(b,c){var d=a.transaction(["fcm_token_object_Store"], -"readwrite").objectStore("fcm_token_object_Store").put(m);d.onerror=function(a){c(a.target.error)};d.onsuccess=function(){b()}})})}; -O.prototype.ba=function(a,b){return b instanceof ServiceWorkerRegistration?"string"!==typeof a||0===a.length?Promise.reject(N.create(B.l)):ca(this,a).then(function(c){if(0!==c.length){var d=c.findIndex(function(c){return b.scope===c.swScope&&a===c.fcmSenderId});if(-1!==d)return c[d]}}).then(function(a){if(a)return b.pushManager.getSubscription().catch(function(){throw N.create(B.H);}).then(function(b){var c;if(c=b)c=b.endpoint===a.endpoint&&M(b.getKey("auth"))===a.auth&&M(b.getKey("p256dh"))===a.p256dh; -if(c)return a.fcmToken})}):Promise.reject(N.create(B.m))};O.prototype.getSavedToken=O.prototype.ba;O.prototype.aa=function(a,b){var c=this;return"string"!==typeof a||0===a.length?Promise.reject(N.create(B.l)):b instanceof ServiceWorkerRegistration?b.pushManager.getSubscription().then(function(a){return a?a:b.pushManager.subscribe(E)}).then(function(d){return R(a,d).then(function(e){return da(c,a,b,d,e.token,e.pushSet).then(function(){return e.token})})}):Promise.reject(N.create(B.m))}; -O.prototype.createToken=O.prototype.aa;O.prototype.deleteToken=function(a){var b=this;return"string"!==typeof a||0===a.length?Promise.reject(N.create(B.J)):Q(this,a).then(function(a){if(!a)throw N.create(B.D);return P(b).then(function(b){return new Promise(function(c,d){var e=b.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").delete(a.swScope);e.onerror=function(a){d(a.target.error)};e.onsuccess=function(b){0===b.target.result?d(N.create(B.G)):c(a)}})})})};var S=function(a){var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D);if(!a.options.messagingSenderId||"string"!==typeof a.options.messagingSenderId)throw this.a.create(B.l);this.j=a.options.messagingSenderId;this.c=new O;this.app=a;this.INTERNAL={};this.INTERNAL.delete=function(){return b.delete}}; -S.prototype.getToken=function(){var a=this,b=Notification.permission;return"granted"!==b?"denied"===b?Promise.reject(this.a.create(B.L)):Promise.resolve(null):this.f().then(function(b){return a.c.ba(a.j,b).then(function(c){return c?c:a.c.aa(a.j,b)})})};S.prototype.getToken=S.prototype.getToken;S.prototype.deleteToken=function(a){var b=this;return this.c.deleteToken(a).then(function(){return b.f()}).then(function(a){return a?a.pushManager.getSubscription():null}).then(function(a){if(a)return a.unsubscribe()})}; -S.prototype.deleteToken=S.prototype.deleteToken;S.prototype.f=function(){throw this.a.create(B.U);};S.prototype.requestPermission=function(){throw this.a.create(B.i);};S.prototype.useServiceWorker=function(){throw this.a.create(B.i);};S.prototype.useServiceWorker=S.prototype.useServiceWorker;S.prototype.onMessage=function(){throw this.a.create(B.i);};S.prototype.onMessage=S.prototype.onMessage;S.prototype.onTokenRefresh=function(){throw this.a.create(B.i);};S.prototype.onTokenRefresh=S.prototype.onTokenRefresh; -S.prototype.setBackgroundMessageHandler=function(){throw this.a.create(B.A);};S.prototype.setBackgroundMessageHandler=S.prototype.setBackgroundMessageHandler;S.prototype.delete=function(){ba(this.c)};var T=self,U=function(a){var b=this;S.call(this,a);this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D);T.addEventListener("push",function(a){return ea(b,a)},!1);T.addEventListener("pushsubscriptionchange",function(a){return fa(b,a)},!1);T.addEventListener("notificationclick",function(a){return ga(b,a)},!1);this.b=null};f(U,S); -var ea=function(a,b){var c;try{c=b.data.json()}catch(e){return}var d=ha().then(function(b){if(b){if(c.notification||a.b)return ia(a,c)}else{if((b=c)&&"object"===typeof b.notification){var d=Object.assign({},b.notification),e={};d.data=(e.FCM_MSG=b,e);b=d}else b=void 0;if(b)return T.registration.showNotification(b.title||"",b);if(a.b)return a.b(c)}});b.waitUntil(d)},fa=function(a,b){var c=a.getToken().then(function(b){if(!b)throw a.a.create(B.N);var c=a.c;return Q(c,b).then(function(b){if(!b)throw a.a.create(B.K); -return T.registration.pushManager.subscribe(E).then(function(a){return R(b.ha,a,b.ga)}).catch(function(d){return c.deleteToken(b.ia).then(function(){throw a.a.create(B.Y,{message:d});})})})});b.waitUntil(c)},ga=function(a,b){if(b.notification&&b.notification.data&&b.notification.data.FCM_MSG){b.stopImmediatePropagation();b.notification.close();var c=b.notification.data.FCM_MSG,d=c.notification.click_action;if(d){var e=ja(d).then(function(a){return a?a:T.clients.openWindow(d)}).then(function(b){if(b)return delete c.notification, -X(a,b,H(G.M,c))});b.waitUntil(e)}}};U.prototype.setBackgroundMessageHandler=function(a){if(a&&"function"!==typeof a)throw this.a.create(B.B);this.b=a};U.prototype.setBackgroundMessageHandler=U.prototype.setBackgroundMessageHandler; -var ja=function(a){var b=(new URL(a)).href;return T.clients.matchAll({type:"window",includeUncontrolled:!0}).then(function(a){for(var c=null,e=0;eb;b++)y[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b);for(var b=y,c=[],d=0;d>2,e=(e&3)<<4|l>>4,l=(l&15)<<2|t>>6,t=t&63;z||(t=64,n||(l=64));c.push(b[M],b[e],b[l],b[t])}return c.join("").replace(/\+/g,"-").replace(/\//g, +"_").replace(/=+$/,"")};var B=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p),C=function(){this.a=null},D=function(a){if(a.a)return a.a;a.a=new Promise(function(a,c){var b=g.indexedDB.open("fcm_token_details_db",1);b.onerror=function(a){c(a.target.error)};b.onsuccess=function(b){a(b.target.result)};b.onupgradeneeded=function(a){a=a.target.result.createObjectStore("fcm_token_object_Store",{keyPath:"swScope"});a.createIndex("fcmSenderId","fcmSenderId",{unique:!1});a.createIndex("fcmToken","fcmToken",{unique:!0})}}); +return a.a},E=function(a){a.a?a.a.then(function(b){b.close();a.a=null}):Promise.resolve()},F=function(a,b){return D(a).then(function(a){return new Promise(function(c,e){var d=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").index("fcmToken").get(b);d.onerror=function(a){e(a.target.error)};d.onsuccess=function(a){c(a.target.result)}})})},G=function(a,b){return D(a).then(function(a){return new Promise(function(c,e){var d=[],l=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").openCursor(); +l.onerror=function(a){e(a.target.error)};l.onsuccess=function(a){(a=a.target.result)?(a.value.fcmSenderId===b&&d.push(a.value),a.continue()):c(d)}})})},H=function(a,b,c){var d=A(b.getKey("p256dh")),e=A(b.getKey("auth"));a="authorized_entity="+a+"&"+("endpoint="+b.endpoint+"&")+("encryption_key="+d+"&")+("encryption_auth="+e);c&&(a+="&pushSet="+c);c=new Headers;c.append("Content-Type","application/x-www-form-urlencoded");return fetch("https://fcm.googleapis.com/fcm/connect/subscribe",{method:"POST", +headers:c,body:a}).then(function(a){return a.json()}).then(function(a){if(a.error)throw B.create("token-subscribe-failed",{message:a.error.message});if(!a.token)throw B.create("token-subscribe-no-token");if(!a.pushSet)throw B.create("token-subscribe-no-push-set");return{token:a.token,pushSet:a.pushSet}})},I=function(a,b,c,d,e,n){var l={swScope:c.scope,endpoint:d.endpoint,auth:A(d.getKey("auth")),p256dh:A(d.getKey("p256dh")),fcmToken:e,fcmPushSet:n,fcmSenderId:b};return D(a).then(function(a){return new Promise(function(b, +c){var d=a.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").put(l);d.onerror=function(a){c(a.target.error)};d.onsuccess=function(){b()}})})}; +C.prototype.i=function(a,b){return b instanceof ServiceWorkerRegistration?"string"!==typeof a||0===a.length?Promise.reject(B.create("bad-sender-id")):G(this,a).then(function(c){if(0!==c.length){var d=c.findIndex(function(c){return b.scope===c.swScope&&a===c.fcmSenderId});if(-1!==d)return c[d]}}).then(function(a){if(a)return b.pushManager.getSubscription().catch(function(){throw B.create("get-subscription-failed");}).then(function(b){var c;if(c=b)c=b.endpoint===a.endpoint&&A(b.getKey("auth"))===a.auth&& +A(b.getKey("p256dh"))===a.p256dh;if(c)return a.fcmToken})}):Promise.reject(B.create("sw-registration-expected"))};C.prototype.getSavedToken=C.prototype.i; +C.prototype.h=function(a,b){var c=this;return"string"!==typeof a||0===a.length?Promise.reject(B.create("bad-sender-id")):b instanceof ServiceWorkerRegistration?b.pushManager.getSubscription().then(function(a){return a?a:b.pushManager.subscribe(q)}).then(function(d){return H(a,d).then(function(e){return I(c,a,b,d,e.token,e.pushSet).then(function(){return e.token})})}):Promise.reject(B.create("sw-registration-expected"))};C.prototype.createToken=C.prototype.h; +C.prototype.deleteToken=function(a){var b=this;return"string"!==typeof a||0===a.length?Promise.reject(B.create("invalid-delete-token")):F(this,a).then(function(a){if(!a)throw B.create("delete-token-not-found");return D(b).then(function(b){return new Promise(function(c,d){var e=b.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").delete(a.swScope);e.onerror=function(a){d(a.target.error)};e.onsuccess=function(b){0===b.target.result?d(B.create("failed-to-delete-token")): +c(a)}})})})};var J=function(a){var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p);if(!a.options.messagingSenderId||"string"!==typeof a.options.messagingSenderId)throw this.a.create("bad-sender-id");this.l=a.options.messagingSenderId;this.c=new C;this.app=a;this.INTERNAL={};this.INTERNAL.delete=function(){return b.delete}}; +J.prototype.getToken=function(){var a=this,b=Notification.permission;return"granted"!==b?"denied"===b?Promise.reject(this.a.create("notifications-blocked")):Promise.resolve(null):this.f().then(function(b){return a.c.i(a.l,b).then(function(c){return c?c:a.c.h(a.l,b)})})};J.prototype.getToken=J.prototype.getToken;J.prototype.deleteToken=function(a){var b=this;return this.c.deleteToken(a).then(function(){return b.f()}).then(function(a){return a?a.pushManager.getSubscription():null}).then(function(a){if(a)return a.unsubscribe()})}; +J.prototype.deleteToken=J.prototype.deleteToken;J.prototype.f=function(){throw this.a.create("should-be-overriden");};J.prototype.requestPermission=function(){throw this.a.create("only-available-in-window");};J.prototype.useServiceWorker=function(){throw this.a.create("only-available-in-window");};J.prototype.useServiceWorker=J.prototype.useServiceWorker;J.prototype.onMessage=function(){throw this.a.create("only-available-in-window");};J.prototype.onMessage=J.prototype.onMessage; +J.prototype.onTokenRefresh=function(){throw this.a.create("only-available-in-window");};J.prototype.onTokenRefresh=J.prototype.onTokenRefresh;J.prototype.setBackgroundMessageHandler=function(){throw this.a.create("only-available-in-sw");};J.prototype.setBackgroundMessageHandler=J.prototype.setBackgroundMessageHandler;J.prototype.delete=function(){E(this.c)};var K=self,P=function(a){J.call(this,a);var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p);K.addEventListener("push",function(a){return L(b,a)},!1);K.addEventListener("pushsubscriptionchange",function(a){return N(b,a)},!1);K.addEventListener("notificationclick",function(a){return O(b,a)},!1);this.b=null};f(P,J); +var L=function(a,b){var c;try{c=b.data.json()}catch(e){return}var d=Q().then(function(b){if(b){if(c.notification||a.b)return R(a,c)}else{if((b=c)&&"object"===typeof b.notification){var d=Object.assign({},b.notification),e={};d.data=(e.FCM_MSG=b,e);b=d}else b=void 0;if(b)return K.registration.showNotification(b.title||"",b);if(a.b)return a.b(c)}});b.waitUntil(d)},N=function(a,b){var c=a.getToken().then(function(b){if(!b)throw a.a.create("no-fcm-token-for-resubscribe");var c=a.c;return F(c,b).then(function(b){if(!b)throw a.a.create("invalid-saved-token"); +return K.registration.pushManager.subscribe(q).then(function(a){return H(b.w,a,b.v)}).catch(function(d){return c.deleteToken(b.A).then(function(){throw a.a.create("unable-to-resubscribe",{message:d});})})})});b.waitUntil(c)},O=function(a,b){if(b.notification&&b.notification.data&&b.notification.data.FCM_MSG){b.stopImmediatePropagation();b.notification.close();var c=b.notification.data.FCM_MSG,d=c.notification.click_action;if(d){var e=S(d).then(function(a){return a?a:K.clients.openWindow(d)}).then(function(b){if(b)return delete c.notification, +T(a,b,r("notification-clicked",c))});b.waitUntil(e)}}};P.prototype.setBackgroundMessageHandler=function(a){if(a&&"function"!==typeof a)throw this.a.create("bg-handler-function-expected");this.b=a};P.prototype.setBackgroundMessageHandler=P.prototype.setBackgroundMessageHandler; +var S=function(a){var b=(new URL(a)).href;return K.clients.matchAll({type:"window",includeUncontrolled:!0}).then(function(a){for(var c=null,e=0;e} A promise that resolves if the deletion succeeded - * and rejects if it failed, including if the object didn't exist. + * @return {!firebase.Promise} A Promise that resolves if the deletion + * succeeded and rejects if it failed, including if the object didn't exist. */ firebase.storage.Reference.prototype.delete = function() {}; /** * Fetches metadata for the object at this location, if one exists. - * @return {!Promise} A promise that resolves - * with the metadata, or rejects if the fetch failed, including if the - * object did not exist. + * @return {!firebase.Promise} A Promise that + * resolves with the metadata, or rejects if the fetch failed, including if + * the object did not exist. */ firebase.storage.Reference.prototype.getMetadata = function() {}; @@ -212,8 +235,8 @@ firebase.storage.Reference.prototype.getMetadata = function() {}; * @param {!firebase.storage.SettableMetadata} metadata The new metadata. * Setting a property to 'null' removes it on the server, while leaving * a property as 'undefined' has no effect. - * @return {!Promise} A promise that resolves - * with the full updated metadata or rejects if the updated failed, + * @return {!firebase.Promise} A Promise that + * resolves with the full updated metadata or rejects if the updated failed, * including if the object did not exist. */ firebase.storage.Reference.prototype.updateMetadata = function(metadata) {}; @@ -221,8 +244,9 @@ firebase.storage.Reference.prototype.updateMetadata = function(metadata) {}; /** * Fetches a long lived download URL for this object. - * @return {!Promise} A promise that resolves with the download URL or - * rejects if the fetch failed, including if the object did not exist. + * @return {!firebase.Promise} A Promise that resolves with the download + * URL or rejects if the fetch failed, including if the object did not + * exist. */ firebase.storage.Reference.prototype.getDownloadURL = function() {}; @@ -438,7 +462,7 @@ firebase.storage.UploadTask = function() {}; * @param {(?function(!firebase.storage.UploadTaskSnapshot):*)=} onFulfilled * The fulfillment callback. Promise chaining works as normal. * @param {(?function(!Error):*)=} onRejected The rejection callback. - * @return {!Promise} + * @return {!firebase.Promise} */ firebase.storage.UploadTask.prototype.then = function(onFulfilled, onRejected) { }; @@ -446,7 +470,7 @@ firebase.storage.UploadTask.prototype.then = function(onFulfilled, onRejected) { /** * Equivalent to calling `then(null, onRejected)`. * @param {!function(!Error):*} onRejected - * @return {!Promise} + * @return {!firebase.Promise} */ firebase.storage.UploadTask.prototype.catch = function(onRejected) {}; diff --git a/lib/firebase/firebase-storage.js b/lib/firebase/firebase-storage.js index 14940af4..a7c3e8c2 100644 --- a/lib/firebase/firebase-storage.js +++ b/lib/firebase/firebase-storage.js @@ -1,104 +1,52 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ -(function() {var k,aa=aa||{},l=this,n=function(a){return void 0!==a},ba=function(){},ca=function(){throw Error("unimplemented abstract method");},p=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array"; -if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},da=function(a){var b=p(a);return"array"==b||"object"==b&&"number"==typeof a.length},r=function(a){return"string"==typeof a},t=function(a){return"function"==p(a)},ea=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b},fa="closure_uid_"+(1E9*Math.random()>>> -0),ga=0,ha=function(a,b,c){return a.call.apply(a.bind,arguments)},ia=function(a,b,c){if(!a)throw Error();if(2h&&(h*=2);var c;1===Q?(Q=2,c=0):c=1E3*(h+Math.random());e(c)}}function g(a){jc||(jc=!0,P||(null!==m?(a||(Q=2),clearTimeout(m),e(0)):a||(Q=1)))}var h=1,m=null,q=!1,Q=0,P=!1,jc=!1;e(0);setTimeout(function(){q=!0;g(!0)},c);return g};var la="https://firebasestorage.googleapis.com";var w=function(a,b){this.code="storage/"+a;this.message="Firebase Storage: "+b;this.serverResponse=null;this.name="FirebaseError"};v(w,Error); -var ma=function(){return new w("unknown","An unknown error occurred, please check the error payload for server response.")},na=function(){return new w("canceled","User canceled the upload/download.")},oa=function(){return new w("cannot-slice-blob","Cannot slice blob for upload. Please retry the upload.")},pa=function(a,b,c){return new w("invalid-argument","Invalid argument in `"+b+"` at index "+a+": "+c)},qa=function(){return new w("app-deleted","The Firebase app was deleted.")},ra=function(a,b){return new w("invalid-format", -"String does not match format '"+a+"': "+b)};var sa=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])},ta=function(a){var b={};sa(a,function(a,d){b[a]=d});return b};var x=function(a,b,c,d){this.i=a;this.b={};this.method=b;this.headers={};this.body="";this.M=c;this.c=this.a=null;this.f=[200];this.h=[];this.timeout=d;this.g=!0};var ua={STATE_CHANGED:"state_changed"},va={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"},wa=function(a){switch(a){case "running":case "pausing":case "canceling":return"running";case "paused":return"paused";case "success":return"success";case "canceled":return"canceled";case "error":return"error";default:return"error"}};var y=function(a){return n(a)&&null!==a},xa=function(a){return"string"===typeof a||a instanceof String},ya=function(){return"undefined"!==typeof Blob};var za=function(a,b,c){this.f=c;this.c=a;this.g=b;this.b=0;this.a=null};za.prototype.get=function(){var a;0b?1:0};var Pa=function(a,b){this.a=a;this.b=b};var Qa=function(a,b){this.bucket=a;this.path=b},Ra=function(a){var b=encodeURIComponent;return"/b/"+b(a.bucket)+"/o/"+b(a.path)},Sa=function(a){for(var b=null,c=[{ia:/^gs:\/\/([A-Za-z0-9.\-]+)(\/(.*))?$/i,ba:{bucket:1,path:3},ha:function(a){"/"===a.path.charAt(a.path.length-1)&&(a.path=a.path.slice(0,-1))}},{ia:/^https?:\/\/firebasestorage\.googleapis\.com\/v[A-Za-z0-9_]+\/b\/([A-Za-z0-9.\-]+)\/o(\/([^?#]*).*)?$/i,ba:{bucket:1,path:3},ha:function(a){a.path=decodeURIComponent(a.path)}}],d=0;d=d)b.push(d);else if(2047>=d)b.push(192|d>>6,128|d&63);else if(55296==(d&64512))if(c>18,128|d>>12&63,128|d>>6&63,128|d&63)}else b.push(239,191,189);else 56320==(d&64512)?b.push(239,191,189):b.push(224|d>>12,128|d>>6&63,128|d&63)}return new Uint8Array(b)},Ya=function(a,b){switch(a){case "base64":var c=-1!==b.indexOf("-"), -d=-1!==b.indexOf("_");if(c||d)throw ra(a,"Invalid character '"+(c?"-":"_")+"' found: is it base64url encoded?");break;case "base64url":c=-1!==b.indexOf("+");d=-1!==b.indexOf("/");if(c||d)throw ra(a,"Invalid character '"+(c?"+":"/")+"' found: is it base64 encoded?");b=b.replace(/-/g,"+").replace(/_/g,"/")}var e;try{e=atob(b)}catch(f){throw ra(a,"Invalid character found");}a=new Uint8Array(e.length);for(b=0;b][;base64],");b=b[1]||null;this.a=!1;this.b=null;if(null!=b){var c=b.length-7;this.b=(this.a=0<=c&&b.indexOf(";base64",c)==c)?b.substring(0,b.length-7):b}this.c=a.substring(a.indexOf(",")+1)};var ab=function(a){var b=encodeURIComponent,c="?";sa(a,function(a,e){a=b(a)+"="+b(e);c=c+a+"&"});return c=c.slice(0,-1)};var A=function(a,b,c,d,e,f){this.b=a;this.h=b;this.f=c;this.a=d;this.g=e;this.c=f};k=A.prototype;k.na=function(){return this.b};k.Ja=function(){return this.h};k.Ga=function(){return this.f};k.Ba=function(){return this.a};k.pa=function(){if(y(this.a)){var a=this.a.downloadURLs;return y(a)&&y(a[0])?a[0]:null}return null};k.Ia=function(){return this.g};k.Ea=function(){return this.c};var bb=function(a,b){b.unshift(a);z.call(this,Ma.apply(null,b));b.shift()};v(bb,z);bb.prototype.name="AssertionError"; -var cb=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new bb(""+e,f||[]);},B=function(a,b,c){a||cb("",null,b,Array.prototype.slice.call(arguments,2))},db=function(a,b){throw new bb("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},eb=function(a,b,c){t(a)||cb("Expected function but got %s: %s.",[p(a),a],b,Array.prototype.slice.call(arguments,2))};var fb=function(){this.g=this.g;this.o=this.o};fb.prototype.g=!1;fb.prototype.ea=function(){this.g||(this.g=!0,this.D())};fb.prototype.D=function(){if(this.o)for(;this.o.length;)this.o.shift()()};var gb="closure_listenable_"+(1E6*Math.random()|0),hb=0;var ib;a:{var jb=l.navigator;if(jb){var kb=jb.userAgent;if(kb){ib=kb;break a}}ib=""}var C=function(a){return-1!=ib.indexOf(a)};var lb=function(){};lb.prototype.b=null;lb.prototype.a=ca;var mb=function(a){return a.b||(a.b=a.f())};lb.prototype.f=ca;var nb=Array.prototype.indexOf?function(a,b,c){B(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(r(a))return r(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:r(a)?a.charAt(b):a[b]},ub=function(a,b){return 0<=nb(a,b)},vb=function(a){if("array"!=p(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0},wb=function(a,b){b=nb(a,b);var c;if(c=0<=b)B(null!=a.length),Array.prototype.splice.call(a, -b,1);return c},xb=function(a){var b=a.length;if(0=this.b()){for(var c=this.a,d=0;d>1,a[d].a>c.a)a[b]=a[d],b=d;else break;a[b]=c};Pb.prototype.A=function(){for(var a=this.a,b=[],c=a.length,d=0;dparseFloat(gc)){fc=String(ic);break a}}fc=gc} -var kc=fc,Ka={},E=function(a){return La(a,function(){for(var b=0,c=Na(String(kc)).split("."),d=Na(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f2*a.f&&vc(a),!0):!1},vc=function(a){if(a.f!=a.a.length){for(var b=0,c=0;b=d.a.length)throw Yb;var e=d.a[b++];return a?e:d.c[e]};return e};var xc=function(a,b){Cb.call(this,a?a.type:"");this.c=this.a=this.target=null;if(a){this.type=a.type;this.target=a.target||a.srcElement;this.a=b;if((b=a.relatedTarget)&&cc)try{Ja(b.nodeName)}catch(c){}this.c=a;a.defaultPrevented&&this.b()}};v(xc,Cb);xc.prototype.b=function(){xc.I.b.call(this);var a=this.c;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,uc)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};var G=function(a,b){this.a=0;this.i=void 0;this.f=this.b=this.c=null;this.g=this.h=!1;if(a!=ba)try{var c=this;a.call(b,function(a){yc(c,2,a)},function(a){if(!(a instanceof zc))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}yc(c,3,a)})}catch(d){yc(this,3,d)}},Ac=function(){this.next=this.f=this.c=this.b=this.a=null;this.g=!1};Ac.prototype.reset=function(){this.f=this.c=this.b=this.a=null;this.g=!1}; -var Bc=new za(function(){return new Ac},function(a){a.reset()},100),Cc=function(a,b,c){var d=Bc.get();d.b=a;d.c=b;d.f=c;return d},Dc=function(a){if(a instanceof G)return a;var b=new G(ba);yc(b,2,a);return b},Ec=function(a){return new G(function(b,c){c(a)})}; -G.prototype.then=function(a,b,c){null!=a&&eb(a,"opt_onFulfilled should be a function.");null!=b&&eb(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");return Fc(this,t(a)?a:null,t(b)?b:null,c)};Ha(G);G.prototype.l=function(a,b){return Fc(this,null,a,b)};G.prototype.cancel=function(a){0==this.a&&qc(function(){var b=new zc(a);Gc(this,b)},this)}; -var Gc=function(a,b){if(0==a.a)if(a.c){var c=a.c;if(c.b){for(var d=0,e=null,f=null,g=c.b;g&&(g.g||(d++,g.a==a&&(e=g),!(e&&1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode= --1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.a;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.a=d[e];var f=gd(d[e],a,!0,b),c=c&&f}for(e=0;e>>0),Wc=function(a){B(a,"Listener can not be null.");if(t(a))return a;B(a.handleEvent,"An object listener must have handleEvent method."); -a[hd]||(a[hd]=function(b){return a.handleEvent(b)});return a[hd]};var H=function(a,b){fb.call(this);this.m=a||0;this.f=b||10;if(this.m>this.f)throw Error("[goog.structs.Pool] Min can not be greater than max");this.a=new Rb;this.c=new Qc;this.j=null;this.S()};v(H,fb);H.prototype.W=function(){var a=ja();if(!(null!=this.j&&0>a-this.j)){for(var b;0this.f&&0=b.j&&b.cancel())}this.u?this.u.call(this.s,this):this.l=!0;if(!this.a){a=new md;if(this.a){if(!this.l)throw new nd;this.l=!1}B(!(a instanceof ld),"An execution sequence may not be initiated with a blocking Deferred.");this.a=!0;this.b=a;this.f=!0;od(this)}}};ld.prototype.m=function(a,b){this.i=!1;this.a=!0;this.b=b;this.f=!a;od(this)}; -var pd=function(a,b,c){B(!a.o,"Blocking Deferreds can not be re-used");a.g.push([b,c,void 0]);a.a&&od(a)};ld.prototype.then=function(a,b,c){var d,e,f=new G(function(a,b){d=a;e=b});pd(this,d,function(a){a instanceof md?f.cancel():e(a)});return f.then(a,b,c)};Ha(ld); -var qd=function(a){return rb(a.g,function(a){return t(a[1])})},od=function(a){if(a.h&&a.a&&qd(a)){var b=a.h,c=rd[b];c&&(l.clearTimeout(c.a),delete rd[b]);a.h=0}a.c&&(a.c.j--,delete a.c);for(var b=a.b,d=c=!1;a.g.length&&!a.i;){var e=a.g.shift(),f=e[0],g=e[1],e=e[2];if(f=a.f?g:f)try{var h=f.call(e||a.s,b);n(h)&&(a.f=a.f&&(h==b||h instanceof Error),a.b=b=h);if(Ia(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.i=!0}catch(m){b=m,a.f=!0,qd(a)||(c=!0)}}a.b=b;d&&(h=u(a.m,a,!0),d=u(a.m,a, -!1),b instanceof ld?(pd(b,h,d),b.o=!0):b.then(h,d));c&&(b=new sd(b),rd[b.a]=b,a.h=b.a)},nd=function(){z.call(this)};v(nd,z);nd.prototype.message="Deferred has already fired";nd.prototype.name="AlreadyCalledError";var md=function(){z.call(this)};v(md,z);md.prototype.message="Deferred was canceled";md.prototype.name="CanceledError";var sd=function(a){this.a=l.setTimeout(u(this.c,this),0);this.b=a}; -sd.prototype.c=function(){B(rd[this.a],"Cannot throw an error that is not scheduled.");delete rd[this.a];throw this.b;};var rd={};var td=function(a){this.f=a;this.b=this.c=this.a=null},ud=function(a,b){this.name=a;this.value=b};ud.prototype.toString=function(){return this.name};var vd=new ud("SEVERE",1E3),wd=new ud("CONFIG",700),xd=new ud("FINE",500),yd=function(a){if(a.c)return a.c;if(a.a)return yd(a.a);db("Root logger has no level set.");return null}; -td.prototype.log=function(a,b,c){if(a.value>=yd(this).value)for(t(b)&&(b=b()),a=new Ba(a,String(b),this.f),c&&(a.a=c),c="log:"+a.b,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;)c=c.a}; -var zd={},Ad=null,Bd=function(a){Ad||(Ad=new td(""),zd[""]=Ad,Ad.c=wd);var b;if(!(b=zd[a])){b=new td(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=Bd(a.substr(0,c));c.b||(c.b={});c.b[d]=b;b.a=c;zd[a]=b}return b};var Cd=function(){fb.call(this);this.b=new Ib(this);this.Y=this;this.G=null};v(Cd,fb);Cd.prototype[gb]=!0;Cd.prototype.removeEventListener=function(a,b,c,d){dd(this,a,b,c,d)}; -var I=function(a,b){Xc(a);var c,d=a.G;if(d){c=[];for(var e=1;d;d=d.G)c.push(d),B(1E3>++e,"infinite loop")}a=a.Y;d=b.type||b;r(b)?b=new Cb(b,a):b instanceof Cb?b.target=b.target||a:(e=b,b=new Cb(d,a),Ga(b,e));var e=!0,f;if(c)for(var g=c.length-1;0<=g;g--)f=b.a=c[g],e=Dd(f,d,!0,b)&&e;f=b.a=a;e=Dd(f,d,!0,b)&&e;e=Dd(f,d,!1,b)&&e;if(c)for(g=0;g=f)c=void 0;else{if(1==f)vb(e);else{e[0]=e.pop();for(var e=0,d=d.a,f=d.length,g=d[e];e>1;){var h=2*e+1,m=2*e+2,h=mg.a)break;d[e]=d[h];e=h}d[e]=g}c=c.b}c.apply(this,[b])}else break}}; -k.$=function(a){J.I.$.call(this,a);this.aa()};k.S=function(){J.I.S.call(this);this.aa()};k.D=function(){J.I.D.call(this);l.clearTimeout(void 0);vb(this.h.a);this.h=null};var K=function(a,b){a&&a.log(xd,b,void 0)};var Ed=function(a,b,c){if(t(a))c&&(a=u(a,c));else if(a&&"function"==typeof a.handleEvent)a=u(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647e,h=ub([408,429],e),g=ub(g.o,e),f=f||h||g;f?(e=7===b.K,jd(b),a(!1,new Xd(!1,null,e))):(e=ub(d.G,e),a(!0,new Xd(e,b)))})})}function c(a,b){var c=d.l;a=d.j;var e=b.c;if(b.b)try{var f=d.s(e,Sd(e));n(f)?c(f):c()}catch(q){a(q)}else null!==e?(b=ma(),f=Sd(e),b.serverResponse=f,d.i?a(d.i(e,b)):a(b)):(b=b.a?d.g?qa(): -na():new w("retry-limit-exceeded","Max retry time for operation exceeded, please try again."),a(b));jd(e)}var d=a;a.h?c(0,new Xd(!1,null,!0)):a.c=ka(b,c,a.F)};Wd.prototype.a=function(){return this.B};Wd.prototype.cancel=function(a){this.h=!0;this.g=a||!1;null!==this.c&&(0,this.c)(!1);null!==this.b&&this.b.abort()}; -var Yd=function(a,b,c){var d=ab(a.b),d=a.i+d,e=a.headers?ta(a.headers):{};null!==b&&0b&&(b+=a.size),0>b&&(b=0),0>c&&(c+=a.size),cb.length?b:Hb(b)};a.push(b);b=new S("size");b.a=function(a,b){return y(b)?+b:b};a.push(b);a.push(new S("timeCreated"));a.push(new S("updated"));a.push(new S("md5Hash",null,!0)); -a.push(new S("cacheControl",null,!0));a.push(new S("contentDisposition",null,!0));a.push(new S("contentEncoding",null,!0));a.push(new S("contentLanguage",null,!0));a.push(new S("contentType",null,!0));a.push(new S("metadata","customMetadata",!0));a.push(new S("downloadTokens","downloadURLs",!1,function(a,b){if(!(xa(b)&&0m;m++)h+=Math.random().toString().slice(2);g["Content-Type"]="multipart/related; boundary="+h;e=ze(b,d,e);m=le(e,c);d=ae("--"+h+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+ -m+"\r\n--"+h+"\r\nContent-Type: "+e.contentType+"\r\n\r\n",d,"\r\n--"+h+"--");if(null===d)throw oa();a=new x(la+"/v0"+f,"POST",ue(a,c),a.b);a.b={name:e.fullPath};a.headers=g;a.body=d.v;a.a=ve(b);return a},Be=function(a,b,c,d){this.a=a;this.total=b;this.b=!!c;this.c=d||null},Ce=function(a,b){var c;try{c=Td(a,"X-Goog-Upload-Status")}catch(d){te(!1)}te(ub(b||["active"],c));return c},De=function(a,b,c,d,e){var f="/b/"+encodeURIComponent(b.bucket)+"/o",g=ze(b,d,e);e={name:g.fullPath};f=la+"/v0"+f;d={"X-Goog-Upload-Protocol":"resumable", -"X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":d.a,"X-Goog-Upload-Header-Content-Type":g.contentType,"Content-Type":"application/json; charset=utf-8"};c=le(g,c);a=new x(f,"POST",function(a){Ce(a);var b;try{b=Td(a,"X-Goog-Upload-URL")}catch(q){te(!1)}te(xa(b));return b},a.b);a.b=e;a.headers=d;a.body=c;a.a=ve(b);return a},Ee=function(a,b,c,d){a=new x(c,"POST",function(a){var b=Ce(a,["active","final"]),c;try{c=Td(a,"X-Goog-Upload-Size-Received")}catch(h){te(!1)}a=c;isFinite(a)&& -(a=String(a));a=r(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN;te(!isNaN(a));return new Be(a,d.a,"final"===b)},a.b);a.headers={"X-Goog-Upload-Command":"query"};a.a=ve(b);a.g=!1;return a},Fe=function(a,b,c,d,e,f,g){var h=new Be(0,0);g?(h.a=g.a,h.total=g.total):(h.a=0,h.total=d.a);if(d.a!==h.total)throw new w("server-file-wrong-size","Server recorded incorrect upload file size, please retry the upload.");var m=g=h.total-h.a;0262144*a.i&&(a.i*=2);a.a=null;Oe(a,b.a);b.b?(a.h=b.c,V(a,"success")):Ge(a)},a.V)})},Ke=function(a){Ne(a,function(b){var c=xe(a.c,a.j,a.m);a.a=R(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;V(a,"success")},a.Y)})},Me=function(a){Ne(a,function(b){var c=Ae(a.c,a.j,a.m,a.f,a.h);a.a= -R(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;Oe(a,a.f.a);V(a,"success")},a.V)})},Oe=function(a,b){var c=a.l;a.l=b;a.l>c&&Pe(a)},V=function(a,b){if(a.b!==b)switch(b){case "canceling":a.b=b;null!==a.a&&a.a.cancel();break;case "pausing":a.b=b;null!==a.a&&a.a.cancel();break;case "running":var c="paused"===a.b;a.b=b;c&&(Pe(a),He(a));break;case "paused":a.b=b;Pe(a);break;case "canceled":a.g=na();a.b=b;Pe(a);break;case "error":a.b=b;Pe(a);break;case "success":a.b=b,Pe(a)}},Ge=function(a){switch(a.b){case "pausing":V(a, -"paused");break;case "canceling":V(a,"canceled");break;case "running":He(a)}};W.prototype.C=function(){return new A(this.l,this.f.a,wa(this.b),this.h,this,this.L)}; -W.prototype.O=function(a,b,c,d){function e(a){try{g(a);return}catch(P){}try{if(h(a),!(n(a.next)||n(a.error)||n(a.complete)))throw"";}catch(P){throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";}}function f(a){return function(b,c,d){null!==a&&T("on",a,arguments);var e=new Ta(b,c,d);Qe(m,e);return function(){wb(m.F,e)}}}var g=se().a,h=re(null,!0).a;T("on",[oe(function(){if("state_changed"!==a)throw"Expected one of the event types: [state_changed].";}),re(e,!0), -se(),se()],arguments);var m=this,q=[re(function(a){if(null===a)throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";e(a)}),se(),se()];return n(b)||n(c)||n(d)?f(null)(b,c,d):f(q)};W.prototype.then=function(a,b){return this.G.then(a,b)}; -var Qe=function(a,b){a.F.push(b);Re(a,b)},Pe=function(a){Se(a);var b=xb(a.F);ob(b,function(b){Re(a,b)})},Se=function(a){if(null!==a.o){var b=!0;switch(wa(a.b)){case "success":Rc(a.o.bind(null,a.C()))();break;case "canceled":case "error":Rc(a.B.bind(null,a.g))();break;default:b=!1}b&&(a.o=null,a.B=null)}},Re=function(a,b){switch(wa(a.b)){case "running":case "paused":null!==b.next&&Rc(b.next.bind(b,a.C()))();break;case "success":null!==b.b&&Rc(b.b.bind(b))();break;case "canceled":case "error":null!== -b.a&&Rc(b.a.bind(b,a.g))();break;default:null!==b.a&&Rc(b.a.bind(b,a.g))()}};W.prototype.R=function(){T("resume",[],arguments);var a="paused"===this.b||"pausing"===this.b;a&&V(this,"running");return a};W.prototype.P=function(){T("pause",[],arguments);var a="running"===this.b;a&&V(this,"pausing");return a};W.prototype.cancel=function(){T("cancel",[],arguments);var a="running"===this.b||"pausing"===this.b;a&&V(this,"canceling");return a};var X=function(a,b){this.b=a;if(b)this.a=b instanceof Qa?b:Sa(b);else if(a=a.bucket(),null!==a)this.a=new Qa(a,"");else throw new w("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");};X.prototype.toString=function(){T("toString",[],arguments);return"gs://"+this.a.bucket+"/"+this.a.path};var Te=function(a,b){return new X(a,b)};k=X.prototype; -k.fa=function(a){T("child",[oe()],arguments);var b=Gb(this.a.path,a);return Te(this.b,new Qa(this.a.bucket,b))};k.Da=function(){var a;a=this.a.path;if(0==a.length)a=null;else{var b=a.lastIndexOf("/");a=-1===b?"":a.slice(0,b)}return null===a?null:Te(this.b,new Qa(this.a.bucket,a))};k.Fa=function(){return Te(this.b,new Qa(this.a.bucket,""))};k.ma=function(){return this.a.bucket};k.ya=function(){return this.a.path};k.Ca=function(){return Hb(this.a.path)};k.Ha=function(){return this.b.i}; -k.ra=function(a,b){T("put",[pe(),new U(me,!0)],arguments);Ue(this,"put");return new W(this,this.b,this.a,je(),new O(a),b)};k.sa=function(a,b,c){T("putString",[oe(),oe(Va,!0),new U(me,!0)],arguments);Ue(this,"putString");var d=$a(y(b)?b:"raw",a),e=c?ta(c):{};!y(e.contentType)&&y(d.a)&&(e.contentType=d.a);return new W(this,this.b,this.a,je(),new O(d.data,!0),e)}; -k.delete=function(){T("delete",[],arguments);Ue(this,"delete");var a=this;return ge(this.b).then(function(b){var c=ye(a.b,a.a);return R(a.b,c,b).a()})};k.ga=function(){T("getMetadata",[],arguments);Ue(this,"getMetadata");var a=this;return ge(this.b).then(function(b){var c=xe(a.b,a.a,je());return R(a.b,c,b).a()})}; -k.ta=function(a){T("updateMetadata",[new U(me,void 0)],arguments);Ue(this,"updateMetadata");var b=this;return ge(this.b).then(function(c){var d=b.b,e=b.a,f=a,g=je(),h=Ra(e),h=la+"/v0"+h,f=le(f,g),d=new x(h,"PATCH",ue(d,g),d.c);d.headers={"Content-Type":"application/json; charset=utf-8"};d.body=f;d.a=we(e);return R(b.b,d,c).a()})}; -k.qa=function(){T("getDownloadURL",[],arguments);Ue(this,"getDownloadURL");return this.ga().then(function(a){a=a.downloadURLs[0];if(y(a))return a;throw new w("no-download-url","The given file does not have any download URLs.");})};var Ue=function(a,b){if(""===a.a.path)throw new w("invalid-root-operation","The operation '"+b+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').");};var Y=function(a){this.a=new fe(a,function(a,c){return new X(a,c)},Yd,this);this.b=a;this.c=new Ve(this)};k=Y.prototype;k.ua=function(a){T("ref",[oe(function(a){if(/^[A-Za-z]+:\/\//.test(a))throw"Expected child path but got a URL, use refFromURL instead.";},!0)],arguments);var b=new X(this.a);return n(a)?b.fa(a):b}; -k.va=function(a){T("refFromURL",[oe(function(a){if(!/^[A-Za-z]+:\/\//.test(a))throw"Expected full URL but got a child path, use ref instead.";try{Sa(a)}catch(c){throw"Expected valid full URL but got an invalid one.";}},!1)],arguments);return new X(this.a,a)};k.Aa=function(){return this.a.b};k.xa=function(a){T("setMaxUploadRetryTime",[qe()],arguments);this.a.b=a};k.za=function(){return this.a.c};k.wa=function(a){T("setMaxOperationRetryTime",[qe()],arguments);this.a.c=a};k.la=function(){return this.b}; -k.ka=function(){return this.c};var Ve=function(a){this.a=a};Ve.prototype.delete=function(){var a=this.a.a;a.f=!0;a.a=null;ee(a.h)};var Z=function(a,b,c){Object.defineProperty(a,b,{get:c})};X.prototype.toString=X.prototype.toString;X.prototype.child=X.prototype.fa;X.prototype.put=X.prototype.ra;X.prototype.putString=X.prototype.sa;X.prototype["delete"]=X.prototype.delete;X.prototype.getMetadata=X.prototype.ga;X.prototype.updateMetadata=X.prototype.ta;X.prototype.getDownloadURL=X.prototype.qa;Z(X.prototype,"parent",X.prototype.Da);Z(X.prototype,"root",X.prototype.Fa);Z(X.prototype,"bucket",X.prototype.ma); -Z(X.prototype,"fullPath",X.prototype.ya);Z(X.prototype,"name",X.prototype.Ca);Z(X.prototype,"storage",X.prototype.Ha);Y.prototype.ref=Y.prototype.ua;Y.prototype.refFromURL=Y.prototype.va;Z(Y.prototype,"maxOperationRetryTime",Y.prototype.za);Y.prototype.setMaxOperationRetryTime=Y.prototype.wa;Z(Y.prototype,"maxUploadRetryTime",Y.prototype.Aa);Y.prototype.setMaxUploadRetryTime=Y.prototype.xa;Z(Y.prototype,"app",Y.prototype.la);Z(Y.prototype,"INTERNAL",Y.prototype.ka);Ve.prototype["delete"]=Ve.prototype.delete; -Y.prototype.capi_=function(a){la=a};W.prototype.on=W.prototype.O;W.prototype.resume=W.prototype.R;W.prototype.pause=W.prototype.P;W.prototype.cancel=W.prototype.cancel;Z(W.prototype,"snapshot",W.prototype.C);Z(A.prototype,"bytesTransferred",A.prototype.na);Z(A.prototype,"totalBytes",A.prototype.Ja);Z(A.prototype,"state",A.prototype.Ga);Z(A.prototype,"metadata",A.prototype.Ba);Z(A.prototype,"downloadURL",A.prototype.pa);Z(A.prototype,"task",A.prototype.Ia);Z(A.prototype,"ref",A.prototype.Ea); -ua.STATE_CHANGED="state_changed";va.RUNNING="running";va.PAUSED="paused";va.SUCCESS="success";va.CANCELED="canceled";va.ERROR="error";Ua.RAW="raw";Ua.BASE64="base64";Ua.BASE64URL="base64url";Ua.DATA_URL="data_url";G.prototype["catch"]=G.prototype.l;G.prototype.then=G.prototype.then; -(function(){function a(a){return new Y(a)}var b={TaskState:va,TaskEvent:ua,StringFormat:Ua,Storage:Y,Reference:X};if("undefined"!==typeof firebase)firebase.INTERNAL.registerService("storage",a,b);else throw Error("Cannot install Firebase Storage - be sure to load firebase-app.js first.");})();})(); +/*! @license Firebase v3.6.10 + Build: 3.6.10-rc.1 + Terms: https://firebase.google.com/terms/ */ +(function(){for(var k,aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},l="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,m=["Number","MIN_SAFE_INTEGER"],ba=0;bah&&(h*=2);var c;1===C?(C=2,c=0):c=1E3*(h+Math.random());e(c)}}function g(a){Ma||(Ma=!0,z||(null!==p?(a||(C=2),clearTimeout(p),e(0)):a||(C=1)))}var h=1,p=null,B=!1,C=0,z=!1,Ma=!1;e(0);setTimeout(function(){B=!0;g(!0)},c);return g};var t="https://firebasestorage.googleapis.com";var u=function(a,b){this.code="storage/"+a;this.message="Firebase Storage: "+b;this.serverResponse=null;this.name="FirebaseError"};(function(){var a=Error;function b(){}b.prototype=a.prototype;u.b=a.prototype;u.prototype=new b;u.a=function(b,d,e){for(var c=Array(arguments.length-2),g=2;gb?1:0};var A=function(a){return function(){var b=[];Array.prototype.push.apply(b,arguments);firebase.Promise.resolve(!0).then(function(){a.apply(null,b)})}};var D=function(a,b){this.bucket=a;this.path=b},za=function(a){var b=encodeURIComponent;return"/b/"+b(a.bucket)+"/o/"+b(a.path)},Aa=function(a){for(var b=null,c=[{K:/^gs:\/\/([A-Za-z0-9.\-]+)(\/(.*))?$/i,G:{bucket:1,path:3},J:function(a){"/"===a.path.charAt(a.path.length-1)&&(a.path=a.path.slice(0,-1))}},{K:/^https?:\/\/firebasestorage\.googleapis\.com\/v[A-Za-z0-9_]+\/b\/([A-Za-z0-9.\-]+)\/o(\/([^?#]*).*)?$/i,G:{bucket:1,path:3},J:function(a){a.path=decodeURIComponent(a.path)}}],d=0;d=d)b.push(d);else if(2047>=d)b.push(192|d>>6,128|d&63);else if(55296==(d&64512))if(c>18,128|d>>12&63,128|d>>6&63,128|d&63)}else b.push(239,191,189);else 56320==(d&64512)?b.push(239,191,189):b.push(224|d>>12,128|d>>6&63,128|d&63)}return new Uint8Array(b)}, +Fa=function(a,b){switch(a){case "base64":var c=-1!==b.indexOf("-"),d=-1!==b.indexOf("_");if(c||d)throw v(a,"Invalid character '"+(c?"-":"_")+"' found: is it base64url encoded?");break;case "base64url":c=-1!==b.indexOf("+");d=-1!==b.indexOf("/");if(c||d)throw v(a,"Invalid character '"+(c?"+":"/")+"' found: is it base64 encoded?");b=b.replace(/-/g,"+").replace(/_/g,"/")}var e;try{e=atob(b)}catch(f){throw v(a,"Invalid character found");}a=new Uint8Array(e.length);for(b=0;b][;base64],");b=b[1]||null;this.a=!1;this.b=null;if(null!=b){var c=b.length-7;this.b=(this.a=0<=c&&b.indexOf(";base64",c)==c)?b.substring(0,b.length-7):b}this.c=a.substring(a.indexOf(",")+1)};var Ia=function(a){var b=encodeURIComponent,c="?";ma(a,function(a,e){a=b(a)+"="+b(e);c=c+a+"&"});return c=c.slice(0,-1)};var Ja=function(){var a=this;this.a=new XMLHttpRequest;this.c=0;this.f=qa(function(b){a.a.addEventListener("abort",function(){a.c=2;b(a)});a.a.addEventListener("error",function(){a.c=1;b(a)});a.a.addEventListener("load",function(){b(a)})});this.b=!1},Ka=function(a,b,c,d,e){if(a.b)throw la("cannot .send() more than once");a.b=!0;a.a.open(c,b,!0);y(e)&&ma(e,function(b,c){a.a.setRequestHeader(b,c.toString())});y(d)?a.a.send(d):a.a.send();return a.f},La=function(a){if(!a.b)throw la("cannot .getErrorCode() before sending"); +return a.c},F=function(a){if(!a.b)throw la("cannot .getStatus() before sending");try{return a.a.status}catch(b){return-1}},Na=function(a){if(!a.b)throw la("cannot .getResponseText() before sending");return a.a.responseText};Ja.prototype.abort=function(){this.a.abort()};var G=function(a,b,c,d,e,f){this.b=a;this.h=b;this.f=c;this.a=d;this.g=e;this.c=f};k=G.prototype;k.V=function(){return this.b};k.qa=function(){return this.h};k.na=function(){return this.f};k.ia=function(){return this.a};k.W=function(){if(y(this.a)){var a=this.a.downloadURLs;return y(a)&&y(a[0])?a[0]:null}return null};k.pa=function(){return this.g};k.la=function(){return this.c};var H;a:{var Oa=n.navigator;if(Oa){var Pa=Oa.userAgent;if(Pa){H=Pa;break a}}H=""};var Ra=function(a,b,c,d,e,f,g,h,p,B,C){this.C=a;this.A=b;this.v=c;this.o=d;this.B=e.slice();this.m=f.slice();this.j=this.l=this.c=this.b=null;this.f=this.g=!1;this.s=g;this.h=h;this.D=C;this.w=p;var z=this;this.u=qa(function(a,b){z.l=a;z.j=b;Qa(z)})},Sa=function(a,b,c){this.b=a;this.c=b;this.a=!!c},Qa=function(a){function b(a,b){b?a(!1,new Sa(!1,null,!0)):(b=new Ja,b.a.withCredentials=d.D,d.b=b,Ka(b,d.C,d.A,d.o,d.v).then(function(b){d.b=null;var c=0===La(b),e=F(b);if(!(c=!c))var c=r([408,429],e), +f=r(d.m,e),c=500<=e&&600>e||c||f;c?(b=2===La(b),a(!1,new Sa(!1,null,b))):a(!0,new Sa(r(d.B,e),b))}))}function c(a,b){var c=d.l;a=d.j;var e=b.c;if(b.b)try{var f=d.s(e,Na(e));q(f)?c(f):c()}catch(B){a(B)}else null!==e?(b=ga(),f=Na(e),b.serverResponse=f,d.h?a(d.h(e,b)):a(b)):(b=b.a?d.f?ka():ha():new u("retry-limit-exceeded","Max retry time for operation exceeded, please try again."),a(b))}var d=a;a.g?c(0,new Sa(!1,null,!0)):a.c=fa(b,c,a.w)};Ra.prototype.a=function(){return this.u}; +Ra.prototype.cancel=function(a){this.g=!0;this.f=a||!1;null!==this.c&&(0,this.c)(!1);null!==this.b&&this.b.abort()};var Ta=function(a,b,c){var d=Ia(a.b),d=a.h+d,e=a.headers?na(a.headers):{};null!==b&&0parseFloat(gb)){fb=String(ib);break a}}fb=gb} +var kb=fb,va={},lb=function(a){return wa(a,function(){for(var b=0,c=xa(String(kb)).split("."),d=xa(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&fb&&(b+=a.size),0>b&&(b=0),0>c&&(c+=a.size),cb.length?b:pa(b)};a.push(b);b=new J("size");b.a=function(a,b){return y(b)?+b:b};a.push(b);a.push(new J("timeCreated"));a.push(new J("updated"));a.push(new J("md5Hash",null,!0)); +a.push(new J("cacheControl",null,!0));a.push(new J("contentDisposition",null,!0));a.push(new J("contentEncoding",null,!0));a.push(new J("contentLanguage",null,!0));a.push(new J("contentType",null,!0));a.push(new J("metadata","customMetadata",!0));a.push(new J("downloadTokens","downloadURLs",!1,function(a,b){if(!(ta(b)&&0p;p++)h+=Math.random().toString().slice(2);g["Content-Type"]="multipart/related; boundary="+ +h;e=Db(b,d,e);p=sb(e,c);d=yb("--"+h+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+p+"\r\n--"+h+"\r\nContent-Type: "+e.contentType+"\r\n\r\n",d,"\r\n--"+h+"--");if(null===d)throw ia();a=new w(t+"/v0"+f,"POST",zb(a,c),a.b);a.b={name:e.fullPath};a.headers=g;a.body=d.i;a.a=Q(b);return a},Fb=function(a,b,c,d){this.a=a;this.total=b;this.b=!!c;this.c=d||null},Gb=function(a,b){var c;try{c=a.a.getResponseHeader("X-Goog-Upload-Status")}catch(d){P(!1)}P(r(b||["active"],c));return c},Hb=function(a, +b,c,d,e){var f="/b/"+encodeURIComponent(b.bucket)+"/o",g=Db(b,d,e);e={name:g.fullPath};f=t+"/v0"+f;d={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":d.a,"X-Goog-Upload-Header-Content-Type":g.contentType,"Content-Type":"application/json; charset=utf-8"};c=sb(g,c);a=new w(f,"POST",function(a){Gb(a);var b;try{b=a.a.getResponseHeader("X-Goog-Upload-URL")}catch(B){P(!1)}P(ta(b));return b},a.b);a.b=e;a.headers=d;a.body=c;a.a=Q(b);return a},Ib= +function(a,b,c,d){a=new w(c,"POST",function(a){var b=Gb(a,["active","final"]),c;try{c=a.a.getResponseHeader("X-Goog-Upload-Size-Received")}catch(h){P(!1)}a=c;isFinite(a)&&(a=String(a));a="string"==typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN;P(!isNaN(a));return new Fb(a,d.a,"final"===b)},a.b);a.headers={"X-Goog-Upload-Command":"query"};a.a=Q(b);a.f=!1;return a},Jb=function(a,b,c,d,e,f,g){var h=new Fb(0,0);g?(h.a=g.a,h.total=g.total):(h.a=0,h.total=d.a);if(d.a!==h.total)throw new u("server-file-wrong-size", +"Server recorded incorrect upload file size, please retry the upload.");var p=g=h.total-h.a;0262144*a.j&&(a.j*=2);a.a=null;Qb(a,b.a);b.b?(a.h=b.c,S(a,"success")):R(a)},a.F)})},Nb=function(a){U(a,function(b){var c=Bb(a.c,a.l,a.s);a.a=I(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;S(a,"success")},a.P)})},Pb=function(a){U(a,function(b){var c=Eb(a.c,a.l,a.s,a.f,a.h);a.a=I(a.c,c, +b);a.a.a().then(function(b){a.a=null;a.h=b;Qb(a,a.f.a);S(a,"success")},a.F)})},Qb=function(a,b){var c=a.m;a.m=b;a.m>c&&V(a)},S=function(a,b){if(a.b!==b)switch(b){case "canceling":a.b=b;null!==a.a&&a.a.cancel();break;case "pausing":a.b=b;null!==a.a&&a.a.cancel();break;case "running":var c="paused"===a.b;a.b=b;c&&(V(a),Kb(a));break;case "paused":a.b=b;V(a);break;case "canceled":a.g=ha();a.b=b;V(a);break;case "error":a.b=b;V(a);break;case "success":a.b=b,V(a)}},R=function(a){switch(a.b){case "pausing":S(a, +"paused");break;case "canceling":S(a,"canceled");break;case "running":Kb(a)}};T.prototype.w=function(){return new G(this.m,this.f.a,sa(this.b),this.h,this,this.L)}; +T.prototype.M=function(a,b,c,d){function e(a){try{g(a);return}catch(z){}try{if(h(a),!(q(a.next)||q(a.error)||q(a.complete)))throw"";}catch(z){throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";}}function f(a){return function(b,c,d){null!==a&&K("on",a,arguments);var e=new Ba(b,c,d);Rb(p,e);return function(){var a=p.B,b=a.indexOf(e);-1!==b&&a.splice(b,1)}}}var g=N().a,h=xb(null,!0).a;K("on",[M(function(){if("state_changed"!==a)throw"Expected one of the event types: [state_changed]."; +}),xb(e,!0),N(),N()],arguments);var p=this,B=[xb(function(a){if(null===a)throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";e(a)}),N(),N()];return q(b)||q(c)||q(d)?f(null)(b,c,d):f(B)};T.prototype.then=function(a,b){return this.C.then(a,b)};T.prototype["catch"]=function(a){return this.then(null,a)}; +var Rb=function(a,b){a.B.push(b);Sb(a,b)},V=function(a){Tb(a);Array.prototype.slice.call(a.B).forEach(function(b){Sb(a,b)})},Tb=function(a){if(null!==a.o){var b=!0;switch(sa(a.b)){case "success":A(a.o.bind(null,a.w()))();break;case "canceled":case "error":A(a.A.bind(null,a.g))();break;default:b=!1}b&&(a.o=null,a.A=null)}},Sb=function(a,b){switch(sa(a.b)){case "running":case "paused":null!==b.b&&A(b.b.bind(b,a.w()))();break;case "success":null!==b.a&&A(b.a.bind(b))();break;case "canceled":case "error":null!== +b.error&&A(b.error.bind(b,a.g))();break;default:null!==b.error&&A(b.error.bind(b,a.g))()}};T.prototype.O=function(){K("resume",[],arguments);var a="paused"===this.b||"pausing"===this.b;a&&S(this,"running");return a};T.prototype.N=function(){K("pause",[],arguments);var a="running"===this.b;a&&S(this,"pausing");return a};T.prototype.cancel=function(){K("cancel",[],arguments);var a="running"===this.b||"pausing"===this.b;a&&S(this,"canceling");return a};var W=function(a,b){this.a=a;if(b)this.location=b instanceof D?b:Aa(b);else if(a=a.bucket(),null!==a)this.location=new D(a,"");else throw new u("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");};W.prototype.toString=function(){K("toString",[],arguments);return"gs://"+this.location.bucket+"/"+this.location.path};var Ub=function(a,b){return new W(a,b)};k=W.prototype; +k.H=function(a){K("child",[M()],arguments);var b=oa(this.location.path,a);return Ub(this.a,new D(this.location.bucket,b))};k.ka=function(){var a;a=this.location.path;if(0==a.length)a=null;else{var b=a.lastIndexOf("/");a=-1===b?"":a.slice(0,b)}return null===a?null:Ub(this.a,new D(this.location.bucket,a))};k.ma=function(){return Ub(this.a,new D(this.location.bucket,""))};k.U=function(){return this.location.bucket};k.fa=function(){return this.location.path};k.ja=function(){return pa(this.location.path)}; +k.oa=function(){return this.a.l};k.Z=function(a,b){K("put",[vb(),new L(tb,!0)],arguments);X(this,"put");return new T(this,this.a,this.location,qb(),new O(a),b)};k.$=function(a,b,c){K("putString",[M(),M(Ca,!0),new L(tb,!0)],arguments);X(this,"putString");var d=Ha(y(b)?b:"raw",a),e=c?na(c):{};!y(e.contentType)&&y(d.a)&&(e.contentType=d.a);return new T(this,this.a,this.location,qb(),new O(d.data,!0),e)}; +k.X=function(){K("delete",[],arguments);X(this,"delete");var a=this;return $a(this.a).then(function(b){var c=Cb(a.a,a.location);return I(a.a,c,b).a()})};k.I=function(){K("getMetadata",[],arguments);X(this,"getMetadata");var a=this;return $a(this.a).then(function(b){var c=Bb(a.a,a.location,qb());return I(a.a,c,b).a()})}; +k.aa=function(a){K("updateMetadata",[new L(tb,void 0)],arguments);X(this,"updateMetadata");var b=this;return $a(this.a).then(function(c){var d=b.a,e=b.location,f=a,g=qb(),h=za(e),h=t+"/v0"+h,f=sb(f,g),d=new w(h,"PATCH",zb(d,g),d.c);d.headers={"Content-Type":"application/json; charset=utf-8"};d.body=f;d.a=Ab(e);return I(b.a,d,c).a()})}; +k.Y=function(){K("getDownloadURL",[],arguments);X(this,"getDownloadURL");return this.I().then(function(a){a=a.downloadURLs[0];if(y(a))return a;throw new u("no-download-url","The given file does not have any download URLs.");})};var X=function(a,b){if(""===a.location.path)throw new u("invalid-root-operation","The operation '"+b+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').");};var Y=function(a,b){this.a=new Za(a,function(a,b){return new W(a,b)},Ta,this,y(b)?b:new Ua);this.b=a;this.c=new Vb(this)};k=Y.prototype;k.ba=function(a){K("ref",[M(function(a){if(/^[A-Za-z]+:\/\//.test(a))throw"Expected child path but got a URL, use refFromURL instead.";},!0)],arguments);var b=new W(this.a);return q(a)?b.H(a):b}; +k.ca=function(a){K("refFromURL",[M(function(a){if(!/^[A-Za-z]+:\/\//.test(a))throw"Expected full URL but got a child path, use ref instead.";try{Aa(a)}catch(c){throw"Expected valid full URL but got an invalid one.";}},!1)],arguments);return new W(this.a,a)};k.ha=function(){return this.a.b};k.ea=function(a){K("setMaxUploadRetryTime",[wb()],arguments);this.a.b=a};k.ga=function(){return this.a.c};k.da=function(a){K("setMaxOperationRetryTime",[wb()],arguments);this.a.c=a};k.T=function(){return this.b}; +k.R=function(){return this.c};var Vb=function(a){this.a=a};Vb.prototype.b=function(){var a=this.a.a;a.f=!0;a.a=null;Ya(a.h)};var Z=function(a,b,c){Object.defineProperty(a,b,{get:c})};W.prototype.toString=W.prototype.toString;W.prototype.child=W.prototype.H;W.prototype.put=W.prototype.Z;W.prototype.putString=W.prototype.$;W.prototype["delete"]=W.prototype.X;W.prototype.getMetadata=W.prototype.I;W.prototype.updateMetadata=W.prototype.aa;W.prototype.getDownloadURL=W.prototype.Y;Z(W.prototype,"parent",W.prototype.ka);Z(W.prototype,"root",W.prototype.ma);Z(W.prototype,"bucket",W.prototype.U);Z(W.prototype,"fullPath",W.prototype.fa); +Z(W.prototype,"name",W.prototype.ja);Z(W.prototype,"storage",W.prototype.oa);Y.prototype.ref=Y.prototype.ba;Y.prototype.refFromURL=Y.prototype.ca;Z(Y.prototype,"maxOperationRetryTime",Y.prototype.ga);Y.prototype.setMaxOperationRetryTime=Y.prototype.da;Z(Y.prototype,"maxUploadRetryTime",Y.prototype.ha);Y.prototype.setMaxUploadRetryTime=Y.prototype.ea;Z(Y.prototype,"app",Y.prototype.T);Z(Y.prototype,"INTERNAL",Y.prototype.R);Vb.prototype["delete"]=Vb.prototype.b;Y.prototype.capi_=function(a){t=a}; +T.prototype.on=T.prototype.M;T.prototype.resume=T.prototype.O;T.prototype.pause=T.prototype.N;T.prototype.cancel=T.prototype.cancel;T.prototype.then=T.prototype.then;T.prototype["catch"]=T.prototype["catch"];Z(T.prototype,"snapshot",T.prototype.w);Z(G.prototype,"bytesTransferred",G.prototype.V);Z(G.prototype,"totalBytes",G.prototype.qa);Z(G.prototype,"state",G.prototype.na);Z(G.prototype,"metadata",G.prototype.ia);Z(G.prototype,"downloadURL",G.prototype.W);Z(G.prototype,"task",G.prototype.pa); +Z(G.prototype,"ref",G.prototype.la);ra.STATE_CHANGED="state_changed";x.RUNNING="running";x.PAUSED="paused";x.SUCCESS="success";x.CANCELED="canceled";x.ERROR="error";E.RAW="raw";E.BASE64="base64";E.BASE64URL="base64url";E.DATA_URL="data_url"; +(function(){function a(a){return new Y(a)}var b={TaskState:x,TaskEvent:ra,StringFormat:E,Storage:Y,Reference:W};if("undefined"!==typeof firebase)firebase.INTERNAL.registerService("storage",a,b);else throw Error("Cannot install Firebase Storage - be sure to load firebase-app.js first.");})();}).call(this); diff --git a/lib/firebase/firebase.d.ts b/lib/firebase/firebase.d.ts index 64bb35fa..2c778a4e 100644 --- a/lib/firebase/firebase.d.ts +++ b/lib/firebase/firebase.d.ts @@ -1,12 +1,13 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ +/*! @license Firebase v3.6.10 + Build: 3.6.10-rc.1 + Terms: https://firebase.google.com/terms/ */ declare namespace firebase { interface FirebaseError { code: string; message: string; name: string; stack: string; + toJSON(): Object; } class Promise extends Promise_Instance { @@ -16,9 +17,8 @@ declare namespace firebase { } class Promise_Instance implements firebase.Thenable { constructor( - resolver: - (a?: (a: T) => undefined, b?: (a: Error) => undefined) => any); - catch (onReject?: (a: Error) => any): firebase.Thenable; + resolver: (a: (a: T) => undefined, b: (a: Error) => undefined) => any); + catch(onReject?: (a: Error) => any): firebase.Thenable; then(onResolve?: (a: T) => any, onReject?: (a: Error) => any): firebase.Promise; } @@ -26,15 +26,15 @@ declare namespace firebase { var SDK_VERSION: string; interface Thenable { - catch (onReject?: (a: Error) => any): any; + catch(onReject?: (a: Error) => any): any; then(onResolve?: (a: T) => any, onReject?: (a: Error) => any): firebase.Thenable; } interface User extends firebase.UserInfo { - delete (): firebase.Promise; + delete(): firebase.Promise; emailVerified: boolean; - getToken(opt_forceRefresh?: boolean): firebase.Promise; + getToken(forceRefresh?: boolean): firebase.Promise; isAnonymous: boolean; link(credential: firebase.auth.AuthCredential): firebase.Promise; linkWithPopup(provider: firebase.auth.AuthProvider): firebase.Promise; @@ -46,6 +46,7 @@ declare namespace firebase { refreshToken: string; reload(): firebase.Promise; sendEmailVerification(): firebase.Promise; + toJSON(): Object; unlink(providerId: string): firebase.Promise; updateEmail(newEmail: string): firebase.Promise; updatePassword(newPassword: string): firebase.Promise; @@ -61,7 +62,7 @@ declare namespace firebase { uid: string; } - function app(name: string): firebase.app.App; + function app(name?: string): firebase.app.App; var apps: (firebase.app.App|null)[]; @@ -80,7 +81,8 @@ declare namespace firebase.app { interface App { auth(): firebase.auth.Auth; database(): firebase.database.Database; - delete (): firebase.Promise; + delete(): firebase.Promise; + messaging(): firebase.messaging.Messaging; name: string; options: Object; storage(): firebase.storage.Storage; @@ -103,8 +105,8 @@ declare namespace firebase.auth { fetchProvidersForEmail(email: string): firebase.Promise; getRedirectResult(): firebase.Promise; onAuthStateChanged( - nextOrObserver: Object, opt_error?: (a: firebase.auth.Error) => any, - opt_completed?: () => any): () => any; + nextOrObserver: Object, error?: (a: firebase.auth.Error) => any, + completed?: () => any): () => any; sendPasswordResetEmail(email: string): firebase.Promise; signInAnonymously(): firebase.Promise; signInWithCredential(credential: firebase.auth.AuthCredential): @@ -150,6 +152,7 @@ declare namespace firebase.auth { class FacebookAuthProvider_Instance implements firebase.auth.AuthProvider { addScope(scope: string): any; providerId: string; + setCustomParameters(customOAuthParameters: Object): any; } class GithubAuthProvider extends GithubAuthProvider_Instance { @@ -159,6 +162,7 @@ declare namespace firebase.auth { class GithubAuthProvider_Instance implements firebase.auth.AuthProvider { addScope(scope: string): any; providerId: string; + setCustomParameters(customOAuthParameters: Object): any; } class GoogleAuthProvider extends GoogleAuthProvider_Instance { @@ -169,6 +173,7 @@ declare namespace firebase.auth { class GoogleAuthProvider_Instance implements firebase.auth.AuthProvider { addScope(scope: string): any; providerId: string; + setCustomParameters(customOAuthParameters: Object): any; } class TwitterAuthProvider extends TwitterAuthProvider_Instance { @@ -178,6 +183,7 @@ declare namespace firebase.auth { } class TwitterAuthProvider_Instance implements firebase.auth.AuthProvider { providerId: string; + setCustomParameters(customOAuthParameters: Object): any; } type UserCredential = { @@ -280,17 +286,20 @@ declare namespace firebase.database { interface ThenableReference extends firebase.database.Reference, firebase.Thenable {} - function enableLogging(logger?: any, persistent?: boolean): any; + function enableLogging( + logger?: boolean|((a: string) => any), persistent?: boolean): any; } -declare namespace firebase.database.ServerValue {} +declare namespace firebase.database.ServerValue { + var TIMESTAMP: Object; +} declare namespace firebase.messaging { interface Messaging { deleteToken(token: string): firebase.Promise|null; getToken(): firebase.Promise|null; - onMessage(subscriber: any): any|null; - onTokenRefresh(subscriber: any): any|null; + onMessage(nextOrObserver: Object): () => any; + onTokenRefresh(nextOrObserver: Object): () => any; requestPermission(): firebase.Promise|null; setBackgroundMessageHandler(callback: (a: Object) => any): any; useServiceWorker(registration: any): any; @@ -313,10 +322,10 @@ declare namespace firebase.storage { interface Reference { bucket: string; child(path: string): firebase.storage.Reference; - delete (): Promise; + delete(): firebase.Promise; fullPath: string; - getDownloadURL(): Promise; - getMetadata(): Promise; + getDownloadURL(): firebase.Promise; + getMetadata(): firebase.Promise; name: string; parent: firebase.storage.Reference|null; put(data: any|Uint8Array|ArrayBuffer, @@ -329,7 +338,8 @@ declare namespace firebase.storage { root: firebase.storage.Reference; storage: firebase.storage.Storage; toString(): string; - updateMetadata(metadata: firebase.storage.SettableMetadata): Promise; + updateMetadata(metadata: firebase.storage.SettableMetadata): + firebase.Promise; } interface SettableMetadata { @@ -379,7 +389,7 @@ declare namespace firebase.storage { interface UploadTask { cancel(): boolean; - catch (onRejected: (a: Error) => any): Promise; + catch(onRejected: (a: Error) => any): firebase.Promise; on(event: firebase.storage.TaskEvent, nextOrObserver?: null|Object, error?: ((a: Error) => any)|null, complete?: (() => any)|null): Function; pause(): boolean; @@ -387,7 +397,7 @@ declare namespace firebase.storage { snapshot: firebase.storage.UploadTaskSnapshot; then( onFulfilled?: ((a: firebase.storage.UploadTaskSnapshot) => any)|null, - onRejected?: ((a: Error) => any)|null): Promise; + onRejected?: ((a: Error) => any)|null): firebase.Promise; } interface UploadTaskSnapshot { diff --git a/lib/firebase/firebase.js b/lib/firebase/firebase.js index f82a3069..3e067a1a 100644 --- a/lib/firebase/firebase.js +++ b/lib/firebase/firebase.js @@ -1,640 +1,604 @@ -/*! @license Firebase v3.5.2 - Build: 3.5.2-rc.1 - Terms: https://developers.google.com/terms */ -var firebase = null; (function() { for(var aa="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(c.get||c.set)throw new TypeError("ES3 does not support getters and setters.");a!=Array.prototype&&a!=Object.prototype&&(a[b]=c.value)},h="undefined"!=typeof window&&window===this?this:"undefined"!=typeof global&&null!=global?global:this,ba=function(){ba=function(){};h.Symbol||(h.Symbol=ca)},da=0,ca=function(a){return"jscomp_symbol_"+(a||"")+da++},m=function(){ba();var a=h.Symbol.iterator;a||(a=h.Symbol.iterator= -h.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&aa(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return ea(this)}});m=function(){}},ea=function(a){var b=0;return fa(function(){return be?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=C.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)f=g.decorate(a,b,c,d);else for(var k=a.length-1;0<=k;k--)if(g=a[k])f=(3>e?g(f):3"}),c=this.ka+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=S,X=function(a,b,c){var d=this;this.P=c;this.S=!1;this.l={};this.I=b;this.fa=R(void 0,a);Object.keys(c.INTERNAL.factories).forEach(function(a){var b=c.INTERNAL.useAsService(d,a);null!==b&&(b=d.da.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.P.INTERNAL.removeApp(a.I);return W.all(Object.keys(a.l).map(function(b){return a.l[b].INTERNAL.delete()}))}).then(function(){a.S=!0;a.l={}})}; -X.prototype.da=function(a){Y(this);void 0===this.l[a]&&(this.l[a]=this.P.INTERNAL.factories[a](this,this.ca.bind(this)));return this.l[a]};X.prototype.ca=function(a){R(this,a)};var Y=function(a){a.S&&Z(Ra("deleted",{name:a.I}))};h.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.I}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.fa}}});X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc"); -function Sa(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("noApp",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&f[d])f[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("serverAuthMissing"));return c}var d={},e={},f={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name", -{name:c+""});void 0!==d[c]&&Z("dupApp",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||R(a,{INTERNAL:{getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,v){e[b]&&Z("dupService",{name:b});e[b]=c;v&&(f[b]=v);c=function(c){void 0===c&&(c=a());return c[b]()};void 0!==d&&R(c,d);return g[b]=c},createFirebaseNamespace:Sa, -extendNamespace:function(a){R(g,a)},createSubscribe:La,ErrorFactory:Qa,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:Q,deepExtend:R}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Error(Ra(a,b));} -function Ra(a,b){b=b||{};b={noApp:"No Firebase App '"+b.name+"' has been created - call Firebase App.initializeApp().","bad-app-name":"Illegal App name: '"+b.name+"'.",dupApp:"Firebase App named '"+b.name+"' already exists.",deleted:"Firebase App named '"+b.name+"' already deleted.",dupService:"Firebase Service named '"+b.name+"' already registered.",serverAuthMissing:"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain."}[a]; -return void 0===b?"Application Error: ("+a+")":b};"undefined"!==typeof firebase&&(firebase=Sa()); })(); -firebase.SDK_VERSION = "3.5.2"; -(function(){var h,aa=aa||{},l=this,ba=function(){},ca=function(){throw Error("unimplemented abstract method");},m=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!= -typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},da=function(a){return null===a},ea=function(a){return"array"==m(a)},fa=function(a){var b=m(a);return"array"==b||"object"==b&&"number"==typeof a.length},n=function(a){return"string"==typeof a},ga=function(a){return"number"==typeof a},p=function(a){return"function"==m(a)},ha=function(a){var b=typeof a; -return"object"==b&&null!=a||"function"==b},ia=function(a,b,c){return a.call.apply(a.bind,arguments)},ja=function(a,b,c){if(!a)throw Error();if(2/g,ra=/"/g,sa=/'/g,ta=/\x00/g,va=/[\x00&<>"']/,v=function(a,b){return-1!=a.indexOf(b)},wa=function(a,b){return ab?1:0};var xa=function(a,b){b.unshift(a);u.call(this,ma.apply(null,b));b.shift()};r(xa,u);xa.prototype.name="AssertionError"; -var ya=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new xa(""+e,f||[]);},w=function(a,b,c){a||ya("",null,b,Array.prototype.slice.call(arguments,2))},za=function(a,b){throw new xa("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},Aa=function(a,b,c){ga(a)||ya("Expected number but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2));return a},Ba=function(a,b,c){n(a)||ya("Expected string but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments, -2))},Ca=function(a,b,c){p(a)||ya("Expected function but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2))};var Da=Array.prototype.indexOf?function(a,b,c){w(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(n(a))return n(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:n(a)?a.charAt(b):a[b]},Ka=function(a,b){return 0<=Da(a,b)},Ma=function(a,b){b=Da(a,b);var c;(c=0<=b)&&La(a,b);return c},La=function(a,b){w(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length},Na=function(a,b){var c=0;Fa(a,function(d,e){b.call(void 0,d,e,a)&&La(a,e)&&c++})},Oa=function(a){return Array.prototype.concat.apply(Array.prototype, -arguments)},Pa=function(a){return Array.prototype.concat.apply(Array.prototype,arguments)},Qa=function(a){var b=a.length;if(0parseFloat(mb)){lb=String(ob);break a}}lb=mb} -var pb=lb,db={},z=function(a){return eb(a,function(){for(var b=0,c=na(String(pb)).split("."),d=na(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f>4);64!=g&&(b(f<<4&240|g>>2),64!=k&&b(g<<6&192|k))}},wb=function(){if(!sb){sb={};tb={};for(var a=0;65>a;a++)sb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a), -tb[sb[a]]=a,62<=a&&(tb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a)]=a)}};var xb=!y||9<=Number(qb),yb=y&&!z("9");!jb||z("528");ib&&z("1.9b")||y&&z("8")||fb&&z("9.5")||jb&&z("528");ib&&!z("8")||y&&z("9");var zb=function(){this.Ba=this.Ba;this.Wb=this.Wb};zb.prototype.Ba=!1;zb.prototype.isDisposed=function(){return this.Ba};zb.prototype.Ra=function(){if(this.Wb)for(;this.Wb.length;)this.Wb.shift()()};var Ab=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.Ya=!1;this.Bd=!0};Ab.prototype.preventDefault=function(){this.defaultPrevented=!0;this.Bd=!1};var Bb=function(a,b){Ab.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.charCode=this.keyCode=this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.ob=this.state=null;a&&this.init(a,b)};r(Bb,Ab); -Bb.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;if(b=a.relatedTarget){if(ib){var e;a:{try{cb(b.nodeName);e=!0;break a}catch(f){}e=!1}e||(b=null)}}else"mouseover"==c?b=a.fromElement:"mouseout"==c&&(b=a.toElement);this.relatedTarget=b;null===d?(this.offsetX=jb||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=jb||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX: -a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.state=a.state;this.ob=a;a.defaultPrevented&& -this.preventDefault()};Bb.prototype.preventDefault=function(){Bb.Vc.preventDefault.call(this);var a=this.ob;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,yb)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};Bb.prototype.le=function(){return this.ob};var Cb="closure_listenable_"+(1E6*Math.random()|0),Db=0;var Eb=function(a,b,c,d,e){this.listener=a;this.ac=null;this.src=b;this.type=c;this.Gb=!!d;this.Nb=e;this.key=++Db;this.cb=this.Fb=!1},Fb=function(a){a.cb=!0;a.listener=null;a.ac=null;a.src=null;a.Nb=null};var Gb=function(a){this.src=a;this.A={};this.Cb=0};Gb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.A[f];a||(a=this.A[f]=[],this.Cb++);var g=Hb(a,b,d,e);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.currentTarget;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;!b.Ya&&0<=e;e--){b.currentTarget=d[e];var f=Yb(d[e],a,!0,b),c=c&&f}for(e=0;!b.Ya&&e>>0),Nb=function(a){w(a,"Listener can not be null.");if(p(a))return a;w(a.handleEvent,"An object listener must have handleEvent method.");a[Zb]||(a[Zb]=function(b){return a.handleEvent(b)});return a[Zb]};var $b=/^[+a-zA-Z0-9_.!#$%&'*\/=?^`{|}~-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,63}$/;var bc=function(){this.kc="";this.Td=ac};bc.prototype.Qb=!0;bc.prototype.Lb=function(){return this.kc};bc.prototype.toString=function(){return"Const{"+this.kc+"}"};var cc=function(a){if(a instanceof bc&&a.constructor===bc&&a.Td===ac)return a.kc;za("expected object of type Const, got '"+a+"'");return"type_error:Const"},ac={},dc=function(a){var b=new bc;b.kc=a;return b};dc("");var fc=function(){this.la="";this.Sd=ec};fc.prototype.Qb=!0;fc.prototype.Lb=function(){return this.la};fc.prototype.toString=function(){return"SafeUrl{"+this.la+"}"}; -var gc=function(a){if(a instanceof fc&&a.constructor===fc&&a.Sd===ec)return a.la;za("expected object of type SafeUrl, got '"+a+"' of type "+m(a));return"type_error:SafeUrl"},hc=/^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i,jc=function(a){if(a instanceof fc)return a;a=a.Qb?a.Lb():String(a);hc.test(a)||(a="about:invalid#zClosurez");return ic(a)},ec={},ic=function(a){var b=new fc;b.la=a;return b};ic("about:blank");var kc=function(a){return/^\s*$/.test(a)?!1:/^[\],:{}\s\u2028\u2029]*$/.test(a.replace(/\\["\\\/bfnrtu]/g,"@").replace(/(?:"[^"\\\n\r\u2028\u2029\x00-\x08\x0a-\x1f]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)[\s\u2028\u2029]*(?=:|,|]|}|$)/g,"]").replace(/(?:^|:|,)(?:[\s\u2028\u2029]*\[)+/g,""))},lc=function(a){a=String(a);if(kc(a))try{return eval("("+a+")")}catch(b){}throw Error("Invalid JSON string: "+a);},oc=function(a){var b=[];mc(new nc,a,b);return b.join("")},nc=function(){this.ec=void 0}, -mc=function(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(ea(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;fa){var b=Ac[a];if(b)return b}b=new A([a|0],0>a?-1:0);-128<=a&&128>a&&(Ac[a]=b);return b},D=function(a){if(isNaN(a)||!isFinite(a))return B;if(0>a)return C(D(-a));for(var b=[],c=1,d=0;a>=c;d++)b[d]=a/c|0,c*=4294967296;return new A(b,0)},Cc=function(a,b){if(0==a.length)throw Error("number format error: empty string");b=b||10;if(2>b||36f?(f=D(Math.pow(b,f)),d=d.multiply(f).add(D(g))):(d=d.multiply(c),d=d.add(D(g)))}return d},B=Bc(0),Dc=Bc(1),Ec=Bc(16777216),Fc=function(a){if(-1==a.g)return-Fc(C(a));for(var b=0,c=1,d=0;da||36>>0).toString(a),c=e;if(Hc(c))return f+d;for(;6>f.length;)f="0"+f;d=""+f+d}}; -var E=function(a,b){return 0>b?0:b>>16)+(E(this,e)>>>16)+(E(a,e)>>>16),d=g>>>16,f=f&65535,g=g&65535;c[e]=g<<16|f}return new A(c,c[c.length-1]&-2147483648?-1:0)};var Jc=function(a,b){return a.add(C(b))}; -A.prototype.multiply=function(a){if(Hc(this)||Hc(a))return B;if(-1==this.g)return-1==a.g?C(this).multiply(C(a)):C(C(this).multiply(a));if(-1==a.g)return C(this.multiply(C(a)));if(0>this.compare(Ec)&&0>a.compare(Ec))return D(Fc(this)*Fc(a));for(var b=this.h.length+a.h.length,c=[],d=0;d<2*b;d++)c[d]=0;for(d=0;d>>16,g=E(this,d)&65535,k=E(a,e)>>>16,t=E(a,e)&65535;c[2*d+2*e]+=g*t;Kc(c,2*d+2*e);c[2*d+2*e+1]+=f*t;Kc(c,2*d+2*e+1);c[2*d+2*e+ -1]+=g*k;Kc(c,2*d+2*e+1);c[2*d+2*e+2]+=f*k;Kc(c,2*d+2*e+2)}for(d=0;d>>16,a[b]&=65535,b++},Ic=function(a,b){if(Hc(b))throw Error("division by zero");if(Hc(a))return B;if(-1==a.g)return-1==b.g?Ic(C(a),C(b)):C(Ic(C(a),b));if(-1==b.g)return C(Ic(a,C(b)));if(30=b.compare(a);)c=c.shiftLeft(1),b=b.shiftLeft(1);var d=Lc(c,1),e=Lc(b,1),f;b=Lc(b,2);for(c=Lc(c,2);!Hc(b);)f=e.add(b),0>=f.compare(a)&&(d=d.add(c), -e=f),b=Lc(b,1),c=Lc(c,1);return d}for(c=B;0<=a.compare(b);){d=Math.max(1,Math.floor(Fc(a)/Fc(b)));e=Math.ceil(Math.log(d)/Math.LN2);e=48>=e?1:Math.pow(2,e-48);f=D(d);for(var g=f.multiply(b);-1==g.g||0>5;a%=32;for(var c=this.h.length+b+(0>>32-a:E(this,e-b);return new A(d,this.g)};var Lc=function(a,b){var c=b>>5;b%=32;for(var d=a.h.length-c,e=[],f=0;f>>b|E(a,f+c+1)<<32-b:E(a,f+c);return new A(e,a.g)};var Nc=function(a,b){this.sb=a;this.pa=b};Nc.prototype.Ib=function(a){return this.pa==a.pa&&this.sb.Ib(Xa(a.sb))};Nc.prototype.toString=ca; -var Qc=function(a){try{var b;if(b=0==a.lastIndexOf("[",0)){var c=a.length-1;b=0<=c&&a.indexOf("]",c)==c}return b?new Oc(a.substring(1,a.length-1)):new Pc(a)}catch(d){return null}},Pc=function(a){var b=B;if(a instanceof A){if(0!=a.g||0>a.compare(B)||0e||255>>=8;return this.Ea=b.join(".")}; -var Oc=function(a){var b=B;if(a instanceof A){if(0!=a.g||0>a.compare(B)||0>>16&65535).toString(16));d.push((a&65535).toString(16));La(c,c.length-1);Ra(c,d);a=c.join(":")}d=a.split("::");if(2e)c=[];else{for(var f=[],g=0;ge.compare(B)||0>>16).toString(16));a.push(d.toString(16))}for(var c=b=-1,e=d=0,f=0;fd&&(d=e,b=c)):(c=-1,e=0);0=b.uc&&b.cancel())}this.ud?this.ud.call(this.fd,this):this.Tc=!0;this.Ta||Ld(this,new Md)}};Kd.prototype.dd=function(a,b){this.tc=!1;Nd(this,a,b)}; -var Nd=function(a,b,c){a.Ta=!0;a.ma=c;a.qb=!b;Od(a)},Qd=function(a){if(a.Ta){if(!a.Tc)throw new Pd;a.Tc=!1}};Kd.prototype.callback=function(a){Qd(this);Rd(a);Nd(this,!0,a)}; -var Ld=function(a,b){Qd(a);Rd(b);Nd(a,!1,b)},Rd=function(a){w(!(a instanceof Kd),"An execution sequence may not be initiated with a blocking Deferred.")},Vd=function(a){var b=Sd("https://apis.google.com/js/client.js?onload="+Td);Ud(b,null,a,void 0)},Ud=function(a,b,c,d){w(!a.Yc,"Blocking Deferreds can not be re-used");a.gc.push([b,c,d]);a.Ta&&Od(a)};Kd.prototype.then=function(a,b,c){var d,e,f=new F(function(a,b){d=a;e=b});Ud(this,d,function(a){a instanceof Md?f.cancel():e(a)});return f.then(a,b,c)}; -pd(Kd); -var Wd=function(a){return Ha(a.gc,function(a){return p(a[1])})},Od=function(a){if(a.nc&&a.Ta&&Wd(a)){var b=a.nc,c=Xd[b];c&&(l.clearTimeout(c.rb),delete Xd[b]);a.nc=0}a.s&&(a.s.uc--,delete a.s);for(var b=a.ma,d=c=!1;a.gc.length&&!a.tc;){var e=a.gc.shift(),f=e[0],g=e[1],e=e[2];if(f=a.qb?g:f)try{var k=f.call(e||a.fd,b);void 0!==k&&(a.qb=a.qb&&(k==b||k instanceof Error),a.ma=b=k);if(qd(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.tc=!0}catch(t){b=t,a.qb=!0,Wd(a)||(c=!0)}}a.ma=b;d&& -(k=q(a.dd,a,!0),d=q(a.dd,a,!1),b instanceof Kd?(Ud(b,k,d),b.Yc=!0):b.then(k,d));c&&(b=new Yd(b),Xd[b.rb]=b,a.nc=b.rb)},Pd=function(){u.call(this)};r(Pd,u);Pd.prototype.message="Deferred has already fired";Pd.prototype.name="AlreadyCalledError";var Md=function(){u.call(this)};r(Md,u);Md.prototype.message="Deferred was canceled";Md.prototype.name="CanceledError";var Yd=function(a){this.rb=l.setTimeout(q(this.We,this),0);this.N=a}; -Yd.prototype.We=function(){w(Xd[this.rb],"Cannot throw an error that is not scheduled.");delete Xd[this.rb];throw this.N;};var Xd={};var Sd=function(a){var b=new Xc;b.Zb=a;return Zd(b)},Zd=function(a){var b={},c=b.document||document,d;a instanceof Xc&&a.constructor===Xc&&a.Ud===Wc?d=a.Zb:(za("expected object of type TrustedResourceUrl, got '"+a+"' of type "+m(a)),d="type_error:TrustedResourceUrl");var e=document.createElement("SCRIPT");a={Cd:e,Bb:void 0};var f=new Kd($d,a),g=null,k=null!=b.timeout?b.timeout:5E3;0++d,"infinite loop")}c=this.Xd;d=a.type||a;if(n(a))a=new Ab(a,c);else if(a instanceof Ab)a.target=a.target||c;else{var e=a;a=new Ab(d,c);Za(a,e)}var e=!0,f;if(b)for(var g=b.length-1;!a.Ya&&0<=g;g--)f=a.currentTarget=b[g],e=fe(f,d,!0,a)&&e;a.Ya||(f=a.currentTarget=c,e=fe(f,d,!0,a)&&e,a.Ya||(e=fe(f,d,!1,a)&&e));if(b)for(g=0;!a.Ya&&g2*this.i&&je(this),!0):!1}; -var je=function(a){if(a.i!=a.v.length){for(var b=0,c=0;b=d.v.length)throw ge;var e=d.v[b++];return a?e:d.ca[e]};return e}; -var ke=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var me=function(a){if(a.X&&"function"==typeof a.X)return a.X();if(n(a))return a.split("");if(fa(a)){for(var b=[],c=a.length,d=0;d=we(this).value)for(p(b)&&(b=b()),a=new pe(a,String(b),this.He),c&&(a.hd=c),c="log:"+a.Ge,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;){b=c;var d=a;if(b.nd)for(var e=0,f;f=b.nd[e];e++)f(d);c=c.getParent()}}; -var xe={},ye=null,ze=function(a){ye||(ye=new re(""),xe[""]=ye,ye.Fd(ue));var b;if(!(b=xe[a])){b=new re(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=ze(a.substr(0,c));c.vc||(c.vc={});c.vc[d]=b;b.s=c;xe[a]=b}return b};var I=function(a,b){a&&a.log(ve,b,void 0)};var Ae=function(a,b,c){if(p(a))c&&(a=q(a,c));else if(a&&"function"==typeof a.handleEvent)a=q(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647b)throw Error("Bad port number "+b);a.Xa=b}else a.Xa=null},We=function(a,b,c){K(a);a.ta=c?Ye(b,!0):b},Xe=function(a,b,c){K(a);b instanceof L?(a.$=b,a.$.Sc(a.P)):(c||(b=Ze(b,df)),a.$=new L(b,0,a.P))},M=function(a,b,c){K(a);a.$.set(b,c)},ef=function(a,b){K(a);a.$.remove(b)},K=function(a){if(a.Ae)throw Error("Tried to modify a read-only Uri"); -};Se.prototype.Sc=function(a){this.P=a;this.$&&this.$.Sc(a);return this}; -var ff=function(a){return a instanceof Se?a.clone():new Se(a,void 0)},gf=function(a,b){var c=new Se(null,void 0);Te(c,"https");a&&Ue(c,a);b&&We(c,b);return c},Ye=function(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""},Ze=function(a,b,c){return n(a)?(a=encodeURI(a).replace(b,hf),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null},hf=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)},$e=/[#\/\?@]/g,bf=/[\#\?:]/g,af=/[\#\?]/g,df=/[\#\?@]/g, -cf=/#/g,L=function(a,b,c){this.i=this.j=null;this.M=a||null;this.P=!!c},jf=function(a){a.j||(a.j=new ie,a.i=0,a.M&&De(a.M,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))},lf=function(a){var b=ne(a);if("undefined"==typeof b)throw Error("Keys are undefined");var c=new L(null,0,void 0);a=me(a);for(var d=0;da?!1:!y||!qb||9")&&(d=d.replace(qa,">")),-1!=d.indexOf('"')&&(d=d.replace(ra,""")),-1!= -d.indexOf("'")&&(d=d.replace(sa,"'")),-1!=d.indexOf("\x00")&&(d=d.replace(ta,"�"))),d='',Ba(cc(a),"must provide justification"),w(!/^[\s\xa0]*$/.test(cc(a)),"must provide non-empty justification"),g.document.write($c((new Zc).ye(d))),g.document.close())):g=a.open(gc(b),c,g);if(g)try{g.focus()}catch(k){}return g},uf=function(a){return new F(function(b){var c=function(){Be(2E3).then(function(){if(!a||a.closed)b();else return c()})};return c()})}, -vf=function(){var a=null;return(new F(function(b){"complete"==l.document.readyState?b():(a=function(){b()},Tb(window,"load",a))})).l(function(b){Vb(window,"load",a);throw b;})},O=function(a){switch(a||l.navigator&&l.navigator.product||""){case "ReactNative":return"ReactNative";default:return"undefined"!==typeof l.process?"Node":"Browser"}},wf=function(){var a=O();return"ReactNative"===a||"Node"===a},pf=function(a){var b=a.toLowerCase();if(v(b,"opera/")||v(b,"opr/")||v(b,"opios/"))return"Opera";if(v(b, -"iemobile"))return"IEMobile";if(v(b,"msie")||v(b,"trident/"))return"IE";if(v(b,"edge/"))return"Edge";if(v(b,"firefox/"))return"Firefox";if(v(b,"silk/"))return"Silk";if(v(b,"blackberry"))return"Blackberry";if(v(b,"webos"))return"Webos";if(!v(b,"safari/")||v(b,"chrome/")||v(b,"crios/")||v(b,"android"))if(!v(b,"chrome/")&&!v(b,"crios/")||v(b,"edge/")){if(v(b,"android"))return"Android";if((a=a.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/))&&2==a.length)return a[1]}else return"Chrome";else return"Safari";return"Other"}, -xf=function(a){var b=O(void 0);return("Browser"===b?pf(N()):b)+"/JsCore/"+a},N=function(){return l.navigator&&l.navigator.userAgent||""},yf=function(a){a=a.split(".");for(var b=l,c=0;cb)throw Error("Short delay should be less than long delay!");this.Te=a;this.Fe=b;a=d||O();this.ze=rf(c||N())||"ReactNative"===a};Hf.prototype.get=function(){return this.ze?this.Fe:this.Te};var If;try{var Jf={};Object.defineProperty(Jf,"abcd",{configurable:!0,enumerable:!0,value:1});Object.defineProperty(Jf,"abcd",{configurable:!0,enumerable:!0,value:2});If=2==Jf.abcd}catch(a){If=!1} -var P=function(a,b,c){If?Object.defineProperty(a,b,{configurable:!0,enumerable:!0,value:c}):a[b]=c},Kf=function(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&P(a,c,b[c])},Lf=function(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},Mf=function(a,b){if(!b||!b.length)return!0;if(!a)return!1;for(var c=0;c Auth section -> Sign in method tab.",a);Q.call(this,b,c)};r(Uf,Q);var Vf=function(a){this.Ee=a.sub;la();this.Hb=a.email||null};var Wf=function(a,b,c,d){var e={};ha(c)?e=c:b&&n(c)&&n(d)?e={oauthToken:c,oauthTokenSecret:d}:!b&&n(c)&&(e={accessToken:c});if(b||!e.idToken&&!e.accessToken)if(b&&e.oauthToken&&e.oauthTokenSecret)P(this,"accessToken",e.oauthToken),P(this,"secret",e.oauthTokenSecret);else{if(b)throw new Q("argument-error","credential failed: expected 2 arguments (the OAuth access token and secret).");throw new Q("argument-error","credential failed: expected 1 argument (the OAuth access token).");}else e.idToken&&P(this, -"idToken",e.idToken),e.accessToken&&P(this,"accessToken",e.accessToken);P(this,"provider",a)};Wf.prototype.Kb=function(a){return Xf(a,Yf(this))};Wf.prototype.td=function(a,b){var c=Yf(this);c.idToken=b;return Zf(a,c)};var Yf=function(a){var b={};a.idToken&&(b.id_token=a.idToken);a.accessToken&&(b.access_token=a.accessToken);a.secret&&(b.oauth_token_secret=a.secret);b.providerId=a.provider;return{postBody:lf(b).toString(),requestUri:Af()?nf():"http://localhost"}}; -Wf.prototype.K=function(){var a={provider:this.provider};this.idToken&&(a.oauthIdToken=this.idToken);this.accessToken&&(a.oauthAccessToken=this.accessToken);this.secret&&(a.oauthTokenSecret=this.secret);return a}; -var $f=function(a,b,c){var d=!!b,e=c||[];b=function(){Kf(this,{providerId:a,isOAuthProvider:!0});this.Rc=[];this.ed={};"google.com"==a&&this.addScope("profile")};d||(b.prototype.addScope=function(a){Ka(this.Rc,a)||this.Rc.push(a)});b.prototype.setCustomParameters=function(a){this.ed=Xa(a)};b.prototype.me=function(){var a=Df(this.ed),b;for(b in a)a[b]=a[b].toString();a=Xa(a);for(b=0;bk||k>=Fh.length)throw new Q("internal-error","Argument validator received an unsupported number of arguments.");e=Fh[k]+" argument "+(e.name?'"'+e.name+'" ':"")+"must be "+e.fa+".";break a}e=null}}if(e)throw new Q("argument-error",d+" failed: "+e);return b.apply(this,a)};for(var e in b)a[e]=b[e];for(e in b.prototype)a.prototype[e]= -b.prototype[e];return a},Nh=function(a){a=a.split(".");return a[a.length-1]};var Oh=function(a,b,c,d){this.Ie=a;this.Ed=b;this.Oe=c;this.hb=d;this.R={};Dh||(Dh=new Ch);a=Dh;try{var e;mf()?(th||(th=new sh("firebaseLocalStorageDb","firebaseLocalStorage","fbase_key","value",1)),e=th):e=new a.gd.Z;this.Wa=e}catch(f){this.Wa=new mh,this.hb=!0}try{this.lc=new a.gd.Wc}catch(f){this.lc=new mh}this.Hd=q(this.Id,this);this.S={}},Ph,Qh=function(){Ph||(Ph=new Oh("firebase",":",!Ff(N())&&l.window&&l.window!=l.window.top?!0:!1,Bf()));return Ph};h=Oh.prototype; -h.O=function(a,b){return this.Ie+this.Ed+a.name+(b?this.Ed+b:"")};h.get=function(a,b){return(a.Z?this.Wa:this.lc).get(this.O(a,b))};h.remove=function(a,b){b=this.O(a,b);a.Z&&!this.hb&&(this.S[b]=null);return(a.Z?this.Wa:this.lc).remove(b)};h.set=function(a,b,c){var d=this.O(a,c),e=this,f=a.Z?this.Wa:this.lc;return f.set(d,b).then(function(){return f.get(d)}).then(function(b){a.Z&&!this.hb&&(e.S[d]=b)})}; -h.addListener=function(a,b,c){a=this.O(a,b);this.hb||(this.S[a]=l.localStorage.getItem(a));Va(this.R)&&this.Uc();this.R[a]||(this.R[a]=[]);this.R[a].push(c)};h.removeListener=function(a,b,c){a=this.O(a,b);this.R[a]&&(Na(this.R[a],function(a){return a==c}),0==this.R[a].length&&delete this.R[a]);Va(this.R)&&this.jc()};h.Uc=function(){this.Wa.Na(this.Hd);this.hb||Rh(this)}; -var Rh=function(a){Sh(a);a.Fc=setInterval(function(){for(var b in a.R){var c=l.localStorage.getItem(b);c!=a.S[b]&&(a.S[b]=c,c=new Bb({type:"storage",key:b,target:window,oldValue:a.S[b],newValue:c}),a.Id(c))}},1E3)},Sh=function(a){a.Fc&&(clearInterval(a.Fc),a.Fc=null)};Oh.prototype.jc=function(){this.Wa.bb(this.Hd);this.hb||Sh(this)}; -Oh.prototype.Id=function(a){if(a&&a.le){var b=a.ob.key;if(this.Oe){var c=l.localStorage.getItem(b);a=a.ob.newValue;a!=c&&(a?l.localStorage.setItem(b,a):a||l.localStorage.removeItem(b))}this.S[b]=l.localStorage.getItem(b);this.ad(b)}else Ea(a,q(this.ad,this))};Oh.prototype.ad=function(a){this.R[a]&&Ea(this.R[a],function(a){a()})};var Th=function(a){this.D=a;this.B=Qh()},Uh={name:"pendingRedirect",Z:!1},Vh=function(a){return a.B.set(Uh,"pending",a.D)},Wh=function(a){return a.B.remove(Uh,a.D)},Xh=function(a){return a.B.get(Uh,a.D).then(function(a){return"pending"==a})};var $h=function(a,b,c){var d=this,e=(this.Aa=firebase.SDK_VERSION||null)?xf(this.Aa):null;this.f=new S(b,null,e);this.sa=null;this.C=a;this.m=b;this.F=c;this.Ab=[];this.Sb=!1;this.Xc=q(this.oe,this);this.Za=new Yh(this);this.yd=new Zh(this);this.Kc=new Th(this.m+":"+this.F);this.jb={};this.jb.unknown=this.Za;this.jb.signInViaRedirect=this.Za;this.jb.linkViaRedirect=this.Za;this.jb.signInViaPopup=this.yd;this.jb.linkViaPopup=this.yd;this.dc=this.fb=null;this.Xb=new F(function(a,b){d.fb=a;d.dc=b})}; -$h.prototype.reset=function(){var a=this;this.sa=null;this.Xb.cancel();this.Sb=!1;this.dc=this.fb=null;this.Pb&&kh(this.Pb,this.Xc);this.Xb=new F(function(b,c){a.fb=b;a.dc=c})}; -var ai=function(a){var b=nf();return Cg(a).then(function(a){a:{for(var c=ff(b).ia,e=0;ethis.Sa-3E4?this.V?qi(this,{grant_type:"refresh_token",refresh_token:this.V}):G(null):G({accessToken:this.za,expirationTime:this.Sa,refreshToken:this.V})};var si=function(a,b,c,d,e){Kf(this,{uid:a,displayName:d||null,photoURL:e||null,email:c||null,providerId:b})},ti=function(a,b){Ab.call(this,a);for(var c in b)this[c]=b[c]};r(ti,Ab); -var W=function(a,b,c){this.Y=[];this.m=a.apiKey;this.F=a.appName;this.C=a.authDomain||null;a=firebase.SDK_VERSION?xf(firebase.SDK_VERSION):null;this.f=new S(this.m,null,a);this.ea=new ni(this.f);ui(this,b.idToken);pi(this.ea,b);P(this,"refreshToken",this.ea.V);vi(this,c||{});de.call(this);this.Yb=!1;this.C&&Af()&&(this.o=ki(this.C,this.m,this.F));this.ic=[];this.sc=G()};r(W,de); -W.prototype.ua=function(a,b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.sc=this.sc.then(function(){return a.apply(d,c)},function(){return a.apply(d,c)})}; -var ui=function(a,b){a.rd=b;P(a,"_lat",b)},wi=function(a,b){Na(a.ic,function(a){return a==b})},xi=function(a){for(var b=[],c=0;ce;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.N[0];c=a.N[1];for(var h=a.N[2],k=a.N[3],m=a.N[4],l,e=0;80>e;e++)40>e?20>e?(f=k^c&(h^k),l=1518500249):(f=c^h^k,l=1859775393):60>e?(f=c&h|k&(c|h),l=2400959708):(f=c^h^k,l=3395469782),f=(b<< -5|b>>>27)+f+m+l+d[e]&4294967295,m=k,k=h,h=(c<<30|c>>>2)&4294967295,c=b,b=f;a.N[0]=a.N[0]+b&4294967295;a.N[1]=a.N[1]+c&4294967295;a.N[2]=a.N[2]+h&4294967295;a.N[3]=a.N[3]+k&4294967295;a.N[4]=a.N[4]+m&4294967295} -ma.prototype.update=function(a,b){if(null!=a){p(b)||(b=a.length);for(var c=b-this.Ya,d=0,e=this.Wd,f=this.ac;db?e+="000":256>b?e+="00":4096>b&&(e+="0");return Da[a]=e+b.toString(16)}),'"')};var v;a:{var Fa=n.navigator;if(Fa){var Ga=Fa.userAgent;if(Ga){v=Ga;break a}}v=""};function Ha(a){if(Error.captureStackTrace)Error.captureStackTrace(this,Ha);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}ka(Ha,Error);Ha.prototype.name="CustomError";var w=Array.prototype,Ia=w.indexOf?function(a,b,c){return w.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(q(a))return q(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc?null:q(a)?a.charAt(c):a[c]}function Pa(a,b,c){for(var d=a.length,e=q(a)?a.split(""):a,f=0;f=arguments.length?w.slice.call(a,b):w.slice.call(a,b,c)} -function Sa(a,b){a.sort(b||Ta)}function Ta(a,b){return a>b?1:aparseFloat(a))?String(b):a})();var Ya=null,Za=null,$a=null;function ab(a,b){if(!ea(a))throw Error("encodeByteArray takes an array as a parameter");bb();for(var c=b?Za:Ya,d=[],e=0;e>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|l>>6,l=l&63;m||(l=64,h||(k=64));d.push(c[u],c[f],c[k],c[l])}return d.join("")} -function bb(){if(!Ya){Ya={};Za={};$a={};for(var a=0;65>a;a++)Ya[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),Za[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),$a[Za[a]]=a,62<=a&&($a["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function cb(a){n.setTimeout(function(){throw a;},0)}var db; -function eb(){var a=n.MessageChannel;"undefined"===typeof a&&"undefined"!==typeof window&&window.postMessage&&window.addEventListener&&-1==v.indexOf("Presto")&&(a=function(){var a=document.createElement("iframe");a.style.display="none";a.src="";document.documentElement.appendChild(a);var b=a.contentWindow,a=b.document;a.open();a.write("");a.close();var c="callImmediate"+Math.random(),d="file:"==b.location.protocol?"*":b.location.protocol+"//"+b.location.host,a=r(function(a){if(("*"==d||a.origin== -d)&&a.data==c)this.port1.onmessage()},this);b.addEventListener("message",a,!1);this.port1={};this.port2={postMessage:function(){b.postMessage(c,d)}}});if("undefined"!==typeof a&&-1==v.indexOf("Trident")&&-1==v.indexOf("MSIE")){var b=new a,c={},d=c;b.port1.onmessage=function(){if(p(c.next)){c=c.next;var a=c.Le;c.Le=null;a()}};return function(a){d.next={Le:a};d=d.next;b.port2.postMessage(0)}}return"undefined"!==typeof document&&"onreadystatechange"in document.createElement("script")?function(a){var b= -document.createElement("script");b.onreadystatechange=function(){b.onreadystatechange=null;b.parentNode.removeChild(b);b=null;a();a=null};document.documentElement.appendChild(b)}:function(a){n.setTimeout(a,0)}};function fb(a,b){gb||hb();ib||(gb(),ib=!0);jb.push(new kb(a,b))}var gb;function hb(){if(n.Promise&&n.Promise.resolve){var a=n.Promise.resolve();gb=function(){a.then(lb)}}else gb=function(){var a=lb;!ga(n.setImmediate)||n.Window&&n.Window.prototype&&n.Window.prototype.setImmediate==n.setImmediate?(db||(db=eb()),db(a)):n.setImmediate(a)}}var ib=!1,jb=[];[].push(function(){ib=!1;jb=[]}); -function lb(){for(;jb.length;){var a=jb;jb=[];for(var b=0;bc&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function Db(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")} -function A(a,b,c,d){if((!d||p(c))&&!ga(c))throw Error(Db(a,b,d)+"must be a valid function.");}function Eb(a,b,c){if(p(c)&&(!ha(c)||null===c))throw Error(Db(a,b,!0)+"must be a valid context object.");};function Fb(a){var b=[];Cb(a,function(a,d){da(d)?Ja(d,function(d){b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))}):b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))});return b.length?"&"+b.join("&"):""};var Gb=n.Promise||mb;mb.prototype["catch"]=mb.prototype.Ag;function Hb(){var a=this;this.reject=this.resolve=null;this.sa=new Gb(function(b,c){a.resolve=b;a.reject=c})}function Ib(a,b){return function(c,d){c?a.reject(c):a.resolve(d);ga(b)&&(Jb(a.sa),1===b.length?b(c):b(c,d))}}function Jb(a){a.then(void 0,aa)};function Kb(a,b){if(!a)throw Lb(b);}function Lb(a){return Error("Firebase Database ("+firebase.SDK_VERSION+") INTERNAL ASSERT FAILED: "+a)};function Mb(a){for(var b=[],c=0,d=0;d=e&&(e-=55296,d++,Kb(de?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function Nb(a){for(var b=0,c=0;cd?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function Ob(a){return"undefined"!==typeof JSON&&p(JSON.parse)?JSON.parse(a):za(a)}function B(a){if("undefined"!==typeof JSON&&p(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ba(new Aa,a,b);a=b.join("")}return a};function Pb(a,b){this.committed=a;this.snapshot=b};function Qb(){return"undefined"!==typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test("undefined"!==typeof navigator&&"string"===typeof navigator.userAgent?navigator.userAgent:"")};function Rb(a){this.te=a;this.Bd=[];this.Rb=0;this.Yd=-1;this.Gb=null}function Sb(a,b,c){a.Yd=b;a.Gb=c;a.Yd");return a};function jc(){this.uc={}}function kc(a,b,c){p(c)||(c=1);Bb(a.uc,b)||(a.uc[b]=0);a.uc[b]+=c}jc.prototype.get=function(){return ya(this.uc)};function lc(a){this.Nf=a;this.rd=null}lc.prototype.get=function(){var a=this.Nf.get(),b=ya(a);if(this.rd)for(var c in this.rd)b[c]-=this.rd[c];this.rd=a;return b};function mc(){this.wb=[]}function nc(a,b){for(var c=null,d=0;d>4);64!=k&&(d.push(h<<4&240|k>>2),64!=m&&d.push(k<<6&192|m))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;ca.ac?a.update(a.zd,56-a.ac):a.update(a.zd,a.Ya-(a.ac-56));for(var d=a.Ya-1;56<=d;d--)a.Wd[d]=c&255,c/=256;na(a,a.Wd);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.N[d]>>e&255,++c;return ab(b)}function Vc(a){for(var b="",c=0;c.firebaseio.com instead"); -c&&"undefined"!=c||$c("Cannot parse Firebase url. Please use https://.firebaseio.com");d||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&O("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");return{kc:new gc(b,d,c,"ws"===e||"wss"===e),path:new L(f)}}function bd(a){return fa(a)&&(a!=a||a==Number.POSITIVE_INFINITY||a==Number.NEGATIVE_INFINITY)} -function cd(a){if("complete"===document.readyState)a();else{var b=!1,c=function(){document.body?b||(b=!0,a()):setTimeout(c,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&c()}),window.attachEvent("onload",c))}} -function Hc(a,b){if(a===b)return 0;if("[MIN_NAME]"===a||"[MAX_NAME]"===b)return-1;if("[MIN_NAME]"===b||"[MAX_NAME]"===a)return 1;var c=dd(a),d=dd(b);return null!==c?null!==d?0==c-d?a.length-b.length:c-d:-1:null!==d?1:aa?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function hd(a,b){if(da(a))for(var c=0;ca,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&& -(d="0"+d),c+=d;return c.toLowerCase()}var jd=/^-?\d{1,10}$/;function dd(a){return jd.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function Ub(a){try{a()}catch(b){setTimeout(function(){O("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function kd(a,b,c){Object.defineProperty(a,b,{get:c})}function ld(a,b){var c=setTimeout(a,b);"object"===typeof c&&c.unref&&c.unref();return c};function md(a){var b={},c={},d={},e="";try{var f=a.split("."),b=Ob(Tc(f[0])||""),c=Ob(Tc(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(h){}return{Fg:b,Me:c,data:d,xg:e}}function nd(a){a=md(a);var b=a.Me;return!!a.xg&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")}function od(a){a=md(a).Me;return"object"===typeof a&&!0===x(a,"admin")};function pd(a,b,c){this.f=Yc("p:rest:");this.M=a;this.Hb=b;this.Vd=c;this.aa={}}function qd(a,b){if(p(b))return"tag$"+b;H(rd(a.n),"should have a tag if it's not a default query.");return a.path.toString()}g=pd.prototype; -g.df=function(a,b,c,d){var e=a.path.toString();this.f("Listen called for "+e+" "+a.ka());var f=qd(a,c),h={};this.aa[f]=h;a=sd(a.n);var k=this;td(this,e+".json",a,function(a,b){var u=b;404===a&&(a=u=null);null===a&&k.Hb(e,u,!1,c);x(k.aa,f)===h&&d(a?401==a?"permission_denied":"rest_error:"+a:"ok",null)})};g.Ef=function(a,b){var c=qd(a,b);delete this.aa[c]};g.qf=function(){};g.re=function(){};g.gf=function(){};g.xd=function(){};g.put=function(){};g.ef=function(){};g.ye=function(){}; -function td(a,b,c,d){c=c||{};c.format="export";a.Vd.getToken(!1).then(function(e){(e=e&&e.accessToken)&&(c.auth=e);var f=(a.M.Sc?"https://":"http://")+a.M.host+b+"?"+Fb(c);a.f("Sending REST request for "+f);var h=new XMLHttpRequest;h.onreadystatechange=function(){if(d&&4===h.readyState){a.f("REST Response for "+f+" received. status:",h.status,"response:",h.responseText);var b=null;if(200<=h.status&&300>h.status){try{b=Ob(h.responseText)}catch(c){O("Failed to parse JSON response for "+f+": "+h.responseText)}d(null, -b)}else 401!==h.status&&404!==h.status&&O("Got unsuccessful REST response for "+f+" Status: "+h.status),d(h.status);d=null}};h.open("GET",f,!0);h.send()})};function vd(a,b,c){this.type=wd;this.source=a;this.path=b;this.children=c}vd.prototype.Nc=function(a){if(this.path.e())return a=this.children.subtree(new L(a)),a.e()?null:a.value?new $b(this.source,C,a.value):new vd(this.source,C,a);H(J(this.path)===a,"Can't get a merge for a child not on the path of the operation");return new vd(this.source,D(this.path),this.children)};vd.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"};function xd(a,b){this.zf={};this.Vc=new lc(a);this.wa=b;var c=1E4+2E4*Math.random();ld(r(this.rf,this),Math.floor(c))}xd.prototype.rf=function(){var a=this.Vc.get(),b={},c=!1,d;for(d in a)0=a.length){var b=Number(a);if(!isNaN(b)){e.Fe=b;e.frames=[];a=null;break a}}e.Fe=1;e.frames=[]}null!==a&&Gd(e,a)}};this.La.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.fb()}};Dd.prototype.start=function(){}; -Dd.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1parseFloat(b[1])&&(a=!0)}return!a&&null!==Cd&&!Ed};Dd.responsesRequiredToBeHealthy=2;Dd.healthyTimeout=3E4;g=Dd.prototype;g.sd=function(){Yb.remove("previous_websocket_failure")};function Gd(a,b){a.frames.push(b);if(a.frames.length==a.Fe){var c=a.frames.join("");a.frames=null;c=Ob(c);a.hg(c)}} -g.send=function(a){Fd(this);a=B(a);this.rb+=a.length;kc(this.Xa,"bytes_sent",a.length);a=gd(a,16384);1=this.g.compare(this.Uc,a)&&0>=this.g.compare(a,this.wc)};g.F=function(a,b,c,d,e,f){this.matches(new K(b,c))||(c=F);return this.he.F(a,b,c,d,e,f)}; -g.za=function(a,b,c){b.J()&&(b=F);var d=b.ob(this.g),d=d.ga(F),e=this;b.P(N,function(a,b){e.matches(new K(a,b))||(d=d.U(a,F))});return this.he.za(a,d,c)};g.ga=function(a){return a};g.Qa=function(){return!0};g.Vb=function(){return this.he};function le(a){this.ta=new ge(a);this.g=a.g;H(a.ya,"Only valid if limit has been set");this.pa=a.pa;this.Jb=!me(a)}g=le.prototype;g.F=function(a,b,c,d,e,f){this.ta.matches(new K(b,c))||(c=F);return a.R(b).$(c)?a:a.Fb()=this.g.compare(this.ta.Uc,f):0>=this.g.compare(f,this.ta.wc))d=d.U(f.name,f.S),e++;else break}}else{d=b.ob(this.g);d=d.ga(F);var k,m,l;if(this.Jb){b=d.$e(this.g);k=this.ta.wc;m=this.ta.Uc;var u=oe(this.g);l=function(a,b){return u(b,a)}}else b=d.Xb(this.g),k=this.ta.Uc, -m=this.ta.wc,l=oe(this.g);for(var e=0,z=!1;0=l(k,f)&&(z=!0),(h=z&&e=l(f,m))?e++:d=d.U(f.name,F)}return this.ta.Vb().za(a,d,c)};g.ga=function(a){return a};g.Qa=function(){return!0};g.Vb=function(){return this.ta.Vb()}; -function ne(a,b,c,d,e,f){var h;if(a.Jb){var k=oe(a.g);h=function(a,b){return k(b,a)}}else h=oe(a.g);H(b.Fb()==a.pa,"");var m=new K(c,d),l=a.Jb?pe(b,a.g):qe(b,a.g),u=a.ta.matches(m);if(b.Fa(c)){for(var z=b.R(c),l=e.fe(a.g,l,a.Jb);null!=l&&(l.name==c||b.Fa(l.name));)l=e.fe(a.g,l,a.Jb);e=null==l?1:h(l,m);if(u&&!d.e()&&0<=e)return null!=f&&Jd(f,new I("child_changed",d,c,z)),b.U(c,d);null!=f&&Jd(f,new I("child_removed",z,c));b=b.U(c,F);return null!=l&&a.ta.matches(l)?(null!=f&&Jd(f,new I("child_added", -l.S,l.name)),b.U(l.name,l.S)):b}return d.e()?b:u&&0<=h(l,m)?(null!=f&&(Jd(f,new I("child_removed",l.S,l.name)),Jd(f,new I("child_added",d,c))),b.U(c,d).U(l.name,F)):b};function Qc(a,b){this.B=a;H(p(this.B)&&null!==this.B,"LeafNode shouldn't be created with null/undefined value.");this.ba=b||F;re(this.ba);this.Eb=null}var se=["object","boolean","number","string"];g=Qc.prototype;g.J=function(){return!0};g.C=function(){return this.ba};g.ga=function(a){return new Qc(this.B,a)};g.R=function(a){return".priority"===a?this.ba:F};g.Q=function(a){return a.e()?this:".priority"===J(a)?this.ba:F};g.Fa=function(){return!1};g.Ze=function(){return null}; -g.U=function(a,b){return".priority"===a?this.ga(b):b.e()&&".priority"!==a?this:F.U(a,b).ga(this.ba)};g.F=function(a,b){var c=J(a);if(null===c)return b;if(b.e()&&".priority"!==c)return this;H(".priority"!==c||1===$d(a),".priority must be the last token in a path");return this.U(c,F.F(D(a),b))};g.e=function(){return!1};g.Fb=function(){return 0};g.P=function(){return!1};g.H=function(a){return a&&!this.C().e()?{".value":this.Ea(),".priority":this.C().H()}:this.Ea()}; -g.hash=function(){if(null===this.Eb){var a="";this.ba.e()||(a+="priority:"+te(this.ba.H())+":");var b=typeof this.B,a=a+(b+":"),a="number"===b?a+id(this.B):a+this.B;this.Eb=Uc(a)}return this.Eb};g.Ea=function(){return this.B};g.tc=function(a){if(a===F)return 1;if(a instanceof P)return-1;H(a.J(),"Unknown node type");var b=typeof a.B,c=typeof this.B,d=Ia(se,b),e=Ia(se,c);H(0<=d,"Unknown leaf type: "+b);H(0<=e,"Unknown leaf type: "+c);return d===e?"object"===c?0:this.Bdocument.domain="'+document.domain+'";\x3c/script>');a=""+a+"";try{this.Ga.ib.open(),this.Ga.ib.write(a),this.Ga.ib.close()}catch(f){E("frame writing exception"),f.stack&&E(f.stack),E(f)}} -Te.prototype.close=function(){this.Ud=!1;if(this.Ga){this.Ga.ib.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ga&&(document.body.removeChild(a.Ga),a.Ga=null)},Math.floor(0))}var b=this.kb;b&&(this.kb=null,b())}; -function We(a){if(a.Ud&&a.Kd&&a.ve.count()<(0=a.Qc[0].Se.length+30+c.length){var e=a.Qc.shift(),c=c+"&seg"+d+"="+e.ug+"&ts"+d+"="+e.Bg+"&d"+d+"="+e.Se;d++}else break;Xe(a,b+c,a.$d);return!0}return!1}function Xe(a,b,c){function d(){a.ve.remove(c);We(a)}a.ve.add(c,1);var e=setTimeout(d,Math.floor(25E3));Ve(a,b,function(){clearTimeout(e);d()})} -function Ve(a,b,c){setTimeout(function(){try{if(a.Kd){var d=a.Ga.ib.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){E("Long-poll script failed to load: "+b);a.Kd=!1;a.close()};a.Ga.ib.body.appendChild(d)}}catch(e){}},Math.floor(1))};function Ye(a){Ze(this,a)}var $e=[Qe,Dd];function Ze(a,b){var c=Dd&&Dd.isAvailable(),d=c&&!(Yb.cf||!0===Yb.get("previous_websocket_failure"));b.Cg&&(c||O("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),d=!0);if(d)a.Wc=[Dd];else{var e=a.Wc=[];hd($e,function(a,b){b&&b.isAvailable()&&e.push(b)})}}function af(a){if(0=a.xf?(a.f("Secondary connection is healthy."),a.Cb=!0,a.D.sd(),a.D.start(),a.f("sending client ack on secondary"),a.D.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.I.send({t:"c",d:{t:"n",d:{}}}),a.Xc=a.D,hf(a)):(a.f("sending ping on secondary."),a.D.send({t:"c",d:{t:"p",d:{}}}))}bf.prototype.wd=function(a){kf(this);this.te(a)};function kf(a){a.Cb||(a.xe--,0>=a.xe&&(a.f("Primary connection is healthy."),a.Cb=!0,a.I.sd()))} -function gf(a,b){a.D=new b("c:"+a.id+":"+a.Oe++,a.M,a.yf);a.xf=b.responsesRequiredToBeHealthy||0;a.D.open(df(a,a.D),ef(a,a.D));ld(function(){a.D&&(a.f("Timed out trying to upgrade."),a.D.close())},Math.floor(6E4))}function ff(a,b,c){a.f("Realtime connection established.");a.I=b;a.L=1;a.Mc&&(a.Mc(c,a.yf),a.Mc=null);0===a.xe?(a.f("Primary connection is healthy."),a.Cb=!0):ld(function(){lf(a)},Math.floor(5E3))} -function lf(a){a.Cb||1!==a.L||(a.f("sending ping on primary."),nf(a,{t:"c",d:{t:"p",d:{}}}))}function nf(a,b){if(1!==a.L)throw"Connection is not connected";a.Xc.send(b)}bf.prototype.close=function(){2!==this.L&&(this.f("Closing realtime connection."),this.L=2,jf(this),this.ja&&(this.ja(),this.ja=null))};function jf(a){a.f("Shutting down all connections");a.I&&(a.I.close(),a.I=null);a.D&&(a.D.close(),a.D=null);a.md&&(clearTimeout(a.md),a.md=null)};function L(a,b){if(1==arguments.length){this.o=a.split("/");for(var c=0,d=0;d=a.o.length?null:a.o[a.Z]}function $d(a){return a.o.length-a.Z}function D(a){var b=a.Z;b=this.o.length)return null;for(var a=[],b=this.Z;b=this.o.length};g.$=function(a){if($d(this)!==$d(a))return!1;for(var b=this.Z,c=a.Z;b<=this.o.length;b++,c++)if(this.o[b]!==a.o[c])return!1;return!0}; -g.contains=function(a){var b=this.Z,c=a.Z;if($d(this)>$d(a))return!1;for(;b10485760/3&&10485760f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);H(20===c.length,"nextPushId: Length should be 20."); -return c}}();function Vf(a,b){this.Oa=a;this.ca=b?b:Wf}g=Vf.prototype;g.Ra=function(a,b){return new Vf(this.Oa,this.ca.Ra(a,b,this.Oa).Y(null,null,!1,null,null))};g.remove=function(a){return new Vf(this.Oa,this.ca.remove(a,this.Oa).Y(null,null,!1,null,null))};g.get=function(a){for(var b,c=this.ca;!c.e();){b=this.Oa(a,c.key);if(0===b)return c.value;0>b?c=c.left:0c?d=d.left:0e)a=this.le?a.left:a.right;else if(0===e){this.Sa.push(a);break}else this.Sa.push(a),a=this.le?a.right:a.left} -function R(a){if(0===a.Sa.length)return null;var b=a.Sa.pop(),c;c=a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value};if(a.le)for(b=b.left;!b.e();)a.Sa.push(b),b=b.right;else for(b=b.right;!b.e();)a.Sa.push(b),b=b.left;return c}function Zf(a){if(0===a.Sa.length)return null;var b;b=a.Sa;b=b[b.length-1];return a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value}}function $f(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:Wf;this.right=null!=e?e:Wf}g=$f.prototype; -g.Y=function(a,b,c,d,e){return new $f(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};g.count=function(){return this.left.count()+1+this.right.count()};g.e=function(){return!1};g.ia=function(a){return this.left.ia(a)||a(this.key,this.value)||this.right.ia(a)};function ag(a){return a.left.e()?a:ag(a.left)}g.Hc=function(){return ag(this).key};g.fc=function(){return this.right.e()?this.key:this.right.fc()}; -g.Ra=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.Y(null,null,null,e.left.Ra(a,b,c),null):0===d?e.Y(null,b,null,null,null):e.Y(null,null,null,null,e.right.Ra(a,b,c));return bg(e)};function cg(a){if(a.left.e())return Wf;a.left.fa()||a.left.left.fa()||(a=dg(a));a=a.Y(null,null,null,cg(a.left),null);return bg(a)} -g.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.fa()||c.left.left.fa()||(c=dg(c)),c=c.Y(null,null,null,c.left.remove(a,b),null);else{c.left.fa()&&(c=eg(c));c.right.e()||c.right.fa()||c.right.left.fa()||(c=fg(c),c.left.left.fa()&&(c=eg(c),c=fg(c)));if(0===b(a,c.key)){if(c.right.e())return Wf;d=ag(c.right);c=c.Y(d.key,d.value,null,null,cg(c.right))}c=c.Y(null,null,null,null,c.right.remove(a,b))}return bg(c)};g.fa=function(){return this.color}; -function bg(a){a.right.fa()&&!a.left.fa()&&(a=gg(a));a.left.fa()&&a.left.left.fa()&&(a=eg(a));a.left.fa()&&a.right.fa()&&(a=fg(a));return a}function dg(a){a=fg(a);a.right.left.fa()&&(a=a.Y(null,null,null,null,eg(a.right)),a=gg(a),a=fg(a));return a}function gg(a){return a.right.Y(null,null,a.color,a.Y(null,null,!0,null,a.right.left),null)}function eg(a){return a.left.Y(null,null,a.color,null,a.Y(null,null,!0,a.left.right,null))} -function fg(a){return a.Y(null,null,!a.color,a.left.Y(null,null,!a.left.color,null,null),a.right.Y(null,null,!a.right.color,null,null))}function hg(){}g=hg.prototype;g.Y=function(){return this};g.Ra=function(a,b){return new $f(a,b,null)};g.remove=function(){return this};g.count=function(){return 0};g.e=function(){return!0};g.ia=function(){return!1};g.Hc=function(){return null};g.fc=function(){return null};g.fa=function(){return!1};var Wf=new hg;function P(a,b,c){this.m=a;(this.ba=b)&&re(this.ba);a.e()&&H(!this.ba||this.ba.e(),"An empty node cannot have a priority");this.zb=c;this.Eb=null}g=P.prototype;g.J=function(){return!1};g.C=function(){return this.ba||F};g.ga=function(a){return this.m.e()?this:new P(this.m,a,this.zb)};g.R=function(a){if(".priority"===a)return this.C();a=this.m.get(a);return null===a?F:a};g.Q=function(a){var b=J(a);return null===b?this:this.R(b).Q(D(a))};g.Fa=function(a){return null!==this.m.get(a)}; -g.U=function(a,b){H(b,"We should always be passing snapshot nodes");if(".priority"===a)return this.ga(b);var c=new K(a,b),d,e;b.e()?(d=this.m.remove(a),c=Me(this.zb,c,this.m)):(d=this.m.Ra(a,b),c=Ke(this.zb,c,this.m));e=d.e()?F:this.ba;return new P(d,e,c)};g.F=function(a,b){var c=J(a);if(null===c)return b;H(".priority"!==J(a)||1===$d(a),".priority must be the last token in a path");var d=this.R(c).F(D(a),b);return this.U(c,d)};g.e=function(){return this.m.e()};g.Fb=function(){return this.m.count()}; -var ig=/^(0|[1-9]\d*)$/;g=P.prototype;g.H=function(a){if(this.e())return null;var b={},c=0,d=0,e=!0;this.P(N,function(f,h){b[f]=h.H(a);c++;e&&ig.test(f)?d=Math.max(d,Number(f)):e=!1});if(!a&&e&&d<2*c){var f=[],h;for(h in b)f[h]=b[h];return f}a&&!this.C().e()&&(b[".priority"]=this.C().H());return b};g.hash=function(){if(null===this.Eb){var a="";this.C().e()||(a+="priority:"+te(this.C().H())+":");this.P(N,function(b,c){var d=c.hash();""!==d&&(a+=":"+b+":"+d)});this.Eb=""===a?"":Uc(a)}return this.Eb}; -g.Ze=function(a,b,c){return(c=jg(this,c))?(a=Xf(c,new K(a,b)))?a.name:null:Xf(this.m,a)};function pe(a,b){var c;c=(c=jg(a,b))?(c=c.Hc())&&c.name:a.m.Hc();return c?new K(c,a.m.get(c)):null}function qe(a,b){var c;c=(c=jg(a,b))?(c=c.fc())&&c.name:a.m.fc();return c?new K(c,a.m.get(c)):null}g.P=function(a,b){var c=jg(this,a);return c?c.ia(function(a){return b(a.name,a.S)}):this.m.ia(b)};g.Xb=function(a){return this.Yb(a.Ic(),a)}; -g.Yb=function(a,b){var c=jg(this,b);if(c)return c.Yb(a,function(a){return a});for(var c=this.m.Yb(a.name,Jc),d=Zf(c);null!=d&&0>b.compare(d,a);)R(c),d=Zf(c);return c};g.$e=function(a){return this.$b(a.Gc(),a)};g.$b=function(a,b){var c=jg(this,b);if(c)return c.$b(a,function(a){return a});for(var c=this.m.$b(a.name,Jc),d=Zf(c);null!=d&&0=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.n.ya)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.n.ne(a),this.Oc)}; -g.oe=function(a){y("Query.limitToLast",1,1,arguments.length);if(!fa(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.n.ya)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.n.oe(a),this.Oc)}; -g.lg=function(a){y("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');Lf("Query.orderByChild",a);wg(this,"Query.orderByChild");var b=new L(a);if(b.e())throw Error("Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead."); -b=new xe(b);b=He(this.n,b);ug(b);return new X(this.u,this.path,b,!0)};g.mg=function(){y("Query.orderByKey",0,0,arguments.length);wg(this,"Query.orderByKey");var a=He(this.n,ee);ug(a);return new X(this.u,this.path,a,!0)};g.ng=function(){y("Query.orderByPriority",0,0,arguments.length);wg(this,"Query.orderByPriority");var a=He(this.n,N);ug(a);return new X(this.u,this.path,a,!0)}; -g.og=function(){y("Query.orderByValue",0,0,arguments.length);wg(this,"Query.orderByValue");var a=He(this.n,De);ug(a);return new X(this.u,this.path,a,!0)};g.Nd=function(a,b){y("Query.startAt",0,2,arguments.length);Ef("Query.startAt",a,this.path,!0);Kf("Query.startAt",b);var c=this.n.Nd(a,b);vg(c);ug(c);if(this.n.la)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");p(a)||(b=a=null);return new X(this.u,this.path,c,this.Oc)}; -g.fd=function(a,b){y("Query.endAt",0,2,arguments.length);Ef("Query.endAt",a,this.path,!0);Kf("Query.endAt",b);var c=this.n.fd(a,b);vg(c);ug(c);if(this.n.oa)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new X(this.u,this.path,c,this.Oc)}; -g.Rf=function(a,b){y("Query.equalTo",1,2,arguments.length);Ef("Query.equalTo",a,this.path,!1);Kf("Query.equalTo",b);if(this.n.la)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.n.oa)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.Nd(a,b).fd(a,b)}; -g.toString=function(){y("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.Z;c=b&&dh(h,c.path)?d=!1:c.path.contains(h.path)&&(e=!0));f--}if(d){if(e)this.T=eh(this.ma,fh,C),this.Cc=0f.Cc,"Stacking an older write on top of newer ones");p(h)||(h=!0);f.ma.push({path:b,Ja:c,Zc:d,visible:h});h&&(f.T=Sg(f.T,b,c));f.Cc=d;return e?Fh(a,new $b(Ng,b,c)):[]}function Gh(a,b,c,d){var e=a.lb;H(d>e.Cc,"Stacking an older merge on top of newer ones");e.ma.push({path:b,children:c,Zc:d,visible:!0});e.T=Tg(e.T,b,c);e.Cc=d;c=Bg(c);return Fh(a,new vd(Ng,b,c))} -function Hh(a,b,c){c=c||!1;var d=ch(a.lb,b);if(a.lb.Ed(b)){var e=Q;null!=d.Ja?e=e.set(C,!0):Cb(d.children,function(a,b){e=e.set(new L(a),b)});return Fh(a,new Mg(d.path,e,c))}return[]}function Ih(a,b,c){c=Bg(c);return Fh(a,new vd(Pg,b,c))}function Jh(a,b,c,d){d=Kh(a,d);if(null!=d){var e=Lh(d);d=e.path;e=e.Ib;b=T(d,b);c=new $b(new Og(!1,!0,e,!0),b,c);return Mh(a,d,c)}return[]} -function Nh(a,b,c,d){if(d=Kh(a,d)){var e=Lh(d);d=e.path;e=e.Ib;b=T(d,b);c=Bg(c);c=new vd(new Og(!1,!0,e,!0),b,c);return Mh(a,d,c)}return[]} -Dh.prototype.Ob=function(a,b){var c=a.path,d=null,e=!1;Ig(this.xa,c,function(a,b){var f=T(a,c);d=d||b.jb(f);e=e||null!=Zg(b)});var f=this.xa.get(c);f?(e=e||null!=Zg(f),d=d||f.jb(C)):(f=new Yg,this.xa=this.xa.set(c,f));var h;null!=d?h=!0:(h=!1,d=F,Lg(this.xa.subtree(c),function(a,b){var c=b.jb(C);c&&(d=d.U(a,c))}));var k=null!=ah(f,a);if(!k&&!S(a.n)){var m=Oh(a);H(!(m in this.jc),"View does not exist, but we have a tag");var l=Ph++;this.jc[m]=l;this.De["_"+l]=m}h=f.Ob(a,b,new gh(c,this.lb),d,h);k|| -e||(f=ah(f,a),h=h.concat(Qh(this,a,f)));return h}; -Dh.prototype.mb=function(a,b,c){var d=a.path,e=this.xa.get(d),f=[];if(e&&("default"===a.ka()||null!=ah(e,a))){f=e.mb(a,b,c);e.e()&&(this.xa=this.xa.remove(d));e=f.sg;f=f.Tf;b=-1!==Pa(e,function(a){return S(a.n)});var h=Gg(this.xa,d,function(a,b){return null!=Zg(b)});if(b&&!h&&(d=this.xa.subtree(d),!d.e()))for(var d=Rh(d),k=0;kb;b++)L[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b);for(var b=L,c=[],d=0;d>2,e=(e&3)<<4|m>>4,m=(m&15)<<2|r>>6,r=r&63;p||(r=64,g||(m=64));c.push(b[V],b[e],b[m],b[r])}return c.join("").replace(/\+/g,"-").replace(/\//g, -"_").replace(/=+$/,"")};var N=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D),O=function(){this.a=null},P=function(a){if(a.a)return a.a;a.a=new Promise(function(a,c){var b=y.indexedDB.open("fcm_token_details_db",1);b.onerror=function(a){c(a.target.error)};b.onsuccess=function(b){a(b.target.result)};b.onupgradeneeded=function(a){a=a.target.result.createObjectStore("fcm_token_object_Store",{keyPath:"swScope"});a.createIndex("fcmSenderId","fcmSenderId",{unique:!1});a.createIndex("fcmToken","fcmToken",{unique:!0})}}); -return a.a},ba=function(a){a.a?a.a.then(function(b){b.close();a.a=null}):Promise.resolve()},Q=function(a,b){return P(a).then(function(a){return new Promise(function(c,e){var d=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").index("fcmToken").get(b);d.onerror=function(a){e(a.target.error)};d.onsuccess=function(a){c(a.target.result)}})})},ca=function(a,b){return P(a).then(function(a){return new Promise(function(c,e){var d=[],m=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").openCursor(); -m.onerror=function(a){e(a.target.error)};m.onsuccess=function(a){(a=a.target.result)?(a.value.fcmSenderId===b&&d.push(a.value),a.continue()):c(d)}})})},R=function(a,b,c){var d=M(b.getKey("p256dh")),e=M(b.getKey("auth"));a="authorized_entity="+a+"&"+("endpoint="+b.endpoint+"&")+("encryption_key="+d+"&")+("encryption_auth="+e);c&&(a+="&pushSet="+c);c=new Headers;c.append("Content-Type","application/x-www-form-urlencoded");return fetch("https://fcm.googleapis.com/fcm/connect/subscribe",{method:"POST", -headers:c,body:a}).then(function(a){return a.json()}).then(function(a){if(a.error)throw N.create(B.V,{message:a.error.message});if(!a.token)throw N.create(B.X);if(!a.pushSet)throw N.create(B.W);return{token:a.token,pushSet:a.pushSet}})},da=function(a,b,c,d,e,g){var m={swScope:c.scope,endpoint:d.endpoint,auth:M(d.getKey("auth")),p256dh:M(d.getKey("p256dh")),fcmToken:e,fcmPushSet:g,fcmSenderId:b};return P(a).then(function(a){return new Promise(function(b,c){var d=a.transaction(["fcm_token_object_Store"], -"readwrite").objectStore("fcm_token_object_Store").put(m);d.onerror=function(a){c(a.target.error)};d.onsuccess=function(){b()}})})}; -O.prototype.ba=function(a,b){return b instanceof ServiceWorkerRegistration?"string"!==typeof a||0===a.length?Promise.reject(N.create(B.l)):ca(this,a).then(function(c){if(0!==c.length){var d=c.findIndex(function(c){return b.scope===c.swScope&&a===c.fcmSenderId});if(-1!==d)return c[d]}}).then(function(a){if(a)return b.pushManager.getSubscription().catch(function(){throw N.create(B.H);}).then(function(b){var c;if(c=b)c=b.endpoint===a.endpoint&&M(b.getKey("auth"))===a.auth&&M(b.getKey("p256dh"))===a.p256dh; -if(c)return a.fcmToken})}):Promise.reject(N.create(B.m))};O.prototype.getSavedToken=O.prototype.ba;O.prototype.aa=function(a,b){var c=this;return"string"!==typeof a||0===a.length?Promise.reject(N.create(B.l)):b instanceof ServiceWorkerRegistration?b.pushManager.getSubscription().then(function(a){return a?a:b.pushManager.subscribe(E)}).then(function(d){return R(a,d).then(function(e){return da(c,a,b,d,e.token,e.pushSet).then(function(){return e.token})})}):Promise.reject(N.create(B.m))}; -O.prototype.createToken=O.prototype.aa;O.prototype.deleteToken=function(a){var b=this;return"string"!==typeof a||0===a.length?Promise.reject(N.create(B.J)):Q(this,a).then(function(a){if(!a)throw N.create(B.D);return P(b).then(function(b){return new Promise(function(c,d){var e=b.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").delete(a.swScope);e.onerror=function(a){d(a.target.error)};e.onsuccess=function(b){0===b.target.result?d(N.create(B.G)):c(a)}})})})};var S=function(a){var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D);if(!a.options.messagingSenderId||"string"!==typeof a.options.messagingSenderId)throw this.a.create(B.l);this.j=a.options.messagingSenderId;this.c=new O;this.app=a;this.INTERNAL={};this.INTERNAL.delete=function(){return b.delete}}; -S.prototype.getToken=function(){var a=this,b=Notification.permission;return"granted"!==b?"denied"===b?Promise.reject(this.a.create(B.L)):Promise.resolve(null):this.f().then(function(b){return a.c.ba(a.j,b).then(function(c){return c?c:a.c.aa(a.j,b)})})};S.prototype.getToken=S.prototype.getToken;S.prototype.deleteToken=function(a){var b=this;return this.c.deleteToken(a).then(function(){return b.f()}).then(function(a){return a?a.pushManager.getSubscription():null}).then(function(a){if(a)return a.unsubscribe()})}; -S.prototype.deleteToken=S.prototype.deleteToken;S.prototype.f=function(){throw this.a.create(B.U);};S.prototype.requestPermission=function(){throw this.a.create(B.i);};S.prototype.useServiceWorker=function(){throw this.a.create(B.i);};S.prototype.useServiceWorker=S.prototype.useServiceWorker;S.prototype.onMessage=function(){throw this.a.create(B.i);};S.prototype.onMessage=S.prototype.onMessage;S.prototype.onTokenRefresh=function(){throw this.a.create(B.i);};S.prototype.onTokenRefresh=S.prototype.onTokenRefresh; -S.prototype.setBackgroundMessageHandler=function(){throw this.a.create(B.A);};S.prototype.setBackgroundMessageHandler=S.prototype.setBackgroundMessageHandler;S.prototype.delete=function(){ba(this.c)};var T=self,U=function(a){var b=this;S.call(this,a);this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",D);T.addEventListener("push",function(a){return ea(b,a)},!1);T.addEventListener("pushsubscriptionchange",function(a){return fa(b,a)},!1);T.addEventListener("notificationclick",function(a){return ga(b,a)},!1);this.b=null};f(U,S); -var ea=function(a,b){var c;try{c=b.data.json()}catch(e){return}var d=ha().then(function(b){if(b){if(c.notification||a.b)return ia(a,c)}else{if((b=c)&&"object"===typeof b.notification){var d=Object.assign({},b.notification),e={};d.data=(e.FCM_MSG=b,e);b=d}else b=void 0;if(b)return T.registration.showNotification(b.title||"",b);if(a.b)return a.b(c)}});b.waitUntil(d)},fa=function(a,b){var c=a.getToken().then(function(b){if(!b)throw a.a.create(B.N);var c=a.c;return Q(c,b).then(function(b){if(!b)throw a.a.create(B.K); -return T.registration.pushManager.subscribe(E).then(function(a){return R(b.ha,a,b.ga)}).catch(function(d){return c.deleteToken(b.ia).then(function(){throw a.a.create(B.Y,{message:d});})})})});b.waitUntil(c)},ga=function(a,b){if(b.notification&&b.notification.data&&b.notification.data.FCM_MSG){b.stopImmediatePropagation();b.notification.close();var c=b.notification.data.FCM_MSG,d=c.notification.click_action;if(d){var e=ja(d).then(function(a){return a?a:T.clients.openWindow(d)}).then(function(b){if(b)return delete c.notification, -X(a,b,H(G.M,c))});b.waitUntil(e)}}};U.prototype.setBackgroundMessageHandler=function(a){if(a&&"function"!==typeof a)throw this.a.create(B.B);this.b=a};U.prototype.setBackgroundMessageHandler=U.prototype.setBackgroundMessageHandler; -var ja=function(a){var b=(new URL(a)).href;return T.clients.matchAll({type:"window",includeUncontrolled:!0}).then(function(a){for(var c=null,e=0;e>> -0),ga=0,ha=function(a,b,c){return a.call.apply(a.bind,arguments)},ia=function(a,b,c){if(!a)throw Error();if(2h&&(h*=2);var c;1===Q?(Q=2,c=0):c=1E3*(h+Math.random());e(c)}}function g(a){jc||(jc=!0,P||(null!==m?(a||(Q=2),clearTimeout(m),e(0)):a||(Q=1)))}var h=1,m=null,q=!1,Q=0,P=!1,jc=!1;e(0);setTimeout(function(){q=!0;g(!0)},c);return g};var la="https://firebasestorage.googleapis.com";var w=function(a,b){this.code="storage/"+a;this.message="Firebase Storage: "+b;this.serverResponse=null;this.name="FirebaseError"};v(w,Error); -var ma=function(){return new w("unknown","An unknown error occurred, please check the error payload for server response.")},na=function(){return new w("canceled","User canceled the upload/download.")},oa=function(){return new w("cannot-slice-blob","Cannot slice blob for upload. Please retry the upload.")},pa=function(a,b,c){return new w("invalid-argument","Invalid argument in `"+b+"` at index "+a+": "+c)},qa=function(){return new w("app-deleted","The Firebase app was deleted.")},ra=function(a,b){return new w("invalid-format", -"String does not match format '"+a+"': "+b)};var sa=function(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])},ta=function(a){var b={};sa(a,function(a,d){b[a]=d});return b};var x=function(a,b,c,d){this.i=a;this.b={};this.method=b;this.headers={};this.body="";this.M=c;this.c=this.a=null;this.f=[200];this.h=[];this.timeout=d;this.g=!0};var ua={STATE_CHANGED:"state_changed"},va={RUNNING:"running",PAUSED:"paused",SUCCESS:"success",CANCELED:"canceled",ERROR:"error"},wa=function(a){switch(a){case "running":case "pausing":case "canceling":return"running";case "paused":return"paused";case "success":return"success";case "canceled":return"canceled";case "error":return"error";default:return"error"}};var y=function(a){return n(a)&&null!==a},xa=function(a){return"string"===typeof a||a instanceof String},ya=function(){return"undefined"!==typeof Blob};var za=function(a,b,c){this.f=c;this.c=a;this.g=b;this.b=0;this.a=null};za.prototype.get=function(){var a;0b?1:0};var Pa=function(a,b){this.a=a;this.b=b};var Qa=function(a,b){this.bucket=a;this.path=b},Ra=function(a){var b=encodeURIComponent;return"/b/"+b(a.bucket)+"/o/"+b(a.path)},Sa=function(a){for(var b=null,c=[{ia:/^gs:\/\/([A-Za-z0-9.\-]+)(\/(.*))?$/i,ba:{bucket:1,path:3},ha:function(a){"/"===a.path.charAt(a.path.length-1)&&(a.path=a.path.slice(0,-1))}},{ia:/^https?:\/\/firebasestorage\.googleapis\.com\/v[A-Za-z0-9_]+\/b\/([A-Za-z0-9.\-]+)\/o(\/([^?#]*).*)?$/i,ba:{bucket:1,path:3},ha:function(a){a.path=decodeURIComponent(a.path)}}],d=0;d=d)b.push(d);else if(2047>=d)b.push(192|d>>6,128|d&63);else if(55296==(d&64512))if(c>18,128|d>>12&63,128|d>>6&63,128|d&63)}else b.push(239,191,189);else 56320==(d&64512)?b.push(239,191,189):b.push(224|d>>12,128|d>>6&63,128|d&63)}return new Uint8Array(b)},Ya=function(a,b){switch(a){case "base64":var c=-1!==b.indexOf("-"), -d=-1!==b.indexOf("_");if(c||d)throw ra(a,"Invalid character '"+(c?"-":"_")+"' found: is it base64url encoded?");break;case "base64url":c=-1!==b.indexOf("+");d=-1!==b.indexOf("/");if(c||d)throw ra(a,"Invalid character '"+(c?"+":"/")+"' found: is it base64 encoded?");b=b.replace(/-/g,"+").replace(/_/g,"/")}var e;try{e=atob(b)}catch(f){throw ra(a,"Invalid character found");}a=new Uint8Array(e.length);for(b=0;b][;base64],");b=b[1]||null;this.a=!1;this.b=null;if(null!=b){var c=b.length-7;this.b=(this.a=0<=c&&b.indexOf(";base64",c)==c)?b.substring(0,b.length-7):b}this.c=a.substring(a.indexOf(",")+1)};var ab=function(a){var b=encodeURIComponent,c="?";sa(a,function(a,e){a=b(a)+"="+b(e);c=c+a+"&"});return c=c.slice(0,-1)};var A=function(a,b,c,d,e,f){this.b=a;this.h=b;this.f=c;this.a=d;this.g=e;this.c=f};k=A.prototype;k.na=function(){return this.b};k.Ja=function(){return this.h};k.Ga=function(){return this.f};k.Ba=function(){return this.a};k.pa=function(){if(y(this.a)){var a=this.a.downloadURLs;return y(a)&&y(a[0])?a[0]:null}return null};k.Ia=function(){return this.g};k.Ea=function(){return this.c};var bb=function(a,b){b.unshift(a);z.call(this,Ma.apply(null,b));b.shift()};v(bb,z);bb.prototype.name="AssertionError"; -var cb=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new bb(""+e,f||[]);},B=function(a,b,c){a||cb("",null,b,Array.prototype.slice.call(arguments,2))},db=function(a,b){throw new bb("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},eb=function(a,b,c){t(a)||cb("Expected function but got %s: %s.",[p(a),a],b,Array.prototype.slice.call(arguments,2))};var fb=function(){this.g=this.g;this.o=this.o};fb.prototype.g=!1;fb.prototype.ea=function(){this.g||(this.g=!0,this.D())};fb.prototype.D=function(){if(this.o)for(;this.o.length;)this.o.shift()()};var gb="closure_listenable_"+(1E6*Math.random()|0),hb=0;var ib;a:{var jb=l.navigator;if(jb){var kb=jb.userAgent;if(kb){ib=kb;break a}}ib=""}var C=function(a){return-1!=ib.indexOf(a)};var lb=function(){};lb.prototype.b=null;lb.prototype.a=ca;var mb=function(a){return a.b||(a.b=a.f())};lb.prototype.f=ca;var nb=Array.prototype.indexOf?function(a,b,c){B(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(r(a))return r(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:r(a)?a.charAt(b):a[b]},ub=function(a,b){return 0<=nb(a,b)},vb=function(a){if("array"!=p(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0},wb=function(a,b){b=nb(a,b);var c;if(c=0<=b)B(null!=a.length),Array.prototype.splice.call(a, -b,1);return c},xb=function(a){var b=a.length;if(0=this.b()){for(var c=this.a,d=0;d>1,a[d].a>c.a)a[b]=a[d],b=d;else break;a[b]=c};Pb.prototype.A=function(){for(var a=this.a,b=[],c=a.length,d=0;dparseFloat(gc)){fc=String(ic);break a}}fc=gc} -var kc=fc,Ka={},E=function(a){return La(a,function(){for(var b=0,c=Na(String(kc)).split("."),d=Na(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f2*a.f&&vc(a),!0):!1},vc=function(a){if(a.f!=a.a.length){for(var b=0,c=0;b=d.a.length)throw Yb;var e=d.a[b++];return a?e:d.c[e]};return e};var xc=function(a,b){Cb.call(this,a?a.type:"");this.c=this.a=this.target=null;if(a){this.type=a.type;this.target=a.target||a.srcElement;this.a=b;if((b=a.relatedTarget)&&cc)try{Ja(b.nodeName)}catch(c){}this.c=a;a.defaultPrevented&&this.b()}};v(xc,Cb);xc.prototype.b=function(){xc.I.b.call(this);var a=this.c;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,uc)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};var G=function(a,b){this.a=0;this.i=void 0;this.f=this.b=this.c=null;this.g=this.h=!1;if(a!=ba)try{var c=this;a.call(b,function(a){yc(c,2,a)},function(a){if(!(a instanceof zc))try{if(a instanceof Error)throw a;throw Error("Promise rejected.");}catch(e){}yc(c,3,a)})}catch(d){yc(this,3,d)}},Ac=function(){this.next=this.f=this.c=this.b=this.a=null;this.g=!1};Ac.prototype.reset=function(){this.f=this.c=this.b=this.a=null;this.g=!1}; -var Bc=new za(function(){return new Ac},function(a){a.reset()},100),Cc=function(a,b,c){var d=Bc.get();d.b=a;d.c=b;d.f=c;return d},Dc=function(a){if(a instanceof G)return a;var b=new G(ba);yc(b,2,a);return b},Ec=function(a){return new G(function(b,c){c(a)})}; -G.prototype.then=function(a,b,c){null!=a&&eb(a,"opt_onFulfilled should be a function.");null!=b&&eb(b,"opt_onRejected should be a function. Did you pass opt_context as the second argument instead of the third?");return Fc(this,t(a)?a:null,t(b)?b:null,c)};Ha(G);G.prototype.l=function(a,b){return Fc(this,null,a,b)};G.prototype.cancel=function(a){0==this.a&&qc(function(){var b=new zc(a);Gc(this,b)},this)}; -var Gc=function(a,b){if(0==a.a)if(a.c){var c=a.c;if(c.b){for(var d=0,e=null,f=null,g=c.b;g&&(g.g||(d++,g.a==a&&(e=g),!(e&&1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode= --1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.a;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;0<=e;e--){b.a=d[e];var f=gd(d[e],a,!0,b),c=c&&f}for(e=0;e>>0),Wc=function(a){B(a,"Listener can not be null.");if(t(a))return a;B(a.handleEvent,"An object listener must have handleEvent method."); -a[hd]||(a[hd]=function(b){return a.handleEvent(b)});return a[hd]};var H=function(a,b){fb.call(this);this.m=a||0;this.f=b||10;if(this.m>this.f)throw Error("[goog.structs.Pool] Min can not be greater than max");this.a=new Rb;this.c=new Qc;this.j=null;this.S()};v(H,fb);H.prototype.W=function(){var a=ja();if(!(null!=this.j&&0>a-this.j)){for(var b;0this.f&&0b.indexOf(d)&&(c[d]=a[d]);if(null!=a&&"function"===typeof Object.getOwnPropertySymbols){var e= +0;for(d=Object.getOwnPropertySymbols(a);eb.indexOf(d[e])&&(c[d[e]]=a[d[e]])}return c},__decorate=function(a,b,c,d){var e=arguments.length,h=3>e?b:null===d?d=Object.getOwnPropertyDescriptor(b,c):d,g;g=A.Reflect;if("object"===typeof g&&"function"===typeof g.decorate)h=g.decorate(a,b,c,d);else for(var f=a.length-1;0<=f;f--)if(g=a[f])h=(3>e?g(h):3f[0]&&c[1]"}),c=this.Y+": "+c+" ("+a+").",c=new V(a,c),d;for(d in b)b.hasOwnProperty(d)&&"_"!==d.slice(-1)&&(c[d]=b[d]);return c};var W=Q,X=function(a,b,c){var d=this;this.K=c;this.L=!1;this.i={};this.C=b;this.G=P(void 0,a);a="serviceAccount"in this.G;("credential"in this.G||a)&&"undefined"!==typeof console&&console.log("The '"+(a?"serviceAccount":"credential")+"' property specified in the first argument to initializeApp() is deprecated and will be removed in the next major version. You should instead use the 'firebase-admin' package. See https://firebase.google.com/docs/admin/setup for details on how to get started.");Object.keys(c.INTERNAL.factories).forEach(function(a){var b= +c.INTERNAL.useAsService(d,a);null!==b&&(b=d.U.bind(d,b),d[a]=b)})};X.prototype.delete=function(){var a=this;return(new W(function(b){Y(a);b()})).then(function(){a.K.INTERNAL.removeApp(a.C);return W.all(Object.keys(a.i).map(function(b){return a.i[b].INTERNAL.delete()}))}).then(function(){a.L=!0;a.i={}})};X.prototype.U=function(a){Y(this);void 0===this.i[a]&&(this.i[a]=this.K.INTERNAL.factories[a](this,this.T.bind(this)));return this.i[a]};X.prototype.T=function(a){P(this,a)}; +var Y=function(a){a.L&&Z("app-deleted",{name:a.C})};k.Object.defineProperties(X.prototype,{name:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.C}},options:{configurable:!0,enumerable:!0,get:function(){Y(this);return this.G}}});X.prototype.name&&X.prototype.options||X.prototype.delete||console.log("dc"); +function Ia(){function a(a){a=a||"[DEFAULT]";var b=d[a];void 0===b&&Z("no-app",{name:a});return b}function b(a,b){Object.keys(e).forEach(function(d){d=c(a,d);if(null!==d&&h[d])h[d](b,a)})}function c(a,b){if("serverAuth"===b)return null;var c=b;a=a.options;"auth"===b&&(a.serviceAccount||a.credential)&&(c="serverAuth","serverAuth"in e||Z("sa-not-supported"));return c}var d={},e={},h={},g={__esModule:!0,initializeApp:function(a,c){void 0===c?c="[DEFAULT]":"string"===typeof c&&""!==c||Z("bad-app-name", +{name:c+""});void 0!==d[c]&&Z("duplicate-app",{name:c});a=new X(a,c,g);d[c]=a;b(a,"create");void 0!=a.INTERNAL&&void 0!=a.INTERNAL.getToken||P(a,{INTERNAL:{getToken:function(){return W.resolve(null)},addAuthTokenListener:function(){},removeAuthTokenListener:function(){}}});return a},app:a,apps:null,Promise:W,SDK_VERSION:"0.0.0",INTERNAL:{registerService:function(b,c,d,u){e[b]&&Z("duplicate-service",{name:b});e[b]=c;u&&(h[b]=u);c=function(c){void 0===c&&(c=a());return c[b]()};void 0!==d&&P(c,d);return g[b]= +c},createFirebaseNamespace:Ia,extendNamespace:function(a){P(g,a)},createSubscribe:Ea,ErrorFactory:U,removeApp:function(a){b(d[a],"delete");delete d[a]},factories:e,useAsService:c,Promise:O,deepExtend:P}};g["default"]=g;Object.defineProperty(g,"apps",{get:function(){return Object.keys(d).map(function(a){return d[a]})}});a.App=X;return g}function Z(a,b){throw Ja.create(a,b);} +var Ja=new U("app","Firebase",{"no-app":"No Firebase App '{$name}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$name}","duplicate-app":"Firebase App named '{$name}' already exists","app-deleted":"Firebase App named '{$name}' already deleted","duplicate-service":"Firebase service named '{$name}' already registered","sa-not-supported":"Initializing the Firebase SDK with a service account is only allowed in a Node.js environment. On client devices, you should instead initialize the SDK with an api key and auth domain"});"undefined"!==typeof firebase&&(firebase=Ia()); }).call(this); +firebase.SDK_VERSION = "3.6.10"; +(function(){var h,aa=aa||{},l=this,ba=function(){},m=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&& +!a.propertyIsEnumerable("call"))return"function"}else return"null";else if("function"==b&&"undefined"==typeof a.call)return"object";return b},ca=function(a){return null===a},da=function(a){return"array"==m(a)},ea=function(a){var b=m(a);return"array"==b||"object"==b&&"number"==typeof a.length},p=function(a){return"string"==typeof a},fa=function(a){return"number"==typeof a},q=function(a){return"function"==m(a)},ga=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b},ha=function(a,b, +c){return a.call.apply(a.bind,arguments)},ia=function(a,b,c){if(!a)throw Error();if(2/g,qa=/"/g,ra=/'/g,sa=/\x00/g,ta=/[\x00&<>"']/,v=function(a,b){return-1!=a.indexOf(b)},ua=function(a,b){return ab?1:0};var va=function(a,b){b.unshift(a);u.call(this,la.apply(null,b));b.shift()};t(va,u);va.prototype.name="AssertionError"; +var wa=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new va(""+e,f||[]);},w=function(a,b,c){a||wa("",null,b,Array.prototype.slice.call(arguments,2))},xa=function(a,b){throw new va("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},ya=function(a,b,c){fa(a)||wa("Expected number but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2));return a},za=function(a,b,c){p(a)||wa("Expected string but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments, +2))},Aa=function(a,b,c){q(a)||wa("Expected function but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2))};var Ba=Array.prototype.indexOf?function(a,b,c){w(null!=a.length);return Array.prototype.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(p(a))return p(b)&&1==b.length?a.indexOf(b,c):-1;for(;cb?null:p(a)?a.charAt(b):a[b]},Ia=function(a,b){return 0<=Ba(a,b)},Ka=function(a,b){b=Ba(a,b);var c;(c=0<=b)&&Ja(a,b);return c},Ja=function(a,b){w(null!=a.length);return 1==Array.prototype.splice.call(a,b,1).length},La=function(a,b){var c=0;Da(a,function(d,e){b.call(void 0,d,e,a)&&Ja(a,e)&&c++})},Ma=function(a){return Array.prototype.concat.apply(Array.prototype, +arguments)},Na=function(a){var b=a.length;if(0parseFloat(jb)){ib=String(lb);break a}}ib=jb} +var mb=ib,ab={},z=function(a){return bb(a,function(){for(var b=0,c=ma(String(mb)).split("."),d=ma(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&f>4);64!=g&&(b(f<<4&240|g>>2),64!=k&&b(g<<6&192|k))}},ub=function(){if(!qb){qb={};rb={};for(var a=0;65>a;a++)qb[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a), +rb[qb[a]]=a,62<=a&&(rb["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a)]=a)}};var vb=function(){this.ya=-1};var yb=function(a,b){this.ya=64;this.Rb=l.Uint8Array?new Uint8Array(this.ya):Array(this.ya);this.uc=this.Ya=0;this.h=[];this.Te=a;this.Dd=b;this.uf=l.Int32Array?new Int32Array(64):Array(64);void 0!==wb||(wb=l.Int32Array?new Int32Array(xb):xb);this.reset()},wb;t(yb,vb);for(var zb=[],Ab=0;63>Ab;Ab++)zb[Ab]=0;var Bb=Ma(128,zb);yb.prototype.reset=function(){this.uc=this.Ya=0;this.h=l.Int32Array?new Int32Array(this.Dd):Na(this.Dd)}; +var Cb=function(a){var b=a.Rb;w(b.length==a.ya);for(var c=a.uf,d=0,e=0;eb;b++){var e=c[b-15]|0,d=c[b-2]|0,f=(c[b-16]|0)+((e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3)|0,g=(c[b-7]|0)+((d>>>17|d<<15)^(d>>>19|d<<13)^d>>>10)|0;c[b]=f+g|0}for(var d=a.h[0]|0,e=a.h[1]|0,k=a.h[2]|0,n=a.h[3]|0,A=a.h[4]|0,Wa=a.h[5]|0,Gb=a.h[6]|0,f=a.h[7]|0,b=0;64>b;b++)var dh=((d>>>2|d<<30)^(d>>>13|d<<19)^(d>>>22|d<<10))+(d&e^d&k^e&k)|0,g=A&Wa^~A&Gb,f=f+((A>>>6| +A<<26)^(A>>>11|A<<21)^(A>>>25|A<<7))|0,g=g+(wb[b]|0)|0,g=f+(g+(c[b]|0)|0)|0,f=Gb,Gb=Wa,Wa=A,A=n+g|0,n=k,k=e,e=d,d=g+dh|0;a.h[0]=a.h[0]+d|0;a.h[1]=a.h[1]+e|0;a.h[2]=a.h[2]+k|0;a.h[3]=a.h[3]+n|0;a.h[4]=a.h[4]+A|0;a.h[5]=a.h[5]+Wa|0;a.h[6]=a.h[6]+Gb|0;a.h[7]=a.h[7]+f|0}; +yb.prototype.update=function(a,b){void 0===b&&(b=a.length);var c=0,d=this.Ya;if(p(a))for(;c=e&&e==(e|0)))throw Error("message must be a byte array");this.Rb[d++]=e;d==this.ya&&(Cb(this),d=0)}else throw Error("message must be string or array");this.Ya=d;this.uc+=b}; +yb.prototype.digest=function(){var a=[],b=8*this.uc;56>this.Ya?this.update(Bb,56-this.Ya):this.update(Bb,this.ya-(this.Ya-56));for(var c=63;56<=c;c--)this.Rb[c]=b&255,b/=256;Cb(this);for(c=b=0;c>d&255;return a}; +var xb=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804, +4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];var Eb=function(){yb.call(this,8,Db)};t(Eb,yb);var Db=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225];var Fb=!y||9<=Number(nb),Hb=y&&!z("9");!gb||z("528");fb&&z("1.9b")||y&&z("8")||cb&&z("9.5")||gb&&z("528");fb&&!z("8")||y&&z("9");var Ib=function(){this.Aa=this.Aa;this.hc=this.hc};Ib.prototype.Aa=!1;Ib.prototype.isDisposed=function(){return this.Aa};Ib.prototype.Ta=function(){if(this.hc)for(;this.hc.length;)this.hc.shift()()};var Jb=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.bb=!1;this.Od=!0};Jb.prototype.preventDefault=function(){this.defaultPrevented=!0;this.Od=!1};var Kb=function(a,b){Jb.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.key="";this.charCode=this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.Ua=this.state=null;a&&this.init(a,b)};t(Kb,Jb); +Kb.prototype.init=function(a,b){var c=this.type=a.type,d=a.changedTouches?a.changedTouches[0]:null;this.target=a.target||a.srcElement;this.currentTarget=b;if(b=a.relatedTarget){if(fb){var e;a:{try{$a(b.nodeName);e=!0;break a}catch(f){}e=!1}e||(b=null)}}else"mouseover"==c?b=a.fromElement:"mouseout"==c&&(b=a.toElement);this.relatedTarget=b;null===d?(this.offsetX=gb||void 0!==a.offsetX?a.offsetX:a.layerX,this.offsetY=gb||void 0!==a.offsetY?a.offsetY:a.layerY,this.clientX=void 0!==a.clientX?a.clientX: +a.pageX,this.clientY=void 0!==a.clientY?a.clientY:a.pageY,this.screenX=a.screenX||0,this.screenY=a.screenY||0):(this.clientX=void 0!==d.clientX?d.clientX:d.pageX,this.clientY=void 0!==d.clientY?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.key=a.key||"";this.charCode=a.charCode||("keypress"==c?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.state=a.state;this.Ua= +a;a.defaultPrevented&&this.preventDefault()};Kb.prototype.preventDefault=function(){Kb.jd.preventDefault.call(this);var a=this.Ua;if(a.preventDefault)a.preventDefault();else if(a.returnValue=!1,Hb)try{if(a.ctrlKey||112<=a.keyCode&&123>=a.keyCode)a.keyCode=-1}catch(b){}};Kb.prototype.xe=function(){return this.Ua};var Lb="closure_listenable_"+(1E6*Math.random()|0),Mb=0;var Nb=function(a,b,c,d,e){this.listener=a;this.lc=null;this.src=b;this.type=c;this.capture=!!d;this.Zb=e;this.key=++Mb;this.hb=this.Qb=!1},Ob=function(a){a.hb=!0;a.listener=null;a.lc=null;a.src=null;a.Zb=null};var Pb=function(a){this.src=a;this.D={};this.Mb=0};Pb.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.D[f];a||(a=this.D[f]=[],this.Mb++);var g=Qb(a,b,d,e);-1d.keyCode||void 0!=d.returnValue)){a:{var e=!1;if(0==d.keyCode)try{d.keyCode=-1;break a}catch(g){e=!0}if(e||void 0==d.returnValue)d.returnValue=!0}d=[];for(e=b.currentTarget;e;e=e.parentNode)d.push(e);a=a.type;for(e=d.length-1;!b.bb&&0<=e;e--){b.currentTarget=d[e];var f=gc(d[e],a,!0,b),c=c&&f}for(e=0;!b.bb&&e>>0),Wb=function(a){w(a,"Listener can not be null.");if(q(a))return a;w(a.handleEvent,"An object listener must have handleEvent method.");a[hc]||(a[hc]=function(b){return a.handleEvent(b)});return a[hc]};var ic=/^[+a-zA-Z0-9_.!#$%&'*\/=?^`{|}~-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,63}$/;var kc=function(){this.rc="";this.ee=jc};kc.prototype.cc=!0;kc.prototype.Xb=function(){return this.rc};kc.prototype.toString=function(){return"Const{"+this.rc+"}"};var lc=function(a){if(a instanceof kc&&a.constructor===kc&&a.ee===jc)return a.rc;xa("expected object of type Const, got '"+a+"'");return"type_error:Const"},jc={},mc=function(a){var b=new kc;b.rc=a;return b};mc("");var oc=function(){this.kc="";this.fe=nc};oc.prototype.cc=!0;oc.prototype.Xb=function(){return this.kc};oc.prototype.toString=function(){return"TrustedResourceUrl{"+this.kc+"}"};var nc={};var qc=function(){this.ma="";this.de=pc};qc.prototype.cc=!0;qc.prototype.Xb=function(){return this.ma};qc.prototype.toString=function(){return"SafeUrl{"+this.ma+"}"}; +var rc=function(a){if(a instanceof qc&&a.constructor===qc&&a.de===pc)return a.ma;xa("expected object of type SafeUrl, got '"+a+"' of type "+m(a));return"type_error:SafeUrl"},sc=/^(?:(?:https?|mailto|ftp):|[^&:/?#]*(?:[/?#]|$))/i,uc=function(a){if(a instanceof qc)return a;a=a.cc?a.Xb():String(a);sc.test(a)||(a="about:invalid#zClosurez");return tc(a)},pc={},tc=function(a){var b=new qc;b.ma=a;return b};tc("about:blank");var xc=function(a){var b=[];vc(new wc,a,b);return b.join("")},wc=function(){this.nc=void 0},vc=function(a,b,c){if(null==b)c.push("null");else{if("object"==typeof b){if(da(b)){var d=b;b=d.length;c.push("[");for(var e="",f=0;f=b.j&&b.cancel())}this.u?this.u.call(this.s,this):this.l=!0;if(!this.a){a=new md;if(this.a){if(!this.l)throw new nd;this.l=!1}B(!(a instanceof ld),"An execution sequence may not be initiated with a blocking Deferred.");this.a=!0;this.b=a;this.f=!0;od(this)}}};ld.prototype.m=function(a,b){this.i=!1;this.a=!0;this.b=b;this.f=!a;od(this)}; -var pd=function(a,b,c){B(!a.o,"Blocking Deferreds can not be re-used");a.g.push([b,c,void 0]);a.a&&od(a)};ld.prototype.then=function(a,b,c){var d,e,f=new G(function(a,b){d=a;e=b});pd(this,d,function(a){a instanceof md?f.cancel():e(a)});return f.then(a,b,c)};Ha(ld); -var qd=function(a){return rb(a.g,function(a){return t(a[1])})},od=function(a){if(a.h&&a.a&&qd(a)){var b=a.h,c=rd[b];c&&(l.clearTimeout(c.a),delete rd[b]);a.h=0}a.c&&(a.c.j--,delete a.c);for(var b=a.b,d=c=!1;a.g.length&&!a.i;){var e=a.g.shift(),f=e[0],g=e[1],e=e[2];if(f=a.f?g:f)try{var h=f.call(e||a.s,b);n(h)&&(a.f=a.f&&(h==b||h instanceof Error),a.b=b=h);if(Ia(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.i=!0}catch(m){b=m,a.f=!0,qd(a)||(c=!0)}}a.b=b;d&&(h=u(a.m,a,!0),d=u(a.m,a, -!1),b instanceof ld?(pd(b,h,d),b.o=!0):b.then(h,d));c&&(b=new sd(b),rd[b.a]=b,a.h=b.a)},nd=function(){z.call(this)};v(nd,z);nd.prototype.message="Deferred has already fired";nd.prototype.name="AlreadyCalledError";var md=function(){z.call(this)};v(md,z);md.prototype.message="Deferred was canceled";md.prototype.name="CanceledError";var sd=function(a){this.a=l.setTimeout(u(this.c,this),0);this.b=a}; -sd.prototype.c=function(){B(rd[this.a],"Cannot throw an error that is not scheduled.");delete rd[this.a];throw this.b;};var rd={};var td=function(a){this.f=a;this.b=this.c=this.a=null},ud=function(a,b){this.name=a;this.value=b};ud.prototype.toString=function(){return this.name};var vd=new ud("SEVERE",1E3),wd=new ud("CONFIG",700),xd=new ud("FINE",500),yd=function(a){if(a.c)return a.c;if(a.a)return yd(a.a);db("Root logger has no level set.");return null}; -td.prototype.log=function(a,b,c){if(a.value>=yd(this).value)for(t(b)&&(b=b()),a=new Ba(a,String(b),this.f),c&&(a.a=c),c="log:"+a.b,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;)c=c.a}; -var zd={},Ad=null,Bd=function(a){Ad||(Ad=new td(""),zd[""]=Ad,Ad.c=wd);var b;if(!(b=zd[a])){b=new td(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=Bd(a.substr(0,c));c.b||(c.b={});c.b[d]=b;b.a=c;zd[a]=b}return b};var Cd=function(){fb.call(this);this.b=new Ib(this);this.Y=this;this.G=null};v(Cd,fb);Cd.prototype[gb]=!0;Cd.prototype.removeEventListener=function(a,b,c,d){dd(this,a,b,c,d)}; -var I=function(a,b){Xc(a);var c,d=a.G;if(d){c=[];for(var e=1;d;d=d.G)c.push(d),B(1E3>++e,"infinite loop")}a=a.Y;d=b.type||b;r(b)?b=new Cb(b,a):b instanceof Cb?b.target=b.target||a:(e=b,b=new Cb(d,a),Ga(b,e));var e=!0,f;if(c)for(var g=c.length-1;0<=g;g--)f=b.a=c[g],e=Dd(f,d,!0,b)&&e;f=b.a=a;e=Dd(f,d,!0,b)&&e;e=Dd(f,d,!1,b)&&e;if(c)for(g=0;g=f)c=void 0;else{if(1==f)vb(e);else{e[0]=e.pop();for(var e=0,d=d.a,f=d.length,g=d[e];e>1;){var h=2*e+1,m=2*e+2,h=mg.a)break;d[e]=d[h];e=h}d[e]=g}c=c.b}c.apply(this,[b])}else break}}; -k.$=function(a){J.I.$.call(this,a);this.aa()};k.S=function(){J.I.S.call(this);this.aa()};k.D=function(){J.I.D.call(this);l.clearTimeout(void 0);vb(this.h.a);this.h=null};var K=function(a,b){a&&a.log(xd,b,void 0)};var Ed=function(a,b,c){if(t(a))c&&(a=u(a,c));else if(a&&"function"==typeof a.handleEvent)a=u(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647e,h=ub([408,429],e),g=ub(g.o,e),f=f||h||g;f?(e=7===b.K,jd(b),a(!1,new Xd(!1,null,e))):(e=ub(d.G,e),a(!0,new Xd(e,b)))})})}function c(a,b){var c=d.l;a=d.j;var e=b.c;if(b.b)try{var f=d.s(e,Sd(e));n(f)?c(f):c()}catch(q){a(q)}else null!==e?(b=ma(),f=Sd(e),b.serverResponse=f,d.i?a(d.i(e,b)):a(b)):(b=b.a?d.g?qa(): -na():new w("retry-limit-exceeded","Max retry time for operation exceeded, please try again."),a(b));jd(e)}var d=a;a.h?c(0,new Xd(!1,null,!0)):a.c=ka(b,c,a.F)};Wd.prototype.a=function(){return this.B};Wd.prototype.cancel=function(a){this.h=!0;this.g=a||!1;null!==this.c&&(0,this.c)(!1);null!==this.b&&this.b.abort()}; -var Yd=function(a,b,c){var d=ab(a.b),d=a.i+d,e=a.headers?ta(a.headers):{};null!==b&&0b&&(b+=a.size),0>b&&(b=0),0>c&&(c+=a.size),cb.length?b:Hb(b)};a.push(b);b=new S("size");b.a=function(a,b){return y(b)?+b:b};a.push(b);a.push(new S("timeCreated"));a.push(new S("updated"));a.push(new S("md5Hash",null,!0)); -a.push(new S("cacheControl",null,!0));a.push(new S("contentDisposition",null,!0));a.push(new S("contentEncoding",null,!0));a.push(new S("contentLanguage",null,!0));a.push(new S("contentType",null,!0));a.push(new S("metadata","customMetadata",!0));a.push(new S("downloadTokens","downloadURLs",!1,function(a,b){if(!(xa(b)&&0m;m++)h+=Math.random().toString().slice(2);g["Content-Type"]="multipart/related; boundary="+h;e=ze(b,d,e);m=le(e,c);d=ae("--"+h+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+ -m+"\r\n--"+h+"\r\nContent-Type: "+e.contentType+"\r\n\r\n",d,"\r\n--"+h+"--");if(null===d)throw oa();a=new x(la+"/v0"+f,"POST",ue(a,c),a.b);a.b={name:e.fullPath};a.headers=g;a.body=d.v;a.a=ve(b);return a},Be=function(a,b,c,d){this.a=a;this.total=b;this.b=!!c;this.c=d||null},Ce=function(a,b){var c;try{c=Td(a,"X-Goog-Upload-Status")}catch(d){te(!1)}te(ub(b||["active"],c));return c},De=function(a,b,c,d,e){var f="/b/"+encodeURIComponent(b.bucket)+"/o",g=ze(b,d,e);e={name:g.fullPath};f=la+"/v0"+f;d={"X-Goog-Upload-Protocol":"resumable", -"X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":d.a,"X-Goog-Upload-Header-Content-Type":g.contentType,"Content-Type":"application/json; charset=utf-8"};c=le(g,c);a=new x(f,"POST",function(a){Ce(a);var b;try{b=Td(a,"X-Goog-Upload-URL")}catch(q){te(!1)}te(xa(b));return b},a.b);a.b=e;a.headers=d;a.body=c;a.a=ve(b);return a},Ee=function(a,b,c,d){a=new x(c,"POST",function(a){var b=Ce(a,["active","final"]),c;try{c=Td(a,"X-Goog-Upload-Size-Received")}catch(h){te(!1)}a=c;isFinite(a)&& -(a=String(a));a=r(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN;te(!isNaN(a));return new Be(a,d.a,"final"===b)},a.b);a.headers={"X-Goog-Upload-Command":"query"};a.a=ve(b);a.g=!1;return a},Fe=function(a,b,c,d,e,f,g){var h=new Be(0,0);g?(h.a=g.a,h.total=g.total):(h.a=0,h.total=d.a);if(d.a!==h.total)throw new w("server-file-wrong-size","Server recorded incorrect upload file size, please retry the upload.");var m=g=h.total-h.a;0262144*a.i&&(a.i*=2);a.a=null;Oe(a,b.a);b.b?(a.h=b.c,V(a,"success")):Ge(a)},a.V)})},Ke=function(a){Ne(a,function(b){var c=xe(a.c,a.j,a.m);a.a=R(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;V(a,"success")},a.Y)})},Me=function(a){Ne(a,function(b){var c=Ae(a.c,a.j,a.m,a.f,a.h);a.a= -R(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;Oe(a,a.f.a);V(a,"success")},a.V)})},Oe=function(a,b){var c=a.l;a.l=b;a.l>c&&Pe(a)},V=function(a,b){if(a.b!==b)switch(b){case "canceling":a.b=b;null!==a.a&&a.a.cancel();break;case "pausing":a.b=b;null!==a.a&&a.a.cancel();break;case "running":var c="paused"===a.b;a.b=b;c&&(Pe(a),He(a));break;case "paused":a.b=b;Pe(a);break;case "canceled":a.g=na();a.b=b;Pe(a);break;case "error":a.b=b;Pe(a);break;case "success":a.b=b,Pe(a)}},Ge=function(a){switch(a.b){case "pausing":V(a, -"paused");break;case "canceling":V(a,"canceled");break;case "running":He(a)}};W.prototype.C=function(){return new A(this.l,this.f.a,wa(this.b),this.h,this,this.L)}; -W.prototype.O=function(a,b,c,d){function e(a){try{g(a);return}catch(P){}try{if(h(a),!(n(a.next)||n(a.error)||n(a.complete)))throw"";}catch(P){throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";}}function f(a){return function(b,c,d){null!==a&&T("on",a,arguments);var e=new Ta(b,c,d);Qe(m,e);return function(){wb(m.F,e)}}}var g=se().a,h=re(null,!0).a;T("on",[oe(function(){if("state_changed"!==a)throw"Expected one of the event types: [state_changed].";}),re(e,!0), -se(),se()],arguments);var m=this,q=[re(function(a){if(null===a)throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";e(a)}),se(),se()];return n(b)||n(c)||n(d)?f(null)(b,c,d):f(q)};W.prototype.then=function(a,b){return this.G.then(a,b)}; -var Qe=function(a,b){a.F.push(b);Re(a,b)},Pe=function(a){Se(a);var b=xb(a.F);ob(b,function(b){Re(a,b)})},Se=function(a){if(null!==a.o){var b=!0;switch(wa(a.b)){case "success":Rc(a.o.bind(null,a.C()))();break;case "canceled":case "error":Rc(a.B.bind(null,a.g))();break;default:b=!1}b&&(a.o=null,a.B=null)}},Re=function(a,b){switch(wa(a.b)){case "running":case "paused":null!==b.next&&Rc(b.next.bind(b,a.C()))();break;case "success":null!==b.b&&Rc(b.b.bind(b))();break;case "canceled":case "error":null!== -b.a&&Rc(b.a.bind(b,a.g))();break;default:null!==b.a&&Rc(b.a.bind(b,a.g))()}};W.prototype.R=function(){T("resume",[],arguments);var a="paused"===this.b||"pausing"===this.b;a&&V(this,"running");return a};W.prototype.P=function(){T("pause",[],arguments);var a="running"===this.b;a&&V(this,"pausing");return a};W.prototype.cancel=function(){T("cancel",[],arguments);var a="running"===this.b||"pausing"===this.b;a&&V(this,"canceling");return a};var X=function(a,b){this.b=a;if(b)this.a=b instanceof Qa?b:Sa(b);else if(a=a.bucket(),null!==a)this.a=new Qa(a,"");else throw new w("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");};X.prototype.toString=function(){T("toString",[],arguments);return"gs://"+this.a.bucket+"/"+this.a.path};var Te=function(a,b){return new X(a,b)};k=X.prototype; -k.fa=function(a){T("child",[oe()],arguments);var b=Gb(this.a.path,a);return Te(this.b,new Qa(this.a.bucket,b))};k.Da=function(){var a;a=this.a.path;if(0==a.length)a=null;else{var b=a.lastIndexOf("/");a=-1===b?"":a.slice(0,b)}return null===a?null:Te(this.b,new Qa(this.a.bucket,a))};k.Fa=function(){return Te(this.b,new Qa(this.a.bucket,""))};k.ma=function(){return this.a.bucket};k.ya=function(){return this.a.path};k.Ca=function(){return Hb(this.a.path)};k.Ha=function(){return this.b.i}; -k.ra=function(a,b){T("put",[pe(),new U(me,!0)],arguments);Ue(this,"put");return new W(this,this.b,this.a,je(),new O(a),b)};k.sa=function(a,b,c){T("putString",[oe(),oe(Va,!0),new U(me,!0)],arguments);Ue(this,"putString");var d=$a(y(b)?b:"raw",a),e=c?ta(c):{};!y(e.contentType)&&y(d.a)&&(e.contentType=d.a);return new W(this,this.b,this.a,je(),new O(d.data,!0),e)}; -k.delete=function(){T("delete",[],arguments);Ue(this,"delete");var a=this;return ge(this.b).then(function(b){var c=ye(a.b,a.a);return R(a.b,c,b).a()})};k.ga=function(){T("getMetadata",[],arguments);Ue(this,"getMetadata");var a=this;return ge(this.b).then(function(b){var c=xe(a.b,a.a,je());return R(a.b,c,b).a()})}; -k.ta=function(a){T("updateMetadata",[new U(me,void 0)],arguments);Ue(this,"updateMetadata");var b=this;return ge(this.b).then(function(c){var d=b.b,e=b.a,f=a,g=je(),h=Ra(e),h=la+"/v0"+h,f=le(f,g),d=new x(h,"PATCH",ue(d,g),d.c);d.headers={"Content-Type":"application/json; charset=utf-8"};d.body=f;d.a=we(e);return R(b.b,d,c).a()})}; -k.qa=function(){T("getDownloadURL",[],arguments);Ue(this,"getDownloadURL");return this.ga().then(function(a){a=a.downloadURLs[0];if(y(a))return a;throw new w("no-download-url","The given file does not have any download URLs.");})};var Ue=function(a,b){if(""===a.a.path)throw new w("invalid-root-operation","The operation '"+b+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').");};var Y=function(a){this.a=new fe(a,function(a,c){return new X(a,c)},Yd,this);this.b=a;this.c=new Ve(this)};k=Y.prototype;k.ua=function(a){T("ref",[oe(function(a){if(/^[A-Za-z]+:\/\//.test(a))throw"Expected child path but got a URL, use refFromURL instead.";},!0)],arguments);var b=new X(this.a);return n(a)?b.fa(a):b}; -k.va=function(a){T("refFromURL",[oe(function(a){if(!/^[A-Za-z]+:\/\//.test(a))throw"Expected full URL but got a child path, use ref instead.";try{Sa(a)}catch(c){throw"Expected valid full URL but got an invalid one.";}},!1)],arguments);return new X(this.a,a)};k.Aa=function(){return this.a.b};k.xa=function(a){T("setMaxUploadRetryTime",[qe()],arguments);this.a.b=a};k.za=function(){return this.a.c};k.wa=function(a){T("setMaxOperationRetryTime",[qe()],arguments);this.a.c=a};k.la=function(){return this.b}; -k.ka=function(){return this.c};var Ve=function(a){this.a=a};Ve.prototype.delete=function(){var a=this.a.a;a.f=!0;a.a=null;ee(a.h)};var Z=function(a,b,c){Object.defineProperty(a,b,{get:c})};X.prototype.toString=X.prototype.toString;X.prototype.child=X.prototype.fa;X.prototype.put=X.prototype.ra;X.prototype.putString=X.prototype.sa;X.prototype["delete"]=X.prototype.delete;X.prototype.getMetadata=X.prototype.ga;X.prototype.updateMetadata=X.prototype.ta;X.prototype.getDownloadURL=X.prototype.qa;Z(X.prototype,"parent",X.prototype.Da);Z(X.prototype,"root",X.prototype.Fa);Z(X.prototype,"bucket",X.prototype.ma); -Z(X.prototype,"fullPath",X.prototype.ya);Z(X.prototype,"name",X.prototype.Ca);Z(X.prototype,"storage",X.prototype.Ha);Y.prototype.ref=Y.prototype.ua;Y.prototype.refFromURL=Y.prototype.va;Z(Y.prototype,"maxOperationRetryTime",Y.prototype.za);Y.prototype.setMaxOperationRetryTime=Y.prototype.wa;Z(Y.prototype,"maxUploadRetryTime",Y.prototype.Aa);Y.prototype.setMaxUploadRetryTime=Y.prototype.xa;Z(Y.prototype,"app",Y.prototype.la);Z(Y.prototype,"INTERNAL",Y.prototype.ka);Ve.prototype["delete"]=Ve.prototype.delete; -Y.prototype.capi_=function(a){la=a};W.prototype.on=W.prototype.O;W.prototype.resume=W.prototype.R;W.prototype.pause=W.prototype.P;W.prototype.cancel=W.prototype.cancel;Z(W.prototype,"snapshot",W.prototype.C);Z(A.prototype,"bytesTransferred",A.prototype.na);Z(A.prototype,"totalBytes",A.prototype.Ja);Z(A.prototype,"state",A.prototype.Ga);Z(A.prototype,"metadata",A.prototype.Ba);Z(A.prototype,"downloadURL",A.prototype.pa);Z(A.prototype,"task",A.prototype.Ia);Z(A.prototype,"ref",A.prototype.Ea); -ua.STATE_CHANGED="state_changed";va.RUNNING="running";va.PAUSED="paused";va.SUCCESS="success";va.CANCELED="canceled";va.ERROR="error";Ua.RAW="raw";Ua.BASE64="base64";Ua.BASE64URL="base64url";Ua.DATA_URL="data_url";G.prototype["catch"]=G.prototype.l;G.prototype.then=G.prototype.then; -(function(){function a(a){return new Y(a)}var b={TaskState:va,TaskEvent:ua,StringFormat:Ua,Storage:Y,Reference:X};if("undefined"!==typeof firebase)firebase.INTERNAL.registerService("storage",a,b);else throw Error("Cannot install Firebase Storage - be sure to load firebase-app.js first.");})();})(); +var vd=function(a,b){this.oc=[];this.Id=a;this.sd=b||null;this.rb=this.Wa=!1;this.na=void 0;this.fd=this.ld=this.Cc=!1;this.vc=0;this.s=null;this.Dc=0};vd.prototype.cancel=function(a){if(this.Wa)this.na instanceof vd&&this.na.cancel();else{if(this.s){var b=this.s;delete this.s;a?b.cancel(a):(b.Dc--,0>=b.Dc&&b.cancel())}this.Id?this.Id.call(this.sd,this):this.fd=!0;this.Wa||wd(this,new xd)}};vd.prototype.qd=function(a,b){this.Cc=!1;yd(this,a,b)}; +var yd=function(a,b,c){a.Wa=!0;a.na=c;a.rb=!b;zd(a)},Bd=function(a){if(a.Wa){if(!a.fd)throw new Ad;a.fd=!1}};vd.prototype.callback=function(a){Bd(this);Cd(a);yd(this,!0,a)}; +var wd=function(a,b){Bd(a);Cd(b);yd(a,!1,b)},Cd=function(a){w(!(a instanceof vd),"An execution sequence may not be initiated with a blocking Deferred.")},Gd=function(a){var b=Dd("https://apis.google.com/js/client.js?onload="+Ed);Fd(b,null,a,void 0)},Fd=function(a,b,c,d){w(!a.ld,"Blocking Deferreds can not be re-used");a.oc.push([b,c,d]);a.Wa&&zd(a)};vd.prototype.then=function(a,b,c){var d,e,f=new B(function(a,b){d=a;e=b});Fd(this,d,function(a){a instanceof xd?f.cancel():e(a)});return f.then(a,b,c)}; +ad(vd); +var Hd=function(a){return Fa(a.oc,function(a){return q(a[1])})},zd=function(a){if(a.vc&&a.Wa&&Hd(a)){var b=a.vc,c=Id[b];c&&(l.clearTimeout(c.sb),delete Id[b]);a.vc=0}a.s&&(a.s.Dc--,delete a.s);for(var b=a.na,d=c=!1;a.oc.length&&!a.Cc;){var e=a.oc.shift(),f=e[0],g=e[1],e=e[2];if(f=a.rb?g:f)try{var k=f.call(e||a.sd,b);void 0!==k&&(a.rb=a.rb&&(k==b||k instanceof Error),a.na=b=k);if(bd(b)||"function"===typeof l.Promise&&b instanceof l.Promise)d=!0,a.Cc=!0}catch(n){b=n,a.rb=!0,Hd(a)||(c=!0)}}a.na=b;d&& +(k=r(a.qd,a,!0),d=r(a.qd,a,!1),b instanceof vd?(Fd(b,k,d),b.ld=!0):b.then(k,d));c&&(b=new Jd(b),Id[b.sb]=b,a.vc=b.sb)},Ad=function(){u.call(this)};t(Ad,u);Ad.prototype.message="Deferred has already fired";Ad.prototype.name="AlreadyCalledError";var xd=function(){u.call(this)};t(xd,u);xd.prototype.message="Deferred was canceled";xd.prototype.name="CanceledError";var Jd=function(a){this.sb=l.setTimeout(r(this.lf,this),0);this.O=a}; +Jd.prototype.lf=function(){w(Id[this.sb],"Cannot throw an error that is not scheduled.");delete Id[this.sb];throw this.O;};var Id={};var Dd=function(a){var b=new oc;b.kc=a;return Kd(b)},Kd=function(a){var b={},c=b.document||document,d;a instanceof oc&&a.constructor===oc&&a.fe===nc?d=a.kc:(xa("expected object of type TrustedResourceUrl, got '"+a+"' of type "+m(a)),d="type_error:TrustedResourceUrl");var e=document.createElement("SCRIPT");a={Pd:e,Lb:void 0};var f=new vd(Ld,a),g=null,k=null!=b.timeout?b.timeout:5E3;0++d,"infinite loop")}c=this.he;d=a.type||a;if(p(a))a=new Jb(a,c);else if(a instanceof Jb)a.target=a.target||c;else{var e=a;a=new Jb(d,c);Va(a,e)}var e=!0,f;if(b)for(var g=b.length-1;!a.bb&&0<=g;g--)f=a.currentTarget=b[g],e=Rd(f,d,!0,a)&&e;a.bb||(f=a.currentTarget=c,e=Rd(f,d,!0,a)&&e,a.bb||(e=Rd(f,d,!1,a)&&e));if(b)for(g=0;!a.bb&&g2*this.o&&Vd(this),!0):!1};var Vd=function(a){if(a.o!=a.w.length){for(var b=0,c=0;b=d.w.length)throw Sd;var e=d.w[b++];return a?e:d.ba[e]};return e};var Wd=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};var Xd=function(a){if(a.X&&"function"==typeof a.X)return a.X();if(p(a))return a.split("");if(ea(a)){for(var b=[],c=a.length,d=0;d=ge(this).value)for(q(b)&&(b=b()),a=new $d(a,String(b),this.Re),c&&(a.ud=c),c="log:"+a.Qe,l.console&&(l.console.timeStamp?l.console.timeStamp(c):l.console.markTimeline&&l.console.markTimeline(c)),l.msWriteProfilerMark&&l.msWriteProfilerMark(c),c=this;c;){var d=c,e=a;if(d.Ad)for(var f=0;b=d.Ad[f];f++)b(e);c=c.getParent()}}; +var he={},ie=null,je=function(a){ie||(ie=new be(""),he[""]=ie,ie.Sd(ee));var b;if(!(b=he[a])){b=new be(a);var c=a.lastIndexOf("."),d=a.substr(c+1),c=je(a.substr(0,c));c.Ec||(c.Ec={});c.Ec[d]=b;b.s=c;he[a]=b}return b};var E=function(a,b){a&&a.log(fe,b,void 0)};var ke=function(a,b,c){if(q(a))c&&(a=r(a,c));else if(a&&"function"==typeof a.handleEvent)a=r(a.handleEvent,a);else throw Error("Invalid listener argument");return 2147483647b)throw Error("Bad port number "+b);a.ab=b}else a.ab=null},Ge=function(a,b,c){G(a);a.sa=c?Ie(b,!0):b},He=function(a,b,c){G(a);b instanceof H?(a.V=b,a.V.ed(a.R)):(c||(b=Je(b,Oe)),a.V=new H(b,0,a.R))},I=function(a,b,c){G(a);a.V.set(b,c)},Pe=function(a,b){return a.V.get(b)},Qe=function(a,b){G(a);a.V.remove(b)},G=function(a){if(a.Ke)throw Error("Tried to modify a read-only Uri"); +};Ce.prototype.ed=function(a){this.R=a;this.V&&this.V.ed(a);return this}; +var Re=function(a){return a instanceof Ce?a.clone():new Ce(a,void 0)},Se=function(a,b){var c=new Ce(null,void 0);De(c,"https");a&&Ee(c,a);b&&Ge(c,b);return c},Ie=function(a,b){return a?b?decodeURI(a.replace(/%25/g,"%2525")):decodeURIComponent(a):""},Je=function(a,b,c){return p(a)?(a=encodeURI(a).replace(b,Te),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null},Te=function(a){a=a.charCodeAt(0);return"%"+(a>>4&15).toString(16)+(a&15).toString(16)},Ke=/[#\/\?@]/g,Me=/[\#\?:]/g,Le=/[\#\?]/g,Oe=/[\#\?@]/g, +Ne=/#/g,H=function(a,b,c){this.o=this.l=null;this.N=a||null;this.R=!!c},Ue=function(a){a.l||(a.l=new Ud,a.o=0,a.N&&ne(a.N,function(b,c){a.add(decodeURIComponent(b.replace(/\+/g," ")),c)}))},We=function(a){var b=Yd(a);if("undefined"==typeof b)throw Error("Keys are undefined");var c=new H(null,0,void 0);a=Xd(a);for(var d=0;da?!1:!y||!nb||9")&&(d=d.replace(pa,">")),-1!=d.indexOf('"')&&(d=d.replace(qa,""")),-1!=d.indexOf("'")&&(d=d.replace(ra,"'")),-1!=d.indexOf("\x00")&&(d=d.replace(sa,"�"))),d='',za(lc(a),"must provide justification"),w(!/^[\s\xa0]*$/.test(lc(a)),"must provide non-empty justification"),g.document.write(Lc((new Kc).He(d))),g.document.close())):g=a.open(rc(b),c,g);if(g)try{g.focus()}catch(k){}return g}, +ff=function(a){return new B(function(b){var c=function(){le(2E3).then(function(){if(!a||a.closed)b();else return c()})};return c()})},gf=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,hf=function(){var a=null;return(new B(function(b){"complete"==l.document.readyState?b():(a=function(){b()},bc(window,"load",a))})).c(function(b){dc(window,"load",a);throw b;})},kf=function(){return jf(void 0)?hf().then(function(){return new B(function(a,b){var c=l.document,d=setTimeout(function(){b(Error("Cordova framework is not ready."))}, +1E3);c.addEventListener("deviceready",function(){clearTimeout(d);a()},!1)})}):D(Error("Cordova must run in an Android or iOS file scheme."))},jf=function(a){a=a||J();return!("file:"!==lf()||!a.toLowerCase().match(/iphone|ipad|ipod|android/))},mf=function(){var a=l.window;try{return!(!a||a==a.top)}catch(b){return!1}},K=function(){return firebase.INTERNAL.hasOwnProperty("reactNative")?"ReactNative":firebase.INTERNAL.hasOwnProperty("node")?"Node":"Browser"},nf=function(){var a=K();return"ReactNative"=== +a||"Node"===a},af=function(a){var b=a.toLowerCase();if(v(b,"opera/")||v(b,"opr/")||v(b,"opios/"))return"Opera";if(v(b,"iemobile"))return"IEMobile";if(v(b,"msie")||v(b,"trident/"))return"IE";if(v(b,"edge/"))return"Edge";if(v(b,"firefox/"))return"Firefox";if(v(b,"silk/"))return"Silk";if(v(b,"blackberry"))return"Blackberry";if(v(b,"webos"))return"Webos";if(!v(b,"safari/")||v(b,"chrome/")||v(b,"crios/")||v(b,"android"))if(!v(b,"chrome/")&&!v(b,"crios/")||v(b,"edge/")){if(v(b,"android"))return"Android"; +if((a=a.match(/([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/))&&2==a.length)return a[1]}else return"Chrome";else return"Safari";return"Other"},of=function(a){var b=K();return("Browser"===b?af(J()):b)+"/JsCore/"+a},J=function(){return l.navigator&&l.navigator.userAgent||""},L=function(a,b){a=a.split(".");b=b||l;for(var c=0;cb)throw Error("Short delay should be less than long delay!"); +this.hf=a;this.Pe=b;a=c||J();d=d||K();this.Je=cf(a)||"ReactNative"===d};zf.prototype.get=function(){return this.Je?this.Pe:this.hf};var Af;try{var Bf={};Object.defineProperty(Bf,"abcd",{configurable:!0,enumerable:!0,value:1});Object.defineProperty(Bf,"abcd",{configurable:!0,enumerable:!0,value:2});Af=2==Bf.abcd}catch(a){Af=!1} +var M=function(a,b,c){Af?Object.defineProperty(a,b,{configurable:!0,enumerable:!0,value:c}):a[b]=c},Cf=function(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&M(a,c,b[c])},Df=function(a){var b={},c;for(c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},Ef=function(a,b){if(!b||!b.length)return!0;if(!a)return!1;for(var c=0;c Auth section -> Sign in method tab.",a);N.call(this,b,c)};t(Nf,N);var Of=function(a){this.Oe=a.sub;ka();this.Tb=a.email||null};var Pf=function(a,b){if(b.idToken||b.accessToken)b.idToken&&M(this,"idToken",b.idToken),b.accessToken&&M(this,"accessToken",b.accessToken);else if(b.oauthToken&&b.oauthTokenSecret)M(this,"accessToken",b.oauthToken),M(this,"secret",b.oauthTokenSecret);else throw new N("internal-error","failed to construct a credential");M(this,"provider",a)};Pf.prototype.Vb=function(a){return Qf(a,Rf(this))};Pf.prototype.Hd=function(a,b){var c=Rf(this);c.idToken=b;return Sf(a,c)}; +var Rf=function(a){var b={};a.idToken&&(b.id_token=a.idToken);a.accessToken&&(b.access_token=a.accessToken);a.secret&&(b.oauth_token_secret=a.secret);b.providerId=a.provider;return{postBody:We(b).toString(),requestUri:"http://localhost"}};Pf.prototype.C=function(){var a={provider:this.provider};this.idToken&&(a.oauthIdToken=this.idToken);this.accessToken&&(a.oauthAccessToken=this.accessToken);this.secret&&(a.oauthTokenSecret=this.secret);return a}; +var Tf=function(a,b){this.$e=b||[];Cf(this,{providerId:a,isOAuthProvider:!0});this.rd={}};Tf.prototype.setCustomParameters=function(a){this.rd=Ta(a);return this};var P=function(a){Tf.call(this,a,Hf);this.cd=[]};t(P,Tf);P.prototype.addScope=function(a){Ia(this.cd,a)||this.cd.push(a);return this};P.prototype.yd=function(){return Na(this.cd)}; +P.prototype.credential=function(a,b){if(!a&&!b)throw new N("argument-error","credential failed: must provide the ID token and/or the access token.");return new Pf(this.providerId,{idToken:a||null,accessToken:b||null})};var Uf=function(){P.call(this,"facebook.com")};t(Uf,P);M(Uf,"PROVIDER_ID","facebook.com");var Vf=function(a){if(!a)throw new N("argument-error","credential failed: expected 1 argument (the OAuth access token).");return(new Uf).credential(null,a)},Wf=function(){P.call(this,"github.com")}; +t(Wf,P);M(Wf,"PROVIDER_ID","github.com");var Xf=function(a){if(!a)throw new N("argument-error","credential failed: expected 1 argument (the OAuth access token).");return(new Wf).credential(null,a)},Yf=function(){P.call(this,"google.com");this.addScope("profile")};t(Yf,P);M(Yf,"PROVIDER_ID","google.com");var Zf=function(a,b){return(new Yf).credential(a,b)},$f=function(){Tf.call(this,"twitter.com",Gf)};t($f,Tf);M($f,"PROVIDER_ID","twitter.com"); +var ag=function(a,b){if(!a||!b)throw new N("argument-error","credential failed: expected 2 arguments (the OAuth access token and secret).");return new Pf("twitter.com",{oauthToken:a,oauthTokenSecret:b})},bg=function(a,b){this.Tb=a;this.Vc=b;M(this,"provider","password")};bg.prototype.Vb=function(a){return Q(a,cg,{email:this.Tb,password:this.Vc})};bg.prototype.Hd=function(a,b){return Q(a,dg,{idToken:b,email:this.Tb,password:this.Vc})};bg.prototype.C=function(){return{email:this.Tb,password:this.Vc}}; +var eg=function(){Cf(this,{providerId:"password",isOAuthProvider:!1})};Cf(eg,{PROVIDER_ID:"password"}); +var fg=function(a){var b=a&&a.providerId;if(!b||"password"===b)return null;var c=a&&a.oauthAccessToken,d=a&&a.oauthTokenSecret;a=a&&a.oauthIdToken;try{switch(b){case "google.com":return Zf(a,c);case "facebook.com":return Vf(c);case "github.com":return Xf(c);case "twitter.com":return ag(c,d);default:return(new P(b)).credential(a,c)}}catch(e){return null}},gg=function(a){if(!a.isOAuthProvider)throw new N("invalid-oauth-provider");};var hg=function(a,b,c,d){N.call(this,a,d);M(this,"email",b);M(this,"credential",c)};t(hg,N);hg.prototype.C=function(){var a={code:this.code,message:this.message,email:this.email},b=this.credential&&this.credential.C();b&&(Va(a,b),a.providerId=b.provider,delete a.provider);return a};hg.prototype.toJSON=function(){return this.C()};var ig=function(a){if(a.code){var b=a.code||"";0==b.indexOf("auth/")&&(b=b.substring(5));return a.email?new hg(b,a.email,fg(a),a.message):new N(b,a.message||void 0)}return null};var jg=function(a){this.wf=a};t(jg,Bc);jg.prototype.Sb=function(){return new this.wf};jg.prototype.Oc=function(){return{}}; +var R=function(a,b,c){var d;d="Node"==K();d=l.XMLHttpRequest||d&&firebase.INTERNAL.node&&firebase.INTERNAL.node.XMLHttpRequest;if(!d)throw new N("internal-error","The XMLHttpRequest compatibility library was not found.");this.j=a;a=b||{};this.df=a.secureTokenEndpoint||"https://securetoken.googleapis.com/v1/token";this.ef=a.secureTokenTimeout||kg;this.Qd=Ta(a.secureTokenHeaders||lg);this.te=a.firebaseEndpoint||"https://www.googleapis.com/identitytoolkit/v3/relyingparty/";this.ue=a.firebaseTimeout|| +mg;this.wd=Ta(a.firebaseHeaders||ng);c&&(this.wd["X-Client-Version"]=c,this.Qd["X-Client-Version"]=c);this.ke=new Gc;this.vf=new jg(d)},og,kg=new zf(3E4,6E4),lg={"Content-Type":"application/x-www-form-urlencoded"},mg=new zf(3E4,6E4),ng={"Content-Type":"application/json"},qg=function(a,b,c,d,e,f,g){yf()?(bf()?a=r(a.gf,a):(og||(og=new B(function(a,b){pg(a,b)})),a=r(a.ff,a)),a(b,c,d,e,f,g)):c&&c(null)}; +R.prototype.gf=function(a,b,c,d,e,f){var g="Node"==K(),k=nf()?g?new F(this.vf):new F:new F(this.ke),n;f&&(k.kb=Math.max(0,f),n=setTimeout(function(){k.dispatchEvent("timeout")},f));k.listen("complete",function(){n&&clearTimeout(n);var a=null;try{a=JSON.parse(Be(this))||null}catch(Wa){a=null}b&&b(a)});cc(k,"ready",function(){n&&clearTimeout(n);this.Aa||(this.Aa=!0,this.Ta())});cc(k,"timeout",function(){n&&clearTimeout(n);this.Aa||(this.Aa=!0,this.Ta());b&&b(null)});k.send(a,c,d,e)}; +var Ed="__fcb"+Math.floor(1E6*Math.random()).toString(),pg=function(a,b){((window.gapi||{}).client||{}).request?a():(l[Ed]=function(){((window.gapi||{}).client||{}).request?a():b(Error("CORS_UNSUPPORTED"))},Gd(function(){b(Error("CORS_UNSUPPORTED"))}))}; +R.prototype.ff=function(a,b,c,d,e){var f=this;og.then(function(){window.gapi.client.setApiKey(f.j);var g=window.gapi.auth.getToken();window.gapi.auth.setToken(null);window.gapi.client.request({path:a,method:c,body:d,headers:e,authType:"none",callback:function(a){window.gapi.auth.setToken(g);b&&b(a)}})}).c(function(a){b&&b({error:{message:a&&a.message||"CORS_UNSUPPORTED"}})})}; +var sg=function(a,b){return new B(function(c,d){"refresh_token"==b.grant_type&&b.refresh_token||"authorization_code"==b.grant_type&&b.code?qg(a,a.df+"?key="+encodeURIComponent(a.j),function(a){a?a.error?d(rg(a)):a.access_token&&a.refresh_token?c(a):d(new N("internal-error")):d(new N("network-request-failed"))},"POST",We(b).toString(),a.Qd,a.ef.get()):d(new N("internal-error"))})},tg=function(a,b,c,d,e){var f=Re(a.te+b);I(f,"key",a.j);e&&I(f,"cb",ka().toString());var g="GET"==c;if(g)for(var k in d)d.hasOwnProperty(k)&& +I(f,k,d[k]);return new B(function(b,e){qg(a,f.toString(),function(a){a?a.error?e(rg(a)):b(a):e(new N("network-request-failed"))},c,g?void 0:xc(uf(d)),a.wd,a.ue.get())})},ug=function(a){if(!ic.test(a.email))throw new N("invalid-email");},vg=function(a){"email"in a&&ug(a)},xg=function(a,b){return Q(a,wg,{identifier:b,continueUri:pf()?Ye():"http://localhost"}).then(function(a){return a.allProviders||[]})},zg=function(a){return Q(a,yg,{}).then(function(a){return a.authorizedDomains||[]})},Ag=function(a){if(!a.idToken)throw new N("internal-error"); +};R.prototype.signInAnonymously=function(){return Q(this,Bg,{})};R.prototype.updateEmail=function(a,b){return Q(this,Cg,{idToken:a,email:b})};R.prototype.updatePassword=function(a,b){return Q(this,dg,{idToken:a,password:b})};var Dg={displayName:"DISPLAY_NAME",photoUrl:"PHOTO_URL"};R.prototype.updateProfile=function(a,b){var c={idToken:a},d=[];Oa(Dg,function(a,f){var e=b[f];null===e?d.push(a):f in b&&(c[f]=e)});d.length&&(c.deleteAttribute=d);return Q(this,Cg,c)}; +R.prototype.sendPasswordResetEmail=function(a){return Q(this,Eg,{requestType:"PASSWORD_RESET",email:a})};R.prototype.sendEmailVerification=function(a){return Q(this,Fg,{requestType:"VERIFY_EMAIL",idToken:a})}; +var Hg=function(a,b,c){return Q(a,Gg,{idToken:b,deleteProvider:c})},Ig=function(a){if(!a.requestUri||!a.sessionId&&!a.postBody)throw new N("internal-error");},Jg=function(a){var b=null;a.needConfirmation?(a.code="account-exists-with-different-credential",b=ig(a)):"FEDERATED_USER_ID_ALREADY_LINKED"==a.errorMessage?(a.code="credential-already-in-use",b=ig(a)):"EMAIL_EXISTS"==a.errorMessage&&(a.code="email-already-in-use",b=ig(a));if(b)throw b;if(!a.idToken)throw new N("internal-error");},Qf=function(a, +b){b.returnIdpCredential=!0;return Q(a,Kg,b)},Sf=function(a,b){b.returnIdpCredential=!0;return Q(a,Lg,b)},Mg=function(a){if(!a.oobCode)throw new N("invalid-action-code");};R.prototype.confirmPasswordReset=function(a,b){return Q(this,Ng,{oobCode:a,newPassword:b})};R.prototype.checkActionCode=function(a){return Q(this,Og,{oobCode:a})};R.prototype.applyActionCode=function(a){return Q(this,Pg,{oobCode:a})}; +var Pg={endpoint:"setAccountInfo",K:Mg,jb:"email"},Og={endpoint:"resetPassword",K:Mg,va:function(a){if(!a.email||!a.requestType)throw new N("internal-error");}},Qg={endpoint:"signupNewUser",K:function(a){ug(a);if(!a.password)throw new N("weak-password");},va:Ag,wa:!0},wg={endpoint:"createAuthUri"},Rg={endpoint:"deleteAccount",ib:["idToken"]},Gg={endpoint:"setAccountInfo",ib:["idToken","deleteProvider"],K:function(a){if(!da(a.deleteProvider))throw new N("internal-error");}},Sg={endpoint:"getAccountInfo"}, +Fg={endpoint:"getOobConfirmationCode",ib:["idToken","requestType"],K:function(a){if("VERIFY_EMAIL"!=a.requestType)throw new N("internal-error");},jb:"email"},Eg={endpoint:"getOobConfirmationCode",ib:["requestType"],K:function(a){if("PASSWORD_RESET"!=a.requestType)throw new N("internal-error");ug(a)},jb:"email"},yg={je:!0,endpoint:"getProjectConfig",De:"GET"},Ng={endpoint:"resetPassword",K:Mg,jb:"email"},Cg={endpoint:"setAccountInfo",ib:["idToken"],K:vg,wa:!0},dg={endpoint:"setAccountInfo",ib:["idToken"], +K:function(a){vg(a);if(!a.password)throw new N("weak-password");},va:Ag,wa:!0},Bg={endpoint:"signupNewUser",va:Ag,wa:!0},Kg={endpoint:"verifyAssertion",K:Ig,va:Jg,wa:!0},Lg={endpoint:"verifyAssertion",K:function(a){Ig(a);if(!a.idToken)throw new N("internal-error");},va:Jg,wa:!0},Tg={endpoint:"verifyCustomToken",K:function(a){if(!a.token)throw new N("invalid-custom-token");},va:Ag,wa:!0},cg={endpoint:"verifyPassword",K:function(a){ug(a);if(!a.password)throw new N("wrong-password");},va:Ag,wa:!0},Q= +function(a,b,c){if(!Ef(c,b.ib))return D(new N("internal-error"));var d=b.De||"POST",e;return C(c).then(b.K).then(function(){b.wa&&(c.returnSecureToken=!0);return tg(a,b.endpoint,d,c,b.je||!1)}).then(function(a){return e=a}).then(b.va).then(function(){if(!b.jb)return e;if(!(b.jb in e))throw new N("internal-error");return e[b.jb]})},rg=function(a){var b,c;c=(a.error&&a.error.errors&&a.error.errors[0]||{}).reason||"";var d={keyInvalid:"invalid-api-key",ipRefererBlocked:"app-not-authorized"};if(c=d[c]? +new N(d[c]):null)return c;c=a.error&&a.error.message||"";d={INVALID_CUSTOM_TOKEN:"invalid-custom-token",CREDENTIAL_MISMATCH:"custom-token-mismatch",MISSING_CUSTOM_TOKEN:"internal-error",INVALID_IDENTIFIER:"invalid-email",MISSING_CONTINUE_URI:"internal-error",INVALID_EMAIL:"invalid-email",INVALID_PASSWORD:"wrong-password",USER_DISABLED:"user-disabled",MISSING_PASSWORD:"internal-error",EMAIL_EXISTS:"email-already-in-use",PASSWORD_LOGIN_DISABLED:"operation-not-allowed",INVALID_IDP_RESPONSE:"invalid-credential", +FEDERATED_USER_ID_ALREADY_LINKED:"credential-already-in-use",INVALID_MESSAGE_PAYLOAD:"invalid-message-payload",INVALID_RECIPIENT_EMAIL:"invalid-recipient-email",INVALID_SENDER:"invalid-sender",EMAIL_NOT_FOUND:"user-not-found",EXPIRED_OOB_CODE:"expired-action-code",INVALID_OOB_CODE:"invalid-action-code",MISSING_OOB_CODE:"internal-error",CREDENTIAL_TOO_OLD_LOGIN_AGAIN:"requires-recent-login",INVALID_ID_TOKEN:"invalid-user-token",TOKEN_EXPIRED:"user-token-expired",USER_NOT_FOUND:"user-token-expired", +CORS_UNSUPPORTED:"cors-unsupported",DYNAMIC_LINK_NOT_ACTIVATED:"dynamic-link-not-activated",TOO_MANY_ATTEMPTS_TRY_LATER:"too-many-requests",WEAK_PASSWORD:"weak-password",OPERATION_NOT_ALLOWED:"operation-not-allowed",USER_CANCELLED:"user-cancelled"};b=(b=c.match(/^[^\s]+\s*:\s*(.*)$/))&&1k||k>=Eh.length)throw new N("internal-error","Argument validator received an unsupported number of arguments.");e=Eh[k]+" argument "+(e.name?'"'+e.name+'" ':"")+"must be "+e.fa+".";break a}e=null}}if(e)throw new N("argument-error",d+" failed: "+e);return b.apply(this,a)};for(var e in b)a[e]=b[e];for(e in b.prototype)a.prototype[e]= +b.prototype[e];return a},Mh=function(a){a=a.split(".");return a[a.length-1]};var Nh=function(a,b,c,d){this.Se=a;this.Rd=b;this.bf=c;this.Hb=d;this.S={};Ch||(Ch=new Bh);a=Ch;try{var e;Xe()?(sh||(sh=new rh("firebaseLocalStorageDb","firebaseLocalStorage","fbase_key","value",1)),e=sh):e=new a.td.I;this.Ha=e}catch(f){this.Ha=new lh,this.Hb=!0}try{this.sc=new a.td.kd}catch(f){this.sc=new lh}this.hd=r(this.Vd,this);this.Y={}},Oh,Ph=function(){Oh||(Oh=new Nh("firebase",":",!wf(J())&&mf()?!0:!1,sf()));return Oh};h=Nh.prototype; +h.P=function(a,b){return this.Se+this.Rd+a.name+(b?this.Rd+b:"")};h.get=function(a,b){return(a.I?this.Ha:this.sc).get(this.P(a,b))};h.remove=function(a,b){b=this.P(a,b);a.I&&!this.Hb&&(this.Y[b]=null);return(a.I?this.Ha:this.sc).remove(b)};h.set=function(a,b,c){var d=this.P(a,c),e=this,f=a.I?this.Ha:this.sc;return f.set(d,b).then(function(){return f.get(d)}).then(function(b){a.I&&!this.Hb&&(e.Y[d]=b)})}; +h.addListener=function(a,b,c){a=this.P(a,b);this.Hb||(this.Y[a]=l.localStorage.getItem(a));Ra(this.S)&&this.gd();this.S[a]||(this.S[a]=[]);this.S[a].push(c)};h.removeListener=function(a,b,c){a=this.P(a,b);this.S[a]&&(La(this.S[a],function(a){return a==c}),0==this.S[a].length&&delete this.S[a]);Ra(this.S)&&this.qc()};h.gd=function(){this.Ha.Pa(this.hd);this.Hb||Xe()||Qh(this)}; +var Qh=function(a){Rh(a);a.Rc=setInterval(function(){for(var b in a.S){var c=l.localStorage.getItem(b),d=a.Y[b];c!=d&&(a.Y[b]=c,c=new Kb({type:"storage",key:b,target:window,oldValue:d,newValue:c,Xe:!0}),a.Vd(c))}},1E3)},Rh=function(a){a.Rc&&(clearInterval(a.Rc),a.Rc=null)};Nh.prototype.qc=function(){this.Ha.Ja(this.hd);Rh(this)}; +Nh.prototype.Vd=function(a){if(a&&a.xe){var b=a.Ua.key;"undefined"!==typeof a.Ua.Xe?this.Ha.Ja(this.hd):Rh(this);if(this.bf){var c=l.localStorage.getItem(b);a=a.Ua.newValue;a!=c&&(a?l.localStorage.setItem(b,a):a||l.localStorage.removeItem(b))}this.Y[b]=l.localStorage.getItem(b);this.nd(b)}else Ca(a,r(this.nd,this))};Nh.prototype.nd=function(a){this.S[a]&&Ca(this.S[a],function(a){a()})};var Sh=function(a,b){this.u=a;this.i=b||Ph()},Th={name:"authEvent",I:!0},Uh=function(a){return a.i.get(Th,a.u).then(function(a){return Mf(a)})};Sh.prototype.Oa=function(a){this.i.addListener(Th,this.u,a)};Sh.prototype.Gb=function(a){this.i.removeListener(Th,this.u,a)};var Vh=function(a){this.i=a||Ph()},Wh={name:"sessionId",I:!1};Vh.prototype.Wb=function(a){return this.i.get(Wh,a)};var Xh=function(a,b,c,d,e,f){this.v=a;this.j=b;this.B=c;this.za=d||null;this.Wd=b+":"+c;this.cf=new Vh;this.xd=new Sh(this.Wd);this.Nc=null;this.ia=[];this.Ie=e||500;this.Ze=f||2E3;this.tb=this.ic=null},Yh=function(a){return new N("invalid-cordova-configuration",a)}; +Xh.prototype.Da=function(){return this.Pc?this.Pc:this.Pc=kf().then(function(){if("function"!==typeof L("universalLinks.subscribe",l))throw Yh("cordova-universal-links-plugin is not installed");if("undefined"===typeof L("BuildInfo.packageName",l))throw Yh("cordova-plugin-buildinfo is not installed");if("function"!==typeof L("cordova.plugins.browsertab.openUrl",l))throw Yh("cordova-plugin-browsertab is not installed");if("function"!==typeof L("cordova.InAppBrowser.open",l))throw Yh("cordova-plugin-inappbrowser is not installed"); +},function(){throw new N("cordova-not-ready");})};var Zh=function(){for(var a=20,b=[];0this.Va-3E4?this.W?Bi(this,{grant_type:"refresh_token",refresh_token:this.W}):C(null):C({accessToken:this.xa,expirationTime:this.Va,refreshToken:this.W})};var Di=function(a,b,c,d,e){Cf(this,{uid:a,displayName:d||null,photoURL:e||null,email:c||null,providerId:b})},Ei=function(a,b){Jb.call(this,a);for(var c in b)this[c]=b[c]};t(Ei,Jb); +var W=function(a,b,c){this.Z=[];this.j=a.apiKey;this.B=a.appName;this.v=a.authDomain||null;a=firebase.SDK_VERSION?of(firebase.SDK_VERSION):null;this.g=new R(this.j,null,a);this.ea=new yi(this.g);Fi(this,b.idToken);Ai(this.ea,b);M(this,"refreshToken",this.ea.W);Gi(this,c||{});Pd.call(this);this.jc=!1;this.v&&rf()&&(this.m=ti(this.v,this.j,this.B));this.pc=[];this.Ac=C()};t(W,Pd); +W.prototype.ta=function(a,b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.Ac=this.Ac.then(function(){return a.apply(d,c)},function(){return a.apply(d,c)})}; +var Fi=function(a,b){a.Fd=b;M(a,"_lat",b)},Hi=function(a,b){La(a.pc,function(a){return a==b})},Ii=function(a){for(var b=[],c=0;ce;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.M[0];c=a.M[1];for(var h=a.M[2],k=a.M[3],l=a.M[4],m,e=0;80>e;e++)40>e?20>e?(f=k^c&(h^k),m=1518500249):(f=c^h^k,m=1859775393):60>e?(f=c&h|k&(c|h),m=2400959708):(f=c^h^k,m=3395469782),f=(b<< +5|b>>>27)+f+l+m+d[e]&4294967295,l=k,k=h,h=(c<<30|c>>>2)&4294967295,c=b,b=f;a.M[0]=a.M[0]+b&4294967295;a.M[1]=a.M[1]+c&4294967295;a.M[2]=a.M[2]+h&4294967295;a.M[3]=a.M[3]+k&4294967295;a.M[4]=a.M[4]+l&4294967295} +na.prototype.update=function(a,b){if(null!=a){n(b)||(b=a.length);for(var c=b-this.Wa,d=0,e=this.Vd,f=this.$b;db?e+="000":256>b?e+="00":4096>b&&(e+="0");return Ea[a]=e+b.toString(16)}),'"')};var t;a:{var Ga=aa.navigator;if(Ga){var Ha=Ga.userAgent;if(Ha){t=Ha;break a}}t=""};var v=Array.prototype,Ia=v.indexOf?function(a,b,c){return v.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(p(a))return p(b)&&1==b.length?a.indexOf(b,c):-1;for(;cc?null:p(a)?a.charAt(c):a[c]}function Pa(a,b,c){for(var d=a.length,e=p(a)?a.split(""):a,f=0;f=arguments.length?v.slice.call(a,b):v.slice.call(a,b,c)} +function Sa(a,b){a.sort(b||Ta)}function Ta(a,b){return a>b?1:aparseFloat(a))?String(b):a})();var Ya=null,Za=null,$a=null;function ab(a,b){if(!fa(a))throw Error("encodeByteArray takes an array as a parameter");bb();for(var c=b?Za:Ya,d=[],e=0;e>2,f=(f&3)<<4|k>>4,k=(k&15)<<2|m>>6,m=m&63;l||(m=64,h||(k=64));d.push(c[u],c[f],c[k],c[m])}return d.join("")} +function bb(){if(!Ya){Ya={};Za={};$a={};for(var a=0;65>a;a++)Ya[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a),Za[a]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.".charAt(a),$a[Za[a]]=a,62<=a&&($a["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a)]=a)}};function cb(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function w(a,b){if(Object.prototype.hasOwnProperty.call(a,b))return a[b]}function db(a,b){for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b(c,a[c])};function x(a,b,c,d){var e;dc&&(e=0===c?"none":"no more than "+c);if(e)throw Error(a+" failed: Was called with "+d+(1===d?" argument.":" arguments.")+" Expects "+e+".");}function y(a,b,c){var d="";switch(b){case 1:d=c?"first":"First";break;case 2:d=c?"second":"Second";break;case 3:d=c?"third":"Third";break;case 4:d=c?"fourth":"Fourth";break;default:throw Error("errorPrefix called with argumentNumber > 4. Need to update it?");}return a=a+" failed: "+(d+" argument ")} +function A(a,b,c,d){if((!d||n(c))&&!ha(c))throw Error(y(a,b,d)+"must be a valid function.");}function eb(a,b,c){if(n(c)&&(!ia(c)||null===c))throw Error(y(a,b,!0)+"must be a valid context object.");};function fb(a){var b=[];db(a,function(a,d){ea(d)?Ja(d,function(d){b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))}):b.push(encodeURIComponent(a)+"="+encodeURIComponent(d))});return b.length?"&"+b.join("&"):""};var gb=firebase.Promise;function hb(){var a=this;this.reject=this.resolve=null;this.ra=new gb(function(b,c){a.resolve=b;a.reject=c})}function ib(a,b){return function(c,d){c?a.reject(c):a.resolve(d);ha(b)&&(jb(a.ra),1===b.length?b(c):b(c,d))}}function jb(a){a.then(void 0,ba)};function kb(a,b){if(!a)throw lb(b);}function lb(a){return Error("Firebase Database ("+firebase.SDK_VERSION+") INTERNAL ASSERT FAILED: "+a)};function mb(a){for(var b=[],c=0,d=0;d=e&&(e-=55296,d++,kb(de?b[c++]=e:(2048>e?b[c++]=e>>6|192:(65536>e?b[c++]=e>>12|224:(b[c++]=e>>18|240,b[c++]=e>>12&63|128),b[c++]=e>>6&63|128),b[c++]=e&63|128)}return b}function nb(a){for(var b=0,c=0;cd?b++:2048>d?b+=2:55296<=d&&56319>=d?(b+=4,c++):b+=3}return b};function ob(a){return"undefined"!==typeof JSON&&n(JSON.parse)?JSON.parse(a):Aa(a)}function B(a){if("undefined"!==typeof JSON&&n(JSON.stringify))a=JSON.stringify(a);else{var b=[];Ca(new Ba,a,b);a=b.join("")}return a};function pb(a,b){this.committed=a;this.snapshot=b};function qb(){return"undefined"!==typeof window&&!!(window.cordova||window.phonegap||window.PhoneGap)&&/ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test("undefined"!==typeof navigator&&"string"===typeof navigator.userAgent?navigator.userAgent:"")};function rb(a){this.re=a;this.Bd=[];this.Qb=0;this.Xd=-1;this.Fb=null}function sb(a,b,c){a.Xd=b;a.Fb=c;a.Xd");return a};function Kb(){this.tc={}}function Lb(a,b,c){n(c)||(c=1);cb(a.tc,b)||(a.tc[b]=0);a.tc[b]+=c}Kb.prototype.get=function(){return za(this.tc)};function Mb(a){this.Ef=a;this.rd=null}Mb.prototype.get=function(){var a=this.Ef.get(),b=za(a);if(this.rd)for(var c in this.rd)b[c]-=this.rd[c];this.rd=a;return b};function Nb(){this.vb=[]}function Ob(a,b){for(var c=null,d=0;d>4);64!=k&&(d.push(h<<4&240|k>>2),64!=l&&d.push(k<<6&192|l))}if(8192>d.length)b=String.fromCharCode.apply(null,d);else{a="";for(c=0;ca.$b?a.update(a.zd,56-a.$b):a.update(a.zd,a.Wa-(a.$b-56));for(var d=a.Wa-1;56<=d;d--)a.Vd[d]=c&255,c/=256;oa(a,a.Vd);for(d=c=0;5>d;d++)for(var e=24;0<=e;e-=8)b[c]=a.M[d]>>e&255,++c;return ab(b)}function vc(a){for(var b="",c=0;c.firebaseio.com instead"); +c&&"undefined"!=c||Ac("Cannot parse Firebase url. Please use https://.firebaseio.com");d||"undefined"!==typeof window&&window.location&&window.location.protocol&&-1!==window.location.protocol.indexOf("https:")&&O("Insecure Firebase access from a secure page. Please use https in calls to new Firebase().");return{jc:new Hb(b,d,c,"ws"===e||"wss"===e),path:new L(f)}}function Cc(a){return ga(a)&&(a!=a||a==Number.POSITIVE_INFINITY||a==Number.NEGATIVE_INFINITY)} +function Dc(a){if("complete"===document.readyState)a();else{var b=!1,c=function(){document.body?b||(b=!0,a()):setTimeout(c,Math.floor(10))};document.addEventListener?(document.addEventListener("DOMContentLoaded",c,!1),window.addEventListener("load",c,!1)):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&c()}),window.attachEvent("onload",c))}} +function hc(a,b){if(a===b)return 0;if("[MIN_NAME]"===a||"[MAX_NAME]"===b)return-1;if("[MIN_NAME]"===b||"[MAX_NAME]"===a)return 1;var c=Ec(a),d=Ec(b);return null!==c?null!==d?0==c-d?a.length-b.length:c-d:-1:null!==d?1:aa?c.push(a.substring(d,a.length)):c.push(a.substring(d,d+b));return c}function Ic(a,b){if(ea(a))for(var c=0;ca,a=Math.abs(a),a>=Math.pow(2,-1022)?(d=Math.min(Math.floor(Math.log(a)/Math.LN2),1023),c=d+1023,d=Math.round(a*Math.pow(2,52-d)-Math.pow(2,52))):(c=0,d=Math.round(a/Math.pow(2,-1074))));e=[];for(a=52;a;--a)e.push(d%2?1:0),d=Math.floor(d/2);for(a=11;a;--a)e.push(c%2?1:0),c=Math.floor(c/2);e.push(b?1:0);e.reverse();b=e.join("");c="";for(a=0;64>a;a+=8)d=parseInt(b.substr(a,8),2).toString(16),1===d.length&& +(d="0"+d),c+=d;return c.toLowerCase()}var Kc=/^-?\d{1,10}$/;function Ec(a){return Kc.test(a)&&(a=Number(a),-2147483648<=a&&2147483647>=a)?a:null}function ub(a){try{a()}catch(b){setTimeout(function(){O("Exception was thrown by user callback.",b.stack||"");throw b;},Math.floor(0))}}function Lc(a,b,c){Object.defineProperty(a,b,{get:c})}function Mc(a,b){var c=setTimeout(a,b);"object"===typeof c&&c.unref&&c.unref();return c};function Nc(a){var b={},c={},d={},e="";try{var f=a.split("."),b=ob(tc(f[0])||""),c=ob(tc(f[1])||""),e=f[2],d=c.d||{};delete c.d}catch(h){}return{tg:b,Ie:c,data:d,mg:e}}function Oc(a){a=Nc(a);var b=a.Ie;return!!a.mg&&!!b&&"object"===typeof b&&b.hasOwnProperty("iat")}function Pc(a){a=Nc(a).Ie;return"object"===typeof a&&!0===w(a,"admin")};function Qc(a,b,c){this.f=yc("p:rest:");this.L=a;this.Gb=b;this.$c=c;this.$={}}function Rc(a,b){if(n(b))return"tag$"+b;H(Sc(a.m),"should have a tag if it's not a default query.");return a.path.toString()}g=Qc.prototype; +g.$e=function(a,b,c,d){var e=a.path.toString();this.f("Listen called for "+e+" "+a.ja());var f=Rc(a,c),h={};this.$[f]=h;a=Tc(a.m);var k=this;Uc(this,e+".json",a,function(a,b){var u=b;404===a&&(a=u=null);null===a&&k.Gb(e,u,!1,c);w(k.$,f)===h&&d(a?401==a?"permission_denied":"rest_error:"+a:"ok",null)})};g.uf=function(a,b){var c=Rc(a,b);delete this.$[c]};g.kf=function(){};g.pe=function(){};g.cf=function(){};g.xd=function(){};g.put=function(){};g.af=function(){};g.we=function(){}; +function Uc(a,b,c,d){c=c||{};c.format="export";a.$c.getToken(!1).then(function(e){(e=e&&e.accessToken)&&(c.auth=e);var f=(a.L.Sc?"https://":"http://")+a.L.host+b+"?"+fb(c);a.f("Sending REST request for "+f);var h=new XMLHttpRequest;h.onreadystatechange=function(){if(d&&4===h.readyState){a.f("REST Response for "+f+" received. status:",h.status,"response:",h.responseText);var b=null;if(200<=h.status&&300>h.status){try{b=ob(h.responseText)}catch(c){O("Failed to parse JSON response for "+f+": "+h.responseText)}d(null, +b)}else 401!==h.status&&404!==h.status&&O("Got unsuccessful REST response for "+f+" Status: "+h.status),d(h.status);d=null}};h.open("GET",f,!0);h.send()})};function Vc(a,b,c){this.type=Wc;this.source=a;this.path=b;this.children=c}Vc.prototype.Mc=function(a){if(this.path.e())return a=this.children.subtree(new L(a)),a.e()?null:a.value?new Ab(this.source,C,a.value):new Vc(this.source,C,a);H(J(this.path)===a,"Can't get a merge for a child not on the path of the operation");return new Vc(this.source,D(this.path),this.children)};Vc.prototype.toString=function(){return"Operation("+this.path+": "+this.source.toString()+" merge: "+this.children.toString()+")"};function Xc(a,b){this.rf={};this.Vc=new Mb(a);this.va=b;var c=1E4+2E4*Math.random();Mc(q(this.lf,this),Math.floor(c))}Xc.prototype.lf=function(){var a=this.Vc.get(),b={},c=!1,d;for(d in a)0=a.length){var b=Number(a);if(!isNaN(b)){e.De=b;e.frames=[];a=null;break a}}e.De=1;e.frames=[]}null!==a&&fd(e,a)}};this.Ia.onerror=function(a){e.f("WebSocket error. Closing connection.");(a=a.message||a.data)&&e.f(a);e.bb()}};cd.prototype.start=function(){}; +cd.isAvailable=function(){var a=!1;if("undefined"!==typeof navigator&&navigator.userAgent){var b=navigator.userAgent.match(/Android ([0-9]{0,}\.[0-9]{0,})/);b&&1parseFloat(b[1])&&(a=!0)}return!a&&null!==bd&&!dd};cd.responsesRequiredToBeHealthy=2;cd.healthyTimeout=3E4;g=cd.prototype;g.sd=function(){yb.remove("previous_websocket_failure")};function fd(a,b){a.frames.push(b);if(a.frames.length==a.De){var c=a.frames.join("");a.frames=null;c=ob(c);a.Xf(c)}} +g.send=function(a){ed(this);a=B(a);this.qb+=a.length;Lb(this.Va,"bytes_sent",a.length);a=Hc(a,16384);1=this.g.compare(this.Uc,a)&&0>=this.g.compare(a,this.vc)};g.F=function(a,b,c,d,e,f){this.matches(new K(b,c))||(c=G);return this.fe.F(a,b,c,d,e,f)}; +g.ya=function(a,b,c){b.J()&&(b=G);var d=b.nb(this.g),d=d.fa(G),e=this;b.O(N,function(a,b){e.matches(new K(a,b))||(d=d.T(a,G))});return this.fe.ya(a,d,c)};g.fa=function(a){return a};g.Na=function(){return!0};g.Ub=function(){return this.fe};function Md(a){this.sa=new Hd(a);this.g=a.g;H(a.xa,"Only valid if limit has been set");this.oa=a.oa;this.Ib=!Nd(a)}g=Md.prototype;g.F=function(a,b,c,d,e,f){this.sa.matches(new K(b,c))||(c=G);return a.Q(b).Z(c)?a:a.Eb()=this.g.compare(this.sa.Uc,f):0>=this.g.compare(f,this.sa.vc))d=d.T(f.name,f.R),e++;else break}}else{d=b.nb(this.g);d=d.fa(G);var k,l,m;if(this.Ib){b=d.We(this.g);k=this.sa.vc;l=this.sa.Uc;var u=Pd(this.g);m=function(a,b){return u(b,a)}}else b=d.Wb(this.g),k=this.sa.Uc, +l=this.sa.vc,m=Pd(this.g);for(var e=0,z=!1;0=m(k,f)&&(z=!0),(h=z&&e=m(f,l))?e++:d=d.T(f.name,G)}return this.sa.Ub().ya(a,d,c)};g.fa=function(a){return a};g.Na=function(){return!0};g.Ub=function(){return this.sa.Ub()}; +function Od(a,b,c,d,e,f){var h;if(a.Ib){var k=Pd(a.g);h=function(a,b){return k(b,a)}}else h=Pd(a.g);H(b.Eb()==a.oa,"");var l=new K(c,d),m=a.Ib?Qd(b,a.g):Rd(b,a.g),u=a.sa.matches(l);if(b.Da(c)){for(var z=b.Q(c),m=e.de(a.g,m,a.Ib);null!=m&&(m.name==c||b.Da(m.name));)m=e.de(a.g,m,a.Ib);e=null==m?1:h(m,l);if(u&&!d.e()&&0<=e)return null!=f&&jd(f,new I("child_changed",d,c,z)),b.T(c,d);null!=f&&jd(f,new I("child_removed",z,c));b=b.T(c,G);return null!=m&&a.sa.matches(m)?(null!=f&&jd(f,new I("child_added", +m.R,m.name)),b.T(m.name,m.R)):b}return d.e()?b:u&&0<=h(m,l)?(null!=f&&(jd(f,new I("child_removed",m.R,m.name)),jd(f,new I("child_added",d,c))),b.T(c,d).T(m.name,G)):b};function qc(a,b){this.B=a;H(n(this.B)&&null!==this.B,"LeafNode shouldn't be created with null/undefined value.");this.aa=b||G;Sd(this.aa);this.Db=null}var Td=["object","boolean","number","string"];g=qc.prototype;g.J=function(){return!0};g.C=function(){return this.aa};g.fa=function(a){return new qc(this.B,a)};g.Q=function(a){return".priority"===a?this.aa:G};g.P=function(a){return a.e()?this:".priority"===J(a)?this.aa:G};g.Da=function(){return!1};g.Ve=function(){return null}; +g.T=function(a,b){return".priority"===a?this.fa(b):b.e()&&".priority"!==a?this:G.T(a,b).fa(this.aa)};g.F=function(a,b){var c=J(a);if(null===c)return b;if(b.e()&&".priority"!==c)return this;H(".priority"!==c||1===Ad(a),".priority must be the last token in a path");return this.T(c,G.F(D(a),b))};g.e=function(){return!1};g.Eb=function(){return 0};g.O=function(){return!1};g.H=function(a){return a&&!this.C().e()?{".value":this.Ca(),".priority":this.C().H()}:this.Ca()}; +g.hash=function(){if(null===this.Db){var a="";this.aa.e()||(a+="priority:"+Ud(this.aa.H())+":");var b=typeof this.B,a=a+(b+":"),a="number"===b?a+Jc(this.B):a+this.B;this.Db=uc(a)}return this.Db};g.Ca=function(){return this.B};g.sc=function(a){if(a===G)return 1;if(a instanceof P)return-1;H(a.J(),"Unknown node type");var b=typeof a.B,c=typeof this.B,d=Ia(Td,b),e=Ia(Td,c);H(0<=d,"Unknown leaf type: "+b);H(0<=e,"Unknown leaf type: "+c);return d===e?"object"===c?0:this.Bdocument.domain="'+document.domain+'";\x3c/script>');a=""+a+"";try{this.Ea.gb.open(),this.Ea.gb.write(a),this.Ea.gb.close()}catch(f){E("frame writing exception"),f.stack&&E(f.stack),E(f)}} +te.prototype.close=function(){this.Ud=!1;if(this.Ea){this.Ea.gb.body.innerHTML="";var a=this;setTimeout(function(){null!==a.Ea&&(document.body.removeChild(a.Ea),a.Ea=null)},Math.floor(0))}var b=this.ib;b&&(this.ib=null,b())}; +function we(a){if(a.Ud&&a.Kd&&a.te.count()<(0=a.Qc[0].Oe.length+30+c.length){var e=a.Qc.shift(),c=c+"&seg"+d+"="+e.jg+"&ts"+d+"="+e.pg+"&d"+d+"="+e.Oe;d++}else break;xe(a,b+c,a.Zd);return!0}return!1}function xe(a,b,c){function d(){a.te.remove(c);we(a)}a.te.add(c,1);var e=setTimeout(d,Math.floor(25E3));ve(a,b,function(){clearTimeout(e);d()})} +function ve(a,b,c){setTimeout(function(){try{if(a.Kd){var d=a.Ea.gb.createElement("script");d.type="text/javascript";d.async=!0;d.src=b;d.onload=d.onreadystatechange=function(){var a=d.readyState;a&&"loaded"!==a&&"complete"!==a||(d.onload=d.onreadystatechange=null,d.parentNode&&d.parentNode.removeChild(d),c())};d.onerror=function(){E("Long-poll script failed to load: "+b);a.Kd=!1;a.close()};a.Ea.gb.body.appendChild(d)}}catch(e){}},Math.floor(1))};function ye(a){ze(this,a)}var Ae=[qe,cd];function ze(a,b){var c=cd&&cd.isAvailable(),d=c&&!(yb.Ze||!0===yb.get("previous_websocket_failure"));b.qg&&(c||O("wss:// URL used, but browser isn't known to support websockets. Trying anyway."),d=!0);if(d)a.Wc=[cd];else{var e=a.Wc=[];Ic(Ae,function(a,b){b&&b.isAvailable()&&e.push(b)})}}function Be(a){if(0=a.pf?(a.f("Secondary connection is healthy."),a.Bb=!0,a.D.sd(),a.D.start(),a.f("sending client ack on secondary"),a.D.send({t:"c",d:{t:"a",d:{}}}),a.f("Ending transmission on primary"),a.I.send({t:"c",d:{t:"n",d:{}}}),a.Xc=a.D,Ie(a)):(a.f("sending ping on secondary."),a.D.send({t:"c",d:{t:"p",d:{}}}))}Ce.prototype.wd=function(a){Ke(this);this.re(a)};function Ke(a){a.Bb||(a.ve--,0>=a.ve&&(a.f("Primary connection is healthy."),a.Bb=!0,a.I.sd()))} +function He(a,b){a.D=new b("c:"+a.id+":"+a.Ke++,a.L,a.qf);a.pf=b.responsesRequiredToBeHealthy||0;a.D.open(Ee(a,a.D),Fe(a,a.D));Mc(function(){a.D&&(a.f("Timed out trying to upgrade."),a.D.close())},Math.floor(6E4))}function Ge(a,b,c){a.f("Realtime connection established.");a.I=b;a.Ua=1;a.Lc&&(a.Lc(c,a.qf),a.Lc=null);0===a.ve?(a.f("Primary connection is healthy."),a.Bb=!0):Mc(function(){Le(a)},Math.floor(5E3))} +function Le(a){a.Bb||1!==a.Ua||(a.f("sending ping on primary."),Ne(a,{t:"c",d:{t:"p",d:{}}}))}function Ne(a,b){if(1!==a.Ua)throw"Connection is not connected";a.Xc.send(b)}Ce.prototype.close=function(){2!==this.Ua&&(this.f("Closing realtime connection."),this.Ua=2,Je(this),this.ia&&(this.ia(),this.ia=null))};function Je(a){a.f("Shutting down all connections");a.I&&(a.I.close(),a.I=null);a.D&&(a.D.close(),a.D=null);a.md&&(clearTimeout(a.md),a.md=null)};function L(a,b){if(1==arguments.length){this.o=a.split("/");for(var c=0,d=0;d=a.o.length?null:a.o[a.Y]}function Ad(a){return a.o.length-a.Y}function D(a){var b=a.Y;b=this.o.length)return null;for(var a=[],b=this.Y;b=this.o.length};g.Z=function(a){if(Ad(this)!==Ad(a))return!1;for(var b=this.Y,c=a.Y;b<=this.o.length;b++,c++)if(this.o[b]!==a.o[c])return!1;return!0}; +g.contains=function(a){var b=this.Y,c=a.Y;if(Ad(this)>Ad(a))return!1;for(;b10485760/3&&10485760f;f++)b[f]=Math.floor(64*Math.random());for(f=0;12>f;f++)c+="-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz".charAt(b[f]);H(20===c.length,"nextPushId: Length should be 20."); +return c}}();function vf(a,b){this.La=a;this.ba=b?b:wf}g=vf.prototype;g.Oa=function(a,b){return new vf(this.La,this.ba.Oa(a,b,this.La).X(null,null,!1,null,null))};g.remove=function(a){return new vf(this.La,this.ba.remove(a,this.La).X(null,null,!1,null,null))};g.get=function(a){for(var b,c=this.ba;!c.e();){b=this.La(a,c.key);if(0===b)return c.value;0>b?c=c.left:0c?d=d.left:0e)a=this.je?a.left:a.right;else if(0===e){this.Pa.push(a);break}else this.Pa.push(a),a=this.je?a.right:a.left} +function R(a){if(0===a.Pa.length)return null;var b=a.Pa.pop(),c;c=a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value};if(a.je)for(b=b.left;!b.e();)a.Pa.push(b),b=b.right;else for(b=b.right;!b.e();)a.Pa.push(b),b=b.left;return c}function zf(a){if(0===a.Pa.length)return null;var b;b=a.Pa;b=b[b.length-1];return a.Hd?a.Hd(b.key,b.value):{key:b.key,value:b.value}}function Af(a,b,c,d,e){this.key=a;this.value=b;this.color=null!=c?c:!0;this.left=null!=d?d:wf;this.right=null!=e?e:wf}g=Af.prototype; +g.X=function(a,b,c,d,e){return new Af(null!=a?a:this.key,null!=b?b:this.value,null!=c?c:this.color,null!=d?d:this.left,null!=e?e:this.right)};g.count=function(){return this.left.count()+1+this.right.count()};g.e=function(){return!1};g.ha=function(a){return this.left.ha(a)||a(this.key,this.value)||this.right.ha(a)};function Bf(a){return a.left.e()?a:Bf(a.left)}g.Gc=function(){return Bf(this).key};g.ec=function(){return this.right.e()?this.key:this.right.ec()}; +g.Oa=function(a,b,c){var d,e;e=this;d=c(a,e.key);e=0>d?e.X(null,null,null,e.left.Oa(a,b,c),null):0===d?e.X(null,b,null,null,null):e.X(null,null,null,null,e.right.Oa(a,b,c));return Cf(e)};function Df(a){if(a.left.e())return wf;a.left.ea()||a.left.left.ea()||(a=Ef(a));a=a.X(null,null,null,Df(a.left),null);return Cf(a)} +g.remove=function(a,b){var c,d;c=this;if(0>b(a,c.key))c.left.e()||c.left.ea()||c.left.left.ea()||(c=Ef(c)),c=c.X(null,null,null,c.left.remove(a,b),null);else{c.left.ea()&&(c=Ff(c));c.right.e()||c.right.ea()||c.right.left.ea()||(c=Gf(c),c.left.left.ea()&&(c=Ff(c),c=Gf(c)));if(0===b(a,c.key)){if(c.right.e())return wf;d=Bf(c.right);c=c.X(d.key,d.value,null,null,Df(c.right))}c=c.X(null,null,null,null,c.right.remove(a,b))}return Cf(c)};g.ea=function(){return this.color}; +function Cf(a){a.right.ea()&&!a.left.ea()&&(a=Hf(a));a.left.ea()&&a.left.left.ea()&&(a=Ff(a));a.left.ea()&&a.right.ea()&&(a=Gf(a));return a}function Ef(a){a=Gf(a);a.right.left.ea()&&(a=a.X(null,null,null,null,Ff(a.right)),a=Hf(a),a=Gf(a));return a}function Hf(a){return a.right.X(null,null,a.color,a.X(null,null,!0,null,a.right.left),null)}function Ff(a){return a.left.X(null,null,a.color,null,a.X(null,null,!0,a.left.right,null))} +function Gf(a){return a.X(null,null,!a.color,a.left.X(null,null,!a.left.color,null,null),a.right.X(null,null,!a.right.color,null,null))}function If(){}g=If.prototype;g.X=function(){return this};g.Oa=function(a,b){return new Af(a,b,null)};g.remove=function(){return this};g.count=function(){return 0};g.e=function(){return!0};g.ha=function(){return!1};g.Gc=function(){return null};g.ec=function(){return null};g.ea=function(){return!1};var wf=new If;function P(a,b,c){this.k=a;(this.aa=b)&&Sd(this.aa);a.e()&&H(!this.aa||this.aa.e(),"An empty node cannot have a priority");this.yb=c;this.Db=null}g=P.prototype;g.J=function(){return!1};g.C=function(){return this.aa||G};g.fa=function(a){return this.k.e()?this:new P(this.k,a,this.yb)};g.Q=function(a){if(".priority"===a)return this.C();a=this.k.get(a);return null===a?G:a};g.P=function(a){var b=J(a);return null===b?this:this.Q(b).P(D(a))};g.Da=function(a){return null!==this.k.get(a)}; +g.T=function(a,b){H(b,"We should always be passing snapshot nodes");if(".priority"===a)return this.fa(b);var c=new K(a,b),d,e;b.e()?(d=this.k.remove(a),c=me(this.yb,c,this.k)):(d=this.k.Oa(a,b),c=ke(this.yb,c,this.k));e=d.e()?G:this.aa;return new P(d,e,c)};g.F=function(a,b){var c=J(a);if(null===c)return b;H(".priority"!==J(a)||1===Ad(a),".priority must be the last token in a path");var d=this.Q(c).F(D(a),b);return this.T(c,d)};g.e=function(){return this.k.e()};g.Eb=function(){return this.k.count()}; +var Jf=/^(0|[1-9]\d*)$/;g=P.prototype;g.H=function(a){if(this.e())return null;var b={},c=0,d=0,e=!0;this.O(N,function(f,h){b[f]=h.H(a);c++;e&&Jf.test(f)?d=Math.max(d,Number(f)):e=!1});if(!a&&e&&d<2*c){var f=[],h;for(h in b)f[h]=b[h];return f}a&&!this.C().e()&&(b[".priority"]=this.C().H());return b};g.hash=function(){if(null===this.Db){var a="";this.C().e()||(a+="priority:"+Ud(this.C().H())+":");this.O(N,function(b,c){var d=c.hash();""!==d&&(a+=":"+b+":"+d)});this.Db=""===a?"":uc(a)}return this.Db}; +g.Ve=function(a,b,c){return(c=Kf(this,c))?(a=xf(c,new K(a,b)))?a.name:null:xf(this.k,a)};function Qd(a,b){var c;c=(c=Kf(a,b))?(c=c.Gc())&&c.name:a.k.Gc();return c?new K(c,a.k.get(c)):null}function Rd(a,b){var c;c=(c=Kf(a,b))?(c=c.ec())&&c.name:a.k.ec();return c?new K(c,a.k.get(c)):null}g.O=function(a,b){var c=Kf(this,a);return c?c.ha(function(a){return b(a.name,a.R)}):this.k.ha(b)};g.Wb=function(a){return this.Xb(a.Hc(),a)}; +g.Xb=function(a,b){var c=Kf(this,b);if(c)return c.Xb(a,function(a){return a});for(var c=this.k.Xb(a.name,jc),d=zf(c);null!=d&&0>b.compare(d,a);)R(c),d=zf(c);return c};g.We=function(a){return this.Zb(a.Fc(),a)};g.Zb=function(a,b){var c=Kf(this,b);if(c)return c.Zb(a,function(a){return a});for(var c=this.k.Zb(a.name,jc),d=zf(c);null!=d&&0=a)throw Error("Query.limitToFirst: First argument must be a positive integer.");if(this.m.xa)throw Error("Query.limitToFirst: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.m.le(a),this.Nc)}; +g.me=function(a){x("Query.limitToLast",1,1,arguments.length);if(!ga(a)||Math.floor(a)!==a||0>=a)throw Error("Query.limitToLast: First argument must be a positive integer.");if(this.m.xa)throw Error("Query.limitToLast: Limit was already set (by another call to limit, limitToFirst, or limitToLast).");return new X(this.u,this.path,this.m.me(a),this.Nc)}; +g.ag=function(a){x("Query.orderByChild",1,1,arguments.length);if("$key"===a)throw Error('Query.orderByChild: "$key" is invalid. Use Query.orderByKey() instead.');if("$priority"===a)throw Error('Query.orderByChild: "$priority" is invalid. Use Query.orderByPriority() instead.');if("$value"===a)throw Error('Query.orderByChild: "$value" is invalid. Use Query.orderByValue() instead.');lf("Query.orderByChild",a);Xf(this,"Query.orderByChild");var b=new L(a);if(b.e())throw Error("Query.orderByChild: cannot pass in empty path. Use Query.orderByValue() instead."); +b=new Yd(b);b=he(this.m,b);Vf(b);return new X(this.u,this.path,b,!0)};g.bg=function(){x("Query.orderByKey",0,0,arguments.length);Xf(this,"Query.orderByKey");var a=he(this.m,Fd);Vf(a);return new X(this.u,this.path,a,!0)};g.cg=function(){x("Query.orderByPriority",0,0,arguments.length);Xf(this,"Query.orderByPriority");var a=he(this.m,N);Vf(a);return new X(this.u,this.path,a,!0)}; +g.dg=function(){x("Query.orderByValue",0,0,arguments.length);Xf(this,"Query.orderByValue");var a=he(this.m,de);Vf(a);return new X(this.u,this.path,a,!0)};g.Nd=function(a,b){x("Query.startAt",0,2,arguments.length);df("Query.startAt",a,this.path,!0);kf("Query.startAt",b);var c=this.m.Nd(a,b);Wf(c);Vf(c);if(this.m.ka)throw Error("Query.startAt: Starting point was already set (by another call to startAt or equalTo).");n(a)||(b=a=null);return new X(this.u,this.path,c,this.Nc)}; +g.gd=function(a,b){x("Query.endAt",0,2,arguments.length);df("Query.endAt",a,this.path,!0);kf("Query.endAt",b);var c=this.m.gd(a,b);Wf(c);Vf(c);if(this.m.na)throw Error("Query.endAt: Ending point was already set (by another call to endAt or equalTo).");return new X(this.u,this.path,c,this.Nc)}; +g.If=function(a,b){x("Query.equalTo",1,2,arguments.length);df("Query.equalTo",a,this.path,!1);kf("Query.equalTo",b);if(this.m.ka)throw Error("Query.equalTo: Starting point was already set (by another call to endAt or equalTo).");if(this.m.na)throw Error("Query.equalTo: Ending point was already set (by another call to endAt or equalTo).");return this.Nd(a,b).gd(a,b)}; +g.toString=function(){x("Query.toString",0,0,arguments.length);for(var a=this.path,b="",c=a.Y;c=b&&Eg(h,c.path)?d=!1:c.path.contains(h.path)&&(e=!0));f--}if(d){if(e)this.S=Fg(this.la,Gg,C),this.Bc=0f.Bc,"Stacking an older write on top of newer ones");n(h)||(h=!0);f.la.push({path:b,Ga:c,Zc:d,visible:h});h&&(f.S=sg(f.S,b,c));f.Bc=d;return e?fh(a,new Ab(ng,b,c)):[]}function gh(a,b,c,d){var e=a.jb;H(d>e.Bc,"Stacking an older merge on top of newer ones");e.la.push({path:b,children:c,Zc:d,visible:!0});e.S=tg(e.S,b,c);e.Bc=d;c=bg(c);return fh(a,new Vc(ng,b,c))} +function hh(a,b,c){c=c||!1;var d=Dg(a.jb,b);if(a.jb.Ed(b)){var e=Q;null!=d.Ga?e=e.set(C,!0):db(d.children,function(a,b){e=e.set(new L(a),b)});return fh(a,new mg(d.path,e,c))}return[]}function ih(a,b,c){c=bg(c);return fh(a,new Vc(pg,b,c))}function jh(a,b,c,d){d=kh(a,d);if(null!=d){var e=lh(d);d=e.path;e=e.Hb;b=T(d,b);c=new Ab(new og(!1,!0,e,!0),b,c);return mh(a,d,c)}return[]} +function nh(a,b,c,d){if(d=kh(a,d)){var e=lh(d);d=e.path;e=e.Hb;b=T(d,b);c=bg(c);c=new Vc(new og(!1,!0,e,!0),b,c);return mh(a,d,c)}return[]} +dh.prototype.Nb=function(a,b){var c=a.path,d=null,e=!1;ig(this.wa,c,function(a,b){var f=T(a,c);d=d||b.hb(f);e=e||null!=zg(b)});var f=this.wa.get(c);f?(e=e||null!=zg(f),d=d||f.hb(C)):(f=new yg,this.wa=this.wa.set(c,f));var h;null!=d?h=!0:(h=!1,d=G,lg(this.wa.subtree(c),function(a,b){var c=b.hb(C);c&&(d=d.T(a,c))}));var k=null!=Bg(f,a);if(!k&&!S(a.m)){var l=oh(a);H(!(l in this.ic),"View does not exist, but we have a tag");var m=ph++;this.ic[l]=m;this.Be["_"+m]=l}h=f.Nb(a,b,new Hg(c,this.jb),d,h);k|| +e||(f=Bg(f,a),h=h.concat(qh(this,a,f)));return h}; +dh.prototype.kb=function(a,b,c){var d=a.path,e=this.wa.get(d),f=[];if(e&&("default"===a.ja()||null!=Bg(e,a))){f=e.kb(a,b,c);e.e()&&(this.wa=this.wa.remove(d));e=f.hg;f=f.Kf;b=-1!==Pa(e,function(a){return S(a.m)});var h=gg(this.wa,d,function(a,b){return null!=zg(b)});if(b&&!h&&(d=this.wa.subtree(d),!d.e()))for(var d=rh(d),k=0;kb;b++)y[b]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b);for(var b=y,c=[],d=0;d>2,e=(e&3)<<4|l>>4,l=(l&15)<<2|t>>6,t=t&63;z||(t=64,n||(l=64));c.push(b[M],b[e],b[l],b[t])}return c.join("").replace(/\+/g,"-").replace(/\//g, +"_").replace(/=+$/,"")};var B=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p),C=function(){this.a=null},D=function(a){if(a.a)return a.a;a.a=new Promise(function(a,c){var b=g.indexedDB.open("fcm_token_details_db",1);b.onerror=function(a){c(a.target.error)};b.onsuccess=function(b){a(b.target.result)};b.onupgradeneeded=function(a){a=a.target.result.createObjectStore("fcm_token_object_Store",{keyPath:"swScope"});a.createIndex("fcmSenderId","fcmSenderId",{unique:!1});a.createIndex("fcmToken","fcmToken",{unique:!0})}}); +return a.a},E=function(a){a.a?a.a.then(function(b){b.close();a.a=null}):Promise.resolve()},F=function(a,b){return D(a).then(function(a){return new Promise(function(c,e){var d=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").index("fcmToken").get(b);d.onerror=function(a){e(a.target.error)};d.onsuccess=function(a){c(a.target.result)}})})},G=function(a,b){return D(a).then(function(a){return new Promise(function(c,e){var d=[],l=a.transaction(["fcm_token_object_Store"]).objectStore("fcm_token_object_Store").openCursor(); +l.onerror=function(a){e(a.target.error)};l.onsuccess=function(a){(a=a.target.result)?(a.value.fcmSenderId===b&&d.push(a.value),a.continue()):c(d)}})})},H=function(a,b,c){var d=A(b.getKey("p256dh")),e=A(b.getKey("auth"));a="authorized_entity="+a+"&"+("endpoint="+b.endpoint+"&")+("encryption_key="+d+"&")+("encryption_auth="+e);c&&(a+="&pushSet="+c);c=new Headers;c.append("Content-Type","application/x-www-form-urlencoded");return fetch("https://fcm.googleapis.com/fcm/connect/subscribe",{method:"POST", +headers:c,body:a}).then(function(a){return a.json()}).then(function(a){if(a.error)throw B.create("token-subscribe-failed",{message:a.error.message});if(!a.token)throw B.create("token-subscribe-no-token");if(!a.pushSet)throw B.create("token-subscribe-no-push-set");return{token:a.token,pushSet:a.pushSet}})},I=function(a,b,c,d,e,n){var l={swScope:c.scope,endpoint:d.endpoint,auth:A(d.getKey("auth")),p256dh:A(d.getKey("p256dh")),fcmToken:e,fcmPushSet:n,fcmSenderId:b};return D(a).then(function(a){return new Promise(function(b, +c){var d=a.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").put(l);d.onerror=function(a){c(a.target.error)};d.onsuccess=function(){b()}})})}; +C.prototype.i=function(a,b){return b instanceof ServiceWorkerRegistration?"string"!==typeof a||0===a.length?Promise.reject(B.create("bad-sender-id")):G(this,a).then(function(c){if(0!==c.length){var d=c.findIndex(function(c){return b.scope===c.swScope&&a===c.fcmSenderId});if(-1!==d)return c[d]}}).then(function(a){if(a)return b.pushManager.getSubscription().catch(function(){throw B.create("get-subscription-failed");}).then(function(b){var c;if(c=b)c=b.endpoint===a.endpoint&&A(b.getKey("auth"))===a.auth&& +A(b.getKey("p256dh"))===a.p256dh;if(c)return a.fcmToken})}):Promise.reject(B.create("sw-registration-expected"))};C.prototype.getSavedToken=C.prototype.i; +C.prototype.h=function(a,b){var c=this;return"string"!==typeof a||0===a.length?Promise.reject(B.create("bad-sender-id")):b instanceof ServiceWorkerRegistration?b.pushManager.getSubscription().then(function(a){return a?a:b.pushManager.subscribe(q)}).then(function(d){return H(a,d).then(function(e){return I(c,a,b,d,e.token,e.pushSet).then(function(){return e.token})})}):Promise.reject(B.create("sw-registration-expected"))};C.prototype.createToken=C.prototype.h; +C.prototype.deleteToken=function(a){var b=this;return"string"!==typeof a||0===a.length?Promise.reject(B.create("invalid-delete-token")):F(this,a).then(function(a){if(!a)throw B.create("delete-token-not-found");return D(b).then(function(b){return new Promise(function(c,d){var e=b.transaction(["fcm_token_object_Store"],"readwrite").objectStore("fcm_token_object_Store").delete(a.swScope);e.onerror=function(a){d(a.target.error)};e.onsuccess=function(b){0===b.target.result?d(B.create("failed-to-delete-token")): +c(a)}})})})};var J=function(a){var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p);if(!a.options.messagingSenderId||"string"!==typeof a.options.messagingSenderId)throw this.a.create("bad-sender-id");this.l=a.options.messagingSenderId;this.c=new C;this.app=a;this.INTERNAL={};this.INTERNAL.delete=function(){return b.delete}}; +J.prototype.getToken=function(){var a=this,b=Notification.permission;return"granted"!==b?"denied"===b?Promise.reject(this.a.create("notifications-blocked")):Promise.resolve(null):this.f().then(function(b){return a.c.i(a.l,b).then(function(c){return c?c:a.c.h(a.l,b)})})};J.prototype.getToken=J.prototype.getToken;J.prototype.deleteToken=function(a){var b=this;return this.c.deleteToken(a).then(function(){return b.f()}).then(function(a){return a?a.pushManager.getSubscription():null}).then(function(a){if(a)return a.unsubscribe()})}; +J.prototype.deleteToken=J.prototype.deleteToken;J.prototype.f=function(){throw this.a.create("should-be-overriden");};J.prototype.requestPermission=function(){throw this.a.create("only-available-in-window");};J.prototype.useServiceWorker=function(){throw this.a.create("only-available-in-window");};J.prototype.useServiceWorker=J.prototype.useServiceWorker;J.prototype.onMessage=function(){throw this.a.create("only-available-in-window");};J.prototype.onMessage=J.prototype.onMessage; +J.prototype.onTokenRefresh=function(){throw this.a.create("only-available-in-window");};J.prototype.onTokenRefresh=J.prototype.onTokenRefresh;J.prototype.setBackgroundMessageHandler=function(){throw this.a.create("only-available-in-sw");};J.prototype.setBackgroundMessageHandler=J.prototype.setBackgroundMessageHandler;J.prototype.delete=function(){E(this.c)};var K=self,P=function(a){J.call(this,a);var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",p);K.addEventListener("push",function(a){return L(b,a)},!1);K.addEventListener("pushsubscriptionchange",function(a){return N(b,a)},!1);K.addEventListener("notificationclick",function(a){return O(b,a)},!1);this.b=null};f(P,J); +var L=function(a,b){var c;try{c=b.data.json()}catch(e){return}var d=Q().then(function(b){if(b){if(c.notification||a.b)return R(a,c)}else{if((b=c)&&"object"===typeof b.notification){var d=Object.assign({},b.notification),e={};d.data=(e.FCM_MSG=b,e);b=d}else b=void 0;if(b)return K.registration.showNotification(b.title||"",b);if(a.b)return a.b(c)}});b.waitUntil(d)},N=function(a,b){var c=a.getToken().then(function(b){if(!b)throw a.a.create("no-fcm-token-for-resubscribe");var c=a.c;return F(c,b).then(function(b){if(!b)throw a.a.create("invalid-saved-token"); +return K.registration.pushManager.subscribe(q).then(function(a){return H(b.w,a,b.v)}).catch(function(d){return c.deleteToken(b.A).then(function(){throw a.a.create("unable-to-resubscribe",{message:d});})})})});b.waitUntil(c)},O=function(a,b){if(b.notification&&b.notification.data&&b.notification.data.FCM_MSG){b.stopImmediatePropagation();b.notification.close();var c=b.notification.data.FCM_MSG,d=c.notification.click_action;if(d){var e=S(d).then(function(a){return a?a:K.clients.openWindow(d)}).then(function(b){if(b)return delete c.notification, +T(a,b,r("notification-clicked",c))});b.waitUntil(e)}}};P.prototype.setBackgroundMessageHandler=function(a){if(a&&"function"!==typeof a)throw this.a.create("bg-handler-function-expected");this.b=a};P.prototype.setBackgroundMessageHandler=P.prototype.setBackgroundMessageHandler; +var S=function(a){var b=(new URL(a)).href;return K.clients.matchAll({type:"window",includeUncontrolled:!0}).then(function(a){for(var c=null,e=0;eh&&(h*=2);var c;1===C?(C=2,c=0):c=1E3*(h+Math.random());e(c)}}function g(a){Ma||(Ma=!0,z||(null!==p?(a||(C=2),clearTimeout(p),e(0)):a||(C=1)))}var h=1,p=null,B=!1,C=0,z=!1,Ma=!1;e(0);setTimeout(function(){B=!0;g(!0)},c);return g};var t="https://firebasestorage.googleapis.com";var u=function(a,b){this.code="storage/"+a;this.message="Firebase Storage: "+b;this.serverResponse=null;this.name="FirebaseError"};(function(){var a=Error;function b(){}b.prototype=a.prototype;u.b=a.prototype;u.prototype=new b;u.a=function(b,d,e){for(var c=Array(arguments.length-2),g=2;gb?1:0};var A=function(a){return function(){var b=[];Array.prototype.push.apply(b,arguments);firebase.Promise.resolve(!0).then(function(){a.apply(null,b)})}};var D=function(a,b){this.bucket=a;this.path=b},za=function(a){var b=encodeURIComponent;return"/b/"+b(a.bucket)+"/o/"+b(a.path)},Aa=function(a){for(var b=null,c=[{K:/^gs:\/\/([A-Za-z0-9.\-]+)(\/(.*))?$/i,G:{bucket:1,path:3},J:function(a){"/"===a.path.charAt(a.path.length-1)&&(a.path=a.path.slice(0,-1))}},{K:/^https?:\/\/firebasestorage\.googleapis\.com\/v[A-Za-z0-9_]+\/b\/([A-Za-z0-9.\-]+)\/o(\/([^?#]*).*)?$/i,G:{bucket:1,path:3},J:function(a){a.path=decodeURIComponent(a.path)}}],d=0;d=d)b.push(d);else if(2047>=d)b.push(192|d>>6,128|d&63);else if(55296==(d&64512))if(c>18,128|d>>12&63,128|d>>6&63,128|d&63)}else b.push(239,191,189);else 56320==(d&64512)?b.push(239,191,189):b.push(224|d>>12,128|d>>6&63,128|d&63)}return new Uint8Array(b)}, +Fa=function(a,b){switch(a){case "base64":var c=-1!==b.indexOf("-"),d=-1!==b.indexOf("_");if(c||d)throw v(a,"Invalid character '"+(c?"-":"_")+"' found: is it base64url encoded?");break;case "base64url":c=-1!==b.indexOf("+");d=-1!==b.indexOf("/");if(c||d)throw v(a,"Invalid character '"+(c?"+":"/")+"' found: is it base64 encoded?");b=b.replace(/-/g,"+").replace(/_/g,"/")}var e;try{e=atob(b)}catch(f){throw v(a,"Invalid character found");}a=new Uint8Array(e.length);for(b=0;b][;base64],");b=b[1]||null;this.a=!1;this.b=null;if(null!=b){var c=b.length-7;this.b=(this.a=0<=c&&b.indexOf(";base64",c)==c)?b.substring(0,b.length-7):b}this.c=a.substring(a.indexOf(",")+1)};var Ia=function(a){var b=encodeURIComponent,c="?";ma(a,function(a,e){a=b(a)+"="+b(e);c=c+a+"&"});return c=c.slice(0,-1)};var Ja=function(){var a=this;this.a=new XMLHttpRequest;this.c=0;this.f=qa(function(b){a.a.addEventListener("abort",function(){a.c=2;b(a)});a.a.addEventListener("error",function(){a.c=1;b(a)});a.a.addEventListener("load",function(){b(a)})});this.b=!1},Ka=function(a,b,c,d,e){if(a.b)throw la("cannot .send() more than once");a.b=!0;a.a.open(c,b,!0);y(e)&&ma(e,function(b,c){a.a.setRequestHeader(b,c.toString())});y(d)?a.a.send(d):a.a.send();return a.f},La=function(a){if(!a.b)throw la("cannot .getErrorCode() before sending"); +return a.c},F=function(a){if(!a.b)throw la("cannot .getStatus() before sending");try{return a.a.status}catch(b){return-1}},Na=function(a){if(!a.b)throw la("cannot .getResponseText() before sending");return a.a.responseText};Ja.prototype.abort=function(){this.a.abort()};var G=function(a,b,c,d,e,f){this.b=a;this.h=b;this.f=c;this.a=d;this.g=e;this.c=f};k=G.prototype;k.V=function(){return this.b};k.qa=function(){return this.h};k.na=function(){return this.f};k.ia=function(){return this.a};k.W=function(){if(y(this.a)){var a=this.a.downloadURLs;return y(a)&&y(a[0])?a[0]:null}return null};k.pa=function(){return this.g};k.la=function(){return this.c};var H;a:{var Oa=n.navigator;if(Oa){var Pa=Oa.userAgent;if(Pa){H=Pa;break a}}H=""};var Ra=function(a,b,c,d,e,f,g,h,p,B,C){this.C=a;this.A=b;this.v=c;this.o=d;this.B=e.slice();this.m=f.slice();this.j=this.l=this.c=this.b=null;this.f=this.g=!1;this.s=g;this.h=h;this.D=C;this.w=p;var z=this;this.u=qa(function(a,b){z.l=a;z.j=b;Qa(z)})},Sa=function(a,b,c){this.b=a;this.c=b;this.a=!!c},Qa=function(a){function b(a,b){b?a(!1,new Sa(!1,null,!0)):(b=new Ja,b.a.withCredentials=d.D,d.b=b,Ka(b,d.C,d.A,d.o,d.v).then(function(b){d.b=null;var c=0===La(b),e=F(b);if(!(c=!c))var c=r([408,429],e), +f=r(d.m,e),c=500<=e&&600>e||c||f;c?(b=2===La(b),a(!1,new Sa(!1,null,b))):a(!0,new Sa(r(d.B,e),b))}))}function c(a,b){var c=d.l;a=d.j;var e=b.c;if(b.b)try{var f=d.s(e,Na(e));q(f)?c(f):c()}catch(B){a(B)}else null!==e?(b=ga(),f=Na(e),b.serverResponse=f,d.h?a(d.h(e,b)):a(b)):(b=b.a?d.f?ka():ha():new u("retry-limit-exceeded","Max retry time for operation exceeded, please try again."),a(b))}var d=a;a.g?c(0,new Sa(!1,null,!0)):a.c=fa(b,c,a.w)};Ra.prototype.a=function(){return this.u}; +Ra.prototype.cancel=function(a){this.g=!0;this.f=a||!1;null!==this.c&&(0,this.c)(!1);null!==this.b&&this.b.abort()};var Ta=function(a,b,c){var d=Ia(a.b),d=a.h+d,e=a.headers?na(a.headers):{};null!==b&&0parseFloat(gb)){fb=String(ib);break a}}fb=gb} +var kb=fb,va={},lb=function(a){return wa(a,function(){for(var b=0,c=xa(String(kb)).split("."),d=xa(String(a)).split("."),e=Math.max(c.length,d.length),f=0;0==b&&fb&&(b+=a.size),0>b&&(b=0),0>c&&(c+=a.size),cb.length?b:pa(b)};a.push(b);b=new J("size");b.a=function(a,b){return y(b)?+b:b};a.push(b);a.push(new J("timeCreated"));a.push(new J("updated"));a.push(new J("md5Hash",null,!0)); +a.push(new J("cacheControl",null,!0));a.push(new J("contentDisposition",null,!0));a.push(new J("contentEncoding",null,!0));a.push(new J("contentLanguage",null,!0));a.push(new J("contentType",null,!0));a.push(new J("metadata","customMetadata",!0));a.push(new J("downloadTokens","downloadURLs",!1,function(a,b){if(!(ta(b)&&0p;p++)h+=Math.random().toString().slice(2);g["Content-Type"]="multipart/related; boundary="+ +h;e=Db(b,d,e);p=sb(e,c);d=yb("--"+h+"\r\nContent-Type: application/json; charset=utf-8\r\n\r\n"+p+"\r\n--"+h+"\r\nContent-Type: "+e.contentType+"\r\n\r\n",d,"\r\n--"+h+"--");if(null===d)throw ia();a=new w(t+"/v0"+f,"POST",zb(a,c),a.b);a.b={name:e.fullPath};a.headers=g;a.body=d.i;a.a=Q(b);return a},Fb=function(a,b,c,d){this.a=a;this.total=b;this.b=!!c;this.c=d||null},Gb=function(a,b){var c;try{c=a.a.getResponseHeader("X-Goog-Upload-Status")}catch(d){P(!1)}P(r(b||["active"],c));return c},Hb=function(a, +b,c,d,e){var f="/b/"+encodeURIComponent(b.bucket)+"/o",g=Db(b,d,e);e={name:g.fullPath};f=t+"/v0"+f;d={"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":d.a,"X-Goog-Upload-Header-Content-Type":g.contentType,"Content-Type":"application/json; charset=utf-8"};c=sb(g,c);a=new w(f,"POST",function(a){Gb(a);var b;try{b=a.a.getResponseHeader("X-Goog-Upload-URL")}catch(B){P(!1)}P(ta(b));return b},a.b);a.b=e;a.headers=d;a.body=c;a.a=Q(b);return a},Ib= +function(a,b,c,d){a=new w(c,"POST",function(a){var b=Gb(a,["active","final"]),c;try{c=a.a.getResponseHeader("X-Goog-Upload-Size-Received")}catch(h){P(!1)}a=c;isFinite(a)&&(a=String(a));a="string"==typeof a?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN;P(!isNaN(a));return new Fb(a,d.a,"final"===b)},a.b);a.headers={"X-Goog-Upload-Command":"query"};a.a=Q(b);a.f=!1;return a},Jb=function(a,b,c,d,e,f,g){var h=new Fb(0,0);g?(h.a=g.a,h.total=g.total):(h.a=0,h.total=d.a);if(d.a!==h.total)throw new u("server-file-wrong-size", +"Server recorded incorrect upload file size, please retry the upload.");var p=g=h.total-h.a;0262144*a.j&&(a.j*=2);a.a=null;Qb(a,b.a);b.b?(a.h=b.c,S(a,"success")):R(a)},a.F)})},Nb=function(a){U(a,function(b){var c=Bb(a.c,a.l,a.s);a.a=I(a.c,c,b);a.a.a().then(function(b){a.a=null;a.h=b;S(a,"success")},a.P)})},Pb=function(a){U(a,function(b){var c=Eb(a.c,a.l,a.s,a.f,a.h);a.a=I(a.c,c, +b);a.a.a().then(function(b){a.a=null;a.h=b;Qb(a,a.f.a);S(a,"success")},a.F)})},Qb=function(a,b){var c=a.m;a.m=b;a.m>c&&V(a)},S=function(a,b){if(a.b!==b)switch(b){case "canceling":a.b=b;null!==a.a&&a.a.cancel();break;case "pausing":a.b=b;null!==a.a&&a.a.cancel();break;case "running":var c="paused"===a.b;a.b=b;c&&(V(a),Kb(a));break;case "paused":a.b=b;V(a);break;case "canceled":a.g=ha();a.b=b;V(a);break;case "error":a.b=b;V(a);break;case "success":a.b=b,V(a)}},R=function(a){switch(a.b){case "pausing":S(a, +"paused");break;case "canceling":S(a,"canceled");break;case "running":Kb(a)}};T.prototype.w=function(){return new G(this.m,this.f.a,sa(this.b),this.h,this,this.L)}; +T.prototype.M=function(a,b,c,d){function e(a){try{g(a);return}catch(z){}try{if(h(a),!(q(a.next)||q(a.error)||q(a.complete)))throw"";}catch(z){throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";}}function f(a){return function(b,c,d){null!==a&&K("on",a,arguments);var e=new Ba(b,c,d);Rb(p,e);return function(){var a=p.B,b=a.indexOf(e);-1!==b&&a.splice(b,1)}}}var g=N().a,h=xb(null,!0).a;K("on",[M(function(){if("state_changed"!==a)throw"Expected one of the event types: [state_changed]."; +}),xb(e,!0),N(),N()],arguments);var p=this,B=[xb(function(a){if(null===a)throw"Expected a function or an Object with one of `next`, `error`, `complete` properties.";e(a)}),N(),N()];return q(b)||q(c)||q(d)?f(null)(b,c,d):f(B)};T.prototype.then=function(a,b){return this.C.then(a,b)};T.prototype["catch"]=function(a){return this.then(null,a)}; +var Rb=function(a,b){a.B.push(b);Sb(a,b)},V=function(a){Tb(a);Array.prototype.slice.call(a.B).forEach(function(b){Sb(a,b)})},Tb=function(a){if(null!==a.o){var b=!0;switch(sa(a.b)){case "success":A(a.o.bind(null,a.w()))();break;case "canceled":case "error":A(a.A.bind(null,a.g))();break;default:b=!1}b&&(a.o=null,a.A=null)}},Sb=function(a,b){switch(sa(a.b)){case "running":case "paused":null!==b.b&&A(b.b.bind(b,a.w()))();break;case "success":null!==b.a&&A(b.a.bind(b))();break;case "canceled":case "error":null!== +b.error&&A(b.error.bind(b,a.g))();break;default:null!==b.error&&A(b.error.bind(b,a.g))()}};T.prototype.O=function(){K("resume",[],arguments);var a="paused"===this.b||"pausing"===this.b;a&&S(this,"running");return a};T.prototype.N=function(){K("pause",[],arguments);var a="running"===this.b;a&&S(this,"pausing");return a};T.prototype.cancel=function(){K("cancel",[],arguments);var a="running"===this.b||"pausing"===this.b;a&&S(this,"canceling");return a};var W=function(a,b){this.a=a;if(b)this.location=b instanceof D?b:Aa(b);else if(a=a.bucket(),null!==a)this.location=new D(a,"");else throw new u("no-default-bucket","No default bucket found. Did you set the 'storageBucket' property when initializing the app?");};W.prototype.toString=function(){K("toString",[],arguments);return"gs://"+this.location.bucket+"/"+this.location.path};var Ub=function(a,b){return new W(a,b)};k=W.prototype; +k.H=function(a){K("child",[M()],arguments);var b=oa(this.location.path,a);return Ub(this.a,new D(this.location.bucket,b))};k.ka=function(){var a;a=this.location.path;if(0==a.length)a=null;else{var b=a.lastIndexOf("/");a=-1===b?"":a.slice(0,b)}return null===a?null:Ub(this.a,new D(this.location.bucket,a))};k.ma=function(){return Ub(this.a,new D(this.location.bucket,""))};k.U=function(){return this.location.bucket};k.fa=function(){return this.location.path};k.ja=function(){return pa(this.location.path)}; +k.oa=function(){return this.a.l};k.Z=function(a,b){K("put",[vb(),new L(tb,!0)],arguments);X(this,"put");return new T(this,this.a,this.location,qb(),new O(a),b)};k.$=function(a,b,c){K("putString",[M(),M(Ca,!0),new L(tb,!0)],arguments);X(this,"putString");var d=Ha(y(b)?b:"raw",a),e=c?na(c):{};!y(e.contentType)&&y(d.a)&&(e.contentType=d.a);return new T(this,this.a,this.location,qb(),new O(d.data,!0),e)}; +k.X=function(){K("delete",[],arguments);X(this,"delete");var a=this;return $a(this.a).then(function(b){var c=Cb(a.a,a.location);return I(a.a,c,b).a()})};k.I=function(){K("getMetadata",[],arguments);X(this,"getMetadata");var a=this;return $a(this.a).then(function(b){var c=Bb(a.a,a.location,qb());return I(a.a,c,b).a()})}; +k.aa=function(a){K("updateMetadata",[new L(tb,void 0)],arguments);X(this,"updateMetadata");var b=this;return $a(this.a).then(function(c){var d=b.a,e=b.location,f=a,g=qb(),h=za(e),h=t+"/v0"+h,f=sb(f,g),d=new w(h,"PATCH",zb(d,g),d.c);d.headers={"Content-Type":"application/json; charset=utf-8"};d.body=f;d.a=Ab(e);return I(b.a,d,c).a()})}; +k.Y=function(){K("getDownloadURL",[],arguments);X(this,"getDownloadURL");return this.I().then(function(a){a=a.downloadURLs[0];if(y(a))return a;throw new u("no-download-url","The given file does not have any download URLs.");})};var X=function(a,b){if(""===a.location.path)throw new u("invalid-root-operation","The operation '"+b+"' cannot be performed on a root reference, create a non-root reference using child, such as .child('file.png').");};var Y=function(a,b){this.a=new Za(a,function(a,b){return new W(a,b)},Ta,this,y(b)?b:new Ua);this.b=a;this.c=new Vb(this)};k=Y.prototype;k.ba=function(a){K("ref",[M(function(a){if(/^[A-Za-z]+:\/\//.test(a))throw"Expected child path but got a URL, use refFromURL instead.";},!0)],arguments);var b=new W(this.a);return q(a)?b.H(a):b}; +k.ca=function(a){K("refFromURL",[M(function(a){if(!/^[A-Za-z]+:\/\//.test(a))throw"Expected full URL but got a child path, use ref instead.";try{Aa(a)}catch(c){throw"Expected valid full URL but got an invalid one.";}},!1)],arguments);return new W(this.a,a)};k.ha=function(){return this.a.b};k.ea=function(a){K("setMaxUploadRetryTime",[wb()],arguments);this.a.b=a};k.ga=function(){return this.a.c};k.da=function(a){K("setMaxOperationRetryTime",[wb()],arguments);this.a.c=a};k.T=function(){return this.b}; +k.R=function(){return this.c};var Vb=function(a){this.a=a};Vb.prototype.b=function(){var a=this.a.a;a.f=!0;a.a=null;Ya(a.h)};var Z=function(a,b,c){Object.defineProperty(a,b,{get:c})};W.prototype.toString=W.prototype.toString;W.prototype.child=W.prototype.H;W.prototype.put=W.prototype.Z;W.prototype.putString=W.prototype.$;W.prototype["delete"]=W.prototype.X;W.prototype.getMetadata=W.prototype.I;W.prototype.updateMetadata=W.prototype.aa;W.prototype.getDownloadURL=W.prototype.Y;Z(W.prototype,"parent",W.prototype.ka);Z(W.prototype,"root",W.prototype.ma);Z(W.prototype,"bucket",W.prototype.U);Z(W.prototype,"fullPath",W.prototype.fa); +Z(W.prototype,"name",W.prototype.ja);Z(W.prototype,"storage",W.prototype.oa);Y.prototype.ref=Y.prototype.ba;Y.prototype.refFromURL=Y.prototype.ca;Z(Y.prototype,"maxOperationRetryTime",Y.prototype.ga);Y.prototype.setMaxOperationRetryTime=Y.prototype.da;Z(Y.prototype,"maxUploadRetryTime",Y.prototype.ha);Y.prototype.setMaxUploadRetryTime=Y.prototype.ea;Z(Y.prototype,"app",Y.prototype.T);Z(Y.prototype,"INTERNAL",Y.prototype.R);Vb.prototype["delete"]=Vb.prototype.b;Y.prototype.capi_=function(a){t=a}; +T.prototype.on=T.prototype.M;T.prototype.resume=T.prototype.O;T.prototype.pause=T.prototype.N;T.prototype.cancel=T.prototype.cancel;T.prototype.then=T.prototype.then;T.prototype["catch"]=T.prototype["catch"];Z(T.prototype,"snapshot",T.prototype.w);Z(G.prototype,"bytesTransferred",G.prototype.V);Z(G.prototype,"totalBytes",G.prototype.qa);Z(G.prototype,"state",G.prototype.na);Z(G.prototype,"metadata",G.prototype.ia);Z(G.prototype,"downloadURL",G.prototype.W);Z(G.prototype,"task",G.prototype.pa); +Z(G.prototype,"ref",G.prototype.la);ra.STATE_CHANGED="state_changed";x.RUNNING="running";x.PAUSED="paused";x.SUCCESS="success";x.CANCELED="canceled";x.ERROR="error";E.RAW="raw";E.BASE64="base64";E.BASE64URL="base64url";E.DATA_URL="data_url"; +(function(){function a(a){return new Y(a)}var b={TaskState:x,TaskEvent:ra,StringFormat:E,Storage:Y,Reference:W};if("undefined"!==typeof firebase)firebase.INTERNAL.registerService("storage",a,b);else throw Error("Cannot install Firebase Storage - be sure to load firebase-app.js first.");})();}).call(this); diff --git a/lib/gold-cc-expiration-input/.bower.json b/lib/gold-cc-expiration-input/.bower.json index 37762d73..d3d62d2a 100644 --- a/lib/gold-cc-expiration-input/.bower.json +++ b/lib/gold-cc-expiration-input/.bower.json @@ -1,6 +1,6 @@ { "name": "gold-cc-expiration-input", - "version": "1.1.2", + "version": "1.1.3", "description": "A validating input for a credit card expiration date", "authors": [ "The Polymer Authors" @@ -21,6 +21,7 @@ "homepage": "https://github.com/PolymerElements/gold-cc-expiration-input", "ignore": [], "dependencies": { + "iron-a11y-keys-behavior": "PolymerElements/iron-a11y-keys-behavior#^1.1.2", "iron-validator-behavior": "PolymerElements/iron-validator-behavior#^1.0.0", "iron-validatable-behavior": "PolymerElements/iron-validatable-behavior#^1.0.0", "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", @@ -36,11 +37,11 @@ "web-component-tester": "^4.0.0", "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, - "_release": "1.1.2", + "_release": "1.1.3", "_resolution": { "type": "version", - "tag": "v1.1.2", - "commit": "3e6cb1232e474d223e59b3144298b9d8f993865b" + "tag": "v1.1.3", + "commit": "0bbeb50fedda8f11cbab86d79e9d3b4c659bee8b" }, "_source": "git://github.com/PolymerElements/gold-cc-expiration-input.git", "_target": "^1.0.0", diff --git a/lib/gold-cc-expiration-input/.travis.yml b/lib/gold-cc-expiration-input/.travis.yml index 78e9989c..a219ac0d 100644 --- a/lib/gold-cc-expiration-input/.travis.yml +++ b/lib/gold-cc-expiration-input/.travis.yml @@ -6,9 +6,11 @@ before_script: - polylint env: global: - - secure: UMolJPFoQyMtTKW90zNgY1PjOu9dfnUaFDt8C/fd8vgJKvVV0XT+Zga4OVwf87FM7Svwf6zuMaDgkc50vP9CicAMb9ifxWD1ymA+HhufIms8KpiGGJuKfZRdeHoxlCV3oxSwyqhTKLHptvVLs59d9q3NbiwoxY7maJ7wUfc1HU/HVi/AvLFFFhPO3sjSWwgsIX6iIh8+7I9Zb2Ni13m7mp1gfgX5rqjUB0tywFnxkyepSn1RWkUlJRhLxMAYHx3ND36G+lGMZIOXlHrm/pZ+CmrvO4MuvVEXe0zXh24PpGBicILVzvvey5kk3VzUOnhEKq/nrTrOOmYL/hSUtQeXoHsG2dhV/6BA8GXhuAtE4v2NK6PA44K5v0rGlwsLiz1xlfScR0VZ2b5h8NLEhUcTNsAxP02bHPAlo3POWckdxUYfLMfu8bRsBrN+/8ORe5PPomgXkkooylLSDN9iZeuzdEQb5l3uJ8jogYJZXJynsBCWaj1CI7WkDRTFfMo238p/UeA8q3RMWOKYU9mCzZXblFazVVtAa8haPpGlMrAkmhtHqgigIlzKdgWzTZq6FXicODFqLYo2/Pn4dvd/1yl70W10uI+1Sg9B/wtpyL5MiQ5OVMsaTYOUvS9FYQ/0Zfz2Sc5eGQi9Sfa6tYVPVrNtodjUMUQtWvv9vrT3dWb1aW0= - - secure: UJWcpPmOokTciVINToo0ikkyAtrilHK5FRUL0/ZssJeljUiFeBWvXtjg2s8aGY3Yk7wW9DJ8CNUEp6jNelts1H/JNsrcOzd+BaP+j/GqCBby/KQr3kJDVTBnJlsReE0EKgwH0iDos8xiEqesnmW0q+CSsTI1mDnZKVk0GCMcBIh/eu68Rg+83pP9Lbm0cYsmvLj0WpJFzuSRlEWV+aCnyxdv3Q51QyqNzKBACVz757nuEMN3UCvpArxUZME6XKKuCCDDDPbdI4E+Vmbzoz8uTY6k4nOV9mBy5J1b4yLQfGQVaLqlZSs/0iTLneDsIB9sFtZQKiRKfi1MB9Hu1Q3Itje5JkU6spb0mrdpewqgA2Az4e9oPewl0kg6F8gtvnnsJfAJQz5UFHJdGEQSNgIqhJ8a9CF+5t2VNhCis1oUDUUYbiB+fLm83pm2yKQMYpyHvYFZTJBfPLwzfM8UJ5mzEoNDZi4Mdc0koPrF8AzP2oacw3EHJ8AeMSop69NL1ZFWWaBiqIByEEOQrUFi2J2iAmHC/46Kqp88z/IajAfepRrvE7ViwEHF9pc0C0ySs9N2SgmzVhm0NN9KGgvKLW8SNafSHylUdxWKxP7YugITjS/vXdKp3emshk42WLcnijx8oVVMVFUp1q3A2pOepvPqmV//fsaQoxleea3OLaIh+yY= -node_js: stable + - secure: >- + Qe0WSR8xqRBZgXFr5yzHQBlcG2g4y4N0tH0rDCbFU4/Nf75ADDf5/8bWGbI9hAIyXj8CP27BkZvPClx6vLm+m45yjNBRXuUw5YrSSjqKMNxIGx7gajXYbQn/LRgv7e9t7H0htYXWZ2/1wEDtoqlrTL8oKGvGfpRHFkeV00kYPKqG7BgZBaXNc9HJIXHKW7Pq8kqPR9zlqvmIskrStZ7VapldfgfMWOuI1Tl5i65+YuGT2IDsvaykVhwjP6dtTrJeE4ACt8jN+l7vRoyoEXZDfCZQoBXPhomMxr0g1wrSHohG3PW+IMcyUy0sMgYLBmGuxENsdSIzlzlyVpWt2U1+5RQY5cEh7P7616pCZx8VLjhsTh4plLrx87ycTEvjTw91OJJzlSQYP55RmZJWQs9rRHyKHZf6n4WRyiG+7+8DfSCs8lAvpohHFvG2y28sxSWctKVmGjK0h6k/Q/sCxCxRN4+Bq5ByHCeuE0VsVyzSVPJYw49VE1N3vQQxYioEuxxI1y6y8EORBOK7hf1QoVKRPtmJ4keWybkLAhNRFhAlaSmaRyI2A+q5yyLSdk8LrxP93GJxQe0bI0sU3V65jrDRHWtdjDK+2tzhwLWkbxt0eZiywz77b/q0BY6eKddJ40zZTdgXIZ4Es4gxM9mZYRAmTcKVGoYMNPJCD3ep3213w1Y= + - secure: >- + OJAW+ssXIXb+2Ze4skRm4QrFY6OcpFgKHRhcdT5TGv6OpzHPZO5wWgX37Ocb2FtgGbiIAMiI1B6dR4C998LGOUVO7kGA1f7vnp75PvsvYON1sKLfAyuIBJuI6uLRE6jOSUDAG9Rc3Q3Hv33QOnDcC1uwuYDFIF8pjn++TPqx3c0WwapD+IBsnHhFsTi3H7d0vwJNRUprAZq4leo+3f/jz4PMWlV7IxrjG0ghseOO4sEXDLkm6GXeaJV78HCoNFk/14LC947BxN6T5Sc9lzWo/s0t8JoZODjAe6uON9OzfgsCs8oH7hhNys8QM/6EqBgcL2sEvJi9N0vsBKG351DHVFjGMv7j28+N/FzYkrrtET6EyPxcZ7S3TYUQb92hW/cMBJ6lqusmGfzFQ56WnAJyKJei0vH+IykBFBJ+Km2X3DS3/i30l0j8w4dN0vjYkAC+oWGho5iDN8cp5K93cLhgnDhPr6fU2tRMHB3bPjRMGgT+TmP9zJJ87mSiwCJgJJGl8NVODz54e66CZcOPZdTBzsdC7YSfvlvUE7PUt77LJO69EfZT3s3CAfe0hks7fFpZ8SIqw50F2K5ed7o4CswewPlvsA0yeZCOHZWFk0X2rRSWzfgz7TOAfim37HYp/kYQWFi8XYpd93Q5uPSVId6CX/dJoGfFNHx4oY/lsKQKbYo= +node_js: '6' addons: firefox: latest apt: @@ -16,8 +18,7 @@ addons: - google-chrome packages: - google-chrome-stable - sauce_connect: true script: - xvfb-run wct - - "if [ \"${TRAVIS_PULL_REQUEST}\" = \"false\" ]; then wct -s 'default'; fi" + - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' dist: trusty diff --git a/lib/gold-cc-expiration-input/CONTRIBUTING.md b/lib/gold-cc-expiration-input/CONTRIBUTING.md index f147978a..093090d4 100644 --- a/lib/gold-cc-expiration-input/CONTRIBUTING.md +++ b/lib/gold-cc-expiration-input/CONTRIBUTING.md @@ -1,4 +1,3 @@ - + # Polymer Elements ## Guide for Contributors diff --git a/lib/gold-cc-expiration-input/bower.json b/lib/gold-cc-expiration-input/bower.json index 281691bc..368739ec 100644 --- a/lib/gold-cc-expiration-input/bower.json +++ b/lib/gold-cc-expiration-input/bower.json @@ -1,6 +1,6 @@ { "name": "gold-cc-expiration-input", - "version": "1.1.2", + "version": "1.1.3", "description": "A validating input for a credit card expiration date", "authors": [ "The Polymer Authors" @@ -21,6 +21,7 @@ "homepage": "https://github.com/PolymerElements/gold-cc-expiration-input", "ignore": [], "dependencies": { + "iron-a11y-keys-behavior": "PolymerElements/iron-a11y-keys-behavior#^1.1.2", "iron-validator-behavior": "PolymerElements/iron-validator-behavior#^1.0.0", "iron-validatable-behavior": "PolymerElements/iron-validatable-behavior#^1.0.0", "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", diff --git a/lib/gold-cc-expiration-input/date-input.html b/lib/gold-cc-expiration-input/date-input.html index b882cca9..e26236e1 100644 --- a/lib/gold-cc-expiration-input/date-input.html +++ b/lib/gold-cc-expiration-input/date-input.html @@ -8,6 +8,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt --> + @@ -96,6 +97,7 @@ is: 'date-input', behaviors: [ + Polymer.IronA11yKeysBehavior, Polymer.IronValidatableBehavior ], @@ -112,14 +114,16 @@ * The month component of the date displayed. */ month: { - type: String + type: String, + value: '' }, /** * The year component of the date displayed. */ year: { - type: String + type: String, + value: '' }, /** @@ -170,17 +174,25 @@ } }, + keyBindings: { + '/': '_selectYear' + }, + observers: [ - '_computeDate(month,year)' + '_computeDate(month, year)' ], + _selectYear: function() { + this.$.expirationYear.focus(); + }, + _computeDate: function(month, year) { // Months are 0-11. this.date = {month: month, year: year}; this.fire('dateChanged', this.date); // Advance cursor to year after month entry - if (month.length === 2) { - this.$.expirationYear.focus(); + if (month && month.length === 2) { + this._selectYear(); } }, diff --git a/lib/gold-cc-expiration-input/gold-cc-expiration-input.html b/lib/gold-cc-expiration-input/gold-cc-expiration-input.html index f22fc865..01909f6d 100644 --- a/lib/gold-cc-expiration-input/gold-cc-expiration-input.html +++ b/lib/gold-cc-expiration-input/gold-cc-expiration-input.html @@ -71,8 +71,6 @@ +### Description + + +### Expected outcome + + + +### Actual outcome + + + +### Live Demo + + +### Steps to reproduce + + + +### Browsers Affected + +- [ ] Chrome +- [ ] Firefox +- [ ] Safari 9 +- [ ] Safari 8 +- [ ] Safari 7 +- [ ] Edge +- [ ] IE 11 +- [ ] IE 10 diff --git a/lib/gold-email-input/.travis.yml b/lib/gold-email-input/.travis.yml index dacdd58c..b06d517a 100644 --- a/lib/gold-email-input/.travis.yml +++ b/lib/gold-email-input/.travis.yml @@ -1,25 +1,24 @@ language: node_js -sudo: false +sudo: required before_script: - npm install -g bower polylint web-component-tester - bower install - polylint env: global: - - secure: B+m2S4oNP9GhMZVNREGE3lQ96s75KTArP68LHSSM9MTWt3amA4v619ibkxcE5rsgNu/M/buxaEONtDWPIUSF3zW1pNRMwHCvPsalFyIzfwLz50hWjJsP8T6LIciwoUj2tgxnzKFApPOxNY0EwBJ/EEOLImxVuGfEfAwcVQ2IuOAeks0S67sHgC1qVGNf2raGrlynobhcT5/7swazlGMTwuK8EdnUkjK/eUx9RPBSrmnDCswxIctzdETrx+X2NeWPafZ94pWZAFYFcXc7Hw3YKFjaseyjb4Y2cQ8CZQMwAsVeTKz7T2hPo+P0BbhY2twFPcxiObApy8yXW+AN8i+ZWhrzmYTzwjBGlKxYPQUAgOM3lqqhLTfbf+847/xr1QqcuKdIq1KkCGZiA0F7bVkuJHPj4gBV5V7F+RXJqQsFCB+EM49uxV6m2BCHLvFIn2JS6VWMokx12qeSc7rqQzE/SXfi4RXF/03+nOurRBwjL9SgpXs9pvsjpaK8VZBQ+BYKOZzD7DWK9CgO6VkZJkg7wMMJkn1aytl9bs5DCHMqFGwIEMxoTz/VzeWWrZDL9e38QYe4jVpNgXob4O8PbTibii9XTX5cPrXeLQCHEnfPjjGZWdZ1A3ODGdNgrhqlkX7cWaAV4vMB3VrmmxxTTqbHQ8WRo86RIik3MLPjkeDLPRI= - - secure: urXzfvTHqMjsbkuIMBf7MadGElWAXwQsOsMRV/WBDYRfs/Ey2tFWIXQZ/HJNREC2+bQw+z0/SBntWKvpK1XK4duLCxNtkXkrwiqE27632IHYBDB00lN119KZoXK/DbpBe/JE/AZRKLKGB4Ts2g9FeTXsMcoczlyaY5hPKf7MMzQRyTzSU6qzc+Bxa/8AF12MpbIac7AWeUfhaWiDYYn4Wkqaf0Od4aY5M6aFxhAOh/53X6V74Cpg7B50eLCBHFWF1O0Xq5EKBKoL7TJ2t15+gNtImT/MSnAVkIyXBg0hUqLvFjOjCfP8NU9jR+GQRQhKmMwBhV95gfPvZEUPO/lJ5b41ADLQ8y9L21JlWNDYxcBp3VmvoD08d+r6LY85A5tZ5X5p0tFWIxq9U7mMTnoZH3Fpub6MT36UrsJS3frTa2rIM99i7AsH1jvhMTpFCpICpa5yS2XJeTUEUx1NKK93oDpdsC4P58VFnpEJnSp/EmH36n8XBeDbOySL8McnUQ37oaEig3rfGvBZoig0V1RF3tlBVs/VcJMApG71eF6C/vOQOxHOSmSkWxvBU7X+QrzoRmK2v38qTbWSKDZ5ftCu7c9jyNxv010V++gX9k760qrhoQ+VAEjk/VAO6O171OdImdcjpZENZhczkAfEqrEHrYWolmaMZsWruEuD3/RbMjA= - - CXX=g++-4.8 -node_js: stable + - secure: >- + gHy8OTch7/ynhy1iZL4s11/vuHHQinATOWWXpYE5F+IvXF4W4Iiw/YLGNtPfMR0aE8mv8OJfdfcut8I3z6Wlg6yEoGyMvNZBoe/qb1RDvRRCx3/V4vO3l80QOkGdNbGvFApnGY4SGsNmjp0Pix+R1CKwnQ/QfZBHJBgtoVlje4FejDul/9YGU6UNDZ8V+j5nqeO5CuwBTwSXNRiJRmYbDBnE52YgXyJo9y2spsJXTPb0yfO43axMrV3jm3/cbNdgx+u4jgCsar50No9es1l1t/EebMwnaHlMN5z6TcIcj6bfmrfKcu1OtlAig3ZNQK/bKC1f8kzaK0waoHovEAhK5118oZxM7wsk1Anw5dzjjfPIUbtRLNR/A/Cn/TFCdjQy2YWNBkBpIx6c+D25QyHzHpAU98dkizElFgTl3jAI4QQQBDeYKShk4jIoJ+oFjMnr3LiW7aslmg53gK30nyXv9ExH9FxUdKwD1IV7bxPDn/2rxi6Q/IqGD95oHWdyS94IF6jd+MKa+nujcnORxmisUHYbNPbBLeuwF4YJUMXCafkgUCQL5NVvZVxRoW2+0FIjQ4QbhwX8zIYR9PGhnSHBMMzgjX4qb8MGYq038Pb6rqfiwyE3rucpnq0lylr/hNlWpKEPbg4MATzwLZ8vQsXIY7XWMdMOniSIi3+r/Y0xyRk= + - secure: >- + wxErWc0KMbQ1NBiOF2izDEHrx3UI603LO+dqDFnUvN0al/E10A0CJXyvtkBWMPoY4oMIfckrzF4/XnjlnNmliKCyEq9uKyhEVhk2y8hH1a8rcbgZUTls+kq1RmWJX8GchH/0J03YsVoDD6nJAPRkFMli6hBcfW5p4mo1ls9pZdm5NbB/CV/MHvilvsntdVsDCz/n7DKa/SZLQ8U4vSU/0o92XQrUNyUr5ehtefw4aVMdXLT07NGHOjRFG+3GJADzRESaurq5rcSR/tjrToJnLmVdDrVP08HfjIT/y+2O2dHzrZ302eVOoy/DCf5gJ0oygDja83bP9s+044qGgOLa6OxUn0kp6gblYpgMf9V8dpGiT4rGV1x3HgC5s9gDo8YXvewnJwCbuU8ROrgfGHKFsX6uYh+ZDffTiu+GX7s2sk9P+d89WCpt7J9kLvV3slwtIJbS9+ck721HFZYOaTUX3yAyEeBqml8J3MoVUBXM9cQr9w6bgbW2cXppkAa1jTXQZ5ZolF7Wg+OFjtzAQAWay1r+dhOIAcoiQLUle55b+HrdwDHnzeoMWhWzLGWIciGoJZ78Bm0TIIvKhnecBXwV4KsKnP1Q/mV4GkWCTkAlQ49tEfcFn7HN/xMCQmYJ3WIw+piA9KUVMAGnZ3EXEXRl9CHCnplc/FYstb4L7MmPUoA= +node_js: '6' addons: firefox: latest apt: sources: - google-chrome - - ubuntu-toolchain-r-test packages: - google-chrome-stable - - g++-4.8 - sauce_connect: true script: - xvfb-run wct - - "if [ \"${TRAVIS_PULL_REQUEST}\" = \"false\" ]; then wct -s 'default'; fi" + - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' +dist: trusty diff --git a/lib/gold-email-input/CONTRIBUTING.md b/lib/gold-email-input/CONTRIBUTING.md index 7b101415..093090d4 100644 --- a/lib/gold-email-input/CONTRIBUTING.md +++ b/lib/gold-email-input/CONTRIBUTING.md @@ -1,11 +1,16 @@ - + # Polymer Elements ## Guide for Contributors @@ -41,7 +46,7 @@ Polymer Elements are built in the open, and the Polymer authors eagerly encourag 3. Click the `paper-foo` element. ``` - 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [http://jsbin.com/cagaye](http://jsbin.com/cagaye/edit?html,output). + 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output). 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. @@ -51,14 +56,14 @@ Polymer Elements are built in the open, and the Polymer authors eagerly encourag When submitting pull requests, please provide: - 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues using the following syntax: + 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax: ```markdown (For a single issue) Fixes #20 (For multiple issues) - Fixes #32, #40 + Fixes #32, fixes #40 ``` 2. **A succinct description of the design** used to fix any related issues. For example: diff --git a/lib/gold-email-input/README.md b/lib/gold-email-input/README.md index ff810b97..4065de25 100644 --- a/lib/gold-email-input/README.md +++ b/lib/gold-email-input/README.md @@ -12,9 +12,9 @@ thing! https://github.com/PolymerLabs/tedium/issues --> -[![Build Status](https://travis-ci.org/PolymerElements/gold-email-input.svg?branch=master)](https://travis-ci.org/PolymerElements/gold-email-input) +[![Build status](https://travis-ci.org/PolymerElements/gold-email-input.svg?branch=master)](https://travis-ci.org/PolymerElements/gold-email-input) -_[Demo and API Docs](https://elements.polymer-project.org/elements/gold-email-input)_ +_[Demo and API docs](https://elements.polymer-project.org/elements/gold-email-input)_ ##<gold-email-input> diff --git a/lib/gold-email-input/bower.json b/lib/gold-email-input/bower.json index d618b61c..ac3d60c3 100644 --- a/lib/gold-email-input/bower.json +++ b/lib/gold-email-input/bower.json @@ -1,6 +1,6 @@ { "name": "gold-email-input", - "version": "1.0.7", + "version": "1.0.9", "description": "An email input field", "authors": [ "The Polymer Authors" diff --git a/lib/gold-email-input/gold-email-input.html b/lib/gold-email-input/gold-email-input.html index aa52dbc8..387a7403 100644 --- a/lib/gold-email-input/gold-email-input.html +++ b/lib/gold-email-input/gold-email-input.html @@ -52,6 +52,11 @@ :host { display: block; } + + :host([hidden]) { + display: none !important; + } + - + TqFz1Cdu4BtLCHYLFPES0q+6wPfCnj9bnTfven9LIU+gtek70FPDT3UlnviNwp5ob3o0sbLgsLWG5OkCsRHli+HCgPEVDazSrghfwaT9mL+h/DlM/PVB079VDdIKvZM6L7xEF0zPv7t26kljBRQcZJ81O3K7h1mNjeBj6sDXHzE= + - secure: >- + ihYM52Uu3H7FGU+x+f+hzMcWt00B7l6GZOtxzT1xYx4hb4E9/WwXYR5z9bqN+s5p10yf3FG64zbmMTuJeBvknDpSyBt/vKP+QBBZT0hxv05GifS38hiSoYT3HBxEpwhYdpjlsSJtIbKfYGR3xIXutRzRrRKSYigcrQNX83MGWFY= +node_js: '6' addons: - firefox: '46.0' + firefox: latest apt: sources: - - google-chrome + - google-chrome packages: - - google-chrome-stable - sauce_connect: true + - google-chrome-stable script: -- xvfb-run wct -- if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s 'default'; fi + - xvfb-run wct + - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' dist: trusty diff --git a/lib/iron-autogrow-textarea/bower.json b/lib/iron-autogrow-textarea/bower.json index 24f734c4..3abdfa30 100644 --- a/lib/iron-autogrow-textarea/bower.json +++ b/lib/iron-autogrow-textarea/bower.json @@ -1,6 +1,6 @@ { "name": "iron-autogrow-textarea", - "version": "1.0.14", + "version": "1.0.15", "description": "A textarea element that automatically grows with input", "authors": [ "The Polymer Authors" diff --git a/lib/iron-autogrow-textarea/iron-autogrow-textarea.html b/lib/iron-autogrow-textarea/iron-autogrow-textarea.html index 7f0ad731..b70d6ae5 100644 --- a/lib/iron-autogrow-textarea/iron-autogrow-textarea.html +++ b/lib/iron-autogrow-textarea/iron-autogrow-textarea.html @@ -277,6 +277,18 @@ this.$.textarea.selectionEnd = value; }, + attached: function() { + /* iOS has an arbitrary left margin of 3px that isn't present + * in any other browser, and means that the paper-textarea's cursor + * overlaps the label. + * See https://github.com/PolymerElements/paper-input/issues/468. + */ + var IS_IOS = navigator.userAgent.match(/iP(?:[oa]d|hone)/); + if (IS_IOS) { + this.$.textarea.style.marginLeft = '-3px'; + } + }, + /** * Returns true if `value` is valid. The validator provided in `validator` * will be used first, if it exists; otherwise, the `textarea`'s validity diff --git a/lib/iron-collapse/.bower.json b/lib/iron-collapse/.bower.json index 5050de19..eafb541f 100644 --- a/lib/iron-collapse/.bower.json +++ b/lib/iron-collapse/.bower.json @@ -1,6 +1,6 @@ { "name": "iron-collapse", - "version": "1.2.1", + "version": "1.3.0", "description": "Provides a collapsable container", "authors": [ "The Polymer Authors" @@ -31,11 +31,11 @@ "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0" }, "main": "iron-collapse.html", - "_release": "1.2.1", + "_release": "1.3.0", "_resolution": { "type": "version", - "tag": "v1.2.1", - "commit": "5f994b1ac109925f6849b134e479229a16a752db" + "tag": "v1.3.0", + "commit": "a6a66288669d59202b23125b70de3d4d91bd528e" }, "_source": "git://github.com/PolymerElements/iron-collapse.git", "_target": "^1.0.0", diff --git a/lib/iron-collapse/.travis.yml b/lib/iron-collapse/.travis.yml index 87c58487..b9efff23 100644 --- a/lib/iron-collapse/.travis.yml +++ b/lib/iron-collapse/.travis.yml @@ -10,15 +10,14 @@ env: UKNKHUjbp8O3UiVmnCmmprLR573ZXak9znhIvy0Uvxpkga7DFvfKvYRFCXQI/eV2I9YOI1FgVjlPfH8Id1NOWdMLdNjAI7G5p4FWisgu36kfat853HDYemoxx0C9nqPwakPGCJ9duL1w0dwje2sEHndk1cdwkU3TMsgkawdOJbU= - secure: >- cWudj1yh2mzialubEqhSHBG/CPLtI9ZeUPaI1+N3hiPzvuxqGaEbkpzEmlZrdAfuy9axCQStg88dgKRSv+TdMbcDKpzQqfClxTf9baKgrSgzVoMReY0kjHumCJz1tIVIz74ggp/gdQVFyS9CiA82pHTnxDl/drwPIHa2S8ST02U= -node_js: stable +node_js: '6' addons: - firefox: '46.0' + firefox: latest apt: sources: - google-chrome packages: - google-chrome-stable - sauce_connect: true script: - xvfb-run wct - 'if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then wct -s ''default''; fi' diff --git a/lib/iron-collapse/bower.json b/lib/iron-collapse/bower.json index e34d6eb5..a2e6b279 100644 --- a/lib/iron-collapse/bower.json +++ b/lib/iron-collapse/bower.json @@ -1,6 +1,6 @@ { "name": "iron-collapse", - "version": "1.2.1", + "version": "1.3.0", "description": "Provides a collapsable container", "authors": [ "The Polymer Authors" diff --git a/lib/iron-collapse/iron-collapse.html b/lib/iron-collapse/iron-collapse.html index b534da3e..75a79e70 100644 --- a/lib/iron-collapse/iron-collapse.html +++ b/lib/iron-collapse/iron-collapse.html @@ -119,6 +119,18 @@ observer: '_openedChanged' }, + /** + * When true, the element is transitioning its opened state. When false, + * the element has finished opening/closing. + * + * @attribute transitioning + */ + transitioning: { + type: Boolean, + notify: true, + readOnly: true + }, + /** * Set noAnimation to true to disable animations. * @@ -165,12 +177,7 @@ }, listeners: { - transitionend: '_transitionEnd' - }, - - attached: function() { - // It will take care of setting correct classes and styles. - this._transitionEnd(); + transitionend: '_onTransitionEnd' }, /** @@ -198,15 +205,13 @@ updateSize: function(size, animated) { // Consider 'auto' as '', to take full size. size = size === 'auto' ? '' : size; - // No change! - if (this._desiredSize === size) { - return; - } + + var willAnimate = animated && !this.noAnimation && + this.isAttached && this._desiredSize !== size; this._desiredSize = size; this._updateTransition(false); - var willAnimate = animated && !this.noAnimation && this._isDisplayed; // If we can animate, must do some prep work. if (willAnimate) { // Animation will start at the current size. @@ -262,6 +267,7 @@ this.setAttribute('aria-expanded', this.opened); this.setAttribute('aria-hidden', !this.opened); + this._setTransitioning(true); this.toggleClass('iron-collapse-closed', false); this.toggleClass('iron-collapse-opened', false); this.updateSize(this.opened ? 'auto' : '0px', true); @@ -278,19 +284,13 @@ this.toggleClass('iron-collapse-opened', this.opened); this._updateTransition(false); this.notifyResize(); + this._setTransitioning(false); }, - /** - * Simplistic heuristic to detect if element has a parent with display: none - * - * @private - */ - get _isDisplayed() { - var rect = this.getBoundingClientRect(); - for (var prop in rect) { - if (rect[prop] !== 0) return true; + _onTransitionEnd: function(event) { + if (Polymer.dom(event).rootTarget === this) { + this._transitionEnd(); } - return false; }, _calcSize: function() { diff --git a/lib/iron-collapse/test/basic.html b/lib/iron-collapse/test/basic.html index 254928c8..c47686cc 100644 --- a/lib/iron-collapse/test/basic.html +++ b/lib/iron-collapse/test/basic.html @@ -28,7 +28,7 @@ - -