diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..c1b91c3 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +YOUTUBE_KEY=YOUR_KEY \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9d7ee6d --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,31 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "eslint:recommended", + "plugin:react/recommended" + ], + "rules": { + "no-useless-escape": "off", + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "no-var": "error" + }, + "parserOptions": { + "ecmaVersion": 12, + "sourceType": "module" + }, + "globals": { + "$": "readonly", + "chrome": "readonly", + "ga": "readonly", + "process": "readonly" + }, + "settings": { + "react": { + "version": "detect" + } + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9f4e6b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules +searcher +searcher.zip +.env +.vs +package-lock.json +src/js/*.js +src/js/*.txt \ No newline at end of file diff --git a/babel.config.json b/babel.config.json new file mode 100644 index 0000000..a1dfb3b --- /dev/null +++ b/babel.config.json @@ -0,0 +1,10 @@ +{ + "presets": [ + [ + "@babel/preset-react", + { + "runtime": "automatic" + } + ] + ] +} \ No newline at end of file diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000..4212f7f --- /dev/null +++ b/build/build.js @@ -0,0 +1,31 @@ +const clean = require('./clean'); +const copy = require('./copy'); +const bundleCSS = require('./bundle-css'); +const updateVariables = require('./update-variables'); +const zip = require('./zip'); + +var args = process.argv.slice(2); +var buildType = getParameter(args, 'buildType'); +if (buildType == '') buildType = 'test'; + +function getParameter(args, key) { + var value = ''; + args.forEach(function (v, i, a) { + var keyValue = v.split('='); + if (keyValue == undefined || keyValue.length < 2) + return; + if (key == keyValue[0]) + value = keyValue[1]; + }); + return value; +} + +async function build() { + await clean(buildType); + await copy(); + await bundleCSS(); + await updateVariables(); + zip(buildType); +} + +build(); diff --git a/build/bundle-css.js b/build/bundle-css.js new file mode 100644 index 0000000..cb0170c --- /dev/null +++ b/build/bundle-css.js @@ -0,0 +1,20 @@ +const fs = require('fs-extra'); +const less = require('less'); + +var cssDir = 'searcher/css'; +var files = [`${cssDir}/sfd`, `${cssDir}/settings`]; + +async function bundleCSS() { + var allFiles = await fs.readdir(cssDir); + for (var i = 0; i < files.length; i++) { + var v = files[i]; + var input = await fs.readFile(`${v}.less`, { encoding: 'utf8' }); + var output = await less.render(input, { filename: `${v}.less` }); + await fs.outputFile(`${v}.css`, output.css, { encoding: 'utf8' }); + } + for (var i = 0; i < allFiles.length; i++) { + await fs.remove(`${cssDir}/${allFiles[i]}`); + } +} + +module.exports = bundleCSS \ No newline at end of file diff --git a/build/clean.js b/build/clean.js new file mode 100644 index 0000000..57c9651 --- /dev/null +++ b/build/clean.js @@ -0,0 +1,9 @@ +const fs = require('fs-extra'); + +async function clean(buildType) { + await fs.remove('searcher'); + if (buildType == 'prod') + await fs.remove('searcher.zip'); +} + +module.exports = clean; \ No newline at end of file diff --git a/build/copy.js b/build/copy.js new file mode 100644 index 0000000..d30d919 --- /dev/null +++ b/build/copy.js @@ -0,0 +1,7 @@ +const fs = require('fs-extra'); + +async function copy() { + await fs.copy('src', 'searcher'); +} + +module.exports = copy; \ No newline at end of file diff --git a/build/update-variables.js b/build/update-variables.js new file mode 100644 index 0000000..c16facf --- /dev/null +++ b/build/update-variables.js @@ -0,0 +1,9 @@ +const fs = require('fs-extra'); + +async function updateVariables() { + var manifest = await fs.readFile('searcher/manifest.json', 'utf8'); + var manifest = manifest.replace(/VERSION/g, process.env.npm_package_version); + await fs.writeFile('searcher/manifest.json', manifest, 'utf8'); +} + +module.exports = updateVariables; \ No newline at end of file diff --git a/build/zip.js b/build/zip.js new file mode 100644 index 0000000..b3f3b01 --- /dev/null +++ b/build/zip.js @@ -0,0 +1,11 @@ +const zipFolder = require('zip-folder'); + +function zip(buildType) { + if (buildType == 'prod') + zipFolder('searcher', 'searcher.zip', function (err) { + if (err) + console.log(err); + }); +} + +module.exports = zip \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..9b8fb5a --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "name": "searcher-for-discogs", + "version": "8.1.0", + "description": "Allows to listen to tracks on Discogs by clicking on it.", + "scripts": { + "build": "node build/build.js buildType=test", + "build-webpack": "webpack --mode=development && npm run build", + "release-webpack": "webpack --mode=production && npm run release", + "release": "node build/build.js buildType=prod" + }, + "author": "Dmitry Sergienko", + "license": "ISC", + "devDependencies": { + "@babel/cli": "^7.17.10", + "@babel/core": "^7.18.0", + "@babel/preset-react": "^7.17.12", + "babel-loader": "^8.2.5", + "dotenv": "^16.0.1", + "dotenv-webpack": "^7.1.0", + "eslint": "^8.16.0", + "eslint-plugin-react": "^7.30.0", + "eslint-webpack-plugin": "^3.1.1", + "fs-extra": "^10.0.1", + "less": "^4.1.2", + "react": "^18.1.0", + "react-dom": "^18.1.0", + "webpack": "^5.72.1", + "webpack-cli": "^4.9.2", + "zip-folder": "^1.0.0" + } +} diff --git a/src/background.js b/src/background.js new file mode 100644 index 0000000..9b84f10 --- /dev/null +++ b/src/background.js @@ -0,0 +1,40 @@ +chrome.runtime.onMessage.addListener( + function (request, sender, sendResponse) { + if (request.method == "getQueryResult") { + var headers = {}; + if (request.contentType != undefined) + Object.assign(headers, { "Content-type": request.contentType }); + if (request.auth != undefined) + Object.assign(headers, { "Authorization": request.auth }); + + fetch(request.url, { + method: request.type, + headers: headers, + body: request.data, + referrer: request.referrer + }) + .then(function (response) { + if (response.status == 204) + return; + else + return response.text(); + }).then(function (response) { + if (response == undefined) + return; + + if (response.error) { + sendResponse({ + success: false, + error: { + status: response.error.code, + message: response.error.message + } + }); + } else { + sendResponse({ success: true, result: response }); + } + }); + + return true; + } + }); \ No newline at end of file diff --git a/src/css/bootstrap.css b/src/css/bootstrap.css new file mode 100644 index 0000000..219406b --- /dev/null +++ b/src/css/bootstrap.css @@ -0,0 +1,730 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.3/customize/?id=96f4d2777004b50417b75efcad08820b) + * Config saved to config.json and https://gist.github.com/96f4d2777004b50417b75efcad08820b + */ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + font-size: 2em; + margin: 0.67em 0; +} +mark { + background: #ff0; + color: #000; +} +small { + font-size: 80%; +} +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} +legend { + border: 0; + padding: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-collapse: collapse; + border-spacing: 0; +} +td, +th { + padding: 0; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333333; + background-color: #ffffff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + padding: 4px; + line-height: 1.42857143; + background-color: #ffffff; + border: 1px solid #dddddd; + border-radius: 4px; + -webkit-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + display: inline-block; + max-width: 100%; + height: auto; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eeeeee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + font-size: 14px; + text-align: left; + background-color: #ffffff; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); + -webkit-background-clip: padding-box; + background-clip: padding-box; +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + text-decoration: none; + color: #262626; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + outline: 0; + background-color: #337ab7; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); + cursor: not-allowed; +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + left: auto; + right: 0; +} +.dropdown-menu-left { + left: 0; + right: auto; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; + content: ""; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + left: auto; + right: 0; + } + .navbar-right .dropdown-menu-left { + left: 0; + right: auto; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 12px; + opacity: 0; + filter: alpha(opacity=0); +} +.tooltip.in { + opacity: 0.9; + filter: alpha(opacity=90); +} +.tooltip.top { + margin-top: -3px; + padding: 5px 0; +} +.tooltip.right { + margin-left: 3px; + padding: 0 5px; +} +.tooltip.bottom { + margin-top: 3px; + padding: 5px 0; +} +.tooltip.left { + margin-left: -3px; + padding: 0 5px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + background-color: #000000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-left .tooltip-arrow { + bottom: 0; + right: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + font-size: 14px; + background-color: #ffffff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #cccccc; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + margin: 0; + padding: 8px 14px; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + border-width: 10px; + content: ""; +} +.popover.top > .arrow { + left: 50%; + margin-left: -11px; + border-bottom-width: 0; + border-top-color: #999999; + border-top-color: rgba(0, 0, 0, 0.25); + bottom: -11px; +} +.popover.top > .arrow:after { + content: " "; + bottom: 1px; + margin-left: -10px; + border-bottom-width: 0; + border-top-color: #ffffff; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-left-width: 0; + border-right-color: #999999; + border-right-color: rgba(0, 0, 0, 0.25); +} +.popover.right > .arrow:after { + content: " "; + left: 1px; + bottom: -10px; + border-left-width: 0; + border-right-color: #ffffff; +} +.popover.bottom > .arrow { + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999999; + border-bottom-color: rgba(0, 0, 0, 0.25); + top: -11px; +} +.popover.bottom > .arrow:after { + content: " "; + top: 1px; + margin-left: -10px; + border-top-width: 0; + border-bottom-color: #ffffff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999999; + border-left-color: rgba(0, 0, 0, 0.25); +} +.popover.left > .arrow:after { + content: " "; + right: 1px; + border-right-width: 0; + border-left-color: #ffffff; + bottom: -10px; +} +.clearfix:before, +.clearfix:after { + content: " "; + display: table; +} +.clearfix:after { + clear: both; +} +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} diff --git a/src/css/settings.less b/src/css/settings.less new file mode 100644 index 0000000..39a9298 --- /dev/null +++ b/src/css/settings.less @@ -0,0 +1,20 @@ +.settings { + padding: 15px 0 0 15px; + + .settings-title { + font-size: 1.5em; + margin-top: 30px; + + &:first-of-type { + margin-top: 0; + } + } + + .setting { + padding-top: 15px; + + .setting-children { + padding-left: 15px; + } + } +} diff --git a/src/css/sfd.less b/src/css/sfd.less new file mode 100644 index 0000000..fe7f27f --- /dev/null +++ b/src/css/sfd.less @@ -0,0 +1,204 @@ +@import (inline) "bootstrap.css"; + +.popover-content { + min-height: 359px; +} + +.discogs-searcher { + display: flex; + justify-content: flex-end; + align-items: center; + padding-bottom: 9px; + + button { + outline: none !important; + } + + a, a:focus { + outline: none; + text-decoration: none + } + + .social-item { + margin: 0px 5px; + background-color: transparent; + width: 32px; + height: 32px; + background-size: 100% !important; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 0px; + + img { + width: 32px; + height: 32px; + } + + &:last-child { + margin-right: 0px; + } + } + + .dropdown { + width: 32px; + height: 32px; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 0px; + + button { + width: 32px; + height: 32px; + background-size: 100% !important; + border-width: initial; + border-style: none; + border-color: initial; + border-image: initial; + padding: 0px; + background-color: transparent; + } + + .dropdown-menu { + position: absolute; + top: 100%; + left: 0px; + z-index: 1000; + float: left; + min-width: auto; + font-size: 14px; + text-align: left; + background-color: rgb(255, 255, 255); + box-shadow: rgba(0, 0, 0, 0.176) 0px 6px 12px; + background-clip: padding-box; + padding: 5px 0px; + margin: 2px 0px 0px; + list-style: none; + border-width: 1px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.15); + border-image: initial; + border-radius: 4px; + + li { + cursor: pointer; + margin-bottom: 5px; + padding: 0px 5px; + + &:last-of-type { + margin-bottom: 0px; + } + + img { + width: 32px; + height: 32px; + } + } + } + } +} + +.track-selected { + color: red !important; +} + +.track-visited { + color: green !important; +} + +.click-icon-ds { + cursor: pointer; + width: 16px; + height: 16px; + margin-left: 5px; +} + +.popover { + max-width: none; + position: absolute !important; + top: 0px; + left: 0px; + z-index: 1060; + display: none; + max-width: 100%; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + line-break: auto; + line-height: 1.42857; + text-align: start; + text-shadow: none; + text-transform: none; + white-space: normal; + word-break: normal; + word-spacing: normal; + overflow-wrap: normal; + font-size: 14px; + background-color: rgb(255, 255, 255); + background-clip: padding-box; + box-shadow: rgba(0, 0, 0, 0.2) 0px 5px 10px; + padding: 1px; + text-decoration: none; + border-width: 1px; + border-style: solid; + border-color: rgba(0, 0, 0, 0.2); + border-image: initial; + border-radius: 6px; + + .popover-content { + text-align: center; + padding: 9px 14px; + } +} + +.signin { + cursor: pointer; +} + +.expired { + width: 300px; + text-align: left; + + .sfd-title { + font-size: 20px; + } + + .sfd-subtitle { + font-size: 15px; + margin-top: 20px; + } + + .subscribe { + background-color: #000000; + color: #ffffff; + border-radius: 4px; + padding: 10px; + width: 100%; + margin-top: 20px; + display: block; + text-align: center; + outline: none; + + &:hover, &:focus { + text-decoration: none; + outline: none; + } + } +} + +.right { + width: auto !important; + margin-top: 0 !important; + padding-left: 0 !important; + border: none !important; + background-color: white !important; + padding-top: 0 !important; +} + +.release_left_column { + overflow-x: initial !important; +} diff --git a/src/html/settings.html b/src/html/settings.html new file mode 100644 index 0000000..373ca36 --- /dev/null +++ b/src/html/settings.html @@ -0,0 +1,11 @@ + + + + Searcher for Discogs - Settings + + + +
+ + + \ No newline at end of file diff --git a/src/images/add.png b/src/images/add.png new file mode 100644 index 0000000..266d17f Binary files /dev/null and b/src/images/add.png differ diff --git a/src/images/deezer.png b/src/images/deezer.png new file mode 100644 index 0000000..13d716d Binary files /dev/null and b/src/images/deezer.png differ diff --git a/src/images/ebay.png b/src/images/ebay.png new file mode 100644 index 0000000..266e98f Binary files /dev/null and b/src/images/ebay.png differ diff --git a/src/images/eye.png b/src/images/eye.png new file mode 100644 index 0000000..6a5726a Binary files /dev/null and b/src/images/eye.png differ diff --git a/src/images/icon.png b/src/images/icon.png new file mode 100644 index 0000000..cef6dab Binary files /dev/null and b/src/images/icon.png differ diff --git a/src/images/icon16.png b/src/images/icon16.png new file mode 100644 index 0000000..64b7768 Binary files /dev/null and b/src/images/icon16.png differ diff --git a/src/images/icon48.png b/src/images/icon48.png new file mode 100644 index 0000000..3da7238 Binary files /dev/null and b/src/images/icon48.png differ diff --git a/src/images/info.png b/src/images/info.png new file mode 100644 index 0000000..3294327 Binary files /dev/null and b/src/images/info.png differ diff --git a/src/images/next.png b/src/images/next.png new file mode 100644 index 0000000..4b6c0cd Binary files /dev/null and b/src/images/next.png differ diff --git a/src/images/prev.png b/src/images/prev.png new file mode 100644 index 0000000..5c2b961 Binary files /dev/null and b/src/images/prev.png differ diff --git a/src/images/settings.png b/src/images/settings.png new file mode 100644 index 0000000..ce58832 Binary files /dev/null and b/src/images/settings.png differ diff --git a/src/images/signin-light.png b/src/images/signin-light.png new file mode 100644 index 0000000..29ab511 Binary files /dev/null and b/src/images/signin-light.png differ diff --git a/src/images/spotify.png b/src/images/spotify.png new file mode 100644 index 0000000..04d12a4 Binary files /dev/null and b/src/images/spotify.png differ diff --git a/src/images/youtube.png b/src/images/youtube.png new file mode 100644 index 0000000..ec529a3 Binary files /dev/null and b/src/images/youtube.png differ diff --git a/src/js/libs/bootstrap.js b/src/js/libs/bootstrap.js new file mode 100644 index 0000000..9d4c2e2 --- /dev/null +++ b/src/js/libs/bootstrap.js @@ -0,0 +1,816 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +/*! + * Generated using the Bootstrap Customizer (https://getbootstrap.com/docs/3.3/customize/?id=96f4d2777004b50417b75efcad08820b) + * Config saved to config.json and https://gist.github.com/96f4d2777004b50417b75efcad08820b + */ +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); diff --git a/src/js/libs/ga.js b/src/js/libs/ga.js new file mode 100644 index 0000000..740e773 --- /dev/null +++ b/src/js/libs/ga.js @@ -0,0 +1,230 @@ +(function () { + var k = this, l = function (a, b) { a = a.split("."); var c = k; a[0] in c || "undefined" == typeof c.execScript || c.execScript("var " + a[0]); for (var d; a.length && (d = a.shift());)a.length || void 0 === b ? c = c[d] && c[d] !== Object.prototype[d] ? c[d] : c[d] = {} : c[d] = b }; var m = function (a, b) { for (var c in b) b.hasOwnProperty(c) && (a[c] = b[c]) }, n = function (a) { for (var b in a) if (a.hasOwnProperty(b)) return !0; return !1 }; var q = /^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i; var r = window, t = document, u = function (a, b) { t.addEventListener ? t.addEventListener(a, b, !1) : t.attachEvent && t.attachEvent("on" + a, b) }; var v = /:[0-9]+$/, x = function (a, b) { + b && (b = String(b).toLowerCase()); if ("protocol" === b || "port" === b) a.protocol = w(a.protocol) || w(r.location.protocol); "port" === b ? a.port = String(Number(a.hostname ? a.port : r.location.port) || ("http" == a.protocol ? 80 : "https" == a.protocol ? 443 : "")) : "host" === b && (a.hostname = (a.hostname || r.location.hostname).replace(v, "").toLowerCase()); var c = w(a.protocol); b && (b = String(b).toLowerCase()); switch (b) { + case "url_no_fragment": b = ""; a && a.href && (b = a.href.indexOf("#"), b = 0 > b ? a.href : a.href.substr(0, + b)); a = b; break; case "protocol": a = c; break; case "host": a = a.hostname.replace(v, "").toLowerCase(); break; case "port": a = String(Number(a.port) || ("http" == c ? 80 : "https" == c ? 443 : "")); break; case "path": a = "/" == a.pathname.substr(0, 1) ? a.pathname : "/" + a.pathname; a = a.split("/"); a: if (b = a[a.length - 1], c = [], Array.prototype.indexOf) b = c.indexOf(b), b = "number" == typeof b ? b : -1; else { for (var d = 0; d < c.length; d++)if (c[d] === b) { b = d; break a } b = -1 } 0 <= b && (a[a.length - 1] = ""); a = a.join("/"); break; case "query": a = a.search.replace("?", ""); break; + case "extension": a = a.pathname.split("."); a = 1 < a.length ? a[a.length - 1] : ""; a = a.split("/")[0]; break; case "fragment": a = a.hash.replace("#", ""); break; default: a = a && a.href + }return a + }, w = function (a) { return a ? a.replace(":", "").toLowerCase() : "" }, y = function (a) { var b = t.createElement("a"); a && (b.href = a); a = b.pathname; "/" !== a[0] && (a = "/" + a); var c = b.hostname.replace(v, ""); return { href: b.href, protocol: b.protocol, host: b.host, hostname: c, pathname: a, search: b.search, hash: b.hash, port: b.port } }; function z() { for (var a = A, b = {}, c = 0; c < a.length; ++c)b[a[c]] = c; return b } function B() { var a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; a += a.toLowerCase() + "0123456789-_"; return a + "." } + var A, C, D = function (a) { A = A || B(); C = C || z(); for (var b = [], c = 0; c < a.length; c += 3) { var d = c + 1 < a.length, e = c + 2 < a.length, g = a.charCodeAt(c), f = d ? a.charCodeAt(c + 1) : 0, h = e ? a.charCodeAt(c + 2) : 0, p = g >> 2; g = (g & 3) << 4 | f >> 4; f = (f & 15) << 2 | h >> 6; h &= 63; e || (h = 64, d || (f = 64)); b.push(A[p], A[g], A[f], A[h]) } return b.join("") }, E = function (a) { + function b(b) { for (; d < a.length;) { var c = a.charAt(d++), e = C[c]; if (null != e) return e; if (!/^[\s\xa0]*$/.test(c)) throw Error("Unknown base64 encoding at char: " + c); } return b } A = A || B(); C = C || z(); for (var c = "", d = 0; ;) { + var e = + b(-1), g = b(0), f = b(64), h = b(64); if (64 === h && -1 === e) return c; c += String.fromCharCode(e << 2 | g >> 4); 64 != f && (c += String.fromCharCode(g << 4 & 240 | f >> 2), 64 != h && (c += String.fromCharCode(f << 6 & 192 | h))) + } + }; var F; function G(a, b) { if (!a || b === t.location.hostname) return !1; for (var c = 0; c < a.length; c++)if (a[c] instanceof RegExp) { if (a[c].test(b)) return !0 } else if (0 <= b.indexOf(a[c])) return !0; return !1 } var H = function () { var a = {}; var b = r.google_tag_data; r.google_tag_data = void 0 === b ? a : b; a = r.google_tag_data; b = a.gl; b && b.decorators || (b = { decorators: [] }, a.gl = b); return b }; var I = /(.*?)\*(.*?)\*(.*)/, J = /([^?#]+)(\?[^#]*)?(#.*)?/, K = /(.*?)(^|&)_gl=([^&]*)&?(.*)/, M = function (a) { var b = [], c; for (c in a) if (a.hasOwnProperty(c)) { var d = a[c]; void 0 !== d && d === d && null !== d && "[object Object]" !== d.toString() && (b.push(c), b.push(D(String(d)))) } a = b.join("*"); return ["1", L(a), a].join("*") }, L = function (a, b) { + a = [window.navigator.userAgent, (new Date).getTimezoneOffset(), window.navigator.userLanguage || window.navigator.language, Math.floor((new Date).getTime() / 60 / 1E3) - (void 0 === b ? 0 : b), a].join("*"); + if (!(b = F)) { b = Array(256); for (var c = 0; 256 > c; c++) { for (var d = c, e = 0; 8 > e; e++)d = d & 1 ? d >>> 1 ^ 3988292384 : d >>> 1; b[c] = d } } F = b; b = 4294967295; for (c = 0; c < a.length; c++)b = b >>> 8 ^ F[(b ^ a.charCodeAt(c)) & 255]; return ((b ^ -1) >>> 0).toString(36) + }, P = function (a) { + return function (b) { + var c = y(r.location.href), d = c.search.replace("?", ""); a: { var e = d.split("&"); for (var g = 0; g < e.length; g++) { var f = e[g].split("="); if ("_gl" === decodeURIComponent(f[0]).replace(/\+/g, " ")) { e = f.slice(1).join("="); break a } } e = void 0 } b.query = N(e || "") || {}; e = x(c, "fragment"); + g = e.match(K); b.fragment = N(g && g[3] || "") || {}; a && O(c, d, e) + } + }; function Q(a) { var b = K.exec(a); if (b) { var c = b[2], d = b[4]; a = b[1]; d && (a = a + c + d) } return a } + var O = function (a, b, c) { function d(a, b) { a = Q(a); a.length && (a = b + a); return a } r.history && r.history.replaceState && (K.test(b) || K.test(c)) && (a = x(a, "path"), b = d(b, "?"), c = d(c, "#"), r.history.replaceState({}, void 0, "" + a + b + c)) }, N = function (a) { + var b = void 0 === b ? 3 : b; try { + if (a) { + a: { for (var c = 0; 3 > c; ++c) { var d = I.exec(a); if (d) { var e = d; break a } a = decodeURIComponent(a) } e = void 0 } if (e && "1" === e[1]) { + var g = e[2], f = e[3]; a: { for (e = 0; e < b; ++e)if (g === L(f, e)) { var h = !0; break a } h = !1 } if (h) { + b = {}; var p = f ? f.split("*") : []; for (f = 0; f < p.length; f += + 2)b[p[f]] = E(p[f + 1]); return b + } + } + } + } catch (X) { } + }; function R(a, b, c) { function d(a) { a = Q(a); var b = a.charAt(a.length - 1); a && "&" !== b && (a += "&"); return a + f } c = void 0 === c ? !1 : c; var e = J.exec(b); if (!e) return ""; b = e[1]; var g = e[2] || ""; e = e[3] || ""; var f = "_gl=" + a; c ? e = "#" + d(e.substring(1)) : g = "?" + d(g.substring(1)); return "" + b + g + e } + function S(a, b, c) { for (var d = {}, e = {}, g = H().decorators, f = 0; f < g.length; ++f) { var h = g[f]; (!c || h.forms) && G(h.domains, b) && (h.fragment ? m(e, h.callback()) : m(d, h.callback())) } n(d) && (b = M(d), c ? T(b, a) : U(b, a, !1)); !c && n(e) && (c = M(e), U(c, a, !0)) } function U(a, b, c) { b.href && (a = R(a, b.href, void 0 === c ? !1 : c), q.test(a) && (b.href = a)) } + function T(a, b) { if (b && b.action) { var c = (b.method || "").toLowerCase(); if ("get" === c) { c = b.childNodes || []; for (var d = !1, e = 0; e < c.length; e++) { var g = c[e]; if ("_gl" === g.name) { g.setAttribute("value", a); d = !0; break } } d || (c = t.createElement("input"), c.setAttribute("type", "hidden"), c.setAttribute("name", "_gl"), c.setAttribute("value", a), b.appendChild(c)) } else "post" === c && (a = R(a, b.action), q.test(a) && (b.action = a)) } } + var V = function (a) { try { a: { var b = a.target || a.srcElement || {}; for (a = 100; b && 0 < a;) { if (b.href && b.nodeName.match(/^a(?:rea)?$/i)) { var c = b; break a } b = b.parentNode; a-- } c = null } if (c) { var d = c.protocol; "http:" !== d && "https:" !== d || S(c, c.hostname, !1) } } catch (e) { } }, W = function (a) { try { var b = a.target || a.srcElement || {}; if (b.action) { var c = x(y(b.action), "host"); S(b, c, !0) } } catch (d) { } }; l("google_tag_data.glBridge.auto", function (a, b, c, d) { var e = H(); e.init || (u("mousedown", V), u("keyup", V), u("submit", W), e.init = !0); a = { callback: a, domains: b, fragment: "fragment" === c, forms: !!d }; H().decorators.push(a) }); l("google_tag_data.glBridge.decorate", function (a, b, c) { c = !!c; a = M(a); if (b.tagName) { if ("a" == b.tagName.toLowerCase()) return U(a, b, c); if ("form" == b.tagName.toLowerCase()) return T(a, b) } if ("string" == typeof b) return R(a, b, c) }); l("google_tag_data.glBridge.generate", M); + l("google_tag_data.glBridge.get", function (a, b) { var c = P(!!b); b = H(); b.data || (b.data = { query: {}, fragment: {} }, c(b.data)); c = {}; if (b = b.data) m(c, b.query), a && m(c, b.fragment); return c }); +})(window); +(function () { + function La(a) { var b = 1, c; if (a) for (b = 0, c = a.length - 1; 0 <= c; c--) { var d = a.charCodeAt(c); b = (b << 6 & 268435455) + d + (d << 14); d = b & 266338304; b = 0 != d ? b ^ d >> 21 : b } return b }; var $c = function (a) { this.w = a || [] }; $c.prototype.set = function (a) { this.w[a] = !0 }; $c.prototype.encode = function () { for (var a = [], b = 0; b < this.w.length; b++)this.w[b] && (a[Math.floor(b / 6)] ^= 1 << b % 6); for (b = 0; b < a.length; b++)a[b] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".charAt(a[b] || 0); return a.join("") + "~" }; var vd = new $c; function J(a) { vd.set(a) } var Td = function (a) { a = Dd(a); a = new $c(a); for (var b = vd.w.slice(), c = 0; c < a.w.length; c++)b[c] = b[c] || a.w[c]; return (new $c(b)).encode() }, Dd = function (a) { a = a.get(Gd); ka(a) || (a = []); return a }; var ea = function (a) { return "function" == typeof a }, ka = function (a) { return "[object Array]" == Object.prototype.toString.call(Object(a)) }, qa = function (a) { return void 0 != a && -1 < (a.constructor + "").indexOf("String") }, D = function (a, b) { return 0 == a.indexOf(b) }, sa = function (a) { return a ? a.replace(/^[\s\xa0]+|[\s\xa0]+$/g, "") : "" }, ra = function () { + for (var a = O.navigator.userAgent + (M.cookie ? M.cookie : "") + (M.referrer ? M.referrer : ""), b = a.length, c = O.history.length; 0 < c;)a += c-- ^ b++; return [hd() ^ La(a) & 2147483647, Math.round((new Date).getTime() / + 1E3)].join(".") + }, ta = function (a) { var b = M.createElement("img"); b.width = 1; b.height = 1; b.src = a; return b }, ua = function () { }, K = function (a) { if (encodeURIComponent instanceof Function) return encodeURIComponent(a); J(28); return a }, L = function (a, b, c, d) { try { a.addEventListener ? a.addEventListener(b, c, !!d) : a.attachEvent && a.attachEvent("on" + b, c) } catch (e) { J(27) } }, f = /^[\w\-:/.?=&%!\[\]]+$/, Nd = /^[\w+/_-]+[=]{0,2}$/, wa = function (a, b, c) { + if (a) { + var d = M.querySelector && M.querySelector("script[nonce]") || null; d = d ? d.nonce || d.getAttribute && + d.getAttribute("nonce") || "" : ""; if (c) { var e = c = ""; b && f.test(b) && (c = ' id="' + b + '"'); d && Nd.test(d) && (e = ' nonce="' + d + '"'); f.test(a) && M.write("\x3c/script>') } else c = M.createElement("script"), c.type = "text/javascript", c.async = !0, c.src = a, b && (c.id = b), d && c.setAttribute("nonce", d), a = M.getElementsByTagName("script")[0], a.parentNode.insertBefore(c, a) + } + }, be = function (a, b) { return E(M.location[b ? "href" : "search"], a) }, E = function (a, b) { + return (a = a.match("(?:&|#|\\?)" + K(b).replace(/([.*+?^=!:${}()|\[\]\/\\])/g, + "\\$1") + "=([^&#]*)")) && 2 == a.length ? a[1] : "" + }, xa = function () { var a = "" + M.location.hostname; return 0 == a.indexOf("www.") ? a.substring(4) : a }, de = function (a, b) { var c = a.indexOf(b); if (5 == c || 6 == c) if (a = a.charAt(c + b.length), "/" == a || "?" == a || "" == a || ":" == a) return !0; return !1 }, ya = function (a, b) { var c = M.referrer; if (/^(https?|android-app):\/\//i.test(c)) { if (a) return c; a = "//" + M.location.hostname; if (!de(c, a)) return b && (b = a.replace(/\./g, "-") + ".cdn.ampproject.org", de(c, b)) ? void 0 : c } }, za = function (a, b) { + if (1 == b.length && null != + b[0] && "object" === typeof b[0]) return b[0]; for (var c = {}, d = Math.min(a.length + 1, b.length), e = 0; e < d; e++)if ("object" === typeof b[e]) { for (var g in b[e]) b[e].hasOwnProperty(g) && (c[g] = b[e][g]); break } else e < a.length && (c[a[e]] = b[e]); return c + }; var ee = function () { this.keys = []; this.values = {}; this.m = {} }; ee.prototype.set = function (a, b, c) { this.keys.push(a); c ? this.m[":" + a] = b : this.values[":" + a] = b }; ee.prototype.get = function (a) { return this.m.hasOwnProperty(":" + a) ? this.m[":" + a] : this.values[":" + a] }; ee.prototype.map = function (a) { for (var b = 0; b < this.keys.length; b++) { var c = this.keys[b], d = this.get(c); d && a(c, d) } }; var O = window, M = document, va = function (a, b) { return setTimeout(a, b) }; var F = window, Ea = document, G = function (a) { var b = F._gaUserPrefs; if (b && b.ioo && b.ioo() || a && !0 === F["ga-disable-" + a]) return !0; try { var c = F.external; if (c && c._gaUserPrefs && "oo" == c._gaUserPrefs) return !0 } catch (g) { } a = []; b = String(Ea.cookie || document.cookie).split(";"); for (c = 0; c < b.length; c++) { var d = b[c].split("="), e = d[0].replace(/^\s*|\s*$/g, ""); e && "AMP_TOKEN" == e && ((d = d.slice(1).join("=").replace(/^\s*|\s*$/g, "")) && (d = decodeURIComponent(d)), a.push(d)) } for (b = 0; b < a.length; b++)if ("$OPT_OUT" == a[b]) return !0; return !1 }; var Ca = function (a) { var b = [], c = M.cookie.split(";"); a = new RegExp("^\\s*" + a + "=\\s*(.*?)\\s*$"); for (var d = 0; d < c.length; d++) { var e = c[d].match(a); e && b.push(e[1]) } return b }, zc = function (a, b, c, d, e, g) { + e = G(e) ? !1 : eb.test(M.location.hostname) || "/" == c && vc.test(d) ? !1 : !0; if (!e) return !1; b && 1200 < b.length && (b = b.substring(0, 1200)); c = a + "=" + b + "; path=" + c + "; "; g && (c += "expires=" + (new Date((new Date).getTime() + g)).toGMTString() + "; "); d && "none" !== d && (c += "domain=" + d + ";"); d = M.cookie; M.cookie = c; if (!(d = d != M.cookie)) a: { + a = Ca(a); + for (d = 0; d < a.length; d++)if (b == a[d]) { d = !0; break a } d = !1 + } return d + }, Cc = function (a) { return encodeURIComponent ? encodeURIComponent(a).replace(/\(/g, "%28").replace(/\)/g, "%29") : a }, vc = /^(www\.)?google(\.com?)?(\.[a-z]{2})?$/, eb = /(^|\.)doubleclick\.net$/i; var oc, Id = /^.*Version\/?(\d+)[^\d].*$/i, ne = function () { if (void 0 !== O.__ga4__) return O.__ga4__; if (void 0 === oc) { var a = O.navigator.userAgent; if (a) { var b = a; try { b = decodeURIComponent(a) } catch (c) { } if (a = !(0 <= b.indexOf("Chrome")) && !(0 <= b.indexOf("CriOS")) && (0 <= b.indexOf("Safari/") || 0 <= b.indexOf("Safari,"))) b = Id.exec(b), a = 11 <= (b ? Number(b[1]) : -1); oc = a } else oc = !1 } return oc }; var Fa, Ga, fb, Ab, ja = /^https?:\/\/[^/]*cdn\.ampproject\.org\//, Ue = /^(?:www\.|m\.|amp\.)+/, Ub = [], da = function (a) { + a: { + if (ja.test(M.referrer)) { + var b = M.location.hostname.replace(Ue, ""); b: { var c = M.referrer; c = c.replace(/^https?:\/\//, ""); var d = c.replace(/^[^/]+/, "").split("/"), e = d[2]; d = (d = "s" == e ? d[3] : e) ? decodeURIComponent(d) : d; if (!d) { if (0 == c.indexOf("xn--")) { c = ""; break b } (c = c.match(/(.*)\.cdn\.ampproject\.org\/?$/)) && 2 == c.length && (d = c[1].replace(/-/g, ".").replace(/\.\./g, "-")) } c = d ? d.replace(Ue, "") : "" } if (b == + c) { b = !0; break a } else J(78) + } b = !1 + } if (b && !1 !== a[Kd] && (void 0 === Ab && (b = (b = De.get()) && b._ga || void 0) && (Ab = b, J(81)), void 0 !== Ab)) return a[Q] || (a[Q] = Ab), !1; if (a[Kd]) { + J(67); if (a[ac] && "cookie" != a[ac]) return !1; if (void 0 !== Ab) a[Q] || (a[Q] = Ab); else { + a: if (b = String(a[W] || xa()), c = String(a[Yb] || "/"), d = Ca(String(a[U] || "_ga")), b = na(d, b, c), !b || jd.test(b)) b = !0; else if (b = Ca("AMP_TOKEN"), 0 == b.length) b = !0; else { + if (1 == b.length && (b = decodeURIComponent(b[0]), "$RETRIEVING" == b || "$OPT_OUT" == b || "$ERROR" == b || "$NOT_FOUND" == b)) { + b = !0; + break a + } b = !1 + } if (b && tc(ic, String(a[Na]))) return !0 + } + } return !1 + }, ic = function () { Z.D([ua]) }, tc = function (a, b) { + var c = Ca("AMP_TOKEN"); if (1 < c.length) return J(55), !1; c = decodeURIComponent(c[0] || ""); if ("$OPT_OUT" == c || "$ERROR" == c || G(b)) return J(62), !1; if (!ja.test(M.referrer) && "$NOT_FOUND" == c) return J(68), !1; if (void 0 !== Ab) return J(56), va(function () { a(Ab) }, 0), !0; if (Fa) return Ub.push(a), !0; if ("$RETRIEVING" == c) return J(57), va(function () { tc(a, b) }, 1E4), !0; Fa = !0; c && "$" != c[0] || (xc("$RETRIEVING", 3E4), setTimeout(Mc, 3E4), + c = ""); return Pc(c, b) ? (Ub.push(a), !0) : !1 + }, Pc = function (a, b, c) { + if (!window.JSON) return J(58), !1; var d = O.XMLHttpRequest; if (!d) return J(59), !1; var e = new d; if (!("withCredentials" in e)) return J(60), !1; e.open("POST", (c || "https://ampcid.google.com/v1/publisher:getClientId") + "?key=AIzaSyA65lEHUEizIsNtlbNo-l2K18dT680nsaM", !0); e.withCredentials = !0; e.setRequestHeader("Content-Type", "text/plain"); e.onload = function () { + Fa = !1; if (4 == e.readyState) { + try { + 200 != e.status && (J(61), Qc("", "$ERROR", 3E4)); var d = JSON.parse(e.responseText); + d.optOut ? (J(63), Qc("", "$OPT_OUT", 31536E6)) : d.clientId ? Qc(d.clientId, d.securityToken, 31536E6) : !c && d.alternateUrl ? (Ga && clearTimeout(Ga), Fa = !0, Pc(a, b, d.alternateUrl)) : (J(64), Qc("", "$NOT_FOUND", 36E5)) + } catch (ca) { J(65), Qc("", "$ERROR", 3E4) } e = null + } + }; d = { originScope: "AMP_ECID_GOOGLE" }; a && (d.securityToken = a); e.send(JSON.stringify(d)); Ga = va(function () { J(66); Qc("", "$ERROR", 3E4) }, 1E4); return !0 + }, Mc = function () { Fa = !1 }, xc = function (a, b) { + if (void 0 === fb) { + fb = ""; for (var c = id(), d = 0; d < c.length; d++) { + var e = c[d]; if (zc("AMP_TOKEN", + encodeURIComponent(a), "/", e, "", b)) { fb = e; return } + } + } zc("AMP_TOKEN", encodeURIComponent(a), "/", fb, "", b) + }, Qc = function (a, b, c) { Ga && clearTimeout(Ga); b && xc(b, c); Ab = a; b = Ub; Ub = []; for (c = 0; c < b.length; c++)b[c](a) }; var oe = function () { return (Ba || "https:" == M.location.protocol ? "https:" : "http:") + "//www.google-analytics.com" }, Da = function (a) { this.name = "len"; this.message = a + "-8192" }, ba = function (a, b, c) { c = c || ua; if (2036 >= b.length) wc(a, b, c); else if (8192 >= b.length) x(a, b, c) || wd(a, b, c) || wc(a, b, c); else throw ge("len", b.length), new Da(b.length); }, pe = function (a, b, c, d) { d = d || ua; wd(a + "?" + b, "", d, c) }, wc = function (a, b, c) { var d = ta(a + "?" + b); d.onload = d.onerror = function () { d.onload = null; d.onerror = null; c() } }, wd = function (a, b, c, d) { + var e = O.XMLHttpRequest; + if (!e) return !1; var g = new e; if (!("withCredentials" in g)) return !1; a = a.replace(/^http:/, "https:"); g.open("POST", a, !0); g.withCredentials = !0; g.setRequestHeader("Content-Type", "text/plain"); g.onreadystatechange = function () { + if (4 == g.readyState) { + if (d) try { + var a = g.responseText; if (1 > a.length) ge("xhr", "ver", "0"), c(); else if ("1" != a.charAt(0)) ge("xhr", "ver", String(a.length)), c(); else if (3 < d.count++) ge("xhr", "tmr", "" + d.count), c(); else if (1 == a.length) c(); else { + var b = a.charAt(1); if ("d" == b) pe("https://stats.g.doubleclick.net/j/collect", + d.U, d, c); else if ("g" == b) { var e = "https://www.google.%/ads/ga-audiences".replace("%", "com"); wc(e, d.google, c); var w = a.substring(2); if (w) if (/^[a-z.]{1,6}$/.test(w)) { var ha = "https://www.google.%/ads/ga-audiences".replace("%", w); wc(ha, d.google, ua) } else ge("tld", "bcc", w) } else ge("xhr", "brc", b), c() + } + } catch (ue) { ge("xhr", "rsp"), c() } else c(); g = null + } + }; g.send(b); return !0 + }, x = function (a, b, c) { return O.navigator.sendBeacon ? O.navigator.sendBeacon(a, b) ? (c(), !0) : !1 : !1 }, ge = function (a, b, c) { + 1 <= 100 * Math.random() || G("?") || + (a = ["t=error", "_e=" + a, "_v=j73", "sr=1"], b && a.push("_f=" + b), c && a.push("_m=" + K(c.substring(0, 100))), a.push("aip=1"), a.push("z=" + hd()), wc("https://www.google-analytics.com/u/d", a.join("&"), ua)) + }; var h = function (a) { var b = O.gaData = O.gaData || {}; return b[a] = b[a] || {} }; var Ha = function () { this.M = [] }; Ha.prototype.add = function (a) { this.M.push(a) }; Ha.prototype.D = function (a) { try { for (var b = 0; b < this.M.length; b++) { var c = a.get(this.M[b]); c && ea(c) && c.call(O, a) } } catch (d) { } b = a.get(Ia); b != ua && ea(b) && (a.set(Ia, ua, !0), setTimeout(b, 10)) }; function Ja(a) { if (100 != a.get(Ka) && La(P(a, Q)) % 1E4 >= 100 * R(a, Ka)) throw "abort"; } function Ma(a) { if (G(P(a, Na))) throw "abort"; } function Oa() { var a = M.location.protocol; if ("http:" != a && "https:" != a) throw "abort"; } + function Pa(a) { try { O.navigator.sendBeacon ? J(42) : O.XMLHttpRequest && "withCredentials" in new O.XMLHttpRequest && J(40) } catch (c) { } a.set(ld, Td(a), !0); a.set(Ac, R(a, Ac) + 1); var b = []; Qa.map(function (c, d) { d.F && (c = a.get(c), void 0 != c && c != d.defaultValue && ("boolean" == typeof c && (c *= 1), b.push(d.F + "=" + K("" + c)))) }); b.push("z=" + Bd()); a.set(Ra, b.join("&"), !0) } + function Sa(a) { var b = P(a, gd) || oe() + "/collect", c = a.get(qe), d = P(a, fa); !d && a.get(Vd) && (d = "beacon"); if (c) pe(b, P(a, Ra), c, a.get(Ia)); else if (d) { c = d; d = P(a, Ra); var e = a.get(Ia); e = e || ua; "image" == c ? wc(b, d, e) : "xhr" == c && wd(b, d, e) || "beacon" == c && x(b, d, e) || ba(b, d, e) } else ba(b, P(a, Ra), a.get(Ia)); b = a.get(Na); b = h(b); c = b.hitcount; b.hitcount = c ? c + 1 : 1; b = a.get(Na); delete h(b).pending_experiments; a.set(Ia, ua, !0) } + function Hc(a) { (O.gaData = O.gaData || {}).expId && a.set(Nc, (O.gaData = O.gaData || {}).expId); (O.gaData = O.gaData || {}).expVar && a.set(Oc, (O.gaData = O.gaData || {}).expVar); var b = a.get(Na); if (b = h(b).pending_experiments) { var c = []; for (d in b) b.hasOwnProperty(d) && b[d] && c.push(encodeURIComponent(d) + "." + encodeURIComponent(b[d])); var d = c.join("!") } else d = void 0; d && a.set(m, d, !0) } function cd() { if (O.navigator && "preview" == O.navigator.loadPurpose) throw "abort"; } + function yd(a) { var b = O.gaDevIds; ka(b) && 0 != b.length && a.set("&did", b.join(","), !0) } function vb(a) { if (!a.get(Na)) throw "abort"; }; var hd = function () { return Math.round(2147483647 * Math.random()) }, Bd = function () { try { var a = new Uint32Array(1); O.crypto.getRandomValues(a); return a[0] & 2147483647 } catch (b) { return hd() } }; function Ta(a) { var b = R(a, Ua); 500 <= b && J(15); var c = P(a, Va); if ("transaction" != c && "item" != c) { c = R(a, Wa); var d = (new Date).getTime(), e = R(a, Xa); 0 == e && a.set(Xa, d); e = Math.round(2 * (d - e) / 1E3); 0 < e && (c = Math.min(c + e, 20), a.set(Xa, d)); if (0 >= c) throw "abort"; a.set(Wa, --c) } a.set(Ua, ++b) }; var Ya = function () { this.data = new ee }, Qa = new ee, Za = []; Ya.prototype.get = function (a) { var b = $a(a), c = this.data.get(a); b && void 0 == c && (c = ea(b.defaultValue) ? b.defaultValue() : b.defaultValue); return b && b.Z ? b.Z(this, a, c) : c }; var P = function (a, b) { a = a.get(b); return void 0 == a ? "" : "" + a }, R = function (a, b) { a = a.get(b); return void 0 == a || "" === a ? 0 : 1 * a }; Ya.prototype.set = function (a, b, c) { if (a) if ("object" == typeof a) for (var d in a) a.hasOwnProperty(d) && ab(this, d, a[d], c); else ab(this, a, b, c) }; + var ab = function (a, b, c, d) { if (void 0 != c) switch (b) { case Na: wb.test(c) }var e = $a(b); e && e.o ? e.o(a, b, c, d) : a.data.set(b, c, d) }, bb = function (a, b, c, d, e) { this.name = a; this.F = b; this.Z = d; this.o = e; this.defaultValue = c }, $a = function (a) { var b = Qa.get(a); if (!b) for (var c = 0; c < Za.length; c++) { var d = Za[c], e = d[0].exec(a); if (e) { b = d[1](e); Qa.set(b.name, b); break } } return b }, yc = function (a) { var b; Qa.map(function (c, d) { d.F == a && (b = d) }); return b && b.name }, S = function (a, b, c, d, e) { a = new bb(a, b, c, d, e); Qa.set(a.name, a); return a.name }, cb = function (a, + b) { Za.push([new RegExp("^" + a + "$"), b]) }, T = function (a, b, c) { return S(a, b, c, void 0, db) }, db = function () { }; var gb = qa(window.GoogleAnalyticsObject) && sa(window.GoogleAnalyticsObject) || "ga", jd = /^(?:utma\.)?\d+\.\d+$/, kd = /^amp-[\w.-]{22,64}$/, Ba = !1, hb = T("apiVersion", "v"), ib = T("clientVersion", "_v"); S("anonymizeIp", "aip"); var jb = S("adSenseId", "a"), Va = S("hitType", "t"), Ia = S("hitCallback"), Ra = S("hitPayload"); S("nonInteraction", "ni"); S("currencyCode", "cu"); S("dataSource", "ds"); var Vd = S("useBeacon", void 0, !1), fa = S("transport"); S("sessionControl", "sc", ""); S("sessionGroup", "sg"); S("queueTime", "qt"); var Ac = S("_s", "_s"); + S("screenName", "cd"); var kb = S("location", "dl", ""), lb = S("referrer", "dr"), mb = S("page", "dp", ""); S("hostname", "dh"); var nb = S("language", "ul"), ob = S("encoding", "de"); S("title", "dt", function () { return M.title || void 0 }); cb("contentGroup([0-9]+)", function (a) { return new bb(a[0], "cg" + a[1]) }); var pb = S("screenColors", "sd"), qb = S("screenResolution", "sr"), rb = S("viewportSize", "vp"), sb = S("javaEnabled", "je"), tb = S("flashVersion", "fl"); S("campaignId", "ci"); S("campaignName", "cn"); S("campaignSource", "cs"); + S("campaignMedium", "cm"); S("campaignKeyword", "ck"); S("campaignContent", "cc"); + var ub = S("eventCategory", "ec"), xb = S("eventAction", "ea"), yb = S("eventLabel", "el"), zb = S("eventValue", "ev"), Bb = S("socialNetwork", "sn"), Cb = S("socialAction", "sa"), Db = S("socialTarget", "st"), Eb = S("l1", "plt"), Fb = S("l2", "pdt"), Gb = S("l3", "dns"), Hb = S("l4", "rrt"), Ib = S("l5", "srt"), Jb = S("l6", "tcp"), Kb = S("l7", "dit"), Lb = S("l8", "clt"), Ve = S("l9", "_gst"), We = S("l10", "_gbt"), Xe = S("l11", "_cst"), Ye = S("l12", "_cbt"), Mb = S("timingCategory", "utc"), Nb = S("timingVar", "utv"), Ob = S("timingLabel", "utl"), Pb = S("timingValue", "utt"); + S("appName", "an"); S("appVersion", "av", ""); S("appId", "aid", ""); S("appInstallerId", "aiid", ""); S("exDescription", "exd"); S("exFatal", "exf"); var Nc = S("expId", "xid"), Oc = S("expVar", "xvar"), m = S("exp", "exp"), Rc = S("_utma", "_utma"), Sc = S("_utmz", "_utmz"), Tc = S("_utmht", "_utmht"), Ua = S("_hc", void 0, 0), Xa = S("_ti", void 0, 0), Wa = S("_to", void 0, 20); cb("dimension([0-9]+)", function (a) { return new bb(a[0], "cd" + a[1]) }); cb("metric([0-9]+)", function (a) { return new bb(a[0], "cm" + a[1]) }); S("linkerParam", void 0, void 0, Bc, db); + var Ze = T("_cd2l", void 0, !1), ld = S("usage", "_u"), Gd = S("_um"); S("forceSSL", void 0, void 0, function () { return Ba }, function (a, b, c) { J(34); Ba = !!c }); var ed = S("_j1", "jid"), ia = S("_j2", "gjid"); cb("\\&(.*)", function (a) { var b = new bb(a[0], a[1]), c = yc(a[0].substring(1)); c && (b.Z = function (a) { return a.get(c) }, b.o = function (a, b, g, ca) { a.set(c, g, ca) }, b.F = void 0); return b }); + var Qb = T("_oot"), dd = S("previewTask"), Rb = S("checkProtocolTask"), md = S("validationTask"), Sb = S("checkStorageTask"), Uc = S("historyImportTask"), Tb = S("samplerTask"), Vb = S("_rlt"), Wb = S("buildHitTask"), Xb = S("sendHitTask"), Vc = S("ceTask"), zd = S("devIdTask"), Cd = S("timingTask"), Ld = S("displayFeaturesTask"), oa = S("customTask"), V = T("name"), Q = T("clientId", "cid"), n = T("clientIdTime"), xd = T("storedClientId"), Ad = S("userId", "uid"), Na = T("trackingId", "tid"), U = T("cookieName", void 0, "_ga"), W = T("cookieDomain"), Yb = T("cookiePath", + void 0, "/"), Zb = T("cookieExpires", void 0, 63072E3), Hd = T("cookieUpdate", void 0, !0), $b = T("legacyCookieDomain"), Wc = T("legacyHistoryImport", void 0, !0), ac = T("storage", void 0, "cookie"), bc = T("allowLinker", void 0, !1), cc = T("allowAnchor", void 0, !0), Ka = T("sampleRate", "sf", 100), dc = T("siteSpeedSampleRate", void 0, 1), ec = T("alwaysSendReferrer", void 0, !1), I = T("_gid", "_gid"), la = T("_gcn"), Kd = T("useAmpClientId"), ce = T("_gclid"), fe = T("_gt"), he = T("_ge", void 0, 7776E6), ie = T("_gclsrc"), je = T("storeGac", void 0, !0), gd = S("transportUrl"), + Md = S("_r", "_r"), qe = S("_dp"), Ud = S("allowAdFeatures", void 0, !0); function X(a, b, c, d) { b[a] = function () { try { return d && J(d), c.apply(this, arguments) } catch (e) { throw ge("exc", a, e && e.name), e; } } }; var Od = function () { this.V = 100; this.$ = this.fa = !1; this.oa = "detourexp"; this.groups = 1 }, Ed = function (a) { var b = new Od, c; if (b.fa && b.$) return 0; b.$ = !0; if (a) { if (b.oa && void 0 !== a.get(b.oa)) return R(a, b.oa); if (0 == a.get(dc)) return 0 } if (0 == b.V) return 0; void 0 === c && (c = Bd()); return 0 == c % b.V ? Math.floor(c / b.V) % b.groups + 1 : 0 }; function fc() { + var a, b; if ((b = (b = O.navigator) ? b.plugins : null) && b.length) for (var c = 0; c < b.length && !a; c++) { var d = b[c]; -1 < d.name.indexOf("Shockwave Flash") && (a = d.description) } if (!a) try { var e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); a = e.GetVariable("$version") } catch (g) { } if (!a) try { e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"), a = "WIN 6,0,21,0", e.AllowScriptAccess = "always", a = e.GetVariable("$version") } catch (g) { } if (!a) try { e = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"), a = e.GetVariable("$version") } catch (g) { } a && + (e = a.match(/[\d]+/g)) && 3 <= e.length && (a = e[0] + "." + e[1] + " r" + e[2]); return a || void 0 + }; var aa = function (a) { var b = Math.min(R(a, dc), 100); return La(P(a, Q)) % 100 >= b ? !1 : !0 }, gc = function (a) { var b = {}; if (Ec(b) || Fc(b)) { var c = b[Eb]; void 0 == c || Infinity == c || isNaN(c) || (0 < c ? (Y(b, Gb), Y(b, Jb), Y(b, Ib), Y(b, Fb), Y(b, Hb), Y(b, Kb), Y(b, Lb), Y(b, Ve), Y(b, We), Y(b, Xe), Y(b, Ye), va(function () { a(b) }, 10)) : L(O, "load", function () { gc(a) }, !1)) } }, Ec = function (a) { + var b = O.performance || O.webkitPerformance; b = b && b.timing; if (!b) return !1; var c = b.navigationStart; if (0 == c) return !1; a[Eb] = b.loadEventStart - c; a[Gb] = b.domainLookupEnd - b.domainLookupStart; + a[Jb] = b.connectEnd - b.connectStart; a[Ib] = b.responseStart - b.requestStart; a[Fb] = b.responseEnd - b.responseStart; a[Hb] = b.fetchStart - c; a[Kb] = b.domInteractive - c; a[Lb] = b.domContentLoadedEventStart - c; a[Ve] = N.L - c; a[We] = N.ya - c; O.google_tag_manager && O.google_tag_manager._li && (b = O.google_tag_manager._li, a[Xe] = b.cst, a[Ye] = b.cbt); return !0 + }, Fc = function (a) { + if (O.top != O) return !1; var b = O.external, c = b && b.onloadT; b && !b.isValidLoadTime && (c = void 0); 2147483648 < c && (c = void 0); 0 < c && b.setPageReadyTime(); if (void 0 == c) return !1; + a[Eb] = c; return !0 + }, Y = function (a, b) { var c = a[b]; if (isNaN(c) || Infinity == c || 0 > c) a[b] = void 0 }, Fd = function (a) { return function (b) { if ("pageview" == b.get(Va) && !a.I) { a.I = !0; var c = aa(b), d = 0 < E(b.get(kb), "gclid").length; (c || d) && gc(function (b) { c && a.send("timing", b); d && a.send("adtiming", b) }) } } }; var hc = !1, mc = function (a) { if ("cookie" == P(a, ac)) { if (a.get(Hd) || P(a, xd) != P(a, Q)) { var b = 1E3 * R(a, Zb); ma(a, Q, U, b) } ma(a, I, la, 864E5); if (a.get(je)) { var c = a.get(ce); if (c) { var d = Math.min(R(a, he), 1E3 * R(a, Zb)); d = Math.min(d, 1E3 * R(a, fe) + d - (new Date).getTime()); a.data.set(he, d); b = {}; var e = a.get(fe), g = a.get(ie), ca = kc(P(a, Yb)), l = lc(P(a, W)); a = P(a, Na); g && "aw.ds" != g ? b && (b.ua = !0) : (c = ["1", e, Cc(c)].join("."), 0 < d && (b && (b.ta = !0), zc("_gac_" + Cc(a), c, ca, l, a, d))); le(b) } } else J(75) } }, ma = function (a, b, c, d) { + var e = nd(a, b); if (e) { + c = + P(a, c); var g = kc(P(a, Yb)), ca = lc(P(a, W)), l = P(a, Na); if ("auto" != ca) zc(c, e, g, ca, l, d) && (hc = !0); else { J(32); for (var k = id(), w = 0; w < k.length; w++)if (ca = k[w], a.data.set(W, ca), e = nd(a, b), zc(c, e, g, ca, l, d)) { hc = !0; return } a.data.set(W, "auto") } + } + }, nc = function (a) { if ("cookie" == P(a, ac) && !hc && (mc(a), !hc)) throw "abort"; }, Yc = function (a) { if (a.get(Wc)) { var b = P(a, W), c = P(a, $b) || xa(), d = Xc("__utma", c, b); d && (J(19), a.set(Tc, (new Date).getTime(), !0), a.set(Rc, d.R), (b = Xc("__utmz", c, b)) && d.hash == b.hash && a.set(Sc, b.R)) } }, nd = function (a, b) { + b = + Cc(P(a, b)); var c = lc(P(a, W)).split(".").length; a = jc(P(a, Yb)); 1 < a && (c += "-" + a); return b ? ["GA1", c, b].join(".") : "" + }, Xd = function (a, b) { return na(b, P(a, W), P(a, Yb)) }, na = function (a, b, c) { + if (!a || 1 > a.length) J(12); else { + for (var d = [], e = 0; e < a.length; e++) { var g = a[e]; var ca = g.split("."); var l = ca.shift(); ("GA1" == l || "1" == l) && 1 < ca.length ? (g = ca.shift().split("-"), 1 == g.length && (g[1] = "1"), g[0] *= 1, g[1] *= 1, ca = { H: g, s: ca.join(".") }) : ca = kd.test(g) ? { H: [0, 0], s: g } : void 0; ca && d.push(ca) } if (1 == d.length) return J(13), d[0].s; if (0 == d.length) J(12); + else { J(14); d = Gc(d, lc(b).split(".").length, 0); if (1 == d.length) return d[0].s; d = Gc(d, jc(c), 1); 1 < d.length && J(41); return d[0] && d[0].s } + } + }, Gc = function (a, b, c) { for (var d = [], e = [], g, ca = 0; ca < a.length; ca++) { var l = a[ca]; l.H[c] == b ? d.push(l) : void 0 == g || l.H[c] < g ? (e = [l], g = l.H[c]) : l.H[c] == g && e.push(l) } return 0 < d.length ? d : e }, lc = function (a) { return 0 == a.indexOf(".") ? a.substr(1) : a }, id = function () { + var a = [], b = xa().split("."); if (4 == b.length) { var c = b[b.length - 1]; if (parseInt(c, 10) == c) return ["none"] } for (c = b.length - 2; 0 <= c; c--)a.push(b.slice(c).join(".")); + b = M.location.hostname; eb.test(b) || vc.test(b) || a.push("none"); return a + }, kc = function (a) { if (!a) return "/"; 1 < a.length && a.lastIndexOf("/") == a.length - 1 && (a = a.substr(0, a.length - 1)); 0 != a.indexOf("/") && (a = "/" + a); return a }, jc = function (a) { a = kc(a); return "/" == a ? 1 : a.split("/").length }, le = function (a) { a.ta && J(77); a.na && J(74); a.pa && J(73); a.ua && J(69) }; function Xc(a, b, c) { "none" == b && (b = ""); var d = [], e = Ca(a); a = "__utma" == a ? 6 : 2; for (var g = 0; g < e.length; g++) { var ca = ("" + e[g]).split("."); ca.length >= a && d.push({ hash: ca[0], R: e[g], O: ca }) } if (0 != d.length) return 1 == d.length ? d[0] : Zc(b, d) || Zc(c, d) || Zc(null, d) || d[0] } function Zc(a, b) { if (null == a) var c = a = 1; else c = La(a), a = La(D(a, ".") ? a.substring(1) : "." + a); for (var d = 0; d < b.length; d++)if (b[d].hash == c || b[d].hash == a) return b[d] }; var od = new RegExp(/^https?:\/\/([^\/:]+)/), De = O.google_tag_data.glBridge, pd = /(.*)([?&#])(?:_ga=[^&#]*)(?:&?)(.*)/, me = /(.*)([?&#])(?:_gac=[^&#]*)(?:&?)(.*)/; function Bc(a) { if (a.get(Ze)) return J(35), De.generate($e(a)); var b = a.get(Q), c = a.get(I) || ""; b = "_ga=2." + K(pa(c + b, 0) + "." + c + "-" + b); (a = af(a)) ? (J(44), a = "&_gac=1." + K([pa(a.qa, 0), a.timestamp, a.qa].join("."))) : a = ""; return b + a } + function Ic(a, b) { var c = new Date, d = O.navigator, e = d.plugins || []; a = [a, d.userAgent, c.getTimezoneOffset(), c.getYear(), c.getDate(), c.getHours(), c.getMinutes() + b]; for (b = 0; b < e.length; ++b)a.push(e[b].description); return La(a.join(".")) } function pa(a, b) { var c = new Date, d = O.navigator, e = c.getHours() + Math.floor((c.getMinutes() + b) / 60); return La([a, d.userAgent, d.language || "", c.getTimezoneOffset(), c.getYear(), c.getDate() + Math.floor(e / 24), (24 + e) % 24, (60 + c.getMinutes() + b) % 60].join(".")) } + var Dc = function (a) { J(48); this.target = a; this.T = !1 }; Dc.prototype.ca = function (a, b) { if (a) { if (this.target.get(Ze)) return De.decorate($e(this.target), a, b); if (a.tagName) { if ("a" == a.tagName.toLowerCase()) { a.href && (a.href = qd(this, a.href, b)); return } if ("form" == a.tagName.toLowerCase()) return rd(this, a) } if ("string" == typeof a) return qd(this, a, b) } }; + var qd = function (a, b, c) { var d = pd.exec(b); d && 3 <= d.length && (b = d[1] + (d[3] ? d[2] + d[3] : "")); (d = me.exec(b)) && 3 <= d.length && (b = d[1] + (d[3] ? d[2] + d[3] : "")); a = a.target.get("linkerParam"); var e = b.indexOf("?"); d = b.indexOf("#"); c ? b += (-1 == d ? "#" : "&") + a : (c = -1 == e ? "?" : "&", b = -1 == d ? b + (c + a) : b.substring(0, d) + c + a + b.substring(d)); b = b.replace(/&+_ga=/, "&_ga="); return b = b.replace(/&+_gac=/, "&_gac=") }, rd = function (a, b) { + if (b && b.action) if ("get" == b.method.toLowerCase()) { + a = a.target.get("linkerParam").split("&"); for (var c = 0; c < a.length; c++) { + var d = + a[c].split("="), e = d[1]; d = d[0]; for (var g = b.childNodes || [], ca = !1, l = 0; l < g.length; l++)if (g[l].name == d) { g[l].setAttribute("value", e); ca = !0; break } ca || (g = M.createElement("input"), g.setAttribute("type", "hidden"), g.setAttribute("name", d), g.setAttribute("value", e), b.appendChild(g)) + } + } else "post" == b.method.toLowerCase() && (b.action = qd(a, b.action)) + }; + Dc.prototype.S = function (a, b, c) { + function d(c) { try { c = c || O.event; a: { var d = c.target || c.srcElement; for (c = 100; d && 0 < c;) { if (d.href && d.nodeName.match(/^a(?:rea)?$/i)) { var g = d; break a } d = d.parentNode; c-- } g = {} } ("http:" == g.protocol || "https:" == g.protocol) && sd(a, g.hostname || "") && g.href && (g.href = qd(e, g.href, b)) } catch (k) { J(26) } } var e = this; this.target.get(Ze) ? De.auto(function () { return $e(e.target) }, a, b ? "fragment" : "", c) : (this.T || (this.T = !0, L(M, "mousedown", d, !1), L(M, "keyup", d, !1)), c && L(M, "submit", function (b) { + b = b || O.event; + if ((b = b.target || b.srcElement) && b.action) { var c = b.action.match(od); c && sd(a, c[1]) && rd(e, b) } + })) + }; function sd(a, b) { if (b == M.location.hostname) return !1; for (var c = 0; c < a.length; c++)if (a[c] instanceof RegExp) { if (a[c].test(b)) return !0 } else if (0 <= b.indexOf(a[c])) return !0; return !1 } function ke(a, b) { return b != Ic(a, 0) && b != Ic(a, -1) && b != Ic(a, -2) && b != pa(a, 0) && b != pa(a, -1) && b != pa(a, -2) } function $e(a) { var b = af(a); return { _ga: a.get(Q), _gid: a.get(I) || void 0, _gac: b ? [b.qa, b.timestamp].join(".") : void 0 } } + function af(a) { function b(a) { return void 0 == a || "" === a ? 0 : Number(a) } var c = a.get(ce); if (c && a.get(je)) { var d = b(a.get(fe)); if (1E3 * d + b(a.get(he)) <= (new Date).getTime()) J(76); else return { timestamp: d, qa: c } } }; var p = /^(GTM|OPT)-[A-Z0-9]+$/, q = /;_gaexp=[^;]*/g, r = /;((__utma=)|([^;=]+=GAX?\d+\.))[^;]*/g, Aa = /^https?:\/\/[\w\-.]+\.google.com(:\d+)?\/optimize\/opt-launch\.html\?.*$/, t = function (a) { function b(a, b) { b && (c += "&" + a + "=" + K(b)) } var c = "https://www.google-analytics.com/gtm/js?id=" + K(a.id); "dataLayer" != a.B && b("l", a.B); b("t", a.target); b("cid", a.clientId); b("cidt", a.ka); b("gac", a.la); b("aip", a.ia); a.sync && b("m", "sync"); b("cycle", a.G); a.qa && b("gclid", a.qa); Aa.test(M.referrer) && b("cb", String(hd())); return c }; var Jd = function (a, b, c) { this.aa = b; (b = c) || (b = (b = P(a, V)) && "t0" != b ? Wd.test(b) ? "_gat_" + Cc(P(a, Na)) : "_gat_" + Cc(b) : "_gat"); this.Y = b; this.ra = null }, Rd = function (a, b) { var c = b.get(Wb); b.set(Wb, function (b) { Pd(a, b, ed); Pd(a, b, ia); var d = c(b); Qd(a, b); return d }); var d = b.get(Xb); b.set(Xb, function (b) { var c = d(b); if (se(b)) { if (ne() !== H(a, b)) { J(80); var e = { U: re(a, b, 1), google: re(a, b, 2), count: 0 }; pe("https://stats.g.doubleclick.net/j/collect", e.U, e) } else ta(re(a, b, 0)); b.set(ed, "", !0) } return c }) }, Pd = function (a, b, c) { + !1 === b.get(Ud) || + b.get(c) || ("1" == Ca(a.Y)[0] ? b.set(c, "", !0) : b.set(c, "" + hd(), !0)) + }, Qd = function (a, b) { se(b) && zc(a.Y, "1", b.get(Yb), b.get(W), b.get(Na), 6E4) }, se = function (a) { return !!a.get(ed) && a.get(Ud) }, re = function (a, b, c) { var d = new ee, e = function (a) { $a(a).F && d.set($a(a).F, b.get(a)) }; e(hb); e(ib); e(Na); e(Q); e(ed); if (0 == c || 1 == c) e(Ad), e(ia), e(I); d.set($a(ld).F, Td(b)); var g = ""; d.map(function (a, b) { g += K(a) + "="; g += K("" + b) + "&" }); g += "z=" + hd(); 0 == c ? g = a.aa + g : 1 == c ? g = "t=dc&aip=1&_r=3&" + g : 2 == c && (g = "t=sr&aip=1&_r=4&slf_rd=1&" + g); return g }, + H = function (a, b) { null === a.ra && (a.ra = 1 === Ed(b), a.ra && J(33)); return a.ra }, Wd = /^gtm\d+$/; var fd = function (a, b) { a = a.b; if (!a.get("dcLoaded")) { var c = new $c(Dd(a)); c.set(29); a.set(Gd, c.w); b = b || {}; var d; b[U] && (d = Cc(b[U])); b = new Jd(a, "https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&", d); Rd(b, a); a.set("dcLoaded", !0) } }; var Sd = function (a) { if (!a.get("dcLoaded") && "cookie" == a.get(ac)) { var b = new Jd(a); Pd(b, a, ed); Pd(b, a, ia); Qd(b, a); if (se(a)) { var c = ne() !== H(b, a); a.set(Md, 1, !0); c ? (J(79), a.set(gd, oe() + "/j/collect", !0), a.set(qe, { U: re(b, a, 1), google: re(b, a, 2), count: 0 }, !0)) : a.set(gd, oe() + "/r/collect", !0) } } }; var Lc = function () { var a = O.gaGlobal = O.gaGlobal || {}; return a.hid = a.hid || hd() }; var ad, bd = function (a, b, c) { if (!ad) { var d = M.location.hash; var e = O.name, g = /^#?gaso=([^&]*)/; if (e = (d = (d = d && d.match(g) || e && e.match(g)) ? d[1] : Ca("GASO")[0] || "") && d.match(/^(?:!([-0-9a-z.]{1,40})!)?([-.\w]{10,1200})$/i)) zc("GASO", "" + d, c, b, a, 0), window._udo || (window._udo = b), window._utcp || (window._utcp = c), a = e[1], wa("https://www.google.com/analytics/web/inpage/pub/inpage.js?" + (a ? "prefix=" + a + "&" : "") + hd(), "_gasojs"); ad = !0 } }; var wb = /^(UA|YT|MO|GP)-(\d+)-(\d+)$/, pc = function (a) { + function b(a, b) { d.b.data.set(a, b) } function c(a, c) { b(a, c); d.filters.add(a) } var d = this; this.b = new Ya; this.filters = new Ha; b(V, a[V]); b(Na, sa(a[Na])); b(U, a[U]); b(W, a[W] || xa()); b(Yb, a[Yb]); b(Zb, a[Zb]); b(Hd, a[Hd]); b($b, a[$b]); b(Wc, a[Wc]); b(bc, a[bc]); b(cc, a[cc]); b(Ka, a[Ka]); b(dc, a[dc]); b(ec, a[ec]); b(ac, a[ac]); b(Ad, a[Ad]); b(n, a[n]); b(Kd, a[Kd]); b(je, a[je]); b(Ze, a[Ze]); b(hb, 1); b(ib, "j73"); c(Qb, Ma); c(oa, ua); c(dd, cd); c(Rb, Oa); c(md, vb); c(Sb, nc); c(Uc, Yc); c(Tb, + Ja); c(Vb, Ta); c(Vc, Hc); c(zd, yd); c(Ld, Sd); c(Wb, Pa); c(Xb, Sa); c(Cd, Fd(this)); Kc(this.b); Jc(this.b, a[Q]); this.b.set(jb, Lc()); bd(this.b.get(Na), this.b.get(W), this.b.get(Yb)) + }, Jc = function (a, b) { + var c = P(a, U); a.data.set(la, "_ga" == c ? "_gid" : c + "_gid"); if ("cookie" == P(a, ac)) { + hc = !1; c = Ca(P(a, U)); c = Xd(a, c); if (!c) { c = P(a, W); var d = P(a, $b) || xa(); c = Xc("__utma", d, c); void 0 != c ? (J(10), c = c.O[1] + "." + c.O[2]) : c = void 0 } c && (hc = !0); if (d = c && !a.get(Hd)) if (d = c.split("."), 2 != d.length) d = !1; else if (d = Number(d[1])) { + var e = R(a, Zb); d = d + e < + (new Date).getTime() / 1E3 + } else d = !1; d && (c = void 0); c && (a.data.set(xd, c), a.data.set(Q, c), c = Ca(P(a, la)), (c = Xd(a, c)) && a.data.set(I, c)); if (a.get(je) && (c = a.get(ce), d = a.get(ie), !c || d && "aw.ds" != d)) { + c = {}; if (M) { + d = []; e = M.cookie.split(";"); for (var g = /^\s*_gac_(UA-\d+-\d+)=\s*(.+?)\s*$/, ca = 0; ca < e.length; ca++) { var l = e[ca].match(g); l && d.push({ ja: l[1], value: l[2] }) } e = {}; if (d && d.length) for (g = 0; g < d.length; g++)(ca = d[g].value.split("."), "1" != ca[0] || 3 != ca.length) ? c && (c.na = !0) : ca[1] && (e[d[g].ja] ? c && (c.pa = !0) : e[d[g].ja] = + [], e[d[g].ja].push({ timestamp: ca[1], qa: ca[2] })); d = e + } else d = {}; d = d[P(a, Na)]; le(c); d && 0 != d.length && (c = d[0], a.data.set(fe, c.timestamp), a.data.set(ce, c.qa)) + } + } if (a.get(Hd) && (c = be("_ga", a.get(cc)), d = be("_gl", a.get(cc)), e = De.get(a.get(cc)), g = e._ga, d && 0 < d.indexOf("_ga") && !g && J(30), c || g)) if (c && g && J(36), a.get(bc)) { + if (g && (J(38), a.data.set(Q, g), e._gid && (J(51), a.data.set(I, e._gid)), e._gac && (d = e._gac.split(".")) && 2 == d.length && (J(37), a.data.set(ce, d[0]), a.data.set(fe, d[1]))), c) b: if (d = c.indexOf("."), -1 == d) J(22); + else { e = c.substring(0, d); g = c.substring(d + 1); d = g.indexOf("."); c = g.substring(0, d); g = g.substring(d + 1); if ("1" == e) { if (d = g, ke(d, c)) { J(23); break b } } else if ("2" == e) { d = g.indexOf("-"); e = ""; 0 < d ? (e = g.substring(0, d), d = g.substring(d + 1)) : d = g.substring(1); if (ke(e + d, c)) { J(53); break b } e && (J(2), a.data.set(I, e)) } else { J(22); break b } J(11); a.data.set(Q, d); if (c = be("_gac", a.get(cc))) c = c.split("."), "1" != c[0] || 4 != c.length ? J(72) : ke(c[3], c[1]) ? J(71) : (a.data.set(ce, c[3]), a.data.set(fe, c[2]), J(70)) } + } else J(21); b && (J(9), a.data.set(Q, + K(b))); a.get(Q) || ((b = (b = O.gaGlobal && O.gaGlobal.vid) && -1 != b.search(jd) ? b : void 0) ? (J(17), a.data.set(Q, b)) : (J(8), a.data.set(Q, ra()))); a.get(I) || (J(3), a.data.set(I, ra())); mc(a) + }, Kc = function (a) { + var b = O.navigator, c = O.screen, d = M.location; a.set(lb, ya(a.get(ec), a.get(Kd))); if (d) { var e = d.pathname || ""; "/" != e.charAt(0) && (J(31), e = "/" + e); a.set(kb, d.protocol + "//" + d.hostname + e + d.search) } c && a.set(qb, c.width + "x" + c.height); c && a.set(pb, c.colorDepth + "-bit"); c = M.documentElement; var g = (e = M.body) && e.clientWidth && e.clientHeight, + ca = []; c && c.clientWidth && c.clientHeight && ("CSS1Compat" === M.compatMode || !g) ? ca = [c.clientWidth, c.clientHeight] : g && (ca = [e.clientWidth, e.clientHeight]); c = 0 >= ca[0] || 0 >= ca[1] ? "" : ca.join("x"); a.set(rb, c); a.set(tb, fc()); a.set(ob, M.characterSet || M.charset); a.set(sb, b && "function" === typeof b.javaEnabled && b.javaEnabled() || !1); a.set(nb, (b && (b.language || b.browserLanguage) || "").toLowerCase()); a.data.set(ce, be("gclid", !0)); a.data.set(ie, be("gclsrc", !0)); a.data.set(fe, Math.round((new Date).getTime() / 1E3)); if (d && a.get(cc) && + (b = M.location.hash)) { b = b.split(/[?&#]+/); d = []; for (c = 0; c < b.length; ++c)(D(b[c], "utm_id") || D(b[c], "utm_campaign") || D(b[c], "utm_source") || D(b[c], "utm_medium") || D(b[c], "utm_term") || D(b[c], "utm_content") || D(b[c], "gclid") || D(b[c], "dclid") || D(b[c], "gclsrc")) && d.push(b[c]); 0 < d.length && (b = "#" + d.join("&"), a.set(kb, a.get(kb) + b)) } + }; pc.prototype.get = function (a) { return this.b.get(a) }; pc.prototype.set = function (a, b) { this.b.set(a, b) }; var qc = { pageview: [mb], event: [ub, xb, yb, zb], social: [Bb, Cb, Db], timing: [Mb, Nb, Pb, Ob] }; + pc.prototype.send = function (a) { if (!(1 > arguments.length)) { if ("string" === typeof arguments[0]) { var b = arguments[0]; var c = [].slice.call(arguments, 1) } else b = arguments[0] && arguments[0][Va], c = arguments; b && (c = za(qc[b] || [], c), c[Va] = b, this.b.set(c, void 0, !0), this.filters.D(this.b), this.b.data.m = {}) } }; pc.prototype.ma = function (a, b) { var c = this; u(a, c, b) || (v(a, function () { u(a, c, b) }), y(String(c.get(V)), a, void 0, b, !0)) }; var rc = function (a) { if ("prerender" == M.visibilityState) return !1; a(); return !0 }, z = function (a) { if (!rc(a)) { J(16); var b = !1, c = function () { if (!b && rc(a)) { b = !0; var d = c, e = M; e.removeEventListener ? e.removeEventListener("visibilitychange", d, !1) : e.detachEvent && e.detachEvent("onvisibilitychange", d) } }; L(M, "visibilitychange", c) } }; var td = /^(?:(\w+)\.)?(?:(\w+):)?(\w+)$/, sc = function (a) { + if (ea(a[0])) this.u = a[0]; else { + var b = td.exec(a[0]); null != b && 4 == b.length && (this.c = b[1] || "t0", this.K = b[2] || "", this.C = b[3], this.a = [].slice.call(a, 1), this.K || (this.A = "create" == this.C, this.i = "require" == this.C, this.g = "provide" == this.C, this.ba = "remove" == this.C), this.i && (3 <= this.a.length ? (this.X = this.a[1], this.W = this.a[2]) : this.a[1] && (qa(this.a[1]) ? this.X = this.a[1] : this.W = this.a[1]))); b = a[1]; a = a[2]; if (!this.C) throw "abort"; if (this.i && (!qa(b) || "" == b)) throw "abort"; + if (this.g && (!qa(b) || "" == b || !ea(a))) throw "abort"; if (ud(this.c) || ud(this.K)) throw "abort"; if (this.g && "t0" != this.c) throw "abort"; + } + }; function ud(a) { return 0 <= a.indexOf(".") || 0 <= a.indexOf(":") }; var Yd, Zd, $d, A; Yd = new ee; $d = new ee; A = new ee; Zd = { ec: 45, ecommerce: 46, linkid: 47 }; + var u = function (a, b, c) { b == N || b.get(V); var d = Yd.get(a); if (!ea(d)) return !1; b.plugins_ = b.plugins_ || new ee; if (b.plugins_.get(a)) return !0; b.plugins_.set(a, new d(b, c || {})); return !0 }, y = function (a, b, c, d, e) { + if (!ea(Yd.get(b)) && !$d.get(b)) { + Zd.hasOwnProperty(b) && J(Zd[b]); if (p.test(b)) { + J(52); a = N.j(a); if (!a) return !0; c = d || {}; d = { id: b, B: c.dataLayer || "dataLayer", ia: !!a.get("anonymizeIp"), sync: e, G: !1 }; a.get(">m") == b && (d.G = !0); var g = String(a.get("name")); "t0" != g && (d.target = g); G(String(a.get("trackingId"))) || (d.clientId = + String(a.get(Q)), d.ka = Number(a.get(n)), c = c.palindrome ? r : q, c = (c = M.cookie.replace(/^|(; +)/g, ";").match(c)) ? c.sort().join("").substring(1) : void 0, d.la = c, d.qa = E(a.b.get(kb) || "", "gclid")); a = d.B; c = (new Date).getTime(); O[a] = O[a] || []; c = { "gtm.start": c }; e || (c.event = "gtm.js"); O[a].push(c); c = t(d) + } !c && Zd.hasOwnProperty(b) ? (J(39), c = b + ".js") : J(43); c && (c && 0 <= c.indexOf("/") || (c = (Ba || "https:" == M.location.protocol ? "https:" : "http:") + "//www.google-analytics.com/plugins/ua/" + c), d = ae(c), a = d.protocol, c = M.location.protocol, + ("https:" == a || a == c || ("http:" != a ? 0 : "http:" == c)) && B(d) && (wa(d.url, void 0, e), $d.set(b, !0))) + } + }, v = function (a, b) { var c = A.get(a) || []; c.push(b); A.set(a, c) }, C = function (a, b) { Yd.set(a, b); b = A.get(a) || []; for (var c = 0; c < b.length; c++)b[c](); A.set(a, []) }, B = function (a) { + var b = ae(M.location.href); if (D(a.url, "https://www.google-analytics.com/gtm/js?id=")) return !0; if (a.query || 0 <= a.url.indexOf("?") || 0 <= a.path.indexOf("://")) return !1; if (a.host == b.host && a.port == b.port) return !0; b = "http:" == a.protocol ? 80 : 443; return "www.google-analytics.com" == + a.host && (a.port || b) == b && D(a.path, "/plugins/") ? !0 : !1 + }, ae = function (a) { + function b(a) { var b = a.hostname || "", c = 0 <= b.indexOf("]"); b = b.split(c ? "]" : ":")[0].toLowerCase(); c && (b += "]"); c = (a.protocol || "").toLowerCase(); c = 1 * a.port || ("http:" == c ? 80 : "https:" == c ? 443 : ""); a = a.pathname || ""; D(a, "/") || (a = "/" + a); return [b, "" + c, a] } var c = M.createElement("a"); c.href = M.location.href; var d = (c.protocol || "").toLowerCase(), e = b(c), g = c.search || "", ca = d + "//" + e[0] + (e[1] ? ":" + e[1] : ""); D(a, "//") ? a = d + a : D(a, "/") ? a = ca + a : !a || D(a, "?") ? a = ca + e[2] + + (a || g) : 0 > a.split("/")[0].indexOf(":") && (a = ca + e[2].substring(0, e[2].lastIndexOf("/")) + "/" + a); c.href = a; d = b(c); return { protocol: (c.protocol || "").toLowerCase(), host: d[0], port: d[1], path: d[2], query: c.search || "", url: a || "" } + }; var Z = { ga: function () { Z.f = [] } }; Z.ga(); Z.D = function (a) { var b = Z.J.apply(Z, arguments); b = Z.f.concat(b); for (Z.f = []; 0 < b.length && !Z.v(b[0]) && !(b.shift(), 0 < Z.f.length);); Z.f = Z.f.concat(b) }; Z.J = function (a) { for (var b = [], c = 0; c < arguments.length; c++)try { var d = new sc(arguments[c]); d.g ? C(d.a[0], d.a[1]) : (d.i && (d.ha = y(d.c, d.a[0], d.X, d.W)), b.push(d)) } catch (e) { } return b }; + Z.v = function (a) { try { if (a.u) a.u.call(O, N.j("t0")); else { var b = a.c == gb ? N : N.j(a.c); if (a.A) { if ("t0" == a.c && (b = N.create.apply(N, a.a), null === b)) return !0 } else if (a.ba) N.remove(a.c); else if (b) if (a.i) { if (a.ha && (a.ha = y(a.c, a.a[0], a.X, a.W)), !u(a.a[0], b, a.W)) return !0 } else if (a.K) { var c = a.C, d = a.a, e = b.plugins_.get(a.K); e[c].apply(e, d) } else b[a.C].apply(b, a.a) } } catch (g) { } }; var N = function (a) { J(1); Z.D.apply(Z, [arguments]) }; N.h = {}; N.P = []; N.L = 0; N.ya = 0; N.answer = 42; var uc = [Na, W, V]; N.create = function (a) { var b = za(uc, [].slice.call(arguments)); b[V] || (b[V] = "t0"); var c = "" + b[V]; if (N.h[c]) return N.h[c]; if (da(b)) return null; b = new pc(b); N.h[c] = b; N.P.push(b); return b }; N.remove = function (a) { for (var b = 0; b < N.P.length; b++)if (N.P[b].get(V) == a) { N.P.splice(b, 1); N.h[a] = null; break } }; N.j = function (a) { return N.h[a] }; N.getAll = function () { return N.P.slice(0) }; + N.N = function () { + "ga" != gb && J(49); var a = O[gb]; if (!a || 42 != a.answer) { + N.L = a && a.l; N.ya = 1 * new Date; N.loaded = !0; var b = O[gb] = N; X("create", b, b.create); X("remove", b, b.remove); X("getByName", b, b.j, 5); X("getAll", b, b.getAll, 6); b = pc.prototype; X("get", b, b.get, 7); X("set", b, b.set, 4); X("send", b, b.send); X("requireSync", b, b.ma); b = Ya.prototype; X("get", b, b.get); X("set", b, b.set); if ("https:" != M.location.protocol && !Ba) { + a: { + b = M.getElementsByTagName("script"); for (var c = 0; c < b.length && 100 > c; c++) { + var d = b[c].src; if (d && 0 == d.indexOf("https://www.google-analytics.com/analytics")) { + b = + !0; break a + } + } b = !1 + } b && (Ba = !0) + } (O.gaplugins = O.gaplugins || {}).Linker = Dc; b = Dc.prototype; C("linker", Dc); X("decorate", b, b.ca, 20); X("autoLink", b, b.S, 25); C("displayfeatures", fd); C("adfeatures", fd); a = a && a.q; ka(a) ? Z.D.apply(N, a) : J(50) + } + }; N.da = function () { for (var a = N.getAll(), b = 0; b < a.length; b++)a[b].get(V) }; var te = N.N, ve = O[gb]; ve && ve.r ? te() : z(te); z(function () { Z.D(["provide", "render", ua]) }); +})(window); diff --git a/src/js/libs/jquery-3.3.1.min.js b/src/js/libs/jquery-3.3.1.min.js new file mode 100644 index 0000000..4d9b3a2 --- /dev/null +++ b/src/js/libs/jquery-3.3.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("