From 66fa1a9a02fb0e2d71c57727227f92ce48c8bad5 Mon Sep 17 00:00:00 2001 From: zhangliang1587 <1466013297@qq.com> Date: Wed, 20 Dec 2023 15:12:09 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20init(=E9=A1=B9=E7=9B=AE=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96):?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 25 + README.md | 49 + index.html | 15 + main.js | 36 + package.json | 52 + public/img/256PX.ico | Bin 0 -> 29585 bytes public/img/32PX.ico | Bin 0 -> 50817 bytes public/js/FileSaver.min.js | 3 + public/js/Long.js | 1467 ++++++++++++++++++++++++ public/js/axisInfo/constant.js | 611 ++++++++++ public/js/byteConvert.js | 694 +++++++++++ public/js/draw.js | 283 +++++ public/js/index.js | 445 +++++++ public/js/jquery-ui.min.js | 13 + public/js/jquery.min.js | 2 + public/js/lodash.js | 140 +++ public/js/tarball.js | 405 +++++++ public/js/three/BufferGeometryUtils.js | 1058 +++++++++++++++++ public/js/three/Lut.js | 200 ++++ public/js/three/OrbitControls.js | 1065 +++++++++++++++++ public/js/three/stats.module.js | 167 +++ public/js/three/three.min.js | 6 + test.html | 147 +++ 23 files changed, 6883 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.html create mode 100644 main.js create mode 100644 package.json create mode 100644 public/img/256PX.ico create mode 100644 public/img/32PX.ico create mode 100644 public/js/FileSaver.min.js create mode 100644 public/js/Long.js create mode 100644 public/js/axisInfo/constant.js create mode 100644 public/js/byteConvert.js create mode 100644 public/js/draw.js create mode 100644 public/js/index.js create mode 100644 public/js/jquery-ui.min.js create mode 100644 public/js/jquery.min.js create mode 100644 public/js/lodash.js create mode 100644 public/js/tarball.js create mode 100644 public/js/three/BufferGeometryUtils.js create mode 100644 public/js/three/Lut.js create mode 100644 public/js/three/OrbitControls.js create mode 100644 public/js/three/stats.module.js create mode 100644 public/js/three/three.min.js create mode 100644 test.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..060eae4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist +*.zip + + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* +package-lock.json +*.lock* \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7322693 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +#### 前端技术 +- electron +- Webpack +- node + + + + +项目下载和运行 +---- +- 安装cnpm +``` +npm install -g cnpm -registry=https://registry.npm.taobao.org +``` + +- 安装依赖 +``` +cnpm install +``` + +- 开发模式运行 +``` +npm start +``` + +- 编译项目 +``` +npm run build +``` + + + + +其他说明 +---- + +- 需要先安装cnpm,再初始化项目,不然会出现依赖安装失败的情况 + + + + + +附属文档 + + +- 其他待补充... + + +> @vue/cli 升级后,eslint 规则更新了。由于影响到全部 .vue 文件,需要逐个验证。既暂时关闭部分原本不验证的规则,后期维护时,在逐步修正这些 rules \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..7442b11 --- /dev/null +++ b/index.html @@ -0,0 +1,15 @@ + + + + + + + 你好! + + +

你好!

+ 我们正在使用 Node.js , + Chromium , + 和 Electron . + + \ No newline at end of file diff --git a/main.js b/main.js new file mode 100644 index 0000000..263cdad --- /dev/null +++ b/main.js @@ -0,0 +1,36 @@ +const { app, BrowserWindow } = require('electron/main') +const path = require('node:path') + +function createWindow() { + const win = new BrowserWindow({ + width: 1100, + height: 800, + resizable: true, //是否支持调整窗口大小 + webPreferences: { + }, + icon: path.join(__dirname, './public/img/32PX.ico'), + autoHideMenuBar: true,//自动隐藏菜单栏,除非按了Alt键。 默认值为 false. + }) + if (process.env.VITE_DEV_SERVER_URL) { + win.webContents.openDevTools()//在开发者模式下打开控制台 + win.loadURL(process.env.VITE_DEV_SERVER_URL) + } else { + win.loadFile('./test.html') + } +} + +app.whenReady().then(() => { + createWindow() + + app.on('activate', () => { + if (BrowserWindow.getAllWindows().length === 0) { + createWindow() + } + }) +}) + +app.on('window-all-closed', () => { + if (process.platform !== 'darwin') { + app.quit() + } +}) \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..97e5592 --- /dev/null +++ b/package.json @@ -0,0 +1,52 @@ +{ + "name": "electron-gis", + "version": "1.0.0", + "description": "", + "main": "main.js", + "scripts": { + "start": "electron .", + "test": "echo \"Error: no test specified\" && exit 1", + "build": "electron-builder", + "electron:generate-icons": "electron-icon-builder --input=./public/icon.png --output=build --flatten" + }, + "author": "zhangliang", + "license": "MIT", + "devDependencies": { + "@electron-forge/cli": "^6.0.0-beta.65", + "@electron-forge/maker-deb": "^6.0.0-beta.65", + "@electron-forge/maker-rpm": "^6.0.0-beta.65", + "@electron-forge/maker-squirrel": "^6.0.0-beta.65", + "@electron-forge/maker-zip": "^6.0.0-beta.65", + "electron": "^20.1.0" + }, + "dependencies": { + "electron-squirrel-startup": "^1.0.0" + }, + "config": { + "forge": { + "packagerConfig": {}, + "makers": [ + { + "name": "@electron-forge/maker-squirrel", + "config": { + "name": "electron_demo" + } + }, + { + "name": "@electron-forge/maker-zip", + "platforms": [ + "darwin" + ] + }, + { + "name": "@electron-forge/maker-deb", + "config": {} + }, + { + "name": "@electron-forge/maker-rpm", + "config": {} + } + ] + } + } +} diff --git a/public/img/256PX.ico b/public/img/256PX.ico new file mode 100644 index 0000000000000000000000000000000000000000..0c5561f3a0d86486fd9db6f4f2ea78a4a82c11af GIT binary patch literal 29585 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 OCYY3%yeLri82CTZCD57x literal 0 HcmV?d00001 diff --git a/public/img/32PX.ico b/public/img/32PX.ico new file mode 100644 index 0000000000000000000000000000000000000000..3ac54abc9586515a1853161ab878eea448e400f1 GIT binary patch literal 50817 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.status}function e(a){try{a.dispatchEvent(new MouseEvent("click"))}catch(c){var b=document.createEvent("MouseEvents");b.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f="object"==typeof window&&window.window===window?window:"object"==typeof self&&self.self===self?self:"object"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||("object"!=typeof window||window!==f?function(){}:"download"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement("a");g=g||b.name||"download",j.download=g,j.rel="noopener","string"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target="_blank")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:"msSaveOrOpenBlob"in navigator?function(f,g,h){if(g=g||f.name||"download","string"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement("a");i.href=f,i.target="_blank",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open("","_blank"),g&&(g.document.title=g.document.body.innerText="downloading..."),"string"==typeof b)return c(b,d,e);var h="application/octet-stream"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\/[\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&"undefined"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,"data:attachment/file;"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,"undefined"!=typeof module&&(module.exports=g)}); + +//# sourceMappingURL=FileSaver.min.js.map \ No newline at end of file diff --git a/public/js/Long.js b/public/js/Long.js new file mode 100644 index 0000000..d2fa2a1 --- /dev/null +++ b/public/js/Long.js @@ -0,0 +1,1467 @@ +/** + * @license + * Copyright 2009 The Closure Library Authors + * Copyright 2020 Daniel Wirtz / The long.js Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +// WebAssembly optimizations to do native i64 multiplication and divide +var wasm = null; +try { + wasm = new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 13, 2, 96, 0, 1, 127, 96, 4, 127, 127, 127, 127, 1, 127, 3, 7, 6, 0, 1, 1, 1, 1, 1, 6, 6, 1, 127, 1, 65, 0, 11, 7, 50, 6, 3, 109, 117, 108, 0, 1, 5, 100, 105, 118, 95, 115, 0, 2, 5, 100, 105, 118, 95, 117, 0, 3, 5, 114, 101, 109, 95, 115, 0, 4, 5, 114, 101, 109, 95, 117, 0, 5, 8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0, 10, 191, 1, 6, 4, 0, 35, 0, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11, 36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173, 32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0, 32, 4, 167, 11 + ])), {}).exports; +} catch (e) { + // no wasm support :( +} + +/** + * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers. + * See the from* functions below for more convenient ways of constructing Longs. + * @exports Long + * @class A Long class for representing a 64 bit two's-complement integer value. + * @param {number} low The low (signed) 32 bits of the long + * @param {number} high The high (signed) 32 bits of the long + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @constructor + */ +function Long(low, high, unsigned) { + + /** + * The low 32 bits as a signed value. + * @type {number} + */ + this.low = low | 0; + + /** + * The high 32 bits as a signed value. + * @type {number} + */ + this.high = high | 0; + + /** + * Whether unsigned or not. + * @type {boolean} + */ + this.unsigned = !!unsigned; +} + +// The internal representation of a long is the two given signed, 32-bit values. +// We use 32-bit pieces because these are the size of integers on which +// Javascript performs bit-operations. For operations like addition and +// multiplication, we split each number into 16 bit pieces, which can easily be +// multiplied within Javascript's floating-point representation without overflow +// or change in sign. +// +// In the algorithms below, we frequently reduce the negative case to the +// positive case by negating the input(s) and then post-processing the result. +// Note that we must ALWAYS check specially whether those values are MIN_VALUE +// (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as +// a positive number, it overflows back into a negative). Not handling this +// case would often result in infinite recursion. +// +// Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from* +// methods on which they depend. + +/** + * An indicator used to reliably determine if an object is a Long or not. + * @type {boolean} + * @const + * @private + */ +Long.prototype.__isLong__; + +Object.defineProperty(Long.prototype, "__isLong__", { value: true }); + +/** + * @function + * @param {*} obj Object + * @returns {boolean} + * @inner + */ +function isLong(obj) { + return (obj && obj["__isLong__"]) === true; +} + +/** + * @function + * @param {*} value number + * @returns {number} + * @inner + */ +function ctz32(value) { + var c = Math.clz32(value & -value); + return value ? 31 - c : c; +} + +/** + * Tests if the specified object is a Long. + * @function + * @param {*} obj Object + * @returns {boolean} + */ +Long.isLong = isLong; + +/** + * A cache of the Long representations of small integer values. + * @type {!Object} + * @inner + */ +var INT_CACHE = {}; + +/** + * A cache of the Long representations of small unsigned integer values. + * @type {!Object} + * @inner + */ +var UINT_CACHE = {}; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromInt(value, unsigned) { + var obj, cachedObj, cache; + if (unsigned) { + value >>>= 0; + if (cache = (0 <= value && value < 256)) { + cachedObj = UINT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, 0, true); + if (cache) + UINT_CACHE[value] = obj; + return obj; + } else { + value |= 0; + if (cache = (-128 <= value && value < 128)) { + cachedObj = INT_CACHE[value]; + if (cachedObj) + return cachedObj; + } + obj = fromBits(value, value < 0 ? -1 : 0, false); + if (cache) + INT_CACHE[value] = obj; + return obj; + } +} + +/** + * Returns a Long representing the given 32 bit integer value. + * @function + * @param {number} value The 32 bit integer in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromInt = fromInt; + +/** + * @param {number} value + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromNumber(value, unsigned) { + if (isNaN(value)) + return unsigned ? UZERO : ZERO; + if (unsigned) { + if (value < 0) + return UZERO; + if (value >= TWO_PWR_64_DBL) + return MAX_UNSIGNED_VALUE; + } else { + if (value <= -TWO_PWR_63_DBL) + return MIN_VALUE; + if (value + 1 >= TWO_PWR_63_DBL) + return MAX_VALUE; + } + if (value < 0) + return fromNumber(-value, unsigned).neg(); + return fromBits((value % TWO_PWR_32_DBL) | 0, (value / TWO_PWR_32_DBL) | 0, unsigned); +} + +/** + * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned. + * @function + * @param {number} value The number in question + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromNumber = fromNumber; + +/** + * @param {number} lowBits + * @param {number} highBits + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromBits(lowBits, highBits, unsigned) { + return new Long(lowBits, highBits, unsigned); +} + +/** + * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is + * assumed to use 32 bits. + * @function + * @param {number} lowBits The low 32 bits + * @param {number} highBits The high 32 bits + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} The corresponding Long value + */ +Long.fromBits = fromBits; + +/** + * @function + * @param {number} base + * @param {number} exponent + * @returns {number} + * @inner + */ +var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4) + +/** + * @param {string} str + * @param {(boolean|number)=} unsigned + * @param {number=} radix + * @returns {!Long} + * @inner + */ +function fromString(str, unsigned, radix) { + if (str.length === 0) + throw Error('empty string'); + if (typeof unsigned === 'number') { + // For goog.math.long compatibility + radix = unsigned; + unsigned = false; + } else { + unsigned = !!unsigned; + } + if (str === "NaN" || str === "Infinity" || str === "+Infinity" || str === "-Infinity") + return unsigned ? UZERO : ZERO; + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + + var p; + if ((p = str.indexOf('-')) > 0) + throw Error('interior hyphen'); + else if (p === 0) { + return fromString(str.substring(1), unsigned, radix).neg(); + } + + // Do several (8) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 8)); + + var result = ZERO; + for (var i = 0; i < str.length; i += 8) { + var size = Math.min(8, str.length - i), + value = parseInt(str.substring(i, i + size), radix); + if (size < 8) { + var power = fromNumber(pow_dbl(radix, size)); + result = result.mul(power).add(fromNumber(value)); + } else { + result = result.mul(radixToPower); + result = result.add(fromNumber(value)); + } + } + result.unsigned = unsigned; + return result; +} + +/** + * Returns a Long representation of the given string, written using the specified radix. + * @function + * @param {string} str The textual representation of the Long + * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed + * @param {number=} radix The radix in which the text is written (2-36), defaults to 10 + * @returns {!Long} The corresponding Long value + */ +Long.fromString = fromString; + +/** + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val + * @param {boolean=} unsigned + * @returns {!Long} + * @inner + */ +function fromValue(val, unsigned) { + if (typeof val === 'number') + return fromNumber(val, unsigned); + if (typeof val === 'string') + return fromString(val, unsigned); + // Throws for non-objects, converts non-instanceof Long: + return fromBits(val.low, val.high, typeof unsigned === 'boolean' ? unsigned : val.unsigned); +} + +/** + * Converts the specified value to a Long using the appropriate from* function for its type. + * @function + * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val Value + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {!Long} + */ +Long.fromValue = fromValue; + +// NOTE: the compiler should inline these constant values below and then remove these variables, so there should be +// no runtime penalty for these. + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_16_DBL = 1 << 16; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_24_DBL = 1 << 24; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL; + +/** + * @type {number} + * @const + * @inner + */ +var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2; + +/** + * @type {!Long} + * @const + * @inner + */ +var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL); + +/** + * @type {!Long} + * @inner + */ +var ZERO = fromInt(0); + +/** + * Signed zero. + * @type {!Long} + */ +Long.ZERO = ZERO; + +/** + * @type {!Long} + * @inner + */ +var UZERO = fromInt(0, true); + +/** + * Unsigned zero. + * @type {!Long} + */ +Long.UZERO = UZERO; + +/** + * @type {!Long} + * @inner + */ +var ONE = fromInt(1); + +/** + * Signed one. + * @type {!Long} + */ +Long.ONE = ONE; + +/** + * @type {!Long} + * @inner + */ +var UONE = fromInt(1, true); + +/** + * Unsigned one. + * @type {!Long} + */ +Long.UONE = UONE; + +/** + * @type {!Long} + * @inner + */ +var NEG_ONE = fromInt(-1); + +/** + * Signed negative one. + * @type {!Long} + */ +Long.NEG_ONE = NEG_ONE; + +/** + * @type {!Long} + * @inner + */ +var MAX_VALUE = fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0, false); + +/** + * Maximum signed value. + * @type {!Long} + */ +Long.MAX_VALUE = MAX_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MAX_UNSIGNED_VALUE = fromBits(0xFFFFFFFF | 0, 0xFFFFFFFF | 0, true); + +/** + * Maximum unsigned value. + * @type {!Long} + */ +Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE; + +/** + * @type {!Long} + * @inner + */ +var MIN_VALUE = fromBits(0, 0x80000000 | 0, false); + +/** + * Minimum signed value. + * @type {!Long} + */ +Long.MIN_VALUE = MIN_VALUE; + +/** + * @alias Long.prototype + * @inner + */ +var LongPrototype = Long.prototype; + +/** + * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer. + * @this {!Long} + * @returns {number} + */ +LongPrototype.toInt = function toInt() { + return this.unsigned ? this.low >>> 0 : this.low; +}; + +/** + * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa). + * @this {!Long} + * @returns {number} + */ +LongPrototype.toNumber = function toNumber() { + if (this.unsigned) + return ((this.high >>> 0) * TWO_PWR_32_DBL) + (this.low >>> 0); + return this.high * TWO_PWR_32_DBL + (this.low >>> 0); +}; + +/** + * Converts the Long to a string written in the specified radix. + * @this {!Long} + * @param {number=} radix Radix (2-36), defaults to 10 + * @returns {string} + * @override + * @throws {RangeError} If `radix` is out of range + */ +LongPrototype.toString = function toString(radix) { + radix = radix || 10; + if (radix < 2 || 36 < radix) + throw RangeError('radix'); + if (this.isZero()) + return '0'; + if (this.isNegative()) { // Unsigned Longs are never negative + if (this.eq(MIN_VALUE)) { + // We need to change the Long value before it can be negated, so we remove + // the bottom-most digit in this base and then recurse to do the rest. + var radixLong = fromNumber(radix), + div = this.div(radixLong), + rem1 = div.mul(radixLong).sub(this); + return div.toString(radix) + rem1.toInt().toString(radix); + } else + return '-' + this.neg().toString(radix); + } + + // Do several (6) digits each time through the loop, so as to + // minimize the calls to the very expensive emulated div. + var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned), + rem = this; + var result = ''; + while (true) { + var remDiv = rem.div(radixToPower), + intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0, + digits = intval.toString(radix); + rem = remDiv; + if (rem.isZero()) + return digits + result; + else { + while (digits.length < 6) + digits = '0' + digits; + result = '' + digits + result; + } + } +}; + +/** + * Gets the high 32 bits as a signed integer. + * @this {!Long} + * @returns {number} Signed high bits + */ +LongPrototype.getHighBits = function getHighBits() { + return this.high; +}; + +/** + * Gets the high 32 bits as an unsigned integer. + * @this {!Long} + * @returns {number} Unsigned high bits + */ +LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() { + return this.high >>> 0; +}; + +/** + * Gets the low 32 bits as a signed integer. + * @this {!Long} + * @returns {number} Signed low bits + */ +LongPrototype.getLowBits = function getLowBits() { + return this.low; +}; + +/** + * Gets the low 32 bits as an unsigned integer. + * @this {!Long} + * @returns {number} Unsigned low bits + */ +LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() { + return this.low >>> 0; +}; + +/** + * Gets the number of bits needed to represent the absolute value of this Long. + * @this {!Long} + * @returns {number} + */ +LongPrototype.getNumBitsAbs = function getNumBitsAbs() { + if (this.isNegative()) // Unsigned Longs are never negative + return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs(); + var val = this.high != 0 ? this.high : this.low; + for (var bit = 31; bit > 0; bit--) + if ((val & (1 << bit)) != 0) + break; + return this.high != 0 ? bit + 33 : bit + 1; +}; + +/** + * Tests if this Long's value equals zero. + * @this {!Long} + * @returns {boolean} + */ +LongPrototype.isZero = function isZero() { + return this.high === 0 && this.low === 0; +}; + +/** + * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}. + * @returns {boolean} + */ +LongPrototype.eqz = LongPrototype.isZero; + +/** + * Tests if this Long's value is negative. + * @this {!Long} + * @returns {boolean} + */ +LongPrototype.isNegative = function isNegative() { + return !this.unsigned && this.high < 0; +}; + +/** + * Tests if this Long's value is positive or zero. + * @this {!Long} + * @returns {boolean} + */ +LongPrototype.isPositive = function isPositive() { + return this.unsigned || this.high >= 0; +}; + +/** + * Tests if this Long's value is odd. + * @this {!Long} + * @returns {boolean} + */ +LongPrototype.isOdd = function isOdd() { + return (this.low & 1) === 1; +}; + +/** + * Tests if this Long's value is even. + * @this {!Long} + * @returns {boolean} + */ +LongPrototype.isEven = function isEven() { + return (this.low & 1) === 0; +}; + +/** + * Tests if this Long's value equals the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.equals = function equals(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.unsigned !== other.unsigned && (this.high >>> 31) === 1 && (other.high >>> 31) === 1) + return false; + return this.high === other.high && this.low === other.low; +}; + +/** + * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.eq = LongPrototype.equals; + +/** + * Tests if this Long's value differs from the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.notEquals = function notEquals(other) { + return !this.eq(/* validates */ other); +}; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.neq = LongPrototype.notEquals; + +/** + * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ne = LongPrototype.notEquals; + +/** + * Tests if this Long's value is less than the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThan = function lessThan(other) { + return this.comp(/* validates */ other) < 0; +}; + +/** + * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lt = LongPrototype.lessThan; + +/** + * Tests if this Long's value is less than or equal the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) { + return this.comp(/* validates */ other) <= 0; +}; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.lte = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.le = LongPrototype.lessThanOrEqual; + +/** + * Tests if this Long's value is greater than the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThan = function greaterThan(other) { + return this.comp(/* validates */ other) > 0; +}; + +/** + * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gt = LongPrototype.greaterThan; + +/** + * Tests if this Long's value is greater than or equal the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) { + return this.comp(/* validates */ other) >= 0; +}; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.gte = LongPrototype.greaterThanOrEqual; + +/** + * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}. + * @function + * @param {!Long|number|string} other Other value + * @returns {boolean} + */ +LongPrototype.ge = LongPrototype.greaterThanOrEqual; + +/** + * Compares this Long's value with the specified's. + * @this {!Long} + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.compare = function compare(other) { + if (!isLong(other)) + other = fromValue(other); + if (this.eq(other)) + return 0; + var thisNeg = this.isNegative(), + otherNeg = other.isNegative(); + if (thisNeg && !otherNeg) + return -1; + if (!thisNeg && otherNeg) + return 1; + // At this point the sign bits are the same + if (!this.unsigned) + return this.sub(other).isNegative() ? -1 : 1; + // Both are positive if at least one is unsigned + return (other.high >>> 0) > (this.high >>> 0) || (other.high === this.high && (other.low >>> 0) > (this.low >>> 0)) ? -1 : 1; +}; + +/** + * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}. + * @function + * @param {!Long|number|string} other Other value + * @returns {number} 0 if they are the same, 1 if the this is greater and -1 + * if the given one is greater + */ +LongPrototype.comp = LongPrototype.compare; + +/** + * Negates this Long's value. + * @this {!Long} + * @returns {!Long} Negated Long + */ +LongPrototype.negate = function negate() { + if (!this.unsigned && this.eq(MIN_VALUE)) + return MIN_VALUE; + return this.not().add(ONE); +}; + +/** + * Negates this Long's value. This is an alias of {@link Long#negate}. + * @function + * @returns {!Long} Negated Long + */ +LongPrototype.neg = LongPrototype.negate; + +/** + * Returns the sum of this and the specified Long. + * @this {!Long} + * @param {!Long|number|string} addend Addend + * @returns {!Long} Sum + */ +LongPrototype.add = function add(addend) { + if (!isLong(addend)) + addend = fromValue(addend); + + // Divide each number into 4 chunks of 16 bits, and then sum the chunks. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = addend.high >>> 16; + var b32 = addend.high & 0xFFFF; + var b16 = addend.low >>> 16; + var b00 = addend.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 + b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 + b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 + b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 + b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the difference of this and the specified Long. + * @this {!Long} + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.subtract = function subtract(subtrahend) { + if (!isLong(subtrahend)) + subtrahend = fromValue(subtrahend); + return this.add(subtrahend.neg()); +}; + +/** + * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}. + * @function + * @param {!Long|number|string} subtrahend Subtrahend + * @returns {!Long} Difference + */ +LongPrototype.sub = LongPrototype.subtract; + +/** + * Returns the product of this and the specified Long. + * @this {!Long} + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.multiply = function multiply(multiplier) { + if (this.isZero()) + return this; + if (!isLong(multiplier)) + multiplier = fromValue(multiplier); + + // use wasm support if present + if (wasm) { + var low = wasm["mul"](this.low, + this.high, + multiplier.low, + multiplier.high); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + + if (multiplier.isZero()) + return this.unsigned ? UZERO : ZERO; + if (this.eq(MIN_VALUE)) + return multiplier.isOdd() ? MIN_VALUE : ZERO; + if (multiplier.eq(MIN_VALUE)) + return this.isOdd() ? MIN_VALUE : ZERO; + + if (this.isNegative()) { + if (multiplier.isNegative()) + return this.neg().mul(multiplier.neg()); + else + return this.neg().mul(multiplier).neg(); + } else if (multiplier.isNegative()) + return this.mul(multiplier.neg()).neg(); + + // If both longs are small, use float multiplication + if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24)) + return fromNumber(this.toNumber() * multiplier.toNumber(), this.unsigned); + + // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products. + // We can skip products that would overflow. + + var a48 = this.high >>> 16; + var a32 = this.high & 0xFFFF; + var a16 = this.low >>> 16; + var a00 = this.low & 0xFFFF; + + var b48 = multiplier.high >>> 16; + var b32 = multiplier.high & 0xFFFF; + var b16 = multiplier.low >>> 16; + var b00 = multiplier.low & 0xFFFF; + + var c48 = 0, c32 = 0, c16 = 0, c00 = 0; + c00 += a00 * b00; + c16 += c00 >>> 16; + c00 &= 0xFFFF; + c16 += a16 * b00; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c16 += a00 * b16; + c32 += c16 >>> 16; + c16 &= 0xFFFF; + c32 += a32 * b00; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a16 * b16; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c32 += a00 * b32; + c48 += c32 >>> 16; + c32 &= 0xFFFF; + c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48; + c48 &= 0xFFFF; + return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned); +}; + +/** + * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}. + * @function + * @param {!Long|number|string} multiplier Multiplier + * @returns {!Long} Product + */ +LongPrototype.mul = LongPrototype.multiply; + +/** + * Returns this Long divided by the specified. The result is signed if this Long is signed or + * unsigned if this Long is unsigned. + * @this {!Long} + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.divide = function divide(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + if (divisor.isZero()) + throw Error('division by zero'); + + // use wasm support if present + if (wasm) { + // guard against signed division overflow: the largest + // negative number / -1 would be 1 larger than the largest + // positive number, due to two's complement. + if (!this.unsigned && + this.high === -0x80000000 && + divisor.low === -1 && divisor.high === -1) { + // be consistent with non-wasm code path + return this; + } + var low = (this.unsigned ? wasm["div_u"] : wasm["div_s"])( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + + if (this.isZero()) + return this.unsigned ? UZERO : ZERO; + var approx, rem, res; + if (!this.unsigned) { + // This section is only relevant for signed longs and is derived from the + // closure library as a whole. + if (this.eq(MIN_VALUE)) { + if (divisor.eq(ONE) || divisor.eq(NEG_ONE)) + return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE + else if (divisor.eq(MIN_VALUE)) + return ONE; + else { + // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|. + var halfThis = this.shr(1); + approx = halfThis.div(divisor).shl(1); + if (approx.eq(ZERO)) { + return divisor.isNegative() ? ONE : NEG_ONE; + } else { + rem = this.sub(divisor.mul(approx)); + res = approx.add(rem.div(divisor)); + return res; + } + } + } else if (divisor.eq(MIN_VALUE)) + return this.unsigned ? UZERO : ZERO; + if (this.isNegative()) { + if (divisor.isNegative()) + return this.neg().div(divisor.neg()); + return this.neg().div(divisor).neg(); + } else if (divisor.isNegative()) + return this.div(divisor.neg()).neg(); + res = ZERO; + } else { + // The algorithm below has not been made for unsigned longs. It's therefore + // required to take special care of the MSB prior to running it. + if (!divisor.unsigned) + divisor = divisor.toUnsigned(); + if (divisor.gt(this)) + return UZERO; + if (divisor.gt(this.shru(1))) // 15 >>> 1 = 7 ; with divisor = 8 ; true + return UONE; + res = UZERO; + } + + // Repeat the following until the remainder is less than other: find a + // floating-point that approximates remainder / other *from below*, add this + // into the result, and subtract it from the remainder. It is critical that + // the approximate value is less than or equal to the real value so that the + // remainder never becomes negative. + rem = this; + while (rem.gte(divisor)) { + // Approximate the result of division. This may be a little greater or + // smaller than the actual value. + approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber())); + + // We will tweak the approximate result by changing it in the 48-th digit or + // the smallest non-fractional digit, whichever is larger. + var log2 = Math.ceil(Math.log(approx) / Math.LN2), + delta = (log2 <= 48) ? 1 : pow_dbl(2, log2 - 48), + + // Decrease the approximation until it is smaller than the remainder. Note + // that if it is too large, the product overflows and is negative. + approxRes = fromNumber(approx), + approxRem = approxRes.mul(divisor); + while (approxRem.isNegative() || approxRem.gt(rem)) { + approx -= delta; + approxRes = fromNumber(approx, this.unsigned); + approxRem = approxRes.mul(divisor); + } + + // We know the answer can't be zero... and actually, zero would cause + // infinite recursion since we would make no progress. + if (approxRes.isZero()) + approxRes = ONE; + + res = res.add(approxRes); + rem = rem.sub(approxRem); + } + return res; +}; + +/** + * Returns this Long divided by the specified. This is an alias of {@link Long#divide}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Quotient + */ +LongPrototype.div = LongPrototype.divide; + +/** + * Returns this Long modulo the specified. + * @this {!Long} + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.modulo = function modulo(divisor) { + if (!isLong(divisor)) + divisor = fromValue(divisor); + + // use wasm support if present + if (wasm) { + var low = (this.unsigned ? wasm["rem_u"] : wasm["rem_s"])( + this.low, + this.high, + divisor.low, + divisor.high + ); + return fromBits(low, wasm["get_high"](), this.unsigned); + } + + return this.sub(this.div(divisor).mul(divisor)); +}; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.mod = LongPrototype.modulo; + +/** + * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}. + * @function + * @param {!Long|number|string} divisor Divisor + * @returns {!Long} Remainder + */ +LongPrototype.rem = LongPrototype.modulo; + +/** + * Returns the bitwise NOT of this Long. + * @this {!Long} + * @returns {!Long} + */ +LongPrototype.not = function not() { + return fromBits(~this.low, ~this.high, this.unsigned); +}; + +/** + * Returns count leading zeros of this Long. + * @this {!Long} + * @returns {!number} + */ +LongPrototype.countLeadingZeros = function countLeadingZeros() { + return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32; +}; + +/** + * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}. + * @function + * @param {!Long} + * @returns {!number} + */ +LongPrototype.clz = LongPrototype.countLeadingZeros; + +/** + * Returns count trailing zeros of this Long. + * @this {!Long} + * @returns {!number} + */ +LongPrototype.countTrailingZeros = function countTrailingZeros() { + return this.low ? ctz32(this.low) : ctz32(this.high) + 32; +}; + +/** + * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}. + * @function + * @param {!Long} + * @returns {!number} + */ +LongPrototype.ctz = LongPrototype.countTrailingZeros; + +/** + * Returns the bitwise AND of this Long and the specified. + * @this {!Long} + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.and = function and(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low & other.low, this.high & other.high, this.unsigned); +}; + +/** + * Returns the bitwise OR of this Long and the specified. + * @this {!Long} + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.or = function or(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low | other.low, this.high | other.high, this.unsigned); +}; + +/** + * Returns the bitwise XOR of this Long and the given one. + * @this {!Long} + * @param {!Long|number|string} other Other Long + * @returns {!Long} + */ +LongPrototype.xor = function xor(other) { + if (!isLong(other)) + other = fromValue(other); + return fromBits(this.low ^ other.low, this.high ^ other.high, this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. + * @this {!Long} + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftLeft = function shiftLeft(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits(this.low << numBits, (this.high << numBits) | (this.low >>> (32 - numBits)), this.unsigned); + else + return fromBits(0, this.low << (numBits - 32), this.unsigned); +}; + +/** + * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shl = LongPrototype.shiftLeft; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. + * @this {!Long} + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRight = function shiftRight(numBits) { + if (isLong(numBits)) + numBits = numBits.toInt(); + if ((numBits &= 63) === 0) + return this; + else if (numBits < 32) + return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >> numBits, this.unsigned); + else + return fromBits(this.high >> (numBits - 32), this.high >= 0 ? 0 : -1, this.unsigned); +}; + +/** + * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr = LongPrototype.shiftRight; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. + * @this {!Long} + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) { + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits < 32) return fromBits((this.low >>> numBits) | (this.high << (32 - numBits)), this.high >>> numBits, this.unsigned); + if (numBits === 32) return fromBits(this.high, 0, this.unsigned); + return fromBits(this.high >>> (numBits - 32), 0, this.unsigned); +}; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shru = LongPrototype.shiftRightUnsigned; + +/** + * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Shifted Long + */ +LongPrototype.shr_u = LongPrototype.shiftRightUnsigned; + +/** + * Returns this Long with bits rotated to the left by the given amount. + * @this {!Long} + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Rotated Long + */ +LongPrototype.rotateLeft = function rotateLeft(numBits) { + var b; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b = (32 - numBits); + return fromBits(((this.low << numBits) | (this.high >>> b)), ((this.high << numBits) | (this.low >>> b)), this.unsigned); + } + numBits -= 32; + b = (32 - numBits); + return fromBits(((this.high << numBits) | (this.low >>> b)), ((this.low << numBits) | (this.high >>> b)), this.unsigned); +} +/** + * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Rotated Long + */ +LongPrototype.rotl = LongPrototype.rotateLeft; + +/** + * Returns this Long with bits rotated to the right by the given amount. + * @this {!Long} + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Rotated Long + */ +LongPrototype.rotateRight = function rotateRight(numBits) { + var b; + if (isLong(numBits)) numBits = numBits.toInt(); + if ((numBits &= 63) === 0) return this; + if (numBits === 32) return fromBits(this.high, this.low, this.unsigned); + if (numBits < 32) { + b = (32 - numBits); + return fromBits(((this.high << b) | (this.low >>> numBits)), ((this.low << b) | (this.high >>> numBits)), this.unsigned); + } + numBits -= 32; + b = (32 - numBits); + return fromBits(((this.low << b) | (this.high >>> numBits)), ((this.high << b) | (this.low >>> numBits)), this.unsigned); +} +/** + * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}. + * @function + * @param {number|!Long} numBits Number of bits + * @returns {!Long} Rotated Long + */ +LongPrototype.rotr = LongPrototype.rotateRight; + +/** + * Converts this Long to signed. + * @this {!Long} + * @returns {!Long} Signed long + */ +LongPrototype.toSigned = function toSigned() { + if (!this.unsigned) + return this; + return fromBits(this.low, this.high, false); +}; + +/** + * Converts this Long to unsigned. + * @this {!Long} + * @returns {!Long} Unsigned long + */ +LongPrototype.toUnsigned = function toUnsigned() { + if (this.unsigned) + return this; + return fromBits(this.low, this.high, true); +}; + +/** + * Converts this Long to its byte representation. + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @this {!Long} + * @returns {!Array.} Byte representation + */ +LongPrototype.toBytes = function toBytes(le) { + return le ? this.toBytesLE() : this.toBytesBE(); +}; + +/** + * Converts this Long to its little endian byte representation. + * @this {!Long} + * @returns {!Array.} Little endian byte representation + */ +LongPrototype.toBytesLE = function toBytesLE() { + var hi = this.high, + lo = this.low; + return [ + lo & 0xff, + lo >>> 8 & 0xff, + lo >>> 16 & 0xff, + lo >>> 24, + hi & 0xff, + hi >>> 8 & 0xff, + hi >>> 16 & 0xff, + hi >>> 24 + ]; +}; + +/** + * Converts this Long to its big endian byte representation. + * @this {!Long} + * @returns {!Array.} Big endian byte representation + */ +LongPrototype.toBytesBE = function toBytesBE() { + var hi = this.high, + lo = this.low; + return [ + hi >>> 24, + hi >>> 16 & 0xff, + hi >>> 8 & 0xff, + hi & 0xff, + lo >>> 24, + lo >>> 16 & 0xff, + lo >>> 8 & 0xff, + lo & 0xff + ]; +}; + +/** + * Creates a Long from its byte representation. + * @param {!Array.} bytes Byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @param {boolean=} le Whether little or big endian, defaults to big endian + * @returns {Long} The corresponding Long value + */ +Long.fromBytes = function fromBytes(bytes, unsigned, le) { + return le ? Long.fromBytesLE(bytes, unsigned) : Long.fromBytesBE(bytes, unsigned); +}; + +/** + * Creates a Long from its little endian byte representation. + * @param {!Array.} bytes Little endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesLE = function fromBytesLE(bytes, unsigned) { + return new Long( + bytes[0] | + bytes[1] << 8 | + bytes[2] << 16 | + bytes[3] << 24, + bytes[4] | + bytes[5] << 8 | + bytes[6] << 16 | + bytes[7] << 24, + unsigned + ); +}; + +/** + * Creates a Long from its big endian byte representation. + * @param {!Array.} bytes Big endian byte representation + * @param {boolean=} unsigned Whether unsigned or not, defaults to signed + * @returns {Long} The corresponding Long value + */ +Long.fromBytesBE = function fromBytesBE(bytes, unsigned) { + return new Long( + bytes[4] << 24 | + bytes[5] << 16 | + bytes[6] << 8 | + bytes[7], + bytes[0] << 24 | + bytes[1] << 16 | + bytes[2] << 8 | + bytes[3], + unsigned + ); +}; + +export default Long; \ No newline at end of file diff --git a/public/js/axisInfo/constant.js b/public/js/axisInfo/constant.js new file mode 100644 index 0000000..dfdd093 --- /dev/null +++ b/public/js/axisInfo/constant.js @@ -0,0 +1,611 @@ +const createAxisInfo = (size, minSize = 0) => { + const textY = minSize ? (360 / (size + (-minSize))) * minSize - 30 : -30; + let data = {}; + let prps = [ + { + type: 'plan', + line: [ + 0, 0, 0, + 50, 0, 0, + 0, 0, 360, + + 0, 0, 360, + 50, 0, 360, + 50, 0, 0, + ], + color: 0x32494B, + }, + { + type: 'curveLine', + line: [ + [0, minSize ? 0 : size / 2, 0], + [0, minSize ? minSize : 0, 90], + [0, size, 270], + [0, minSize ? 0 : size / 2, 360], + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + 0, minSize, 0, + 0, size, 0, + 0, size, 360, + 0, minSize, 360, + 0, minSize, 0, + + 0, 0, 0, + 50, 0, 0, + 50, 0, 360, + 0, 0, 360, + 0, 0, 0, + + // 0, minSize, 0, + // 0, size, 0, + // 50, size, 0, + // 50, minSize, 0, + // 0, minSize, 0, + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + 0, 0, 90, + 50, 0, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + { + type: 'line', + line: [ + 10, 0, 0, + 10, 0, 360, + ], + color: 0xffffff, + position: 'X', + num: 4, + margin: 10, + }, + { + type: 'line', + line: [ + 0, (minSize ? minSize + (size / 2) : size / 4), 0, + 0, (minSize ? minSize + (size / 2) : size / 4), 360, + ], + color: 0xffffff, + position: 'Y', + num: 3, + margin: minSize ? size / 2 : size / 4, + }, + { + type: 'line', + line: [ + 0, minSize, 90, + 0, size, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + // { + // type: 'line', + // line: [ + // 10, minSize, 0, + // 10, size, 0, + // ], + // color: 0xffffff, + // position: 'X', + // num: 4, + // margin: 10, + // }, + // { + // type: 'line', + // line: [ + // 0, (minSize ? minSize + (size / 4) : size / 4), 0, + // 50, (minSize ? minSize + (size / 4) : size / 4), 0, + // ], + // color: 0xffffff, + // position: 'Y', + // num: 3 + (minSize ? -minSize / (size / 4) : 0), + // margin: size / 4, + // }, + { + type: 'text', + content: ['0'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, -40, 360], + }, + { + type: 'text', + content: ['10'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [288, -40, 360], + }, + { + type: 'text', + content: ['20'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [216, -40, 360], + }, + { + type: 'text', + content: ['30'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [144, -40, 360], + }, + { + type: 'text', + content: ['40'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [72, -40, 360], + }, + { + type: 'text', + content: ['50'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, -40, 360], + }, + { + type: 'text', + content: ['0'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [390, -40, 330], + textAlign: 'right', + }, + { + type: 'text', + content: ['90'], + w: 55, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [380, -40, 250], + }, + { + type: 'text', + content: ['180'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 20.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [380, -40, 160], + }, + { + type: 'text', + content: ['270'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 20.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [380, -40, 70], + }, + { + type: 'text', + content: ['360'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 20.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [380, -40, -20], + }, + ] + let prpd = [ + { + type: 'curveLine', + line: [ + [0, minSize ? 0 : size / 2, 0], + [0, minSize ? minSize : 0, 90], + [0, size, 270], + [0, minSize ? 0 : size / 2, 360], + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + 0, minSize, 0, + 0, size, 0, + 0, size, 360, + 0, minSize, 360, + 0, minSize, 0, + + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + 0, 0, 90, + 50, 0, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + { + type: 'line', + line: [ + 0, (minSize ? minSize + (size / 2) : size / 4), 0, + 0, (minSize ? minSize + (size / 2) : size / 4), 360, + ], + color: 0xffffff, + position: 'Y', + num: 3, + margin: minSize ? size / 2 : size / 4, + }, + { + type: 'line', + line: [ + 0, minSize, 90, + 0, size, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + { + type: 'text', + content: ['0'], + w: 40, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, textY, 340], + }, + { + type: 'text', + content: ['90'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, textY, 270], + }, + { + type: 'text', + content: ['180'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, textY - 2, 180], + }, + { + type: 'text', + content: ['270'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, textY - 2, 90], + }, + { + type: 'text', + content: ['360'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [360, textY - 2, 0], + }, + ]; + let prpd3d = [ + { + type: 'plan', + line: [minSize ? size * 2 : size, 360, minSize], + color: 0x32494B, + }, + { + type: 'curveLine', + line: [ + [minSize ? 0 : size / 2, 0, 0], + [size, 0, 90], + [minSize, 0, 270], + [minSize ? 0 : size / 2, 0, 360], + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + minSize, 0, 0, + size, 0, 0, + size, 0, 360, + minSize, 0, 360, + minSize, 0, 0, + + 0, 0, 0, + 0, 50, 0, + 0, 50, 360, + 0, 0, 360, + 0, 0, 0, + ], + color: 0xffffff, + }, + { + type: 'line', + line: [ + minSize, 0, 90, + size, 0, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + { + type: 'line', + line: [ + (minSize ? minSize + (size / 2) : size / 4), 0, 0, + (minSize ? minSize + (size / 2) : size / 4), 0, 360, + ], + color: 0xffffff, + position: 'X', + num: 3, + margin: (minSize ? size / 2 : size / 4), + }, + { + type: 'line', + line: [ + 0, 0, 90, + 0, 50, 90, + ], + color: 0xffffff, + position: 'Z', + num: 3, + margin: 90, + }, + { + type: 'line', + line: [ + 0, 10, 0, + 0, 10, 360, + ], + color: 0xffffff, + position: 'Y', + num: 4, + margin: 10, + }, + { + type: 'text', + content: ['0'], + w: 40, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 20, 380], + }, + { + type: 'text', + content: ['10'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 72, 380], + }, + { + type: 'text', + content: ['20'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 144, 380], + }, + { + type: 'text', + content: ['30'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 216, 380], + }, + { + type: 'text', + content: ['40'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 288, 380], + }, + { + type: 'text', + content: ['50'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, 360, 380], + }, + { + type: 'text', + content: ['0'], + w: 40, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? 200 : 400, -40, 330], + }, + { + type: 'text', + content: ['90'], + w: 47, + h: 25, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? 200 : 400, -40, 230], + }, + { + type: 'text', + content: ['180'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? 200 : 400, -40, 140], + }, + { + type: 'text', + content: ['270'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? 200 : 400, -40, 50], + }, + { + type: 'text', + content: ['360'], + w: 75, + h: 25, + ch: 9, + cw: 5.7, + color: '#ffffff', + size: 22.3, + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? 200 : 400, -40, -40], + }, + ] + let set = [7.2, 360 / (size + (-minSize)), 1]; + let isGIS = size <= 80; + let YAxisText = minSize ? [ + [size, 180], + [size / 2, 90], + [0, 0], + [minSize / 2, -90], + [minSize, -180], + ] : [ + [isGIS ? size == 80 ? 0 : `-${80 - size}` : size], + [isGIS ? `-${80 - (size * 0.75)}` : size * 0.75,], + [isGIS ? `-${80 - (size * 0.5)}` : size * 0.5,], + [isGIS ? `-${80 - (0.25 * size)}` : size * 0.25,], + [isGIS ? `-80` : 0,], + ]; + let infoNum = [ + { + w: 40, + h: 20, + size: 16, + }, { + w: 55, + h: 25, + size: 22.3, + }, { + w: 70, + h: 25, + size: 22.3, + }, { + w: 100, + h: 30, + size: 26.3, + }, { + w: 115, + h: 32, + size: 28.3, + } + ] + YAxisText.forEach((item, index) => { + item[0] = item[0].toString(); + let length = item[0].length; + let info = { + type: 'text', + content: item, + w: infoNum[length - 1].w, + h: infoNum[length - 1].h, + cw: length >= 3 ? 5.7 : '', + ch: length >= 3 ? 9 : '', + size: infoNum[length - 1].size, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [index, minSize ? item[1] : 360 - (index * 90), length === 1 ? 410 : 430], + textAlign: 'right', + }; + let infoPrpd = { + type: 'text', + content: item, + w: infoNum[length - 1].w, + h: infoNum[length - 1].h, + cw: length >= 3 ? 5.7 : '', + ch: length >= 3 ? 9 : '', + size: infoNum[length - 1].size, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [0, minSize ? item[1] : 360 - (index * 90), length === 1 ? 385 : 395], + textAlign: 'right', + }; + let info3d = { + type: 'text', + content: item, + w: infoNum[length - 1].w, + h: infoNum[length - 1].h, + cw: length >= 3 ? 5.7 : '', + ch: length >= 3 ? 9 : '', + size: infoNum[length - 1].size, + color: '#ffffff', + font: 'normal Bold 500px Arial,sans-serif', + xyz: [minSize ? item[1] - 20 : 360 - (index * 90), -40, 380], + textAlign: 'right', + }; + prps.push(info); + prpd.push(infoPrpd); + prpd3d.push(info3d); + }) + data[size] = { set, prps, prpd, prpd3d } + return data; +} +export { createAxisInfo } \ No newline at end of file diff --git a/public/js/byteConvert.js b/public/js/byteConvert.js new file mode 100644 index 0000000..b27183f --- /dev/null +++ b/public/js/byteConvert.js @@ -0,0 +1,694 @@ +import Long from './Long.js'; +//const Long = require('./Long.js') +//import Long from '@/static/js/Long.js' + +/** + * short所占byte的最大位数 + */ +const SHORT_MAX_LENGTH = 2; +/** + * int所占byte的最大位数 + */ +const INT_MAX_LENGTH = 4; + +/** + * float所占byte的最大位数 + */ +const FLOAT_MAX_LENGTH = 4; + +/** + * long所占byte的最大位数 + */ +const LONG_MAX_LENGTH = 8; + + +/** + * 一位byte所能表示的最大无符号整数是255 + */ +const MAX_ARRAY_LENGTH = 255; + +/** + * 两位byte所能表示的最大无符号整数是65535 + */ +const MAX_LARGE_ARRAY_LENGTH = 65535; + +const BigEndian = 0; + +const LittleEndian = 1; + + +let int8 = new Int8Array(4); +let int32 = new Int32Array(int8.buffer, 0, 1); +let float32 = new Float32Array(int8.buffer, 0, 1); + + +function stringToChars(_s) { + // _s = _s.replace(/(^\s*)|(\s*$)/g, ""); + let _r = []; + for (let i = 0; i < _s.length; i++) { + _r[i] = _s.charAt(i); + } + return _r; + +} + +/*** + * byte[] 转16进制字符串 + * @param src + * @return + */ +function bytesToHexString(src) { + + let stringBuilder = ""; + if (src == null || src.length <= 0) { + return null; + } + for (let i = 0; i < src.length; i++) { + let v = src[i] & 0xFF; + let hv = Number(v).toString(16); + if (hv.length < 2) { + stringBuilder += "0" + } + stringBuilder += hv; + } + return stringBuilder; +} + +/*** + * byte[] 转16进制字符串[空格隔开] + * @param src + * @return + */ +function bytesToHex(src) { + let stringBuilder = ""; + if (src == null || src.length <= 0) { + return null; + } + for (let i = 0; i < src.length; i++) { + let v = src[i] & 0xFF; + let hv = Number(v).toString(16); + if (hv.length < 2) { + stringBuilder.concat(0); + } + stringBuilder.concat(hv).concat(""); + } + return stringBuilder; +} + +/** + * hexString转byteArr + * + * @param hexString + * @return + */ +function hexStringToBytes(hexString) { + if (hexString == null || "" === hexString) { + return null; + } + hexString = hexString.toUpperCase(); + let length = hexString.length / 2; + let hexChars = stringToChars(hexString); + let d = [length]; + for (let i = 0; i < length; i++) { + let pos = i * 2; + d[i] = (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1])); + } + return d; +} + +/** + * char to byte + * @param c + * @return + */ +function charToByte(c) { + return "0123456789ABCDEF".indexOf(c); +} + +/** + * 一位byte转int【无符号】 + * + * @param b + * @return 【0 ~ 255】 + */ +function byteToIntUnSigned(b) { + return b & 0xFF; +} + +/** + * int 转 byte 4 + * @param n + * @return + */ +function intToBytes(n) { + let b = []; + b[3] = (n & 0xff); + b[2] = (n >> 8 & 0xff); + b[1] = (n >> 16 & 0xff); + b[0] = (n >> 24 & 0xff); + return b; +} + +/** + * byte 4 转 byte 1 + * @param bytes + * @return + */ +function byte4ToByte1(bytes) { + let byte1 = []; + byte1[0] = bytes[3]; + return byte1; +} + +/** + * + * @param bytes + * @return + */ +function bytesReverse(bytes) { + let b = bytes[0]; + b = ~b; + return b; +} + + + +// ======================【通用方法】=====================================// + +/** + * 按照指定的存储方式来依次读取byte数据 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return + */ +function readBytes(mode, src, offset, length) { + let value = 0; + //从低位开始读 + if (LittleEndian === mode) { + for (let i = 0; i < length; i++) { + value |= (src[offset + i] & 0xFF) << (8 * i); + } + } else { + for (let i = 0; i < length; i++) { + value |= (src[offset + length - i - 1] & 0xFF) << (8 * i); + } + } + return value; +} + +/** + * 填充数值到byte数组中 + * + * @param mode 存储方式 + * @param value 数值 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 数值的长度 + */ +function fillValueToBytes(mode, value, src, offset, length) { + if (LittleEndian === mode) { + for (let i = 0; i < length; i++) { + src[offset + i] = ((value >> (i * 8)) & 0xFF); + } + } else { + for (let i = 0; i < length; i++) { + src[offset + length - i - 1] = ((value >> (i * 8)) & 0xFF); + } + } +} + +/** + * 将值转化为byte数组 + * + * @param mode 存储方式 + * @param value 数值 + * @param length 数值的长度 + */ +function valueToBytes(mode, value, length) { + let bytes = []; + if (LittleEndian === mode) { + for (let i = 0; i < length; i++) { + bytes[i] = ((value >> (i * 8)) & 0xFF); + } + } else { + for (let i = 0; i < length; i++) { + bytes[length - i - 1] = ((value >> (i * 8)) & 0xFF); + } + } + return bytes; +} + +// ======================【byte数组<-->(无符号)short】=====================================// + +/** + * byte数组中取short数值 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short 数值 + */ +function bytesToShort(mode, src, offset, length) { + if (length < 1 || length > SHORT_MAX_LENGTH) { //纠正错误的长度 + length = SHORT_MAX_LENGTH; + } + return readBytes(mode, src, offset, length); +} + +/** + * byte数组中取short数值 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @return short 数值 + */ +// function bytesToShort(mode, src, offset) { +// return readBytes(mode, src, offset, SHORT_MAX_LENGTH); +// } + +/** + * 将short填充至byte数组中 + * + * @param mode 存储方式 + * @param value 数值 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short数值 + */ +function fillShortToBytes(mode, value, src, offset, length) { + if (length < 1 || length > SHORT_MAX_LENGTH) { //纠正错误的长度 + length = SHORT_MAX_LENGTH; + } + fillValueToBytes(mode, value, src, offset, length); + return offset + length; +} + +/** + * 将short填充至byte数组中 + * + * @param mode 存储方式 + * @param value 数值 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @return short数值 + */ +// function fillShortToBytes(mode, value, src, offset) { +// fillValueToBytes(mode, value, src, offset, SHORT_MAX_LENGTH); +// return offset + SHORT_MAX_LENGTH; +// } + +// ======================【byte数组<-->(无符号)int】=====================================// + +/** + * byte数组中取int数值 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short数值 + */ +function bytesToInt(mode, src, offset, length) { + if (length < 1 || length > INT_MAX_LENGTH) { //纠正错误的长度 + length = INT_MAX_LENGTH; + } + return readBytes(mode, src, offset, length); +} + +/** + * 将Int填充至byte数组中 + * + * @param mode 存储方式 + * @param value 数值 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short数值 + */ +function fillIntToBytes(mode, value, src, offset, length) { + if (length < 1 || length > INT_MAX_LENGTH) { //纠正错误的长度 + length = INT_MAX_LENGTH; + } + fillValueToBytes(mode, value, src, offset, length); + return offset + length; +} + + +// ======================【byte数组<-->(无符号)long】=====================================// + +/** + * byte数组中取long数值 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short数值 + */ +function bytesToLong(mode, src, offset, length) { + if (length < 1 || length > LONG_MAX_LENGTH) { //纠正错误的长度 + length = LONG_MAX_LENGTH; + } + + + let value = Long.fromNumber(0); + let bt = [] + for (let i = 0; i < length; i++) { + bt[i] = src[offset + i] + } + //从低位开始读 + if (LittleEndian === mode) { + value = Long.fromBytesLE(bt).toNumber(); + } else { + value = Long.fromBytesBE(bt).toNumber(); + } + return value; +} + + +/** + * 将long填充至byte数组中 + * + * @param mode 存储方式 + * @param value 数值 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return short数值 + */ +function fillLongToBytes(mode, value, src, offset, length) { + if (length < 1 || length > LONG_MAX_LENGTH) { //纠正错误的长度 + length = LONG_MAX_LENGTH; + } + let bt = [] + if (LittleEndian === mode) { + bt = Long.fromValue(value).toBytesLE() + + } else { + bt = Long.fromValue(value).toBytesBE() + } + for (let i = 0; i < length; i++) { + src[offset + i] = bt[i] + } + return offset + length; +} + + + +// ======================【byte数组<--> String】=====================================// + +/** + * byte数组中取String数值 + * + * @param mode 存储方式 + * @param src byte数组 + * @param offset 从数组的第offset位开始 + * @param length 长度 + * @return String + */ +function bytesToString(src, offset, length) { + let arr = [] + for (let i = 0; i < length; i++) { + let value = src[offset + i]; + if (value !== 0) { + arr[i] = value + } + } + let str = '', + _arr = arr; + for (let i = 0; i < _arr.length; i++) { + let one = _arr[i].toString(2), + v = one.match(/^1+?(?=0)/); + if (v && one.length === 8) { + let bytesLength = v[0].length; + let store = _arr[i].toString(2).slice(7 - bytesLength); + for (let st = 1; st < bytesLength; st++) { + store += _arr[st + i].toString(2).slice(2); + } + str += String.fromCharCode(parseInt(store, 2)); + i += bytesLength - 1; + } else { + str += String.fromCharCode(_arr[i]); + } + } + return str.trim(); +} + +function fillStringToBytes(value, src, offset, length) { + let bytes = []; + let c; + for (let i = 0; i < value.length; i++) { + c = value.charCodeAt(i); + if (c >= 0x010000 && c <= 0x10FFFF) { + bytes.push(((c >> 18) & 0x07) | 0xF0); + bytes.push(((c >> 12) & 0x3F) | 0x80); + bytes.push(((c >> 6) & 0x3F) | 0x80); + bytes.push((c & 0x3F) | 0x80); + } else if (c >= 0x000800 && c <= 0x00FFFF) { + bytes.push(((c >> 12) & 0x0F) | 0xE0); + bytes.push(((c >> 6) & 0x3F) | 0x80); + bytes.push((c & 0x3F) | 0x80); + } else if (c >= 0x000080 && c <= 0x0007FF) { + bytes.push(((c >> 6) & 0x1F) | 0xC0); + bytes.push((c & 0x3F) | 0x80); + } else { + bytes.push(c & 0xFF); + } + } + for (let i = 0; i < length; i++) { + src[offset + i] = bytes[i] + } + return bytes; +} + +// ======================【大小端转化】=====================================// + +/** + * 大端值转小端 + * + * @param value + * @param length + * @return + */ +function bigEndianToLittleEndian(value, length) { + let src = valueToBytes(BigEndian, value, length); + return readBytes(LittleEndian, src, 0, length); +} + +/** + * 小端值转大端 + * + * @param value + * @param length + * @return + */ +function littleEndianToBigEndian(value, length) { + let src = valueToBytes(LittleEndian, value, length); + return readBytes(BigEndian, src, 0, length); +} + + +/** + * byte 转 hex + * @param b + * @return + */ +function byteToHex(b) { + let hex = Integer.toHexString(b & 0xFF); + if (hex.length() < 2) { + hex = "0" + hex; + } + return hex; +} + +function byteToBit(a) { + let temp = new byte[8]; + for (let i = 7; i >= 0; i--) { + temp[i] = ((a >> i) & 1); + } + return temp; +} + + + +function bitToByte(a) { + let temp = 0; + for (let i = 0; i < a.length; i++) { + temp = (temp | a[i] << i); + } + return temp; +} + + + +function intBitsToFloat(i) { + int32[0] = i; + return float32[0]; +} + +function floatToIntBits(f) { + float32[0] = f; + return int32[0]; +} + + + + + +/////////////////////////////////////////////测试///////////////////////////////////////////////////////// +//测试 61850 静态图谱文件 小端模式 +let hexStr = ""; + + + +// let bytes = hexStringToBytes(hexStr); + +// normVersion = intBitsToFloat(bytesToInt(LittleEndian, bytes, 0, 4)) +// fileVersion = intBitsToFloat(bytesToInt(LittleEndian, bytes, 4, 4)) +// atlasType = bytesToShort(LittleEndian, bytes, 8, 2) +// atlasTime = bytesToLong(LittleEndian, bytes, 10, 8) +// testFileFlag = bytes[18] +// chName = bytesToString(bytes, 19, 32) +// dischargeType = bytes[51] +// alarmLevel = bytes[52] +// dischargeFlag = bytes[53] +// dischargeTypeBability = [] +// for (let i = 0, offset = 54; i < 7; i++, offset += 4) { +// dischargeTypeBability[i] = intBitsToFloat(bytesToInt(LittleEndian, bytes, offset, 4)) +// } +// phase = bytesToInt(LittleEndian, bytes, 82, 4) +// amplitude = bytesToInt(LittleEndian, bytes, 86, 4) +// periodicity = bytesToInt(LittleEndian, bytes, 90, 4) +// correlation50Hz = bytesToInt(LittleEndian, bytes, 94, 4) +// correlation100Hz = bytesToInt(LittleEndian, bytes, 98, 4) +// atlasFlag = bytes[102] +// dBmUnit = bytes[103] +// dBmMin = intBitsToFloat(bytesToInt(LittleEndian, bytes, 104, 4)) +// dBmMax = intBitsToFloat(bytesToInt(LittleEndian, bytes, 108, 4)) +// decollator = bytesToString(bytes, 112, 4) +// dBmData = [] +// for (let i = 0, offset = 116; i < 6400; i++, offset += 4) { +// dBmData[i] = intBitsToFloat(bytesToInt(LittleEndian, bytes, offset, 4)) +// } +// console.log(normVersion, fileVersion, atlasType, atlasTime, testFileFlag, chName, dischargeType, alarmLevel, dischargeFlag, dischargeTypeBability, phase +// , amplitude, periodicity, correlation50Hz, correlation100Hz, atlasFlag, dBmUnit, dBmMin, dBmMax, decollator, dBmData) + +// //转字节 +// let data = [] +// fillIntToBytes(LittleEndian , floatToIntBits(normVersion), data , 0 , 4) +// fillIntToBytes(LittleEndian , floatToIntBits(fileVersion), data , 4 , 4) +// fillShortToBytes(LittleEndian , atlasType , data, 8 , 2) +// fillLongToBytes(LittleEndian , atlasTime , data , 10 , 8) +// data[18] = testFileFlag +// fillStringToBytes(chName , data , 19,32) +// data[51] = dischargeType +// data[52] = alarmLevel +// data[53] = dischargeFlag +// for(let i = 0 , offset = 54 ; i< 7 ; i++ ,offset+=4 ){ +// fillIntToBytes(LittleEndian , floatToIntBits(dischargeTypeBability[i]), data , offset , 4) +// } +// fillIntToBytes(LittleEndian , phase , data , 82 , 4) +// fillIntToBytes(LittleEndian , amplitude , data , 86 , 4) +// fillIntToBytes(LittleEndian , periodicity , data , 90 , 4) +// fillIntToBytes(LittleEndian , correlation50Hz , data , 94 , 4) +// fillIntToBytes(LittleEndian , correlation100Hz , data , 98 , 4) +// data[102] = atlasFlag +// data[103] = dBmUnit +// fillIntToBytes(LittleEndian , floatToIntBits(dBmMin), data , 104 , 4) +// fillIntToBytes(LittleEndian , floatToIntBits(dBmMax), data , 108 , 4) +// fillStringToBytes(decollator , data , 112,4) +// for(let i = 0 , offset = 116 ; i< 6400 ; i++ ,offset+=4 ){ +// fillIntToBytes(LittleEndian , floatToIntBits(dBmData[i]), data , offset , 4) +// } +// console.log(bytesToHexString(data) === hexStr) + +///测试大端模式 + +let bigHexStr = "" + + + +// bytes = hexStringToBytes(bigHexStr); + +// normVersion = intBitsToFloat(bytesToInt(BigEndian,bytes,0,4)) +// fileVersion = intBitsToFloat(bytesToInt(BigEndian,bytes,4,4)) +// atlasType = bytesToShort(BigEndian,bytes,8,2) +// atlasTime = bytesToLong(BigEndian , bytes , 10 , 8) +// testFileFlag = bytes[18] +// chName = bytesToString(bytes,19,32) +// dischargeType = bytes[51] +// alarmLevel = bytes[52] +// dischargeFlag = bytes[53] +// dischargeTypeBability = [] +// for(let i = 0 , offset = 54 ; i< 7 ; i++ ,offset+=4 ){ +// dischargeTypeBability[i] = intBitsToFloat(bytesToInt(BigEndian,bytes,offset,4)) +// } +// phase = bytesToInt(BigEndian , bytes , 82 , 4) +// amplitude = bytesToInt(BigEndian , bytes , 86 , 4) +// periodicity = bytesToInt(BigEndian , bytes , 90 , 4) +// correlation50Hz = bytesToInt(BigEndian , bytes , 94 , 4) +// correlation100Hz = bytesToInt(BigEndian , bytes , 98 , 4) +// atlasFlag = bytes[102] +// dBmUnit = bytes[103] +// dBmMin = intBitsToFloat(bytesToInt(BigEndian,bytes,104,4)) +// dBmMax = intBitsToFloat(bytesToInt(BigEndian,bytes,108,4)) +// decollator = bytesToString(bytes, 112 ,4) +// dBmData = [] +// for(let i = 0 , offset = 116 ; i< 6400 ; i++ ,offset+=4 ){ +// dBmData[i] = intBitsToFloat(bytesToInt(BigEndian,bytes,offset,4)) +// } +// console.log(normVersion,fileVersion,atlasType,atlasTime,testFileFlag,chName,dischargeType,alarmLevel,dischargeFlag,dischargeTypeBability,phase +// ,amplitude,periodicity,correlation50Hz,correlation100Hz,atlasFlag,dBmUnit,dBmMin,dBmMax,decollator,dBmData) + +// //转字节 +// fillIntToBytes(BigEndian , floatToIntBits(normVersion), data , 0 , 4) +// fillIntToBytes(BigEndian , floatToIntBits(fileVersion), data , 4 , 4) +// fillShortToBytes(BigEndian , atlasType , data, 8 , 2) +// fillLongToBytes(BigEndian , atlasTime , data , 10 , 8) +// data[18] = testFileFlag +// fillStringToBytes(chName , data , 19,32) +// data[51] = dischargeType +// data[52] = alarmLevel +// data[53] = dischargeFlag +// for(let i = 0 , offset = 54 ; i< 7 ; i++ ,offset+=4 ){ +// fillIntToBytes(BigEndian , floatToIntBits(dischargeTypeBability[i]), data , offset , 4) +// } +// fillIntToBytes(BigEndian , phase , data , 82 , 4) +// fillIntToBytes(BigEndian , amplitude , data , 86 , 4) +// fillIntToBytes(BigEndian , periodicity , data , 90 , 4) +// fillIntToBytes(BigEndian , correlation50Hz , data , 94 , 4) +// fillIntToBytes(BigEndian , correlation100Hz , data , 98 , 4) +// data[102] = atlasFlag +// data[103] = dBmUnit +// fillIntToBytes(BigEndian , floatToIntBits(dBmMin), data , 104 , 4) +// fillIntToBytes(BigEndian , floatToIntBits(dBmMax), data , 108 , 4) +// fillStringToBytes(decollator , data , 112,4) +// for(let i = 0 , offset = 116 ; i< 6400 ; i++ ,offset+=4 ){ +// fillIntToBytes(BigEndian , floatToIntBits(dBmData[i]), data , offset , 4) +// } + +// console.log(bytesToHexString(data) === bigHexStr) + + + +export { + LittleEndian, + BigEndian, + hexStringToBytes, + intBitsToFloat, + bytesToShort, + bytesToLong, + bytesToInt, + bytesToString, + fillIntToBytes, + fillShortToBytes, + fillLongToBytes, + fillStringToBytes, + bytesToHexString, +} \ No newline at end of file diff --git a/public/js/draw.js b/public/js/draw.js new file mode 100644 index 0000000..884b39c --- /dev/null +++ b/public/js/draw.js @@ -0,0 +1,283 @@ +import { scene, axis, meshList, pointsList, axis2D, scene2D } from './index.js'; +import { createAxisInfo } from './axisInfo/constant.js'; +const lut = new THREE.Lut(); +lut.addColorMap('axis', [[0.0, 0x00ee00], [0.25, 0xeeee00], [0.75, 0xee0000], [1.0, 0x4e0211]],); +lut.setColorMap('axis',1024) +let pointColors = [ + { + material: new THREE.PointsMaterial({ color: 0xD94E5D, size: 2, sizeAttenuation: false }), + colors: 0xD94E5D, + num: 15, + }, + { + material: new THREE.PointsMaterial({ color: 0xE28B4A, size: 2, sizeAttenuation: false }), + colors: 0xE28B4A, + num: 14, + }, + { + material: new THREE.PointsMaterial({ color: 0xEAC736, size: 2, sizeAttenuation: false }), + colors: 0xEAC736, + num: 10, + }, + { + material: new THREE.PointsMaterial({ color: 0x9DB578, size: 2, sizeAttenuation: false }), + colors: 0x9DB578, + num: 7, + }, + { + material: new THREE.PointsMaterial({ color: 0x50A3BA, size: 2, sizeAttenuation: false }), + colors: 0x50A3BA, + num: 5, + }, +]; +const initPoints = new THREE.Points( + new THREE.BufferGeometry().setAttribute('position', new THREE.Float32BufferAttribute([0.5, 0, 0], 3)), + new THREE.PointsMaterial({ color: 0x0082df, size: 2, sizeAttenuation: false }) +); +//柱子材质数据 +let meterials = [ + { + material: new THREE.MeshBasicMaterial({ + color: '#4e0211', + }), + max: 0.75 + }, + { + material: new THREE.MeshBasicMaterial({ + color: '#ee0000', + }), + max: 0.5 + }, + { + material: new THREE.MeshBasicMaterial({ + color: '#eeee00', + }), + max: 0.25 + }, + { + material: new THREE.MeshBasicMaterial({ + color: '#00ee00', + }), + max: 0, + }, +]; +const initGeometry = new THREE.BoxGeometry(0.6, 1, 2.5); +//绘制图表柱子 +const drawChartsContent = (px, pz, py = 50, max, pxNum) => { + let y = py < 0 ? -py : py; + const material = new THREE.MeshBasicMaterial({color:lut.getColor(Number(y)/max)});// + //const material = meterials.find(item => (y / max) >= item.max).material; + //柱子宽高长 + const geometry = initGeometry.clone(); + geometry.scale(1, y, 1); + geometry.translate(49.4 - pxNum, Math.fround(py / 2), 360 - pz); + return { geometry, material } +} +//正弦曲线绘制 +const drawSinLine = (obj) => { + let { line, color } = obj, list = []; + line.forEach(item => { + list.push(new THREE.Vector3(...item)); + }) + let geometry = new THREE.BufferGeometry(); //声明一个几何体对象Geometry + // 三维样条曲线 Catmull-Rom算法 + let curve = new THREE.CatmullRomCurve3(list); + //getPoints是基类Curve的方法,返回一个vector3对象作为元素组成的数组 + let points = curve.getPoints(200); //分段数100,返回101个顶点 + // setFromPoints方法从points中提取数据改变几何体的顶点属性vertices + geometry.setFromPoints(points); + //材质对象 + let material = new THREE.LineBasicMaterial({ + color, + linewidth: 1, + }); + //线条模型对象 + let modelLine = new THREE.Line(geometry, material); + return modelLine + //scene.add(line); //线条对象添加到场景中 +} +//绘制网格线条 +const drawLine = (obj) => { + let { line, color, position, margin, num } = obj + let geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象 + //3个为一组,表示一个顶点的xyz坐标 + geometry.setAttribute('position', new THREE.Float32BufferAttribute(line, 3)) + // 线条渲染模式 + let material = new THREE.LineBasicMaterial({ + color, //线条颜色 + });//材质对象 + let LineList = []; + let modelLine = new THREE.Line(geometry, material);//线条模型对象 + LineList.push(modelLine) + for (let i = 1; i < num; i++) { + let lineChildren = modelLine.clone()['translate' + position](i * margin) + LineList.push(lineChildren); + } + return LineList +} +// 添加文字geometry +const add3DText = (text, callback) => { + let { content, url, size, set, rotation, xyz } = text; + let loader = new THREE.FontLoader(); + //加载相应的字体,下面字体名和样式组成gentilis_bold.typeface.json 完整文件名 + let fontJsonUrl = url ? url : 'common/fonts/Century Gothic_Regular.json'; //你的字体json路径,文件名规格随意 + loader.load(fontJsonUrl, function (font) { + const color = 0xffffff; + const matLite = new THREE.MeshBasicMaterial({ + color: color, // 字体大小 + }); + const geometry = new THREE.TextGeometry(content, { + font: font, + size: size ? size : 5, + height: 1, + }); + geometry.translate(...xyz); + if (rotation) { + for (let i of rotation) { + geometry['rotate' + i[0]](Math.PI / i[1]) + } + + } + let mesh = new THREE.Mesh(geometry, matLite); + // mesh.scale.set(2, 2, 2) + if (set) { + mesh.scale.set(...set); + } + mesh.castShadow = true; + mesh.receiveShadow = true; + mesh.name = 'text'; + callback(mesh) + }); +} +// 添加精灵图文字 +const draw2DText = (obj) => { + let scale = 1;//window.devicePixelRatio; + let { content, w, h, color, font, xyz, size, cw, ch, rotate } = obj; + cw = cw ? cw : 6; + ch = ch ? ch : 8; + let canvas = document.createElement('canvas') + canvas.style.width = w * scale; + canvas.style.height = h * scale; + if (rotate) { + canvas.width = w * cw * scale * 3; + canvas.height = h * ch * scale * 2; + } else { + canvas.width = w * cw * scale * 2; + canvas.height = h * ch * scale * 3; + } + + let ctx = canvas.getContext('2d'); + ctx.fillStyle = color; + ctx.strokeStyle = '#000'; + ctx.font = font; + ctx.direction = "ltr"; // 文本方向从左向右 + ctx.textAlign = "left"; // 左对齐 + ctx.textBaseline = 'middle'//基线对齐选项,决定文字垂直方向的对齐方式 + if (rotate) { + ctx.translate(canvas.width / 2, canvas.height); + ctx.rotate(-Math.PI / 2); + ctx.fillText(content, h, 0); + ctx.strokeText(content, h, 0); + } else { + for (let i = 0; i < 1; i++) { + ctx.fillText(content[i], 0, canvas.height / 2); + ctx.strokeText(content[i], 0, canvas.height / 2); + } + } + let texture = new THREE.CanvasTexture(canvas) + // texture.needsUpdate = true//如果编码类型在纹理已被一个材质使用之后发生了改变, 你需要来设置Material.needsUpdate为true来使得材质重新编译 + let geometry = new THREE.BufferGeometry(); //创建一个Buffer类型几何体对象 + //3个为一组,表示一个顶点的xyz坐标 + geometry.setAttribute('position', new THREE.Float32BufferAttribute(xyz, 3)); + const material = new THREE.PointsMaterial({ + map: texture, + transparent: true,//材质透明 + size: size ? size : 16.0, //点对象像素尺寸 + }); + + const pointsText = new THREE.Points(geometry, material); + pointsText.name = 'pointsText'; + return pointsText; +} + +const drawAxis = (size, minNum, is2DInit) => { + scene.remove(...scene.children.filter(item => item.name === 'axisNumberText')) + if (axis.children.length) { + axis.remove(...axis.children) + } + let axisText = new THREE.Group(); + axisText.name = 'axisNumberText'; + scene.add(axisText) + const data = createAxisInfo(size, minNum); + axis.scale.set(...data[size]['set']) + meshList.scale.set(...data[size]['set']) + pointsList.scale.set(...data[size]['set']) + data[size]['prps'].forEach(async item => { + switch (item.type) { + case 'plan': + axis.add(drawPlan(item)); + break; + case 'line': + axis.add(...drawLine(item)); + break; + case 'curveLine': + axis.add(drawSinLine(item)); + break; + case 'text': + axisText.add(draw2DText(item)); + } + }); + + if (is2DInit) { + return; + } + drawAxis2D(size, minNum); +} +const drawAxis2D = (size, minNum) => { + if (axis2D.children.length) { + axis2D.remove(...axis2D.children) + } + let axisList = scene2D?.children.filter(item => item.name === 'axisNumberText'); + axisList && scene2D.remove(...axisList) + let axisText = new THREE.Group(); + const data = createAxisInfo(size, minNum); + axisText.name = 'axisNumberText'; + scene2D.add(axisText) + axis2D.scale.set(...data[size]['set']) + let list = scene2D.getObjectByName('chartsPoint') + if (list) { + list.scale.set(...data[size]['set']) + } + data[size]['prpd'].forEach(async item => { + switch (item.type) { + case 'line': + axis2D.add(...drawLine(item)); + break; + case 'curveLine': + axis2D.add(drawSinLine(item)); + break; + case 'text': + axisText.add(draw2DText(item)); + } + }); +} +//绘制平面 +const drawPlan = (obj) => { + const { line, color } = obj; + let geometry = new THREE.PlaneGeometry(50, 360); //创建一个Buffer类型几何体对象 + geometry.rotateX(Math.PI / 2).translate(25, 0, 180); + //3个为一组,表示一个顶点的xyz坐标 + //geometry.setAttribute('position', new THREE.Float32BufferAttribute(line, 3)) + // 三角面(网格)渲染模式 + let material = new THREE.MeshBasicMaterial({ + color, //三角面颜色 + transparent: true,//透明 + opacity: 0.2, + side: THREE.DoubleSide, //两面可见 + }); //材质对象 + let mesh = new THREE.Mesh(geometry, material); //网格模型对象Mesh + mesh.name = 'plan'; + //scene.add(mesh); + return mesh +} +export { drawChartsContent, drawSinLine, drawLine, add3DText, draw2DText, drawAxis, drawAxis2D, initPoints, pointColors, drawPlan } \ No newline at end of file diff --git a/public/js/index.js b/public/js/index.js new file mode 100644 index 0000000..2f052cc --- /dev/null +++ b/public/js/index.js @@ -0,0 +1,445 @@ +import { + LittleEndian, + BigEndian, + hexStringToBytes, + intBitsToFloat, + bytesToShort, + bytesToLong, + bytesToInt, + bytesToString, + fillIntToBytes, + fillShortToBytes, + fillLongToBytes, + fillStringToBytes, + bytesToHexString, +} from './byteConvert.js' +import { drawChartsContent, drawAxis, drawAxis2D, draw2DText, initPoints, pointColors } from './draw.js'; +let renderer, scene, camera, controls, renderer2D, scene2D, camera2D, controls2D; +let axis = new THREE.Group(); +let axis2D = new THREE.Group(); +let initAxis = 80;//正值最大值 +let box3D = document.getElementById("box3D2"); +let box2D = document.getElementById("box2D2"); +const lut = new THREE.Lut(); +lut.addColorMap('axis', [[0.0, 0x00ee00], [0.25, 0xeeee00], [0.75, 0xee0000], [1.0, 0x4e0211]],); +lut.setColorMap('axis', 500) +let meshList = new THREE.Group();//图例柱子 +const dummy = new THREE.Object3D(); +const dummyPoint = new THREE.Object3D(); +meshList.name = 'chartsMesh'; +let pointsList = new THREE.Group();//图例散点 +pointsList.name = 'chartsPoint'; +let axisTextGroup = new THREE.Group(); +axisTextGroup.name = 'axisText'; +let axisTextGroup2D = new THREE.Group(); +axisTextGroup2D.name = 'axisText'; +// 周期,相位 柱子数 +let period = 50, phase = 128, count = period * phase; +const geometry = new THREE.BoxGeometry(0.6, 1, 2.5); +geometry.computeVertexNormals() +const initInstancedMesh = new THREE.InstancedMesh(geometry, new THREE.MeshBasicMaterial(), count); +initInstancedMesh.name = 'initInstancedMesh'; +/* prpd初始Instanced点 */ +let initInstancedPoints,//prpd实例 + pointsGeometry = new THREE.BoxGeometry(0, 0.8, (360 / initAxis) * 0.8,),// prpd位置属性数组 + pointCount; +pointsGeometry.computeVertexNormals() +document.getElementById('folderInput').addEventListener('change', processFolder); +const phaseSelect = document.getElementById('phase'); +const openModal = document.getElementById('openModal'); +openModal.addEventListener('click', toggleFileModal); +init(); +init2D(); +render(); +render2D(); +const dataList = { list2d: [], list3d: [] }; +let allList = []; +document.getElementById('fileModal').style.display = 'none'; +function toggleFileModal() { + var fileModal = document.getElementById('fileModal'); + var fileList = document.getElementById('fileList'); + fileList.innerHTML = ''; // 清空文件列表 + + var folderInput = document.getElementById('folderInput'); + var files = folderInput.files; + + if (files.length > 0) { + for (var i = 0; i < files.length; i++) { + var li = document.createElement('li'); + li.textContent = files[i].name; + fileList.appendChild(li); + } + } + fileModal.style.display = fileModal.style.display === 'none' ? 'block' : 'none'; + +} +async function processFolder(event) { + //const folderInput = event.target.files; + const output = document.getElementById('output'); + const files = event.target.files; + if (files.length === 0) { + alert('请选择文件夹'); + return; + } + await processFolderRecursive(files); +} + +async function processFolderRecursive(folder) { + const promises = []; allList = []; + for (let id = 0; id < folder.length; id++) { + const fileType = folder[id].name.replace(/.+\./, ""); + if (fileType == 'dat') { + const pathArr = folder[id].webkitRelativePath.split('/'); + promises.push(readAsText(folder[id], pathArr)) + } + } + await Promise.all(promises); + let valArr = [], valNumArr = [], list2d = []; + let dBmData = allList.map(i => i.toString()); + for (let i of dBmData) { + let index = valArr.indexOf(i); + if (index == -1) { + valArr.push(i); + valNumArr.push(1); + list2d.push([...i.split(','), 1]) + } else { + valNumArr[index]++; + list2d[index][2]++; + } + } + dataList.list3d = _.chunk(allList, phaseSelect.value) + dataList.list2d = list2d; + loopDraw(dataList.list3d, true) + drawPRPD(dataList.list2d) + console.log(dataList); +} +let timers = []; // 声明一个全局变量来保存定时器 + +function clearTimers() { + timers.forEach(timerId => { + clearTimeout(timerId); + }); + timers = []; +} + +function loopDraw(data, isNew) { + if (timers.length && isNew) { + clearTimers(); + } + + for (let i = 0; i < data.length; i++) { + if (timers[i]) { + clearTimeout(timers[i]); + } + + timers[i] = setTimeout(() => { + drawPRPS(data[i]); + + if (i === data.length - 1) { + // 最后一个定时器触发时,清除所有定时器并进行下一轮循环 + clearTimers(); + loopDraw(data); + } + }, 20 + 20 * i); + } +} + +//FileReader异步解析文件 +function readAsText(file, pathArr) { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + reader.onload = event => { + // 读取文件完成后,将文件内容和额外参数一起传递给 resolve 函数 + loadImgUrl(event.target.result, pathArr); + resolve({ res: event.target.result, pathArr }); + }; + reader.onerror = event => { + reject(new Error("Error reading the file")); + }; + reader.readAsArrayBuffer(file); + }); +} + +//加载图片数据 +function loadImgUrl(res, pathArr) { + var phaseNum = phaseSelect.value; + let dBmData = []; + let bytes = new Int8Array(res) + for (let i = 0, offset = 0; i < bytes.length / 4; i++, offset += 4) { + let j = parseInt(i / phaseNum) + 1; //周期 + let phase = parseInt((i - (j - 1) * phaseNum + 1) * (360 / phaseNum));// 相位 + let value = parseInt(intBitsToFloat(bytesToInt(LittleEndian, bytes, offset, 4))); // 幅值 + value = value + 80; + dBmData[i] = [phase, value]//.toString(); + } + allList.push(...dBmData) +} +let counter = 1; +initCharts() +function initCharts(type) { + if (type == 'open') { + meshList.visible = true; + return; + } else if (type == 'close') { + meshList.visible = false; + let k = 1, s = 1; + for (let j = 0; j < period; j++) { + for (let i = 0; i < 128; i++) { + initInstancedMesh.getMatrixAt(k, dummy.matrix); + dummy.position.setFromMatrixPosition(dummy.matrix); + dummy.scale.setFromMatrixScale(dummy.matrix); + dummy.position.y = 99999; + dummy.scale.y = Math.abs(1); + const color = lut.getColor(Math.abs(0) / initAxis); + initInstancedMesh.setColorAt(k, color); + dummy.updateMatrix(); + initInstancedMesh.setMatrixAt(k, dummy.matrix); + k++; + } + } + initInstancedMesh.instanceMatrix.needsUpdate = true; + initInstancedMesh.instanceColor.needsUpdate = true; + for (let i = 0; i < pointCount; i++) { + dummyPoint.position.set(1, 99999, 1); + dummyPoint.updateMatrix(); + initInstancedPoints.setMatrixAt(i, dummyPoint.matrix); + } + initInstancedPoints.instanceMatrix.needsUpdate = true; + return; + } + let k = 0, initList = []; + for (let i = 0; i < period; i++) { + initList.push(generateArray()); + } + for (let j = 0; j < initList.length; j++) { + for (let i = 0; i < initList[j].length; i++) { + const [a, b, c] = initList[j][i]; + dummy.position.set(j, 9999, b); + dummy.scale.y = 0; + dummy.updateMatrix(); + initInstancedMesh.setMatrixAt(k, dummy.matrix); + + const color = lut.getColor(Math.abs(c) / initAxis); + initInstancedMesh.setColorAt(k, color); + k++; + } + } + initInstancedMesh.instanceMatrix.needsUpdate = true; + initInstancedMesh.instanceColor.needsUpdate = true; + const object = meshList.getObjectByName('initInstancedMesh'); + if (!object) { + meshList.add(initInstancedMesh); + } + let maxYPointsMap = [800, 10000, 10000, 7000]; + let maxYPoints = maxYPointsMap[0]; + pointCount = phase * maxYPoints; + initInstancedPoints = new THREE.InstancedMesh(pointsGeometry, new THREE.MeshBasicMaterial(), pointCount); + + let j = 0; + for (let i = 0; i < pointCount; i++) { + dummyPoint.position.set(i, 9999, i) + dummyPoint.updateMatrix() + initInstancedPoints.setMatrixAt(j, dummyPoint.matrix) + const color = new THREE.Color(0x0082df) + initInstancedPoints.setColorAt(j, color) + j++ + } + initInstancedPoints.instanceMatrix.needsUpdate = true; + initInstancedPoints.instanceColor.needsUpdate = true; + initInstancedPoints.name = 'initInstancedPoints'; + // const object1 = meshList.getObjectByName('initInstancedMesh'); + // if (!object1) { + pointsList.add(initInstancedPoints); + // } +} +//prps初始化 +function init() { + let box = $('#box3D'); + let width = box.width(); + let height = width; + renderer = new THREE.WebGLRenderer({ preserveDrawingBuffer: true, }); + renderer.setSize(width, height);//设置渲染区域尺寸 + renderer.setClearColor(0x000d13, 1); //设置背景颜色 + //renderer.setClearColor(0xb9d3ff, 1); //设置背景颜色 + renderer.setPixelRatio(window.devicePixelRatio)//设备像素比,优化渲染效果 + box?.append(renderer.domElement); //body元素中插入canvas对象 + scene = new THREE.Scene(); + scene.add(meshList, axis, pointsList, axisTextGroup); + + drawAxis(initAxis, 0, true) + + var k = width / height; //窗口宽高比 + var s = 360; //三维场景显示范围控制系数,系数越大,显示的范围越大 + //创建相机对象 + camera = new THREE.OrthographicCamera(-s * k + 20, s * k + 20, s + 100, -s + 100, 1, 1600); + camera.position.set(500, 200, 500); //设置相机位置 + camera.lookAt(scene.position); //设置相机方向(指向的场景对象) + controls = new THREE.OrbitControls(camera, renderer.domElement); + // 设置左右方向的最大、最小角度限制为 90 度和 0 度 + controls.minAzimuthAngle = 0; + controls.maxAzimuthAngle = Math.PI / 2; + // 设置上下方向的最大、最小角度限制为 90 度和 0 度 + controls.minPolarAngle = 0; + controls.maxPolarAngle = Math.PI / 2; + //设置放大缩小上下限 + controls.minZoom = 0.5; + controls.maxZoom = 2; + //controls.enablePan = false; + //设置控制器中心点 + controls.target.set(25, 0, 180); + renderer.render(scene, camera); + + //controls.addEventListener('change', render); +} +//prpd初始化 +function init2D() { + let box = $('#box2D'); + let width = box.width(); + let height = width; + renderer2D = new THREE.WebGLRenderer({ preserveDrawingBuffer: true, }); + renderer2D.setSize(width, height);//设置渲染区域尺寸 + renderer2D.setClearColor(0x000d13, 1); //设置背景颜色 + renderer2D.setPixelRatio(window.devicePixelRatio)//设备像素比,优化渲染效果 + box?.append(renderer2D.domElement); //body元素中插入canvas对象 + scene2D = new THREE.Scene(); + const List = pointsList.clone() + scene2D.add(axis2D, List, axisTextGroup2D, pointsList) + drawAxis2D(initAxis, 0) + // 辅助坐标系 参数250表示坐标系大小,可以根据场景大小去设置 + // let axisHelper = new THREE.AxesHelper(250); + // scene2D.add(axisHelper); + var k = width / height; //窗口宽高比 + var s = 240; //三维场景显示范围控制系数,系数越大,显示的范围越大 + //创建相机对象 + camera2D = new THREE.OrthographicCamera(-s * k - 200, s * k - 200, s + 160, -s + 160, 1, 1200); + camera2D.position.set(600, 0, 0); //设置相机位置 + camera2D.lookAt(scene2D.position); //设置相机方向(指向的场景对象) + controls2D = new THREE.OrbitControls(camera2D, renderer2D.domElement); + //controls2D.enablePan = false//右键位移禁用 + //controls2D.enableZoom = false//放大缩小禁用 + //设置放大缩小上下限 + controls2D.minZoom = 0.5; + controls2D.maxZoom = 2; + controls2D.enableRotate = false + //renderer2D.render(scene2D, camera2D); + //controls2D.addEventListener('change', render2D); +} +function onWindowResize() { + let box = $('#box3D'); + let width = box.width(); + let height = width; + camera.updateProjectionMatrix(); + renderer.setSize(width, height); + renderer.setPixelRatio(window.devicePixelRatio)//设备像素比,优化渲染效果 + + + camera2D.updateProjectionMatrix(); + renderer2D.setSize(width, height); + renderer2D.setPixelRatio(window.devicePixelRatio)//设备像素比,优化渲染效果 +} +function render() { + // 获取摄像机的视锥体 + const frustum = new THREE.Frustum(); + const cameraViewProjectionMatrix = new THREE.Matrix4(); + camera.updateMatrixWorld(); // 确保摄像机的世界矩阵已更新 + cameraViewProjectionMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse); + frustum.setFromProjectionMatrix(cameraViewProjectionMatrix); + + // 遍历场景中的每个对象,并根据视锥体进行剔除 + scene.traverse((object) => { + if (object.isMesh) { + object.visible = frustum.intersectsObject(object); + } + }); + // 更新帧率显示器 + renderer.render(scene, camera); + requestAnimationFrame(render) +} +function render2D() { + //scene.rotateY(0.001);//每次绕y轴旋转0.01弧度 + requestAnimationFrame(render2D) + renderer2D.render(scene2D, camera2D); +} +function drawPRPD(list) { + const colors = [ + { + color: new THREE.Color(0x50A3BA), + num: 5, + }, + { + color: new THREE.Color(0x9DB578), + num: 7, + }, + { + color: new THREE.Color(0xEAC736), + num: 10, + }, + { + color: new THREE.Color(0xE28B4A), + num: 14, + }, + ]; + list.forEach((item, index) => { + // 更新颜色 + const color = item[2] <= 3 ? new THREE.Color(0x0082df) : (item[2] >= 15 ? new THREE.Color(0xD94E5D) : colors.find(i => item[2] <= i.num).color); + initInstancedPoints.setColorAt(index, color); + // 更新位置 + dummyPoint.position.set(1, item[1], item[0]); + dummyPoint.updateMatrix(); + initInstancedPoints.setMatrixAt(index, dummyPoint.matrix); + }) + for (let i = list.length; i < pointCount; i++) { + dummyPoint.position.set(1, 999999, 0); + dummyPoint.updateMatrix(); + initInstancedPoints.setMatrixAt(i, dummyPoint.matrix); + } + initInstancedPoints.instanceMatrix.needsUpdate = true; + initInstancedPoints.instanceColor.needsUpdate = true; +} +function drawPRPS(list) { + let k = 1; + for (let j = 0; j < period; j++) { + for (let i = 0; i < list.length; i++) { + initInstancedMesh.getMatrixAt(k, dummy.matrix); + dummy.position.setFromMatrixPosition(dummy.matrix); + dummy.scale.setFromMatrixScale(dummy.matrix); + if (dummy.position.x > 0) { + dummy.position.x -= 1; + } else { + let [y, h] = list[i]; + const max = initAxis; + h = h > max ? max : h; + dummy.position.x = 49 + dummy.position.y = h / 2; + dummy.scale.y = Math.abs(h); + const color = lut.getColor(Math.abs(h) / max); + initInstancedMesh.setColorAt(k, color); + } + dummy.updateMatrix(); + initInstancedMesh.setMatrixAt(k, dummy.matrix); + k++; + } + } + initInstancedMesh.instanceMatrix.needsUpdate = true; + initInstancedMesh.instanceColor.needsUpdate = true; +} +function generateArray() { + const newArray = []; + const step = 360 / phase; + for (let i = 1; i <= phase; i++) { + newArray.push([counter, parseInt(i * step), getRandomInt(20, 35)]); + } + counter = (counter % period) + 1; + return newArray; +} +// 生成指定范围内的随机整数 +function getRandomInt(min, max) { + const randomNumber = Math.random() * (max - min) + min; + const roundedNumber = randomNumber.toFixed(1); + return parseFloat(roundedNumber); +} +// 页面放大缩小时 +$(window).resize(function () { + onWindowResize() +}) +export { scene, axis, meshList, pointsList, axis2D, scene2D } diff --git a/public/js/jquery-ui.min.js b/public/js/jquery-ui.min.js new file mode 100644 index 0000000..25398a1 --- /dev/null +++ b/public/js/jquery-ui.min.js @@ -0,0 +1,13 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("
"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("

")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("

").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) +}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("
").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t(""),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; +this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
    ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
    ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
    ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
    ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
    ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
    ",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t(""),this.iconSpace=t(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"").addClass(this._triggerClass).html(o?t("").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t(""),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) +}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?""+i+"":q?"":""+i+"",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?""+n+"":q?"":""+n+"",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"",l=j?"
    "+(Y?h:"")+(this._isInRange(t,r)?"":"")+(Y?"":h)+"
    ":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="
    "}for(T+="
    "+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"
    "+"",P=u?"":"",w=0;7>w;w++)M=(w+c)%7,P+="";for(T+=P+"",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="",W=u?"":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+""}Z++,Z>11&&(Z=0,te++),T+="
    "+this._get(t,"weekHeader")+"=5?" class='ui-datepicker-week-end'":"")+">"+""+p[M]+"
    "+this._get(t,"calculateWeek")(A)+""+(F&&!_?" ":L?""+A.getDate()+"":""+A.getDate()+"")+"
    "+(X?"
    "+(U[0]>0&&C===U[1]-1?"
    ":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="
    ",y="";if(o||!m)y+=""+a[e]+"";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+=""}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+=""+i+"";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="
    "},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("
    ").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} +},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.lefti[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
    ").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
    "),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
    "),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog +},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("
    ").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("
    "),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("").button({label:t("").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("
    "),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("
    ").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("
    ").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("
    ").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("
    ").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("
    ").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("
    "),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("").parent().append("")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return""},_buttonHtml:function(){return""}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("
    ").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("
    ").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("
    ").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("
    ").attr("role","tooltip"),s=t("
    ").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}); \ No newline at end of file diff --git a/public/js/jquery.min.js b/public/js/jquery.min.js new file mode 100644 index 0000000..4d9b3a2 --- /dev/null +++ b/public/js/jquery.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(" + + + + + + + + + + + + +
    + + + + + +
    + +
      +
      +
      +
      +
      +
      +
      + + + + \ No newline at end of file